yaml-flow 8.7.0 → 8.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/browser/adapters/firestore-storage.js +2 -2
  2. package/browser/asset-integrity.json +7 -7
  3. package/browser/live-cards.schema.json +10 -1
  4. package/browser/server-runtime-controlface.js +4 -4
  5. package/examples/board/demo-shell-with-server.html +2 -2
  6. package/examples/board/doc.html +2 -2
  7. package/examples/board/server/board-server.js +1 -1
  8. package/examples/board/test/server-http-test.js +73 -79
  9. package/examples/board-firestore/server/worker.js +1 -1
  10. package/lib/artifacts-store-public.d.cts +1 -1
  11. package/lib/artifacts-store-public.d.ts +1 -1
  12. package/lib/board-live-cards-mcp.cjs +1 -1
  13. package/lib/board-live-cards-mcp.d.cts +2 -1
  14. package/lib/board-live-cards-mcp.d.ts +2 -1
  15. package/lib/board-live-cards-mcp.js +1 -1
  16. package/lib/board-live-cards-node.cjs +8 -8
  17. package/lib/board-live-cards-node.d.cts +9 -8
  18. package/lib/board-live-cards-node.d.ts +9 -8
  19. package/lib/board-live-cards-node.js +8 -8
  20. package/lib/{board-live-cards-public-D-DJek3X.d.ts → board-live-cards-public-JNRKfBZy.d.ts} +1 -1
  21. package/lib/{board-live-cards-public-DQzPe7A9.d.cts → board-live-cards-public-LlVUQPL2.d.cts} +1 -1
  22. package/lib/{board-live-cards-public-async-CgMCYYft.d.cts → board-live-cards-public-async-Di9QB141.d.cts} +2 -2
  23. package/lib/{board-live-cards-public-async-3hUuHxDx.d.ts → board-live-cards-public-async-fwd1QI82.d.ts} +2 -2
  24. package/lib/board-live-cards-public.cjs +1 -1
  25. package/lib/board-live-cards-public.d.cts +1 -1
  26. package/lib/board-live-cards-public.d.ts +1 -1
  27. package/lib/board-live-cards-public.js +1 -1
  28. package/lib/board-live-cards-server-runtime.cjs +1 -1
  29. package/lib/board-live-cards-server-runtime.d.cts +4 -4
  30. package/lib/board-live-cards-server-runtime.d.ts +4 -4
  31. package/lib/board-live-cards-server-runtime.js +1 -1
  32. package/lib/board-livegraph-runtime/index.cjs +1 -1
  33. package/lib/board-livegraph-runtime/index.js +1 -1
  34. package/lib/{board-platform-adapter-async-DOfEq_HC.d.cts → board-platform-adapter-async-BfHmHdx2.d.cts} +1 -1
  35. package/lib/{board-platform-adapter-async-JZPCzZnH.d.ts → board-platform-adapter-async-DYahVzIK.d.ts} +1 -1
  36. package/lib/card-compute/index.cjs +1 -1
  37. package/lib/card-compute/index.js +1 -1
  38. package/lib/card-store-public.d.cts +1 -1
  39. package/lib/card-store-public.d.ts +1 -1
  40. package/lib/card-validation.cjs +1 -1
  41. package/lib/card-validation.js +1 -1
  42. package/lib/chat-store-public.d.cts +1 -1
  43. package/lib/chat-store-public.d.ts +1 -1
  44. package/lib/chunk-3KC6LBOG.js +3 -0
  45. package/lib/chunk-76C7N4YT.js +3 -0
  46. package/lib/chunk-ASR44K7H.cjs +3 -0
  47. package/lib/chunk-EZENHAVZ.cjs +2 -0
  48. package/lib/chunk-FO4KNVU7.cjs +2 -0
  49. package/lib/chunk-HWYMZK3N.cjs +3 -0
  50. package/lib/{chunk-H5HBXPOI.cjs → chunk-J6EGN6S4.cjs} +3 -3
  51. package/lib/chunk-JH37NJGP.js +3 -0
  52. package/lib/chunk-JJL5VOQZ.cjs +3 -0
  53. package/lib/chunk-PBOQ4HYB.cjs +2 -0
  54. package/lib/{chunk-VMW4Z6EF.js → chunk-PRKRXAVN.js} +3 -3
  55. package/lib/chunk-QJVR3FWQ.js +2 -0
  56. package/lib/chunk-YBYXCFAI.js +2 -0
  57. package/lib/chunk-ZCNN6XPV.js +2 -0
  58. package/lib/cloud-storage.cjs +1 -1
  59. package/lib/cloud-storage.d.cts +3 -3
  60. package/lib/cloud-storage.d.ts +3 -3
  61. package/lib/cloud-storage.js +1 -1
  62. package/lib/continuous-event-graph/index.cjs +1 -1
  63. package/lib/continuous-event-graph/index.js +1 -1
  64. package/lib/firestore-storage/index.cjs +2 -2
  65. package/lib/firestore-storage/index.d.cts +17 -4
  66. package/lib/firestore-storage/index.d.ts +17 -4
  67. package/lib/firestore-storage/index.js +2 -2
  68. package/lib/index.cjs +2 -2
  69. package/lib/index.js +1 -1
  70. package/lib/localstorage-storage/index.cjs +1 -1
  71. package/lib/localstorage-storage/index.d.cts +2 -2
  72. package/lib/localstorage-storage/index.d.ts +2 -2
  73. package/lib/localstorage-storage/index.js +1 -1
  74. package/lib/server-jobs-queue-runner/index.d.cts +4 -4
  75. package/lib/server-jobs-queue-runner/index.d.ts +4 -4
  76. package/lib/server-runtime/index.cjs +1 -1
  77. package/lib/server-runtime/index.d.cts +5 -5
  78. package/lib/server-runtime/index.d.ts +5 -5
  79. package/lib/server-runtime/index.js +1 -1
  80. package/lib/server-runtime-agentface/index.d.cts +4 -4
  81. package/lib/server-runtime-agentface/index.d.ts +4 -4
  82. package/lib/server-runtime-controlface/index.cjs +1 -1
  83. package/lib/server-runtime-controlface/index.d.cts +16 -67
  84. package/lib/server-runtime-controlface/index.d.ts +16 -67
  85. package/lib/server-runtime-controlface/index.js +1 -1
  86. package/lib/server-runtime-core/index.cjs +1 -1
  87. package/lib/server-runtime-core/index.d.cts +8 -6
  88. package/lib/server-runtime-core/index.d.ts +8 -6
  89. package/lib/server-runtime-core/index.js +1 -1
  90. package/lib/server-runtime-watchers/index.d.cts +4 -4
  91. package/lib/server-runtime-watchers/index.d.ts +4 -4
  92. package/lib/server-runtime-webhooks/index.d.cts +4 -4
  93. package/lib/server-runtime-webhooks/index.d.ts +4 -4
  94. package/lib/{types-BzQY45dH.d.cts → types-Ba8H5_Wo.d.cts} +6 -4
  95. package/lib/{types-CF2xUcZW.d.ts → types-SO5OZm4s.d.ts} +6 -4
  96. package/package.json +1 -1
  97. package/schema/live-cards.schema.json +10 -1
  98. package/lib/chunk-DDYSXP2A.cjs +0 -3
  99. package/lib/chunk-J5J6BG7B.js +0 -2
  100. package/lib/chunk-M3OU6IS5.cjs +0 -2
  101. package/lib/chunk-M6STQR5F.cjs +0 -2
  102. package/lib/chunk-N6P2JW4W.js +0 -3
  103. package/lib/chunk-NMZ6XNLB.cjs +0 -3
  104. package/lib/chunk-OEFTOO47.cjs +0 -3
  105. package/lib/chunk-PRHQBGPT.js +0 -2
  106. package/lib/chunk-VLBB3D6B.js +0 -3
  107. package/lib/chunk-ZXQR7GHT.js +0 -3
@@ -1,3 +1,3 @@
1
- 'use strict';var chunkPBCDDO4V_cjs=require('./chunk-PBCDDO4V.cjs'),chunkOEFTOO47_cjs=require('./chunk-OEFTOO47.cjs'),chunkU2N6MCD5_cjs=require('./chunk-U2N6MCD5.cjs'),chunkSFVO2LB2_cjs=require('./chunk-SFVO2LB2.cjs'),chunkG4XXRHL2_cjs=require('./chunk-G4XXRHL2.cjs'),chunkIXZG74EW_cjs=require('./chunk-IXZG74EW.cjs');async function $e(e,t,a){let u=await e.tryAcquire();if(!u)return false;try{await t();}finally{await u();}return await a?.(),true}function We(e){return chunkPBCDDO4V_cjs.b(e)}function Le(e,t){return {async readIndex(){return await e.read("_index")},writeIndex(a){return e.write("_index",a)},async readCard(a){return await e.read(a)},async writeCard(a,u){return await e.write(a,u),t(u)},removeCard(a){return e.delete(a)},async cardExists(a){return await e.read(a)!==null},defaultCardKey(a){return a}}}function Je(e,t){async function a(){return await e.readIndex()??{}}return {async readCard(u){let p=(await a())[u];return !p||!await e.cardExists(p.key)?null:await e.readCard(p.key)},async readCardKey(u){return (await a())[u]?.key??null},async readAllCards(){let u=[];for(let[p,S]of Object.entries(await a())){if(!await e.cardExists(S.key))continue;let f=await e.readCard(S.key);f?u.push(f):t?.(`[card-store] could not read card "${p}" at key "${S.key}"`);}return u},async readChecksumIndex(){let u={};for(let[p,S]of Object.entries(await a()))u[p]=S.checksum;return u},async changedSince(u){let p=await a(),S=[];for(let[f,l]of Object.entries(p))u[f]!==l.checksum&&S.push(f);for(let f of Object.keys(u))p[f]||S.push(f);return S},async validateUpsert(u,p){let S=await a(),f=S[u],l=Object.entries(S).find(([,k])=>k.key===p);return f&&f.key!==p?{ok:false,error:`Card id "${u}" is already mapped to key "${f.key}", cannot remap to "${p}"`}:l&&l[0]!==u?{ok:false,error:`Key "${p}" is already mapped to card id "${l[0]}", cannot remap to "${u}"`}:{ok:true}},async writeCard(u,p,S){let f=await a(),l=S??f[u]?.key??e.defaultCardKey(u),k=await e.writeCard(l,p);f[u]={key:l,checksum:k,updatedAt:new Date().toISOString()},await e.writeIndex(f);},async patchCard(u,p,S){let f=await a(),l=f[u];if(!l||!await e.cardExists(l.key))throw new Error(`card "${u}" not found`);let k=await e.readCard(l.key);if(!k||typeof k!="object"||Array.isArray(k))throw new Error(`card "${u}" is not patchable`);let v=String(p||"").split(".").filter(Boolean),q=chunkPBCDDO4V_cjs.a(k,v,S),P=await e.writeCard(l.key,q);f[u]={key:l.key,checksum:P,updatedAt:new Date().toISOString()},await e.writeIndex(f);},async removeCard(u){let p=await a(),S=p[u];S&&(await e.removeCard(S.key),delete p[u],await e.writeIndex(p));},readIndex(){return a()}}}function cr(e,t){return chunkOEFTOO47_cjs.a(e,t)}function dr(e,t,a){return {blob:e,kv:t,journal:a}}function Se(e){return {messageId:e.id,enqueuedAt:e.enqueuedAt,attempt:e.attempt,request:e.body}}function Xe(e){return typeof e=="string"?e.startsWith("b64:")?chunkSFVO2LB2_cjs.b(e).value:e:e.value}function ie(e){return {async enqueueRequest(t){return (await e.enqueue(t)).id},async leaseRequests(t){return (await e.lease(t)).map(a=>({...Se(a),leaseToken:a.leaseToken,leaseExpiresAt:a.leaseExpiresAt}))},ackRequest(t,a){return e.ack(t,a)},nackRequest(t,a,u){return e.nack(t,a,u)},async peekActive(){return (await e.peekActive()).map(Se)},async peekDeadLetter(){return (await e.peekDeadLetter()).map(t=>({...Se(t),reason:t.reason}))}}}function Qe(e){async function t(a){let u=await e.read(a);return u==null?null:typeof u=="string"?u:JSON.stringify(u)}return {async readTaskExecutorRef(){let a=await t("task-executor");if(a?.trim())return chunkU2N6MCD5_cjs.c(a.trim())},writeTaskExecutorRef(a){return e.write("task-executor",chunkU2N6MCD5_cjs.b(a))},readChatHandlerFlow(){return e.read("chat-handler-flow")},writeChatHandlerFlow(a){return e.write("chat-handler-flow",a)},readCardStoreRef(){return t("card-store-ref")},writeCardStoreRef(a){return e.write("card-store-ref",a)},readOutputsStoreRef(){return t("outputs-store-ref")},writeOutputsStoreRef(a){return e.write("outputs-store-ref",a)},readScratchStoreRef(){return t("scratch-store-ref")},writeScratchStoreRef(a){return e.write("scratch-store-ref",a)},readArchiveStoreRef(){return t("archive-store-ref")},writeArchiveStoreRef(a){return e.write("archive-store-ref",a)},readChatStoreRef(){return t("chat-store-ref")},writeChatStoreRef(a){return e.write("chat-store-ref",a)},readArtifactsStoreRef(){return t("artifacts-store-ref")},writeArtifactsStoreRef(a){return e.write("artifacts-store-ref",a)}}}function gr(e){let t,a,u,p=e.callbackTransport,S=e.resolveBlob??(async l=>{let k=await e.blobStorage("").read(l.value);if(k==null)throw new Error(`Blob not found for ref ${l.kind}:${l.value}`);return k});async function f(l,k){if(l.howToRun==="queue-storage"){let v=e.boardWorkerStore??t??(e.queueStorage?ie(e.queueStorage):void 0);return v?(t||(t=v),await v.enqueueRequest({boardId:typeof l.extra?.boardId=="string"?l.extra.boardId:e.boardId,ref:l,args:k}),{dispatched:true}):{dispatched:false,error:"queue-storage dispatch requires queueStorage or boardWorkerStore"}}if(l.howToRun==="http:post"){let v=e.fetch??globalThis.fetch;if(!v)return {dispatched:false,error:"http:post dispatch requires fetch support"};let q=await v(Xe(l.whatToRun),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...k,...l.extra?{extra:l.extra}:{}})});if(!q.ok){let P=await q.text().catch(()=>"");return {dispatched:false,error:`HTTP ${q.status}: ${P}`}}return {dispatched:true}}return {dispatched:false,error:`Unsupported hosted async transport "${l.howToRun}"`}}return {kvStorage:e.kvStorage,kvStorageForRef:e.kvStorageForRef,blobStorage:e.blobStorage,scratchStorage:e.scratchStorage,scratchStorageForRef:e.scratchStorageForRef,archiveFactory:e.archiveFactory,archiveFactoryForRef:e.archiveFactoryForRef,journalStorage:e.journalStorage,boardWorkerStore:()=>{if(!t)if(e.boardWorkerStore)t=e.boardWorkerStore;else if(e.queueStorage)t=ie(e.queueStorage);else throw new Error("Hosted async board adapter requires queueStorage or boardWorkerStore");return t},chatAgentStore:()=>{if(!a)if(e.chatAgentStore)a=e.chatAgentStore;else if(e.chatAgentQueueStorage)a=ie(e.chatAgentQueueStorage);else if(e.boardWorkerStore)a=e.boardWorkerStore;else if(e.queueStorage)a=ie(e.queueStorage);else throw new Error("Hosted async board adapter requires chatAgentStore, chatAgentQueueStorage, queueStorage, or boardWorkerStore");return a},processAccumulatedStore:()=>{if(u||(u=e.processAccumulatedStore??e.processAccumulatedQueueStorage??e.queueStorage),!u)throw new Error("Hosted async board adapter requires processAccumulatedStore, processAccumulatedQueueStorage, or queueStorage");return u},lock:e.lock,get callbackTransport(){return p},set callbackTransport(l){p=l;},dispatchExecution:(l,k)=>e.dispatchExecution?.(l,k)??f(l,k),supportsDirectSourceOutput:e.supportsDirectSourceOutput,resolveBlob:S,hashFn:e.hashFn,genId:e.genId,requestProcessAccumulated:e.requestProcessAccumulated,publishBoardChangeNotifications:e.publishBoardChangeNotifications,warn:e.onWarn}}function C(e){return e!==void 0?{status:"success",data:e}:{status:"success"}}function R(e){return {status:"fail",error:e}}function w(e){return {status:"error",error:e instanceof Error?e.message:String(e)}}function I(){return new Date().toISOString()}function Ze(e){let t=new TextEncoder().encode(e),a=Array.from(t,u=>String.fromCharCode(u)).join("");return btoa(a).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function Me(e){let t=e.replace(/-/g,"+").replace(/_/g,"/"),a=t+"=".repeat((4-t.length%4)%4),u=atob(a),p=Uint8Array.from(u,S=>S.charCodeAt(0));return new TextDecoder().decode(p)}function ue(e){try{let t=JSON.parse(Me(e));return typeof t?.t=="string"?{taskName:t.t}:null}catch{return null}}function er(e){return Ze(JSON.stringify(e))}function He(e){try{let t=JSON.parse(Me(e));return typeof t?.cbk=="string"&&typeof t?.cid=="string"&&typeof t?.b=="string"&&typeof t?.d=="string"?t:null}catch{return null}}function rr(e){return chunkOEFTOO47_cjs.j(e,chunkOEFTOO47_cjs.o,()=>({_sources:{}}))}function tr(e,t){return chunkOEFTOO47_cjs.h(e,t)}function nr(e){return chunkOEFTOO47_cjs.k(e)}function ar(e,t){return chunkOEFTOO47_cjs.i(e,t)}function or(e,t,a,u,p,S){return async f=>{let l=[],k=await a.cardStore.readCard(f.nodeId);if(!k)return "task-initiate-failure";let v=k.id,q=k.card_data??{},P=k.source_defs??[],N=P.filter(s=>s.optionalForCompletionGating!==true),V=await a.cardRuntimeStore.readRuntime(v),K=false,L=async()=>{K&&(await a.cardRuntimeStore.writeRuntime(v,V),K=false);},j=s=>chunkOEFTOO47_cjs.p(V._sources[s]),b=(s,i)=>{V._sources[s]=chunkOEFTOO47_cjs.p(i),K=true;},$=f.taskState?.executionCount??0;if(V._lastExecutionCount!==$&&(V._sources={},V._lastExecutionCount=$,K=true),f.update){let s=f.update.outputFile;if(s){let i=j(s);if(f.update.failure){let m=f.update.rqt??i.lastRequestedToken??i.queueRequestedToken;m&&b(s,chunkOEFTOO47_cjs.s(i,m));}else {let m=f.update.rqt;if(!i.lastCompletedToken||m>i.lastCompletedToken){let h=typeof f.update.deliveryToken=="string"?f.update.deliveryToken:void 0,x=h?await a.fetchedSourcesStore.commitSourceData(v,s,h):false;b(s,x?chunkOEFTOO47_cjs.r(i,m):chunkOEFTOO47_cjs.s(i,m));}}await L();}}let J={};for(let s of P){if(!s.outputFile)continue;let i=await a.fetchedSourcesStore.readSourceData(v,s.outputFile);i!==null&&(J[s.bindTo]=i);}let Q={};for(let[s,i]of Object.entries(f.state??{}))if(i!==null&&typeof i=="object"&&!Array.isArray(i)){let m=i[s];Q[s]=m!==void 0?m:i;}else Q[s]=i;let H={id:v,card_data:{...q},requires:Q,source_defs:P,compute:k.compute};H._sourcesData=J,k.compute&&chunkIXZG74EW_cjs.a.runSync(H,{sourcesData:J}),(p??(()=>{}))(v,H.computed_values??{});let G=chunkIXZG74EW_cjs.a.enrichSourcesSync(Array.isArray(k.source_defs)?k.source_defs:void 0,{card_data:k.card_data,requires:Q}),z={...k,source_defs:Array.isArray(G)?G.map(s=>({...s,boardDir:typeof s.boardDir=="string"&&s.boardDir?s.boardDir:e.value})):G},_=I(),O=f.update?void 0:_,n=N.filter(s=>{let i=s.outputFile;if(typeof i!="string"||!i)return true;let m=j(i);O&&(m={...m,queueRequestedToken:O},b(i,m));let h=m.queueRequestedToken??m.lastRequestedToken??_;return chunkOEFTOO47_cjs.q(m,h)==="dispatch"});if(await L(),n.length>0){let s=false,i=_;for(let m of n){let h=m.outputFile;if(typeof h!="string"||!h)continue;let x=j(h),F=x.queueRequestedToken??_;b(h,{...x,lastRequestedToken:F}),i=F,s=true;}return s&&await L(),s&&(l.push({taskKind:"source-fetch",payload:{boardRef:chunkSFVO2LB2_cjs.a(e),enrichedCard:z,callbackToken:f.callbackToken,rqt:i}}),await a.executionRequestStore.appendEntries(t,l)),"task-initiated"}if(N.some(s=>{let i=s.outputFile;if(typeof i!="string"||!i)return false;let m=j(i),h=m.queueRequestedToken??m.lastRequestedToken??_;return chunkOEFTOO47_cjs.q(m,h)==="in-flight"}))return "task-initiated";let d=k.provides??[],o={};for(let{bindTo:s,ref:i}of d)o[s]=chunkIXZG74EW_cjs.a.resolve(H,i);return (S??(()=>{}))(o),P.filter(s=>{if(s.optionalForCompletionGating!==true)return false;let i=j(s.outputFile);return !i.lastRequestedToken||!i.lastCompletedToken?true:i.lastCompletedToken<=i.lastRequestedToken}).length>0&&l.push({taskKind:"source-fetch",payload:{boardRef:chunkSFVO2LB2_cjs.a(e),enrichedCard:z,callbackToken:f.callbackToken,rqt:_}}),u(f.nodeId,o),l.length>0&&await a.executionRequestStore.appendEntries(t,l),"task-initiated"}}function Ir(e,t){chunkOEFTOO47_cjs.d(t.callbackTransport,"createAsyncBoardLiveCardsPublic");let a=t.callbackTransport,u=t.warn??(()=>{}),p=chunkSFVO2LB2_cjs.a(e),S=null;function f(n){if(n.length!==0)try{return Promise.resolve(t.publishBoardChangeNotifications?.(n)).catch(r=>{u(`[async-board-live-cards-public] publishBoardChangeNotifications failed: ${r instanceof Error?r.message:String(r)}`);})}catch(r){u(`[async-board-live-cards-public] publishBoardChangeNotifications failed: ${r instanceof Error?r.message:String(r)}`);return}}let l=()=>Qe(t.kvStorage("config")),k=()=>t.kvStorage("state-snapshot"),v=e.value,q=()=>chunkOEFTOO47_cjs.b(chunkOEFTOO47_cjs.a(()=>k(),t.hashFn),"v1"),P=async()=>{let n=await l().readOutputsStoreRef();if(!n)throw new Error(`Board at ${e.value} has no outputs store configured.`);return nr(t.kvStorageForRef(n))},N=async()=>{let n=await l().readCardStoreRef();if(!n)throw new Error(`Board at ${e.value} has no card store configured.`);let r=t.kvStorageForRef(n);return Je(Le(We(r),t.hashFn),u)};async function V(){return !!(await q().readSnapshot(v)).values[chunkOEFTOO47_cjs.n]}async function K(){let n=await q().readSnapshot(v);if(!n.values[chunkOEFTOO47_cjs.n])throw new Error(`Board not initialized at ${e.value}`);return chunkOEFTOO47_cjs.w(n.values)}async function L(n,r){let d=await q().commitSnapshot(v,{schemaVersion:"v1",expectedVersion:r,deleteKeys:[],shallowMerge:chunkOEFTOO47_cjs.v(n)});if(!d.ok)throw new Error(`Snapshot commit failed (version mismatch): expected=${r??"null"} current=${d.currentVersion??"null"}`)}let j=()=>chunkOEFTOO47_cjs.c(t.journalStorage());async function b(n){await j().appendEvent(n);}function $(){return tr(t.blobStorage("sources"),n=>t.resolveBlob(n))}async function J(n){let r=await Promise.resolve(t.blobStorage("sources").keyRef?.(n));return r?chunkSFVO2LB2_cjs.a(r):n}async function Q(){let n=ar(t.kvStorage("execution-requests"),async(c,g)=>{let A=c.payload,T=(A.enrichedCard??{}).id??A.cardId??"unknown";await b({type:"task-failed",taskName:T,error:g,timestamp:I()});}),r=rr(t.kvStorage("card-runtime")),d=$(),o=await N(),y=await P(),s=new Map,i=new Map,m=[],h=[],x=[],F=new Map,W=new Set,M={async readRuntime(c){return s.get(c)??await r.readRuntime(c)},async writeRuntime(c,g){s.set(c,g);}},ce={async readSourceData(c,g){let A=`${c}/${g}`;return i.has(A)?i.get(A):await d.readSourceData(c,g)},ingestSourceDataStaged(c,g,A,B){return d.ingestSourceDataStaged(c,g,A,B)},async commitSourceData(c,g,A){let B=`${c}/.staged/${A}/${g}`,T=t.blobStorage("sources"),D=await T.read(B);if(D==null){let X=await T.keyRef?.(B);X&&(D=await t.resolveBlob(X));}if(D==null)return false;let re=`${c}/${g}`,Y=D.trim();try{i.set(re,JSON.parse(Y));}catch{i.set(re,Y);}return m.push({cardId:c,outputFile:g,deliveryToken:A}),true},async hasSource(c,g){let A=`${c}/${g}`;return i.has(A)||await d.hasSource(c,g)},async listSources(c){let g=await d.listSources(c),A=[...i.keys()].filter(B=>B.startsWith(`${c}/`)).map(B=>B.slice(`${c}/`.length));return [...new Set([...g,...A])]}},ke=await K(),Ue=chunkG4XXRHL2_cjs.q(ke.graph),{events:Ge,newCursor:de}=await j().readEntriesAfterCursor(ke.lastDrainedJournalId),Z=Ge,ee=chunkG4XXRHL2_cjs.u(Ue,{handlers:{"card-handler":or(e,de,{cardStore:o,cardRuntimeStore:M,fetchedSourcesStore:ce,executionRequestStore:n},(c,g)=>{Z.push({type:"task-completed",taskName:c,data:g,timestamp:I()});},(c,g)=>{h.push({cardId:c,values:g});},c=>{x.push(c);})},onNodeRemoved:c=>{F.delete(c),s.delete(c),W.add(c);}});for(;Z.length>0;){let c=Z;Z=[];for(let g of c)if(g.type==="task-restart"){let A=await o.readCard(g.taskName);A&&F.set(g.taskName,A);}ee.pushAll(c),await ee.waitForHandlers();}let Re=ee.getState();await ee.dispose({wait:true}),await L({lastDrainedJournalId:de,graph:chunkG4XXRHL2_cjs.p(Re)},(await q().readSnapshot(v)).version);for(let{cardId:c,values:g}of h)await y.writeComputedValues(c,g);for(let c of x)await y.writeDataObjects(c);for(let[c,g]of s)await r.writeRuntime(c,g);for(let c of m)await d.commitSourceData(c.cardId,c.outputFile,c.deliveryToken);let he=chunkOEFTOO47_cjs.t(p,Re);await y.writeStatusSnapshot(he);let U=[];for(let{cardId:c,values:g}of h)U.push({kind:"computed_values",cardId:c,values:g});for(let c of x)for(let[g,A]of Object.entries(c))U.push({kind:"data_object",key:g,payload:A});for(let[c,g]of F)U.push({kind:"card_refreshed",cardId:c,card:g});for(let c of W)U.push({kind:"card_removed",cardId:c});U.push({kind:"status",status:he}),await f(U);let le=await l().readTaskExecutorRef();if(!le)return;let ze=t.supportsDirectSourceOutput?.(le)===true;await n.dispatchEntriesForJournalId(de,async c=>{if(c.taskKind!=="source-fetch"){u(`[async-process-accumulated-events] unknown taskKind "${c.taskKind}" \u2014 skipping`);return}let g=c.payload,A=g.enrichedCard?.id??"unknown",B=g.enrichedCard?.source_defs??[];for(let T of B){if(!T.outputFile)continue;let D;if(ze){let X=t.genId(),Ye=`${A}/.staged/${X}/${T.outputFile}`,Ce=await Promise.resolve(t.blobStorage("sources").keyRef?.(Ye));Ce&&(D={ref:chunkSFVO2LB2_cjs.a(Ce),deliveryToken:X,outputFile:T.outputFile,cardId:A});}let re=er({cbk:g.callbackToken,rg:e.value,br:chunkSFVO2LB2_cjs.a(e),cid:A,b:T.bindTo,d:T.outputFile,cs:void 0,rqt:g.rqt,...D?{dt:D.deliveryToken}:{}}),Y=await t.dispatchExecution(le,{source_def:T,base_ref:chunkSFVO2LB2_cjs.a(e),callback:a.createCallback(re),...D?{output:D}:{}});Y.dispatched||await b({type:"task-failed",taskName:A,error:Y.error??"dispatch failed",timestamp:I()});}});}async function H(){try{let n=async()=>{let d=await K(),{events:o}=await j().readEntriesAfterCursor(d.lastDrainedJournalId);o.length>0&&await z();},r=await $e(t.lock,Q,n);return C({ran:r!==!1})}catch(n){return w(n)}}async function G(){return S||(S=H().finally(()=>{S=null;}),S)}async function z(){let n=t.processAccumulatedStore();n.enqueueIfAbsent?await n.enqueueIfAbsent({boardRef:chunkSFVO2LB2_cjs.a(e)},`process-accumulated:${chunkSFVO2LB2_cjs.a(e)}`):await n.enqueue({boardRef:chunkSFVO2LB2_cjs.a(e)}),await t.requestProcessAccumulated?.();}async function _(){let n=t.processAccumulatedStore();for(;;){let r=await n.lease({max:64,visibilityMs:1e3});if(r.length<=0)return;for(let d of r)await n.ack(d.id,d.leaseToken);if(r.length<64)return}}function O(){z();}return {async init(n){try{let r=n.params?.cardStoreRef;if(!r)return R("init requires params.cardStoreRef");let d=n.params?.outputsStoreRef;if(!d)return R("init requires params.outputsStoreRef");await V()||await L({lastDrainedJournalId:"",graph:chunkG4XXRHL2_cjs.p(chunkG4XXRHL2_cjs.a(chunkOEFTOO47_cjs.u))},null);let o=l();await o.writeCardStoreRef(r),await o.writeOutputsStoreRef(d);let y=n.params?.scratchStoreRef,s=n.params?.archiveStoreRef,i=n.params?.chatStoreRef,m=n.params?.artifactsStoreRef;y&&await o.writeScratchStoreRef(y),s&&await o.writeArchiveStoreRef(s),i&&await o.writeChatStoreRef(i),m&&await o.writeArtifactsStoreRef(m);let h=n.body??{};return h["task-executor-ref"]&&await o.writeTaskExecutorRef(h["task-executor-ref"]),Object.prototype.hasOwnProperty.call(h,"chat-handler-flow")&&await o.writeChatHandlerFlow(h["chat-handler-flow"]),await(await P()).writeStatusSnapshot(chunkOEFTOO47_cjs.t(p,chunkG4XXRHL2_cjs.q((await K()).graph))),C()}catch(r){return w(r)}},async status(n){try{let r=await P(),d=await r.readStatusSnapshot();return d||(d=chunkOEFTOO47_cjs.t(p,chunkG4XXRHL2_cjs.q((await K()).graph)),await r.writeStatusSnapshot(d)),C(d)}catch(r){return w(r)}},async getCardStoreRef(n){try{let r=await l().readCardStoreRef();return r?C({storeRef:r}):R(`Board at ${e.value} has no card store configured`)}catch(r){return w(r)}},async getOutputsStoreRef(n){try{let r=await l().readOutputsStoreRef();return r?C({storeRef:r}):R(`Board at ${e.value} has no outputs store configured`)}catch(r){return w(r)}},async getScratchStoreRef(n){try{return C({storeRef:await l().readScratchStoreRef()})}catch(r){return w(r)}},async getArchiveStoreRef(n){try{return C({storeRef:await l().readArchiveStoreRef()})}catch(r){return w(r)}},async getChatStoreRef(n){try{return C({storeRef:await l().readChatStoreRef()})}catch(r){return w(r)}},async getArtifactsStoreRef(n){try{return C({storeRef:await l().readArtifactsStoreRef()})}catch(r){return w(r)}},async getConfig(n){try{let r=n.params?.key;if(!r)return R("getConfig requires params.key");let d=l(),o;switch(r){case "task-executor":o=await d.readTaskExecutorRef()??null;break;case "chat-handler-flow":o=await d.readChatHandlerFlow()??null;break;case "card-store-ref":o=await d.readCardStoreRef();break;case "outputs-store-ref":o=await d.readOutputsStoreRef();break;case "scratch-store-ref":o=await d.readScratchStoreRef();break;case "archive-store-ref":o=await d.readArchiveStoreRef();break;case "chat-store-ref":o=await d.readChatStoreRef();break;case "artifacts-store-ref":o=await d.readArtifactsStoreRef();break;default:return R(`getConfig: unknown key "${r}"`)}return C({value:o})}catch(r){return w(r)}},async getOutputsDataObject(n){try{let r=n.params?.key;return r?C(await(await P()).readDataObject(r)):R("getOutputsDataObject requires params.key")}catch(r){return w(r)}},async getAllOutputsDataObjects(n){try{return C(await(await P()).readAllDataObjects())}catch(r){return w(r)}},async getOutputsComputedValues(n){try{let r=n.params?.key;return r?C(await(await P()).readComputedValues(r)):R("getOutputsComputedValues requires params.key")}catch(r){return w(r)}},async getAllOutputsComputedValues(n){try{return C(await(await P()).readAllComputedValues())}catch(r){return w(r)}},async getOutputsFetchedSources(n){try{let r=n.params?.key;if(!r)return R("getOutputsFetchedSources requires params.key");let d=await $().listSources(r),o={};for(let y of d)o[y]=await J(`${r}/${y}`);return C(o)}catch(r){return w(r)}},async getAllOutputsFetchedSources(n){try{let r=$(),d=await t.blobStorage("sources").listKeys(),o=new Set;for(let s of d){let i=s.indexOf("/");i>0&&!s.includes("/.staged/")&&o.add(s.slice(0,i));}let y={};for(let s of o){let i=await r.listSources(s);if(i.length!==0){y[s]={};for(let m of i)y[s][m]=await J(`${s}/${m}`);}}return C(y)}catch(r){return w(r)}},async addCardFiles(n){try{let r=n.params?.cardId;if(!r)return R("addCardFiles requires params.cardId");let d=await N(),o=await d.readCard(r);if(!o)return R(`card "${r}" not found`);let y=n.body,s=Array.isArray(y)?y:y&&typeof y=="object"&&Array.isArray(y.files)?y.files:y!=null?[y]:null;if(!s||s.length===0)return R("addCardFiles requires a file metadata object, array, or body.files array");let i=o.card_data&&typeof o.card_data=="object"&&!Array.isArray(o.card_data)?o.card_data:{},m=Array.isArray(i.files)?i.files:[],h=[...m,...s],x=s.map((W,M)=>({idx:m.length+M,entry:W}));await d.writeCard(r,{...o,card_data:{...i,files:h}});let F=await this.cardRefreshedNotify({params:{cardId:r}});return F.status!=="success"?F:C({cardId:r,files_added:x,notified:!0})}catch(r){return w(r)}},async cardRefreshedNotify(n){try{let r=n.params?.cardId;if(!r)return R("cardRefreshedNotify requires params.cardId");let d=await(await N()).readCard(r);return d?(await f([{kind:"card_refreshed",cardId:r,card:d}]),C({cardId:r,notified:!0})):R(`Card "${r}" not found in board at ${e.value}`)}catch(r){return w(r)}},async removeCard(n){try{let r=n.params?.id;if(!r)return R("removeCard requires params.id");try{await t.kvStorage("card-upsert").delete(r);}catch{}return await b({type:"task-removal",taskName:r,timestamp:I()}),O(),C()}catch(r){return w(r)}},async retrigger(n){try{let r=n.params?.id;return r?(await b({type:"task-restart",taskName:r,timestamp:I()}),O(),C()):R("retrigger requires params.id")}catch(r){return w(r)}},async processAccumulatedEvents(n){return await _(),G()},async upsertCard(n){try{let r=n.params?.cardId,d=n.params?.all,o=!!n.params?.restart;if(!r&&!d)return R("upsertCard requires --card-id <id> or --all");let y=await N(),s=d?(await y.readAllCards()).map(m=>m.id):[r];for(let m of s)if(!await y.readCard(m))return R(`Card "${m}" not found in board at ${e.value}`);let i=t.kvStorage("card-upsert");for(let m of s){let h=await y.readCard(m);if(!h)continue;let x=chunkOEFTOO47_cjs.x(h),F=t.hashFn(x),W=await i.read(m),M=W?.taskConfigHash!==F;if(!(!M&&!o)){if(M){let ce=W?.blobRef??await y.readCardKey(m)??m;await b({type:"task-upsert",taskName:m,taskConfig:x,timestamp:I()}),await i.write(m,{blobRef:ce,taskConfigHash:F,updatedAt:I()});}o&&await b({type:"task-restart",taskName:m,timestamp:I()});}}return O(),C()}catch(r){return w(r)}},async taskFailed(n){try{let r=n.params?.token;if(!r)return R("taskFailed requires params.token");let d=n.params?.error??"unknown error",o=ue(r);return o?(await b({type:"task-failed",taskName:o.taskName,error:d,timestamp:I()}),O(),C()):R("Invalid callback token")}catch(r){return w(r)}},async taskProgress(n){try{let r=n.params?.token;if(!r)return R("taskProgress requires params.token");let d=(n.body??{}).update??{},o=ue(r);return o?(await b({type:"task-progress",taskName:o.taskName,update:d,timestamp:I()}),O(),C()):R("Invalid callback token")}catch(r){return w(r)}},async sourceDataFetched(n){try{let r=n.params?.token,d=n.params?.ref;if(!r)return R("sourceDataFetched requires params.token");if(!d)return R("sourceDataFetched requires params.ref");let o=He(r);if(!o)return R("Invalid source token");let y=$(),s=o.dt||t.genId();o.dt||await y.ingestSourceDataStaged(o.cid,o.d,chunkSFVO2LB2_cjs.b(d),s);let i=ue(o.cbk);return i?(await b({type:"task-progress",taskName:i.taskName,update:{bindTo:o.b,outputFile:o.d,fetchedAt:I(),deliveryToken:s,sourceChecksum:o.cs,rqt:o.rqt},timestamp:I()}),O(),C()):R("Invalid callback token embedded in source token")}catch(r){return w(r)}},async sourceDataFetchFailure(n){try{let r=n.params?.token,d=n.params?.reason??"unknown";if(!r)return R("sourceDataFetchFailure requires params.token");let o=He(r);if(!o)return R("Invalid source token");let y=ue(o.cbk);return y?(await b({type:"task-progress",taskName:y.taskName,update:{bindTo:o.b,outputFile:o.d,failure:!0,reason:d,sourceChecksum:o.cs,rqt:o.rqt},timestamp:I()}),O(),C()):R("Invalid callback token embedded in source token")}catch(r){return w(r)}}}}
2
- exports.a=$e;exports.b=We;exports.c=Le;exports.d=Je;exports.e=cr;exports.f=dr;exports.g=ie;exports.h=Qe;exports.i=gr;exports.j=Ir;//# sourceMappingURL=chunk-H5HBXPOI.cjs.map
3
- //# sourceMappingURL=chunk-H5HBXPOI.cjs.map
1
+ 'use strict';var chunkPBCDDO4V_cjs=require('./chunk-PBCDDO4V.cjs'),chunkJJL5VOQZ_cjs=require('./chunk-JJL5VOQZ.cjs'),chunkU2N6MCD5_cjs=require('./chunk-U2N6MCD5.cjs'),chunkSFVO2LB2_cjs=require('./chunk-SFVO2LB2.cjs'),chunkG4XXRHL2_cjs=require('./chunk-G4XXRHL2.cjs'),chunkIXZG74EW_cjs=require('./chunk-IXZG74EW.cjs');async function $e(e,t,a){let u=await e.tryAcquire();if(!u)return false;try{await t();}finally{await u();}return await a?.(),true}function We(e){return chunkPBCDDO4V_cjs.b(e)}function Le(e,t){return {async readIndex(){return await e.read("_index")},writeIndex(a){return e.write("_index",a)},async readCard(a){return await e.read(a)},async writeCard(a,u){return await e.write(a,u),t(u)},removeCard(a){return e.delete(a)},async cardExists(a){return await e.read(a)!==null},defaultCardKey(a){return a}}}function Je(e,t){async function a(){return await e.readIndex()??{}}return {async readCard(u){let p=(await a())[u];return !p||!await e.cardExists(p.key)?null:await e.readCard(p.key)},async readCardKey(u){return (await a())[u]?.key??null},async readAllCards(){let u=[];for(let[p,S]of Object.entries(await a())){if(!await e.cardExists(S.key))continue;let f=await e.readCard(S.key);f?u.push(f):t?.(`[card-store] could not read card "${p}" at key "${S.key}"`);}return u},async readChecksumIndex(){let u={};for(let[p,S]of Object.entries(await a()))u[p]=S.checksum;return u},async changedSince(u){let p=await a(),S=[];for(let[f,l]of Object.entries(p))u[f]!==l.checksum&&S.push(f);for(let f of Object.keys(u))p[f]||S.push(f);return S},async validateUpsert(u,p){let S=await a(),f=S[u],l=Object.entries(S).find(([,k])=>k.key===p);return f&&f.key!==p?{ok:false,error:`Card id "${u}" is already mapped to key "${f.key}", cannot remap to "${p}"`}:l&&l[0]!==u?{ok:false,error:`Key "${p}" is already mapped to card id "${l[0]}", cannot remap to "${u}"`}:{ok:true}},async writeCard(u,p,S){let f=await a(),l=S??f[u]?.key??e.defaultCardKey(u),k=await e.writeCard(l,p);f[u]={key:l,checksum:k,updatedAt:new Date().toISOString()},await e.writeIndex(f);},async patchCard(u,p,S){let f=await a(),l=f[u];if(!l||!await e.cardExists(l.key))throw new Error(`card "${u}" not found`);let k=await e.readCard(l.key);if(!k||typeof k!="object"||Array.isArray(k))throw new Error(`card "${u}" is not patchable`);let v=String(p||"").split(".").filter(Boolean),q=chunkPBCDDO4V_cjs.a(k,v,S),P=await e.writeCard(l.key,q);f[u]={key:l.key,checksum:P,updatedAt:new Date().toISOString()},await e.writeIndex(f);},async removeCard(u){let p=await a(),S=p[u];S&&(await e.removeCard(S.key),delete p[u],await e.writeIndex(p));},readIndex(){return a()}}}function cr(e,t){return chunkJJL5VOQZ_cjs.a(e,t)}function dr(e,t,a){return {blob:e,kv:t,journal:a}}function Se(e){return {messageId:e.id,enqueuedAt:e.enqueuedAt,attempt:e.attempt,request:e.body}}function Xe(e){return typeof e=="string"?e.startsWith("b64:")?chunkSFVO2LB2_cjs.b(e).value:e:e.value}function ie(e){return {async enqueueRequest(t){return (await e.enqueue(t)).id},async leaseRequests(t){return (await e.lease(t)).map(a=>({...Se(a),leaseToken:a.leaseToken,leaseExpiresAt:a.leaseExpiresAt}))},ackRequest(t,a){return e.ack(t,a)},nackRequest(t,a,u){return e.nack(t,a,u)},async peekActive(){return (await e.peekActive()).map(Se)},async peekDeadLetter(){return (await e.peekDeadLetter()).map(t=>({...Se(t),reason:t.reason}))}}}function Qe(e){async function t(a){let u=await e.read(a);return u==null?null:typeof u=="string"?u:JSON.stringify(u)}return {async readTaskExecutorRef(){let a=await t("task-executor");if(a?.trim())return chunkU2N6MCD5_cjs.c(a.trim())},writeTaskExecutorRef(a){return e.write("task-executor",chunkU2N6MCD5_cjs.b(a))},readChatHandlerFlow(){return e.read("chat-handler-flow")},writeChatHandlerFlow(a){return e.write("chat-handler-flow",a)},readCardStoreRef(){return t("card-store-ref")},writeCardStoreRef(a){return e.write("card-store-ref",a)},readOutputsStoreRef(){return t("outputs-store-ref")},writeOutputsStoreRef(a){return e.write("outputs-store-ref",a)},readScratchStoreRef(){return t("scratch-store-ref")},writeScratchStoreRef(a){return e.write("scratch-store-ref",a)},readArchiveStoreRef(){return t("archive-store-ref")},writeArchiveStoreRef(a){return e.write("archive-store-ref",a)},readChatStoreRef(){return t("chat-store-ref")},writeChatStoreRef(a){return e.write("chat-store-ref",a)},readArtifactsStoreRef(){return t("artifacts-store-ref")},writeArtifactsStoreRef(a){return e.write("artifacts-store-ref",a)}}}function gr(e){let t,a,u,p=e.callbackTransport,S=e.resolveBlob??(async l=>{let k=await e.blobStorage("").read(l.value);if(k==null)throw new Error(`Blob not found for ref ${l.kind}:${l.value}`);return k});async function f(l,k){if(l.howToRun==="queue-storage"){let v=e.boardWorkerStore??t??(e.queueStorage?ie(e.queueStorage):void 0);return v?(t||(t=v),await v.enqueueRequest({boardId:typeof l.extra?.boardId=="string"?l.extra.boardId:e.boardId,ref:l,args:k}),{dispatched:true}):{dispatched:false,error:"queue-storage dispatch requires queueStorage or boardWorkerStore"}}if(l.howToRun==="http:post"){let v=e.fetch??globalThis.fetch;if(!v)return {dispatched:false,error:"http:post dispatch requires fetch support"};let q=await v(Xe(l.whatToRun),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...k,...l.extra?{extra:l.extra}:{}})});if(!q.ok){let P=await q.text().catch(()=>"");return {dispatched:false,error:`HTTP ${q.status}: ${P}`}}return {dispatched:true}}return {dispatched:false,error:`Unsupported hosted async transport "${l.howToRun}"`}}return {kvStorage:e.kvStorage,kvStorageForRef:e.kvStorageForRef,blobStorage:e.blobStorage,scratchStorage:e.scratchStorage,scratchStorageForRef:e.scratchStorageForRef,archiveFactory:e.archiveFactory,archiveFactoryForRef:e.archiveFactoryForRef,journalStorage:e.journalStorage,boardWorkerStore:()=>{if(!t)if(e.boardWorkerStore)t=e.boardWorkerStore;else if(e.queueStorage)t=ie(e.queueStorage);else throw new Error("Hosted async board adapter requires queueStorage or boardWorkerStore");return t},chatAgentStore:()=>{if(!a)if(e.chatAgentStore)a=e.chatAgentStore;else if(e.chatAgentQueueStorage)a=ie(e.chatAgentQueueStorage);else if(e.boardWorkerStore)a=e.boardWorkerStore;else if(e.queueStorage)a=ie(e.queueStorage);else throw new Error("Hosted async board adapter requires chatAgentStore, chatAgentQueueStorage, queueStorage, or boardWorkerStore");return a},processAccumulatedStore:()=>{if(u||(u=e.processAccumulatedStore??e.processAccumulatedQueueStorage??e.queueStorage),!u)throw new Error("Hosted async board adapter requires processAccumulatedStore, processAccumulatedQueueStorage, or queueStorage");return u},lock:e.lock,get callbackTransport(){return p},set callbackTransport(l){p=l;},dispatchExecution:(l,k)=>e.dispatchExecution?.(l,k)??f(l,k),supportsDirectSourceOutput:e.supportsDirectSourceOutput,resolveBlob:S,hashFn:e.hashFn,genId:e.genId,requestProcessAccumulated:e.requestProcessAccumulated,publishBoardChangeNotifications:e.publishBoardChangeNotifications,warn:e.onWarn}}function C(e){return e!==void 0?{status:"success",data:e}:{status:"success"}}function R(e){return {status:"fail",error:e}}function w(e){return {status:"error",error:e instanceof Error?e.message:String(e)}}function I(){return new Date().toISOString()}function Ze(e){let t=new TextEncoder().encode(e),a=Array.from(t,u=>String.fromCharCode(u)).join("");return btoa(a).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function Me(e){let t=e.replace(/-/g,"+").replace(/_/g,"/"),a=t+"=".repeat((4-t.length%4)%4),u=atob(a),p=Uint8Array.from(u,S=>S.charCodeAt(0));return new TextDecoder().decode(p)}function ue(e){try{let t=JSON.parse(Me(e));return typeof t?.t=="string"?{taskName:t.t}:null}catch{return null}}function er(e){return Ze(JSON.stringify(e))}function He(e){try{let t=JSON.parse(Me(e));return typeof t?.cbk=="string"&&typeof t?.cid=="string"&&typeof t?.b=="string"&&typeof t?.d=="string"?t:null}catch{return null}}function rr(e){return chunkJJL5VOQZ_cjs.j(e,chunkJJL5VOQZ_cjs.o,()=>({_sources:{}}))}function tr(e,t){return chunkJJL5VOQZ_cjs.h(e,t)}function nr(e){return chunkJJL5VOQZ_cjs.k(e)}function ar(e,t){return chunkJJL5VOQZ_cjs.i(e,t)}function or(e,t,a,u,p,S){return async f=>{let l=[],k=await a.cardStore.readCard(f.nodeId);if(!k)return "task-initiate-failure";let v=k.id,q=k.card_data??{},P=k.source_defs??[],N=P.filter(s=>s.optionalForCompletionGating!==true),V=await a.cardRuntimeStore.readRuntime(v),K=false,L=async()=>{K&&(await a.cardRuntimeStore.writeRuntime(v,V),K=false);},j=s=>chunkJJL5VOQZ_cjs.p(V._sources[s]),b=(s,i)=>{V._sources[s]=chunkJJL5VOQZ_cjs.p(i),K=true;},$=f.taskState?.executionCount??0;if(V._lastExecutionCount!==$&&(V._sources={},V._lastExecutionCount=$,K=true),f.update){let s=f.update.outputFile;if(s){let i=j(s);if(f.update.failure){let m=f.update.rqt??i.lastRequestedToken??i.queueRequestedToken;m&&b(s,chunkJJL5VOQZ_cjs.s(i,m));}else {let m=f.update.rqt;if(!i.lastCompletedToken||m>i.lastCompletedToken){let h=typeof f.update.deliveryToken=="string"?f.update.deliveryToken:void 0,x=h?await a.fetchedSourcesStore.commitSourceData(v,s,h):false;b(s,x?chunkJJL5VOQZ_cjs.r(i,m):chunkJJL5VOQZ_cjs.s(i,m));}}await L();}}let J={};for(let s of P){if(!s.outputFile)continue;let i=await a.fetchedSourcesStore.readSourceData(v,s.outputFile);i!==null&&(J[s.bindTo]=i);}let Q={};for(let[s,i]of Object.entries(f.state??{}))if(i!==null&&typeof i=="object"&&!Array.isArray(i)){let m=i[s];Q[s]=m!==void 0?m:i;}else Q[s]=i;let H={id:v,card_data:{...q},requires:Q,source_defs:P,compute:k.compute};H._sourcesData=J,k.compute&&chunkIXZG74EW_cjs.a.runSync(H,{sourcesData:J}),(p??(()=>{}))(v,H.computed_values??{});let G=chunkIXZG74EW_cjs.a.enrichSourcesSync(Array.isArray(k.source_defs)?k.source_defs:void 0,{card_data:k.card_data,requires:Q}),z={...k,source_defs:Array.isArray(G)?G.map(s=>({...s,boardDir:typeof s.boardDir=="string"&&s.boardDir?s.boardDir:e.value})):G},_=I(),O=f.update?void 0:_,n=N.filter(s=>{let i=s.outputFile;if(typeof i!="string"||!i)return true;let m=j(i);O&&(m={...m,queueRequestedToken:O},b(i,m));let h=m.queueRequestedToken??m.lastRequestedToken??_;return chunkJJL5VOQZ_cjs.q(m,h)==="dispatch"});if(await L(),n.length>0){let s=false,i=_;for(let m of n){let h=m.outputFile;if(typeof h!="string"||!h)continue;let x=j(h),F=x.queueRequestedToken??_;b(h,{...x,lastRequestedToken:F}),i=F,s=true;}return s&&await L(),s&&(l.push({taskKind:"source-fetch",payload:{boardRef:chunkSFVO2LB2_cjs.a(e),enrichedCard:z,callbackToken:f.callbackToken,rqt:i}}),await a.executionRequestStore.appendEntries(t,l)),"task-initiated"}if(N.some(s=>{let i=s.outputFile;if(typeof i!="string"||!i)return false;let m=j(i),h=m.queueRequestedToken??m.lastRequestedToken??_;return chunkJJL5VOQZ_cjs.q(m,h)==="in-flight"}))return "task-initiated";let d=k.provides??[],o={};for(let{bindTo:s,ref:i}of d)o[s]=chunkIXZG74EW_cjs.a.resolve(H,i);return (S??(()=>{}))(o),P.filter(s=>{if(s.optionalForCompletionGating!==true)return false;let i=j(s.outputFile);return !i.lastRequestedToken||!i.lastCompletedToken?true:i.lastCompletedToken<=i.lastRequestedToken}).length>0&&l.push({taskKind:"source-fetch",payload:{boardRef:chunkSFVO2LB2_cjs.a(e),enrichedCard:z,callbackToken:f.callbackToken,rqt:_}}),u(f.nodeId,o),l.length>0&&await a.executionRequestStore.appendEntries(t,l),"task-initiated"}}function Ir(e,t){chunkJJL5VOQZ_cjs.d(t.callbackTransport,"createAsyncBoardLiveCardsPublic");let a=t.callbackTransport,u=t.warn??(()=>{}),p=chunkSFVO2LB2_cjs.a(e),S=null;function f(n){if(n.length!==0)try{return Promise.resolve(t.publishBoardChangeNotifications?.(n)).catch(r=>{u(`[async-board-live-cards-public] publishBoardChangeNotifications failed: ${r instanceof Error?r.message:String(r)}`);})}catch(r){u(`[async-board-live-cards-public] publishBoardChangeNotifications failed: ${r instanceof Error?r.message:String(r)}`);return}}let l=()=>Qe(t.kvStorage("config")),k=()=>t.kvStorage("state-snapshot"),v=e.value,q=()=>chunkJJL5VOQZ_cjs.b(chunkJJL5VOQZ_cjs.a(()=>k(),t.hashFn),"v1"),P=async()=>{let n=await l().readOutputsStoreRef();if(!n)throw new Error(`Board at ${e.value} has no outputs store configured.`);return nr(t.kvStorageForRef(n))},N=async()=>{let n=await l().readCardStoreRef();if(!n)throw new Error(`Board at ${e.value} has no card store configured.`);let r=t.kvStorageForRef(n);return Je(Le(We(r),t.hashFn),u)};async function V(){return !!(await q().readSnapshot(v)).values[chunkJJL5VOQZ_cjs.n]}async function K(){let n=await q().readSnapshot(v);if(!n.values[chunkJJL5VOQZ_cjs.n])throw new Error(`Board not initialized at ${e.value}`);return chunkJJL5VOQZ_cjs.w(n.values)}async function L(n,r){let d=await q().commitSnapshot(v,{schemaVersion:"v1",expectedVersion:r,deleteKeys:[],shallowMerge:chunkJJL5VOQZ_cjs.v(n)});if(!d.ok)throw new Error(`Snapshot commit failed (version mismatch): expected=${r??"null"} current=${d.currentVersion??"null"}`)}let j=()=>chunkJJL5VOQZ_cjs.c(t.journalStorage());async function b(n){await j().appendEvent(n);}function $(){return tr(t.blobStorage("sources"),n=>t.resolveBlob(n))}async function J(n){let r=await Promise.resolve(t.blobStorage("sources").keyRef?.(n));return r?chunkSFVO2LB2_cjs.a(r):n}async function Q(){let n=ar(t.kvStorage("execution-requests"),async(c,g)=>{let A=c.payload,T=(A.enrichedCard??{}).id??A.cardId??"unknown";await b({type:"task-failed",taskName:T,error:g,timestamp:I()});}),r=rr(t.kvStorage("card-runtime")),d=$(),o=await N(),y=await P(),s=new Map,i=new Map,m=[],h=[],x=[],F=new Map,W=new Set,M={async readRuntime(c){return s.get(c)??await r.readRuntime(c)},async writeRuntime(c,g){s.set(c,g);}},ce={async readSourceData(c,g){let A=`${c}/${g}`;return i.has(A)?i.get(A):await d.readSourceData(c,g)},ingestSourceDataStaged(c,g,A,B){return d.ingestSourceDataStaged(c,g,A,B)},async commitSourceData(c,g,A){let B=`${c}/.staged/${A}/${g}`,T=t.blobStorage("sources"),D=await T.read(B);if(D==null){let X=await T.keyRef?.(B);X&&(D=await t.resolveBlob(X));}if(D==null)return false;let re=`${c}/${g}`,Y=D.trim();try{i.set(re,JSON.parse(Y));}catch{i.set(re,Y);}return m.push({cardId:c,outputFile:g,deliveryToken:A}),true},async hasSource(c,g){let A=`${c}/${g}`;return i.has(A)||await d.hasSource(c,g)},async listSources(c){let g=await d.listSources(c),A=[...i.keys()].filter(B=>B.startsWith(`${c}/`)).map(B=>B.slice(`${c}/`.length));return [...new Set([...g,...A])]}},ke=await K(),Ue=chunkG4XXRHL2_cjs.q(ke.graph),{events:Ge,newCursor:de}=await j().readEntriesAfterCursor(ke.lastDrainedJournalId),Z=Ge,ee=chunkG4XXRHL2_cjs.u(Ue,{handlers:{"card-handler":or(e,de,{cardStore:o,cardRuntimeStore:M,fetchedSourcesStore:ce,executionRequestStore:n},(c,g)=>{Z.push({type:"task-completed",taskName:c,data:g,timestamp:I()});},(c,g)=>{h.push({cardId:c,values:g});},c=>{x.push(c);})},onNodeRemoved:c=>{F.delete(c),s.delete(c),W.add(c);}});for(;Z.length>0;){let c=Z;Z=[];for(let g of c)if(g.type==="task-restart"){let A=await o.readCard(g.taskName);A&&F.set(g.taskName,A);}ee.pushAll(c),await ee.waitForHandlers();}let Re=ee.getState();await ee.dispose({wait:true}),await L({lastDrainedJournalId:de,graph:chunkG4XXRHL2_cjs.p(Re)},(await q().readSnapshot(v)).version);for(let{cardId:c,values:g}of h)await y.writeComputedValues(c,g);for(let c of x)await y.writeDataObjects(c);for(let[c,g]of s)await r.writeRuntime(c,g);for(let c of m)await d.commitSourceData(c.cardId,c.outputFile,c.deliveryToken);let he=chunkJJL5VOQZ_cjs.t(p,Re);await y.writeStatusSnapshot(he);let U=[];for(let{cardId:c,values:g}of h)U.push({kind:"computed_values",cardId:c,values:g});for(let c of x)for(let[g,A]of Object.entries(c))U.push({kind:"data_object",key:g,payload:A});for(let[c,g]of F)U.push({kind:"card_refreshed",cardId:c,card:g});for(let c of W)U.push({kind:"card_removed",cardId:c});U.push({kind:"status",status:he}),await f(U);let le=await l().readTaskExecutorRef();if(!le)return;let ze=t.supportsDirectSourceOutput?.(le)===true;await n.dispatchEntriesForJournalId(de,async c=>{if(c.taskKind!=="source-fetch"){u(`[async-process-accumulated-events] unknown taskKind "${c.taskKind}" \u2014 skipping`);return}let g=c.payload,A=g.enrichedCard?.id??"unknown",B=g.enrichedCard?.source_defs??[];for(let T of B){if(!T.outputFile)continue;let D;if(ze){let X=t.genId(),Ye=`${A}/.staged/${X}/${T.outputFile}`,Ce=await Promise.resolve(t.blobStorage("sources").keyRef?.(Ye));Ce&&(D={ref:chunkSFVO2LB2_cjs.a(Ce),deliveryToken:X,outputFile:T.outputFile,cardId:A});}let re=er({cbk:g.callbackToken,rg:e.value,br:chunkSFVO2LB2_cjs.a(e),cid:A,b:T.bindTo,d:T.outputFile,cs:void 0,rqt:g.rqt,...D?{dt:D.deliveryToken}:{}}),Y=await t.dispatchExecution(le,{source_def:T,base_ref:chunkSFVO2LB2_cjs.a(e),callback:a.createCallback(re),...D?{output:D}:{}});Y.dispatched||await b({type:"task-failed",taskName:A,error:Y.error??"dispatch failed",timestamp:I()});}});}async function H(){try{let n=async()=>{let d=await K(),{events:o}=await j().readEntriesAfterCursor(d.lastDrainedJournalId);o.length>0&&await z();},r=await $e(t.lock,Q,n);return C({ran:r!==!1})}catch(n){return w(n)}}async function G(){return S||(S=H().finally(()=>{S=null;}),S)}async function z(){let n=t.processAccumulatedStore();n.enqueueIfAbsent?await n.enqueueIfAbsent({boardRef:chunkSFVO2LB2_cjs.a(e)},`process-accumulated:${chunkSFVO2LB2_cjs.a(e)}`):await n.enqueue({boardRef:chunkSFVO2LB2_cjs.a(e)}),await t.requestProcessAccumulated?.();}async function _(){let n=t.processAccumulatedStore();for(;;){let r=await n.lease({max:64,visibilityMs:1e3});if(r.length<=0)return;for(let d of r)await n.ack(d.id,d.leaseToken);if(r.length<64)return}}function O(){z();}return {async init(n){try{let r=n.params?.cardStoreRef;if(!r)return R("init requires params.cardStoreRef");let d=n.params?.outputsStoreRef;if(!d)return R("init requires params.outputsStoreRef");await V()||await L({lastDrainedJournalId:"",graph:chunkG4XXRHL2_cjs.p(chunkG4XXRHL2_cjs.a(chunkJJL5VOQZ_cjs.u))},null);let o=l();await o.writeCardStoreRef(r),await o.writeOutputsStoreRef(d);let y=n.params?.scratchStoreRef,s=n.params?.archiveStoreRef,i=n.params?.chatStoreRef,m=n.params?.artifactsStoreRef;y&&await o.writeScratchStoreRef(y),s&&await o.writeArchiveStoreRef(s),i&&await o.writeChatStoreRef(i),m&&await o.writeArtifactsStoreRef(m);let h=n.body??{};return h["task-executor-ref"]&&await o.writeTaskExecutorRef(h["task-executor-ref"]),Object.prototype.hasOwnProperty.call(h,"chat-handler-flow")&&await o.writeChatHandlerFlow(h["chat-handler-flow"]),await(await P()).writeStatusSnapshot(chunkJJL5VOQZ_cjs.t(p,chunkG4XXRHL2_cjs.q((await K()).graph))),C()}catch(r){return w(r)}},async status(n){try{let r=await P(),d=await r.readStatusSnapshot();return d||(d=chunkJJL5VOQZ_cjs.t(p,chunkG4XXRHL2_cjs.q((await K()).graph)),await r.writeStatusSnapshot(d)),C(d)}catch(r){return w(r)}},async getCardStoreRef(n){try{let r=await l().readCardStoreRef();return r?C({storeRef:r}):R(`Board at ${e.value} has no card store configured`)}catch(r){return w(r)}},async getOutputsStoreRef(n){try{let r=await l().readOutputsStoreRef();return r?C({storeRef:r}):R(`Board at ${e.value} has no outputs store configured`)}catch(r){return w(r)}},async getScratchStoreRef(n){try{return C({storeRef:await l().readScratchStoreRef()})}catch(r){return w(r)}},async getArchiveStoreRef(n){try{return C({storeRef:await l().readArchiveStoreRef()})}catch(r){return w(r)}},async getChatStoreRef(n){try{return C({storeRef:await l().readChatStoreRef()})}catch(r){return w(r)}},async getArtifactsStoreRef(n){try{return C({storeRef:await l().readArtifactsStoreRef()})}catch(r){return w(r)}},async getConfig(n){try{let r=n.params?.key;if(!r)return R("getConfig requires params.key");let d=l(),o;switch(r){case "task-executor":o=await d.readTaskExecutorRef()??null;break;case "chat-handler-flow":o=await d.readChatHandlerFlow()??null;break;case "card-store-ref":o=await d.readCardStoreRef();break;case "outputs-store-ref":o=await d.readOutputsStoreRef();break;case "scratch-store-ref":o=await d.readScratchStoreRef();break;case "archive-store-ref":o=await d.readArchiveStoreRef();break;case "chat-store-ref":o=await d.readChatStoreRef();break;case "artifacts-store-ref":o=await d.readArtifactsStoreRef();break;default:return R(`getConfig: unknown key "${r}"`)}return C({value:o})}catch(r){return w(r)}},async getOutputsDataObject(n){try{let r=n.params?.key;return r?C(await(await P()).readDataObject(r)):R("getOutputsDataObject requires params.key")}catch(r){return w(r)}},async getAllOutputsDataObjects(n){try{return C(await(await P()).readAllDataObjects())}catch(r){return w(r)}},async getOutputsComputedValues(n){try{let r=n.params?.key;return r?C(await(await P()).readComputedValues(r)):R("getOutputsComputedValues requires params.key")}catch(r){return w(r)}},async getAllOutputsComputedValues(n){try{return C(await(await P()).readAllComputedValues())}catch(r){return w(r)}},async getOutputsFetchedSources(n){try{let r=n.params?.key;if(!r)return R("getOutputsFetchedSources requires params.key");let d=await $().listSources(r),o={};for(let y of d)o[y]=await J(`${r}/${y}`);return C(o)}catch(r){return w(r)}},async getAllOutputsFetchedSources(n){try{let r=$(),d=await t.blobStorage("sources").listKeys(),o=new Set;for(let s of d){let i=s.indexOf("/");i>0&&!s.includes("/.staged/")&&o.add(s.slice(0,i));}let y={};for(let s of o){let i=await r.listSources(s);if(i.length!==0){y[s]={};for(let m of i)y[s][m]=await J(`${s}/${m}`);}}return C(y)}catch(r){return w(r)}},async addCardFiles(n){try{let r=n.params?.cardId;if(!r)return R("addCardFiles requires params.cardId");let d=await N(),o=await d.readCard(r);if(!o)return R(`card "${r}" not found`);let y=n.body,s=Array.isArray(y)?y:y&&typeof y=="object"&&Array.isArray(y.files)?y.files:y!=null?[y]:null;if(!s||s.length===0)return R("addCardFiles requires a file metadata object, array, or body.files array");let i=o.card_data&&typeof o.card_data=="object"&&!Array.isArray(o.card_data)?o.card_data:{},m=Array.isArray(i.files)?i.files:[],h=[...m,...s],x=s.map((W,M)=>({idx:m.length+M,entry:W}));await d.writeCard(r,{...o,card_data:{...i,files:h}});let F=await this.cardRefreshedNotify({params:{cardId:r}});return F.status!=="success"?F:C({cardId:r,files_added:x,notified:!0})}catch(r){return w(r)}},async cardRefreshedNotify(n){try{let r=n.params?.cardId;if(!r)return R("cardRefreshedNotify requires params.cardId");let d=await(await N()).readCard(r);return d?(await f([{kind:"card_refreshed",cardId:r,card:d}]),C({cardId:r,notified:!0})):R(`Card "${r}" not found in board at ${e.value}`)}catch(r){return w(r)}},async removeCard(n){try{let r=n.params?.id;if(!r)return R("removeCard requires params.id");try{await t.kvStorage("card-upsert").delete(r);}catch{}return await b({type:"task-removal",taskName:r,timestamp:I()}),O(),C()}catch(r){return w(r)}},async retrigger(n){try{let r=n.params?.id;return r?(await b({type:"task-restart",taskName:r,timestamp:I()}),O(),C()):R("retrigger requires params.id")}catch(r){return w(r)}},async processAccumulatedEvents(n){return await _(),G()},async upsertCard(n){try{let r=n.params?.cardId,d=n.params?.all,o=!!n.params?.restart;if(!r&&!d)return R("upsertCard requires --card-id <id> or --all");let y=await N(),s=d?(await y.readAllCards()).map(m=>m.id):[r];for(let m of s)if(!await y.readCard(m))return R(`Card "${m}" not found in board at ${e.value}`);let i=t.kvStorage("card-upsert");for(let m of s){let h=await y.readCard(m);if(!h)continue;let x=chunkJJL5VOQZ_cjs.x(h),F=t.hashFn(x),W=await i.read(m),M=W?.taskConfigHash!==F;if(!(!M&&!o)){if(M){let ce=W?.blobRef??await y.readCardKey(m)??m;await b({type:"task-upsert",taskName:m,taskConfig:x,timestamp:I()}),await i.write(m,{blobRef:ce,taskConfigHash:F,updatedAt:I()});}o&&await b({type:"task-restart",taskName:m,timestamp:I()});}}return O(),C()}catch(r){return w(r)}},async taskFailed(n){try{let r=n.params?.token;if(!r)return R("taskFailed requires params.token");let d=n.params?.error??"unknown error",o=ue(r);return o?(await b({type:"task-failed",taskName:o.taskName,error:d,timestamp:I()}),O(),C()):R("Invalid callback token")}catch(r){return w(r)}},async taskProgress(n){try{let r=n.params?.token;if(!r)return R("taskProgress requires params.token");let d=(n.body??{}).update??{},o=ue(r);return o?(await b({type:"task-progress",taskName:o.taskName,update:d,timestamp:I()}),O(),C()):R("Invalid callback token")}catch(r){return w(r)}},async sourceDataFetched(n){try{let r=n.params?.token,d=n.params?.ref;if(!r)return R("sourceDataFetched requires params.token");if(!d)return R("sourceDataFetched requires params.ref");let o=He(r);if(!o)return R("Invalid source token");let y=$(),s=o.dt||t.genId();o.dt||await y.ingestSourceDataStaged(o.cid,o.d,chunkSFVO2LB2_cjs.b(d),s);let i=ue(o.cbk);return i?(await b({type:"task-progress",taskName:i.taskName,update:{bindTo:o.b,outputFile:o.d,fetchedAt:I(),deliveryToken:s,sourceChecksum:o.cs,rqt:o.rqt},timestamp:I()}),O(),C()):R("Invalid callback token embedded in source token")}catch(r){return w(r)}},async sourceDataFetchFailure(n){try{let r=n.params?.token,d=n.params?.reason??"unknown";if(!r)return R("sourceDataFetchFailure requires params.token");let o=He(r);if(!o)return R("Invalid source token");let y=ue(o.cbk);return y?(await b({type:"task-progress",taskName:y.taskName,update:{bindTo:o.b,outputFile:o.d,failure:!0,reason:d,sourceChecksum:o.cs,rqt:o.rqt},timestamp:I()}),O(),C()):R("Invalid callback token embedded in source token")}catch(r){return w(r)}}}}
2
+ exports.a=$e;exports.b=We;exports.c=Le;exports.d=Je;exports.e=cr;exports.f=dr;exports.g=ie;exports.h=Qe;exports.i=gr;exports.j=Ir;//# sourceMappingURL=chunk-J6EGN6S4.cjs.map
3
+ //# sourceMappingURL=chunk-J6EGN6S4.cjs.map
@@ -0,0 +1,3 @@
1
+ import {b as b$1,c as c$1}from'./chunk-XQRNDX4Q.js';import {a,b,c}from'./chunk-BQS3EIEK.js';import {r,a as a$1,p,q,u}from'./chunk-VGT3TRQG.js';import {a as a$3}from'./chunk-JMDHDY6M.js';import {a as a$2}from'./chunk-KBELAKIY.js';function et(e){return typeof e=="string"&&e.trim().length>0}function tt(e,t){if(!e||typeof e!="object")throw new Error(`${t}: adapter.selfRef is required`);if(!et(e.howToRun))throw new Error(`${t}: adapter.selfRef.howToRun is required`);if(!et(e.whatToRun))throw new Error(`${t}: adapter.selfRef.whatToRun is required`)}function rt(e,t){if(!e||typeof e!="object")throw new Error(`${t}: adapter.callbackTransport is required`);if(typeof e.createCallback!="function")throw new Error(`${t}: adapter.callbackTransport.createCallback is required`)}function jt(e,t="callbackTransport"){return {createCallback(n){let o=e();return tt(o,t),{token:n,via:o}}}}function Ve(e){return jt(()=>e,"createStaticExecutionRefCallbackTransport")}function Qt(e){return Ve({meta:"board-live-cards",howToRun:"http:post",whatToRun:a({kind:"http-url",value:String(e||"").trim()})})}function Zt(e){return Ve({meta:"board-live-cards",howToRun:"in-process-loop",whatToRun:a({kind:"in-process-loop",value:String(e||"").trim()})})}function er(e){return Ve({meta:"board-live-cards",howToRun:"local-node",whatToRun:a({kind:"yaml-flow-cli",value:"board-live-cards-cli.js"}),...e?{extra:{notifyChannel:e}}:{}})}function we(e){return typeof e=="object"&&e!==null&&"then"in e&&typeof e.then=="function"}function qe(e,t){return we(e)?e.then(t):t(e)}function ot(e,t){let n={...e};for(let o of t.deleteKeys)delete n[o];return {...n,...t.shallowMerge}}function rr(e,t){return {readValues(o){let i=e(o);return qe(i.listKeys(),u=>{let c=[...u].sort();if(c.length===0)return {version:null,values:{}};let f={},S=null;for(let y of c){let P=i.read(y);we(P)?S=(S??Promise.resolve()).then(async()=>{f[y]=await P;}):f[y]=P;}return S?S.then(()=>({version:t(f),values:f})):{version:t(f),values:f}})},writeValues(o,i,u){let c=e(o),f=null;for(let S of u){let y=c.delete(S);we(y)&&(f=(f??Promise.resolve()).then(()=>y).then(()=>{}));}for(let[S,y]of Object.entries(i)){let P=c.write(S,y);we(P)&&(f=(f??Promise.resolve()).then(()=>P).then(()=>{}));}return f?f.then(()=>t(i)):t(i)}}}function st(e,t){return {readSnapshot(n){return e.readValues(n)},commitSnapshot(n,o){if(o.schemaVersion!==t)throw new Error(`Unsupported snapshot schema version: ${o.schemaVersion}`);return qe(e.readValues(n),i=>{if(i.version!==o.expectedVersion)return {ok:false,reason:"version-mismatch",currentVersion:i.version};let u=ot(i.values,o);return qe(e.writeValues(n,u,o.deleteKeys),c=>({ok:true,newVersion:c}))})}}}function nt(e,t){if(!t)return e;let n=e.findIndex(o=>o.id===t);return n===-1?e:e.slice(n+1)}function at(e){return {readEntriesAfterCursor(t){let n=nt(e.readAllEntries(),t);return n.length===0?{events:[],newCursor:t}:{events:n.map(o=>o.event),newCursor:n[n.length-1].id}},pendingCount(t){return nt(e.readAllEntries(),t).length},appendEvent(t){e.appendEntry({id:e.generateId(),event:t});}}}function nr(e){return {appendEvent(t){return e.append(t).then(()=>{})},async readEntriesAfterCursor(t){let n=await e.readAfter(t||null);return {events:n.entries.map(o=>o.payload),newCursor:n.newCursor??t}}}}function xe(e){return typeof e=="object"&&e!==null&&"then"in e&&typeof e.then=="function"}function G(e,t){return xe(e)?e.then(t):t(e)}function Be(e,t){let n=null;for(let o of e){if(n){n=n.then(()=>t(o)).then(()=>{});continue}let i=t(o);xe(i)&&(n=Promise.resolve(i).then(()=>{}));}return n??void 0}function Kt(e){if(e==null)return null;let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{return t}}function Dt(e,t){let n=e.match(t);return n?n[1]:null}function it(e,t,n){let o={},i=Be(e,u=>{let c=n(u);if(c)return G(t(u),f=>{o[c]=f;})});return xe(i)?i.then(()=>o):o}function ut(e,t){let n=o=>G(e.read(o),i=>i??(e.keyRef?G(e.keyRef(o),u=>u?G(t(u),c=>c??null):null):null));return {readSourceData(o,i){return G(e.read(`${o}/${i}`),Kt)},ingestSourceDataStaged(o,i,u,c){return G(t(u),f=>e.write(`${o}/.staged/${c}/${i}`,f))},commitSourceData(o,i,u){let c=`${o}/.staged/${u}/${i}`;return G(n(c),f=>f==null?false:G(e.write(`${o}/${i}`,f),()=>G(e.remove(c),()=>true)))},hasSource(o,i){return e.exists(`${o}/${i}`)},listSources(o){return G(e.listKeys(`${o}/`),i=>i.filter(u=>!u.includes("/.staged/")).map(u=>u.slice(`${o}/`.length)))}}}function dt(e,t){let n=(o,i)=>{try{let u=i(o);return xe(u)?u.catch(c=>t(o,c instanceof Error?c.message:String(c))):void 0}catch(u){try{return t(o,u instanceof Error?u.message:String(u))}catch{return}}};return {appendEntries(o,i){if(!(!o||i.length===0))return G(e.read(o),u=>e.write(o,[...u??[],...i]))},dispatchEntriesForJournalId(o,i){if(o)return G(e.read(o),u=>{let c=u;if(!(!c||c.length===0))return G(Be(c,f=>n(f,i)),()=>e.delete(o))})}}}function ct(e,t,n){return {readRuntime(o){return G(e.read(t(o)),i=>i??n())},writeRuntime(o,i){return e.write(t(o),i)}}}function lt(e){return {writeComputedValues(t,n){return e.write(`cards/${t}/computed_values`,n)},readComputedValues(t){return e.read(`cards/${t}/computed_values`)},readAllComputedValues(){return G(e.listKeys("cards/"),t=>it(t,n=>e.read(n),n=>Dt(n,/^cards\/([^/]+)\/computed_values$/)))},writeDataObjects(t){return Be(Object.entries(t),([n,o])=>{if(n)return e.write(`data-objects/${n}`,o)})},readDataObject(t){return e.read(`data-objects/${t}`)},readAllDataObjects(){return G(e.listKeys("data-objects/"),t=>it(t,n=>e.read(n),n=>n.slice(13)))},writeStatusSnapshot(t){return e.write("status",t)},readStatusSnapshot(){return e.read("status")}}}function je(e,t){function n(){return e.readIndex()??{}}function o(i,u,c){let f=String(u||"").split(".").filter(Boolean);if(f.length===0)return c&&typeof c=="object"&&!Array.isArray(c)?c:{value:c};let S={...i},y=S;for(let P=0;P<f.length-1;P++){let L=f[P],j=y[L],Y=j&&typeof j=="object"&&!Array.isArray(j)?{...j}:{};y[L]=Y,y=Y;}return y[f[f.length-1]]=c,S}return {readCard(i){let u=n()[i];return !u||!e.cardExists(u.key)?null:e.readCard(u.key)},readCardKey(i){return n()[i]?.key??null},readAllCards(){let i=[];for(let[u,c]of Object.entries(n())){if(!e.cardExists(c.key))continue;let f=e.readCard(c.key);f?i.push(f):t?.(`[card-store] could not read card "${u}" at key "${c.key}"`);}return i},readChecksumIndex(){let i={};for(let[u,c]of Object.entries(n()))i[u]=c.checksum;return i},changedSince(i){let u=n(),c=[];for(let[f,S]of Object.entries(u))i[f]!==S.checksum&&c.push(f);for(let f of Object.keys(i))u[f]||c.push(f);return c},validateUpsert(i,u){let c=n(),f=c[i],S=Object.entries(c).find(([,y])=>y.key===u);return f&&f.key!==u?{ok:false,error:`Card id "${i}" is already mapped to key "${f.key}", cannot remap to "${u}"`}:S&&S[0]!==i?{ok:false,error:`Key "${u}" is already mapped to card id "${S[0]}", cannot remap to "${i}"`}:{ok:true}},writeCard(i,u,c){let f=n(),S=c??f[i]?.key??e.defaultCardKey(i),y=e.writeCard(S,u);f[i]={key:S,checksum:y,updatedAt:new Date().toISOString()},e.writeIndex(f);},patchCard(i,u,c){let f=n(),S=f[i];if(!S||!e.cardExists(S.key))throw new Error(`card "${i}" not found`);let y=e.readCard(S.key);if(!y||typeof y!="object"||Array.isArray(y))throw new Error(`card "${i}" is not patchable`);let P=o(y,u,c),L=e.writeCard(S.key,P);f[i]={key:S.key,checksum:L,updatedAt:new Date().toISOString()},e.writeIndex(f);},removeCard(i){let u=n(),c=u[i];c&&(e.removeCard(c.key),delete u[i],e.writeIndex(u));},readIndex(){return n()}}}function Te(e,t){return ut(e,t)}function gt(e){return at(e)}function kt(e,t){return dt(e,t)}var Ee="v1",le="board/graph",St="board/lastJournalProcessedId";function Lt(e){return `cards/${e}/runtime`}function ht(e){return ct(e,Lt,()=>({_sources:{}}))}function yt(e){return st(e,Ee)}function Ke(e){function t(n){let o=e.read(n);return o==null?null:typeof o=="string"?o:JSON.stringify(o)}return {readTaskExecutorRef(){let n=t("task-executor");if(n?.trim())return c$1(n.trim())},writeTaskExecutorRef(n){e.write("task-executor",b$1(n));},readChatHandlerFlow(){return e.read("chat-handler-flow")},writeChatHandlerFlow(n){e.write("chat-handler-flow",n);},readCardStoreRef(){return t("card-store-ref")},writeCardStoreRef(n){e.write("card-store-ref",n);},readOutputsStoreRef(){return t("outputs-store-ref")},writeOutputsStoreRef(n){e.write("outputs-store-ref",n);},readScratchStoreRef(){return t("scratch-store-ref")},writeScratchStoreRef(n){e.write("scratch-store-ref",n);},readArchiveStoreRef(){return t("archive-store-ref")},writeArchiveStoreRef(n){e.write("archive-store-ref",n);},readChatStoreRef(){return t("chat-store-ref")},writeChatStoreRef(n){e.write("chat-store-ref",n);},readArtifactsStoreRef(){return t("artifacts-store-ref")},writeArtifactsStoreRef(n){e.write("artifacts-store-ref",n);}}}function Ct(e){return lt(e)}function pt(e){return e?{lastRequestedToken:e.lastRequestedToken,lastCompletedToken:e.lastCompletedToken,lastCompletionStatus:e.lastCompletionStatus??(e.lastCompletedToken?"success":"not-started"),queueRequestedToken:e.queueRequestedToken}:{lastCompletionStatus:"not-started"}}function Nt(e){return e?.lastRequestedToken?e.lastCompletedToken!==e.lastRequestedToken:false}function ft(e,t){return e?.lastRequestedToken?Nt(e)?"in-flight":!e.lastCompletedToken||e.lastCompletedToken<t?"dispatch":"idle":"dispatch"}function $t(e,t){return {...e,lastCompletedToken:t,lastCompletionStatus:"success"}}function mt(e,t){return {...e,lastCompletedToken:t,lastCompletionStatus:"failure"}}function Ae(e,t){let n=t.state.tasks,o=t.config.tasks,i=Object.keys(n),u=r(t),c={completed:0,failed:0,in_progress:0,pending:0,blocked:0,unresolved:0},f=new Map;for(let v of u.pending)f.set(v.taskName,v.waitingOn);for(let v of u.unresolved)f.set(v.taskName,v.missingTokens);for(let v of u.blocked)f.set(v.taskName,v.failedTokens);let S=new Map;for(let[v,l]of Object.entries(o))for(let a of l.requires??[]){let d=S.get(a)??[];d.push(v),S.set(a,d);}let y=i.sort().map(v=>{let l=n[v],a=o[v]??{requires:[],provides:[]};l.status==="completed"?c.completed+=1:l.status==="failed"?c.failed+=1:l.status==="in-progress"&&(c.in_progress+=1);let d=a.requires??[],C=a.provides??[],A=Object.keys(l.data??{}).sort(),E=d.filter(M=>t.state.availableOutputs.includes(M)),_=d.filter(M=>!t.state.availableOutputs.includes(M)),F=f.get(v)??_,V=new Set;for(let M of C)for(let $ of S.get(M)??[])$!==v&&V.add($);let N=l.failedAt,D=l.error?{message:l.error,code:"TASK_FAILED",at:N,source:"task-runtime"}:void 0;return {name:v,status:l.status,error:D,requires:d,requires_satisfied:E,requires_missing:_,provides_declared:C,provides_runtime:A,blocked_by:F,unblocks:Array.from(V).sort(),runtime:{attempt_count:l.executionCount??0,restart_count:l.retryCount??0,in_progress_since:l.status==="in-progress"?l.startedAt??null:null,last_transition_at:l.lastUpdated??null,last_completed_at:l.completedAt??null,last_restarted_at:l.startedAt??null,status_age_ms:l.lastUpdated?0:null}}});c.pending=u.pending.length,c.blocked=u.blocked.length,c.unresolved=u.unresolved.length;let P=y.map(v=>({name:v.name,fanOut:v.unblocks.length})).sort((v,l)=>l.fanOut-v.fanOut||v.name.localeCompare(l.name)),L=P.length>0?P[0]:{name:null,fanOut:0},j=new Set;for(let v of Object.values(o))for(let l of v.requires??[])j.add(l);let Y=0;for(let[v,l]of Object.entries(o)){let a=(l.requires??[]).length===0,C=(l.provides??[]).some(A=>(S.get(A)??[]).some(E=>E!==v));a&&!C&&(Y+=1);}return {schema_version:"v1",meta:{board:{path:e}},summary:{card_count:i.length,completed:c.completed,eligible:u.eligible.length,pending:c.pending,blocked:c.blocked,unresolved:c.unresolved,failed:c.failed,in_progress:c.in_progress,orphan_cards:Y,topology:{edge_count:Array.from(j).length,max_fan_out_card:L.name,max_fan_out:L.fanOut}},cards:y}}function Jt(){return new Date().toISOString()}function Rt(e,t,n,o,i,u,c){return async f=>{let S=[],y=n.cardStore.readCard(f.nodeId);if(!y)return "task-initiate-failure";let P=y.id,L=y.card_data??{},j=y.source_defs??[],Y=j.filter(b=>b.optionalForCompletionGating!==true),v=n.cardRuntimeStore.readRuntime(P),l=false,a$1=()=>{l&&(n.cardRuntimeStore.writeRuntime(P,v),l=false);},d=b=>pt(v._sources[b]),C=(b,k)=>{v._sources[b]=pt(k),l=true;},A=f.taskState?.executionCount??0;if(v._lastExecutionCount!==A&&(v._sources={},v._lastExecutionCount=A,l=true),f.update){let b=f.update,k=b.outputFile;if(k){let w=d(k);if(b.failure){let B=b.rqt??w.lastRequestedToken??w.queueRequestedToken;B&&C(k,mt(w,B));}else {let B=b.rqt;if(!w.lastCompletedToken||B>w.lastCompletedToken){let H=typeof b.deliveryToken=="string"?b.deliveryToken:void 0,Z=false;H&&(Z=n.fetchedSourcesStore.commitSourceData(P,k,H)),Z?C(k,$t(w,B)):C(k,mt(w,B));}}a$1();}}let _={};for(let b of j)if(b.outputFile){let k=n.fetchedSourcesStore.readSourceData(P,b.outputFile);k!==null&&(_[b.bindTo]=k);}let F={};for(let[b,k]of Object.entries(f.state??{}))if(k!==null&&typeof k=="object"&&!Array.isArray(k)){let w=k[b];F[b]=w!==void 0?w:k;}else F[b]=k;let V={id:P,card_data:{...L},requires:F,source_defs:j,compute:y.compute};V._sourcesData=_,y.compute&&a$3.runSync(V,{sourcesData:_}),(u??n.outputStore.writeComputedValues.bind(n.outputStore))(P,V.computed_values??{});let N={...y},D=a$3.enrichSourcesSync(Array.isArray(y.source_defs)?y.source_defs:void 0,{card_data:y.card_data,requires:F}),M=e.value;N.source_defs=Array.isArray(D)?D.map(b=>({...b,boardDir:typeof b.boardDir=="string"&&b.boardDir?b.boardDir:M})):D;let $=Jt(),oe=f.update?void 0:$,se=Y.filter(b=>{let k=b.outputFile;if(typeof k!="string"||!k)return true;let w=d(k);oe&&(w={...w,queueRequestedToken:oe},C(k,w));let B=w.queueRequestedToken??w.lastRequestedToken??$,H=ft(w,B);return H==="in-flight"?false:H==="dispatch"});if(a$1(),se.length>0){let b=false,k=$;for(let w of se){let B=w.outputFile;if(typeof B!="string"||!B)continue;let H=d(B),Z=H.queueRequestedToken??$;C(B,{...H,lastRequestedToken:Z}),k=Z,b=true;}return b&&a$1(),b&&(S.push({taskKind:"source-fetch",payload:{boardRef:a(e),enrichedCard:N,callbackToken:f.callbackToken,rqt:k}}),n.executionRequestStore.appendEntries(t,S)),"task-initiated"}if(Y.some(b=>{let k=b.outputFile;if(typeof k!="string"||!k)return false;let w=d(k),B=w.queueRequestedToken??w.lastRequestedToken??$;return ft(w,B)==="in-flight"}))return "task-initiated";let ae=y.provides??[],ie={};for(let{bindTo:b,ref:k}of ae)ie[b]=a$3.resolve(V,k);return (c??n.outputStore.writeDataObjects.bind(n.outputStore))(ie),j.filter(b=>{if(b.optionalForCompletionGating!==true)return false;let k=d(b.outputFile);return !k.lastRequestedToken||!k.lastCompletedToken?true:k.lastCompletedToken<=k.lastRequestedToken}).length>0&&S.push({taskKind:"source-fetch",payload:{boardRef:a(e),enrichedCard:N,callbackToken:f.callbackToken,rqt:$}}),o(f.nodeId,ie),S.length>0&&n.executionRequestStore.appendEntries(t,S),"task-initiated"}}var De={settings:{completion:"manual",refreshStrategy:"data-changed"},tasks:{}};function bt(e){return {[le]:e.graph,[St]:e.lastDrainedJournalId}}function vt(e){let t=e[le],n=e[St];if(!t||typeof t!="object")throw new Error(`State snapshot is missing required key: ${le}`);return {graph:t,lastDrainedJournalId:typeof n=="string"?n:""}}function wt(e){let t=e.requires;return {provides:e.provides?.map(o=>o.bindTo)??[],taskHandlers:["card-handler"],description:e.meta?.title??e.id,...t&&t.length>0?{requires:t}:{}}}function T(e){return e!==void 0?{status:"success",data:e}:{status:"success"}}function R(e){return {status:"fail",error:e}}function I(e){return {status:"error",error:e instanceof Error?e.message:String(e)}}function Mt(e){let t=new TextEncoder().encode(e),n=Array.from(t,o=>String.fromCharCode(o)).join("");return btoa(n).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function Tt(e){let t=e.replace(/-/g,"+").replace(/_/g,"/"),n=t+"=".repeat((4-t.length%4)%4),o=atob(n),i=Uint8Array.from(o,u=>u.charCodeAt(0));return new TextDecoder().decode(i)}function Ie(e){try{let t=JSON.parse(Tt(e));return typeof t?.t=="string"?{taskName:t.t}:null}catch{return null}}function Ht(e){return Mt(JSON.stringify(e))}function xt(e){try{let t=JSON.parse(Tt(e));return typeof t?.cbk=="string"&&typeof t?.cid=="string"&&typeof t?.b=="string"&&typeof t?.d=="string"?t:null}catch{return null}}function U(){return new Date().toISOString()}function Cr(e,t){rt(t.callbackTransport,"createBoardLiveCardsPublic");let n=t.callbackTransport,o=t.onWarn??(()=>{}),i=a(e);function u$1(s){if(s.length!==0)try{let r=t.publishBoardChangeNotifications?.(s);r&&typeof r.catch=="function"&&r.catch(p=>o(`[board-live-cards-public] publishBoardChangeNotifications failed: ${p instanceof Error?p.message:String(p)}`));}catch(r){o(`[board-live-cards-public] publishBoardChangeNotifications failed: ${r instanceof Error?r.message:String(r)}`);}}function c$1(){let s=S().readCardStoreRef();if(!s)throw new Error(`Board at ${e.value} has no card store configured. Run: init --base-ref <ref> --store-ref <b64-ref>`);let r=t.kvStorageForRef(s);return {readIndex(){return r.read("_index")},writeIndex(p){r.write("_index",p);},readCard(p){return r.read(p)},writeCard(p,g){return r.write(p,g),t.hashFn(g)},removeCard(p){r.delete(p);},cardExists(p){return r.read(p)!==null},defaultCardKey(p){return p}}}let f={readValues(s){let r=t.kvStorage("state-snapshot"),p=r.listKeys().sort();if(p.length===0)return {version:null,values:{}};let g={};for(let x of p)g[x]=r.read(x);return {version:t.hashFn(g),values:g}},writeValues(s,r,p){let g=t.kvStorage("state-snapshot");for(let x of p)g.delete(x);for(let[x,O]of Object.entries(r))g.write(x,O);return t.hashFn(r)}},S=()=>Ke(t.kvStorage("config")),y=()=>yt(f),P=()=>gt(t.journalAdapter()),L=()=>je(c$1(),o),j=()=>{let s=S().readOutputsStoreRef();if(!s)throw new Error(`Board at ${e.value} has no outputs store configured. Run: init --outputs-store-ref <b64-ref>`);return Ct(t.kvStorageForRef(s))},Y=()=>{let s=S().readArchiveStoreRef();return s?t.archiveFactoryForRef(s):t.archiveFactory()};function v(){return !!y().readSnapshot(e.value).values[le]}function l(){let s=y().readSnapshot(e.value);if(!s.values[le])throw new Error(`Board not initialized at ${e.value}`);return vt(s.values)}function a$3(s,r){let p=y().commitSnapshot(e.value,{schemaVersion:Ee,expectedVersion:r,commitId:t.genId(),committedAt:U(),deleteKeys:[],shallowMerge:bt(s)});if(!p.ok)throw new Error(`Snapshot commit failed (version mismatch): expected=${r??"null"} current=${p.currentVersion??"null"}`)}function d(s){P().appendEvent(s);}async function C(){let s=(m,h)=>{let q=m.payload,z=(q?.enrichedCard??{}).id??q?.cardId??"unknown";d({type:"task-failed",taskName:z,error:h,timestamp:U()});},r=kt(t.kvStorage("execution-requests"),s),p$1=ht(t.kvStorage("card-runtime")),g=Te(t.blobStorage("sources"),m=>t.resolveBlob(m)),x=new Map,O={readRuntime(m){return x.get(m)??p$1.readRuntime(m)},writeRuntime(m,h){x.set(m,h);}},X=[],K=new Map,Q={readSourceData(m,h){let q=`${m}/${h}`;return K.has(q)?K.get(q):g.readSourceData(m,h)},ingestSourceDataStaged(m,h,q,re){g.ingestSourceDataStaged(m,h,q,re);},commitSourceData(m,h,q){let re=`${m}/.staged/${q}/${h}`,z=t.blobStorage("sources"),ee=z.read(re);if(ee==null){let be=z.keyRef?.(re);be&&(ee=t.resolveBlob(be));}if(ee==null)return false;let Re=`${m}/${h}`,ne=ee.trim();try{K.set(Re,JSON.parse(ne));}catch{K.set(Re,ne);}return X.push({cardId:m,outputFile:h,deliveryToken:q}),true},hasSource(m,h){let q=`${m}/${h}`;return K.has(q)?true:g.hasSource(m,h)},listSources(m){let h=g.listSources(m),q=new Set;for(let z of K.keys())z.startsWith(`${m}/`)&&q.add(z.slice(`${m}/`.length));let re=new Set([...h,...q]);return Array.from(re)}},W={cardStore:L(),cardRuntimeStore:O,fetchedSourcesStore:Q,outputStore:j(),executionRequestStore:r},ue=l(),fe=q(ue.graph),{events:me,newCursor:ge}=P().readEntriesAfterCursor(ue.lastDrainedJournalId),de=[],he=[],_e=[],Fe=new Map,$e=new Set,Vt=(m,h)=>{de.push({type:"task-completed",taskName:m,data:h,timestamp:U()});try{Y().stream("exec-history").append({taskName:m,status:"completed",completedAt:U()});}catch{}},Je=(m,h)=>{d({type:"task-failed",taskName:m,error:h,timestamp:U()});try{Y().stream("exec-history").append({taskName:m,status:"failed",error:h,completedAt:U()});}catch{}},ye=u(fe,{handlers:{"card-handler":Rt(e,ge,W,Vt,Je,(m,h)=>{he.push({cardId:m,values:h});},m=>{_e.push(m);})},onNodeRemoved:m=>{Fe.delete(m),x.delete(m),$e.add(m);}});for(de=me;de.length>0;){let m=de;de=[];for(let h of m)if(h.type==="task-restart"){let q=W.cardStore.readCard(h.taskName);q&&Fe.set(h.taskName,q);}ye.pushAll(m),await ye.waitForHandlers();}let Me=ye.getState();await ye.dispose({wait:true});let qt=y().readSnapshot(e.value).version;a$3({lastDrainedJournalId:ge,graph:p(Me)},qt);for(let{cardId:m,values:h}of he)W.outputStore.writeComputedValues(m,h);for(let m of _e)W.outputStore.writeDataObjects(m);for(let[m,h]of x)p$1.writeRuntime(m,h);for(let{cardId:m,outputFile:h,deliveryToken:q}of X)g.commitSourceData(m,h,q);let Ce;try{Ce=Ae(i,Me),W.outputStore.writeStatusSnapshot(Ce);}catch(m){o(`[board-live-cards-public] status publish failed: ${m instanceof Error?m.message:String(m)}`);}let ke=[];for(let{cardId:m,values:h}of he)ke.push({kind:"computed_values",cardId:m,values:h});for(let m of _e)for(let[h,q]of Object.entries(m))h&&ke.push({kind:"data_object",key:h,payload:q});for(let[m,h]of Fe)ke.push({kind:"card_refreshed",cardId:m,card:h});for(let m of $e)ke.push({kind:"card_removed",cardId:m});Ce!==void 0&&ke.push({kind:"status",status:Ce}),u$1(ke);let He=S().readTaskExecutorRef()??{howToRun:"built-in",whatToRun:a({kind:"built-in",value:"source-cli-task-executor"})},Bt=t.supportsDirectSourceOutput?.(He)===true;r.dispatchEntriesForJournalId(ge,m=>{if(m.taskKind!=="source-fetch"){o(`[process-accumulated-events] unknown taskKind "${m.taskKind}" \u2014 skipping`);return}let h=m.payload,q=h.enrichedCard?.id??"unknown",re=h.enrichedCard?.source_defs??[];for(let z of re){if(!z.outputFile){o(`[dispatch] source "${z.bindTo}" has no outputFile \u2014 skipping`);continue}let ee;if(Bt){let ne=t.genId(),be=`${q}/.staged/${ne}/${z.outputFile}`,Ge=t.blobStorage("sources").keyRef?.(be);Ge?ee={ref:a(Ge),deliveryToken:ne,outputFile:z.outputFile,cardId:q}:o("[dispatch] hosted board-worker requested but sources BlobStorage cannot produce portable refs; falling back to scratch protocol");}let Re=Ht({cbk:h.callbackToken,rg:e.value,br:a(e),cid:q,b:z.bindTo,d:z.outputFile,cs:void 0,rqt:h.rqt,...ee?{dt:ee.deliveryToken}:{}});t.dispatchExecution(He,{source_def:z,base_ref:a(e),callback:n.createCallback(Re),...ee?{output:ee}:{}}).catch(ne=>Je(q,ne instanceof Error?ne.message:String(ne)));}});}function A(){let s=t.processAccumulatedStore();s.enqueueIfAbsent?s.enqueueIfAbsent({boardRef:a(e)},`process-accumulated:${a(e)}`):s.enqueue({boardRef:a(e)}),t.requestProcessAccumulated?.();}function E(){let s=t.processAccumulatedStore();for(;;){let r=s.lease({max:64,visibilityMs:1e3});if(r.length<=0)return;for(let p of r)s.ack(p.id,p.leaseToken);if(r.length<64)return}}async function _(){try{let s=()=>{let p=l(),{events:g}=P().readEntriesAfterCursor(p.lastDrainedJournalId);g.length<=0||A();},r=await c(t.lock,C,s);return T({ran:r!==!1})}catch(s){return I(s)}}function F(){A();}function V(s){try{let r=s.params?.cardStoreRef;if(!r)return R("init requires params.cardStoreRef \u2014 create a card store with card-store-cli and pass its ref here");if(!v()){let W=a$1(De);a$3({lastDrainedJournalId:"",graph:p(W)},null);}let p$1=s.params?.outputsStoreRef;if(!p$1)return R("init requires params.outputsStoreRef \u2014 pass the outputs store ref here");let g=s.params?.scratchStoreRef,x=s.params?.archiveStoreRef,O=s.params?.chatStoreRef,X=s.params?.artifactsStoreRef,K=S();K.writeCardStoreRef(r),K.writeOutputsStoreRef(p$1),g&&K.writeScratchStoreRef(g),x&&K.writeArchiveStoreRef(x),O&&K.writeChatStoreRef(O),X&&K.writeArtifactsStoreRef(X);let Q=s.body??{};Q["task-executor-ref"]&&K.writeTaskExecutorRef(Q["task-executor-ref"]),Object.prototype.hasOwnProperty.call(Q,"chat-handler-flow")&&K.writeChatHandlerFlow(Q["chat-handler-flow"]);try{j().writeStatusSnapshot(Ae(i,q(l().graph)));}catch{}return T()}catch(r){return I(r)}}function N(s){try{let r=j().readStatusSnapshot();if(!r){r=Ae(i,q(l().graph));try{j().writeStatusSnapshot(r);}catch{}}return T(r)}catch(r){return I(r)}}function D(s){try{let r=s.params?.id;if(!r)return R("removeCard requires params.id");try{t.kvStorage("card-upsert").delete(r);}catch{}return d({type:"task-removal",taskName:r,timestamp:U()}),F(),T()}catch(r){return I(r)}}function M(s){try{let r=s.params?.cardId;if(!r)return R("addCardFiles requires params.cardId");let p=a$2(L()).appendFiles({params:{id:r},body:s.body});if(p.status!=="success")return p;let g=$({params:{cardId:r}});return g.status!=="success"?g:T({cardId:r,files_added:p.data.files_added,notified:!0})}catch(r){return I(r)}}function $(s){try{let r=s.params?.cardId;if(!r)return R("cardRefreshedNotify requires params.cardId");let p=L().readCard(r);return p?(u$1([{kind:"card_refreshed",cardId:r,card:p}]),T({cardId:r,notified:!0})):R(`Card "${r}" not found in board at ${e.value}`)}catch(r){return I(r)}}function oe(s){try{let r=s.params?.id;return r?(d({type:"task-restart",taskName:r,timestamp:U()}),F(),T()):R("retrigger requires params.id")}catch(r){return I(r)}}async function se(s){return E(),_()}function Se(s){try{let r=s.params?.cardId,p=s.params?.all,g=!!s.params?.restart;if(!r&&!p)return R("upsertCard requires --card-id <id> or --all");let x=p?L().readAllCards().map(O=>O.id):[r];for(let O of x)if(!L().readCard(O))return R(`Card "${O}" not found in board at ${e.value}`);for(let O of x){let X=L().readCard(O),K=wt(X),Q=t.hashFn(K),W=t.kvStorage("card-upsert"),ue=W.read(O),fe=ue?.taskConfigHash!==Q;if(!(!fe&&!g)){if(fe){let me=ue?.blobRef??L().readCardKey(O)??O;d({type:"task-upsert",taskName:O,taskConfig:K,timestamp:U()}),W.write(O,{blobRef:me,taskConfigHash:Q,updatedAt:U()});}g&&d({type:"task-restart",taskName:O,timestamp:U()});}}return F(),T()}catch(r){return I(r)}}function ae(s){try{let r=s.params?.token;if(!r)return R("taskFailed requires params.token");let p=s.params?.error??"unknown error",g=Ie(r);if(!g)return R("Invalid callback token");d({type:"task-failed",taskName:g.taskName,error:p,timestamp:U()});try{Y().stream("exec-history").append({taskName:g.taskName,status:"failed",error:p,completedAt:U()});}catch{}return F(),T()}catch(r){return I(r)}}function ie(s){try{let r=s.params?.token;if(!r)return R("taskProgress requires params.token");let g=(s.body??{}).update??{},x=Ie(r);return x?(d({type:"task-progress",taskName:x.taskName,update:g,timestamp:U()}),F(),T()):R("Invalid callback token")}catch(r){return I(r)}}function pe(s){try{let r=s.params?.token,p=s.params?.ref;if(!r)return R("sourceDataFetched requires params.token");if(!p)return R("sourceDataFetched requires params.ref");let g=xt(r);if(!g)return R("Invalid source token");let{cbk:x,cid:O,b:X,d:K,cs:Q,rqt:W,dt:ue}=g,fe=Te(t.blobStorage("sources"),he=>t.resolveBlob(he)),me=ue||t.genId();ue||fe.ingestSourceDataStaged(O,K,b(p),me);let ge=Ie(x);if(!ge)return R("Invalid callback token embedded in source token");let de=U();return d({type:"task-progress",taskName:ge.taskName,update:{bindTo:X,outputFile:K,fetchedAt:de,deliveryToken:me,sourceChecksum:Q,rqt:W},timestamp:de}),F(),T()}catch(r){return I(r)}}function b$1(s){try{let r=s.params?.token,p=s.params?.reason??"unknown";if(!r)return R("sourceDataFetchFailure requires params.token");let g=xt(r);if(!g)return R("Invalid source token");let{cbk:x,b:O,d:X,cs:K,rqt:Q}=g,W=Ie(x);return W?(d({type:"task-progress",taskName:W.taskName,update:{bindTo:O,outputFile:X,failure:!0,reason:p,sourceChecksum:K,rqt:Q},timestamp:U()}),F(),T()):R("Invalid callback token embedded in source token")}catch(r){return I(r)}}function k(s){try{let r=S().readCardStoreRef();return r?T({storeRef:r}):R(`Board at ${e.value} has no card store configured`)}catch(r){return I(r)}}function w(s){try{let r=S().readOutputsStoreRef();return r?T({storeRef:r}):R(`Board at ${e.value} has no outputs store configured`)}catch(r){return I(r)}}function B(s){try{let r=S().readScratchStoreRef();return T({storeRef:r})}catch(r){return I(r)}}function H(s){try{let r=S().readArchiveStoreRef();return T({storeRef:r})}catch(r){return I(r)}}function Z(s){try{let r=S().readChatStoreRef();return T({storeRef:r})}catch(r){return I(r)}}function te(s){try{let r=S().readArtifactsStoreRef();return T({storeRef:r})}catch(r){return I(r)}}function Et(s){try{let r=s.params?.key;if(!r)return R("getConfig requires params.key");let p=S(),g;switch(r){case "task-executor":g=p.readTaskExecutorRef()??null;break;case "chat-handler-flow":g=p.readChatHandlerFlow()??null;break;case "card-store-ref":g=p.readCardStoreRef();break;case "outputs-store-ref":g=p.readOutputsStoreRef();break;case "scratch-store-ref":g=p.readScratchStoreRef();break;case "archive-store-ref":g=p.readArchiveStoreRef();break;case "chat-store-ref":g=p.readChatStoreRef();break;case "artifacts-store-ref":g=p.readArtifactsStoreRef();break;default:return R(`getConfig: unknown key "${r}"`)}return T({value:g})}catch(r){return I(r)}}function At(s){try{let r=s.params?.key;if(!r)return R("getOutputsDataObject requires params.key");let p=j().readDataObject(r);return T(p)}catch(r){return I(r)}}function It(s){try{return T(j().readAllDataObjects())}catch(r){return I(r)}}function _t(s){try{let r=s.params?.key;if(!r)return R("getOutputsComputedValues requires params.key");let p=j().readComputedValues(r);return T(p)}catch(r){return I(r)}}function Ft(s){try{return T(j().readAllComputedValues())}catch(r){return I(r)}}function Le(){return Te(t.blobStorage("sources"),s=>t.resolveBlob(s))}function Ne(s){let r=t.blobStorage("sources").keyRef?.(s);return r?a(r):s}function Ot(s){try{let r=s.params?.key;if(!r)return R("getOutputsFetchedSources requires params.key");let p=Le().listSources(r),g={};for(let x of p)g[x]=Ne(`${r}/${x}`);return T(g)}catch(r){return I(r)}}function Pt(s){try{let r=Le(),p=new Set;for(let x of t.blobStorage("sources").listKeys()){let O=x.indexOf("/");O>0&&!x.includes("/.staged/")&&p.add(x.slice(0,O));}let g={};for(let x of p){let O=r.listSources(x);if(O.length>0){g[x]={};for(let X of O)g[x][X]=Ne(`${x}/${X}`);}}return T(g)}catch(r){return I(r)}}return {init:V,status:N,getCardStoreRef:k,getOutputsStoreRef:w,getScratchStoreRef:B,getArchiveStoreRef:H,getChatStoreRef:Z,getArtifactsStoreRef:te,getConfig:Et,getOutputsDataObject:At,getAllOutputsDataObjects:It,getOutputsComputedValues:_t,getAllOutputsComputedValues:Ft,getOutputsFetchedSources:Ot,getAllOutputsFetchedSources:Pt,removeCard:D,addCardFiles:M,cardRefreshedNotify:$,retrigger:oe,processAccumulatedEvents:se,upsertCard:Se,taskFailed:ae,taskProgress:ie,sourceDataFetched:pe,sourceDataFetchFailure:b$1}}function Rr(e,t){let n=()=>Ke(t.kvStorage("config"));function o(){let l=n().readCardStoreRef();if(!l)throw new Error(`Board at ${e.value} has no card store configured. Run: init --base-ref <ref> --store-ref <b64-ref>`);let a=t.kvStorageForRef(l);return {readIndex(){return a.read("_index")},writeIndex(d){a.write("_index",d);},readCard(d){return a.read(d)},writeCard(d,C){return a.write(d,C),t.hashFn(C)},removeCard(d){a.delete(d);},cardExists(d){return a.read(d)!==null},defaultCardKey(d){return d}}}let i=()=>je(o(),t.onWarn??(()=>{}));async function u(l,a){let d=t.validateSchema(a),C=[],A=n().readTaskExecutorRef();if(A&&Array.isArray(a.source_defs))for(let _ of a.source_defs){let F=typeof _.bindTo=="string"?_.bindTo:"(unknown)";try{let V;try{V=await t.invokeExecutor(A,"validate-source-def",{timeout:t.executorTimeouts?.validationMs??1e4,input:JSON.stringify(_)});}catch(D){let M=D;if(V=typeof M?.stdout=="string"?M.stdout:"",!V.trim()){C.push(`source "${F}": executor validate-source-def failed \u2014 ${D instanceof Error?D.message:String(D)}`);continue}}let N=JSON.parse(V.trim());if(!N.ok&&Array.isArray(N.errors))for(let D of N.errors)C.push(`source "${F}": ${D}`);}catch(V){C.push(`source "${F}": executor validate-source-def failed \u2014 ${V instanceof Error?V.message:String(V)}`);}}let E=[...d.errors,...C];return T({cardId:l,isValid:E.length===0,issues:E})}function c(l,a){let d=l.params?.sourceIdx,C=l.params?.outRef;if(d===void 0)return R(`${a} requires params.sourceIdx`);if(!l.body||typeof l.body!="object"||Array.isArray(l.body))return R(`${a} requires card JSON object in body`);let A=l.body,E=A["card-content"]??A,_=A["mock-projections"]??{},F=E.source_defs??[];if(d<0||d>=F.length)return R(`sourceIdx ${d} out of range (card has ${F.length} source(s))`);let V=F[d],N=typeof V.bindTo=="string"?V.bindTo:"source";return {src:V,bindTo:N,outRef:C,mockProjections:_}}async function f(l){try{if(!l.body||typeof l.body!="object"||Array.isArray(l.body))return R("validateCardPreflight requires card JSON object in body");let a=l.body,d=a["card-content"]??a,C=typeof d.id=="string"?d.id:"(unknown)";return await u(C,d)}catch(a){return I(a)}}async function S(l){try{let a=c(l,"probeSourcePreflight");if("status"in a)return a;let d=n().readTaskExecutorRef();if(!d)return R("No task-executor registered for this board");try{let C={...a.src,_projections:a.mockProjections},A=await t.invokeExecutor(d,"probe-source-preflight",{timeout:a.src.timeout??t.executorTimeouts?.preflightMs??6e4,input:JSON.stringify(C)}),E=JSON.parse(A.trim());return E.ok?T({bindTo:a.bindTo,reachable:E.reachable,latencyMs:E.latencyMs,note:E.note}):R(E.error??"Preflight probe failed")}catch{return R("Executor does not support probe-source-preflight")}}catch(a){return I(a)}}async function y(l){try{let a=c(l,"runSourcePreflight");if("status"in a)return a;let d=n().readTaskExecutorRef();if(!d)return R("No task-executor registered for this board");try{let C={...a.src,_projections:a.mockProjections},A=await t.invokeExecutor(d,"run-source-preflight",{timeout:a.src.timeout??t.executorTimeouts?.probeMs??6e4,input:JSON.stringify(C)}),E=JSON.parse(A.trim());if(!E.ok)return T({bindTo:a.bindTo,ok:!1,result:null,issues:[E.error??"Preflight run failed"]});if(a.outRef){let _=b(a.outRef);t.absoluteBlob.write(_.value,JSON.stringify(E.resultValue,null,2));}return T({bindTo:typeof E.bindTo=="string"?E.bindTo:a.bindTo,ok:!0,result:E.resultValue??null,issues:[]})}catch(C){let A=C instanceof Error?C.message:String(C);return T({bindTo:a.bindTo,ok:!1,result:null,issues:[A]})}}catch(a){return I(a)}}async function P(l){try{let a=n().readTaskExecutorRef();if(!a)return R("No task-executor registered for this board");let d=await t.invokeExecutor(a,"describe-capabilities",{timeout:t.executorTimeouts?.describeMs??1e4});return T(JSON.parse(d.trim()))}catch(a){return I(a)}}function L(l){try{let a=l.body;if(!a||!Array.isArray(a.ops))return R("updatesInCardStore requires body.ops array");let d=a.ops,C=i();for(let A of d){let E=A.op,_=A.id;if(!_)return R('op is missing "id"');if(E==="update"){let F=A["card-content"];if(!F)return R(`update op for "${_}" is missing "card-content"`);C.writeCard(_,F);}else return R(`Unknown op type: "${E??"(none)"}"`)}return T()}catch(a){return I(a)}}function j(l){try{let a=l.body;if(!a||!Array.isArray(a.ids))return R("readFromCardStore requires body.ids array");let d=a.ids,C=i(),A=d.map(E=>({id:E,"card-content":C.readCard(E)}));return T({cards:A})}catch(a){return I(a)}}function Y(l){try{if(!l.body||typeof l.body!="object"||Array.isArray(l.body))return R("evalCardCompute requires a JSON object in body");let a=l.body,d=a["card-content"]??a,C=typeof d.id=="string"?d.id:"(unknown)",A=a["mock-fetched-sources"]??{},E=a["mock-requires"]??{},_=d.compute;if(!_||!Array.isArray(_)||_.length===0)return T({cardId:C,ok:!0,computed_values:{},errors:[]});let F={id:C,card_data:d.card_data??{},requires:E,source_defs:d.source_defs,compute:_},V=a$3.runSync(F,{sourcesData:A}),N=V.node.computed_values??{},D=V.errors??[];return T({cardId:C,ok:D.length===0,computed_values:N,errors:D})}catch(a){return I(a)}}async function v(l){try{if(!l.body||typeof l.body!="object"||Array.isArray(l.body))return R("simulateCardCycle requires a JSON object in body");let a=l.body,d=a["card-content"]??a,C=typeof d.id=="string"?d.id:"(unknown)",A=a["mock-fetched-sources"]??{},E=a["mock-requires"]??{},_=await u(C,d),F=_.status==="success"?{isValid:_.data.isValid,issues:_.data.issues}:{isValid:!1,issues:[_.status==="fail"?_.error:"internal error"]},V=d.source_defs??[],N=d.card_data??{},D=[],M=[];if(V.length>0){D=a$3.enrichSourcesSync(V,{card_data:N,requires:E});for(let k of D){let w=k.projections,B=k._projections;if(w&&B){for(let H of Object.keys(w))if(B[H]===void 0){let Z=typeof k.bindTo=="string"?k.bindTo:"(unknown)";M.push({bindTo:Z,key:H,error:`Projection "${H}" resolved to undefined`});}}}}let $=[],oe={...A},se=a["task-executor-ref"],Se=(se?.howToRun&&se?.whatToRun?se:void 0)??n().readTaskExecutorRef();for(let k=0;k<D.length;k++){let w=D[k],B=typeof w.bindTo=="string"?w.bindTo:`source_${k}`;if(!Se){$.push({bindTo:B,skipped:!0,error:"No task executor configured"});continue}try{let H={...w},Z=await t.invokeExecutor(Se,"run-source-preflight",{timeout:w.timeout??t.executorTimeouts?.preflightMs??6e4,input:JSON.stringify(H)}),te=JSON.parse(Z.trim());te.ok&&!Object.prototype.hasOwnProperty.call(A,B)&&Object.prototype.hasOwnProperty.call(te,"resultValue")&&(oe[B]=te.resultValue),$.push({bindTo:B,reachable:te.reachable,latencyMs:te.latencyMs,error:te.ok?void 0:te.error});}catch{$.push({bindTo:B,skipped:!0,error:"Executor does not support run-source-preflight"});}}let ae=d.compute,ie={},pe=[];if(ae&&Array.isArray(ae)&&ae.length>0){let k={id:C,card_data:N,requires:E,source_defs:d.source_defs,compute:ae},w=a$3.runSync(k,{sourcesData:oe});ie=w.node.computed_values??{},pe=w.errors??[];}let b=F.isValid&&M.length===0&&pe.length===0&&$.every(k=>k.reachable!==!1);return T({cardId:C,ok:b,validation:F,source_probes:$,projection_errors:M,fetched_sources:oe,computed_values:ie,compute_errors:pe})}catch(a){return I(a)}}return {validateCardPreflight:f,probeSourcePreflight:S,runSourcePreflight:y,evalCardCompute:Y,simulateCardCycle:v,describeTaskExecutorCapabilities:P,updatesInCardStore:L,readFromCardStore:j}}
2
+ export{rr as a,st as b,nr as c,rt as d,Qt as e,Zt as f,er as g,ut as h,dt as i,ct as j,lt as k,je as l,Ee as m,le as n,Lt as o,pt as p,ft as q,$t as r,mt as s,Ae as t,De as u,bt as v,vt as w,wt as x,Cr as y,Rr as z};//# sourceMappingURL=chunk-JH37NJGP.js.map
3
+ //# sourceMappingURL=chunk-JH37NJGP.js.map
@@ -0,0 +1,3 @@
1
+ 'use strict';var chunkU2N6MCD5_cjs=require('./chunk-U2N6MCD5.cjs'),chunkSFVO2LB2_cjs=require('./chunk-SFVO2LB2.cjs'),chunkG4XXRHL2_cjs=require('./chunk-G4XXRHL2.cjs'),chunkIXZG74EW_cjs=require('./chunk-IXZG74EW.cjs'),chunkYMEIPKLW_cjs=require('./chunk-YMEIPKLW.cjs');function et(e){return typeof e=="string"&&e.trim().length>0}function tt(e,t){if(!e||typeof e!="object")throw new Error(`${t}: adapter.selfRef is required`);if(!et(e.howToRun))throw new Error(`${t}: adapter.selfRef.howToRun is required`);if(!et(e.whatToRun))throw new Error(`${t}: adapter.selfRef.whatToRun is required`)}function rt(e,t){if(!e||typeof e!="object")throw new Error(`${t}: adapter.callbackTransport is required`);if(typeof e.createCallback!="function")throw new Error(`${t}: adapter.callbackTransport.createCallback is required`)}function jt(e,t="callbackTransport"){return {createCallback(n){let o=e();return tt(o,t),{token:n,via:o}}}}function Ve(e){return jt(()=>e,"createStaticExecutionRefCallbackTransport")}function Qt(e){return Ve({meta:"board-live-cards",howToRun:"http:post",whatToRun:chunkSFVO2LB2_cjs.a({kind:"http-url",value:String(e||"").trim()})})}function Zt(e){return Ve({meta:"board-live-cards",howToRun:"in-process-loop",whatToRun:chunkSFVO2LB2_cjs.a({kind:"in-process-loop",value:String(e||"").trim()})})}function er(e){return Ve({meta:"board-live-cards",howToRun:"local-node",whatToRun:chunkSFVO2LB2_cjs.a({kind:"yaml-flow-cli",value:"board-live-cards-cli.js"}),...e?{extra:{notifyChannel:e}}:{}})}function we(e){return typeof e=="object"&&e!==null&&"then"in e&&typeof e.then=="function"}function qe(e,t){return we(e)?e.then(t):t(e)}function ot(e,t){let n={...e};for(let o of t.deleteKeys)delete n[o];return {...n,...t.shallowMerge}}function rr(e,t){return {readValues(o){let i=e(o);return qe(i.listKeys(),u=>{let c=[...u].sort();if(c.length===0)return {version:null,values:{}};let f={},S=null;for(let y of c){let P=i.read(y);we(P)?S=(S??Promise.resolve()).then(async()=>{f[y]=await P;}):f[y]=P;}return S?S.then(()=>({version:t(f),values:f})):{version:t(f),values:f}})},writeValues(o,i,u){let c=e(o),f=null;for(let S of u){let y=c.delete(S);we(y)&&(f=(f??Promise.resolve()).then(()=>y).then(()=>{}));}for(let[S,y]of Object.entries(i)){let P=c.write(S,y);we(P)&&(f=(f??Promise.resolve()).then(()=>P).then(()=>{}));}return f?f.then(()=>t(i)):t(i)}}}function st(e,t){return {readSnapshot(n){return e.readValues(n)},commitSnapshot(n,o){if(o.schemaVersion!==t)throw new Error(`Unsupported snapshot schema version: ${o.schemaVersion}`);return qe(e.readValues(n),i=>{if(i.version!==o.expectedVersion)return {ok:false,reason:"version-mismatch",currentVersion:i.version};let u=ot(i.values,o);return qe(e.writeValues(n,u,o.deleteKeys),c=>({ok:true,newVersion:c}))})}}}function nt(e,t){if(!t)return e;let n=e.findIndex(o=>o.id===t);return n===-1?e:e.slice(n+1)}function at(e){return {readEntriesAfterCursor(t){let n=nt(e.readAllEntries(),t);return n.length===0?{events:[],newCursor:t}:{events:n.map(o=>o.event),newCursor:n[n.length-1].id}},pendingCount(t){return nt(e.readAllEntries(),t).length},appendEvent(t){e.appendEntry({id:e.generateId(),event:t});}}}function nr(e){return {appendEvent(t){return e.append(t).then(()=>{})},async readEntriesAfterCursor(t){let n=await e.readAfter(t||null);return {events:n.entries.map(o=>o.payload),newCursor:n.newCursor??t}}}}function xe(e){return typeof e=="object"&&e!==null&&"then"in e&&typeof e.then=="function"}function G(e,t){return xe(e)?e.then(t):t(e)}function Be(e,t){let n=null;for(let o of e){if(n){n=n.then(()=>t(o)).then(()=>{});continue}let i=t(o);xe(i)&&(n=Promise.resolve(i).then(()=>{}));}return n??void 0}function Kt(e){if(e==null)return null;let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{return t}}function Dt(e,t){let n=e.match(t);return n?n[1]:null}function it(e,t,n){let o={},i=Be(e,u=>{let c=n(u);if(c)return G(t(u),f=>{o[c]=f;})});return xe(i)?i.then(()=>o):o}function ut(e,t){let n=o=>G(e.read(o),i=>i??(e.keyRef?G(e.keyRef(o),u=>u?G(t(u),c=>c??null):null):null));return {readSourceData(o,i){return G(e.read(`${o}/${i}`),Kt)},ingestSourceDataStaged(o,i,u,c){return G(t(u),f=>e.write(`${o}/.staged/${c}/${i}`,f))},commitSourceData(o,i,u){let c=`${o}/.staged/${u}/${i}`;return G(n(c),f=>f==null?false:G(e.write(`${o}/${i}`,f),()=>G(e.remove(c),()=>true)))},hasSource(o,i){return e.exists(`${o}/${i}`)},listSources(o){return G(e.listKeys(`${o}/`),i=>i.filter(u=>!u.includes("/.staged/")).map(u=>u.slice(`${o}/`.length)))}}}function dt(e,t){let n=(o,i)=>{try{let u=i(o);return xe(u)?u.catch(c=>t(o,c instanceof Error?c.message:String(c))):void 0}catch(u){try{return t(o,u instanceof Error?u.message:String(u))}catch{return}}};return {appendEntries(o,i){if(!(!o||i.length===0))return G(e.read(o),u=>e.write(o,[...u??[],...i]))},dispatchEntriesForJournalId(o,i){if(o)return G(e.read(o),u=>{let c=u;if(!(!c||c.length===0))return G(Be(c,f=>n(f,i)),()=>e.delete(o))})}}}function ct(e,t,n){return {readRuntime(o){return G(e.read(t(o)),i=>i??n())},writeRuntime(o,i){return e.write(t(o),i)}}}function lt(e){return {writeComputedValues(t,n){return e.write(`cards/${t}/computed_values`,n)},readComputedValues(t){return e.read(`cards/${t}/computed_values`)},readAllComputedValues(){return G(e.listKeys("cards/"),t=>it(t,n=>e.read(n),n=>Dt(n,/^cards\/([^/]+)\/computed_values$/)))},writeDataObjects(t){return Be(Object.entries(t),([n,o])=>{if(n)return e.write(`data-objects/${n}`,o)})},readDataObject(t){return e.read(`data-objects/${t}`)},readAllDataObjects(){return G(e.listKeys("data-objects/"),t=>it(t,n=>e.read(n),n=>n.slice(13)))},writeStatusSnapshot(t){return e.write("status",t)},readStatusSnapshot(){return e.read("status")}}}function je(e,t){function n(){return e.readIndex()??{}}function o(i,u,c){let f=String(u||"").split(".").filter(Boolean);if(f.length===0)return c&&typeof c=="object"&&!Array.isArray(c)?c:{value:c};let S={...i},y=S;for(let P=0;P<f.length-1;P++){let L=f[P],j=y[L],Y=j&&typeof j=="object"&&!Array.isArray(j)?{...j}:{};y[L]=Y,y=Y;}return y[f[f.length-1]]=c,S}return {readCard(i){let u=n()[i];return !u||!e.cardExists(u.key)?null:e.readCard(u.key)},readCardKey(i){return n()[i]?.key??null},readAllCards(){let i=[];for(let[u,c]of Object.entries(n())){if(!e.cardExists(c.key))continue;let f=e.readCard(c.key);f?i.push(f):t?.(`[card-store] could not read card "${u}" at key "${c.key}"`);}return i},readChecksumIndex(){let i={};for(let[u,c]of Object.entries(n()))i[u]=c.checksum;return i},changedSince(i){let u=n(),c=[];for(let[f,S]of Object.entries(u))i[f]!==S.checksum&&c.push(f);for(let f of Object.keys(i))u[f]||c.push(f);return c},validateUpsert(i,u){let c=n(),f=c[i],S=Object.entries(c).find(([,y])=>y.key===u);return f&&f.key!==u?{ok:false,error:`Card id "${i}" is already mapped to key "${f.key}", cannot remap to "${u}"`}:S&&S[0]!==i?{ok:false,error:`Key "${u}" is already mapped to card id "${S[0]}", cannot remap to "${i}"`}:{ok:true}},writeCard(i,u,c){let f=n(),S=c??f[i]?.key??e.defaultCardKey(i),y=e.writeCard(S,u);f[i]={key:S,checksum:y,updatedAt:new Date().toISOString()},e.writeIndex(f);},patchCard(i,u,c){let f=n(),S=f[i];if(!S||!e.cardExists(S.key))throw new Error(`card "${i}" not found`);let y=e.readCard(S.key);if(!y||typeof y!="object"||Array.isArray(y))throw new Error(`card "${i}" is not patchable`);let P=o(y,u,c),L=e.writeCard(S.key,P);f[i]={key:S.key,checksum:L,updatedAt:new Date().toISOString()},e.writeIndex(f);},removeCard(i){let u=n(),c=u[i];c&&(e.removeCard(c.key),delete u[i],e.writeIndex(u));},readIndex(){return n()}}}function Te(e,t){return ut(e,t)}function gt(e){return at(e)}function kt(e,t){return dt(e,t)}var Ee="v1",le="board/graph",St="board/lastJournalProcessedId";function Lt(e){return `cards/${e}/runtime`}function ht(e){return ct(e,Lt,()=>({_sources:{}}))}function yt(e){return st(e,Ee)}function Ke(e){function t(n){let o=e.read(n);return o==null?null:typeof o=="string"?o:JSON.stringify(o)}return {readTaskExecutorRef(){let n=t("task-executor");if(n?.trim())return chunkU2N6MCD5_cjs.c(n.trim())},writeTaskExecutorRef(n){e.write("task-executor",chunkU2N6MCD5_cjs.b(n));},readChatHandlerFlow(){return e.read("chat-handler-flow")},writeChatHandlerFlow(n){e.write("chat-handler-flow",n);},readCardStoreRef(){return t("card-store-ref")},writeCardStoreRef(n){e.write("card-store-ref",n);},readOutputsStoreRef(){return t("outputs-store-ref")},writeOutputsStoreRef(n){e.write("outputs-store-ref",n);},readScratchStoreRef(){return t("scratch-store-ref")},writeScratchStoreRef(n){e.write("scratch-store-ref",n);},readArchiveStoreRef(){return t("archive-store-ref")},writeArchiveStoreRef(n){e.write("archive-store-ref",n);},readChatStoreRef(){return t("chat-store-ref")},writeChatStoreRef(n){e.write("chat-store-ref",n);},readArtifactsStoreRef(){return t("artifacts-store-ref")},writeArtifactsStoreRef(n){e.write("artifacts-store-ref",n);}}}function Ct(e){return lt(e)}function pt(e){return e?{lastRequestedToken:e.lastRequestedToken,lastCompletedToken:e.lastCompletedToken,lastCompletionStatus:e.lastCompletionStatus??(e.lastCompletedToken?"success":"not-started"),queueRequestedToken:e.queueRequestedToken}:{lastCompletionStatus:"not-started"}}function Nt(e){return e?.lastRequestedToken?e.lastCompletedToken!==e.lastRequestedToken:false}function ft(e,t){return e?.lastRequestedToken?Nt(e)?"in-flight":!e.lastCompletedToken||e.lastCompletedToken<t?"dispatch":"idle":"dispatch"}function $t(e,t){return {...e,lastCompletedToken:t,lastCompletionStatus:"success"}}function mt(e,t){return {...e,lastCompletedToken:t,lastCompletionStatus:"failure"}}function Ae(e,t){let n=t.state.tasks,o=t.config.tasks,i=Object.keys(n),u=chunkG4XXRHL2_cjs.r(t),c={completed:0,failed:0,in_progress:0,pending:0,blocked:0,unresolved:0},f=new Map;for(let v of u.pending)f.set(v.taskName,v.waitingOn);for(let v of u.unresolved)f.set(v.taskName,v.missingTokens);for(let v of u.blocked)f.set(v.taskName,v.failedTokens);let S=new Map;for(let[v,l]of Object.entries(o))for(let a of l.requires??[]){let d=S.get(a)??[];d.push(v),S.set(a,d);}let y=i.sort().map(v=>{let l=n[v],a=o[v]??{requires:[],provides:[]};l.status==="completed"?c.completed+=1:l.status==="failed"?c.failed+=1:l.status==="in-progress"&&(c.in_progress+=1);let d=a.requires??[],C=a.provides??[],A=Object.keys(l.data??{}).sort(),E=d.filter(M=>t.state.availableOutputs.includes(M)),_=d.filter(M=>!t.state.availableOutputs.includes(M)),F=f.get(v)??_,V=new Set;for(let M of C)for(let $ of S.get(M)??[])$!==v&&V.add($);let N=l.failedAt,D=l.error?{message:l.error,code:"TASK_FAILED",at:N,source:"task-runtime"}:void 0;return {name:v,status:l.status,error:D,requires:d,requires_satisfied:E,requires_missing:_,provides_declared:C,provides_runtime:A,blocked_by:F,unblocks:Array.from(V).sort(),runtime:{attempt_count:l.executionCount??0,restart_count:l.retryCount??0,in_progress_since:l.status==="in-progress"?l.startedAt??null:null,last_transition_at:l.lastUpdated??null,last_completed_at:l.completedAt??null,last_restarted_at:l.startedAt??null,status_age_ms:l.lastUpdated?0:null}}});c.pending=u.pending.length,c.blocked=u.blocked.length,c.unresolved=u.unresolved.length;let P=y.map(v=>({name:v.name,fanOut:v.unblocks.length})).sort((v,l)=>l.fanOut-v.fanOut||v.name.localeCompare(l.name)),L=P.length>0?P[0]:{name:null,fanOut:0},j=new Set;for(let v of Object.values(o))for(let l of v.requires??[])j.add(l);let Y=0;for(let[v,l]of Object.entries(o)){let a=(l.requires??[]).length===0,C=(l.provides??[]).some(A=>(S.get(A)??[]).some(E=>E!==v));a&&!C&&(Y+=1);}return {schema_version:"v1",meta:{board:{path:e}},summary:{card_count:i.length,completed:c.completed,eligible:u.eligible.length,pending:c.pending,blocked:c.blocked,unresolved:c.unresolved,failed:c.failed,in_progress:c.in_progress,orphan_cards:Y,topology:{edge_count:Array.from(j).length,max_fan_out_card:L.name,max_fan_out:L.fanOut}},cards:y}}function Jt(){return new Date().toISOString()}function Rt(e,t,n,o,i,u,c){return async f=>{let S=[],y=n.cardStore.readCard(f.nodeId);if(!y)return "task-initiate-failure";let P=y.id,L=y.card_data??{},j=y.source_defs??[],Y=j.filter(b=>b.optionalForCompletionGating!==true),v=n.cardRuntimeStore.readRuntime(P),l=false,a=()=>{l&&(n.cardRuntimeStore.writeRuntime(P,v),l=false);},d=b=>pt(v._sources[b]),C=(b,k)=>{v._sources[b]=pt(k),l=true;},A=f.taskState?.executionCount??0;if(v._lastExecutionCount!==A&&(v._sources={},v._lastExecutionCount=A,l=true),f.update){let b=f.update,k=b.outputFile;if(k){let w=d(k);if(b.failure){let B=b.rqt??w.lastRequestedToken??w.queueRequestedToken;B&&C(k,mt(w,B));}else {let B=b.rqt;if(!w.lastCompletedToken||B>w.lastCompletedToken){let H=typeof b.deliveryToken=="string"?b.deliveryToken:void 0,Z=false;H&&(Z=n.fetchedSourcesStore.commitSourceData(P,k,H)),Z?C(k,$t(w,B)):C(k,mt(w,B));}}a();}}let _={};for(let b of j)if(b.outputFile){let k=n.fetchedSourcesStore.readSourceData(P,b.outputFile);k!==null&&(_[b.bindTo]=k);}let F={};for(let[b,k]of Object.entries(f.state??{}))if(k!==null&&typeof k=="object"&&!Array.isArray(k)){let w=k[b];F[b]=w!==void 0?w:k;}else F[b]=k;let V={id:P,card_data:{...L},requires:F,source_defs:j,compute:y.compute};V._sourcesData=_,y.compute&&chunkIXZG74EW_cjs.a.runSync(V,{sourcesData:_}),(u??n.outputStore.writeComputedValues.bind(n.outputStore))(P,V.computed_values??{});let N={...y},D=chunkIXZG74EW_cjs.a.enrichSourcesSync(Array.isArray(y.source_defs)?y.source_defs:void 0,{card_data:y.card_data,requires:F}),M=e.value;N.source_defs=Array.isArray(D)?D.map(b=>({...b,boardDir:typeof b.boardDir=="string"&&b.boardDir?b.boardDir:M})):D;let $=Jt(),oe=f.update?void 0:$,se=Y.filter(b=>{let k=b.outputFile;if(typeof k!="string"||!k)return true;let w=d(k);oe&&(w={...w,queueRequestedToken:oe},C(k,w));let B=w.queueRequestedToken??w.lastRequestedToken??$,H=ft(w,B);return H==="in-flight"?false:H==="dispatch"});if(a(),se.length>0){let b=false,k=$;for(let w of se){let B=w.outputFile;if(typeof B!="string"||!B)continue;let H=d(B),Z=H.queueRequestedToken??$;C(B,{...H,lastRequestedToken:Z}),k=Z,b=true;}return b&&a(),b&&(S.push({taskKind:"source-fetch",payload:{boardRef:chunkSFVO2LB2_cjs.a(e),enrichedCard:N,callbackToken:f.callbackToken,rqt:k}}),n.executionRequestStore.appendEntries(t,S)),"task-initiated"}if(Y.some(b=>{let k=b.outputFile;if(typeof k!="string"||!k)return false;let w=d(k),B=w.queueRequestedToken??w.lastRequestedToken??$;return ft(w,B)==="in-flight"}))return "task-initiated";let ae=y.provides??[],ie={};for(let{bindTo:b,ref:k}of ae)ie[b]=chunkIXZG74EW_cjs.a.resolve(V,k);return (c??n.outputStore.writeDataObjects.bind(n.outputStore))(ie),j.filter(b=>{if(b.optionalForCompletionGating!==true)return false;let k=d(b.outputFile);return !k.lastRequestedToken||!k.lastCompletedToken?true:k.lastCompletedToken<=k.lastRequestedToken}).length>0&&S.push({taskKind:"source-fetch",payload:{boardRef:chunkSFVO2LB2_cjs.a(e),enrichedCard:N,callbackToken:f.callbackToken,rqt:$}}),o(f.nodeId,ie),S.length>0&&n.executionRequestStore.appendEntries(t,S),"task-initiated"}}var De={settings:{completion:"manual",refreshStrategy:"data-changed"},tasks:{}};function bt(e){return {[le]:e.graph,[St]:e.lastDrainedJournalId}}function vt(e){let t=e[le],n=e[St];if(!t||typeof t!="object")throw new Error(`State snapshot is missing required key: ${le}`);return {graph:t,lastDrainedJournalId:typeof n=="string"?n:""}}function wt(e){let t=e.requires;return {provides:e.provides?.map(o=>o.bindTo)??[],taskHandlers:["card-handler"],description:e.meta?.title??e.id,...t&&t.length>0?{requires:t}:{}}}function T(e){return e!==void 0?{status:"success",data:e}:{status:"success"}}function R(e){return {status:"fail",error:e}}function I(e){return {status:"error",error:e instanceof Error?e.message:String(e)}}function Mt(e){let t=new TextEncoder().encode(e),n=Array.from(t,o=>String.fromCharCode(o)).join("");return btoa(n).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function Tt(e){let t=e.replace(/-/g,"+").replace(/_/g,"/"),n=t+"=".repeat((4-t.length%4)%4),o=atob(n),i=Uint8Array.from(o,u=>u.charCodeAt(0));return new TextDecoder().decode(i)}function Ie(e){try{let t=JSON.parse(Tt(e));return typeof t?.t=="string"?{taskName:t.t}:null}catch{return null}}function Ht(e){return Mt(JSON.stringify(e))}function xt(e){try{let t=JSON.parse(Tt(e));return typeof t?.cbk=="string"&&typeof t?.cid=="string"&&typeof t?.b=="string"&&typeof t?.d=="string"?t:null}catch{return null}}function U(){return new Date().toISOString()}function Cr(e,t){rt(t.callbackTransport,"createBoardLiveCardsPublic");let n=t.callbackTransport,o=t.onWarn??(()=>{}),i=chunkSFVO2LB2_cjs.a(e);function u(s){if(s.length!==0)try{let r=t.publishBoardChangeNotifications?.(s);r&&typeof r.catch=="function"&&r.catch(p=>o(`[board-live-cards-public] publishBoardChangeNotifications failed: ${p instanceof Error?p.message:String(p)}`));}catch(r){o(`[board-live-cards-public] publishBoardChangeNotifications failed: ${r instanceof Error?r.message:String(r)}`);}}function c(){let s=S().readCardStoreRef();if(!s)throw new Error(`Board at ${e.value} has no card store configured. Run: init --base-ref <ref> --store-ref <b64-ref>`);let r=t.kvStorageForRef(s);return {readIndex(){return r.read("_index")},writeIndex(p){r.write("_index",p);},readCard(p){return r.read(p)},writeCard(p,g){return r.write(p,g),t.hashFn(g)},removeCard(p){r.delete(p);},cardExists(p){return r.read(p)!==null},defaultCardKey(p){return p}}}let f={readValues(s){let r=t.kvStorage("state-snapshot"),p=r.listKeys().sort();if(p.length===0)return {version:null,values:{}};let g={};for(let x of p)g[x]=r.read(x);return {version:t.hashFn(g),values:g}},writeValues(s,r,p){let g=t.kvStorage("state-snapshot");for(let x of p)g.delete(x);for(let[x,O]of Object.entries(r))g.write(x,O);return t.hashFn(r)}},S=()=>Ke(t.kvStorage("config")),y=()=>yt(f),P=()=>gt(t.journalAdapter()),L=()=>je(c(),o),j=()=>{let s=S().readOutputsStoreRef();if(!s)throw new Error(`Board at ${e.value} has no outputs store configured. Run: init --outputs-store-ref <b64-ref>`);return Ct(t.kvStorageForRef(s))},Y=()=>{let s=S().readArchiveStoreRef();return s?t.archiveFactoryForRef(s):t.archiveFactory()};function v(){return !!y().readSnapshot(e.value).values[le]}function l(){let s=y().readSnapshot(e.value);if(!s.values[le])throw new Error(`Board not initialized at ${e.value}`);return vt(s.values)}function a(s,r){let p=y().commitSnapshot(e.value,{schemaVersion:Ee,expectedVersion:r,commitId:t.genId(),committedAt:U(),deleteKeys:[],shallowMerge:bt(s)});if(!p.ok)throw new Error(`Snapshot commit failed (version mismatch): expected=${r??"null"} current=${p.currentVersion??"null"}`)}function d(s){P().appendEvent(s);}async function C(){let s=(m,h)=>{let q=m.payload,z=(q?.enrichedCard??{}).id??q?.cardId??"unknown";d({type:"task-failed",taskName:z,error:h,timestamp:U()});},r=kt(t.kvStorage("execution-requests"),s),p=ht(t.kvStorage("card-runtime")),g=Te(t.blobStorage("sources"),m=>t.resolveBlob(m)),x=new Map,O={readRuntime(m){return x.get(m)??p.readRuntime(m)},writeRuntime(m,h){x.set(m,h);}},X=[],K=new Map,Q={readSourceData(m,h){let q=`${m}/${h}`;return K.has(q)?K.get(q):g.readSourceData(m,h)},ingestSourceDataStaged(m,h,q,re){g.ingestSourceDataStaged(m,h,q,re);},commitSourceData(m,h,q){let re=`${m}/.staged/${q}/${h}`,z=t.blobStorage("sources"),ee=z.read(re);if(ee==null){let be=z.keyRef?.(re);be&&(ee=t.resolveBlob(be));}if(ee==null)return false;let Re=`${m}/${h}`,ne=ee.trim();try{K.set(Re,JSON.parse(ne));}catch{K.set(Re,ne);}return X.push({cardId:m,outputFile:h,deliveryToken:q}),true},hasSource(m,h){let q=`${m}/${h}`;return K.has(q)?true:g.hasSource(m,h)},listSources(m){let h=g.listSources(m),q=new Set;for(let z of K.keys())z.startsWith(`${m}/`)&&q.add(z.slice(`${m}/`.length));let re=new Set([...h,...q]);return Array.from(re)}},W={cardStore:L(),cardRuntimeStore:O,fetchedSourcesStore:Q,outputStore:j(),executionRequestStore:r},ue=l(),fe=chunkG4XXRHL2_cjs.q(ue.graph),{events:me,newCursor:ge}=P().readEntriesAfterCursor(ue.lastDrainedJournalId),de=[],he=[],_e=[],Fe=new Map,$e=new Set,Vt=(m,h)=>{de.push({type:"task-completed",taskName:m,data:h,timestamp:U()});try{Y().stream("exec-history").append({taskName:m,status:"completed",completedAt:U()});}catch{}},Je=(m,h)=>{d({type:"task-failed",taskName:m,error:h,timestamp:U()});try{Y().stream("exec-history").append({taskName:m,status:"failed",error:h,completedAt:U()});}catch{}},ye=chunkG4XXRHL2_cjs.u(fe,{handlers:{"card-handler":Rt(e,ge,W,Vt,Je,(m,h)=>{he.push({cardId:m,values:h});},m=>{_e.push(m);})},onNodeRemoved:m=>{Fe.delete(m),x.delete(m),$e.add(m);}});for(de=me;de.length>0;){let m=de;de=[];for(let h of m)if(h.type==="task-restart"){let q=W.cardStore.readCard(h.taskName);q&&Fe.set(h.taskName,q);}ye.pushAll(m),await ye.waitForHandlers();}let Me=ye.getState();await ye.dispose({wait:true});let qt=y().readSnapshot(e.value).version;a({lastDrainedJournalId:ge,graph:chunkG4XXRHL2_cjs.p(Me)},qt);for(let{cardId:m,values:h}of he)W.outputStore.writeComputedValues(m,h);for(let m of _e)W.outputStore.writeDataObjects(m);for(let[m,h]of x)p.writeRuntime(m,h);for(let{cardId:m,outputFile:h,deliveryToken:q}of X)g.commitSourceData(m,h,q);let Ce;try{Ce=Ae(i,Me),W.outputStore.writeStatusSnapshot(Ce);}catch(m){o(`[board-live-cards-public] status publish failed: ${m instanceof Error?m.message:String(m)}`);}let ke=[];for(let{cardId:m,values:h}of he)ke.push({kind:"computed_values",cardId:m,values:h});for(let m of _e)for(let[h,q]of Object.entries(m))h&&ke.push({kind:"data_object",key:h,payload:q});for(let[m,h]of Fe)ke.push({kind:"card_refreshed",cardId:m,card:h});for(let m of $e)ke.push({kind:"card_removed",cardId:m});Ce!==void 0&&ke.push({kind:"status",status:Ce}),u(ke);let He=S().readTaskExecutorRef()??{howToRun:"built-in",whatToRun:chunkSFVO2LB2_cjs.a({kind:"built-in",value:"source-cli-task-executor"})},Bt=t.supportsDirectSourceOutput?.(He)===true;r.dispatchEntriesForJournalId(ge,m=>{if(m.taskKind!=="source-fetch"){o(`[process-accumulated-events] unknown taskKind "${m.taskKind}" \u2014 skipping`);return}let h=m.payload,q=h.enrichedCard?.id??"unknown",re=h.enrichedCard?.source_defs??[];for(let z of re){if(!z.outputFile){o(`[dispatch] source "${z.bindTo}" has no outputFile \u2014 skipping`);continue}let ee;if(Bt){let ne=t.genId(),be=`${q}/.staged/${ne}/${z.outputFile}`,Ge=t.blobStorage("sources").keyRef?.(be);Ge?ee={ref:chunkSFVO2LB2_cjs.a(Ge),deliveryToken:ne,outputFile:z.outputFile,cardId:q}:o("[dispatch] hosted board-worker requested but sources BlobStorage cannot produce portable refs; falling back to scratch protocol");}let Re=Ht({cbk:h.callbackToken,rg:e.value,br:chunkSFVO2LB2_cjs.a(e),cid:q,b:z.bindTo,d:z.outputFile,cs:void 0,rqt:h.rqt,...ee?{dt:ee.deliveryToken}:{}});t.dispatchExecution(He,{source_def:z,base_ref:chunkSFVO2LB2_cjs.a(e),callback:n.createCallback(Re),...ee?{output:ee}:{}}).catch(ne=>Je(q,ne instanceof Error?ne.message:String(ne)));}});}function A(){let s=t.processAccumulatedStore();s.enqueueIfAbsent?s.enqueueIfAbsent({boardRef:chunkSFVO2LB2_cjs.a(e)},`process-accumulated:${chunkSFVO2LB2_cjs.a(e)}`):s.enqueue({boardRef:chunkSFVO2LB2_cjs.a(e)}),t.requestProcessAccumulated?.();}function E(){let s=t.processAccumulatedStore();for(;;){let r=s.lease({max:64,visibilityMs:1e3});if(r.length<=0)return;for(let p of r)s.ack(p.id,p.leaseToken);if(r.length<64)return}}async function _(){try{let s=()=>{let p=l(),{events:g}=P().readEntriesAfterCursor(p.lastDrainedJournalId);g.length<=0||A();},r=await chunkSFVO2LB2_cjs.c(t.lock,C,s);return T({ran:r!==!1})}catch(s){return I(s)}}function F(){A();}function V(s){try{let r=s.params?.cardStoreRef;if(!r)return R("init requires params.cardStoreRef \u2014 create a card store with card-store-cli and pass its ref here");if(!v()){let W=chunkG4XXRHL2_cjs.a(De);a({lastDrainedJournalId:"",graph:chunkG4XXRHL2_cjs.p(W)},null);}let p=s.params?.outputsStoreRef;if(!p)return R("init requires params.outputsStoreRef \u2014 pass the outputs store ref here");let g=s.params?.scratchStoreRef,x=s.params?.archiveStoreRef,O=s.params?.chatStoreRef,X=s.params?.artifactsStoreRef,K=S();K.writeCardStoreRef(r),K.writeOutputsStoreRef(p),g&&K.writeScratchStoreRef(g),x&&K.writeArchiveStoreRef(x),O&&K.writeChatStoreRef(O),X&&K.writeArtifactsStoreRef(X);let Q=s.body??{};Q["task-executor-ref"]&&K.writeTaskExecutorRef(Q["task-executor-ref"]),Object.prototype.hasOwnProperty.call(Q,"chat-handler-flow")&&K.writeChatHandlerFlow(Q["chat-handler-flow"]);try{j().writeStatusSnapshot(Ae(i,chunkG4XXRHL2_cjs.q(l().graph)));}catch{}return T()}catch(r){return I(r)}}function N(s){try{let r=j().readStatusSnapshot();if(!r){r=Ae(i,chunkG4XXRHL2_cjs.q(l().graph));try{j().writeStatusSnapshot(r);}catch{}}return T(r)}catch(r){return I(r)}}function D(s){try{let r=s.params?.id;if(!r)return R("removeCard requires params.id");try{t.kvStorage("card-upsert").delete(r);}catch{}return d({type:"task-removal",taskName:r,timestamp:U()}),F(),T()}catch(r){return I(r)}}function M(s){try{let r=s.params?.cardId;if(!r)return R("addCardFiles requires params.cardId");let p=chunkYMEIPKLW_cjs.a(L()).appendFiles({params:{id:r},body:s.body});if(p.status!=="success")return p;let g=$({params:{cardId:r}});return g.status!=="success"?g:T({cardId:r,files_added:p.data.files_added,notified:!0})}catch(r){return I(r)}}function $(s){try{let r=s.params?.cardId;if(!r)return R("cardRefreshedNotify requires params.cardId");let p=L().readCard(r);return p?(u([{kind:"card_refreshed",cardId:r,card:p}]),T({cardId:r,notified:!0})):R(`Card "${r}" not found in board at ${e.value}`)}catch(r){return I(r)}}function oe(s){try{let r=s.params?.id;return r?(d({type:"task-restart",taskName:r,timestamp:U()}),F(),T()):R("retrigger requires params.id")}catch(r){return I(r)}}async function se(s){return E(),_()}function Se(s){try{let r=s.params?.cardId,p=s.params?.all,g=!!s.params?.restart;if(!r&&!p)return R("upsertCard requires --card-id <id> or --all");let x=p?L().readAllCards().map(O=>O.id):[r];for(let O of x)if(!L().readCard(O))return R(`Card "${O}" not found in board at ${e.value}`);for(let O of x){let X=L().readCard(O),K=wt(X),Q=t.hashFn(K),W=t.kvStorage("card-upsert"),ue=W.read(O),fe=ue?.taskConfigHash!==Q;if(!(!fe&&!g)){if(fe){let me=ue?.blobRef??L().readCardKey(O)??O;d({type:"task-upsert",taskName:O,taskConfig:K,timestamp:U()}),W.write(O,{blobRef:me,taskConfigHash:Q,updatedAt:U()});}g&&d({type:"task-restart",taskName:O,timestamp:U()});}}return F(),T()}catch(r){return I(r)}}function ae(s){try{let r=s.params?.token;if(!r)return R("taskFailed requires params.token");let p=s.params?.error??"unknown error",g=Ie(r);if(!g)return R("Invalid callback token");d({type:"task-failed",taskName:g.taskName,error:p,timestamp:U()});try{Y().stream("exec-history").append({taskName:g.taskName,status:"failed",error:p,completedAt:U()});}catch{}return F(),T()}catch(r){return I(r)}}function ie(s){try{let r=s.params?.token;if(!r)return R("taskProgress requires params.token");let g=(s.body??{}).update??{},x=Ie(r);return x?(d({type:"task-progress",taskName:x.taskName,update:g,timestamp:U()}),F(),T()):R("Invalid callback token")}catch(r){return I(r)}}function pe(s){try{let r=s.params?.token,p=s.params?.ref;if(!r)return R("sourceDataFetched requires params.token");if(!p)return R("sourceDataFetched requires params.ref");let g=xt(r);if(!g)return R("Invalid source token");let{cbk:x,cid:O,b:X,d:K,cs:Q,rqt:W,dt:ue}=g,fe=Te(t.blobStorage("sources"),he=>t.resolveBlob(he)),me=ue||t.genId();ue||fe.ingestSourceDataStaged(O,K,chunkSFVO2LB2_cjs.b(p),me);let ge=Ie(x);if(!ge)return R("Invalid callback token embedded in source token");let de=U();return d({type:"task-progress",taskName:ge.taskName,update:{bindTo:X,outputFile:K,fetchedAt:de,deliveryToken:me,sourceChecksum:Q,rqt:W},timestamp:de}),F(),T()}catch(r){return I(r)}}function b(s){try{let r=s.params?.token,p=s.params?.reason??"unknown";if(!r)return R("sourceDataFetchFailure requires params.token");let g=xt(r);if(!g)return R("Invalid source token");let{cbk:x,b:O,d:X,cs:K,rqt:Q}=g,W=Ie(x);return W?(d({type:"task-progress",taskName:W.taskName,update:{bindTo:O,outputFile:X,failure:!0,reason:p,sourceChecksum:K,rqt:Q},timestamp:U()}),F(),T()):R("Invalid callback token embedded in source token")}catch(r){return I(r)}}function k(s){try{let r=S().readCardStoreRef();return r?T({storeRef:r}):R(`Board at ${e.value} has no card store configured`)}catch(r){return I(r)}}function w(s){try{let r=S().readOutputsStoreRef();return r?T({storeRef:r}):R(`Board at ${e.value} has no outputs store configured`)}catch(r){return I(r)}}function B(s){try{let r=S().readScratchStoreRef();return T({storeRef:r})}catch(r){return I(r)}}function H(s){try{let r=S().readArchiveStoreRef();return T({storeRef:r})}catch(r){return I(r)}}function Z(s){try{let r=S().readChatStoreRef();return T({storeRef:r})}catch(r){return I(r)}}function te(s){try{let r=S().readArtifactsStoreRef();return T({storeRef:r})}catch(r){return I(r)}}function Et(s){try{let r=s.params?.key;if(!r)return R("getConfig requires params.key");let p=S(),g;switch(r){case "task-executor":g=p.readTaskExecutorRef()??null;break;case "chat-handler-flow":g=p.readChatHandlerFlow()??null;break;case "card-store-ref":g=p.readCardStoreRef();break;case "outputs-store-ref":g=p.readOutputsStoreRef();break;case "scratch-store-ref":g=p.readScratchStoreRef();break;case "archive-store-ref":g=p.readArchiveStoreRef();break;case "chat-store-ref":g=p.readChatStoreRef();break;case "artifacts-store-ref":g=p.readArtifactsStoreRef();break;default:return R(`getConfig: unknown key "${r}"`)}return T({value:g})}catch(r){return I(r)}}function At(s){try{let r=s.params?.key;if(!r)return R("getOutputsDataObject requires params.key");let p=j().readDataObject(r);return T(p)}catch(r){return I(r)}}function It(s){try{return T(j().readAllDataObjects())}catch(r){return I(r)}}function _t(s){try{let r=s.params?.key;if(!r)return R("getOutputsComputedValues requires params.key");let p=j().readComputedValues(r);return T(p)}catch(r){return I(r)}}function Ft(s){try{return T(j().readAllComputedValues())}catch(r){return I(r)}}function Le(){return Te(t.blobStorage("sources"),s=>t.resolveBlob(s))}function Ne(s){let r=t.blobStorage("sources").keyRef?.(s);return r?chunkSFVO2LB2_cjs.a(r):s}function Ot(s){try{let r=s.params?.key;if(!r)return R("getOutputsFetchedSources requires params.key");let p=Le().listSources(r),g={};for(let x of p)g[x]=Ne(`${r}/${x}`);return T(g)}catch(r){return I(r)}}function Pt(s){try{let r=Le(),p=new Set;for(let x of t.blobStorage("sources").listKeys()){let O=x.indexOf("/");O>0&&!x.includes("/.staged/")&&p.add(x.slice(0,O));}let g={};for(let x of p){let O=r.listSources(x);if(O.length>0){g[x]={};for(let X of O)g[x][X]=Ne(`${x}/${X}`);}}return T(g)}catch(r){return I(r)}}return {init:V,status:N,getCardStoreRef:k,getOutputsStoreRef:w,getScratchStoreRef:B,getArchiveStoreRef:H,getChatStoreRef:Z,getArtifactsStoreRef:te,getConfig:Et,getOutputsDataObject:At,getAllOutputsDataObjects:It,getOutputsComputedValues:_t,getAllOutputsComputedValues:Ft,getOutputsFetchedSources:Ot,getAllOutputsFetchedSources:Pt,removeCard:D,addCardFiles:M,cardRefreshedNotify:$,retrigger:oe,processAccumulatedEvents:se,upsertCard:Se,taskFailed:ae,taskProgress:ie,sourceDataFetched:pe,sourceDataFetchFailure:b}}function Rr(e,t){let n=()=>Ke(t.kvStorage("config"));function o(){let l=n().readCardStoreRef();if(!l)throw new Error(`Board at ${e.value} has no card store configured. Run: init --base-ref <ref> --store-ref <b64-ref>`);let a=t.kvStorageForRef(l);return {readIndex(){return a.read("_index")},writeIndex(d){a.write("_index",d);},readCard(d){return a.read(d)},writeCard(d,C){return a.write(d,C),t.hashFn(C)},removeCard(d){a.delete(d);},cardExists(d){return a.read(d)!==null},defaultCardKey(d){return d}}}let i=()=>je(o(),t.onWarn??(()=>{}));async function u(l,a){let d=t.validateSchema(a),C=[],A=n().readTaskExecutorRef();if(A&&Array.isArray(a.source_defs))for(let _ of a.source_defs){let F=typeof _.bindTo=="string"?_.bindTo:"(unknown)";try{let V;try{V=await t.invokeExecutor(A,"validate-source-def",{timeout:t.executorTimeouts?.validationMs??1e4,input:JSON.stringify(_)});}catch(D){let M=D;if(V=typeof M?.stdout=="string"?M.stdout:"",!V.trim()){C.push(`source "${F}": executor validate-source-def failed \u2014 ${D instanceof Error?D.message:String(D)}`);continue}}let N=JSON.parse(V.trim());if(!N.ok&&Array.isArray(N.errors))for(let D of N.errors)C.push(`source "${F}": ${D}`);}catch(V){C.push(`source "${F}": executor validate-source-def failed \u2014 ${V instanceof Error?V.message:String(V)}`);}}let E=[...d.errors,...C];return T({cardId:l,isValid:E.length===0,issues:E})}function c(l,a){let d=l.params?.sourceIdx,C=l.params?.outRef;if(d===void 0)return R(`${a} requires params.sourceIdx`);if(!l.body||typeof l.body!="object"||Array.isArray(l.body))return R(`${a} requires card JSON object in body`);let A=l.body,E=A["card-content"]??A,_=A["mock-projections"]??{},F=E.source_defs??[];if(d<0||d>=F.length)return R(`sourceIdx ${d} out of range (card has ${F.length} source(s))`);let V=F[d],N=typeof V.bindTo=="string"?V.bindTo:"source";return {src:V,bindTo:N,outRef:C,mockProjections:_}}async function f(l){try{if(!l.body||typeof l.body!="object"||Array.isArray(l.body))return R("validateCardPreflight requires card JSON object in body");let a=l.body,d=a["card-content"]??a,C=typeof d.id=="string"?d.id:"(unknown)";return await u(C,d)}catch(a){return I(a)}}async function S(l){try{let a=c(l,"probeSourcePreflight");if("status"in a)return a;let d=n().readTaskExecutorRef();if(!d)return R("No task-executor registered for this board");try{let C={...a.src,_projections:a.mockProjections},A=await t.invokeExecutor(d,"probe-source-preflight",{timeout:a.src.timeout??t.executorTimeouts?.preflightMs??6e4,input:JSON.stringify(C)}),E=JSON.parse(A.trim());return E.ok?T({bindTo:a.bindTo,reachable:E.reachable,latencyMs:E.latencyMs,note:E.note}):R(E.error??"Preflight probe failed")}catch{return R("Executor does not support probe-source-preflight")}}catch(a){return I(a)}}async function y(l){try{let a=c(l,"runSourcePreflight");if("status"in a)return a;let d=n().readTaskExecutorRef();if(!d)return R("No task-executor registered for this board");try{let C={...a.src,_projections:a.mockProjections},A=await t.invokeExecutor(d,"run-source-preflight",{timeout:a.src.timeout??t.executorTimeouts?.probeMs??6e4,input:JSON.stringify(C)}),E=JSON.parse(A.trim());if(!E.ok)return T({bindTo:a.bindTo,ok:!1,result:null,issues:[E.error??"Preflight run failed"]});if(a.outRef){let _=chunkSFVO2LB2_cjs.b(a.outRef);t.absoluteBlob.write(_.value,JSON.stringify(E.resultValue,null,2));}return T({bindTo:typeof E.bindTo=="string"?E.bindTo:a.bindTo,ok:!0,result:E.resultValue??null,issues:[]})}catch(C){let A=C instanceof Error?C.message:String(C);return T({bindTo:a.bindTo,ok:!1,result:null,issues:[A]})}}catch(a){return I(a)}}async function P(l){try{let a=n().readTaskExecutorRef();if(!a)return R("No task-executor registered for this board");let d=await t.invokeExecutor(a,"describe-capabilities",{timeout:t.executorTimeouts?.describeMs??1e4});return T(JSON.parse(d.trim()))}catch(a){return I(a)}}function L(l){try{let a=l.body;if(!a||!Array.isArray(a.ops))return R("updatesInCardStore requires body.ops array");let d=a.ops,C=i();for(let A of d){let E=A.op,_=A.id;if(!_)return R('op is missing "id"');if(E==="update"){let F=A["card-content"];if(!F)return R(`update op for "${_}" is missing "card-content"`);C.writeCard(_,F);}else return R(`Unknown op type: "${E??"(none)"}"`)}return T()}catch(a){return I(a)}}function j(l){try{let a=l.body;if(!a||!Array.isArray(a.ids))return R("readFromCardStore requires body.ids array");let d=a.ids,C=i(),A=d.map(E=>({id:E,"card-content":C.readCard(E)}));return T({cards:A})}catch(a){return I(a)}}function Y(l){try{if(!l.body||typeof l.body!="object"||Array.isArray(l.body))return R("evalCardCompute requires a JSON object in body");let a=l.body,d=a["card-content"]??a,C=typeof d.id=="string"?d.id:"(unknown)",A=a["mock-fetched-sources"]??{},E=a["mock-requires"]??{},_=d.compute;if(!_||!Array.isArray(_)||_.length===0)return T({cardId:C,ok:!0,computed_values:{},errors:[]});let F={id:C,card_data:d.card_data??{},requires:E,source_defs:d.source_defs,compute:_},V=chunkIXZG74EW_cjs.a.runSync(F,{sourcesData:A}),N=V.node.computed_values??{},D=V.errors??[];return T({cardId:C,ok:D.length===0,computed_values:N,errors:D})}catch(a){return I(a)}}async function v(l){try{if(!l.body||typeof l.body!="object"||Array.isArray(l.body))return R("simulateCardCycle requires a JSON object in body");let a=l.body,d=a["card-content"]??a,C=typeof d.id=="string"?d.id:"(unknown)",A=a["mock-fetched-sources"]??{},E=a["mock-requires"]??{},_=await u(C,d),F=_.status==="success"?{isValid:_.data.isValid,issues:_.data.issues}:{isValid:!1,issues:[_.status==="fail"?_.error:"internal error"]},V=d.source_defs??[],N=d.card_data??{},D=[],M=[];if(V.length>0){D=chunkIXZG74EW_cjs.a.enrichSourcesSync(V,{card_data:N,requires:E});for(let k of D){let w=k.projections,B=k._projections;if(w&&B){for(let H of Object.keys(w))if(B[H]===void 0){let Z=typeof k.bindTo=="string"?k.bindTo:"(unknown)";M.push({bindTo:Z,key:H,error:`Projection "${H}" resolved to undefined`});}}}}let $=[],oe={...A},se=a["task-executor-ref"],Se=(se?.howToRun&&se?.whatToRun?se:void 0)??n().readTaskExecutorRef();for(let k=0;k<D.length;k++){let w=D[k],B=typeof w.bindTo=="string"?w.bindTo:`source_${k}`;if(!Se){$.push({bindTo:B,skipped:!0,error:"No task executor configured"});continue}try{let H={...w},Z=await t.invokeExecutor(Se,"run-source-preflight",{timeout:w.timeout??t.executorTimeouts?.preflightMs??6e4,input:JSON.stringify(H)}),te=JSON.parse(Z.trim());te.ok&&!Object.prototype.hasOwnProperty.call(A,B)&&Object.prototype.hasOwnProperty.call(te,"resultValue")&&(oe[B]=te.resultValue),$.push({bindTo:B,reachable:te.reachable,latencyMs:te.latencyMs,error:te.ok?void 0:te.error});}catch{$.push({bindTo:B,skipped:!0,error:"Executor does not support run-source-preflight"});}}let ae=d.compute,ie={},pe=[];if(ae&&Array.isArray(ae)&&ae.length>0){let k={id:C,card_data:N,requires:E,source_defs:d.source_defs,compute:ae},w=chunkIXZG74EW_cjs.a.runSync(k,{sourcesData:oe});ie=w.node.computed_values??{},pe=w.errors??[];}let b=F.isValid&&M.length===0&&pe.length===0&&$.every(k=>k.reachable!==!1);return T({cardId:C,ok:b,validation:F,source_probes:$,projection_errors:M,fetched_sources:oe,computed_values:ie,compute_errors:pe})}catch(a){return I(a)}}return {validateCardPreflight:f,probeSourcePreflight:S,runSourcePreflight:y,evalCardCompute:Y,simulateCardCycle:v,describeTaskExecutorCapabilities:P,updatesInCardStore:L,readFromCardStore:j}}
2
+ exports.a=rr;exports.b=st;exports.c=nr;exports.d=rt;exports.e=Qt;exports.f=Zt;exports.g=er;exports.h=ut;exports.i=dt;exports.j=ct;exports.k=lt;exports.l=je;exports.m=Ee;exports.n=le;exports.o=Lt;exports.p=pt;exports.q=ft;exports.r=$t;exports.s=mt;exports.t=Ae;exports.u=De;exports.v=bt;exports.w=vt;exports.x=wt;exports.y=Cr;exports.z=Rr;//# sourceMappingURL=chunk-JJL5VOQZ.cjs.map
3
+ //# sourceMappingURL=chunk-JJL5VOQZ.cjs.map
@@ -0,0 +1,2 @@
1
+ 'use strict';var chunkIXZG74EW_cjs=require('./chunk-IXZG74EW.cjs');function v(s,i){if(s?.status==="success")return Object.prototype.hasOwnProperty.call(s,"data")?s.data:void 0;throw s?.status==="fail"||s?.status==="error"?new Error(s.error||`${i} failed`):new Error(`${i} returned an unexpected response`)}function H(s,i){if(s?.status==="success"&&Object.prototype.hasOwnProperty.call(s,"data"))return s.data;throw s?.status==="success"?new Error(`${i} returned success without data`):s?.status==="fail"||s?.status==="error"?new Error(s.error||`${i} failed`):new Error(`${i} returned an unexpected response`)}function a(s){return s&&typeof s=="object"&&!Array.isArray(s)?s:{}}function b(s){return Array.isArray(s)?s:[]}function z(s,i){if(typeof i!="string"||i.length===0)return;let c=s,u=i;u.startsWith("fetched_sources.")&&(c=a(s).fetched_sources,u=u.slice(16));for(let f of u.split(".")){if(c==null||typeof c!="object")return;c=c[f];}return c}function V(s,i){let c=a(s.view),u=b(c.elements);return {layout:c.layout,features:c.features,elements:u.map((f,_)=>{let I=a(f),k=a(I.data),R=typeof I.visible=="string"?!!z(i,I.visible):true,M=typeof k.bind=="string"?k.bind:void 0,P=typeof k.maxRows=="number"?k.maxRows:void 0,B=M?z(i,M):void 0,F={id:typeof I.id=="string"&&I.id?I.id:`element-${_}`,kind:I.kind,label:I.label,visible:R};return B!==void 0&&(F.resolved=Array.isArray(B)&&typeof P=="number"?B.slice(0,P):B),F})}}function G(s,i){let c=typeof s.id=="string"&&s.id?s.id:"card",u=b(s.provides),f=u.length>0?u:[{bindTo:c,ref:"card_data"}],_={};for(let I of f){let k=a(I),R=typeof k.bindTo=="string"?k.bindTo:"",M=typeof k.ref=="string"?k.ref:"";if(!R||!M)continue;let P=z(i,M);P!==void 0&&(_[R]=P);}return _}function he(s){if(typeof s!="string"||!s.trim())return null;let i=/^(file uploaded|AI generated|AI geneterated):\s*.*?#(\d+)\s*$/i.exec(s.trim());if(!i)return null;let c=Number.parseInt(i[2],10);return !Number.isInteger(c)||c<0?null:c}function ke(s){return {"card-content":s}}function j(s){let i={...s};return delete i.__private,i}function D(s,i){return Object.prototype.hasOwnProperty.call(s,i)}function Re(s){return typeof structuredClone=="function"?structuredClone(s):JSON.parse(JSON.stringify(s))}function ve(s,i){let c=Re(s);if(!i||Object.keys(i).length===0)return c;function u(f,_,I){let k=String(_||"").split(".").filter(Boolean);if(!k.length)return;let R=f;for(let M=0;M<k.length-1;M+=1){let P=k[M];(!R[P]||typeof R[P]!="object")&&(R[P]={}),R=R[P];}R[k[k.length-1]]=I;}if(i.fieldValues!==void 0&&i.fieldValues!==null){let f=null,_=a(c.view),I=b(_.elements);for(let k of I){let R=a(a(k).data);if(typeof R.writeTo=="string"&&R.writeTo){f=R.writeTo;break}}return f?u(c,f,i.fieldValues):typeof i.fieldValues=="object"&&!Array.isArray(i.fieldValues)&&(c.card_data={...a(c.card_data),...i.fieldValues}),c}if(Array.isArray(i._stagedFiles)&&i._stagedFiles.length>0)return c;for(let[f,_]of Object.entries(i))f!=="_stagedFiles"&&(_!==null&&typeof _=="object"&&!Array.isArray(_)&&c[f]!==null&&typeof c[f]=="object"&&!Array.isArray(c[f])?c[f]={...c[f],..._}:c[f]=_);return c}function Q(s){return a(s.__private).visible_controlplane_only===true}async function T(s,i){let c=await U(s.get({params:{id:i}}),"cardStore.get"),u=Array.isArray(c?.cards)?c.cards:[];if(u.length===0)throw new Error(`Card "${i}" not found`);return u[0]}function Ae(s){let{board:i,nonCore:c,cardStore:u,chatStore:f,processAccumulated:_,sourceFetchDone:I,sourceFetchFailed:k,uploadCardFile:R,buildFileDownloadUrl:M,readFetchedSourceJsonByRef:P}=s;function B(e,r){if(typeof e=="function")return e;throw new Error(`${r} is not configured for this MCP facade`)}async function F(){let e=await U(u.get({}),"cardStore.get");return Array.isArray(e.cards)?e.cards.map(r=>a(r)):[]}function X(e){if(Array.isArray(e.bytes))return new Uint8Array(e.bytes.map(r=>Math.max(0,Math.min(255,Number(r)||0))));if(typeof e.text=="string")return new TextEncoder().encode(e.text);if(typeof e.base64=="string"){let r=String(e.base64).replace(/-/g,"+").replace(/_/g,"/"),t=r+"=".repeat((4-r.length%4)%4),n=atob(t);return Uint8Array.from(n,o=>o.charCodeAt(0))}throw new Error("file entry requires bytes, text, or base64")}async function Y(){let e=a(await U(c.describeTaskExecutorCapabilities({}),"describeTaskExecutorCapabilities"));return {version:e.version,commonSourceFields:a(e.commonSourceDefFields),sourceKinds:a(e.sourceKinds)}}async function Z(){let e=a(await U(i.status({}),"status")),r=a(e.summary),t=b(e.cards);return {meta:a(e.meta),summary:{card_count:typeof r.card_count=="number"?r.card_count:0,completed:typeof r.completed=="number"?r.completed:0,eligible:typeof r.eligible=="number"?r.eligible:0,pending:typeof r.pending=="number"?r.pending:0,blocked:typeof r.blocked=="number"?r.blocked:0,in_progress:typeof r.in_progress=="number"?r.in_progress:0,failed:typeof r.failed=="number"?r.failed:0,unresolved:typeof r.unresolved=="number"?r.unresolved:0},cards:t.map(n=>{let o=a(n);return {"card-id":typeof o.name=="string"?o.name:null,status:o.status??null,error:o.error??null,requires:b(o.requires),requires_satisfied:b(o.requires_satisfied),requires_missing:b(o.requires_missing),provides_declared:b(o.provides_declared),provides_runtime:b(o.provides_runtime)}})}}async function ee(e){let r=String(e.cardId||"").trim();if(!r)throw new Error("inspectCardDefinitionAndRuntime requires cardId");let t=a(await U(i.status({}),"status")),o=b(t.cards).map(a).find(p=>p.name===r);if(!o)throw new Error(`card "${r}" not found in board status`);let d=a(await T(u,r));if(Q(d))throw Object.assign(new Error(`card "${r}" not found`),{statusCode:404});let m=j(d),g=b(o.requires_satisfied).filter(p=>typeof p=="string"&&!!p),w=b(o.provides_runtime).filter(p=>typeof p=="string"&&!!p),h=Object.fromEntries(await Promise.all(g.map(async p=>[p,await U(i.getOutputsDataObject({params:{key:p}}),`getOutputsDataObject(${p})`)]))),A=Object.fromEntries(await Promise.all(w.map(async p=>[p,await U(i.getOutputsDataObject({params:{key:p}}),`getOutputsDataObject(${p})`)]))),C=a(await U(i.getOutputsComputedValues({params:{key:r}}),"getOutputsComputedValues")),l=await U(i.getOutputsFetchedSources({params:{key:r}}),"getOutputsFetchedSources"),S=b(d.source_defs).map(a),y={};for(let p of S)typeof p.bindTo=="string"&&typeof p.outputFile=="string"&&(y[p.outputFile]=p.bindTo);let x={};for(let[p,E]of Object.entries(l)){let q=y[p]??p;if(!P||typeof E!="string"){x[q]=null;continue}try{x[q]=P({cardId:r,ref:E});}catch{x[q]=null;}}let L={card_data:a(d.card_data),requires:h,fetched_sources:x,computed_values:C};return {cardId:r,card_status_in_board:o,card_definition_and_static_data:m,refs_for_fetched_source_files:l,runtime_data:{requires:h,provides:A,computed_values:C,rendered_view:V(d,L)}}}async function re(e){let r=String(e.cardId||"").trim();if(!r)throw new Error("inspectChatMessagesOnCards requires cardId");let t=typeof e.turnId=="string"?e.turnId:"",n=e.allTurns===true,o=typeof e.tailTurnsBeforeId=="string"?e.tailTurnsBeforeId:"",d=n?void 0:e.lastUserTurns??(t?void 0:1),m=e.tail,g={...d===void 0?{}:{tailTurns:d},...t?{turnId:t}:{},...n?{allTurns:true}:{},...o?{tailTurnsBeforeId:o}:{}},w=Object.keys(g).length>0?{params:{cardId:r},body:g}:{params:{cardId:r}},h=v(f.readAll(w),"chatStore.readAll"),A=a(await T(u,r)),C=b(a(A.card_data).files).map((y,x)=>({idx:x,stored_name:a(y).stored_name})).filter(y=>typeof y.stored_name=="string"&&y.stored_name.length>0),S=(Array.isArray(h.records)?h.records:[]).map(y=>{let L=a(y.payload),p={...y},E=typeof y?.role=="string"?y.role:typeof L.role=="string"?String(L.role):"",q=typeof y?.text=="string"?y.text:typeof L.text=="string"?String(L.text):"";if(E==="system"){let N=he(q);if(N!==null&&C.some(O=>O.idx===N)){let O=`Retrieve using inspect-file-contents --card-id ${r} --file-idx ${N}`;p.retrieval_hint=O,Object.keys(L).length>0&&typeof y.role!="string"&&(p.payload={...L,retrieval_hint:O});}}return p});return {cardId:r,messages:typeof m=="number"&&m>=0?S.slice(-m):S}}async function te(e){let r=String(e.cardId||"").trim(),t=Number(e.fileIdx);if(!r)throw new Error("inspectFileContents requires cardId");if(!Number.isInteger(t)||t<0)throw new Error("inspectFileContents requires fileIdx to be a non-negative integer");let n=a(await T(u,r)),o=b(a(n.card_data).files).map(a);if(t>=o.length)throw new Error(`attachment index ${t} is out of range for card "${r}"`);let d=o[t],m=typeof d.stored_name=="string"?d.stored_name:null;return {cardId:r,fileIdx:t,downloadUrl:M({cardId:r,fileIdx:t,storedName:m}),...typeof d.name=="string"?{name:d.name}:{},...typeof d.stored_name=="string"?{stored_name:d.stored_name}:{},...typeof d.mime_type=="string"?{mime_type:d.mime_type}:{},...typeof d.size=="number"?{size:d.size}:{},...typeof d.uploaded_at=="string"?{uploaded_at:d.uploaded_at}:{}}}async function $(e){return await c.validateCardPreflight({body:ke(e.candidateCardContent)})}function ne(e){if(!e.mockRequires||typeof e.mockRequires!="object"||Array.isArray(e.mockRequires))throw new Error("preflightMaterializeCandidateCard requires mockRequires");if(!e.mockFetchedSources||typeof e.mockFetchedSources!="object"||Array.isArray(e.mockFetchedSources))throw new Error("preflightMaterializeCandidateCard requires mockFetchedSources");let r=c.evalCardCompute({body:{"card-content":e.candidateCardContent,"mock-requires":e.mockRequires,"mock-fetched-sources":e.mockFetchedSources}});if(r.status!=="success")return r;let t=a(H(r,"evalCardCompute")),n=a(e.candidateCardContent),o={card_data:a(n.card_data),requires:a(e.mockRequires),fetched_sources:a(e.mockFetchedSources),computed_values:a(t.computed_values)};return {status:"success",data:{cardId:typeof t.cardId=="string"?t.cardId:typeof n.id=="string"?n.id:"(unknown)",ok:t.ok===true,computed_values:a(t.computed_values),errors:b(t.errors).map(d=>{let m=a(d);return {bindTo:typeof m.bindTo=="string"?m.bindTo:"",error:typeof m.error=="string"?m.error:""}}),provides_outputs:G(n,o),rendered_view:V(n,o)}}}async function ae(e){return await c.probeSourcePreflight({params:{sourceIdx:e.sourceIdx},body:{"card-content":e.candidateCardContent,"mock-projections":e.mockProjections}})}async function oe(e){return await c.runSourcePreflight({params:{sourceIdx:e.sourceIdx},body:{"card-content":e.candidateCardContent,"mock-projections":e.mockProjections}})}async function se(e){let r=String(e.cardId||"").trim();if(!r)throw new Error("preflightRunSingleSourceInLiveCard requires cardId");if(!e.mockRequires||typeof e.mockRequires!="object"||Array.isArray(e.mockRequires))throw new Error("preflightRunSingleSourceInLiveCard requires mockRequires");let t=a(await T(u,r)),n=b(t.source_defs).filter(d=>!!d&&typeof d=="object"&&!Array.isArray(d)),o={};if(e.sourceIdx>=0&&e.sourceIdx<n.length){let d=n[e.sourceIdx],m=chunkIXZG74EW_cjs.a.enrichSourcesSync([d],{card_data:a(t.card_data),requires:e.mockRequires});Array.isArray(m)&&m.length>0&&(o=a(m[0]._projections));}return await c.runSourcePreflight({params:{sourceIdx:e.sourceIdx},body:{"card-content":t,"mock-requires":e.mockRequires,"mock-projections":o}})}async function ie(e){let r=a(await U(c.simulateCardCycle({body:{"card-content":e.candidateCardContent,"mock-requires":e.mockRequires}}),"simulateCardCycle")),t=a(e.candidateCardContent),n=a(r.validation),o=b(r.source_probes),d=b(r.projection_errors),m=a(r.fetched_sources),g=b(r.compute_errors),w=a(r.computed_values),h={card_data:a(t.card_data),requires:e.mockRequires,fetched_sources:m,computed_values:w},A=[];for(let C of b(n.issues))typeof C=="string"&&C&&A.push(C);for(let C of o){let l=a(C),S=typeof l.bindTo=="string"?l.bindTo:"source",y=typeof l.error=="string"?l.error:"";y&&A.push(`${S}: ${y}`);}for(let C of d){let l=a(C),S=typeof l.bindTo=="string"?l.bindTo:"source",y=typeof l.key=="string"?l.key:"projection",x=typeof l.error=="string"?l.error:"projection failed";A.push(`${S}.${y}: ${x}`);}for(let C of g){let l=a(C),S=typeof l.bindTo=="string"?l.bindTo:"compute",y=typeof l.error=="string"?l.error:"compute failed";A.push(`${S}: ${y}`);}return {status:"success",data:{cardId:typeof r.cardId=="string"?r.cardId:"(unknown)",ok:r.ok===true,issues:A,provides_outputs:G(t,h),rendered_view:V(t,h)}}}async function K(e){let r=String(e.cardId||"").trim();if(!r)throw new Error("manageReadCard requires cardId");let t=await U(u.get({params:{id:r}}),"cardStore.get"),n=Array.isArray(t.cards)?t.cards.map(a):[];if(n.some(Q))throw Object.assign(new Error(`Card "${r}" not found`),{statusCode:404});return n.map(o=>j(o))}async function W(e){let r=await Promise.all(b(e.files).map(async t=>{let n=a(t),o=String(n.file_name??n.fileName??n.name??"").trim(),d=String(n.content_type??n.contentType??"application/octet-stream");if(!o)throw new Error("file entry requires file_name");return await R({cardId:e.cardId,fileName:o,contentType:d,bytes:X(n),suppressChatRecordWrite:true})}));return r.forEach((t,n)=>{let o=a(t.file),d=typeof t.file_idx=="number"&&Number.isInteger(t.file_idx)&&t.file_idx>=0?t.file_idx:n,m=e.role==="assistant"?`AI generated: ${String(o.name||"")} as ${String(o.stored_name||"")} #${d}`:`file uploaded: ${String(o.name||"")} as ${String(o.stored_name||"")} #${d}`;v(f.append({params:{cardId:e.cardId},body:{role:"system",text:m,files:[],turn:e.turn}}),"chatStore.append(system attachment message)");}),r.map(t=>t.file)}async function de(e){let r=String(e.cardId||"").trim(),t=String(e.role||"user").trim()||"user",n=typeof e.turn=="string"?e.turn:"";if(!r)throw new Error("manageAddChatAttachment requires cardId");let o=await W({cardId:r,role:t,turn:n,files:e.files});return {status:"success",data:{cardId:r,turn:n,files:o}}}async function ce(e){let r=String(e.cardId||"").trim(),t=String(e.role||"").trim(),n=typeof e.text=="string"?e.text:"",o=typeof e.turn=="string"?e.turn:"";if(!r)throw new Error("manageAddChatEntryAndAnyAttachments requires cardId");if(!t)throw new Error("manageAddChatEntryAndAnyAttachments requires role");if(t==="assistant"&&o){let g=v(f.readAll({params:{cardId:r},body:{turnId:o}}),"chatStore.readAll(existing turn messages)"),w=Array.isArray(g.records)?g.records.find(h=>h.role==="assistant"&&String(h.turn||"")===o):void 0;if(w)return {status:"success",data:{cardId:r,id:String(w.id),role:t,turn:o,files:Array.isArray(w.files)?w.files:[]}}}let d=await W({cardId:r,role:t,turn:o,files:e.files}),m=v(f.append({params:{cardId:r},body:{role:t,text:n,files:d,turn:o}}),"chatStore.append");return {status:"success",data:{cardId:r,id:String(m.id),role:t,turn:o,files:d}}}async function ue(e){let r=String(e.cardId||"").trim(),t=a(e.patch);if(!r)throw new Error("managePatchCard requires cardId");let n=await K({cardId:r}),o=a(n[0]),m={...ve(o,t),...D(o,"meta")?{meta:o.meta}:{},...D(o,"__private")?{__private:o.__private}:{}},g=await u.set({body:m});v(g,"cardStore.set");let w;try{w=await i.upsertCard({params:{cardId:r,restart:!0}}),v(w,"upsertCard");}catch(A){try{await u.set({body:o});}catch{}throw A}let h=null;try{h=await i.cardRefreshedNotify({params:{cardId:r}}),v(h,"cardRefreshedNotify");}catch{h=null;}return {status:"success",data:{validation:null,card_saved:null,board_result:w,refresh_notify:h}}}async function le(e){let r=String(e.cardId||"").trim(),t=a(e.candidateCardContent),n=j(t);if(!r)throw new Error("manageUpsertCard requires cardId");if(typeof n.id!="string"||!n.id.trim())throw new Error("candidateCardContent.id must be a non-empty string");if(n.id!==r)throw new Error(`candidateCardContent.id must match cardId (${r})`);let o=await $({candidateCardContent:n}),d=a(o),m=a(d.data);if(d.status!=="success"||m.isValid!==true)return {status:"fail",step:"validate",validation:o};let g=null;try{g=await T(u,r);}catch{g=null;}let w=g?a(g):null,h={...n,...w&&D(w,"meta")?{meta:w.meta}:{},...w&&D(w,"__private")?{__private:w.__private}:{}},A=await u.set({body:h});v(A,"cardStore.set");let C;try{C=await i.upsertCard({params:{cardId:r,restart:!0}}),v(C,"upsertCard");}catch(S){try{g&&await u.set({body:g});}catch{}throw S}let l=null;try{l=await i.cardRefreshedNotify({params:{cardId:r}}),v(l,"cardRefreshedNotify");}catch{l=null;}return {status:"success",data:{validation:o,card_saved:null,board_result:C,refresh_notify:l}}}async function me(e){let r=String(e.cardId||"").trim();if(!r)throw new Error("manageRemoveCard requires cardId");let t=await i.removeCard({params:{id:r}});v(t,"removeCard");let n=await u.del({params:{id:r}});return v(n,"cardStore.del"),{status:"success",data:{board_result:t,store_result:n}}}async function pe(e){let r=String(e.cardId||"").trim();if(!r)throw new Error("adminReadCard requires cardId");let t=await U(u.get({params:{id:r}}),"cardStore.get");return Array.isArray(t.cards)?t.cards.map(n=>a(n)):[]}async function fe(e){let r=String(e.cardId||"").trim(),t=a(e.candidateCardContent),n=j(t);if(!r)throw new Error("adminUpsertCard requires cardId");if(typeof n.id!="string"||!n.id.trim())throw new Error("candidateCardContent.id must be a non-empty string");if(n.id!==r)throw new Error(`candidateCardContent.id must match cardId (${r})`);let o=await $({candidateCardContent:n}),d=a(o),m=a(d.data);if(d.status!=="success"||m.isValid!==true)return {status:"fail",step:"validate",validation:o};let g=null;try{g=await T(u,r);}catch{g=null;}let w=g?a(a(g).__private):{},h={...n,__private:{...w,visible_controlplane_only:true}},A=await u.set({body:h});v(A,"cardStore.set");let C;try{C=await i.upsertCard({params:{cardId:r,restart:!0}}),v(C,"upsertCard");}catch(S){try{g&&await u.set({body:g});}catch{}throw S}let l=null;try{l=await i.cardRefreshedNotify({params:{cardId:r}}),v(l,"cardRefreshedNotify");}catch{l=null;}return {status:"success",data:{validation:o,card_saved:null,board_result:C,refresh_notify:l}}}function ge(e){let r=String(e.cardId||"").trim();if(!r)throw new Error("getChatProcessing requires cardId");let t=H(f.isProcessing({params:{cardId:r}}),"chatStore.isProcessing");return {cardId:r,active:!!t.active}}function we(e){let r=String(e.cardId||"").trim();if(!r)throw new Error("setChatProcessing requires cardId");if(typeof e.active!="boolean")throw new Error("setChatProcessing requires boolean active");return v(f.setProcessing({params:{cardId:r},body:{active:e.active}}),"chatStore.setProcessing"),{cardId:r,active:e.active}}async function Ce(){let e=await B(_,"webhook.process-accumulated")();return e?.status==="fail"||e?.status==="error"?e:{status:"success",data:{runtime_result:Object.prototype.hasOwnProperty.call(e??{},"data")?e.data??null:null}}}async function ye(e){let r=String(e.token||"").trim(),t=String(e.ref||"").trim();if(!r)throw new Error("webhookSourceFetchDone requires token");if(!t)throw new Error("webhookSourceFetchDone requires ref");let n=await B(I,"webhook.source-fetch-done")({token:r,ref:t});return n?.status==="fail"||n?.status==="error"?n:{status:"success",data:{token:r,ref:t,runtime_result:Object.prototype.hasOwnProperty.call(n??{},"data")?n.data??null:null}}}async function be(e){let r=String(e.token||"").trim(),t=String(e.reason||"").trim();if(!r)throw new Error("webhookSourceFetchFailed requires token");if(!t)throw new Error("webhookSourceFetchFailed requires reason");let n=await B(k,"webhook.source-fetch-failed")({token:r,reason:t});return n?.status==="fail"||n?.status==="error"?n:{status:"success",data:{token:r,reason:t,runtime_result:Object.prototype.hasOwnProperty.call(n??{},"data")?n.data??null:null}}}return {listRuntimeCards:F,discoverSourceKinds:Y,inspectBoardRuntimeStatus:Z,inspectCardDefinitionAndRuntime:ee,inspectChatMessagesOnCards:re,inspectFileContents:te,preflightValidateCandidateCardDefinition:$,preflightMaterializeCandidateCard:ne,preflightProbeSingleSourceInCandidateCard:ae,preflightRunSingleSourceInCandidateCard:oe,preflightRunSingleSourceInLiveCard:se,preflightRunOneCycleWithCandidateCard:ie,manageReadCard:K,manageAddChatAttachment:de,manageAddChatEntryAndAnyAttachments:ce,managePatchCard:ue,manageUpsertCard:le,manageRemoveCard:me,adminReadCard:pe,adminUpsertCard:fe,getChatProcessing:ge,setChatProcessing:we,webhookProcessAccumulated:Ce,webhookSourceFetchDone:ye,webhookSourceFetchFailed:be}}async function U(s,i){return v(await s,i)}exports.a=Ae;//# sourceMappingURL=chunk-PBOQ4HYB.cjs.map
2
+ //# sourceMappingURL=chunk-PBOQ4HYB.cjs.map
@@ -1,3 +1,3 @@
1
- import {b,a}from'./chunk-HEEDJEKM.js';import {a as a$1,d,x,t,u,n,w as w$1,v,k,b as b$3,c as c$1,h,i,j,o,s,r,q as q$1,p as p$1}from'./chunk-N6P2JW4W.js';import {b as b$1,c}from'./chunk-XQRNDX4Q.js';import {a as a$2,b as b$2}from'./chunk-BQS3EIEK.js';import {q,p,a as a$3,u as u$1}from'./chunk-VGT3TRQG.js';import {a as a$4}from'./chunk-JMDHDY6M.js';async function $e(e,t,a){let u=await e.tryAcquire();if(!u)return false;try{await t();}finally{await u();}return await a?.(),true}function We(e){return b(e)}function Le(e,t){return {async readIndex(){return await e.read("_index")},writeIndex(a){return e.write("_index",a)},async readCard(a){return await e.read(a)},async writeCard(a,u){return await e.write(a,u),t(u)},removeCard(a){return e.delete(a)},async cardExists(a){return await e.read(a)!==null},defaultCardKey(a){return a}}}function Je(e,t){async function a$1(){return await e.readIndex()??{}}return {async readCard(u){let p=(await a$1())[u];return !p||!await e.cardExists(p.key)?null:await e.readCard(p.key)},async readCardKey(u){return (await a$1())[u]?.key??null},async readAllCards(){let u=[];for(let[p,S]of Object.entries(await a$1())){if(!await e.cardExists(S.key))continue;let f=await e.readCard(S.key);f?u.push(f):t?.(`[card-store] could not read card "${p}" at key "${S.key}"`);}return u},async readChecksumIndex(){let u={};for(let[p,S]of Object.entries(await a$1()))u[p]=S.checksum;return u},async changedSince(u){let p=await a$1(),S=[];for(let[f,l]of Object.entries(p))u[f]!==l.checksum&&S.push(f);for(let f of Object.keys(u))p[f]||S.push(f);return S},async validateUpsert(u,p){let S=await a$1(),f=S[u],l=Object.entries(S).find(([,k])=>k.key===p);return f&&f.key!==p?{ok:false,error:`Card id "${u}" is already mapped to key "${f.key}", cannot remap to "${p}"`}:l&&l[0]!==u?{ok:false,error:`Key "${p}" is already mapped to card id "${l[0]}", cannot remap to "${u}"`}:{ok:true}},async writeCard(u,p,S){let f=await a$1(),l=S??f[u]?.key??e.defaultCardKey(u),k=await e.writeCard(l,p);f[u]={key:l,checksum:k,updatedAt:new Date().toISOString()},await e.writeIndex(f);},async patchCard(u,p,S){let f=await a$1(),l=f[u];if(!l||!await e.cardExists(l.key))throw new Error(`card "${u}" not found`);let k=await e.readCard(l.key);if(!k||typeof k!="object"||Array.isArray(k))throw new Error(`card "${u}" is not patchable`);let v=String(p||"").split(".").filter(Boolean),q=a(k,v,S),P=await e.writeCard(l.key,q);f[u]={key:l.key,checksum:P,updatedAt:new Date().toISOString()},await e.writeIndex(f);},async removeCard(u){let p=await a$1(),S=p[u];S&&(await e.removeCard(S.key),delete p[u],await e.writeIndex(p));},readIndex(){return a$1()}}}function cr(e,t){return a$1(e,t)}function dr(e,t,a){return {blob:e,kv:t,journal:a}}function Se(e){return {messageId:e.id,enqueuedAt:e.enqueuedAt,attempt:e.attempt,request:e.body}}function Xe(e){return typeof e=="string"?e.startsWith("b64:")?b$2(e).value:e:e.value}function ie(e){return {async enqueueRequest(t){return (await e.enqueue(t)).id},async leaseRequests(t){return (await e.lease(t)).map(a=>({...Se(a),leaseToken:a.leaseToken,leaseExpiresAt:a.leaseExpiresAt}))},ackRequest(t,a){return e.ack(t,a)},nackRequest(t,a,u){return e.nack(t,a,u)},async peekActive(){return (await e.peekActive()).map(Se)},async peekDeadLetter(){return (await e.peekDeadLetter()).map(t=>({...Se(t),reason:t.reason}))}}}function Qe(e){async function t(a){let u=await e.read(a);return u==null?null:typeof u=="string"?u:JSON.stringify(u)}return {async readTaskExecutorRef(){let a=await t("task-executor");if(a?.trim())return c(a.trim())},writeTaskExecutorRef(a){return e.write("task-executor",b$1(a))},readChatHandlerFlow(){return e.read("chat-handler-flow")},writeChatHandlerFlow(a){return e.write("chat-handler-flow",a)},readCardStoreRef(){return t("card-store-ref")},writeCardStoreRef(a){return e.write("card-store-ref",a)},readOutputsStoreRef(){return t("outputs-store-ref")},writeOutputsStoreRef(a){return e.write("outputs-store-ref",a)},readScratchStoreRef(){return t("scratch-store-ref")},writeScratchStoreRef(a){return e.write("scratch-store-ref",a)},readArchiveStoreRef(){return t("archive-store-ref")},writeArchiveStoreRef(a){return e.write("archive-store-ref",a)},readChatStoreRef(){return t("chat-store-ref")},writeChatStoreRef(a){return e.write("chat-store-ref",a)},readArtifactsStoreRef(){return t("artifacts-store-ref")},writeArtifactsStoreRef(a){return e.write("artifacts-store-ref",a)}}}function gr(e){let t,a,u,p=e.callbackTransport,S=e.resolveBlob??(async l=>{let k=await e.blobStorage("").read(l.value);if(k==null)throw new Error(`Blob not found for ref ${l.kind}:${l.value}`);return k});async function f(l,k){if(l.howToRun==="queue-storage"){let v=e.boardWorkerStore??t??(e.queueStorage?ie(e.queueStorage):void 0);return v?(t||(t=v),await v.enqueueRequest({boardId:typeof l.extra?.boardId=="string"?l.extra.boardId:e.boardId,ref:l,args:k}),{dispatched:true}):{dispatched:false,error:"queue-storage dispatch requires queueStorage or boardWorkerStore"}}if(l.howToRun==="http:post"){let v=e.fetch??globalThis.fetch;if(!v)return {dispatched:false,error:"http:post dispatch requires fetch support"};let q=await v(Xe(l.whatToRun),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...k,...l.extra?{extra:l.extra}:{}})});if(!q.ok){let P=await q.text().catch(()=>"");return {dispatched:false,error:`HTTP ${q.status}: ${P}`}}return {dispatched:true}}return {dispatched:false,error:`Unsupported hosted async transport "${l.howToRun}"`}}return {kvStorage:e.kvStorage,kvStorageForRef:e.kvStorageForRef,blobStorage:e.blobStorage,scratchStorage:e.scratchStorage,scratchStorageForRef:e.scratchStorageForRef,archiveFactory:e.archiveFactory,archiveFactoryForRef:e.archiveFactoryForRef,journalStorage:e.journalStorage,boardWorkerStore:()=>{if(!t)if(e.boardWorkerStore)t=e.boardWorkerStore;else if(e.queueStorage)t=ie(e.queueStorage);else throw new Error("Hosted async board adapter requires queueStorage or boardWorkerStore");return t},chatAgentStore:()=>{if(!a)if(e.chatAgentStore)a=e.chatAgentStore;else if(e.chatAgentQueueStorage)a=ie(e.chatAgentQueueStorage);else if(e.boardWorkerStore)a=e.boardWorkerStore;else if(e.queueStorage)a=ie(e.queueStorage);else throw new Error("Hosted async board adapter requires chatAgentStore, chatAgentQueueStorage, queueStorage, or boardWorkerStore");return a},processAccumulatedStore:()=>{if(u||(u=e.processAccumulatedStore??e.processAccumulatedQueueStorage??e.queueStorage),!u)throw new Error("Hosted async board adapter requires processAccumulatedStore, processAccumulatedQueueStorage, or queueStorage");return u},lock:e.lock,get callbackTransport(){return p},set callbackTransport(l){p=l;},dispatchExecution:(l,k)=>e.dispatchExecution?.(l,k)??f(l,k),supportsDirectSourceOutput:e.supportsDirectSourceOutput,resolveBlob:S,hashFn:e.hashFn,genId:e.genId,requestProcessAccumulated:e.requestProcessAccumulated,publishBoardChangeNotifications:e.publishBoardChangeNotifications,warn:e.onWarn}}function C(e){return e!==void 0?{status:"success",data:e}:{status:"success"}}function R(e){return {status:"fail",error:e}}function w(e){return {status:"error",error:e instanceof Error?e.message:String(e)}}function I(){return new Date().toISOString()}function Ze(e){let t=new TextEncoder().encode(e),a=Array.from(t,u=>String.fromCharCode(u)).join("");return btoa(a).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function Me(e){let t=e.replace(/-/g,"+").replace(/_/g,"/"),a=t+"=".repeat((4-t.length%4)%4),u=atob(a),p=Uint8Array.from(u,S=>S.charCodeAt(0));return new TextDecoder().decode(p)}function ue(e){try{let t=JSON.parse(Me(e));return typeof t?.t=="string"?{taskName:t.t}:null}catch{return null}}function er(e){return Ze(JSON.stringify(e))}function He(e){try{let t=JSON.parse(Me(e));return typeof t?.cbk=="string"&&typeof t?.cid=="string"&&typeof t?.b=="string"&&typeof t?.d=="string"?t:null}catch{return null}}function rr(e){return j(e,o,()=>({_sources:{}}))}function tr(e,t){return h(e,t)}function nr(e){return k(e)}function ar(e,t){return i(e,t)}function or(e,t,a,u,p,S){return async f=>{let l=[],k=await a.cardStore.readCard(f.nodeId);if(!k)return "task-initiate-failure";let v=k.id,q=k.card_data??{},P=k.source_defs??[],N=P.filter(s=>s.optionalForCompletionGating!==true),V=await a.cardRuntimeStore.readRuntime(v),K=false,L=async()=>{K&&(await a.cardRuntimeStore.writeRuntime(v,V),K=false);},j=s=>p$1(V._sources[s]),b=(s,i)=>{V._sources[s]=p$1(i),K=true;},$=f.taskState?.executionCount??0;if(V._lastExecutionCount!==$&&(V._sources={},V._lastExecutionCount=$,K=true),f.update){let s$1=f.update.outputFile;if(s$1){let i=j(s$1);if(f.update.failure){let m=f.update.rqt??i.lastRequestedToken??i.queueRequestedToken;m&&b(s$1,s(i,m));}else {let m=f.update.rqt;if(!i.lastCompletedToken||m>i.lastCompletedToken){let h=typeof f.update.deliveryToken=="string"?f.update.deliveryToken:void 0,x=h?await a.fetchedSourcesStore.commitSourceData(v,s$1,h):false;b(s$1,x?r(i,m):s(i,m));}}await L();}}let J={};for(let s of P){if(!s.outputFile)continue;let i=await a.fetchedSourcesStore.readSourceData(v,s.outputFile);i!==null&&(J[s.bindTo]=i);}let Q={};for(let[s,i]of Object.entries(f.state??{}))if(i!==null&&typeof i=="object"&&!Array.isArray(i)){let m=i[s];Q[s]=m!==void 0?m:i;}else Q[s]=i;let H={id:v,card_data:{...q},requires:Q,source_defs:P,compute:k.compute};H._sourcesData=J,k.compute&&a$4.runSync(H,{sourcesData:J}),(p??(()=>{}))(v,H.computed_values??{});let G=a$4.enrichSourcesSync(Array.isArray(k.source_defs)?k.source_defs:void 0,{card_data:k.card_data,requires:Q}),z={...k,source_defs:Array.isArray(G)?G.map(s=>({...s,boardDir:typeof s.boardDir=="string"&&s.boardDir?s.boardDir:e.value})):G},_=I(),O=f.update?void 0:_,n=N.filter(s=>{let i=s.outputFile;if(typeof i!="string"||!i)return true;let m=j(i);O&&(m={...m,queueRequestedToken:O},b(i,m));let h=m.queueRequestedToken??m.lastRequestedToken??_;return q$1(m,h)==="dispatch"});if(await L(),n.length>0){let s=false,i=_;for(let m of n){let h=m.outputFile;if(typeof h!="string"||!h)continue;let x=j(h),F=x.queueRequestedToken??_;b(h,{...x,lastRequestedToken:F}),i=F,s=true;}return s&&await L(),s&&(l.push({taskKind:"source-fetch",payload:{boardRef:a$2(e),enrichedCard:z,callbackToken:f.callbackToken,rqt:i}}),await a.executionRequestStore.appendEntries(t,l)),"task-initiated"}if(N.some(s=>{let i=s.outputFile;if(typeof i!="string"||!i)return false;let m=j(i),h=m.queueRequestedToken??m.lastRequestedToken??_;return q$1(m,h)==="in-flight"}))return "task-initiated";let d=k.provides??[],o={};for(let{bindTo:s,ref:i}of d)o[s]=a$4.resolve(H,i);return (S??(()=>{}))(o),P.filter(s=>{if(s.optionalForCompletionGating!==true)return false;let i=j(s.outputFile);return !i.lastRequestedToken||!i.lastCompletedToken?true:i.lastCompletedToken<=i.lastRequestedToken}).length>0&&l.push({taskKind:"source-fetch",payload:{boardRef:a$2(e),enrichedCard:z,callbackToken:f.callbackToken,rqt:_}}),u(f.nodeId,o),l.length>0&&await a.executionRequestStore.appendEntries(t,l),"task-initiated"}}function Ir(e,t$1){d(t$1.callbackTransport,"createAsyncBoardLiveCardsPublic");let a=t$1.callbackTransport,u$2=t$1.warn??(()=>{}),p$1=a$2(e),S=null;function f(n){if(n.length!==0)try{return Promise.resolve(t$1.publishBoardChangeNotifications?.(n)).catch(r=>{u$2(`[async-board-live-cards-public] publishBoardChangeNotifications failed: ${r instanceof Error?r.message:String(r)}`);})}catch(r){u$2(`[async-board-live-cards-public] publishBoardChangeNotifications failed: ${r instanceof Error?r.message:String(r)}`);return}}let l=()=>Qe(t$1.kvStorage("config")),k=()=>t$1.kvStorage("state-snapshot"),v$1=e.value,q$1=()=>b$3(a$1(()=>k(),t$1.hashFn),"v1"),P=async()=>{let n=await l().readOutputsStoreRef();if(!n)throw new Error(`Board at ${e.value} has no outputs store configured.`);return nr(t$1.kvStorageForRef(n))},N=async()=>{let n=await l().readCardStoreRef();if(!n)throw new Error(`Board at ${e.value} has no card store configured.`);let r=t$1.kvStorageForRef(n);return Je(Le(We(r),t$1.hashFn),u$2)};async function V(){return !!(await q$1().readSnapshot(v$1)).values[n]}async function K(){let n$1=await q$1().readSnapshot(v$1);if(!n$1.values[n])throw new Error(`Board not initialized at ${e.value}`);return w$1(n$1.values)}async function L(n,r){let d=await q$1().commitSnapshot(v$1,{schemaVersion:"v1",expectedVersion:r,deleteKeys:[],shallowMerge:v(n)});if(!d.ok)throw new Error(`Snapshot commit failed (version mismatch): expected=${r??"null"} current=${d.currentVersion??"null"}`)}let j=()=>c$1(t$1.journalStorage());async function b(n){await j().appendEvent(n);}function $(){return tr(t$1.blobStorage("sources"),n=>t$1.resolveBlob(n))}async function J(n){let r=await Promise.resolve(t$1.blobStorage("sources").keyRef?.(n));return r?a$2(r):n}async function Q(){let n=ar(t$1.kvStorage("execution-requests"),async(c,g)=>{let A=c.payload,T=(A.enrichedCard??{}).id??A.cardId??"unknown";await b({type:"task-failed",taskName:T,error:g,timestamp:I()});}),r=rr(t$1.kvStorage("card-runtime")),d=$(),o=await N(),y=await P(),s=new Map,i=new Map,m=[],h=[],x=[],F=new Map,W=new Set,M={async readRuntime(c){return s.get(c)??await r.readRuntime(c)},async writeRuntime(c,g){s.set(c,g);}},ce={async readSourceData(c,g){let A=`${c}/${g}`;return i.has(A)?i.get(A):await d.readSourceData(c,g)},ingestSourceDataStaged(c,g,A,B){return d.ingestSourceDataStaged(c,g,A,B)},async commitSourceData(c,g,A){let B=`${c}/.staged/${A}/${g}`,T=t$1.blobStorage("sources"),D=await T.read(B);if(D==null){let X=await T.keyRef?.(B);X&&(D=await t$1.resolveBlob(X));}if(D==null)return false;let re=`${c}/${g}`,Y=D.trim();try{i.set(re,JSON.parse(Y));}catch{i.set(re,Y);}return m.push({cardId:c,outputFile:g,deliveryToken:A}),true},async hasSource(c,g){let A=`${c}/${g}`;return i.has(A)||await d.hasSource(c,g)},async listSources(c){let g=await d.listSources(c),A=[...i.keys()].filter(B=>B.startsWith(`${c}/`)).map(B=>B.slice(`${c}/`.length));return [...new Set([...g,...A])]}},ke=await K(),Ue=q(ke.graph),{events:Ge,newCursor:de}=await j().readEntriesAfterCursor(ke.lastDrainedJournalId),Z=Ge,ee=u$1(Ue,{handlers:{"card-handler":or(e,de,{cardStore:o,cardRuntimeStore:M,fetchedSourcesStore:ce,executionRequestStore:n},(c,g)=>{Z.push({type:"task-completed",taskName:c,data:g,timestamp:I()});},(c,g)=>{h.push({cardId:c,values:g});},c=>{x.push(c);})},onNodeRemoved:c=>{F.delete(c),s.delete(c),W.add(c);}});for(;Z.length>0;){let c=Z;Z=[];for(let g of c)if(g.type==="task-restart"){let A=await o.readCard(g.taskName);A&&F.set(g.taskName,A);}ee.pushAll(c),await ee.waitForHandlers();}let Re=ee.getState();await ee.dispose({wait:true}),await L({lastDrainedJournalId:de,graph:p(Re)},(await q$1().readSnapshot(v$1)).version);for(let{cardId:c,values:g}of h)await y.writeComputedValues(c,g);for(let c of x)await y.writeDataObjects(c);for(let[c,g]of s)await r.writeRuntime(c,g);for(let c of m)await d.commitSourceData(c.cardId,c.outputFile,c.deliveryToken);let he=t(p$1,Re);await y.writeStatusSnapshot(he);let U=[];for(let{cardId:c,values:g}of h)U.push({kind:"computed_values",cardId:c,values:g});for(let c of x)for(let[g,A]of Object.entries(c))U.push({kind:"data_object",key:g,payload:A});for(let[c,g]of F)U.push({kind:"card_refreshed",cardId:c,card:g});for(let c of W)U.push({kind:"card_removed",cardId:c});U.push({kind:"status",status:he}),await f(U);let le=await l().readTaskExecutorRef();if(!le)return;let ze=t$1.supportsDirectSourceOutput?.(le)===true;await n.dispatchEntriesForJournalId(de,async c=>{if(c.taskKind!=="source-fetch"){u$2(`[async-process-accumulated-events] unknown taskKind "${c.taskKind}" \u2014 skipping`);return}let g=c.payload,A=g.enrichedCard?.id??"unknown",B=g.enrichedCard?.source_defs??[];for(let T of B){if(!T.outputFile)continue;let D;if(ze){let X=t$1.genId(),Ye=`${A}/.staged/${X}/${T.outputFile}`,Ce=await Promise.resolve(t$1.blobStorage("sources").keyRef?.(Ye));Ce&&(D={ref:a$2(Ce),deliveryToken:X,outputFile:T.outputFile,cardId:A});}let re=er({cbk:g.callbackToken,rg:e.value,br:a$2(e),cid:A,b:T.bindTo,d:T.outputFile,cs:void 0,rqt:g.rqt,...D?{dt:D.deliveryToken}:{}}),Y=await t$1.dispatchExecution(le,{source_def:T,base_ref:a$2(e),callback:a.createCallback(re),...D?{output:D}:{}});Y.dispatched||await b({type:"task-failed",taskName:A,error:Y.error??"dispatch failed",timestamp:I()});}});}async function H(){try{let n=async()=>{let d=await K(),{events:o}=await j().readEntriesAfterCursor(d.lastDrainedJournalId);o.length>0&&await z();},r=await $e(t$1.lock,Q,n);return C({ran:r!==!1})}catch(n){return w(n)}}async function G(){return S||(S=H().finally(()=>{S=null;}),S)}async function z(){let n=t$1.processAccumulatedStore();n.enqueueIfAbsent?await n.enqueueIfAbsent({boardRef:a$2(e)},`process-accumulated:${a$2(e)}`):await n.enqueue({boardRef:a$2(e)}),await t$1.requestProcessAccumulated?.();}async function _(){let n=t$1.processAccumulatedStore();for(;;){let r=await n.lease({max:64,visibilityMs:1e3});if(r.length<=0)return;for(let d of r)await n.ack(d.id,d.leaseToken);if(r.length<64)return}}function O(){z();}return {async init(n){try{let r=n.params?.cardStoreRef;if(!r)return R("init requires params.cardStoreRef");let d=n.params?.outputsStoreRef;if(!d)return R("init requires params.outputsStoreRef");await V()||await L({lastDrainedJournalId:"",graph:p(a$3(u))},null);let o=l();await o.writeCardStoreRef(r),await o.writeOutputsStoreRef(d);let y=n.params?.scratchStoreRef,s=n.params?.archiveStoreRef,i=n.params?.chatStoreRef,m=n.params?.artifactsStoreRef;y&&await o.writeScratchStoreRef(y),s&&await o.writeArchiveStoreRef(s),i&&await o.writeChatStoreRef(i),m&&await o.writeArtifactsStoreRef(m);let h=n.body??{};return h["task-executor-ref"]&&await o.writeTaskExecutorRef(h["task-executor-ref"]),Object.prototype.hasOwnProperty.call(h,"chat-handler-flow")&&await o.writeChatHandlerFlow(h["chat-handler-flow"]),await(await P()).writeStatusSnapshot(t(p$1,q((await K()).graph))),C()}catch(r){return w(r)}},async status(n){try{let r=await P(),d=await r.readStatusSnapshot();return d||(d=t(p$1,q((await K()).graph)),await r.writeStatusSnapshot(d)),C(d)}catch(r){return w(r)}},async getCardStoreRef(n){try{let r=await l().readCardStoreRef();return r?C({storeRef:r}):R(`Board at ${e.value} has no card store configured`)}catch(r){return w(r)}},async getOutputsStoreRef(n){try{let r=await l().readOutputsStoreRef();return r?C({storeRef:r}):R(`Board at ${e.value} has no outputs store configured`)}catch(r){return w(r)}},async getScratchStoreRef(n){try{return C({storeRef:await l().readScratchStoreRef()})}catch(r){return w(r)}},async getArchiveStoreRef(n){try{return C({storeRef:await l().readArchiveStoreRef()})}catch(r){return w(r)}},async getChatStoreRef(n){try{return C({storeRef:await l().readChatStoreRef()})}catch(r){return w(r)}},async getArtifactsStoreRef(n){try{return C({storeRef:await l().readArtifactsStoreRef()})}catch(r){return w(r)}},async getConfig(n){try{let r=n.params?.key;if(!r)return R("getConfig requires params.key");let d=l(),o;switch(r){case "task-executor":o=await d.readTaskExecutorRef()??null;break;case "chat-handler-flow":o=await d.readChatHandlerFlow()??null;break;case "card-store-ref":o=await d.readCardStoreRef();break;case "outputs-store-ref":o=await d.readOutputsStoreRef();break;case "scratch-store-ref":o=await d.readScratchStoreRef();break;case "archive-store-ref":o=await d.readArchiveStoreRef();break;case "chat-store-ref":o=await d.readChatStoreRef();break;case "artifacts-store-ref":o=await d.readArtifactsStoreRef();break;default:return R(`getConfig: unknown key "${r}"`)}return C({value:o})}catch(r){return w(r)}},async getOutputsDataObject(n){try{let r=n.params?.key;return r?C(await(await P()).readDataObject(r)):R("getOutputsDataObject requires params.key")}catch(r){return w(r)}},async getAllOutputsDataObjects(n){try{return C(await(await P()).readAllDataObjects())}catch(r){return w(r)}},async getOutputsComputedValues(n){try{let r=n.params?.key;return r?C(await(await P()).readComputedValues(r)):R("getOutputsComputedValues requires params.key")}catch(r){return w(r)}},async getAllOutputsComputedValues(n){try{return C(await(await P()).readAllComputedValues())}catch(r){return w(r)}},async getOutputsFetchedSources(n){try{let r=n.params?.key;if(!r)return R("getOutputsFetchedSources requires params.key");let d=await $().listSources(r),o={};for(let y of d)o[y]=await J(`${r}/${y}`);return C(o)}catch(r){return w(r)}},async getAllOutputsFetchedSources(n){try{let r=$(),d=await t$1.blobStorage("sources").listKeys(),o=new Set;for(let s of d){let i=s.indexOf("/");i>0&&!s.includes("/.staged/")&&o.add(s.slice(0,i));}let y={};for(let s of o){let i=await r.listSources(s);if(i.length!==0){y[s]={};for(let m of i)y[s][m]=await J(`${s}/${m}`);}}return C(y)}catch(r){return w(r)}},async addCardFiles(n){try{let r=n.params?.cardId;if(!r)return R("addCardFiles requires params.cardId");let d=await N(),o=await d.readCard(r);if(!o)return R(`card "${r}" not found`);let y=n.body,s=Array.isArray(y)?y:y&&typeof y=="object"&&Array.isArray(y.files)?y.files:y!=null?[y]:null;if(!s||s.length===0)return R("addCardFiles requires a file metadata object, array, or body.files array");let i=o.card_data&&typeof o.card_data=="object"&&!Array.isArray(o.card_data)?o.card_data:{},m=Array.isArray(i.files)?i.files:[],h=[...m,...s],x=s.map((W,M)=>({idx:m.length+M,entry:W}));await d.writeCard(r,{...o,card_data:{...i,files:h}});let F=await this.cardRefreshedNotify({params:{cardId:r}});return F.status!=="success"?F:C({cardId:r,files_added:x,notified:!0})}catch(r){return w(r)}},async cardRefreshedNotify(n){try{let r=n.params?.cardId;if(!r)return R("cardRefreshedNotify requires params.cardId");let d=await(await N()).readCard(r);return d?(await f([{kind:"card_refreshed",cardId:r,card:d}]),C({cardId:r,notified:!0})):R(`Card "${r}" not found in board at ${e.value}`)}catch(r){return w(r)}},async removeCard(n){try{let r=n.params?.id;if(!r)return R("removeCard requires params.id");try{await t$1.kvStorage("card-upsert").delete(r);}catch{}return await b({type:"task-removal",taskName:r,timestamp:I()}),O(),C()}catch(r){return w(r)}},async retrigger(n){try{let r=n.params?.id;return r?(await b({type:"task-restart",taskName:r,timestamp:I()}),O(),C()):R("retrigger requires params.id")}catch(r){return w(r)}},async processAccumulatedEvents(n){return await _(),G()},async upsertCard(n){try{let r=n.params?.cardId,d=n.params?.all,o=!!n.params?.restart;if(!r&&!d)return R("upsertCard requires --card-id <id> or --all");let y=await N(),s=d?(await y.readAllCards()).map(m=>m.id):[r];for(let m of s)if(!await y.readCard(m))return R(`Card "${m}" not found in board at ${e.value}`);let i=t$1.kvStorage("card-upsert");for(let m of s){let h=await y.readCard(m);if(!h)continue;let x$1=x(h),F=t$1.hashFn(x$1),W=await i.read(m),M=W?.taskConfigHash!==F;if(!(!M&&!o)){if(M){let ce=W?.blobRef??await y.readCardKey(m)??m;await b({type:"task-upsert",taskName:m,taskConfig:x$1,timestamp:I()}),await i.write(m,{blobRef:ce,taskConfigHash:F,updatedAt:I()});}o&&await b({type:"task-restart",taskName:m,timestamp:I()});}}return O(),C()}catch(r){return w(r)}},async taskFailed(n){try{let r=n.params?.token;if(!r)return R("taskFailed requires params.token");let d=n.params?.error??"unknown error",o=ue(r);return o?(await b({type:"task-failed",taskName:o.taskName,error:d,timestamp:I()}),O(),C()):R("Invalid callback token")}catch(r){return w(r)}},async taskProgress(n){try{let r=n.params?.token;if(!r)return R("taskProgress requires params.token");let d=(n.body??{}).update??{},o=ue(r);return o?(await b({type:"task-progress",taskName:o.taskName,update:d,timestamp:I()}),O(),C()):R("Invalid callback token")}catch(r){return w(r)}},async sourceDataFetched(n){try{let r=n.params?.token,d=n.params?.ref;if(!r)return R("sourceDataFetched requires params.token");if(!d)return R("sourceDataFetched requires params.ref");let o=He(r);if(!o)return R("Invalid source token");let y=$(),s=o.dt||t$1.genId();o.dt||await y.ingestSourceDataStaged(o.cid,o.d,b$2(d),s);let i=ue(o.cbk);return i?(await b({type:"task-progress",taskName:i.taskName,update:{bindTo:o.b,outputFile:o.d,fetchedAt:I(),deliveryToken:s,sourceChecksum:o.cs,rqt:o.rqt},timestamp:I()}),O(),C()):R("Invalid callback token embedded in source token")}catch(r){return w(r)}},async sourceDataFetchFailure(n){try{let r=n.params?.token,d=n.params?.reason??"unknown";if(!r)return R("sourceDataFetchFailure requires params.token");let o=He(r);if(!o)return R("Invalid source token");let y=ue(o.cbk);return y?(await b({type:"task-progress",taskName:y.taskName,update:{bindTo:o.b,outputFile:o.d,failure:!0,reason:d,sourceChecksum:o.cs,rqt:o.rqt},timestamp:I()}),O(),C()):R("Invalid callback token embedded in source token")}catch(r){return w(r)}}}}
2
- export{$e as a,We as b,Le as c,Je as d,cr as e,dr as f,ie as g,Qe as h,gr as i,Ir as j};//# sourceMappingURL=chunk-VMW4Z6EF.js.map
3
- //# sourceMappingURL=chunk-VMW4Z6EF.js.map
1
+ import {b,a}from'./chunk-HEEDJEKM.js';import {a as a$1,d,x,t,u,n,w as w$1,v,k,b as b$3,c as c$1,h,i,j,o,s,r,q as q$1,p as p$1}from'./chunk-JH37NJGP.js';import {b as b$1,c}from'./chunk-XQRNDX4Q.js';import {a as a$2,b as b$2}from'./chunk-BQS3EIEK.js';import {q,p,a as a$3,u as u$1}from'./chunk-VGT3TRQG.js';import {a as a$4}from'./chunk-JMDHDY6M.js';async function $e(e,t,a){let u=await e.tryAcquire();if(!u)return false;try{await t();}finally{await u();}return await a?.(),true}function We(e){return b(e)}function Le(e,t){return {async readIndex(){return await e.read("_index")},writeIndex(a){return e.write("_index",a)},async readCard(a){return await e.read(a)},async writeCard(a,u){return await e.write(a,u),t(u)},removeCard(a){return e.delete(a)},async cardExists(a){return await e.read(a)!==null},defaultCardKey(a){return a}}}function Je(e,t){async function a$1(){return await e.readIndex()??{}}return {async readCard(u){let p=(await a$1())[u];return !p||!await e.cardExists(p.key)?null:await e.readCard(p.key)},async readCardKey(u){return (await a$1())[u]?.key??null},async readAllCards(){let u=[];for(let[p,S]of Object.entries(await a$1())){if(!await e.cardExists(S.key))continue;let f=await e.readCard(S.key);f?u.push(f):t?.(`[card-store] could not read card "${p}" at key "${S.key}"`);}return u},async readChecksumIndex(){let u={};for(let[p,S]of Object.entries(await a$1()))u[p]=S.checksum;return u},async changedSince(u){let p=await a$1(),S=[];for(let[f,l]of Object.entries(p))u[f]!==l.checksum&&S.push(f);for(let f of Object.keys(u))p[f]||S.push(f);return S},async validateUpsert(u,p){let S=await a$1(),f=S[u],l=Object.entries(S).find(([,k])=>k.key===p);return f&&f.key!==p?{ok:false,error:`Card id "${u}" is already mapped to key "${f.key}", cannot remap to "${p}"`}:l&&l[0]!==u?{ok:false,error:`Key "${p}" is already mapped to card id "${l[0]}", cannot remap to "${u}"`}:{ok:true}},async writeCard(u,p,S){let f=await a$1(),l=S??f[u]?.key??e.defaultCardKey(u),k=await e.writeCard(l,p);f[u]={key:l,checksum:k,updatedAt:new Date().toISOString()},await e.writeIndex(f);},async patchCard(u,p,S){let f=await a$1(),l=f[u];if(!l||!await e.cardExists(l.key))throw new Error(`card "${u}" not found`);let k=await e.readCard(l.key);if(!k||typeof k!="object"||Array.isArray(k))throw new Error(`card "${u}" is not patchable`);let v=String(p||"").split(".").filter(Boolean),q=a(k,v,S),P=await e.writeCard(l.key,q);f[u]={key:l.key,checksum:P,updatedAt:new Date().toISOString()},await e.writeIndex(f);},async removeCard(u){let p=await a$1(),S=p[u];S&&(await e.removeCard(S.key),delete p[u],await e.writeIndex(p));},readIndex(){return a$1()}}}function cr(e,t){return a$1(e,t)}function dr(e,t,a){return {blob:e,kv:t,journal:a}}function Se(e){return {messageId:e.id,enqueuedAt:e.enqueuedAt,attempt:e.attempt,request:e.body}}function Xe(e){return typeof e=="string"?e.startsWith("b64:")?b$2(e).value:e:e.value}function ie(e){return {async enqueueRequest(t){return (await e.enqueue(t)).id},async leaseRequests(t){return (await e.lease(t)).map(a=>({...Se(a),leaseToken:a.leaseToken,leaseExpiresAt:a.leaseExpiresAt}))},ackRequest(t,a){return e.ack(t,a)},nackRequest(t,a,u){return e.nack(t,a,u)},async peekActive(){return (await e.peekActive()).map(Se)},async peekDeadLetter(){return (await e.peekDeadLetter()).map(t=>({...Se(t),reason:t.reason}))}}}function Qe(e){async function t(a){let u=await e.read(a);return u==null?null:typeof u=="string"?u:JSON.stringify(u)}return {async readTaskExecutorRef(){let a=await t("task-executor");if(a?.trim())return c(a.trim())},writeTaskExecutorRef(a){return e.write("task-executor",b$1(a))},readChatHandlerFlow(){return e.read("chat-handler-flow")},writeChatHandlerFlow(a){return e.write("chat-handler-flow",a)},readCardStoreRef(){return t("card-store-ref")},writeCardStoreRef(a){return e.write("card-store-ref",a)},readOutputsStoreRef(){return t("outputs-store-ref")},writeOutputsStoreRef(a){return e.write("outputs-store-ref",a)},readScratchStoreRef(){return t("scratch-store-ref")},writeScratchStoreRef(a){return e.write("scratch-store-ref",a)},readArchiveStoreRef(){return t("archive-store-ref")},writeArchiveStoreRef(a){return e.write("archive-store-ref",a)},readChatStoreRef(){return t("chat-store-ref")},writeChatStoreRef(a){return e.write("chat-store-ref",a)},readArtifactsStoreRef(){return t("artifacts-store-ref")},writeArtifactsStoreRef(a){return e.write("artifacts-store-ref",a)}}}function gr(e){let t,a,u,p=e.callbackTransport,S=e.resolveBlob??(async l=>{let k=await e.blobStorage("").read(l.value);if(k==null)throw new Error(`Blob not found for ref ${l.kind}:${l.value}`);return k});async function f(l,k){if(l.howToRun==="queue-storage"){let v=e.boardWorkerStore??t??(e.queueStorage?ie(e.queueStorage):void 0);return v?(t||(t=v),await v.enqueueRequest({boardId:typeof l.extra?.boardId=="string"?l.extra.boardId:e.boardId,ref:l,args:k}),{dispatched:true}):{dispatched:false,error:"queue-storage dispatch requires queueStorage or boardWorkerStore"}}if(l.howToRun==="http:post"){let v=e.fetch??globalThis.fetch;if(!v)return {dispatched:false,error:"http:post dispatch requires fetch support"};let q=await v(Xe(l.whatToRun),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...k,...l.extra?{extra:l.extra}:{}})});if(!q.ok){let P=await q.text().catch(()=>"");return {dispatched:false,error:`HTTP ${q.status}: ${P}`}}return {dispatched:true}}return {dispatched:false,error:`Unsupported hosted async transport "${l.howToRun}"`}}return {kvStorage:e.kvStorage,kvStorageForRef:e.kvStorageForRef,blobStorage:e.blobStorage,scratchStorage:e.scratchStorage,scratchStorageForRef:e.scratchStorageForRef,archiveFactory:e.archiveFactory,archiveFactoryForRef:e.archiveFactoryForRef,journalStorage:e.journalStorage,boardWorkerStore:()=>{if(!t)if(e.boardWorkerStore)t=e.boardWorkerStore;else if(e.queueStorage)t=ie(e.queueStorage);else throw new Error("Hosted async board adapter requires queueStorage or boardWorkerStore");return t},chatAgentStore:()=>{if(!a)if(e.chatAgentStore)a=e.chatAgentStore;else if(e.chatAgentQueueStorage)a=ie(e.chatAgentQueueStorage);else if(e.boardWorkerStore)a=e.boardWorkerStore;else if(e.queueStorage)a=ie(e.queueStorage);else throw new Error("Hosted async board adapter requires chatAgentStore, chatAgentQueueStorage, queueStorage, or boardWorkerStore");return a},processAccumulatedStore:()=>{if(u||(u=e.processAccumulatedStore??e.processAccumulatedQueueStorage??e.queueStorage),!u)throw new Error("Hosted async board adapter requires processAccumulatedStore, processAccumulatedQueueStorage, or queueStorage");return u},lock:e.lock,get callbackTransport(){return p},set callbackTransport(l){p=l;},dispatchExecution:(l,k)=>e.dispatchExecution?.(l,k)??f(l,k),supportsDirectSourceOutput:e.supportsDirectSourceOutput,resolveBlob:S,hashFn:e.hashFn,genId:e.genId,requestProcessAccumulated:e.requestProcessAccumulated,publishBoardChangeNotifications:e.publishBoardChangeNotifications,warn:e.onWarn}}function C(e){return e!==void 0?{status:"success",data:e}:{status:"success"}}function R(e){return {status:"fail",error:e}}function w(e){return {status:"error",error:e instanceof Error?e.message:String(e)}}function I(){return new Date().toISOString()}function Ze(e){let t=new TextEncoder().encode(e),a=Array.from(t,u=>String.fromCharCode(u)).join("");return btoa(a).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function Me(e){let t=e.replace(/-/g,"+").replace(/_/g,"/"),a=t+"=".repeat((4-t.length%4)%4),u=atob(a),p=Uint8Array.from(u,S=>S.charCodeAt(0));return new TextDecoder().decode(p)}function ue(e){try{let t=JSON.parse(Me(e));return typeof t?.t=="string"?{taskName:t.t}:null}catch{return null}}function er(e){return Ze(JSON.stringify(e))}function He(e){try{let t=JSON.parse(Me(e));return typeof t?.cbk=="string"&&typeof t?.cid=="string"&&typeof t?.b=="string"&&typeof t?.d=="string"?t:null}catch{return null}}function rr(e){return j(e,o,()=>({_sources:{}}))}function tr(e,t){return h(e,t)}function nr(e){return k(e)}function ar(e,t){return i(e,t)}function or(e,t,a,u,p,S){return async f=>{let l=[],k=await a.cardStore.readCard(f.nodeId);if(!k)return "task-initiate-failure";let v=k.id,q=k.card_data??{},P=k.source_defs??[],N=P.filter(s=>s.optionalForCompletionGating!==true),V=await a.cardRuntimeStore.readRuntime(v),K=false,L=async()=>{K&&(await a.cardRuntimeStore.writeRuntime(v,V),K=false);},j=s=>p$1(V._sources[s]),b=(s,i)=>{V._sources[s]=p$1(i),K=true;},$=f.taskState?.executionCount??0;if(V._lastExecutionCount!==$&&(V._sources={},V._lastExecutionCount=$,K=true),f.update){let s$1=f.update.outputFile;if(s$1){let i=j(s$1);if(f.update.failure){let m=f.update.rqt??i.lastRequestedToken??i.queueRequestedToken;m&&b(s$1,s(i,m));}else {let m=f.update.rqt;if(!i.lastCompletedToken||m>i.lastCompletedToken){let h=typeof f.update.deliveryToken=="string"?f.update.deliveryToken:void 0,x=h?await a.fetchedSourcesStore.commitSourceData(v,s$1,h):false;b(s$1,x?r(i,m):s(i,m));}}await L();}}let J={};for(let s of P){if(!s.outputFile)continue;let i=await a.fetchedSourcesStore.readSourceData(v,s.outputFile);i!==null&&(J[s.bindTo]=i);}let Q={};for(let[s,i]of Object.entries(f.state??{}))if(i!==null&&typeof i=="object"&&!Array.isArray(i)){let m=i[s];Q[s]=m!==void 0?m:i;}else Q[s]=i;let H={id:v,card_data:{...q},requires:Q,source_defs:P,compute:k.compute};H._sourcesData=J,k.compute&&a$4.runSync(H,{sourcesData:J}),(p??(()=>{}))(v,H.computed_values??{});let G=a$4.enrichSourcesSync(Array.isArray(k.source_defs)?k.source_defs:void 0,{card_data:k.card_data,requires:Q}),z={...k,source_defs:Array.isArray(G)?G.map(s=>({...s,boardDir:typeof s.boardDir=="string"&&s.boardDir?s.boardDir:e.value})):G},_=I(),O=f.update?void 0:_,n=N.filter(s=>{let i=s.outputFile;if(typeof i!="string"||!i)return true;let m=j(i);O&&(m={...m,queueRequestedToken:O},b(i,m));let h=m.queueRequestedToken??m.lastRequestedToken??_;return q$1(m,h)==="dispatch"});if(await L(),n.length>0){let s=false,i=_;for(let m of n){let h=m.outputFile;if(typeof h!="string"||!h)continue;let x=j(h),F=x.queueRequestedToken??_;b(h,{...x,lastRequestedToken:F}),i=F,s=true;}return s&&await L(),s&&(l.push({taskKind:"source-fetch",payload:{boardRef:a$2(e),enrichedCard:z,callbackToken:f.callbackToken,rqt:i}}),await a.executionRequestStore.appendEntries(t,l)),"task-initiated"}if(N.some(s=>{let i=s.outputFile;if(typeof i!="string"||!i)return false;let m=j(i),h=m.queueRequestedToken??m.lastRequestedToken??_;return q$1(m,h)==="in-flight"}))return "task-initiated";let d=k.provides??[],o={};for(let{bindTo:s,ref:i}of d)o[s]=a$4.resolve(H,i);return (S??(()=>{}))(o),P.filter(s=>{if(s.optionalForCompletionGating!==true)return false;let i=j(s.outputFile);return !i.lastRequestedToken||!i.lastCompletedToken?true:i.lastCompletedToken<=i.lastRequestedToken}).length>0&&l.push({taskKind:"source-fetch",payload:{boardRef:a$2(e),enrichedCard:z,callbackToken:f.callbackToken,rqt:_}}),u(f.nodeId,o),l.length>0&&await a.executionRequestStore.appendEntries(t,l),"task-initiated"}}function Ir(e,t$1){d(t$1.callbackTransport,"createAsyncBoardLiveCardsPublic");let a=t$1.callbackTransport,u$2=t$1.warn??(()=>{}),p$1=a$2(e),S=null;function f(n){if(n.length!==0)try{return Promise.resolve(t$1.publishBoardChangeNotifications?.(n)).catch(r=>{u$2(`[async-board-live-cards-public] publishBoardChangeNotifications failed: ${r instanceof Error?r.message:String(r)}`);})}catch(r){u$2(`[async-board-live-cards-public] publishBoardChangeNotifications failed: ${r instanceof Error?r.message:String(r)}`);return}}let l=()=>Qe(t$1.kvStorage("config")),k=()=>t$1.kvStorage("state-snapshot"),v$1=e.value,q$1=()=>b$3(a$1(()=>k(),t$1.hashFn),"v1"),P=async()=>{let n=await l().readOutputsStoreRef();if(!n)throw new Error(`Board at ${e.value} has no outputs store configured.`);return nr(t$1.kvStorageForRef(n))},N=async()=>{let n=await l().readCardStoreRef();if(!n)throw new Error(`Board at ${e.value} has no card store configured.`);let r=t$1.kvStorageForRef(n);return Je(Le(We(r),t$1.hashFn),u$2)};async function V(){return !!(await q$1().readSnapshot(v$1)).values[n]}async function K(){let n$1=await q$1().readSnapshot(v$1);if(!n$1.values[n])throw new Error(`Board not initialized at ${e.value}`);return w$1(n$1.values)}async function L(n,r){let d=await q$1().commitSnapshot(v$1,{schemaVersion:"v1",expectedVersion:r,deleteKeys:[],shallowMerge:v(n)});if(!d.ok)throw new Error(`Snapshot commit failed (version mismatch): expected=${r??"null"} current=${d.currentVersion??"null"}`)}let j=()=>c$1(t$1.journalStorage());async function b(n){await j().appendEvent(n);}function $(){return tr(t$1.blobStorage("sources"),n=>t$1.resolveBlob(n))}async function J(n){let r=await Promise.resolve(t$1.blobStorage("sources").keyRef?.(n));return r?a$2(r):n}async function Q(){let n=ar(t$1.kvStorage("execution-requests"),async(c,g)=>{let A=c.payload,T=(A.enrichedCard??{}).id??A.cardId??"unknown";await b({type:"task-failed",taskName:T,error:g,timestamp:I()});}),r=rr(t$1.kvStorage("card-runtime")),d=$(),o=await N(),y=await P(),s=new Map,i=new Map,m=[],h=[],x=[],F=new Map,W=new Set,M={async readRuntime(c){return s.get(c)??await r.readRuntime(c)},async writeRuntime(c,g){s.set(c,g);}},ce={async readSourceData(c,g){let A=`${c}/${g}`;return i.has(A)?i.get(A):await d.readSourceData(c,g)},ingestSourceDataStaged(c,g,A,B){return d.ingestSourceDataStaged(c,g,A,B)},async commitSourceData(c,g,A){let B=`${c}/.staged/${A}/${g}`,T=t$1.blobStorage("sources"),D=await T.read(B);if(D==null){let X=await T.keyRef?.(B);X&&(D=await t$1.resolveBlob(X));}if(D==null)return false;let re=`${c}/${g}`,Y=D.trim();try{i.set(re,JSON.parse(Y));}catch{i.set(re,Y);}return m.push({cardId:c,outputFile:g,deliveryToken:A}),true},async hasSource(c,g){let A=`${c}/${g}`;return i.has(A)||await d.hasSource(c,g)},async listSources(c){let g=await d.listSources(c),A=[...i.keys()].filter(B=>B.startsWith(`${c}/`)).map(B=>B.slice(`${c}/`.length));return [...new Set([...g,...A])]}},ke=await K(),Ue=q(ke.graph),{events:Ge,newCursor:de}=await j().readEntriesAfterCursor(ke.lastDrainedJournalId),Z=Ge,ee=u$1(Ue,{handlers:{"card-handler":or(e,de,{cardStore:o,cardRuntimeStore:M,fetchedSourcesStore:ce,executionRequestStore:n},(c,g)=>{Z.push({type:"task-completed",taskName:c,data:g,timestamp:I()});},(c,g)=>{h.push({cardId:c,values:g});},c=>{x.push(c);})},onNodeRemoved:c=>{F.delete(c),s.delete(c),W.add(c);}});for(;Z.length>0;){let c=Z;Z=[];for(let g of c)if(g.type==="task-restart"){let A=await o.readCard(g.taskName);A&&F.set(g.taskName,A);}ee.pushAll(c),await ee.waitForHandlers();}let Re=ee.getState();await ee.dispose({wait:true}),await L({lastDrainedJournalId:de,graph:p(Re)},(await q$1().readSnapshot(v$1)).version);for(let{cardId:c,values:g}of h)await y.writeComputedValues(c,g);for(let c of x)await y.writeDataObjects(c);for(let[c,g]of s)await r.writeRuntime(c,g);for(let c of m)await d.commitSourceData(c.cardId,c.outputFile,c.deliveryToken);let he=t(p$1,Re);await y.writeStatusSnapshot(he);let U=[];for(let{cardId:c,values:g}of h)U.push({kind:"computed_values",cardId:c,values:g});for(let c of x)for(let[g,A]of Object.entries(c))U.push({kind:"data_object",key:g,payload:A});for(let[c,g]of F)U.push({kind:"card_refreshed",cardId:c,card:g});for(let c of W)U.push({kind:"card_removed",cardId:c});U.push({kind:"status",status:he}),await f(U);let le=await l().readTaskExecutorRef();if(!le)return;let ze=t$1.supportsDirectSourceOutput?.(le)===true;await n.dispatchEntriesForJournalId(de,async c=>{if(c.taskKind!=="source-fetch"){u$2(`[async-process-accumulated-events] unknown taskKind "${c.taskKind}" \u2014 skipping`);return}let g=c.payload,A=g.enrichedCard?.id??"unknown",B=g.enrichedCard?.source_defs??[];for(let T of B){if(!T.outputFile)continue;let D;if(ze){let X=t$1.genId(),Ye=`${A}/.staged/${X}/${T.outputFile}`,Ce=await Promise.resolve(t$1.blobStorage("sources").keyRef?.(Ye));Ce&&(D={ref:a$2(Ce),deliveryToken:X,outputFile:T.outputFile,cardId:A});}let re=er({cbk:g.callbackToken,rg:e.value,br:a$2(e),cid:A,b:T.bindTo,d:T.outputFile,cs:void 0,rqt:g.rqt,...D?{dt:D.deliveryToken}:{}}),Y=await t$1.dispatchExecution(le,{source_def:T,base_ref:a$2(e),callback:a.createCallback(re),...D?{output:D}:{}});Y.dispatched||await b({type:"task-failed",taskName:A,error:Y.error??"dispatch failed",timestamp:I()});}});}async function H(){try{let n=async()=>{let d=await K(),{events:o}=await j().readEntriesAfterCursor(d.lastDrainedJournalId);o.length>0&&await z();},r=await $e(t$1.lock,Q,n);return C({ran:r!==!1})}catch(n){return w(n)}}async function G(){return S||(S=H().finally(()=>{S=null;}),S)}async function z(){let n=t$1.processAccumulatedStore();n.enqueueIfAbsent?await n.enqueueIfAbsent({boardRef:a$2(e)},`process-accumulated:${a$2(e)}`):await n.enqueue({boardRef:a$2(e)}),await t$1.requestProcessAccumulated?.();}async function _(){let n=t$1.processAccumulatedStore();for(;;){let r=await n.lease({max:64,visibilityMs:1e3});if(r.length<=0)return;for(let d of r)await n.ack(d.id,d.leaseToken);if(r.length<64)return}}function O(){z();}return {async init(n){try{let r=n.params?.cardStoreRef;if(!r)return R("init requires params.cardStoreRef");let d=n.params?.outputsStoreRef;if(!d)return R("init requires params.outputsStoreRef");await V()||await L({lastDrainedJournalId:"",graph:p(a$3(u))},null);let o=l();await o.writeCardStoreRef(r),await o.writeOutputsStoreRef(d);let y=n.params?.scratchStoreRef,s=n.params?.archiveStoreRef,i=n.params?.chatStoreRef,m=n.params?.artifactsStoreRef;y&&await o.writeScratchStoreRef(y),s&&await o.writeArchiveStoreRef(s),i&&await o.writeChatStoreRef(i),m&&await o.writeArtifactsStoreRef(m);let h=n.body??{};return h["task-executor-ref"]&&await o.writeTaskExecutorRef(h["task-executor-ref"]),Object.prototype.hasOwnProperty.call(h,"chat-handler-flow")&&await o.writeChatHandlerFlow(h["chat-handler-flow"]),await(await P()).writeStatusSnapshot(t(p$1,q((await K()).graph))),C()}catch(r){return w(r)}},async status(n){try{let r=await P(),d=await r.readStatusSnapshot();return d||(d=t(p$1,q((await K()).graph)),await r.writeStatusSnapshot(d)),C(d)}catch(r){return w(r)}},async getCardStoreRef(n){try{let r=await l().readCardStoreRef();return r?C({storeRef:r}):R(`Board at ${e.value} has no card store configured`)}catch(r){return w(r)}},async getOutputsStoreRef(n){try{let r=await l().readOutputsStoreRef();return r?C({storeRef:r}):R(`Board at ${e.value} has no outputs store configured`)}catch(r){return w(r)}},async getScratchStoreRef(n){try{return C({storeRef:await l().readScratchStoreRef()})}catch(r){return w(r)}},async getArchiveStoreRef(n){try{return C({storeRef:await l().readArchiveStoreRef()})}catch(r){return w(r)}},async getChatStoreRef(n){try{return C({storeRef:await l().readChatStoreRef()})}catch(r){return w(r)}},async getArtifactsStoreRef(n){try{return C({storeRef:await l().readArtifactsStoreRef()})}catch(r){return w(r)}},async getConfig(n){try{let r=n.params?.key;if(!r)return R("getConfig requires params.key");let d=l(),o;switch(r){case "task-executor":o=await d.readTaskExecutorRef()??null;break;case "chat-handler-flow":o=await d.readChatHandlerFlow()??null;break;case "card-store-ref":o=await d.readCardStoreRef();break;case "outputs-store-ref":o=await d.readOutputsStoreRef();break;case "scratch-store-ref":o=await d.readScratchStoreRef();break;case "archive-store-ref":o=await d.readArchiveStoreRef();break;case "chat-store-ref":o=await d.readChatStoreRef();break;case "artifacts-store-ref":o=await d.readArtifactsStoreRef();break;default:return R(`getConfig: unknown key "${r}"`)}return C({value:o})}catch(r){return w(r)}},async getOutputsDataObject(n){try{let r=n.params?.key;return r?C(await(await P()).readDataObject(r)):R("getOutputsDataObject requires params.key")}catch(r){return w(r)}},async getAllOutputsDataObjects(n){try{return C(await(await P()).readAllDataObjects())}catch(r){return w(r)}},async getOutputsComputedValues(n){try{let r=n.params?.key;return r?C(await(await P()).readComputedValues(r)):R("getOutputsComputedValues requires params.key")}catch(r){return w(r)}},async getAllOutputsComputedValues(n){try{return C(await(await P()).readAllComputedValues())}catch(r){return w(r)}},async getOutputsFetchedSources(n){try{let r=n.params?.key;if(!r)return R("getOutputsFetchedSources requires params.key");let d=await $().listSources(r),o={};for(let y of d)o[y]=await J(`${r}/${y}`);return C(o)}catch(r){return w(r)}},async getAllOutputsFetchedSources(n){try{let r=$(),d=await t$1.blobStorage("sources").listKeys(),o=new Set;for(let s of d){let i=s.indexOf("/");i>0&&!s.includes("/.staged/")&&o.add(s.slice(0,i));}let y={};for(let s of o){let i=await r.listSources(s);if(i.length!==0){y[s]={};for(let m of i)y[s][m]=await J(`${s}/${m}`);}}return C(y)}catch(r){return w(r)}},async addCardFiles(n){try{let r=n.params?.cardId;if(!r)return R("addCardFiles requires params.cardId");let d=await N(),o=await d.readCard(r);if(!o)return R(`card "${r}" not found`);let y=n.body,s=Array.isArray(y)?y:y&&typeof y=="object"&&Array.isArray(y.files)?y.files:y!=null?[y]:null;if(!s||s.length===0)return R("addCardFiles requires a file metadata object, array, or body.files array");let i=o.card_data&&typeof o.card_data=="object"&&!Array.isArray(o.card_data)?o.card_data:{},m=Array.isArray(i.files)?i.files:[],h=[...m,...s],x=s.map((W,M)=>({idx:m.length+M,entry:W}));await d.writeCard(r,{...o,card_data:{...i,files:h}});let F=await this.cardRefreshedNotify({params:{cardId:r}});return F.status!=="success"?F:C({cardId:r,files_added:x,notified:!0})}catch(r){return w(r)}},async cardRefreshedNotify(n){try{let r=n.params?.cardId;if(!r)return R("cardRefreshedNotify requires params.cardId");let d=await(await N()).readCard(r);return d?(await f([{kind:"card_refreshed",cardId:r,card:d}]),C({cardId:r,notified:!0})):R(`Card "${r}" not found in board at ${e.value}`)}catch(r){return w(r)}},async removeCard(n){try{let r=n.params?.id;if(!r)return R("removeCard requires params.id");try{await t$1.kvStorage("card-upsert").delete(r);}catch{}return await b({type:"task-removal",taskName:r,timestamp:I()}),O(),C()}catch(r){return w(r)}},async retrigger(n){try{let r=n.params?.id;return r?(await b({type:"task-restart",taskName:r,timestamp:I()}),O(),C()):R("retrigger requires params.id")}catch(r){return w(r)}},async processAccumulatedEvents(n){return await _(),G()},async upsertCard(n){try{let r=n.params?.cardId,d=n.params?.all,o=!!n.params?.restart;if(!r&&!d)return R("upsertCard requires --card-id <id> or --all");let y=await N(),s=d?(await y.readAllCards()).map(m=>m.id):[r];for(let m of s)if(!await y.readCard(m))return R(`Card "${m}" not found in board at ${e.value}`);let i=t$1.kvStorage("card-upsert");for(let m of s){let h=await y.readCard(m);if(!h)continue;let x$1=x(h),F=t$1.hashFn(x$1),W=await i.read(m),M=W?.taskConfigHash!==F;if(!(!M&&!o)){if(M){let ce=W?.blobRef??await y.readCardKey(m)??m;await b({type:"task-upsert",taskName:m,taskConfig:x$1,timestamp:I()}),await i.write(m,{blobRef:ce,taskConfigHash:F,updatedAt:I()});}o&&await b({type:"task-restart",taskName:m,timestamp:I()});}}return O(),C()}catch(r){return w(r)}},async taskFailed(n){try{let r=n.params?.token;if(!r)return R("taskFailed requires params.token");let d=n.params?.error??"unknown error",o=ue(r);return o?(await b({type:"task-failed",taskName:o.taskName,error:d,timestamp:I()}),O(),C()):R("Invalid callback token")}catch(r){return w(r)}},async taskProgress(n){try{let r=n.params?.token;if(!r)return R("taskProgress requires params.token");let d=(n.body??{}).update??{},o=ue(r);return o?(await b({type:"task-progress",taskName:o.taskName,update:d,timestamp:I()}),O(),C()):R("Invalid callback token")}catch(r){return w(r)}},async sourceDataFetched(n){try{let r=n.params?.token,d=n.params?.ref;if(!r)return R("sourceDataFetched requires params.token");if(!d)return R("sourceDataFetched requires params.ref");let o=He(r);if(!o)return R("Invalid source token");let y=$(),s=o.dt||t$1.genId();o.dt||await y.ingestSourceDataStaged(o.cid,o.d,b$2(d),s);let i=ue(o.cbk);return i?(await b({type:"task-progress",taskName:i.taskName,update:{bindTo:o.b,outputFile:o.d,fetchedAt:I(),deliveryToken:s,sourceChecksum:o.cs,rqt:o.rqt},timestamp:I()}),O(),C()):R("Invalid callback token embedded in source token")}catch(r){return w(r)}},async sourceDataFetchFailure(n){try{let r=n.params?.token,d=n.params?.reason??"unknown";if(!r)return R("sourceDataFetchFailure requires params.token");let o=He(r);if(!o)return R("Invalid source token");let y=ue(o.cbk);return y?(await b({type:"task-progress",taskName:y.taskName,update:{bindTo:o.b,outputFile:o.d,failure:!0,reason:d,sourceChecksum:o.cs,rqt:o.rqt},timestamp:I()}),O(),C()):R("Invalid callback token embedded in source token")}catch(r){return w(r)}}}}
2
+ export{$e as a,We as b,Le as c,Je as d,cr as e,dr as f,ie as g,Qe as h,gr as i,Ir as j};//# sourceMappingURL=chunk-PRKRXAVN.js.map
3
+ //# sourceMappingURL=chunk-PRKRXAVN.js.map
@@ -0,0 +1,2 @@
1
+ import {a,c,d,e,b,f}from'./chunk-O7NOHKVR.js';import {a as a$1}from'./chunk-SGV7PU4H.js';import {b as b$1}from'./chunk-BQS3EIEK.js';import {a as a$2}from'./chunk-ZCNN6XPV.js';function H(){return {status:null,computedValues:{},dataObjects:{},cards:{}}}function V(n){if(!n||typeof n!="object")return false;let e=n.summary;return !e||typeof e!="object"?false:Number(e.card_count||0)>0}function z(n,e){if(!e||typeof e!="object")return;let a=e;if(a.kind==="notification-batch"&&Array.isArray(a.notifications)){for(let l of a.notifications)z(n,l);return}a.kind==="status"&&V(a.status)&&(n.status=a.status),a.kind==="computed_values"&&a.cardId&&(n.computedValues[a.cardId]=a.values),a.kind==="data_object"&&a.key&&(n.dataObjects[a.key]=a.payload),a.kind==="card_refreshed"&&a.cardId&&(n.cards[a.cardId]=a.card),a.kind==="card_removed"&&a.cardId&&(delete n.cards[a.cardId],delete n.computedValues[a.cardId]);}function B(n,e){if(n?.status==="success")return Object.prototype.hasOwnProperty.call(n,"data")?n.data:void 0;throw n?.status==="fail"||n?.status==="error"?Object.assign(new Error(n.error||`${e} failed`),{statusCode:400}):Object.assign(new Error(`${e} returned an unexpected response`),{statusCode:500})}async function j(n,e){return B(await n,e)}function D(n){let e=a(n,"key");if(!e)throw Object.assign(new Error("MCP tool requires key"),{statusCode:400});let a$1=e.split(".");if(!(a$1.length>=2&&a$1[0]==="chat"&&a$1.every(h=>/^[A-Za-z_][A-Za-z0-9_]*$/.test(h))))throw Object.assign(new Error("MCP tool only supports card private keys under chat.*"),{statusCode:400});return e}function q(n,e){let a=n.__private;for(let l of e.split(".")){if(!a||typeof a!="object"||Array.isArray(a)||!Object.prototype.hasOwnProperty.call(a,l))return {exists:false,value:null};a=a[l];}return {exists:true,value:a}}function Q(n){let{boardId:e,getMcpFacade:a$1,getMcpCardStoreFacade:l}=n;function h(p){let o=a(p,"board_id"),c=a(p,"card_id");if(!o)throw Object.assign(new Error("MCP tool requires board_id"),{statusCode:400});if(!c)throw Object.assign(new Error("MCP tool requires card_id"),{statusCode:400});if(o!==e)throw Object.assign(new Error(`Unknown board_id: ${o}`),{statusCode:400});return {cardId:c}}function R(p,o){let{cardId:c}=h(p);return a$1().setChatProcessing({cardId:c,active:o}),{status:"success",data:{boardId:e,cardId:c,active:o}}}function _(p){let{cardId:o}=h(p),c=a$1().getChatProcessing({cardId:o});return {status:"success",data:{boardId:e,cardId:o,active:c.active}}}async function t(p){let{cardId:o}=h(p),c=D(p);if(!Object.prototype.hasOwnProperty.call(p,"value"))throw Object.assign(new Error("MCP tool requires value"),{statusCode:400});if(c.split(".").includes("visible_controlplane_only")){let i=await j(l().get({params:{id:o}}),"cardStore.get"),g=Array.isArray(i.cards)&&i.cards.length>0&&typeof i.cards[0]=="object"&&!Array.isArray(i.cards[0])?i.cards[0]:null,w=g?q(g,"visible_controlplane_only").value:void 0;if(p.value!==w)throw Object.assign(new Error("MCP tool cannot change the reserved private flag visible_controlplane_only"),{statusCode:403});return {status:"success",data:{boardId:e,cardId:o,key:c}}}return B(await l().patch({params:{id:o,path:`__private.${c}`},body:{value:p.value}}),"cardStore.patch"),{status:"success",data:{boardId:e,cardId:o,key:c}}}async function C(p){let{cardId:o}=h(p),c=D(p),i=await j(l().get({params:{id:o}}),"cardStore.get"),g=Array.isArray(i.cards)&&i.cards.length>0&&i.cards[0]&&typeof i.cards[0]=="object"&&!Array.isArray(i.cards[0])?i.cards[0]:null;if(!g)throw Object.assign(new Error(`Card "${o}" not found`),{statusCode:404});let w=q(g,c);return {status:"success",data:{boardId:e,cardId:o,key:c,exists:w.exists,value:w.value}}}return {requireCardArgs:h,setChatProcessing:R,getChatProcessing:_,setCardMeta:t,getCardMeta:C}}function ee(n){let{boardId:e,boardContexts:a,readCardDefinitions:l,readChatRecords:h,getChatProcessing:R}=n;async function _(){let o=(await Promise.all(a.map(async y=>{try{let u=y.boardAdapter.kvStorageForRef(y.outputsStoreRef),m=await Promise.resolve(u.read("status"));if(m!=null)return m}catch{}return y.notification.status}))).filter(Boolean);if(o.length===0)return null;if(o.length===1)return o[0];let c=[],i=["completed","eligible","pending","blocked","unresolved","failed","in_progress","orphan_cards"],g={};for(let y of i)g[y]=0;for(let y of o){let u=y,m=Array.isArray(u.cards)?u.cards:[];c.push(...m);for(let b of i)g[b]+=Number(u?.summary?.[b]||0);}let w=o[0];return {...w,cards:c,summary:{...w.summary||{},card_count:c.length,...g}}}async function t(){let o={},c=async i=>{try{let g=await i.boardOps.getAllOutputsComputedValues({});if(g.status==="success"&&g.data&&typeof g.data=="object"){for(let[w,y]of Object.entries(g.data)){let u=i.notification.cards[w];o[w]={schema_version:"v1",card_id:w,card_data:u?.card_data??{},computed_values:y??{}};}return}}catch{}for(let[g,w]of Object.entries(i.notification.computedValues)){let y=i.notification.cards[g];o[g]={schema_version:"v1",card_id:g,card_data:y?.card_data??{},computed_values:w??{}};}};for(let i of a)await c(i);return o}async function C(){let o={};for(let c of a){try{let i=await c.boardOps.getAllOutputsDataObjects({});if(i.status==="success"&&i.data&&typeof i.data=="object"){Object.assign(o,i.data);continue}}catch{}Object.assign(o,c.notification.dataObjects||{});}return o}async function p(){let o=await l(),c=await t(),i=await C(),g={};for(let y of o){if(!y?.id)continue;let u=y.id,m=c[u]||{},b={...m.card_data&&typeof m.card_data=="object"?m.card_data:y.card_data&&typeof y.card_data=="object"?y.card_data:{}};g[u]={schema_version:m.schema_version||"v1",card_id:m.card_id||u,card_data:b,computed_values:m.computed_values&&typeof m.computed_values=="object"?m.computed_values:{}};}let w={};for(let y of o){if(!y?.id)continue;let u=y.id;try{let m=h(u),b=R(u);(m.length>0||b)&&(w[u]={messages:m.map(v=>({role:String(v.role||"system"),text:String(v.text||""),files:Array.isArray(v.files)?v.files:[]})),receiving:!1,processing:b});}catch{}}return {boardId:e,cardDefinitions:o,statusSnapshot:await _(),dataObjectsByToken:i,cardRuntimeById:g,cardChatsByCardId:w}}return {readStatusSnapshot:_,readCardRuntimeArtifacts:t,readDataObjectsByToken:C,buildPublishedRuntimePayload:p}}function W(n){let e=String(n||"").trim();if(!e)return "upload.bin";let a=Math.max(e.lastIndexOf("/"),e.lastIndexOf("\\"));return (a>=0?e.slice(a+1):e)||"upload.bin"}function re(n){let{safeCardId:e,artifactsStores:a,cardFileMetadataStore:l,readCardFromStore:h,updateCardLocalOnly:R,writeChatRecord:_}=n;async function t(o){let c=[];try{let i=await h(o);if(!i)return c;let g=l().read(i.card_data&&typeof i.card_data=="object"?i.card_data:null);for(let w of g)c.push(String(w.stored_name??""));}catch{}return c}async function C(o,c,i,g){let w=e(o),y=a(o),u=W(c),m=await t(o),v=`${String(m.length+1).padStart(3,"0")}-${u}`.slice(-36);return y.files&&await y.files.putBytes(`${w}/${v}`,new Uint8Array(g),i||"application/octet-stream"),{name:u,stored_name:v,size:g.length,mime_type:i||"application/octet-stream",uploaded_at:new Date().toISOString()}}async function p(o,c,i,g,w){if(!g.length)throw Object.assign(new Error("Empty upload body"),{statusCode:400});let y=w?.inChat===true,u=await C(o,c,i,g),m=null;if(await R(o,b=>{let v=new Date().toISOString(),A=b.card_data&&typeof b.card_data=="object"?b.card_data:{};b.card_data=A;let s=l().normalizeIncoming([{name:u.name,stored_name:u.stored_name,size:u.size,mime_type:u.mime_type,uploaded_at:u.uploaded_at||v,chat:y}],v);return m=l().merge(A,s).findIndex(d=>d.stored_name===u.stored_name),b}),y&&w?.suppressChatRecordWrite!==true){let b=typeof m=="number"&&m>=0?` #${m}`:"";_(o,"system",`file uploaded: ${u.name} as ${u.stored_name}${b}`,[],w?.turnId??"");}return {ok:true,file:{...u,...typeof m=="number"&&m>=0?{file_idx:m}:{},chat:y},...typeof m=="number"&&m>=0?{file_idx:m}:{}}}return {uploadCardFile:p,readCardStoredFileNames:t}}function oe(n){return {"discover.source-kinds":()=>n.discoverSourceKinds(),"inspect.board-runtime-status":()=>n.inspectBoardRuntimeStatus(),"inspect.card-definition-and-runtime":e=>n.inspectCardDefinitionAndRuntime({cardId:a(e,"card_id")}),"inspect.chat-messages-on-cards":e=>{let a$1=b(e,"tail_turns"),l=b(e,"tail"),h=a(e,"turn_id"),R=e.all_turns===true,_=a(e,"tail_turns_before_id");return n.inspectChatMessagesOnCards({cardId:a(e,"card_id"),...a$1!==void 0?{lastUserTurns:a$1}:{},...l!==void 0?{tail:l}:{},...h?{turnId:h}:{},...R?{allTurns:true}:{},..._?{tailTurnsBeforeId:_}:{}})},"inspect.file-contents":e=>n.inspectFileContents({cardId:a(e,"card_id"),fileIdx:Number(b(e,"file_idx"))}),"preflight.validate-candidate-card-definition":e=>n.preflightValidateCandidateCardDefinition({candidateCardContent:d(e,"candidate_card_content","candidate_card_content")}),"preflight.materialize-candidate-card":e=>n.preflightMaterializeCandidateCard({candidateCardContent:d(e,"candidate_card_content","candidate_card_content"),mockRequires:d(e,"mock_requires","mock_requires"),mockFetchedSources:d(e,"mock_fetched_sources","mock_fetched_sources")}),"preflight.probe-single-source-in-candidate-card":e$1=>n.preflightProbeSingleSourceInCandidateCard({candidateCardContent:d(e$1,"candidate_card_content","candidate_card_content"),mockProjections:c(e$1,"mock_projections"),sourceIdx:e(e$1,"source_idx","source_idx")}),"preflight.run-single-source-in-candidate-card":e$1=>n.preflightRunSingleSourceInCandidateCard({candidateCardContent:d(e$1,"candidate_card_content","candidate_card_content"),mockProjections:c(e$1,"mock_projections"),sourceIdx:e(e$1,"source_idx","source_idx")}),"preflight.run-single-source-in-live-card":e$1=>n.preflightRunSingleSourceInLiveCard({cardId:a(e$1,"card_id"),sourceIdx:e(e$1,"source_idx","source_idx"),mockRequires:d(e$1,"mock_requires","mock_requires")}),"preflight.run-one-cycle-with-candidate-card":e=>n.preflightRunOneCycleWithCandidateCard({candidateCardContent:d(e,"candidate_card_content","candidate_card_content"),mockRequires:c(e,"mock_requires")}),"manage.read-card":e=>n.manageReadCard({cardId:a(e,"card_id")}),"stage-ai-response-and-any-attachments":e=>{let a$1=a(e,"turn_id");if(!a$1)throw Object.assign(new Error("stage-ai-response-and-any-attachments requires a non-empty turn_id"),{statusCode:400});return n.manageAddChatEntryAndAnyAttachments({cardId:a(e,"card_id"),role:"assistant",...typeof e.text=="string"?{text:e.text}:{},...a$1?{turn:a$1}:{},...Array.isArray(e.files)?{files:e.files}:{}})},"manage.upsert-card":e=>n.manageUpsertCard({cardId:a(e,"card_id"),candidateCardContent:c(e,"candidate_card_content")}),"manage.remove-card":e=>n.manageRemoveCard({cardId:a(e,"card_id")})}}function se(n){return {"webhook.process-accumulated":()=>n.webhookProcessAccumulated(),"webhook.source-fetch-done":e=>n.webhookSourceFetchDone({token:a(e,"token"),ref:a(e,"ref")}),"webhook.source-fetch-failed":e=>n.webhookSourceFetchFailed({token:a(e,"token"),reason:a(e,"reason")})}}function de(n){let{boardId:e,uploadCardFile:a$1,getMcpFacade:l,controlplane:h}=n;function R(t,C){let p=a(t,"board_id");if(!p)throw Object.assign(new Error(`${C} requires board_id`),{statusCode:400});if(p!==e)throw Object.assign(new Error(`Unknown board_id: ${p}`),{statusCode:400})}function _(t,C){let{cardId:p}=h.requireCardArgs(t),o=a(t,"turn_id");return R(t,C),l().manageAddChatAttachment({cardId:p,role:a(t,"role")||"user",...o?{turn:o}:{},files:[{file_name:a(t,"file_name"),content_type:a(t,"content_type")||"application/octet-stream",...typeof t.text=="string"?{text:t.text}:{},...typeof t.base64=="string"?{base64:t.base64}:{},...Array.isArray(t.bytes)?{bytes:t.bytes}:{}}]})}return {"list-runtime-cards":t=>(R(t,"list-runtime-cards"),l().listRuntimeCards()),"getstate.is-chat-processing":t=>h.getChatProcessing(t),"setstate.chat-processing-started":t=>h.setChatProcessing(t,true),"setstate.chat-processing-done":t=>h.setChatProcessing(t,false),"getstate.card-private":t=>h.getCardMeta(t),"setstate.card-private":t=>h.setCardMeta(t),"manage.upload-card-file":t=>{let C=a(t,"card_id"),p=a(t,"file_name"),o=a(t,"content_type")||"application/octet-stream",c=f(t);if(R(t,"manage.upload-card-file"),!C)throw Object.assign(new Error("manage.upload-card-file requires card_id"),{statusCode:400});if(!p)throw Object.assign(new Error("manage.upload-card-file requires file_name"),{statusCode:400});if(!c)throw Object.assign(new Error("manage.upload-card-file requires args.bytes, args.text, or args.base64"),{statusCode:400});return a$1(C,p,o,c,{inChat:false})},"manage.add-chat-attachment":t=>_(t,"manage.add-chat-attachment"),"manage.add-chat-attachement":t=>_(t,"manage.add-chat-attachement"),"manage.add-chat-entry-and-any-attachments":t=>{let{cardId:C}=h.requireCardArgs(t),p=a(t,"role")||"user",o=a(t,"turn_id");return R(t,"manage.add-chat-entry-and-any-attachments"),l().manageAddChatEntryAndAnyAttachments({cardId:C,role:p,...typeof t.text=="string"?{text:t.text}:{},...o?{turn:o}:{},...Array.isArray(t.files)?{files:t.files}:{}})},"manage.patch-card":t=>{let{cardId:C}=h.requireCardArgs(t);return R(t,"manage.patch-card"),l().managePatchCard({cardId:C,patch:c(t,"patch")})},"manage.upsert-card":t=>{let{cardId:C}=h.requireCardArgs(t);return R(t,"manage.upsert-card"),l().manageUpsertCard({cardId:C,candidateCardContent:c(t,"candidate_card_content")})},"manage.remove-card":t=>{let{cardId:C}=h.requireCardArgs(t);return R(t,"manage.remove-card"),l().manageRemoveCard({cardId:C})},"manage.admin-read-card":async t=>{let{cardId:C}=h.requireCardArgs(t);return {status:"success",data:{cards:await l().adminReadCard({cardId:C})}}},"manage.admin-upsert-card":t=>{let C=a(t,"board_id"),p=a(t,"card_id");if(!C)throw Object.assign(new Error("manage.admin-upsert-card requires board_id"),{statusCode:400});if(!p)throw Object.assign(new Error("manage.admin-upsert-card requires card_id"),{statusCode:400});if(C!==e)throw Object.assign(new Error(`Unknown board_id: ${C}`),{statusCode:400});return l().adminUpsertCard({cardId:p,candidateCardContent:c(t,"candidate_card_content")})}}}function pe(n){let{boardContexts:e,cardOwnerIndex:a,cardContextForCard:l,readStatusSnapshot:h,readDataObjectsByToken:R,readCardRuntimeArtifacts:_,readCardFromStore:t,readCardDefinitions:C,processAccumulatedLaneInternal:p,reportSourceFetched:o,reportSourceFetchFailure:c,uploadCardFile:i,chatStorePublic:g,serverUrl:w,apiBasePath:y}=n;function u(){return e[0]??null}function m(){return {async status(){let s=await h();return s==null?{status:"fail",error:"Board status is unavailable"}:{status:"success",data:s}},async getOutputsDataObject(s){let r=s?.params?.key;return r?{status:"success",data:(await R())[r]}:{status:"fail",error:"getOutputsDataObject requires params.key"}},async getOutputsComputedValues(s){let r=s?.params?.key;return r?{status:"success",data:(await _())[r]?.computed_values}:{status:"fail",error:"getOutputsComputedValues requires params.key"}},async getOutputsFetchedSources(s){let r=s?.params?.key;if(!r)return {status:"fail",error:"getOutputsFetchedSources requires params.key"};let d=l(r)??u();return d?d.boardOps.getOutputsFetchedSources({params:{key:r}}):{status:"fail",error:"Board context is unavailable"}},async removeCard(s){let r=s?.params?.id;if(!r)return {status:"fail",error:"removeCard requires params.id"};let d=l(r)??u();return d?d.boardOps.removeCard({params:{id:r}}):{status:"fail",error:"Board context is unavailable"}},async cardRefreshedNotify(s){let r=s?.params?.cardId;if(!r)return {status:"fail",error:"cardRefreshedNotify requires params.cardId"};let d=l(r)??u();return d?d.boardOps.cardRefreshedNotify({params:{cardId:r}}):{status:"fail",error:"Board context is unavailable"}},async upsertCard(s){let r=s?.params?.cardId;if(!r)return {status:"fail",error:"upsertCard requires params.cardId"};let d=l(r)??u();if(!d)return {status:"fail",error:"Board context is unavailable"};let k=await d.boardOps.upsertCard({params:{cardId:r,restart:s.params.restart===true}});if(k.status!=="success")return k;if(a$1(d.boardAdapter)){let x=await p(true);if(x.status!=="success")return x}return k}}}function b(){let s=()=>{let r=u();if(!r?.nonCore)throw new Error("Board non-core adapter is not configured for MCP preflight/discovery tools");return r.nonCore};return {describeTaskExecutorCapabilities(r){return s().describeTaskExecutorCapabilities(r)},validateCardPreflight(r){return s().validateCardPreflight(r)},evalCardCompute(r){return s().evalCardCompute(r)},probeSourcePreflight(r){return s().probeSourcePreflight(r)},runSourcePreflight(r){return s().runSourcePreflight(r)},simulateCardCycle(r){return s().simulateCardCycle(r)}}}function v(){return {async get(s){let r=typeof s.params?.id=="string"?s.params.id:void 0;if(r){let d=await t(r);return d?{status:"success",data:{cards:[d]}}:{status:"success",data:{cards:[]}}}return {status:"success",data:{cards:await C()}}},async set(s){let r=s.body;if(r==null)return {status:"fail",error:"set requires a body (card object or array of cards)"};let d=Array.isArray(r)?r:[r];for(let k of d){let x=k,I=typeof x.id=="string"?x.id:"";if(!I)return {status:"fail",error:"each card must have a string `id` field"};let T=a.get(I)??0,L=e[T]??u();if(!L)return {status:"fail",error:"Board context is unavailable"};let N=await L.cardStoreOps.set({body:x});if(N.status!=="success")return N;a.set(I,T);}return {status:"success",data:{count:d.length}}},async del(s){let r=[s.params?.id,...s.body?.ids??[]].filter(d=>typeof d=="string"&&!!d);if(r.length===0)return {status:"fail",error:"del requires body.ids (string[]) or params.id"};for(let d of r){let k=l(d)??u();if(!k)return {status:"fail",error:"Board context is unavailable"};let x=await k.cardStoreOps.del({params:{id:d}});if(x.status!=="success")return x;a.delete(d);}return {status:"success",data:{count:r.length}}},async patch(s){let r=typeof s.params?.id=="string"?s.params.id:void 0,d=typeof s.params?.path=="string"?s.params.path:void 0;if(!r||!d)return {status:"fail",error:"patch requires params.id and params.path"};let k=l(r)??u();return k?k.cardStoreOps.patch(s):{status:"fail",error:"Board context is unavailable"}},async appendFiles(s){let r=typeof s.params?.id=="string"?s.params.id:void 0;if(!r)return {status:"fail",error:"appendFiles requires params.id"};let d=l(r)??u();return d?d.cardStoreOps.appendFiles(s):{status:"fail",error:"Board context is unavailable"}}}}function A(){return a$2({board:m(),nonCore:b(),cardStore:v(),chatStore:g,processAccumulated:()=>p(true),sourceFetchDone:({token:s,ref:r})=>o(s,r),sourceFetchFailed:({token:s,reason:r})=>c(s,r),uploadCardFile({cardId:s,fileName:r,contentType:d,bytes:k,suppressChatRecordWrite:x}){return i(s,r,d,k,{inChat:true,...x===true?{suppressChatRecordWrite:true}:{}})},buildFileDownloadUrl({cardId:s,fileIdx:r,storedName:d}){let k=`${w||""}${y}/cards/${encodeURIComponent(s)}/files/${r}`;return d?`${k}?sn=${encodeURIComponent(d)}`:k},readFetchedSourceJsonByRef({cardId:s,ref:r}){let d=l(s)??u();if(!d||a$1(d.boardAdapter))return null;let I=d.boardAdapter.resolveBlob(b$1(r)).trim();return I?JSON.parse(I):null}})}return {mcpBoardFacade:m,mcpNonCoreFacade:b,mcpCardStoreFacade:v,createMcpFacade:A}}export{H as a,V as b,z as c,B as d,j as e,D as f,q as g,Q as h,ee as i,re as j,oe as k,se as l,de as m,pe as n};//# sourceMappingURL=chunk-QJVR3FWQ.js.map
2
+ //# sourceMappingURL=chunk-QJVR3FWQ.js.map
@@ -0,0 +1,2 @@
1
+ import {d}from'./chunk-3KC6LBOG.js';function s(r){let e=d(r);return {isValid:e.ok,issues:e.errors}}export{s as a};//# sourceMappingURL=chunk-YBYXCFAI.js.map
2
+ //# sourceMappingURL=chunk-YBYXCFAI.js.map