yaml-flow 8.9.0 → 8.9.2

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 (75) hide show
  1. package/browser/asset-integrity.json +5 -5
  2. package/browser/live-cards.schema.json +1 -6
  3. package/browser/server-runtime-controlface.js +4 -4
  4. package/examples/board/test/server-http-test-browser.ts +22 -6
  5. package/examples/board/test/server-http-test.js +22 -6
  6. package/lib/board-live-cards-mcp.cjs +1 -1
  7. package/lib/board-live-cards-mcp.d.cts +6 -0
  8. package/lib/board-live-cards-mcp.d.ts +6 -0
  9. package/lib/board-live-cards-mcp.js +1 -1
  10. package/lib/board-live-cards-node.cjs +2 -2
  11. package/lib/board-live-cards-node.js +1 -1
  12. package/lib/board-live-cards-public.cjs +1 -1
  13. package/lib/board-live-cards-public.js +1 -1
  14. package/lib/board-live-cards-server-runtime.cjs +1 -1
  15. package/lib/board-live-cards-server-runtime.js +1 -1
  16. package/lib/board-livegraph-runtime/index.cjs +1 -1
  17. package/lib/board-livegraph-runtime/index.js +1 -1
  18. package/lib/card-compute/index.cjs +1 -1
  19. package/lib/card-compute/index.d.cts +0 -1
  20. package/lib/card-compute/index.d.ts +0 -1
  21. package/lib/card-compute/index.js +1 -1
  22. package/lib/card-validation.cjs +1 -1
  23. package/lib/card-validation.js +1 -1
  24. package/lib/{chunk-37FDOKDK.js → chunk-4VZL3GWU.js} +3 -3
  25. package/lib/{chunk-4HIEOBJC.js → chunk-7E5NKZIO.js} +2 -2
  26. package/lib/{chunk-XQAHHUZO.cjs → chunk-7W4QQX7S.cjs} +2 -2
  27. package/lib/chunk-BVQISI6G.js +3 -0
  28. package/lib/chunk-CBRVINMT.js +2 -0
  29. package/lib/chunk-E46UCDYN.js +2 -0
  30. package/lib/{chunk-OPNGCSXJ.js → chunk-GLKWEPX6.js} +2 -2
  31. package/lib/{chunk-JAL25FGA.cjs → chunk-GTHQJXYW.cjs} +2 -2
  32. package/lib/chunk-IRGTOCEU.cjs +2 -0
  33. package/lib/chunk-JHXRGPL7.cjs +3 -0
  34. package/lib/chunk-KSKPS6OO.cjs +2 -0
  35. package/lib/chunk-M53MX233.js +3 -0
  36. package/lib/chunk-N5RUH4NG.cjs +3 -0
  37. package/lib/chunk-NLC4FN7V.cjs +2 -0
  38. package/lib/chunk-OEL5P7XE.js +2 -0
  39. package/lib/chunk-RWAEV253.js +2 -0
  40. package/lib/chunk-UG55PF75.cjs +2 -0
  41. package/lib/{chunk-RZRIXQ6A.cjs → chunk-WYKCHXBZ.cjs} +3 -3
  42. package/lib/chunk-YXKWIPQM.cjs +3 -0
  43. package/lib/chunk-ZA4FS27N.js +3 -0
  44. package/lib/cloud-storage.cjs +1 -1
  45. package/lib/cloud-storage.js +1 -1
  46. package/lib/continuous-event-graph/index.cjs +1 -1
  47. package/lib/continuous-event-graph/index.js +1 -1
  48. package/lib/firestore-storage/index.cjs +1 -1
  49. package/lib/firestore-storage/index.js +1 -1
  50. package/lib/index.cjs +2 -2
  51. package/lib/index.js +1 -1
  52. package/lib/localstorage-storage/index.cjs +1 -1
  53. package/lib/localstorage-storage/index.js +1 -1
  54. package/lib/server-runtime/index.cjs +1 -1
  55. package/lib/server-runtime/index.js +1 -1
  56. package/lib/server-runtime-controlface/index.cjs +1 -1
  57. package/lib/server-runtime-controlface/index.js +1 -1
  58. package/lib/server-runtime-core/index.cjs +1 -1
  59. package/lib/server-runtime-core/index.js +1 -1
  60. package/package.json +1 -1
  61. package/schema/live-cards.schema.json +1 -6
  62. package/lib/chunk-3KC6LBOG.js +0 -3
  63. package/lib/chunk-3S7LV2HZ.cjs +0 -2
  64. package/lib/chunk-3T5TMAWG.cjs +0 -3
  65. package/lib/chunk-DQPBAB5Z.cjs +0 -2
  66. package/lib/chunk-FO4KNVU7.cjs +0 -2
  67. package/lib/chunk-HWYMZK3N.cjs +0 -3
  68. package/lib/chunk-IXZG74EW.cjs +0 -2
  69. package/lib/chunk-JMDHDY6M.js +0 -2
  70. package/lib/chunk-JYVYAAXT.js +0 -3
  71. package/lib/chunk-P3R6TXII.js +0 -3
  72. package/lib/chunk-R4YASXSJ.js +0 -2
  73. package/lib/chunk-SJANU3PL.cjs +0 -3
  74. package/lib/chunk-VBYNMTWC.js +0 -2
  75. package/lib/chunk-YBYXCFAI.js +0 -2
@@ -0,0 +1,3 @@
1
+ 'use strict';var chunk7JVHYHT2_cjs=require('./chunk-7JVHYHT2.cjs'),chunkVQCIOKJV_cjs=require('./chunk-VQCIOKJV.cjs'),chunkG4XXRHL2_cjs=require('./chunk-G4XXRHL2.cjs'),chunkUG55PF75_cjs=require('./chunk-UG55PF75.cjs'),chunk5XLFPPTY_cjs=require('./chunk-5XLFPPTY.cjs'),chunk2RIHC5TZ_cjs=require('./chunk-2RIHC5TZ.cjs');function lt(e){return typeof e=="string"&&e.trim().length>0}function ft(e,t){if(!e||typeof e!="object")throw new Error(`${t}: adapter.selfRef is required`);if(!lt(e.howToRun))throw new Error(`${t}: adapter.selfRef.howToRun is required`);if(!lt(e.whatToRun))throw new Error(`${t}: adapter.selfRef.whatToRun is required`)}function mt(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 Xt(e,t="callbackTransport"){return {createCallback(n){let a=e();return ft(a,t),{token:n,via:a}}}}function $e(e){return Xt(()=>e,"createStaticExecutionRefCallbackTransport")}function mr(e){return $e({meta:"board-live-cards",howToRun:"http:post",whatToRun:chunkVQCIOKJV_cjs.a({kind:"http-url",value:String(e||"").trim()})})}function pr(e){return $e({meta:"board-live-cards",howToRun:"in-process-loop",whatToRun:chunkVQCIOKJV_cjs.a({kind:"in-process-loop",value:String(e||"").trim()})})}function gr(e){let t=typeof e=="string"?{notifyChannel:e}:e??{},n={};return t.notifyChannel&&(n.notifyChannel=t.notifyChannel),t.boardRuntimeStoreRef&&(n.boardRuntimeStoreRef=t.boardRuntimeStoreRef),t.queueStoreRef&&(n.queueStoreRef=t.queueStoreRef),$e({meta:"board-live-cards",howToRun:"built-in",whatToRun:chunkVQCIOKJV_cjs.a({kind:"built-in",value:"board-live-cards"}),...Object.keys(n).length>0?{extra:n}:{}})}function Ie(e){return typeof e=="object"&&e!==null&&"then"in e&&typeof e.then=="function"}function Je(e,t){return Ie(e)?e.then(t):t(e)}function gt(e,t){let n={...e};for(let a of t.deleteKeys)delete n[a];return {...n,...t.shallowMerge}}function kr(e,t){return {readValues(a){let s=e(a);return Je(s.listKeys(),d=>{let u=[...d].sort();if(u.length===0)return {version:null,values:{}};let c={},h=null;for(let y of u){let V=s.read(y);Ie(V)?h=(h??Promise.resolve()).then(async()=>{c[y]=await V;}):c[y]=V;}return h?h.then(()=>({version:t(c),values:c})):{version:t(c),values:c}})},writeValues(a,s,d){let u=e(a),c=null;for(let h of d){let y=u.delete(h);Ie(y)&&(c=(c??Promise.resolve()).then(()=>y).then(()=>{}));}for(let[h,y]of Object.entries(s)){let V=u.write(h,y);Ie(V)&&(c=(c??Promise.resolve()).then(()=>V).then(()=>{}));}return c?c.then(()=>t(s)):t(s)}}}function St(e,t){return {readSnapshot(n){return e.readValues(n)},commitSnapshot(n,a){if(a.schemaVersion!==t)throw new Error(`Unsupported snapshot schema version: ${a.schemaVersion}`);return Je(e.readValues(n),s=>{if(s.version!==a.expectedVersion)return {ok:false,reason:"version-mismatch",currentVersion:s.version};let d=gt(s.values,a);return Je(e.writeValues(n,d,a.deleteKeys),u=>({ok:true,newVersion:u}))})}}}function pt(e,t){if(!t)return e;let n=e.findIndex(a=>a.id===t);return n===-1?e:e.slice(n+1)}function kt(e){return {readEntriesAfterCursor(t){let n=pt(e.readAllEntries(),t);return n.length===0?{events:[],newCursor:t}:{events:n.map(a=>a.event),newCursor:n[n.length-1].id}},pendingCount(t){return pt(e.readAllEntries(),t).length},appendEvent(t){e.appendEntry({id:e.generateId(),event:t});}}}function Rr(e){return {appendEvent(t){return e.append(t).then(()=>{})},async readEntriesAfterCursor(t){let n=await e.readAfter(t||null);return {events:n.entries.map(a=>a.payload),newCursor:n.newCursor??t}}}}function Fe(e){return typeof e=="object"&&e!==null&&"then"in e&&typeof e.then=="function"}function de(e,t){return Fe(e)?e.then(t):t(e)}function Me(e,t){let n=null;for(let a of e){if(n){n=n.then(()=>t(a)).then(()=>{});continue}let s=t(a);Fe(s)&&(n=Promise.resolve(s).then(()=>{}));}return n??void 0}function Wt(e){if(e==null)return null;let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{return t}}function Zt(e,t){let n=e.match(t);return n?n[1]:null}function Rt(e,t,n){let a={},s=Me(e,d=>{let u=n(d);if(u)return de(t(d),c=>{a[u]=c;})});return Fe(s)?s.then(()=>a):a}function ht(e,t){return {readSourceData(n,a){return de(e.read(`${n}/${a}`),Wt)},ingestSourceDataStaged(n,a,s,d){return de(t(s),u=>e.write(`${n}/.staged/${d}/${a}`,u))},commitSourceData(n,a,s){let d=`${n}/.staged/${s}/${a}`,u=`${n}/${a}`;return e.renameKey(d,u)},hasSource(n,a){return e.exists(`${n}/${a}`)},listSources(n){return de(e.listKeys(`${n}/`),a=>a.filter(s=>!s.includes("/.staged/")).map(s=>s.slice(`${n}/`.length)))}}}function er(e,t){let n=(a,s)=>{try{let d=s(a);return Fe(d)?d.catch(u=>t(a,u instanceof Error?u.message:String(u))):void 0}catch(d){try{return t(a,d instanceof Error?d.message:String(d))}catch{return}}};return {appendEntries(a,s){if(!(!a||s.length===0))return de(e.read(a),d=>e.write(a,[...d??[],...s]))},dispatchEntriesForJournalId(a,s){if(a)return de(e.read(a),d=>{let u=d;if(!(!u||u.length===0))return de(Me(u,c=>n(c,s)),()=>e.delete(a))})}}}function tr(e,t,n){return {readRuntime(a){return de(e.read(t(a)),s=>s??n())},writeRuntime(a,s){return e.write(t(a),s)}}}function yt(e){return {writeComputedValues(t,n){return e.write(`cards/${t}/computed_values`,n)},readComputedValues(t){return e.read(`cards/${t}/computed_values`)},readAllComputedValues(){return de(e.listKeys("cards/"),t=>Rt(t,n=>e.read(n),n=>Zt(n,/^cards\/([^/]+)\/computed_values$/)))},writeDataObjects(t){return Me(Object.entries(t),([n,a])=>{if(n)return a===void 0?e.delete(`data-objects/${n}`):e.write(`data-objects/${n}`,a)})},readDataObject(t){return e.read(`data-objects/${t}`)},readAllDataObjects(){return de(e.listKeys("data-objects/"),t=>Rt(t,n=>e.read(n),n=>n.slice(13)))},writeStatusSnapshot(t){return e.write("status",t)},readStatusSnapshot(){return e.read("status")}}}function He(e,t){function n(){return e.readIndex()??{}}function a(s,d,u){let c=String(d||"").split(".").filter(Boolean);if(c.length===0)return u&&typeof u=="object"&&!Array.isArray(u)?u:{value:u};let h={...s},y=h;for(let V=0;V<c.length-1;V++){let z=c[V],Y=y[z],ee=Y&&typeof Y=="object"&&!Array.isArray(Y)?{...Y}:{};y[z]=ee,y=ee;}return y[c[c.length-1]]=u,h}return {readCard(s){let d=n()[s];return !d||!e.cardExists(d.key)?null:e.readCard(d.key)},readCardKey(s){return n()[s]?.key??null},readAllCards(){let s=[];for(let[d,u]of Object.entries(n())){if(!e.cardExists(u.key))continue;let c=e.readCard(u.key);c?s.push(c):t?.(`[card-store] could not read card "${d}" at key "${u.key}"`);}return s},readChecksumIndex(){let s={};for(let[d,u]of Object.entries(n()))s[d]=u.checksum;return s},changedSince(s){let d=n(),u=[];for(let[c,h]of Object.entries(d))s[c]!==h.checksum&&u.push(c);for(let c of Object.keys(s))d[c]||u.push(c);return u},validateUpsert(s,d){let u=n(),c=u[s],h=Object.entries(u).find(([,y])=>y.key===d);return c&&c.key!==d?{ok:false,error:`Card id "${s}" is already mapped to key "${c.key}", cannot remap to "${d}"`}:h&&h[0]!==s?{ok:false,error:`Key "${d}" is already mapped to card id "${h[0]}", cannot remap to "${s}"`}:{ok:true}},writeCard(s,d,u){let c=n(),h=u??c[s]?.key??e.defaultCardKey(s),y=e.writeCard(h,d);c[s]={key:h,checksum:y,updatedAt:new Date().toISOString()},e.writeIndex(c);},patchCard(s,d,u){let c=n(),h=c[s];if(!h||!e.cardExists(h.key))throw new Error(`card "${s}" not found`);let y=e.readCard(h.key);if(!y||typeof y!="object"||Array.isArray(y))throw new Error(`card "${s}" is not patchable`);let V=a(y,d,u),z=e.writeCard(h.key,V);c[s]={key:h.key,checksum:z,updatedAt:new Date().toISOString()},e.writeIndex(c);},removeCard(s){let d=n(),u=d[s];u&&(e.removeCard(u.key),delete d[s],e.writeIndex(d));},readIndex(){return n()}}}function _e(e,t){return ht(e,t)}function vt(e){return kt(e)}var Oe="v1",he="board/graph",xt="board/lastJournalProcessedId";function Tr(e){return `cards/${e}/runtime`}function Et(e){return St(e,Oe)}function Pe(e){function t(n){let a=e.read(n);return a==null?null:typeof a=="string"?a:JSON.stringify(a)}return {readTaskExecutorRef(){let n=t("task-executor");if(n?.trim())return chunk7JVHYHT2_cjs.c(n.trim())},writeTaskExecutorRef(n){e.write("task-executor",chunk7JVHYHT2_cjs.b(n));},readChatHandlerFlow(){return e.read("chat-handler-flow")},writeChatHandlerFlow(n){e.write("chat-handler-flow",n);},readBoardRuntimeStoreRef(){return t("board-runtime-store-ref")},writeBoardRuntimeStoreRef(n){e.write("board-runtime-store-ref",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);},readQueueStoreRef(){return t("queue-store-ref")},writeQueueStoreRef(n){e.write("queue-store-ref",n);},readScratchStoreRef(){return t("scratch-store-ref")},writeScratchStoreRef(n){e.write("scratch-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);},readFetchedSourcesStoreRef(){return t("fetched-sources-store-ref")},writeFetchedSourcesStoreRef(n){e.write("fetched-sources-store-ref",n);}}}function Tt(e){return yt(e)}function Ct(e){return e?{lastRequestedToken:e.lastRequestedToken,lastCompletedToken:e.lastCompletedToken,lastCompletionStatus:e.lastCompletionStatus??(e.lastCompletedToken?"success":"not-started"),queueRequestedToken:e.queueRequestedToken}:{lastCompletionStatus:"not-started"}}function rr(e){return e?.lastRequestedToken?e.lastCompletedToken!==e.lastRequestedToken:false}function bt(e,t){return e?.lastRequestedToken?rr(e)?"in-flight":!e.lastCompletedToken||e.lastCompletedToken<t?"dispatch":"idle":"dispatch"}function nr(e,t){return {...e,lastCompletedToken:t,lastCompletionStatus:"success"}}function wt(e,t){return {...e,lastCompletedToken:t,lastCompletionStatus:"failure"}}function Be(e,t){let n=t.state.tasks,a=t.config.tasks,s=Object.keys(n),d=chunkG4XXRHL2_cjs.r(t),u={completed:0,failed:0,in_progress:0,pending:0,blocked:0,unresolved:0},c=new Map;for(let T of d.pending)c.set(T.taskName,T.waitingOn);for(let T of d.unresolved)c.set(T.taskName,T.missingTokens);for(let T of d.blocked)c.set(T.taskName,T.failedTokens);let h=new Map;for(let[T,S]of Object.entries(a))for(let G of S.requires??[]){let U=h.get(G)??[];U.push(T),h.set(G,U);}let y=s.sort().map(T=>{let S=n[T],G=a[T]??{requires:[],provides:[]};S.status==="completed"?u.completed+=1:S.status==="failed"?u.failed+=1:S.status==="in-progress"&&(u.in_progress+=1);let U=G.requires??[],g=G.provides??[],i=Object.keys(S.data??{}).sort(),m=U.filter(P=>t.state.availableOutputs.includes(P)),b=U.filter(P=>!t.state.availableOutputs.includes(P)),I=c.get(T)??b,w=new Set;for(let P of g)for(let D of h.get(P)??[])D!==T&&w.add(D);let x=S.failedAt,K=S.error?{message:S.error,code:"TASK_FAILED",at:x,source:"task-runtime"}:void 0;return {name:T,status:S.status,error:K,requires:U,requires_satisfied:m,requires_missing:b,provides_declared:g,provides_runtime:i,blocked_by:I,unblocks:Array.from(w).sort(),runtime:{attempt_count:S.executionCount??0,restart_count:S.retryCount??0,in_progress_since:S.status==="in-progress"?S.startedAt??null:null,last_transition_at:S.lastUpdated??null,last_completed_at:S.completedAt??null,last_restarted_at:S.startedAt??null,status_age_ms:S.lastUpdated?0:null}}});u.pending=d.pending.length,u.blocked=d.blocked.length,u.unresolved=d.unresolved.length;let V=y.map(T=>({name:T.name,fanOut:T.unblocks.length})).sort((T,S)=>S.fanOut-T.fanOut||T.name.localeCompare(S.name)),z=V.length>0?V[0]:{name:null,fanOut:0},Y=new Set;for(let T of Object.values(a))for(let S of T.requires??[])Y.add(S);let ee=0;for(let[T,S]of Object.entries(a)){let G=(S.requires??[]).length===0,g=(S.provides??[]).some(i=>(h.get(i)??[]).some(m=>m!==T));G&&!g&&(ee+=1);}return {schema_version:"v1",meta:{board:{path:e}},summary:{card_count:s.length,completed:u.completed,eligible:d.eligible.length,pending:u.pending,blocked:u.blocked,unresolved:u.unresolved,failed:u.failed,in_progress:u.in_progress,orphan_cards:ee,topology:{edge_count:Array.from(Y).length,max_fan_out_card:z.name,max_fan_out:z.fanOut}},cards:y}}function or(){return new Date().toISOString()}function At(e,t,n,a,s,d,u){return async c=>{let h=[],y=n.cardStore.readCard(c.nodeId);if(!y)return "task-initiate-failure";let V=y.id,z=y.card_data??{},Y=y.source_defs??[],ee=Y,T=n.cardRuntimeStore.readRuntime(V),S=false,G=()=>{S&&(n.cardRuntimeStore.writeRuntime(V,T),S=false);},U=E=>Ct(T._sources[E]),g=(E,v)=>{T._sources[E]=Ct(v),S=true;},i=c.taskState?.executionCount??0;if(T._lastExecutionCount!==i&&(T._sources={},T._lastExecutionCount=i,S=true),c.update){let E=c.update,v=E.outputFile;if(v){let B=U(v);if(E.failure){let L=E.rqt??B.lastRequestedToken??B.queueRequestedToken;L&&g(v,wt(B,L));}else {let L=E.rqt;if(!B.lastCompletedToken||L>B.lastCompletedToken){let te=typeof E.deliveryToken=="string"?E.deliveryToken:void 0,j=false;te&&(j=n.fetchedSourcesStore.commitSourceData(V,v,te)),j?g(v,nr(B,L)):g(v,wt(B,L));}}G();}}let b={};for(let E of Y)if(E.outputFile){let v=n.fetchedSourcesStore.readSourceData(V,E.outputFile);v!==null&&(b[E.bindTo]=v);}let I={};for(let[E,v]of Object.entries(c.state??{}))if(v!==null&&typeof v=="object"&&!Array.isArray(v)){let B=v[E];I[E]=B!==void 0?B:v;}else I[E]=v;let w={id:V,card_data:{...z},requires:I,source_defs:Y,compute:y.compute};w._sourcesData=b,y.compute&&chunkUG55PF75_cjs.a.runSync(w,{sourcesData:b}),(d??n.outputStore.writeComputedValues.bind(n.outputStore))(V,w.computed_values??{});let x={...y},K=chunkUG55PF75_cjs.a.enrichSourcesSync(Array.isArray(y.source_defs)?y.source_defs:void 0,{card_data:y.card_data,requires:I}),P=e.value;x.source_defs=Array.isArray(K)?K.map(E=>({...E,boardDir:typeof E.boardDir=="string"&&E.boardDir?E.boardDir:P})):K;let D=or(),H=c.update?void 0:D,ne=ee.filter(E=>{let v=E.outputFile;if(typeof v!="string"||!v)return true;let B=U(v);H&&(B={...B,queueRequestedToken:H},g(v,B));let L=B.queueRequestedToken??B.lastRequestedToken??D,te=bt(B,L);return te==="in-flight"?false:te==="dispatch"});if(G(),ne.length>0){let E=false,v=D;for(let B of ne){let L=B.outputFile;if(typeof L!="string"||!L)continue;let te=U(L),j=te.queueRequestedToken??D;g(L,{...te,lastRequestedToken:j}),v=j,E=true;}return E&&G(),E&&(h.push({taskKind:"source-fetch",payload:{boardRef:chunkVQCIOKJV_cjs.a(e),enrichedCard:x,callbackToken:c.callbackToken,rqt:v}}),n.executionRequestStore.appendEntries(t,h)),"task-initiated"}if(ee.some(E=>{let v=E.outputFile;if(typeof v!="string"||!v)return false;let B=U(v),L=B.queueRequestedToken??B.lastRequestedToken??D;return bt(B,L)==="in-flight"}))return "task-initiated";let pe=y.provides??[],ae={};for(let{bindTo:E,ref:v}of pe)ae[E]=chunkUG55PF75_cjs.a.resolve(w,v);return (u??n.outputStore.writeDataObjects.bind(n.outputStore))(ae),a(c.nodeId,ae),h.length>0&&n.executionRequestStore.appendEntries(t,h),"task-initiated"}}var Ge={settings:{completion:"manual",refreshStrategy:"data-changed"},tasks:{}};function It(e){return {[he]:e.graph,[xt]:e.lastDrainedJournalId,board:{runtimeByCardId:e.runtimeByCardId}}}function Ft(e){let t=e[he],n=e[xt],s=e.board?.runtimeByCardId;if(!t||typeof t!="object")throw new Error(`State snapshot is missing required key: ${he}`);return {graph:t,lastDrainedJournalId:typeof n=="string"?n:"",runtimeByCardId:s&&typeof s=="object"?s:{}}}function _t(e){let t=e.requires;return {provides:e.provides?.map(a=>a.bindTo)??[],taskHandlers:["card-handler"],description:e.meta?.title??e.id,...t&&t.length>0?{requires:t}:{}}}function A(e){return e!==void 0?{status:"success",data:e}:{status:"success"}}function R(e){return {status:"fail",error:e}}function _(e){return {status:"error",error:e instanceof Error?e.message:String(e)}}function sr(e){let t=new TextEncoder().encode(e),n=Array.from(t,a=>String.fromCharCode(a)).join("");return btoa(n).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function Bt(e){let t=e.replace(/-/g,"+").replace(/_/g,"/"),n=t+"=".repeat((4-t.length%4)%4),a=atob(n),s=Uint8Array.from(a,d=>d.charCodeAt(0));return new TextDecoder().decode(s)}function qe(e){try{let t=JSON.parse(Bt(e));return typeof t?.t=="string"?{taskName:t.t}:null}catch{return null}}function Ot(e){return sr(JSON.stringify(e))}function Pt(e){try{let t=JSON.parse(Bt(e));return typeof t?.cbk=="string"&&typeof t?.cid=="string"&&typeof t?.b=="string"&&typeof t?.d=="string"?t:null}catch{return null}}function Z(){return new Date().toISOString()}function ar(e){let t=new Map;return {appendEntries(n,a){if(!n||a.length===0)return;let s=t.get(n)??[];t.set(n,[...s,...a]);},dispatchEntriesForJournalId(n,a){if(!n)return;let s=t.get(n);if(!(!s||s.length===0)){for(let d of s)try{a(d);}catch(u){try{e(d,u instanceof Error?u.message:String(u));}catch{}}t.delete(n);}}}}function jr(e,t,n={}){mt(t.callbackTransport,"createBoardLiveCardsPublic");let a=t.callbackTransport,s=t.onWarn??(()=>{}),d=chunkVQCIOKJV_cjs.a(e),u=n.boardRuntimeStoreRef,c=n.scratchStoreRef,h=n.taskExecutorRef,y=n.chatHandlerFlow,V=n.emitNotification??(o=>{if(!t.publishBoardChangeNotifications)return;let r=o.kind==="notification-batch"?o.notifications:[o];return t.publishBoardChangeNotifications(r)});function z(){if(!u)throw new Error(`Board at ${e.value} has no board runtime store configured. Pass boardRuntimeStoreRef at construction or init.`);return u}function Y(o){if(o.length!==0)try{let r=chunk2RIHC5TZ_cjs.e(o),l=chunk2RIHC5TZ_cjs.f({kind:"notification-batch",notifications:r}),p=V(l);p&&typeof p.catch=="function"&&p.catch(C=>s(`[board-live-cards-public] emitNotification failed: ${C instanceof Error?C.message:String(C)}`));}catch(r){s(`[board-live-cards-public] emitNotification failed: ${r instanceof Error?r.message:String(r)}`);}}function ee(){let o=S().readCardStoreRef();if(!o)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(o);return {readIndex(){return r.read("_index")},writeIndex(l){r.write("_index",l);},readCard(l){return r.read(l)},writeCard(l,p){return r.write(l,p),t.hashFn(p)},removeCard(l){r.delete(l);},cardExists(l){return r.read(l)!==null},defaultCardKey(l){return l}}}let T={readValues(o){let r=t.kvStorageForRef(z()),l=r.listKeys().sort();if(l.length===0)return {version:null,values:{}};let p={};for(let C of l)p[C]=r.read(C);return {version:t.hashFn(p),values:p}},writeValues(o,r,l){let p=t.kvStorageForRef(z());for(let C of l)p.delete(C);for(let[C,F]of Object.entries(r))p.write(C,F);return t.hashFn(r)}},S=()=>Pe(t.kvStorageForRef(z())),G=()=>Et(T),U=()=>vt(t.journalAdapterForRef(z())),g=()=>He(ee(),s),i=()=>{let o=S().readOutputsStoreRef();if(!o)throw new Error(`Board at ${e.value} has no outputs store configured. Run: init --outputs-store-ref <b64-ref>`);return Tt(t.kvStorageForRef(o))};function m(){return h??S().readTaskExecutorRef()}function b(){return !!G().readSnapshot(e.value).values[he]}function I(){let o=G().readSnapshot(e.value);if(!o.values[he])throw new Error(`Board not initialized at ${e.value}`);return Ft(o.values)}function w(o,r){let l=G().commitSnapshot(e.value,{schemaVersion:Oe,expectedVersion:r,commitId:t.genId(),committedAt:Z(),deleteKeys:[],shallowMerge:It(o)});if(!l.ok)throw new Error(`Snapshot commit failed (version mismatch): expected=${r??"null"} current=${l.currentVersion??"null"}`)}function x(o){U().appendEvent(o);}async function K(){let r=ar((f,k)=>{let O=f.payload,N=(O?.enrichedCard??{}).id??O?.cardId??"unknown";x({type:"task-failed",taskName:N,error:k,timestamp:Z()});}),l=I(),p=chunkG4XXRHL2_cjs.q(l.graph),{events:C,newCursor:F}=U().readEntriesAfterCursor(l.lastDrainedJournalId),$=j(),q=_e($,f=>t.resolveBlob(f)),J={...l.runtimeByCardId},W=new Map,Se={readRuntime(f){return W.get(f)??J[f]??{_sources:{}}},writeRuntime(f,k){W.set(f,k),J[f]=k;}},ke=[],oe=new Map,we={readSourceData(f,k){let O=`${f}/${k}`;return oe.has(O)?oe.get(O):q.readSourceData(f,k)},ingestSourceDataStaged(f,k,O,ue){q.ingestSourceDataStaged(f,k,O,ue);},commitSourceData(f,k,O){let ue=`${f}/.staged/${O}/${k}`,N=$.read(ue);if(N==null){let Q=$.keyRef?.(ue);Q&&(N=t.resolveBlob(Q));}if(N==null)return false;let se=`${f}/${k}`,fe=N.trim();try{oe.set(se,JSON.parse(fe));}catch{oe.set(se,fe);}return ke.push({cardId:f,outputFile:k,deliveryToken:O}),true},hasSource(f,k){let O=`${f}/${k}`;return oe.has(O)?true:q.hasSource(f,k)},listSources(f){let k=q.listSources(f),O=new Set;for(let N of oe.keys())N.startsWith(`${f}/`)&&O.add(N.slice(`${f}/`.length));let ue=new Set([...k,...O]);return Array.from(ue)}},le={cardStore:g(),cardRuntimeStore:Se,fetchedSourcesStore:we,outputStore:i(),executionRequestStore:r},Re=[],Ve=[],je=[],Ke=new Map,Xe=new Set,Qt=(f,k)=>{Re.push({type:"task-completed",taskName:f,data:k,timestamp:Z()});},Ne=(f,k)=>{x({type:"task-failed",taskName:f,error:k,timestamp:Z()});},ve=chunkG4XXRHL2_cjs.u(p,{handlers:{"card-handler":At(e,F,le,Qt,Ne,(f,k)=>{Ve.push({cardId:f,values:k});},f=>{je.push(f);})},onNodeRemoved:f=>{Ke.delete(f),W.delete(f),delete J[f],Xe.add(f);}});for(Re=C;Re.length>0;){let f=Re;Re=[];for(let k of f)if(k.type==="task-restart"){let O=le.cardStore.readCard(k.taskName);O&&Ke.set(k.taskName,O);}ve.pushAll(f),await ve.waitForHandlers();}let We=ve.getState();await ve.dispose({wait:true});let zt=G().readSnapshot(e.value).version;w({lastDrainedJournalId:F,graph:chunkG4XXRHL2_cjs.p(We),runtimeByCardId:J},zt);for(let{cardId:f,values:k}of Ve)le.outputStore.writeComputedValues(f,k);for(let f of je)le.outputStore.writeDataObjects(f);for(let{cardId:f,outputFile:k,deliveryToken:O}of ke)q.commitSourceData(f,k,O);let xe;try{xe=Be(d,We),le.outputStore.writeStatusSnapshot(xe);}catch(f){s(`[board-live-cards-public] status publish failed: ${f instanceof Error?f.message:String(f)}`);}let ye=[];for(let{cardId:f,values:k}of Ve)ye.push({kind:"computed_values",cardId:f,values:k});for(let f of je)for(let[k,O]of Object.entries(f))k&&ye.push({kind:"data_object",key:k,payload:O});for(let[f,k]of Ke)ye.push({kind:"card_refreshed",cardId:f,card:k});for(let f of Xe)ye.push({kind:"card_removed",cardId:f});xe!==void 0&&ye.push({kind:"status",status:xe}),Y(ye);let Ce=m()??{howToRun:"built-in",whatToRun:chunkVQCIOKJV_cjs.a({kind:"built-in",value:"source-cli-task-executor"})},Ze=t.supportsDirectSourceOutput?.(Ce)===true;r.dispatchEntriesForJournalId(F,f=>{if(f.taskKind!=="source-fetch"){s(`[process-accumulated-events] unknown taskKind "${f.taskKind}" \u2014 skipping`);return}let k=f.payload,O=k.enrichedCard?.id??"unknown",ue=k.enrichedCard?.source_defs??[];if(Ce.howToRun==="queue-storage"&&Ze){try{let N=t.queueStorageForRef(P(),"task-executor"),se=typeof Ce.extra?.boardId=="string"?Ce.extra.boardId:void 0,fe=[];for(let Q of ue){if(!Q.outputFile){s(`[dispatch] source "${Q.bindTo}" has no outputFile \u2014 skipping`);continue}let Ee=t.genId(),Te=`${O}/.staged/${Ee}/${Q.outputFile}`,et=$.keyRef?.(Te);if(!et)continue;let tt={ref:chunkVQCIOKJV_cjs.a(et),deliveryToken:Ee,outputFile:Q.outputFile,cardId:O},Yt=Ot({cbk:k.callbackToken,rg:e.value,br:chunkVQCIOKJV_cjs.a(e),cid:O,b:Q.bindTo,d:Q.outputFile,cs:void 0,rqt:k.rqt,dt:tt.deliveryToken});fe.push({...se?{boardId:se}:{},ref:Ce,args:{source_def:Q,base_ref:chunkVQCIOKJV_cjs.a(e),callback:a.createCallback(Yt),output:tt}});}fe.length>0&&N.enqueueMany(fe);}catch(N){Ne(O,N instanceof Error?N.message:String(N));}return}for(let N of ue){if(!N.outputFile){s(`[dispatch] source "${N.bindTo}" has no outputFile \u2014 skipping`);continue}let se;if(Ze){let Q=t.genId(),Ee=`${O}/.staged/${Q}/${N.outputFile}`,Te=$.keyRef?.(Ee);Te&&(se={ref:chunkVQCIOKJV_cjs.a(Te),deliveryToken:Q,outputFile:N.outputFile,cardId:O});}let fe=Ot({cbk:k.callbackToken,rg:e.value,br:chunkVQCIOKJV_cjs.a(e),cid:O,b:N.bindTo,d:N.outputFile,cs:void 0,rqt:k.rqt,...se?{dt:se.deliveryToken}:{}});t.dispatchExecution(Ce,{source_def:N,base_ref:chunkVQCIOKJV_cjs.a(e),callback:a.createCallback(fe),...se?{output:se}:{}}).catch(Q=>Ne(O,Q instanceof Error?Q.message:String(Q)));}});}function P(){let o=S().readQueueStoreRef();if(!o)throw new Error(`Board at ${e.value} has no queue store configured. Run: init --queue-store-ref <b64-ref>`);return o}function D(){let o=t.queueStorageForRef(P(),"process-accumulated");o.enqueueIfAbsent?o.enqueueIfAbsent({boardRef:chunkVQCIOKJV_cjs.a(e)},`process-accumulated:${chunkVQCIOKJV_cjs.a(e)}`):o.enqueue({boardRef:chunkVQCIOKJV_cjs.a(e)}),t.requestProcessAccumulated?.();}function H(){let o=t.queueStorageForRef(P(),"process-accumulated");for(;;){let r=o.lease({max:64,visibilityMs:1e3});if(r.length<=0)return;for(let l of r)o.ack(l.id,l.leaseToken);if(r.length<64)return}}async function ne(){try{let o=()=>{let l=I(),{events:p}=U().readEntriesAfterCursor(l.lastDrainedJournalId);p.length<=0||D();},r=await chunkVQCIOKJV_cjs.c(t.lock,K,o);return A({ran:r!==!1})}catch(o){return _(o)}}function X(){D();}function pe(o){try{let r=o.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(u=o.params?.boardRuntimeStoreRef,!u)return R("init requires params.boardRuntimeStoreRef \u2014 pass the board runtime store ref here");if(!b()){let J=chunkG4XXRHL2_cjs.a(Ge);w({lastDrainedJournalId:"",graph:chunkG4XXRHL2_cjs.p(J),runtimeByCardId:{}},null);}let l=o.params?.outputsStoreRef;if(!l)return R("init requires params.outputsStoreRef \u2014 pass the outputs store ref here");let p=o.params?.queueStoreRef;if(!p)return R("init requires params.queueStoreRef \u2014 pass the queue store ref here");let C=o.params?.fetchedSourcesStoreRef;if(!C)return R("init requires params.fetchedSourcesStoreRef \u2014 pass the fetched sources store ref here");c=o.params?.scratchStoreRef;let F=o.params?.chatStoreRef;if(!F)return R("init requires params.chatStoreRef \u2014 pass the chat store ref here");let $=o.params?.artifactsStoreRef;if(!$)return R("init requires params.artifactsStoreRef \u2014 pass the artifacts store ref here");let q=S();q.writeBoardRuntimeStoreRef(u),q.writeCardStoreRef(r),q.writeOutputsStoreRef(l),q.writeQueueStoreRef(p),q.writeFetchedSourcesStoreRef(C),q.writeChatStoreRef(F),q.writeArtifactsStoreRef($);try{i().writeStatusSnapshot(Be(d,chunkG4XXRHL2_cjs.q(I().graph)));}catch{}return A()}catch(r){return _(r)}}function ae(o){try{let r=i().readStatusSnapshot();if(!r){r=Be(d,chunkG4XXRHL2_cjs.q(I().graph));try{i().writeStatusSnapshot(r);}catch{}}return A(r)}catch(r){return _(r)}}function E(o){try{let r=o.params?.id;if(!r)return R("removeCard requires params.id");try{t.kvStorage("card-upsert").delete(r);}catch{}return x({type:"task-removal",taskName:r,timestamp:Z()}),X(),A()}catch(r){return _(r)}}function v(o){try{let r=o.params?.cardId;if(!r)return R("addCardFiles requires params.cardId");let l=chunk5XLFPPTY_cjs.a(g(),{emitNotification:V}).appendFiles({params:{id:r},body:o.body});return l.status!=="success"?l:A({cardId:r,files_added:l.data.files_added,notified:!0})}catch(r){return _(r)}}function B(o){try{let r=o.params?.id;return r?(x({type:"task-restart",taskName:r,timestamp:Z()}),X(),A()):R("retrigger requires params.id")}catch(r){return _(r)}}async function L(o){return H(),ne()}function te(){let o=S().readFetchedSourcesStoreRef();if(!o)throw new Error(`Board at ${e.value} has no fetched sources store configured. Run: init --fetched-sources-store-ref <b64-ref>`);return o}function j(){return t.blobStorageForRef(te())}function re(o){try{let r=o.params?.cardId,l=o.params?.all,p=!!o.params?.restart;if(!r&&!l)return R("upsertCard requires --card-id <id> or --all");let C=l?g().readAllCards().map(F=>F.id):[r];for(let F of C)if(!g().readCard(F))return R(`Card "${F}" not found in board at ${e.value}`);for(let F of C){let $=g().readCard(F),q=_t($),J=t.hashFn(q),W=t.kvStorage("card-upsert"),Se=W.read(F),ke=Se?.taskConfigHash!==J;if(!(!ke&&!p)){if(ke){let oe=Se?.blobRef??g().readCardKey(F)??F;x({type:"task-upsert",taskName:F,taskConfig:q,timestamp:Z()}),W.write(F,{blobRef:oe,taskConfigHash:J,updatedAt:Z()});}p&&x({type:"task-restart",taskName:F,timestamp:Z()});}}return X(),A()}catch(r){return _(r)}}function ie(o){try{let r=o.params?.token;if(!r)return R("taskFailed requires params.token");let l=o.params?.error??"unknown error",p=qe(r);return p?(x({type:"task-failed",taskName:p.taskName,error:l,timestamp:Z()}),X(),A()):R("Invalid callback token")}catch(r){return _(r)}}function ge(o){try{let r=o.params?.token;if(!r)return R("taskProgress requires params.token");let p=(o.body??{}).update??{},C=qe(r);return C?(x({type:"task-progress",taskName:C.taskName,update:p,timestamp:Z()}),X(),A()):R("Invalid callback token")}catch(r){return _(r)}}function be(o){try{let r=o.params?.token,l=o.params?.ref;if(!r)return R("sourceDataFetched requires params.token");if(!l)return R("sourceDataFetched requires params.ref");let p=Pt(r);if(!p)return R("Invalid source token");let{cbk:C,cid:F,b:$,d:q,cs:J,rqt:W,dt:Se}=p,ke=_e(j(),Re=>t.resolveBlob(Re)),oe=Se||t.genId();Se||ke.ingestSourceDataStaged(F,q,chunkVQCIOKJV_cjs.b(l),oe);let we=qe(C);if(!we)return R("Invalid callback token embedded in source token");let le=Z();return x({type:"task-progress",taskName:we.taskName,update:{bindTo:$,outputFile:q,fetchedAt:le,deliveryToken:oe,sourceChecksum:J,rqt:W},timestamp:le}),X(),A()}catch(r){return _(r)}}function ce(o){try{let r=o.params?.token,l=o.params?.reason??"unknown";if(!r)return R("sourceDataFetchFailure requires params.token");let p=Pt(r);if(!p)return R("Invalid source token");let{cbk:C,b:F,d:$,cs:q,rqt:J}=p,W=qe(C);return W?(x({type:"task-progress",taskName:W.taskName,update:{bindTo:F,outputFile:$,failure:!0,reason:l,sourceChecksum:q,rqt:J},timestamp:Z()}),X(),A()):R("Invalid callback token embedded in source token")}catch(r){return _(r)}}function qt(o){try{let r=S().readCardStoreRef();return r?A({storeRef:r}):R(`Board at ${e.value} has no card store configured`)}catch(r){return _(r)}}function Vt(o){try{return A({storeRef:u??null})}catch(r){return _(r)}}function jt(o){try{let r=S().readOutputsStoreRef();return r?A({storeRef:r}):R(`Board at ${e.value} has no outputs store configured`)}catch(r){return _(r)}}function Kt(o){try{return A({storeRef:c??null})}catch(r){return _(r)}}function Nt(o){try{let r=S().readChatStoreRef();return A({storeRef:r})}catch(r){return _(r)}}function Dt(o){try{let r=S().readArtifactsStoreRef();return A({storeRef:r})}catch(r){return _(r)}}function Lt(o){try{let r=S().readFetchedSourcesStoreRef();return A({storeRef:r})}catch(r){return _(r)}}function $t(o){try{let r=o.params?.key;if(!r)return R("getConfig requires params.key");let l=S(),p;switch(r){case "task-executor":p=h??null;break;case "chat-handler-flow":p=y??null;break;case "board-runtime-store-ref":p=l.readBoardRuntimeStoreRef();break;case "card-store-ref":p=l.readCardStoreRef();break;case "outputs-store-ref":p=l.readOutputsStoreRef();break;case "scratch-store-ref":p=c??null;break;case "chat-store-ref":p=l.readChatStoreRef();break;case "artifacts-store-ref":p=l.readArtifactsStoreRef();break;case "fetched-sources-store-ref":p=l.readFetchedSourcesStoreRef();break;default:return R(`getConfig: unknown key "${r}"`)}return A({value:p})}catch(r){return _(r)}}function Jt(o){try{let r=o.params?.key;if(!r)return R("getOutputsDataObject requires params.key");let l=i().readDataObject(r);return A(l)}catch(r){return _(r)}}function Ue(o){try{return A(i().readAllDataObjects())}catch(r){return _(r)}}function Mt(o){try{let r=o.params?.key;if(!r)return R("getOutputsComputedValues requires params.key");let l=i().readComputedValues(r);return A(l)}catch(r){return _(r)}}function Qe(o){try{return A(i().readAllComputedValues())}catch(r){return _(r)}}function ze(){return _e(j(),o=>t.resolveBlob(o))}function Ye(o){let r=j().keyRef?.(o);if(!r)throw new Error("configured fetched-sources store does not support keyRef");return chunkVQCIOKJV_cjs.a(r)}function Ht(o){try{let r=o.params?.key;if(!r)return R("getOutputsFetchedSources requires params.key");let l=ze().listSources(r),p={};for(let C of l)p[C]=Ye(`${r}/${C}`);return A(p)}catch(r){return _(r)}}function Gt(o){try{let r=ze(),l=new Set;for(let C of j().listKeys()){let F=C.indexOf("/");F>0&&!C.includes("/.staged/")&&l.add(C.slice(0,F));}let p={};for(let C of l){let F=r.listSources(C);if(F.length>0){p[C]={};for(let $ of F)p[C][$]=Ye(`${C}/${$}`);}}return A(p)}catch(r){return _(r)}}function Ut(o){try{let r=g().readAllCards(),l=ae({});if(l.status!=="success")return l;let p=Ue({});if(p.status!=="success")return p;let C=Qe({});if(C.status!=="success")return C;let F=C.data,$={};for(let q of r){let J=typeof q?.id=="string"?q.id:null;if(!J)continue;let W=q.card_data&&typeof q.card_data=="object"&&!Array.isArray(q.card_data)?q.card_data:{};$[J]={schema_version:"v1",card_id:J,card_data:{...W},computed_values:F[J]&&typeof F[J]=="object"?F[J]:{}};}return A({cardDefinitions:r,statusSnapshot:l.data,dataObjectsByToken:p.data,cardRuntimeById:$})}catch(r){return _(r)}}return {init:pe,status:ae,getBoardRuntimeStoreRef:Vt,getCardStoreRef:qt,getOutputsStoreRef:jt,getScratchStoreRef:Kt,getChatStoreRef:Nt,getArtifactsStoreRef:Dt,getFetchedSourcesStoreRef:Lt,getConfig:$t,getOutputsDataObject:Jt,getAllOutputsDataObjects:Ue,getOutputsComputedValues:Mt,getAllOutputsComputedValues:Qe,getOutputsFetchedSources:Ht,getAllOutputsFetchedSources:Gt,buildSseOneShotPayload:Ut,removeCard:E,addCardFiles:v,retrigger:B,processAccumulatedEvents:L,upsertCard:re,taskFailed:ie,taskProgress:ge,sourceDataFetched:be,sourceDataFetchFailure:ce}}function Kr(e,t,n){let a=n?.taskExecutorRef,s=()=>{if(n){if(!n.boardRuntimeStoreRef)throw new Error(`Board at ${e.value} requires boardRuntimeStoreRef for non-core runtime operations.`);return Pe(t.kvStorageForRef(n.boardRuntimeStoreRef))}return Pe(t.kvStorage("config"))};function d(){let g=s().readCardStoreRef();if(!g)throw new Error(`Board at ${e.value} has no card store configured. Run: init --base-ref <ref> --store-ref <b64-ref>`);let i=t.kvStorageForRef(g);return {readIndex(){return i.read("_index")},writeIndex(m){i.write("_index",m);},readCard(m){return i.read(m)},writeCard(m,b){return i.write(m,b),t.hashFn(b)},removeCard(m){i.delete(m);},cardExists(m){return i.read(m)!==null},defaultCardKey(m){return m}}}let u=()=>He(d(),t.onWarn??(()=>{}));function c(){return a??s().readTaskExecutorRef()}async function h(g,i){let m=t.validateSchema(i),b=[],I=c();if(I&&Array.isArray(i.source_defs))for(let x of i.source_defs){let K=typeof x.bindTo=="string"?x.bindTo:"(unknown)";try{let P;try{P=await t.invokeExecutor(I,"validate-source-def",{timeout:t.executorTimeouts?.validationMs??1e4,input:JSON.stringify(x)});}catch(H){let ne=H;if(P=typeof ne?.stdout=="string"?ne.stdout:"",!P.trim()){b.push(`source "${K}": executor validate-source-def failed \u2014 ${H instanceof Error?H.message:String(H)}`);continue}}let D=JSON.parse(P.trim());if(!D.ok&&Array.isArray(D.errors))for(let H of D.errors)b.push(`source "${K}": ${H}`);}catch(P){b.push(`source "${K}": executor validate-source-def failed \u2014 ${P instanceof Error?P.message:String(P)}`);}}let w=[...m.errors,...b];return A({cardId:g,isValid:w.length===0,issues:w})}function y(g,i){let m=g.params?.sourceIdx,b=g.params?.outRef;if(m===void 0)return R(`${i} requires params.sourceIdx`);if(!g.body||typeof g.body!="object"||Array.isArray(g.body))return R(`${i} requires card JSON object in body`);let I=g.body,w=I["card-content"]??I,x=I["mock-projections"]??{},K=w.source_defs??[];if(m<0||m>=K.length)return R(`sourceIdx ${m} out of range (card has ${K.length} source(s))`);let P=K[m],D=typeof P.bindTo=="string"?P.bindTo:"source";return {src:P,bindTo:D,outRef:b,mockProjections:x}}async function V(g){try{if(!g.body||typeof g.body!="object"||Array.isArray(g.body))return R("validateCardPreflight requires card JSON object in body");let i=g.body,m=i["card-content"]??i,b=typeof m.id=="string"?m.id:"(unknown)";return await h(b,m)}catch(i){return _(i)}}async function z(g){try{let i=y(g,"probeSourcePreflight");if("status"in i)return i;let m=c();if(!m)return R("No task-executor registered for this board");try{let b={...i.src,_projections:i.mockProjections},I=await t.invokeExecutor(m,"probe-source-preflight",{timeout:i.src.timeout??t.executorTimeouts?.preflightMs??6e4,input:JSON.stringify(b)}),w=JSON.parse(I.trim());return w.ok?A({bindTo:i.bindTo,reachable:w.reachable,latencyMs:w.latencyMs,note:w.note}):R(w.error??"Preflight probe failed")}catch{return R("Executor does not support probe-source-preflight")}}catch(i){return _(i)}}async function Y(g){try{let i=y(g,"runSourcePreflight");if("status"in i)return i;let m=c();if(!m)return R("No task-executor registered for this board");try{let b={...i.src,_projections:i.mockProjections},I=await t.invokeExecutor(m,"run-source-preflight",{timeout:i.src.timeout??t.executorTimeouts?.probeMs??6e4,input:JSON.stringify(b)}),w=JSON.parse(I.trim());if(!w.ok)return A({bindTo:i.bindTo,ok:!1,result:null,issues:[w.error??"Preflight run failed"]});if(i.outRef){let x=chunkVQCIOKJV_cjs.b(i.outRef);t.absoluteBlob.write(x.value,JSON.stringify(w.resultValue,null,2));}return A({bindTo:typeof w.bindTo=="string"?w.bindTo:i.bindTo,ok:!0,result:w.resultValue??null,issues:[]})}catch(b){let I=b instanceof Error?b.message:String(b);return A({bindTo:i.bindTo,ok:!1,result:null,issues:[I]})}}catch(i){return _(i)}}async function ee(g){try{let i=c();if(!i)return R("No task-executor registered for this board");let m=await t.invokeExecutor(i,"describe-capabilities",{timeout:t.executorTimeouts?.describeMs??1e4});return A(JSON.parse(m.trim()))}catch(i){return _(i)}}function T(g){try{let i=g.body;if(!i||!Array.isArray(i.ops))return R("updatesInCardStore requires body.ops array");let m=i.ops,b=u();for(let I of m){let w=I.op,x=I.id;if(!x)return R('op is missing "id"');if(w==="update"){let K=I["card-content"];if(!K)return R(`update op for "${x}" is missing "card-content"`);b.writeCard(x,K);}else return R(`Unknown op type: "${w??"(none)"}"`)}return A()}catch(i){return _(i)}}function S(g){try{let i=g.body;if(!i||!Array.isArray(i.ids))return R("readFromCardStore requires body.ids array");let m=i.ids,b=u(),I=m.map(w=>({id:w,"card-content":b.readCard(w)}));return A({cards:I})}catch(i){return _(i)}}function G(g){try{if(!g.body||typeof g.body!="object"||Array.isArray(g.body))return R("evalCardCompute requires a JSON object in body");let i=g.body,m=i["card-content"]??i,b=typeof m.id=="string"?m.id:"(unknown)",I=i["mock-fetched-sources"]??{},w=i["mock-requires"]??{},x=m.compute;if(!x||!Array.isArray(x)||x.length===0)return A({cardId:b,ok:!0,computed_values:{},errors:[]});let K={id:b,card_data:m.card_data??{},requires:w,source_defs:m.source_defs,compute:x},P=chunkUG55PF75_cjs.a.runSync(K,{sourcesData:I}),D=P.node.computed_values??{},H=P.errors??[];return A({cardId:b,ok:H.length===0,computed_values:D,errors:H})}catch(i){return _(i)}}async function U(g){try{if(!g.body||typeof g.body!="object"||Array.isArray(g.body))return R("simulateCardCycle requires a JSON object in body");let i=g.body,m=i["card-content"]??i,b=typeof m.id=="string"?m.id:"(unknown)",I=i["mock-fetched-sources"]??{},w=i["mock-requires"]??{},x=await h(b,m),K=x.status==="success"?{isValid:x.data.isValid,issues:x.data.issues}:{isValid:!1,issues:[x.status==="fail"?x.error:"internal error"]},P=m.source_defs??[],D=m.card_data??{},H=[],ne=[];if(P.length>0){H=chunkUG55PF75_cjs.a.enrichSourcesSync(P,{card_data:D,requires:w});for(let j of H){let re=j.projections,ie=j._projections;if(re&&ie){for(let ge of Object.keys(re))if(ie[ge]===void 0){let be=typeof j.bindTo=="string"?j.bindTo:"(unknown)";ne.push({bindTo:be,key:ge,error:`Projection "${ge}" resolved to undefined`});}}}}let X=[],pe={...I},ae=i["task-executor-ref"],E=(ae?.howToRun&&ae?.whatToRun?ae:void 0)??c();for(let j=0;j<H.length;j++){let re=H[j],ie=typeof re.bindTo=="string"?re.bindTo:`source_${j}`;if(!E){X.push({bindTo:ie,skipped:!0,error:"No task executor configured"});continue}try{let ge={...re},be=await t.invokeExecutor(E,"run-source-preflight",{timeout:re.timeout??t.executorTimeouts?.preflightMs??6e4,input:JSON.stringify(ge)}),ce=JSON.parse(be.trim());ce.ok&&!Object.prototype.hasOwnProperty.call(I,ie)&&Object.prototype.hasOwnProperty.call(ce,"resultValue")&&(pe[ie]=ce.resultValue),X.push({bindTo:ie,reachable:ce.reachable,latencyMs:ce.latencyMs,error:ce.ok?void 0:ce.error});}catch{X.push({bindTo:ie,skipped:!0,error:"Executor does not support run-source-preflight"});}}let v=m.compute,B={},L=[];if(v&&Array.isArray(v)&&v.length>0){let j={id:b,card_data:D,requires:w,source_defs:m.source_defs,compute:v},re=chunkUG55PF75_cjs.a.runSync(j,{sourcesData:pe});B=re.node.computed_values??{},L=re.errors??[];}let te=K.isValid&&ne.length===0&&L.length===0&&X.every(j=>j.reachable!==!1);return A({cardId:b,ok:te,validation:K,source_probes:X,projection_errors:ne,fetched_sources:pe,computed_values:B,compute_errors:L})}catch(i){return _(i)}}return {validateCardPreflight:V,probeSourcePreflight:z,runSourcePreflight:Y,evalCardCompute:G,simulateCardCycle:U,describeTaskExecutorCapabilities:ee,updatesInCardStore:T,readFromCardStore:S}}
2
+ exports.a=kr;exports.b=St;exports.c=Rr;exports.d=mt;exports.e=mr;exports.f=pr;exports.g=gr;exports.h=ht;exports.i=er;exports.j=tr;exports.k=yt;exports.l=He;exports.m=Oe;exports.n=he;exports.o=Tr;exports.p=Ct;exports.q=bt;exports.r=nr;exports.s=wt;exports.t=Be;exports.u=Ge;exports.v=It;exports.w=Ft;exports.x=_t;exports.y=jr;exports.z=Kr;//# sourceMappingURL=chunk-YXKWIPQM.cjs.map
3
+ //# sourceMappingURL=chunk-YXKWIPQM.cjs.map
@@ -0,0 +1,3 @@
1
+ import {b as b$1,c as c$1}from'./chunk-ANKA7HEJ.js';import {a,b,c}from'./chunk-44L64VQ2.js';import {r,a as a$1,p,q,u}from'./chunk-VGT3TRQG.js';import {a as a$3}from'./chunk-E46UCDYN.js';import {a as a$2}from'./chunk-7QNEV5S3.js';import {e,f}from'./chunk-UGB7PC4P.js';function lt(e){return typeof e=="string"&&e.trim().length>0}function ft(e,t){if(!e||typeof e!="object")throw new Error(`${t}: adapter.selfRef is required`);if(!lt(e.howToRun))throw new Error(`${t}: adapter.selfRef.howToRun is required`);if(!lt(e.whatToRun))throw new Error(`${t}: adapter.selfRef.whatToRun is required`)}function mt(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 Xt(e,t="callbackTransport"){return {createCallback(n){let a=e();return ft(a,t),{token:n,via:a}}}}function $e(e){return Xt(()=>e,"createStaticExecutionRefCallbackTransport")}function mr(e){return $e({meta:"board-live-cards",howToRun:"http:post",whatToRun:a({kind:"http-url",value:String(e||"").trim()})})}function pr(e){return $e({meta:"board-live-cards",howToRun:"in-process-loop",whatToRun:a({kind:"in-process-loop",value:String(e||"").trim()})})}function gr(e){let t=typeof e=="string"?{notifyChannel:e}:e??{},n={};return t.notifyChannel&&(n.notifyChannel=t.notifyChannel),t.boardRuntimeStoreRef&&(n.boardRuntimeStoreRef=t.boardRuntimeStoreRef),t.queueStoreRef&&(n.queueStoreRef=t.queueStoreRef),$e({meta:"board-live-cards",howToRun:"built-in",whatToRun:a({kind:"built-in",value:"board-live-cards"}),...Object.keys(n).length>0?{extra:n}:{}})}function Ie(e){return typeof e=="object"&&e!==null&&"then"in e&&typeof e.then=="function"}function Je(e,t){return Ie(e)?e.then(t):t(e)}function gt(e,t){let n={...e};for(let a of t.deleteKeys)delete n[a];return {...n,...t.shallowMerge}}function kr(e,t){return {readValues(a){let s=e(a);return Je(s.listKeys(),d=>{let u=[...d].sort();if(u.length===0)return {version:null,values:{}};let c={},h=null;for(let y of u){let V=s.read(y);Ie(V)?h=(h??Promise.resolve()).then(async()=>{c[y]=await V;}):c[y]=V;}return h?h.then(()=>({version:t(c),values:c})):{version:t(c),values:c}})},writeValues(a,s,d){let u=e(a),c=null;for(let h of d){let y=u.delete(h);Ie(y)&&(c=(c??Promise.resolve()).then(()=>y).then(()=>{}));}for(let[h,y]of Object.entries(s)){let V=u.write(h,y);Ie(V)&&(c=(c??Promise.resolve()).then(()=>V).then(()=>{}));}return c?c.then(()=>t(s)):t(s)}}}function St(e,t){return {readSnapshot(n){return e.readValues(n)},commitSnapshot(n,a){if(a.schemaVersion!==t)throw new Error(`Unsupported snapshot schema version: ${a.schemaVersion}`);return Je(e.readValues(n),s=>{if(s.version!==a.expectedVersion)return {ok:false,reason:"version-mismatch",currentVersion:s.version};let d=gt(s.values,a);return Je(e.writeValues(n,d,a.deleteKeys),u=>({ok:true,newVersion:u}))})}}}function pt(e,t){if(!t)return e;let n=e.findIndex(a=>a.id===t);return n===-1?e:e.slice(n+1)}function kt(e){return {readEntriesAfterCursor(t){let n=pt(e.readAllEntries(),t);return n.length===0?{events:[],newCursor:t}:{events:n.map(a=>a.event),newCursor:n[n.length-1].id}},pendingCount(t){return pt(e.readAllEntries(),t).length},appendEvent(t){e.appendEntry({id:e.generateId(),event:t});}}}function Rr(e){return {appendEvent(t){return e.append(t).then(()=>{})},async readEntriesAfterCursor(t){let n=await e.readAfter(t||null);return {events:n.entries.map(a=>a.payload),newCursor:n.newCursor??t}}}}function Fe(e){return typeof e=="object"&&e!==null&&"then"in e&&typeof e.then=="function"}function de(e,t){return Fe(e)?e.then(t):t(e)}function Me(e,t){let n=null;for(let a of e){if(n){n=n.then(()=>t(a)).then(()=>{});continue}let s=t(a);Fe(s)&&(n=Promise.resolve(s).then(()=>{}));}return n??void 0}function Wt(e){if(e==null)return null;let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{return t}}function Zt(e,t){let n=e.match(t);return n?n[1]:null}function Rt(e,t,n){let a={},s=Me(e,d=>{let u=n(d);if(u)return de(t(d),c=>{a[u]=c;})});return Fe(s)?s.then(()=>a):a}function ht(e,t){return {readSourceData(n,a){return de(e.read(`${n}/${a}`),Wt)},ingestSourceDataStaged(n,a,s,d){return de(t(s),u=>e.write(`${n}/.staged/${d}/${a}`,u))},commitSourceData(n,a,s){let d=`${n}/.staged/${s}/${a}`,u=`${n}/${a}`;return e.renameKey(d,u)},hasSource(n,a){return e.exists(`${n}/${a}`)},listSources(n){return de(e.listKeys(`${n}/`),a=>a.filter(s=>!s.includes("/.staged/")).map(s=>s.slice(`${n}/`.length)))}}}function er(e,t){let n=(a,s)=>{try{let d=s(a);return Fe(d)?d.catch(u=>t(a,u instanceof Error?u.message:String(u))):void 0}catch(d){try{return t(a,d instanceof Error?d.message:String(d))}catch{return}}};return {appendEntries(a,s){if(!(!a||s.length===0))return de(e.read(a),d=>e.write(a,[...d??[],...s]))},dispatchEntriesForJournalId(a,s){if(a)return de(e.read(a),d=>{let u=d;if(!(!u||u.length===0))return de(Me(u,c=>n(c,s)),()=>e.delete(a))})}}}function tr(e,t,n){return {readRuntime(a){return de(e.read(t(a)),s=>s??n())},writeRuntime(a,s){return e.write(t(a),s)}}}function yt(e){return {writeComputedValues(t,n){return e.write(`cards/${t}/computed_values`,n)},readComputedValues(t){return e.read(`cards/${t}/computed_values`)},readAllComputedValues(){return de(e.listKeys("cards/"),t=>Rt(t,n=>e.read(n),n=>Zt(n,/^cards\/([^/]+)\/computed_values$/)))},writeDataObjects(t){return Me(Object.entries(t),([n,a])=>{if(n)return a===void 0?e.delete(`data-objects/${n}`):e.write(`data-objects/${n}`,a)})},readDataObject(t){return e.read(`data-objects/${t}`)},readAllDataObjects(){return de(e.listKeys("data-objects/"),t=>Rt(t,n=>e.read(n),n=>n.slice(13)))},writeStatusSnapshot(t){return e.write("status",t)},readStatusSnapshot(){return e.read("status")}}}function He(e,t){function n(){return e.readIndex()??{}}function a(s,d,u){let c=String(d||"").split(".").filter(Boolean);if(c.length===0)return u&&typeof u=="object"&&!Array.isArray(u)?u:{value:u};let h={...s},y=h;for(let V=0;V<c.length-1;V++){let z=c[V],Y=y[z],ee=Y&&typeof Y=="object"&&!Array.isArray(Y)?{...Y}:{};y[z]=ee,y=ee;}return y[c[c.length-1]]=u,h}return {readCard(s){let d=n()[s];return !d||!e.cardExists(d.key)?null:e.readCard(d.key)},readCardKey(s){return n()[s]?.key??null},readAllCards(){let s=[];for(let[d,u]of Object.entries(n())){if(!e.cardExists(u.key))continue;let c=e.readCard(u.key);c?s.push(c):t?.(`[card-store] could not read card "${d}" at key "${u.key}"`);}return s},readChecksumIndex(){let s={};for(let[d,u]of Object.entries(n()))s[d]=u.checksum;return s},changedSince(s){let d=n(),u=[];for(let[c,h]of Object.entries(d))s[c]!==h.checksum&&u.push(c);for(let c of Object.keys(s))d[c]||u.push(c);return u},validateUpsert(s,d){let u=n(),c=u[s],h=Object.entries(u).find(([,y])=>y.key===d);return c&&c.key!==d?{ok:false,error:`Card id "${s}" is already mapped to key "${c.key}", cannot remap to "${d}"`}:h&&h[0]!==s?{ok:false,error:`Key "${d}" is already mapped to card id "${h[0]}", cannot remap to "${s}"`}:{ok:true}},writeCard(s,d,u){let c=n(),h=u??c[s]?.key??e.defaultCardKey(s),y=e.writeCard(h,d);c[s]={key:h,checksum:y,updatedAt:new Date().toISOString()},e.writeIndex(c);},patchCard(s,d,u){let c=n(),h=c[s];if(!h||!e.cardExists(h.key))throw new Error(`card "${s}" not found`);let y=e.readCard(h.key);if(!y||typeof y!="object"||Array.isArray(y))throw new Error(`card "${s}" is not patchable`);let V=a(y,d,u),z=e.writeCard(h.key,V);c[s]={key:h.key,checksum:z,updatedAt:new Date().toISOString()},e.writeIndex(c);},removeCard(s){let d=n(),u=d[s];u&&(e.removeCard(u.key),delete d[s],e.writeIndex(d));},readIndex(){return n()}}}function _e(e,t){return ht(e,t)}function vt(e){return kt(e)}var Oe="v1",he="board/graph",xt="board/lastJournalProcessedId";function Tr(e){return `cards/${e}/runtime`}function Et(e){return St(e,Oe)}function Pe(e){function t(n){let a=e.read(n);return a==null?null:typeof a=="string"?a:JSON.stringify(a)}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);},readBoardRuntimeStoreRef(){return t("board-runtime-store-ref")},writeBoardRuntimeStoreRef(n){e.write("board-runtime-store-ref",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);},readQueueStoreRef(){return t("queue-store-ref")},writeQueueStoreRef(n){e.write("queue-store-ref",n);},readScratchStoreRef(){return t("scratch-store-ref")},writeScratchStoreRef(n){e.write("scratch-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);},readFetchedSourcesStoreRef(){return t("fetched-sources-store-ref")},writeFetchedSourcesStoreRef(n){e.write("fetched-sources-store-ref",n);}}}function Tt(e){return yt(e)}function Ct(e){return e?{lastRequestedToken:e.lastRequestedToken,lastCompletedToken:e.lastCompletedToken,lastCompletionStatus:e.lastCompletionStatus??(e.lastCompletedToken?"success":"not-started"),queueRequestedToken:e.queueRequestedToken}:{lastCompletionStatus:"not-started"}}function rr(e){return e?.lastRequestedToken?e.lastCompletedToken!==e.lastRequestedToken:false}function bt(e,t){return e?.lastRequestedToken?rr(e)?"in-flight":!e.lastCompletedToken||e.lastCompletedToken<t?"dispatch":"idle":"dispatch"}function nr(e,t){return {...e,lastCompletedToken:t,lastCompletionStatus:"success"}}function wt(e,t){return {...e,lastCompletedToken:t,lastCompletionStatus:"failure"}}function Be(e,t){let n=t.state.tasks,a=t.config.tasks,s=Object.keys(n),d=r(t),u={completed:0,failed:0,in_progress:0,pending:0,blocked:0,unresolved:0},c=new Map;for(let T of d.pending)c.set(T.taskName,T.waitingOn);for(let T of d.unresolved)c.set(T.taskName,T.missingTokens);for(let T of d.blocked)c.set(T.taskName,T.failedTokens);let h=new Map;for(let[T,S]of Object.entries(a))for(let G of S.requires??[]){let U=h.get(G)??[];U.push(T),h.set(G,U);}let y=s.sort().map(T=>{let S=n[T],G=a[T]??{requires:[],provides:[]};S.status==="completed"?u.completed+=1:S.status==="failed"?u.failed+=1:S.status==="in-progress"&&(u.in_progress+=1);let U=G.requires??[],g=G.provides??[],i=Object.keys(S.data??{}).sort(),m=U.filter(P=>t.state.availableOutputs.includes(P)),b=U.filter(P=>!t.state.availableOutputs.includes(P)),I=c.get(T)??b,w=new Set;for(let P of g)for(let D of h.get(P)??[])D!==T&&w.add(D);let x=S.failedAt,K=S.error?{message:S.error,code:"TASK_FAILED",at:x,source:"task-runtime"}:void 0;return {name:T,status:S.status,error:K,requires:U,requires_satisfied:m,requires_missing:b,provides_declared:g,provides_runtime:i,blocked_by:I,unblocks:Array.from(w).sort(),runtime:{attempt_count:S.executionCount??0,restart_count:S.retryCount??0,in_progress_since:S.status==="in-progress"?S.startedAt??null:null,last_transition_at:S.lastUpdated??null,last_completed_at:S.completedAt??null,last_restarted_at:S.startedAt??null,status_age_ms:S.lastUpdated?0:null}}});u.pending=d.pending.length,u.blocked=d.blocked.length,u.unresolved=d.unresolved.length;let V=y.map(T=>({name:T.name,fanOut:T.unblocks.length})).sort((T,S)=>S.fanOut-T.fanOut||T.name.localeCompare(S.name)),z=V.length>0?V[0]:{name:null,fanOut:0},Y=new Set;for(let T of Object.values(a))for(let S of T.requires??[])Y.add(S);let ee=0;for(let[T,S]of Object.entries(a)){let G=(S.requires??[]).length===0,g=(S.provides??[]).some(i=>(h.get(i)??[]).some(m=>m!==T));G&&!g&&(ee+=1);}return {schema_version:"v1",meta:{board:{path:e}},summary:{card_count:s.length,completed:u.completed,eligible:d.eligible.length,pending:u.pending,blocked:u.blocked,unresolved:u.unresolved,failed:u.failed,in_progress:u.in_progress,orphan_cards:ee,topology:{edge_count:Array.from(Y).length,max_fan_out_card:z.name,max_fan_out:z.fanOut}},cards:y}}function or(){return new Date().toISOString()}function At(e,t,n,a$1,s,d,u){return async c=>{let h=[],y=n.cardStore.readCard(c.nodeId);if(!y)return "task-initiate-failure";let V=y.id,z=y.card_data??{},Y=y.source_defs??[],ee=Y,T=n.cardRuntimeStore.readRuntime(V),S=false,G=()=>{S&&(n.cardRuntimeStore.writeRuntime(V,T),S=false);},U=E=>Ct(T._sources[E]),g=(E,v)=>{T._sources[E]=Ct(v),S=true;},i=c.taskState?.executionCount??0;if(T._lastExecutionCount!==i&&(T._sources={},T._lastExecutionCount=i,S=true),c.update){let E=c.update,v=E.outputFile;if(v){let B=U(v);if(E.failure){let L=E.rqt??B.lastRequestedToken??B.queueRequestedToken;L&&g(v,wt(B,L));}else {let L=E.rqt;if(!B.lastCompletedToken||L>B.lastCompletedToken){let te=typeof E.deliveryToken=="string"?E.deliveryToken:void 0,j=false;te&&(j=n.fetchedSourcesStore.commitSourceData(V,v,te)),j?g(v,nr(B,L)):g(v,wt(B,L));}}G();}}let b={};for(let E of Y)if(E.outputFile){let v=n.fetchedSourcesStore.readSourceData(V,E.outputFile);v!==null&&(b[E.bindTo]=v);}let I={};for(let[E,v]of Object.entries(c.state??{}))if(v!==null&&typeof v=="object"&&!Array.isArray(v)){let B=v[E];I[E]=B!==void 0?B:v;}else I[E]=v;let w={id:V,card_data:{...z},requires:I,source_defs:Y,compute:y.compute};w._sourcesData=b,y.compute&&a$3.runSync(w,{sourcesData:b}),(d??n.outputStore.writeComputedValues.bind(n.outputStore))(V,w.computed_values??{});let x={...y},K=a$3.enrichSourcesSync(Array.isArray(y.source_defs)?y.source_defs:void 0,{card_data:y.card_data,requires:I}),P=e.value;x.source_defs=Array.isArray(K)?K.map(E=>({...E,boardDir:typeof E.boardDir=="string"&&E.boardDir?E.boardDir:P})):K;let D=or(),H=c.update?void 0:D,ne=ee.filter(E=>{let v=E.outputFile;if(typeof v!="string"||!v)return true;let B=U(v);H&&(B={...B,queueRequestedToken:H},g(v,B));let L=B.queueRequestedToken??B.lastRequestedToken??D,te=bt(B,L);return te==="in-flight"?false:te==="dispatch"});if(G(),ne.length>0){let E=false,v=D;for(let B of ne){let L=B.outputFile;if(typeof L!="string"||!L)continue;let te=U(L),j=te.queueRequestedToken??D;g(L,{...te,lastRequestedToken:j}),v=j,E=true;}return E&&G(),E&&(h.push({taskKind:"source-fetch",payload:{boardRef:a(e),enrichedCard:x,callbackToken:c.callbackToken,rqt:v}}),n.executionRequestStore.appendEntries(t,h)),"task-initiated"}if(ee.some(E=>{let v=E.outputFile;if(typeof v!="string"||!v)return false;let B=U(v),L=B.queueRequestedToken??B.lastRequestedToken??D;return bt(B,L)==="in-flight"}))return "task-initiated";let pe=y.provides??[],ae={};for(let{bindTo:E,ref:v}of pe)ae[E]=a$3.resolve(w,v);return (u??n.outputStore.writeDataObjects.bind(n.outputStore))(ae),a$1(c.nodeId,ae),h.length>0&&n.executionRequestStore.appendEntries(t,h),"task-initiated"}}var Ge={settings:{completion:"manual",refreshStrategy:"data-changed"},tasks:{}};function It(e){return {[he]:e.graph,[xt]:e.lastDrainedJournalId,board:{runtimeByCardId:e.runtimeByCardId}}}function Ft(e){let t=e[he],n=e[xt],s=e.board?.runtimeByCardId;if(!t||typeof t!="object")throw new Error(`State snapshot is missing required key: ${he}`);return {graph:t,lastDrainedJournalId:typeof n=="string"?n:"",runtimeByCardId:s&&typeof s=="object"?s:{}}}function _t(e){let t=e.requires;return {provides:e.provides?.map(a=>a.bindTo)??[],taskHandlers:["card-handler"],description:e.meta?.title??e.id,...t&&t.length>0?{requires:t}:{}}}function A(e){return e!==void 0?{status:"success",data:e}:{status:"success"}}function R(e){return {status:"fail",error:e}}function _(e){return {status:"error",error:e instanceof Error?e.message:String(e)}}function sr(e){let t=new TextEncoder().encode(e),n=Array.from(t,a=>String.fromCharCode(a)).join("");return btoa(n).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function Bt(e){let t=e.replace(/-/g,"+").replace(/_/g,"/"),n=t+"=".repeat((4-t.length%4)%4),a=atob(n),s=Uint8Array.from(a,d=>d.charCodeAt(0));return new TextDecoder().decode(s)}function qe(e){try{let t=JSON.parse(Bt(e));return typeof t?.t=="string"?{taskName:t.t}:null}catch{return null}}function Ot(e){return sr(JSON.stringify(e))}function Pt(e){try{let t=JSON.parse(Bt(e));return typeof t?.cbk=="string"&&typeof t?.cid=="string"&&typeof t?.b=="string"&&typeof t?.d=="string"?t:null}catch{return null}}function Z(){return new Date().toISOString()}function ar(e){let t=new Map;return {appendEntries(n,a){if(!n||a.length===0)return;let s=t.get(n)??[];t.set(n,[...s,...a]);},dispatchEntriesForJournalId(n,a){if(!n)return;let s=t.get(n);if(!(!s||s.length===0)){for(let d of s)try{a(d);}catch(u){try{e(d,u instanceof Error?u.message:String(u));}catch{}}t.delete(n);}}}}function jr(e$1,t,n={}){mt(t.callbackTransport,"createBoardLiveCardsPublic");let a$3=t.callbackTransport,s=t.onWarn??(()=>{}),d=a(e$1),u$1=n.boardRuntimeStoreRef,c$1=n.scratchStoreRef,h=n.taskExecutorRef,y=n.chatHandlerFlow,V=n.emitNotification??(o=>{if(!t.publishBoardChangeNotifications)return;let r=o.kind==="notification-batch"?o.notifications:[o];return t.publishBoardChangeNotifications(r)});function z(){if(!u$1)throw new Error(`Board at ${e$1.value} has no board runtime store configured. Pass boardRuntimeStoreRef at construction or init.`);return u$1}function Y(o){if(o.length!==0)try{let r=e(o),l=f({kind:"notification-batch",notifications:r}),p=V(l);p&&typeof p.catch=="function"&&p.catch(C=>s(`[board-live-cards-public] emitNotification failed: ${C instanceof Error?C.message:String(C)}`));}catch(r){s(`[board-live-cards-public] emitNotification failed: ${r instanceof Error?r.message:String(r)}`);}}function ee(){let o=S().readCardStoreRef();if(!o)throw new Error(`Board at ${e$1.value} has no card store configured. Run: init --base-ref <ref> --store-ref <b64-ref>`);let r=t.kvStorageForRef(o);return {readIndex(){return r.read("_index")},writeIndex(l){r.write("_index",l);},readCard(l){return r.read(l)},writeCard(l,p){return r.write(l,p),t.hashFn(p)},removeCard(l){r.delete(l);},cardExists(l){return r.read(l)!==null},defaultCardKey(l){return l}}}let T={readValues(o){let r=t.kvStorageForRef(z()),l=r.listKeys().sort();if(l.length===0)return {version:null,values:{}};let p={};for(let C of l)p[C]=r.read(C);return {version:t.hashFn(p),values:p}},writeValues(o,r,l){let p=t.kvStorageForRef(z());for(let C of l)p.delete(C);for(let[C,F]of Object.entries(r))p.write(C,F);return t.hashFn(r)}},S=()=>Pe(t.kvStorageForRef(z())),G=()=>Et(T),U=()=>vt(t.journalAdapterForRef(z())),g=()=>He(ee(),s),i=()=>{let o=S().readOutputsStoreRef();if(!o)throw new Error(`Board at ${e$1.value} has no outputs store configured. Run: init --outputs-store-ref <b64-ref>`);return Tt(t.kvStorageForRef(o))};function m(){return h??S().readTaskExecutorRef()}function b$1(){return !!G().readSnapshot(e$1.value).values[he]}function I(){let o=G().readSnapshot(e$1.value);if(!o.values[he])throw new Error(`Board not initialized at ${e$1.value}`);return Ft(o.values)}function w(o,r){let l=G().commitSnapshot(e$1.value,{schemaVersion:Oe,expectedVersion:r,commitId:t.genId(),committedAt:Z(),deleteKeys:[],shallowMerge:It(o)});if(!l.ok)throw new Error(`Snapshot commit failed (version mismatch): expected=${r??"null"} current=${l.currentVersion??"null"}`)}function x(o){U().appendEvent(o);}async function K(){let r=ar((f,k)=>{let O=f.payload,N=(O?.enrichedCard??{}).id??O?.cardId??"unknown";x({type:"task-failed",taskName:N,error:k,timestamp:Z()});}),l=I(),p$1=q(l.graph),{events:C,newCursor:F}=U().readEntriesAfterCursor(l.lastDrainedJournalId),$=j(),q$1=_e($,f=>t.resolveBlob(f)),J={...l.runtimeByCardId},W=new Map,Se={readRuntime(f){return W.get(f)??J[f]??{_sources:{}}},writeRuntime(f,k){W.set(f,k),J[f]=k;}},ke=[],oe=new Map,we={readSourceData(f,k){let O=`${f}/${k}`;return oe.has(O)?oe.get(O):q$1.readSourceData(f,k)},ingestSourceDataStaged(f,k,O,ue){q$1.ingestSourceDataStaged(f,k,O,ue);},commitSourceData(f,k,O){let ue=`${f}/.staged/${O}/${k}`,N=$.read(ue);if(N==null){let Q=$.keyRef?.(ue);Q&&(N=t.resolveBlob(Q));}if(N==null)return false;let se=`${f}/${k}`,fe=N.trim();try{oe.set(se,JSON.parse(fe));}catch{oe.set(se,fe);}return ke.push({cardId:f,outputFile:k,deliveryToken:O}),true},hasSource(f,k){let O=`${f}/${k}`;return oe.has(O)?true:q$1.hasSource(f,k)},listSources(f){let k=q$1.listSources(f),O=new Set;for(let N of oe.keys())N.startsWith(`${f}/`)&&O.add(N.slice(`${f}/`.length));let ue=new Set([...k,...O]);return Array.from(ue)}},le={cardStore:g(),cardRuntimeStore:Se,fetchedSourcesStore:we,outputStore:i(),executionRequestStore:r},Re=[],Ve=[],je=[],Ke=new Map,Xe=new Set,Qt=(f,k)=>{Re.push({type:"task-completed",taskName:f,data:k,timestamp:Z()});},Ne=(f,k)=>{x({type:"task-failed",taskName:f,error:k,timestamp:Z()});},ve=u(p$1,{handlers:{"card-handler":At(e$1,F,le,Qt,Ne,(f,k)=>{Ve.push({cardId:f,values:k});},f=>{je.push(f);})},onNodeRemoved:f=>{Ke.delete(f),W.delete(f),delete J[f],Xe.add(f);}});for(Re=C;Re.length>0;){let f=Re;Re=[];for(let k of f)if(k.type==="task-restart"){let O=le.cardStore.readCard(k.taskName);O&&Ke.set(k.taskName,O);}ve.pushAll(f),await ve.waitForHandlers();}let We=ve.getState();await ve.dispose({wait:true});let zt=G().readSnapshot(e$1.value).version;w({lastDrainedJournalId:F,graph:p(We),runtimeByCardId:J},zt);for(let{cardId:f,values:k}of Ve)le.outputStore.writeComputedValues(f,k);for(let f of je)le.outputStore.writeDataObjects(f);for(let{cardId:f,outputFile:k,deliveryToken:O}of ke)q$1.commitSourceData(f,k,O);let xe;try{xe=Be(d,We),le.outputStore.writeStatusSnapshot(xe);}catch(f){s(`[board-live-cards-public] status publish failed: ${f instanceof Error?f.message:String(f)}`);}let ye=[];for(let{cardId:f,values:k}of Ve)ye.push({kind:"computed_values",cardId:f,values:k});for(let f of je)for(let[k,O]of Object.entries(f))k&&ye.push({kind:"data_object",key:k,payload:O});for(let[f,k]of Ke)ye.push({kind:"card_refreshed",cardId:f,card:k});for(let f of Xe)ye.push({kind:"card_removed",cardId:f});xe!==void 0&&ye.push({kind:"status",status:xe}),Y(ye);let Ce=m()??{howToRun:"built-in",whatToRun:a({kind:"built-in",value:"source-cli-task-executor"})},Ze=t.supportsDirectSourceOutput?.(Ce)===true;r.dispatchEntriesForJournalId(F,f=>{if(f.taskKind!=="source-fetch"){s(`[process-accumulated-events] unknown taskKind "${f.taskKind}" \u2014 skipping`);return}let k=f.payload,O=k.enrichedCard?.id??"unknown",ue=k.enrichedCard?.source_defs??[];if(Ce.howToRun==="queue-storage"&&Ze){try{let N=t.queueStorageForRef(P(),"task-executor"),se=typeof Ce.extra?.boardId=="string"?Ce.extra.boardId:void 0,fe=[];for(let Q of ue){if(!Q.outputFile){s(`[dispatch] source "${Q.bindTo}" has no outputFile \u2014 skipping`);continue}let Ee=t.genId(),Te=`${O}/.staged/${Ee}/${Q.outputFile}`,et=$.keyRef?.(Te);if(!et)continue;let tt={ref:a(et),deliveryToken:Ee,outputFile:Q.outputFile,cardId:O},Yt=Ot({cbk:k.callbackToken,rg:e$1.value,br:a(e$1),cid:O,b:Q.bindTo,d:Q.outputFile,cs:void 0,rqt:k.rqt,dt:tt.deliveryToken});fe.push({...se?{boardId:se}:{},ref:Ce,args:{source_def:Q,base_ref:a(e$1),callback:a$3.createCallback(Yt),output:tt}});}fe.length>0&&N.enqueueMany(fe);}catch(N){Ne(O,N instanceof Error?N.message:String(N));}return}for(let N of ue){if(!N.outputFile){s(`[dispatch] source "${N.bindTo}" has no outputFile \u2014 skipping`);continue}let se;if(Ze){let Q=t.genId(),Ee=`${O}/.staged/${Q}/${N.outputFile}`,Te=$.keyRef?.(Ee);Te&&(se={ref:a(Te),deliveryToken:Q,outputFile:N.outputFile,cardId:O});}let fe=Ot({cbk:k.callbackToken,rg:e$1.value,br:a(e$1),cid:O,b:N.bindTo,d:N.outputFile,cs:void 0,rqt:k.rqt,...se?{dt:se.deliveryToken}:{}});t.dispatchExecution(Ce,{source_def:N,base_ref:a(e$1),callback:a$3.createCallback(fe),...se?{output:se}:{}}).catch(Q=>Ne(O,Q instanceof Error?Q.message:String(Q)));}});}function P(){let o=S().readQueueStoreRef();if(!o)throw new Error(`Board at ${e$1.value} has no queue store configured. Run: init --queue-store-ref <b64-ref>`);return o}function D(){let o=t.queueStorageForRef(P(),"process-accumulated");o.enqueueIfAbsent?o.enqueueIfAbsent({boardRef:a(e$1)},`process-accumulated:${a(e$1)}`):o.enqueue({boardRef:a(e$1)}),t.requestProcessAccumulated?.();}function H(){let o=t.queueStorageForRef(P(),"process-accumulated");for(;;){let r=o.lease({max:64,visibilityMs:1e3});if(r.length<=0)return;for(let l of r)o.ack(l.id,l.leaseToken);if(r.length<64)return}}async function ne(){try{let o=()=>{let l=I(),{events:p}=U().readEntriesAfterCursor(l.lastDrainedJournalId);p.length<=0||D();},r=await c(t.lock,K,o);return A({ran:r!==!1})}catch(o){return _(o)}}function X(){D();}function pe(o){try{let r=o.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(u$1=o.params?.boardRuntimeStoreRef,!u$1)return R("init requires params.boardRuntimeStoreRef \u2014 pass the board runtime store ref here");if(!b$1()){let J=a$1(Ge);w({lastDrainedJournalId:"",graph:p(J),runtimeByCardId:{}},null);}let l=o.params?.outputsStoreRef;if(!l)return R("init requires params.outputsStoreRef \u2014 pass the outputs store ref here");let p$1=o.params?.queueStoreRef;if(!p$1)return R("init requires params.queueStoreRef \u2014 pass the queue store ref here");let C=o.params?.fetchedSourcesStoreRef;if(!C)return R("init requires params.fetchedSourcesStoreRef \u2014 pass the fetched sources store ref here");c$1=o.params?.scratchStoreRef;let F=o.params?.chatStoreRef;if(!F)return R("init requires params.chatStoreRef \u2014 pass the chat store ref here");let $=o.params?.artifactsStoreRef;if(!$)return R("init requires params.artifactsStoreRef \u2014 pass the artifacts store ref here");let q$1=S();q$1.writeBoardRuntimeStoreRef(u$1),q$1.writeCardStoreRef(r),q$1.writeOutputsStoreRef(l),q$1.writeQueueStoreRef(p$1),q$1.writeFetchedSourcesStoreRef(C),q$1.writeChatStoreRef(F),q$1.writeArtifactsStoreRef($);try{i().writeStatusSnapshot(Be(d,q(I().graph)));}catch{}return A()}catch(r){return _(r)}}function ae(o){try{let r=i().readStatusSnapshot();if(!r){r=Be(d,q(I().graph));try{i().writeStatusSnapshot(r);}catch{}}return A(r)}catch(r){return _(r)}}function E(o){try{let r=o.params?.id;if(!r)return R("removeCard requires params.id");try{t.kvStorage("card-upsert").delete(r);}catch{}return x({type:"task-removal",taskName:r,timestamp:Z()}),X(),A()}catch(r){return _(r)}}function v(o){try{let r=o.params?.cardId;if(!r)return R("addCardFiles requires params.cardId");let l=a$2(g(),{emitNotification:V}).appendFiles({params:{id:r},body:o.body});return l.status!=="success"?l:A({cardId:r,files_added:l.data.files_added,notified:!0})}catch(r){return _(r)}}function B(o){try{let r=o.params?.id;return r?(x({type:"task-restart",taskName:r,timestamp:Z()}),X(),A()):R("retrigger requires params.id")}catch(r){return _(r)}}async function L(o){return H(),ne()}function te(){let o=S().readFetchedSourcesStoreRef();if(!o)throw new Error(`Board at ${e$1.value} has no fetched sources store configured. Run: init --fetched-sources-store-ref <b64-ref>`);return o}function j(){return t.blobStorageForRef(te())}function re(o){try{let r=o.params?.cardId,l=o.params?.all,p=!!o.params?.restart;if(!r&&!l)return R("upsertCard requires --card-id <id> or --all");let C=l?g().readAllCards().map(F=>F.id):[r];for(let F of C)if(!g().readCard(F))return R(`Card "${F}" not found in board at ${e$1.value}`);for(let F of C){let $=g().readCard(F),q=_t($),J=t.hashFn(q),W=t.kvStorage("card-upsert"),Se=W.read(F),ke=Se?.taskConfigHash!==J;if(!(!ke&&!p)){if(ke){let oe=Se?.blobRef??g().readCardKey(F)??F;x({type:"task-upsert",taskName:F,taskConfig:q,timestamp:Z()}),W.write(F,{blobRef:oe,taskConfigHash:J,updatedAt:Z()});}p&&x({type:"task-restart",taskName:F,timestamp:Z()});}}return X(),A()}catch(r){return _(r)}}function ie(o){try{let r=o.params?.token;if(!r)return R("taskFailed requires params.token");let l=o.params?.error??"unknown error",p=qe(r);return p?(x({type:"task-failed",taskName:p.taskName,error:l,timestamp:Z()}),X(),A()):R("Invalid callback token")}catch(r){return _(r)}}function ge(o){try{let r=o.params?.token;if(!r)return R("taskProgress requires params.token");let p=(o.body??{}).update??{},C=qe(r);return C?(x({type:"task-progress",taskName:C.taskName,update:p,timestamp:Z()}),X(),A()):R("Invalid callback token")}catch(r){return _(r)}}function be(o){try{let r=o.params?.token,l=o.params?.ref;if(!r)return R("sourceDataFetched requires params.token");if(!l)return R("sourceDataFetched requires params.ref");let p=Pt(r);if(!p)return R("Invalid source token");let{cbk:C,cid:F,b:$,d:q,cs:J,rqt:W,dt:Se}=p,ke=_e(j(),Re=>t.resolveBlob(Re)),oe=Se||t.genId();Se||ke.ingestSourceDataStaged(F,q,b(l),oe);let we=qe(C);if(!we)return R("Invalid callback token embedded in source token");let le=Z();return x({type:"task-progress",taskName:we.taskName,update:{bindTo:$,outputFile:q,fetchedAt:le,deliveryToken:oe,sourceChecksum:J,rqt:W},timestamp:le}),X(),A()}catch(r){return _(r)}}function ce(o){try{let r=o.params?.token,l=o.params?.reason??"unknown";if(!r)return R("sourceDataFetchFailure requires params.token");let p=Pt(r);if(!p)return R("Invalid source token");let{cbk:C,b:F,d:$,cs:q,rqt:J}=p,W=qe(C);return W?(x({type:"task-progress",taskName:W.taskName,update:{bindTo:F,outputFile:$,failure:!0,reason:l,sourceChecksum:q,rqt:J},timestamp:Z()}),X(),A()):R("Invalid callback token embedded in source token")}catch(r){return _(r)}}function qt(o){try{let r=S().readCardStoreRef();return r?A({storeRef:r}):R(`Board at ${e$1.value} has no card store configured`)}catch(r){return _(r)}}function Vt(o){try{return A({storeRef:u$1??null})}catch(r){return _(r)}}function jt(o){try{let r=S().readOutputsStoreRef();return r?A({storeRef:r}):R(`Board at ${e$1.value} has no outputs store configured`)}catch(r){return _(r)}}function Kt(o){try{return A({storeRef:c$1??null})}catch(r){return _(r)}}function Nt(o){try{let r=S().readChatStoreRef();return A({storeRef:r})}catch(r){return _(r)}}function Dt(o){try{let r=S().readArtifactsStoreRef();return A({storeRef:r})}catch(r){return _(r)}}function Lt(o){try{let r=S().readFetchedSourcesStoreRef();return A({storeRef:r})}catch(r){return _(r)}}function $t(o){try{let r=o.params?.key;if(!r)return R("getConfig requires params.key");let l=S(),p;switch(r){case "task-executor":p=h??null;break;case "chat-handler-flow":p=y??null;break;case "board-runtime-store-ref":p=l.readBoardRuntimeStoreRef();break;case "card-store-ref":p=l.readCardStoreRef();break;case "outputs-store-ref":p=l.readOutputsStoreRef();break;case "scratch-store-ref":p=c$1??null;break;case "chat-store-ref":p=l.readChatStoreRef();break;case "artifacts-store-ref":p=l.readArtifactsStoreRef();break;case "fetched-sources-store-ref":p=l.readFetchedSourcesStoreRef();break;default:return R(`getConfig: unknown key "${r}"`)}return A({value:p})}catch(r){return _(r)}}function Jt(o){try{let r=o.params?.key;if(!r)return R("getOutputsDataObject requires params.key");let l=i().readDataObject(r);return A(l)}catch(r){return _(r)}}function Ue(o){try{return A(i().readAllDataObjects())}catch(r){return _(r)}}function Mt(o){try{let r=o.params?.key;if(!r)return R("getOutputsComputedValues requires params.key");let l=i().readComputedValues(r);return A(l)}catch(r){return _(r)}}function Qe(o){try{return A(i().readAllComputedValues())}catch(r){return _(r)}}function ze(){return _e(j(),o=>t.resolveBlob(o))}function Ye(o){let r=j().keyRef?.(o);if(!r)throw new Error("configured fetched-sources store does not support keyRef");return a(r)}function Ht(o){try{let r=o.params?.key;if(!r)return R("getOutputsFetchedSources requires params.key");let l=ze().listSources(r),p={};for(let C of l)p[C]=Ye(`${r}/${C}`);return A(p)}catch(r){return _(r)}}function Gt(o){try{let r=ze(),l=new Set;for(let C of j().listKeys()){let F=C.indexOf("/");F>0&&!C.includes("/.staged/")&&l.add(C.slice(0,F));}let p={};for(let C of l){let F=r.listSources(C);if(F.length>0){p[C]={};for(let $ of F)p[C][$]=Ye(`${C}/${$}`);}}return A(p)}catch(r){return _(r)}}function Ut(o){try{let r=g().readAllCards(),l=ae({});if(l.status!=="success")return l;let p=Ue({});if(p.status!=="success")return p;let C=Qe({});if(C.status!=="success")return C;let F=C.data,$={};for(let q of r){let J=typeof q?.id=="string"?q.id:null;if(!J)continue;let W=q.card_data&&typeof q.card_data=="object"&&!Array.isArray(q.card_data)?q.card_data:{};$[J]={schema_version:"v1",card_id:J,card_data:{...W},computed_values:F[J]&&typeof F[J]=="object"?F[J]:{}};}return A({cardDefinitions:r,statusSnapshot:l.data,dataObjectsByToken:p.data,cardRuntimeById:$})}catch(r){return _(r)}}return {init:pe,status:ae,getBoardRuntimeStoreRef:Vt,getCardStoreRef:qt,getOutputsStoreRef:jt,getScratchStoreRef:Kt,getChatStoreRef:Nt,getArtifactsStoreRef:Dt,getFetchedSourcesStoreRef:Lt,getConfig:$t,getOutputsDataObject:Jt,getAllOutputsDataObjects:Ue,getOutputsComputedValues:Mt,getAllOutputsComputedValues:Qe,getOutputsFetchedSources:Ht,getAllOutputsFetchedSources:Gt,buildSseOneShotPayload:Ut,removeCard:E,addCardFiles:v,retrigger:B,processAccumulatedEvents:L,upsertCard:re,taskFailed:ie,taskProgress:ge,sourceDataFetched:be,sourceDataFetchFailure:ce}}function Kr(e,t,n){let a=n?.taskExecutorRef,s=()=>{if(n){if(!n.boardRuntimeStoreRef)throw new Error(`Board at ${e.value} requires boardRuntimeStoreRef for non-core runtime operations.`);return Pe(t.kvStorageForRef(n.boardRuntimeStoreRef))}return Pe(t.kvStorage("config"))};function d(){let g=s().readCardStoreRef();if(!g)throw new Error(`Board at ${e.value} has no card store configured. Run: init --base-ref <ref> --store-ref <b64-ref>`);let i=t.kvStorageForRef(g);return {readIndex(){return i.read("_index")},writeIndex(m){i.write("_index",m);},readCard(m){return i.read(m)},writeCard(m,b){return i.write(m,b),t.hashFn(b)},removeCard(m){i.delete(m);},cardExists(m){return i.read(m)!==null},defaultCardKey(m){return m}}}let u=()=>He(d(),t.onWarn??(()=>{}));function c(){return a??s().readTaskExecutorRef()}async function h(g,i){let m=t.validateSchema(i),b=[],I=c();if(I&&Array.isArray(i.source_defs))for(let x of i.source_defs){let K=typeof x.bindTo=="string"?x.bindTo:"(unknown)";try{let P;try{P=await t.invokeExecutor(I,"validate-source-def",{timeout:t.executorTimeouts?.validationMs??1e4,input:JSON.stringify(x)});}catch(H){let ne=H;if(P=typeof ne?.stdout=="string"?ne.stdout:"",!P.trim()){b.push(`source "${K}": executor validate-source-def failed \u2014 ${H instanceof Error?H.message:String(H)}`);continue}}let D=JSON.parse(P.trim());if(!D.ok&&Array.isArray(D.errors))for(let H of D.errors)b.push(`source "${K}": ${H}`);}catch(P){b.push(`source "${K}": executor validate-source-def failed \u2014 ${P instanceof Error?P.message:String(P)}`);}}let w=[...m.errors,...b];return A({cardId:g,isValid:w.length===0,issues:w})}function y(g,i){let m=g.params?.sourceIdx,b=g.params?.outRef;if(m===void 0)return R(`${i} requires params.sourceIdx`);if(!g.body||typeof g.body!="object"||Array.isArray(g.body))return R(`${i} requires card JSON object in body`);let I=g.body,w=I["card-content"]??I,x=I["mock-projections"]??{},K=w.source_defs??[];if(m<0||m>=K.length)return R(`sourceIdx ${m} out of range (card has ${K.length} source(s))`);let P=K[m],D=typeof P.bindTo=="string"?P.bindTo:"source";return {src:P,bindTo:D,outRef:b,mockProjections:x}}async function V(g){try{if(!g.body||typeof g.body!="object"||Array.isArray(g.body))return R("validateCardPreflight requires card JSON object in body");let i=g.body,m=i["card-content"]??i,b=typeof m.id=="string"?m.id:"(unknown)";return await h(b,m)}catch(i){return _(i)}}async function z(g){try{let i=y(g,"probeSourcePreflight");if("status"in i)return i;let m=c();if(!m)return R("No task-executor registered for this board");try{let b={...i.src,_projections:i.mockProjections},I=await t.invokeExecutor(m,"probe-source-preflight",{timeout:i.src.timeout??t.executorTimeouts?.preflightMs??6e4,input:JSON.stringify(b)}),w=JSON.parse(I.trim());return w.ok?A({bindTo:i.bindTo,reachable:w.reachable,latencyMs:w.latencyMs,note:w.note}):R(w.error??"Preflight probe failed")}catch{return R("Executor does not support probe-source-preflight")}}catch(i){return _(i)}}async function Y(g){try{let i=y(g,"runSourcePreflight");if("status"in i)return i;let m=c();if(!m)return R("No task-executor registered for this board");try{let b$1={...i.src,_projections:i.mockProjections},I=await t.invokeExecutor(m,"run-source-preflight",{timeout:i.src.timeout??t.executorTimeouts?.probeMs??6e4,input:JSON.stringify(b$1)}),w=JSON.parse(I.trim());if(!w.ok)return A({bindTo:i.bindTo,ok:!1,result:null,issues:[w.error??"Preflight run failed"]});if(i.outRef){let x=b(i.outRef);t.absoluteBlob.write(x.value,JSON.stringify(w.resultValue,null,2));}return A({bindTo:typeof w.bindTo=="string"?w.bindTo:i.bindTo,ok:!0,result:w.resultValue??null,issues:[]})}catch(b){let I=b instanceof Error?b.message:String(b);return A({bindTo:i.bindTo,ok:!1,result:null,issues:[I]})}}catch(i){return _(i)}}async function ee(g){try{let i=c();if(!i)return R("No task-executor registered for this board");let m=await t.invokeExecutor(i,"describe-capabilities",{timeout:t.executorTimeouts?.describeMs??1e4});return A(JSON.parse(m.trim()))}catch(i){return _(i)}}function T(g){try{let i=g.body;if(!i||!Array.isArray(i.ops))return R("updatesInCardStore requires body.ops array");let m=i.ops,b=u();for(let I of m){let w=I.op,x=I.id;if(!x)return R('op is missing "id"');if(w==="update"){let K=I["card-content"];if(!K)return R(`update op for "${x}" is missing "card-content"`);b.writeCard(x,K);}else return R(`Unknown op type: "${w??"(none)"}"`)}return A()}catch(i){return _(i)}}function S(g){try{let i=g.body;if(!i||!Array.isArray(i.ids))return R("readFromCardStore requires body.ids array");let m=i.ids,b=u(),I=m.map(w=>({id:w,"card-content":b.readCard(w)}));return A({cards:I})}catch(i){return _(i)}}function G(g){try{if(!g.body||typeof g.body!="object"||Array.isArray(g.body))return R("evalCardCompute requires a JSON object in body");let i=g.body,m=i["card-content"]??i,b=typeof m.id=="string"?m.id:"(unknown)",I=i["mock-fetched-sources"]??{},w=i["mock-requires"]??{},x=m.compute;if(!x||!Array.isArray(x)||x.length===0)return A({cardId:b,ok:!0,computed_values:{},errors:[]});let K={id:b,card_data:m.card_data??{},requires:w,source_defs:m.source_defs,compute:x},P=a$3.runSync(K,{sourcesData:I}),D=P.node.computed_values??{},H=P.errors??[];return A({cardId:b,ok:H.length===0,computed_values:D,errors:H})}catch(i){return _(i)}}async function U(g){try{if(!g.body||typeof g.body!="object"||Array.isArray(g.body))return R("simulateCardCycle requires a JSON object in body");let i=g.body,m=i["card-content"]??i,b=typeof m.id=="string"?m.id:"(unknown)",I=i["mock-fetched-sources"]??{},w=i["mock-requires"]??{},x=await h(b,m),K=x.status==="success"?{isValid:x.data.isValid,issues:x.data.issues}:{isValid:!1,issues:[x.status==="fail"?x.error:"internal error"]},P=m.source_defs??[],D=m.card_data??{},H=[],ne=[];if(P.length>0){H=a$3.enrichSourcesSync(P,{card_data:D,requires:w});for(let j of H){let re=j.projections,ie=j._projections;if(re&&ie){for(let ge of Object.keys(re))if(ie[ge]===void 0){let be=typeof j.bindTo=="string"?j.bindTo:"(unknown)";ne.push({bindTo:be,key:ge,error:`Projection "${ge}" resolved to undefined`});}}}}let X=[],pe={...I},ae=i["task-executor-ref"],E=(ae?.howToRun&&ae?.whatToRun?ae:void 0)??c();for(let j=0;j<H.length;j++){let re=H[j],ie=typeof re.bindTo=="string"?re.bindTo:`source_${j}`;if(!E){X.push({bindTo:ie,skipped:!0,error:"No task executor configured"});continue}try{let ge={...re},be=await t.invokeExecutor(E,"run-source-preflight",{timeout:re.timeout??t.executorTimeouts?.preflightMs??6e4,input:JSON.stringify(ge)}),ce=JSON.parse(be.trim());ce.ok&&!Object.prototype.hasOwnProperty.call(I,ie)&&Object.prototype.hasOwnProperty.call(ce,"resultValue")&&(pe[ie]=ce.resultValue),X.push({bindTo:ie,reachable:ce.reachable,latencyMs:ce.latencyMs,error:ce.ok?void 0:ce.error});}catch{X.push({bindTo:ie,skipped:!0,error:"Executor does not support run-source-preflight"});}}let v=m.compute,B={},L=[];if(v&&Array.isArray(v)&&v.length>0){let j={id:b,card_data:D,requires:w,source_defs:m.source_defs,compute:v},re=a$3.runSync(j,{sourcesData:pe});B=re.node.computed_values??{},L=re.errors??[];}let te=K.isValid&&ne.length===0&&L.length===0&&X.every(j=>j.reachable!==!1);return A({cardId:b,ok:te,validation:K,source_probes:X,projection_errors:ne,fetched_sources:pe,computed_values:B,compute_errors:L})}catch(i){return _(i)}}return {validateCardPreflight:V,probeSourcePreflight:z,runSourcePreflight:Y,evalCardCompute:G,simulateCardCycle:U,describeTaskExecutorCapabilities:ee,updatesInCardStore:T,readFromCardStore:S}}
2
+ export{kr as a,St as b,Rr as c,mt as d,mr as e,pr as f,gr as g,ht as h,er as i,tr as j,yt as k,He as l,Oe as m,he as n,Tr as o,Ct as p,bt as q,nr as r,wt as s,Be as t,Ge as u,It as v,Ft as w,_t as x,jr as y,Kr as z};//# sourceMappingURL=chunk-ZA4FS27N.js.map
3
+ //# sourceMappingURL=chunk-ZA4FS27N.js.map
@@ -1,2 +1,2 @@
1
- 'use strict';var chunk6EJRZHFP_cjs=require('./chunk-6EJRZHFP.cjs'),chunk3T5TMAWG_cjs=require('./chunk-3T5TMAWG.cjs'),chunkWRMOGPRG_cjs=require('./chunk-WRMOGPRG.cjs');require('./chunk-SJANU3PL.cjs'),require('./chunk-7JVHYHT2.cjs'),require('./chunk-VQCIOKJV.cjs'),require('./chunk-G4XXRHL2.cjs'),require('./chunk-LODXIALE.cjs'),require('./chunk-IXZG74EW.cjs'),require('./chunk-HWYMZK3N.cjs'),require('./chunk-UJ7ZTV4J.cjs'),require('./chunk-5XLFPPTY.cjs'),require('./chunk-2RIHC5TZ.cjs'),require('./chunk-GNFE24S7.cjs');Object.defineProperty(exports,"createAzureBlobStorage",{enumerable:true,get:function(){return chunk6EJRZHFP_cjs.d}});Object.defineProperty(exports,"createAzureQueueStorage",{enumerable:true,get:function(){return chunk6EJRZHFP_cjs.e}});Object.defineProperty(exports,"createCosmosAtomicRelayLock",{enumerable:true,get:function(){return chunk6EJRZHFP_cjs.c}});Object.defineProperty(exports,"createCosmosJournalStorage",{enumerable:true,get:function(){return chunk6EJRZHFP_cjs.b}});Object.defineProperty(exports,"createCosmosKvStorage",{enumerable:true,get:function(){return chunk6EJRZHFP_cjs.a}});Object.defineProperty(exports,"createAsyncBoardLiveCardsPublic",{enumerable:true,get:function(){return chunk3T5TMAWG_cjs.i}});Object.defineProperty(exports,"createAsyncCardStorageAdapter",{enumerable:true,get:function(){return chunk3T5TMAWG_cjs.c}});Object.defineProperty(exports,"createAsyncCardStore",{enumerable:true,get:function(){return chunk3T5TMAWG_cjs.d}});Object.defineProperty(exports,"createAsyncCardStorePublic",{enumerable:true,get:function(){return chunk3T5TMAWG_cjs.g}});Object.defineProperty(exports,"createAsyncJsonStorage",{enumerable:true,get:function(){return chunk3T5TMAWG_cjs.b}});Object.defineProperty(exports,"createAsyncQueueStoragePublic",{enumerable:true,get:function(){return chunk3T5TMAWG_cjs.h}});Object.defineProperty(exports,"createAsyncStateSnapshotAdapter",{enumerable:true,get:function(){return chunk3T5TMAWG_cjs.e}});Object.defineProperty(exports,"createAsyncStorageProvider",{enumerable:true,get:function(){return chunk3T5TMAWG_cjs.f}});Object.defineProperty(exports,"withAsyncRelayLock",{enumerable:true,get:function(){return chunk3T5TMAWG_cjs.a}});Object.defineProperty(exports,"createAsyncBoardConfigStore",{enumerable:true,get:function(){return chunkWRMOGPRG_cjs.b}});Object.defineProperty(exports,"createAsyncBoardWorkerStore",{enumerable:true,get:function(){return chunkWRMOGPRG_cjs.a}});Object.defineProperty(exports,"createHostedAsyncBoardPlatformAdapter",{enumerable:true,get:function(){return chunkWRMOGPRG_cjs.c}});//# sourceMappingURL=cloud-storage.cjs.map
1
+ 'use strict';var chunk6EJRZHFP_cjs=require('./chunk-6EJRZHFP.cjs'),chunkN5RUH4NG_cjs=require('./chunk-N5RUH4NG.cjs'),chunkWRMOGPRG_cjs=require('./chunk-WRMOGPRG.cjs');require('./chunk-YXKWIPQM.cjs'),require('./chunk-7JVHYHT2.cjs'),require('./chunk-VQCIOKJV.cjs'),require('./chunk-G4XXRHL2.cjs'),require('./chunk-LODXIALE.cjs'),require('./chunk-UG55PF75.cjs'),require('./chunk-JHXRGPL7.cjs'),require('./chunk-UJ7ZTV4J.cjs'),require('./chunk-5XLFPPTY.cjs'),require('./chunk-2RIHC5TZ.cjs'),require('./chunk-GNFE24S7.cjs');Object.defineProperty(exports,"createAzureBlobStorage",{enumerable:true,get:function(){return chunk6EJRZHFP_cjs.d}});Object.defineProperty(exports,"createAzureQueueStorage",{enumerable:true,get:function(){return chunk6EJRZHFP_cjs.e}});Object.defineProperty(exports,"createCosmosAtomicRelayLock",{enumerable:true,get:function(){return chunk6EJRZHFP_cjs.c}});Object.defineProperty(exports,"createCosmosJournalStorage",{enumerable:true,get:function(){return chunk6EJRZHFP_cjs.b}});Object.defineProperty(exports,"createCosmosKvStorage",{enumerable:true,get:function(){return chunk6EJRZHFP_cjs.a}});Object.defineProperty(exports,"createAsyncBoardLiveCardsPublic",{enumerable:true,get:function(){return chunkN5RUH4NG_cjs.i}});Object.defineProperty(exports,"createAsyncCardStorageAdapter",{enumerable:true,get:function(){return chunkN5RUH4NG_cjs.c}});Object.defineProperty(exports,"createAsyncCardStore",{enumerable:true,get:function(){return chunkN5RUH4NG_cjs.d}});Object.defineProperty(exports,"createAsyncCardStorePublic",{enumerable:true,get:function(){return chunkN5RUH4NG_cjs.g}});Object.defineProperty(exports,"createAsyncJsonStorage",{enumerable:true,get:function(){return chunkN5RUH4NG_cjs.b}});Object.defineProperty(exports,"createAsyncQueueStoragePublic",{enumerable:true,get:function(){return chunkN5RUH4NG_cjs.h}});Object.defineProperty(exports,"createAsyncStateSnapshotAdapter",{enumerable:true,get:function(){return chunkN5RUH4NG_cjs.e}});Object.defineProperty(exports,"createAsyncStorageProvider",{enumerable:true,get:function(){return chunkN5RUH4NG_cjs.f}});Object.defineProperty(exports,"withAsyncRelayLock",{enumerable:true,get:function(){return chunkN5RUH4NG_cjs.a}});Object.defineProperty(exports,"createAsyncBoardConfigStore",{enumerable:true,get:function(){return chunkWRMOGPRG_cjs.b}});Object.defineProperty(exports,"createAsyncBoardWorkerStore",{enumerable:true,get:function(){return chunkWRMOGPRG_cjs.a}});Object.defineProperty(exports,"createHostedAsyncBoardPlatformAdapter",{enumerable:true,get:function(){return chunkWRMOGPRG_cjs.c}});//# sourceMappingURL=cloud-storage.cjs.map
2
2
  //# sourceMappingURL=cloud-storage.cjs.map
@@ -1,2 +1,2 @@
1
- export{d as createAzureBlobStorage,e as createAzureQueueStorage,c as createCosmosAtomicRelayLock,b as createCosmosJournalStorage,a as createCosmosKvStorage}from'./chunk-QLB6PKOT.js';export{i as createAsyncBoardLiveCardsPublic,c as createAsyncCardStorageAdapter,d as createAsyncCardStore,g as createAsyncCardStorePublic,b as createAsyncJsonStorage,h as createAsyncQueueStoragePublic,e as createAsyncStateSnapshotAdapter,f as createAsyncStorageProvider,a as withAsyncRelayLock}from'./chunk-JYVYAAXT.js';export{b as createAsyncBoardConfigStore,a as createAsyncBoardWorkerStore,c as createHostedAsyncBoardPlatformAdapter}from'./chunk-6MD6FVE3.js';import'./chunk-P3R6TXII.js';import'./chunk-ANKA7HEJ.js';import'./chunk-44L64VQ2.js';import'./chunk-VGT3TRQG.js';import'./chunk-WDPOGXTY.js';import'./chunk-JMDHDY6M.js';import'./chunk-3KC6LBOG.js';import'./chunk-MNEOJWPS.js';import'./chunk-7QNEV5S3.js';import'./chunk-UGB7PC4P.js';import'./chunk-FW4363Y4.js';//# sourceMappingURL=cloud-storage.js.map
1
+ export{d as createAzureBlobStorage,e as createAzureQueueStorage,c as createCosmosAtomicRelayLock,b as createCosmosJournalStorage,a as createCosmosKvStorage}from'./chunk-QLB6PKOT.js';export{i as createAsyncBoardLiveCardsPublic,c as createAsyncCardStorageAdapter,d as createAsyncCardStore,g as createAsyncCardStorePublic,b as createAsyncJsonStorage,h as createAsyncQueueStoragePublic,e as createAsyncStateSnapshotAdapter,f as createAsyncStorageProvider,a as withAsyncRelayLock}from'./chunk-BVQISI6G.js';export{b as createAsyncBoardConfigStore,a as createAsyncBoardWorkerStore,c as createHostedAsyncBoardPlatformAdapter}from'./chunk-6MD6FVE3.js';import'./chunk-ZA4FS27N.js';import'./chunk-ANKA7HEJ.js';import'./chunk-44L64VQ2.js';import'./chunk-VGT3TRQG.js';import'./chunk-WDPOGXTY.js';import'./chunk-E46UCDYN.js';import'./chunk-M53MX233.js';import'./chunk-MNEOJWPS.js';import'./chunk-7QNEV5S3.js';import'./chunk-UGB7PC4P.js';import'./chunk-FW4363Y4.js';//# sourceMappingURL=cloud-storage.js.map
2
2
  //# sourceMappingURL=cloud-storage.js.map
@@ -1,2 +1,2 @@
1
- 'use strict';var chunkJAL25FGA_cjs=require('../chunk-JAL25FGA.cjs'),chunkG4XXRHL2_cjs=require('../chunk-G4XXRHL2.cjs');require('../chunk-LODXIALE.cjs'),require('../chunk-IXZG74EW.cjs'),require('../chunk-HWYMZK3N.cjs'),require('../chunk-UJ7ZTV4J.cjs'),require('../chunk-GNFE24S7.cjs');Object.defineProperty(exports,"createCallbackHandler",{enumerable:true,get:function(){return chunkJAL25FGA_cjs.i}});Object.defineProperty(exports,"createFireAndForgetHandler",{enumerable:true,get:function(){return chunkJAL25FGA_cjs.j}});Object.defineProperty(exports,"createNoopHandler",{enumerable:true,get:function(){return chunkJAL25FGA_cjs.o}});Object.defineProperty(exports,"createProcessHandler",{enumerable:true,get:function(){return chunkJAL25FGA_cjs.l}});Object.defineProperty(exports,"createScriptHandler",{enumerable:true,get:function(){return chunkJAL25FGA_cjs.m}});Object.defineProperty(exports,"createShellHandler",{enumerable:true,get:function(){return chunkJAL25FGA_cjs.k}});Object.defineProperty(exports,"createWebhookHandler",{enumerable:true,get:function(){return chunkJAL25FGA_cjs.n}});Object.defineProperty(exports,"getDownstream",{enumerable:true,get:function(){return chunkJAL25FGA_cjs.e}});Object.defineProperty(exports,"getUnreachableNodes",{enumerable:true,get:function(){return chunkJAL25FGA_cjs.c}});Object.defineProperty(exports,"getUnreachableTokens",{enumerable:true,get:function(){return chunkJAL25FGA_cjs.b}});Object.defineProperty(exports,"getUpstream",{enumerable:true,get:function(){return chunkJAL25FGA_cjs.d}});Object.defineProperty(exports,"inspect",{enumerable:true,get:function(){return chunkJAL25FGA_cjs.a}});Object.defineProperty(exports,"liveCardsToReactiveGraph",{enumerable:true,get:function(){return chunkJAL25FGA_cjs.p}});Object.defineProperty(exports,"mutateGraph",{enumerable:true,get:function(){return chunkJAL25FGA_cjs.h}});Object.defineProperty(exports,"validateLiveGraph",{enumerable:true,get:function(){return chunkJAL25FGA_cjs.f}});Object.defineProperty(exports,"validateReactiveGraph",{enumerable:true,get:function(){return chunkJAL25FGA_cjs.g}});Object.defineProperty(exports,"MemoryJournal",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.s}});Object.defineProperty(exports,"addNode",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.d}});Object.defineProperty(exports,"addProvides",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.h}});Object.defineProperty(exports,"addRequires",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.f}});Object.defineProperty(exports,"applyEvent",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.b}});Object.defineProperty(exports,"applyEvents",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.c}});Object.defineProperty(exports,"computeDataHash",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.t}});Object.defineProperty(exports,"createLiveGraph",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.a}});Object.defineProperty(exports,"createReactiveGraph",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.u}});Object.defineProperty(exports,"disableNode",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.m}});Object.defineProperty(exports,"drainTokens",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.k}});Object.defineProperty(exports,"enableNode",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.n}});Object.defineProperty(exports,"getNode",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.o}});Object.defineProperty(exports,"injectTokens",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.j}});Object.defineProperty(exports,"removeNode",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.e}});Object.defineProperty(exports,"removeProvides",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.i}});Object.defineProperty(exports,"removeRequires",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.g}});Object.defineProperty(exports,"resetNode",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.l}});Object.defineProperty(exports,"restore",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.q}});Object.defineProperty(exports,"schedule",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.r}});Object.defineProperty(exports,"snapshot",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.p}});//# sourceMappingURL=index.cjs.map
1
+ 'use strict';var chunkGTHQJXYW_cjs=require('../chunk-GTHQJXYW.cjs'),chunkG4XXRHL2_cjs=require('../chunk-G4XXRHL2.cjs');require('../chunk-LODXIALE.cjs'),require('../chunk-UG55PF75.cjs'),require('../chunk-JHXRGPL7.cjs'),require('../chunk-UJ7ZTV4J.cjs'),require('../chunk-GNFE24S7.cjs');Object.defineProperty(exports,"createCallbackHandler",{enumerable:true,get:function(){return chunkGTHQJXYW_cjs.i}});Object.defineProperty(exports,"createFireAndForgetHandler",{enumerable:true,get:function(){return chunkGTHQJXYW_cjs.j}});Object.defineProperty(exports,"createNoopHandler",{enumerable:true,get:function(){return chunkGTHQJXYW_cjs.o}});Object.defineProperty(exports,"createProcessHandler",{enumerable:true,get:function(){return chunkGTHQJXYW_cjs.l}});Object.defineProperty(exports,"createScriptHandler",{enumerable:true,get:function(){return chunkGTHQJXYW_cjs.m}});Object.defineProperty(exports,"createShellHandler",{enumerable:true,get:function(){return chunkGTHQJXYW_cjs.k}});Object.defineProperty(exports,"createWebhookHandler",{enumerable:true,get:function(){return chunkGTHQJXYW_cjs.n}});Object.defineProperty(exports,"getDownstream",{enumerable:true,get:function(){return chunkGTHQJXYW_cjs.e}});Object.defineProperty(exports,"getUnreachableNodes",{enumerable:true,get:function(){return chunkGTHQJXYW_cjs.c}});Object.defineProperty(exports,"getUnreachableTokens",{enumerable:true,get:function(){return chunkGTHQJXYW_cjs.b}});Object.defineProperty(exports,"getUpstream",{enumerable:true,get:function(){return chunkGTHQJXYW_cjs.d}});Object.defineProperty(exports,"inspect",{enumerable:true,get:function(){return chunkGTHQJXYW_cjs.a}});Object.defineProperty(exports,"liveCardsToReactiveGraph",{enumerable:true,get:function(){return chunkGTHQJXYW_cjs.p}});Object.defineProperty(exports,"mutateGraph",{enumerable:true,get:function(){return chunkGTHQJXYW_cjs.h}});Object.defineProperty(exports,"validateLiveGraph",{enumerable:true,get:function(){return chunkGTHQJXYW_cjs.f}});Object.defineProperty(exports,"validateReactiveGraph",{enumerable:true,get:function(){return chunkGTHQJXYW_cjs.g}});Object.defineProperty(exports,"MemoryJournal",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.s}});Object.defineProperty(exports,"addNode",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.d}});Object.defineProperty(exports,"addProvides",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.h}});Object.defineProperty(exports,"addRequires",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.f}});Object.defineProperty(exports,"applyEvent",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.b}});Object.defineProperty(exports,"applyEvents",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.c}});Object.defineProperty(exports,"computeDataHash",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.t}});Object.defineProperty(exports,"createLiveGraph",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.a}});Object.defineProperty(exports,"createReactiveGraph",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.u}});Object.defineProperty(exports,"disableNode",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.m}});Object.defineProperty(exports,"drainTokens",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.k}});Object.defineProperty(exports,"enableNode",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.n}});Object.defineProperty(exports,"getNode",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.o}});Object.defineProperty(exports,"injectTokens",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.j}});Object.defineProperty(exports,"removeNode",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.e}});Object.defineProperty(exports,"removeProvides",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.i}});Object.defineProperty(exports,"removeRequires",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.g}});Object.defineProperty(exports,"resetNode",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.l}});Object.defineProperty(exports,"restore",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.q}});Object.defineProperty(exports,"schedule",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.r}});Object.defineProperty(exports,"snapshot",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.p}});//# sourceMappingURL=index.cjs.map
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1,2 +1,2 @@
1
- export{i as createCallbackHandler,j as createFireAndForgetHandler,o as createNoopHandler,l as createProcessHandler,m as createScriptHandler,k as createShellHandler,n as createWebhookHandler,e as getDownstream,c as getUnreachableNodes,b as getUnreachableTokens,d as getUpstream,a as inspect,p as liveCardsToReactiveGraph,h as mutateGraph,f as validateLiveGraph,g as validateReactiveGraph}from'../chunk-OPNGCSXJ.js';export{s as MemoryJournal,d as addNode,h as addProvides,f as addRequires,b as applyEvent,c as applyEvents,t as computeDataHash,a as createLiveGraph,u as createReactiveGraph,m as disableNode,k as drainTokens,n as enableNode,o as getNode,j as injectTokens,e as removeNode,i as removeProvides,g as removeRequires,l as resetNode,q as restore,r as schedule,p as snapshot}from'../chunk-VGT3TRQG.js';import'../chunk-WDPOGXTY.js';import'../chunk-JMDHDY6M.js';import'../chunk-3KC6LBOG.js';import'../chunk-MNEOJWPS.js';import'../chunk-FW4363Y4.js';//# sourceMappingURL=index.js.map
1
+ export{i as createCallbackHandler,j as createFireAndForgetHandler,o as createNoopHandler,l as createProcessHandler,m as createScriptHandler,k as createShellHandler,n as createWebhookHandler,e as getDownstream,c as getUnreachableNodes,b as getUnreachableTokens,d as getUpstream,a as inspect,p as liveCardsToReactiveGraph,h as mutateGraph,f as validateLiveGraph,g as validateReactiveGraph}from'../chunk-GLKWEPX6.js';export{s as MemoryJournal,d as addNode,h as addProvides,f as addRequires,b as applyEvent,c as applyEvents,t as computeDataHash,a as createLiveGraph,u as createReactiveGraph,m as disableNode,k as drainTokens,n as enableNode,o as getNode,j as injectTokens,e as removeNode,i as removeProvides,g as removeRequires,l as resetNode,q as restore,r as schedule,p as snapshot}from'../chunk-VGT3TRQG.js';import'../chunk-WDPOGXTY.js';import'../chunk-E46UCDYN.js';import'../chunk-M53MX233.js';import'../chunk-MNEOJWPS.js';import'../chunk-FW4363Y4.js';//# sourceMappingURL=index.js.map
2
2
  //# sourceMappingURL=index.js.map
@@ -1,3 +1,3 @@
1
- 'use strict';var chunkHFW7E2Z7_cjs=require('../chunk-HFW7E2Z7.cjs'),chunkMCPADH33_cjs=require('../chunk-MCPADH33.cjs');require('../chunk-6EJRZHFP.cjs'),require('../chunk-3T5TMAWG.cjs');var chunkWRMOGPRG_cjs=require('../chunk-WRMOGPRG.cjs');require('../chunk-SJANU3PL.cjs'),require('../chunk-7JVHYHT2.cjs');var chunkVQCIOKJV_cjs=require('../chunk-VQCIOKJV.cjs');require('../chunk-G4XXRHL2.cjs'),require('../chunk-LODXIALE.cjs'),require('../chunk-IXZG74EW.cjs'),require('../chunk-HWYMZK3N.cjs'),require('../chunk-UJ7ZTV4J.cjs'),require('../chunk-5XLFPPTY.cjs'),require('../chunk-2RIHC5TZ.cjs'),require('../chunk-GNFE24S7.cjs');function j(e){return String(e).replace(/[^a-zA-Z0-9_-]/g,"_")}function M(e){let r="";for(let n=0;n<e.length;n++)r+=String.fromCharCode(e[n]);return btoa(r)}function U(e){let r=atob(e),n=new Uint8Array(r.length);for(let t=0;t<r.length;t++)n[t]=r.charCodeAt(t);return n}function I(e){let r=new TextEncoder().encode(e);return M(r).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}function V(e){return chunkHFW7E2Z7_cjs.a(e).slice(0,16)}function K(){return globalThis.crypto&&typeof globalThis.crypto.randomUUID=="function"?globalThis.crypto.randomUUID():`${Date.now().toString(16)}-${Math.random().toString(16).slice(2,10)}`}function c(e){return I(String(e))}function f(){let e=String(Date.now()).padStart(13,"0"),r=Math.random().toString(36).slice(2,10).padEnd(8,"0");return `${e}-${r}`}function Q(e){try{return chunkVQCIOKJV_cjs.b(e)}catch{return null}}function p(e,r){let n=Q(e);return n?.kind==="firestore"&&n.value?n.value:r}function g(e){if(e===void 0)return null;if(Array.isArray(e))return e.map(r=>g(r===void 0?null:r));if(e&&typeof e=="object"){let r=Object.entries(e).filter(([,n])=>n!==void 0).map(([n,t])=>[n,g(t)]);return Object.fromEntries(r)}return e}function _(e,r){return e.collection("boards").doc(r)}function y(e,r,n){return _(e,r).collection(n)}function b(e){return {kind:"firestore",value:String(e)}}function l(e){return chunkVQCIOKJV_cjs.a(b(e))}function N(e){return {baseRef:b(`boards/${e}`),boardRuntimeStoreRef:l(`boards/${e}/runtime-board`),cardStoreRef:l(`boards/${e}/cards`),outputsStoreRef:l(`boards/${e}/runtime-out`),queueStoreRef:l(`boards/${e}/runtime`),scratchStoreRef:l(`boards/${e}/scratch`),chatStoreRef:l(`boards/${e}/chat`),artifactsStoreRef:l(`boards/${e}/files`),fetchedSourcesStoreRef:l(`boards/${e}/sources`)}}function A(e){return {async read(r){let n=await e.doc(c(r)).get();return n.exists?n.data()?.value??null:null},async write(r,n){await e.doc(c(r)).set(g({k:r,value:n}));},async delete(r){await e.doc(c(r)).delete();},async listKeys(r=""){return (await(r?e.where("k",">=",r).where("k","<",`${r}\uF8FF`).orderBy("k"):e.orderBy("k")).get()).docs.map(s=>s.data()?.k??s.id)}}}function m(e){return {async append(r){let n=f();return await e.doc(n).set(g({id:n,createdAt:new Date().toISOString(),payload:r})),{id:n,payload:r}},async readAll(){return (await e.orderBy("id").get()).docs.map(n=>{let t=n.data()??{};return {id:String(t.id??n.id),payload:t.payload}})},async readAfter(r){let s=(await(r?e.where("id",">",r).orderBy("id"):e.orderBy("id")).get()).docs.map(a=>{let i=a.data()??{};return {id:String(i.id??a.id),payload:i.payload}});return {entries:s,newCursor:s.length>0?s[s.length-1].id:r}},async clear(){let r=await e.get();if(typeof e.firestore.batch=="function"){let n=e.firestore.batch();for(let t of r.docs)n.delete(e.doc(t.id));await n.commit();return}await Promise.all(r.docs.map(n=>e.doc(n.id).delete()));}}}function w(e){return {async read(r){let n=await e.doc(c(r)).get();return n.exists?n.data()?.content??null:null},async write(r,n){await e.doc(c(r)).set({k:r,content:n});},async exists(r){return (await e.doc(c(r)).get()).exists},async remove(r){await e.doc(c(r)).delete();},async readBytes(r){let n=await e.doc(c(r)).get();if(!n.exists)return null;let t=n.data()??{};return typeof t.bytesBase64=="string"?U(t.bytesBase64):typeof t.content=="string"?new TextEncoder().encode(t.content):null},async writeBytes(r,n){await e.doc(c(r)).set({k:r,bytesBase64:M(n)});},async listKeys(r=""){return (await(r?e.where("k",">=",r).where("k","<",`${r}\uF8FF`).orderBy("k"):e.orderBy("k")).get()).docs.map(s=>s.data()?.k??s.id)},async stat(r){let n=await e.doc(c(r)).get();if(!n.exists)return null;let t=n.data()??{},s=typeof t.bytesBase64=="string"?Math.floor(t.bytesBase64.length*3/4):typeof t.content=="string"?t.content.length:0;return {key:r,size:s,contentType:String(t.contentType??"application/octet-stream")}},async renameKey(r,n){let t=await e.doc(c(r)).get();if(!t.exists)return false;let s=t.data()??{};return await e.doc(c(n)).set({...s,k:n}),await e.doc(c(r)).delete(),true}}}function O(e){let r=w(e);return {...r,async getUniqueKey(n="scratch-",t=""){return `${n}${f()}${t}`},async create(n,t="scratch-",s=""){let a=`${t}${f()}${s}`;return await r.write(a,n),a},keyRef(n){return b(`${e.path}/${c(n)}`)},config:{async get(n){let t=await r.read(`__config__/${n}`);if(t==null)return null;try{return JSON.parse(t)}catch{return t}},async set(n,t){await r.write(`__config__/${n}`,JSON.stringify(t));}}}}function P(e,r){let n=_(e,r);return {stream(t){return m(n.collection(`archive-stream-${t}`))},blob(t){return w(n.collection(`archive-blob-${t}`))},async listStreams(t=""){return typeof n.listCollections!="function"?[]:(await n.listCollections()).map(a=>a.path.split("/").at(-1)??"").filter(a=>a.startsWith(`archive-stream-${t}`)).map(a=>a.slice(15))},async listBlobs(t=""){return typeof n.listCollections!="function"?[]:(await n.listCollections()).map(a=>a.path.split("/").at(-1)??"").filter(a=>a.startsWith(`archive-blob-${t}`)).map(a=>a.slice(13))},config:{async get(t){let s=await n.collection("archive-config").doc("main").get();return s.exists?s.data()?.[t]??null:null},async set(t,s){await n.collection("archive-config").doc("main").set(g({[t]:s}),{merge:true});}}}}function J(e,r={}){let n=r.holderId??K(),t=r.ttlMs??3e4;return {async tryAcquire(){try{await e.firestore.runTransaction(async s=>{let a=await s.get(e),i=new Date().toISOString();if(a.exists){let o=a.data()??{};if(o.held===!0&&typeof o.expiresAt=="string"&&o.expiresAt>i)throw Object.assign(new Error("locked"),{code:"locked"})}s.set(e,{held:!0,holderId:n,acquiredAt:i,expiresAt:new Date(Date.now()+t).toISOString()});});}catch(s){if(s?.code==="locked")return null;throw s}return async()=>{try{await e.firestore.runTransaction(async s=>{let a=await s.get(e);if(!a.exists)return;(a.data()??{}).holderId===n&&s.update(e,{held:!1,holderId:null});});}catch{}}}}}function W(e,r={}){let n=r.defaultVisibilityMs??3e4;return {async enqueue(t){let s=f(),a=new Date().toISOString();return await e.doc(s).set(g({id:s,body:t,enqueuedAt:a,attempt:0,staged:false,visibleAfter:a,leaseToken:null,leaseExpiresAt:null,dead:false,deadReason:null})),{id:s,body:t,enqueuedAt:a,attempt:0}},async enqueueMany(t){let s=[];for(let a of t)s.push(await this.enqueue(a));return s},async enqueueIfAbsent(t,s){if((await e.where("dedupKey","==",s).where("dead","==",false).limit(1).get()).docs.length>0)return null;let i=f(),o=new Date().toISOString();return await e.doc(i).set(g({id:i,body:t,dedupKey:s,enqueuedAt:o,attempt:0,staged:false,visibleAfter:o,leaseToken:null,leaseExpiresAt:null,dead:false,deadReason:null})),{id:i,body:t,enqueuedAt:o,attempt:0}},async stage(t,s={}){if(s.dedupKey&&(await e.where("dedupKey","==",s.dedupKey).where("dead","==",false).limit(1).get()).docs.length>0)return null;let a=f(),i=new Date().toISOString();return await e.doc(a).set(g({id:a,body:t,dedupKey:s.dedupKey,enqueuedAt:i,attempt:0,staged:true,visibleAfter:null,leaseToken:null,leaseExpiresAt:null,dead:false,deadReason:null})),{id:a,body:t,enqueuedAt:i,attempt:0}},async commitStaged(t){try{return await e.firestore.runTransaction(async s=>{let a=e.doc(t),i=await s.get(a);if(!i.exists)throw new Error("missing");let o=i.data()??{};if(o.dead===!0||o.staged!==!0)throw new Error("not-staged");s.update(a,{staged:!1,enqueuedAt:new Date().toISOString(),attempt:0,visibleAfter:new Date().toISOString()});}),!0}catch{return false}},async discardStaged(t,s){try{return await e.firestore.runTransaction(async a=>{let i=e.doc(t),o=await a.get(i);if(!o.exists)throw new Error("missing");let d=o.data()??{};if(d.dead===!0||d.staged!==!0)throw new Error("not-staged");a.update(i,{staged:!1,dead:!0,deadReason:s??"discarded"});}),!0}catch{return false}},async peekStaged(t=""){return (await e.where("dead","==",false).where("staged","==",true).orderBy("enqueuedAt").get()).docs.map(a=>a.data()??{}).filter(a=>!t||String(a.id??"").startsWith(t)).map(a=>({id:String(a.id??""),body:a.body,enqueuedAt:String(a.enqueuedAt??""),attempt:Number(a.attempt??0)}))},async lease(t={}){let s=Math.max(1,Number(t.max??1)),a=Math.max(1,Number(t.visibilityMs??n)),i=new Date().toISOString(),o=Math.max(s*32,128),d=await e.where("dead","==",false).where("staged","==",false).where("visibleAfter","<=",i).orderBy("visibleAfter").limit(o).get(),h=[];for(let F of d.docs){if(h.length>=s)break;let R=e.doc(F.id);try{let S=null;await e.firestore.runTransaction(async x=>{let T=await x.get(R);if(!T.exists)throw new Error("gone");let u=T.data()??{},k=new Date().toISOString();if(u.dead===!0)throw new Error("dead");if(u.staged===!0)throw new Error("staged");if(typeof u.visibleAfter=="string"&&u.visibleAfter>k)throw new Error("hidden");if(u.leaseToken&&typeof u.leaseExpiresAt=="string"&&u.leaseExpiresAt>k)throw new Error("leased");let L=K(),$=new Date(Date.now()+a).toISOString(),v=Number(u.attempt??0)+1;x.update(R,{leaseToken:L,leaseExpiresAt:$,attempt:v}),S={id:String(u.id??F.id),body:u.body,enqueuedAt:String(u.enqueuedAt??k),attempt:v,leaseToken:L,leaseExpiresAt:$};}),S&&h.push(S);}catch{}}return h},async ack(t,s){try{return await e.firestore.runTransaction(async a=>{let i=e.doc(t),o=await a.get(i);if(!o.exists)return;if((o.data()??{}).leaseToken!==s)throw new Error("token mismatch");a.delete(i);}),!0}catch{return false}},async nack(t,s,a={}){try{return await e.firestore.runTransaction(async i=>{let o=e.doc(t),d=await i.get(o);if(!d.exists)return;if((d.data()??{}).leaseToken!==s)throw new Error("token mismatch");a.dead===!0?i.update(o,{dead:!0,deadReason:a.reason??"nacked",leaseToken:null,leaseExpiresAt:null}):i.update(o,{leaseToken:null,leaseExpiresAt:null,visibleAfter:new Date().toISOString()});}),!0}catch{return false}},async peekActive(t=""){return (await e.where("dead","==",false).where("staged","==",false).orderBy("enqueuedAt").get()).docs.map(a=>a.data()??{}).filter(a=>!t||String(a.id??"").startsWith(t)).map(a=>({id:String(a.id??""),body:a.body,enqueuedAt:String(a.enqueuedAt??""),attempt:Number(a.attempt??0)}))},async peekDeadLetter(t=""){return (await e.where("dead","==",true).orderBy("enqueuedAt").get()).docs.map(a=>a.data()??{}).filter(a=>!t||String(a.id??"").startsWith(t)).map(a=>({id:String(a.id??""),body:a.body,enqueuedAt:String(a.enqueuedAt??""),attempt:Number(a.attempt??0),reason:a.deadReason}))}}}function z(e,r,n={}){return chunkWRMOGPRG_cjs.c({boardId:r,kvStorage(t){return A(y(e,r,`kv-${t||"root"}`))},kvStorageForRef(t){return A(e.collection(p(t,`boards/${r}/kv-root`)))},blobStorage(t){return w(y(e,r,`blobs-${t||"root"}`))},blobStorageForRef(t){return w(e.collection(p(t,`boards/${r}/blobs-root`)))},chatStorageForRef(t){let s=p(t,`boards/${r}/chat`);return chunkMCPADH33_cjs.b(a=>m(e.collection(`${s}-journal-${j(a)}`)),A(e.collection(`${s}-kv`)))},queueStoreRef:N(r).queueStoreRef,queueStorageForRef(t,s){let a=p(t,`boards/${r}/runtime`);return W(e.collection(`${a}-${s}`))},scratchStorage(){return O(y(e,r,"scratch"))},scratchStorageForRef(t){return O(e.collection(p(t,`boards/${r}/scratch`)))},archiveFactory(){return P(e,r)},archiveFactoryForRef(t){let s=Q(t),a=s?.kind==="firestore-board"?s.value:r;return P(e,a)},journalStorage(){return m(y(e,r,"journal"))},journalStorageForRef(t){let s=p(t,`boards/${r}/runtime-board`);return m(e.collection(`${s}-journal`))},lock:J(y(e,r,"locks").doc("board-lock"),{holderId:n.holderId}),hashFn(t){return V(t)},genId(){return f()},supportsDirectSourceOutput(t){return t.howToRun==="queue-storage"||t.howToRun==="http:post"},requestProcessAccumulated:n.requestProcessAccumulated,publishBoardChangeNotifications:n.publishBoardChangeNotifications,onWarn:t=>console.warn(`[firestore-board-adapter:${r}] ${t}`)})}function Y(e,r,n={}){let t={...N(r),...n.refs??{}},s=z(e,r,n);return {refs:t,boardAdapter:s}}
1
+ 'use strict';var chunkHFW7E2Z7_cjs=require('../chunk-HFW7E2Z7.cjs'),chunkMCPADH33_cjs=require('../chunk-MCPADH33.cjs');require('../chunk-6EJRZHFP.cjs'),require('../chunk-N5RUH4NG.cjs');var chunkWRMOGPRG_cjs=require('../chunk-WRMOGPRG.cjs');require('../chunk-YXKWIPQM.cjs'),require('../chunk-7JVHYHT2.cjs');var chunkVQCIOKJV_cjs=require('../chunk-VQCIOKJV.cjs');require('../chunk-G4XXRHL2.cjs'),require('../chunk-LODXIALE.cjs'),require('../chunk-UG55PF75.cjs'),require('../chunk-JHXRGPL7.cjs'),require('../chunk-UJ7ZTV4J.cjs'),require('../chunk-5XLFPPTY.cjs'),require('../chunk-2RIHC5TZ.cjs'),require('../chunk-GNFE24S7.cjs');function j(e){return String(e).replace(/[^a-zA-Z0-9_-]/g,"_")}function M(e){let r="";for(let n=0;n<e.length;n++)r+=String.fromCharCode(e[n]);return btoa(r)}function U(e){let r=atob(e),n=new Uint8Array(r.length);for(let t=0;t<r.length;t++)n[t]=r.charCodeAt(t);return n}function I(e){let r=new TextEncoder().encode(e);return M(r).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}function V(e){return chunkHFW7E2Z7_cjs.a(e).slice(0,16)}function K(){return globalThis.crypto&&typeof globalThis.crypto.randomUUID=="function"?globalThis.crypto.randomUUID():`${Date.now().toString(16)}-${Math.random().toString(16).slice(2,10)}`}function c(e){return I(String(e))}function f(){let e=String(Date.now()).padStart(13,"0"),r=Math.random().toString(36).slice(2,10).padEnd(8,"0");return `${e}-${r}`}function Q(e){try{return chunkVQCIOKJV_cjs.b(e)}catch{return null}}function p(e,r){let n=Q(e);return n?.kind==="firestore"&&n.value?n.value:r}function g(e){if(e===void 0)return null;if(Array.isArray(e))return e.map(r=>g(r===void 0?null:r));if(e&&typeof e=="object"){let r=Object.entries(e).filter(([,n])=>n!==void 0).map(([n,t])=>[n,g(t)]);return Object.fromEntries(r)}return e}function _(e,r){return e.collection("boards").doc(r)}function y(e,r,n){return _(e,r).collection(n)}function b(e){return {kind:"firestore",value:String(e)}}function l(e){return chunkVQCIOKJV_cjs.a(b(e))}function N(e){return {baseRef:b(`boards/${e}`),boardRuntimeStoreRef:l(`boards/${e}/runtime-board`),cardStoreRef:l(`boards/${e}/cards`),outputsStoreRef:l(`boards/${e}/runtime-out`),queueStoreRef:l(`boards/${e}/runtime`),scratchStoreRef:l(`boards/${e}/scratch`),chatStoreRef:l(`boards/${e}/chat`),artifactsStoreRef:l(`boards/${e}/files`),fetchedSourcesStoreRef:l(`boards/${e}/sources`)}}function A(e){return {async read(r){let n=await e.doc(c(r)).get();return n.exists?n.data()?.value??null:null},async write(r,n){await e.doc(c(r)).set(g({k:r,value:n}));},async delete(r){await e.doc(c(r)).delete();},async listKeys(r=""){return (await(r?e.where("k",">=",r).where("k","<",`${r}\uF8FF`).orderBy("k"):e.orderBy("k")).get()).docs.map(s=>s.data()?.k??s.id)}}}function m(e){return {async append(r){let n=f();return await e.doc(n).set(g({id:n,createdAt:new Date().toISOString(),payload:r})),{id:n,payload:r}},async readAll(){return (await e.orderBy("id").get()).docs.map(n=>{let t=n.data()??{};return {id:String(t.id??n.id),payload:t.payload}})},async readAfter(r){let s=(await(r?e.where("id",">",r).orderBy("id"):e.orderBy("id")).get()).docs.map(a=>{let i=a.data()??{};return {id:String(i.id??a.id),payload:i.payload}});return {entries:s,newCursor:s.length>0?s[s.length-1].id:r}},async clear(){let r=await e.get();if(typeof e.firestore.batch=="function"){let n=e.firestore.batch();for(let t of r.docs)n.delete(e.doc(t.id));await n.commit();return}await Promise.all(r.docs.map(n=>e.doc(n.id).delete()));}}}function w(e){return {async read(r){let n=await e.doc(c(r)).get();return n.exists?n.data()?.content??null:null},async write(r,n){await e.doc(c(r)).set({k:r,content:n});},async exists(r){return (await e.doc(c(r)).get()).exists},async remove(r){await e.doc(c(r)).delete();},async readBytes(r){let n=await e.doc(c(r)).get();if(!n.exists)return null;let t=n.data()??{};return typeof t.bytesBase64=="string"?U(t.bytesBase64):typeof t.content=="string"?new TextEncoder().encode(t.content):null},async writeBytes(r,n){await e.doc(c(r)).set({k:r,bytesBase64:M(n)});},async listKeys(r=""){return (await(r?e.where("k",">=",r).where("k","<",`${r}\uF8FF`).orderBy("k"):e.orderBy("k")).get()).docs.map(s=>s.data()?.k??s.id)},async stat(r){let n=await e.doc(c(r)).get();if(!n.exists)return null;let t=n.data()??{},s=typeof t.bytesBase64=="string"?Math.floor(t.bytesBase64.length*3/4):typeof t.content=="string"?t.content.length:0;return {key:r,size:s,contentType:String(t.contentType??"application/octet-stream")}},async renameKey(r,n){let t=await e.doc(c(r)).get();if(!t.exists)return false;let s=t.data()??{};return await e.doc(c(n)).set({...s,k:n}),await e.doc(c(r)).delete(),true}}}function O(e){let r=w(e);return {...r,async getUniqueKey(n="scratch-",t=""){return `${n}${f()}${t}`},async create(n,t="scratch-",s=""){let a=`${t}${f()}${s}`;return await r.write(a,n),a},keyRef(n){return b(`${e.path}/${c(n)}`)},config:{async get(n){let t=await r.read(`__config__/${n}`);if(t==null)return null;try{return JSON.parse(t)}catch{return t}},async set(n,t){await r.write(`__config__/${n}`,JSON.stringify(t));}}}}function P(e,r){let n=_(e,r);return {stream(t){return m(n.collection(`archive-stream-${t}`))},blob(t){return w(n.collection(`archive-blob-${t}`))},async listStreams(t=""){return typeof n.listCollections!="function"?[]:(await n.listCollections()).map(a=>a.path.split("/").at(-1)??"").filter(a=>a.startsWith(`archive-stream-${t}`)).map(a=>a.slice(15))},async listBlobs(t=""){return typeof n.listCollections!="function"?[]:(await n.listCollections()).map(a=>a.path.split("/").at(-1)??"").filter(a=>a.startsWith(`archive-blob-${t}`)).map(a=>a.slice(13))},config:{async get(t){let s=await n.collection("archive-config").doc("main").get();return s.exists?s.data()?.[t]??null:null},async set(t,s){await n.collection("archive-config").doc("main").set(g({[t]:s}),{merge:true});}}}}function J(e,r={}){let n=r.holderId??K(),t=r.ttlMs??3e4;return {async tryAcquire(){try{await e.firestore.runTransaction(async s=>{let a=await s.get(e),i=new Date().toISOString();if(a.exists){let o=a.data()??{};if(o.held===!0&&typeof o.expiresAt=="string"&&o.expiresAt>i)throw Object.assign(new Error("locked"),{code:"locked"})}s.set(e,{held:!0,holderId:n,acquiredAt:i,expiresAt:new Date(Date.now()+t).toISOString()});});}catch(s){if(s?.code==="locked")return null;throw s}return async()=>{try{await e.firestore.runTransaction(async s=>{let a=await s.get(e);if(!a.exists)return;(a.data()??{}).holderId===n&&s.update(e,{held:!1,holderId:null});});}catch{}}}}}function W(e,r={}){let n=r.defaultVisibilityMs??3e4;return {async enqueue(t){let s=f(),a=new Date().toISOString();return await e.doc(s).set(g({id:s,body:t,enqueuedAt:a,attempt:0,staged:false,visibleAfter:a,leaseToken:null,leaseExpiresAt:null,dead:false,deadReason:null})),{id:s,body:t,enqueuedAt:a,attempt:0}},async enqueueMany(t){let s=[];for(let a of t)s.push(await this.enqueue(a));return s},async enqueueIfAbsent(t,s){if((await e.where("dedupKey","==",s).where("dead","==",false).limit(1).get()).docs.length>0)return null;let i=f(),o=new Date().toISOString();return await e.doc(i).set(g({id:i,body:t,dedupKey:s,enqueuedAt:o,attempt:0,staged:false,visibleAfter:o,leaseToken:null,leaseExpiresAt:null,dead:false,deadReason:null})),{id:i,body:t,enqueuedAt:o,attempt:0}},async stage(t,s={}){if(s.dedupKey&&(await e.where("dedupKey","==",s.dedupKey).where("dead","==",false).limit(1).get()).docs.length>0)return null;let a=f(),i=new Date().toISOString();return await e.doc(a).set(g({id:a,body:t,dedupKey:s.dedupKey,enqueuedAt:i,attempt:0,staged:true,visibleAfter:null,leaseToken:null,leaseExpiresAt:null,dead:false,deadReason:null})),{id:a,body:t,enqueuedAt:i,attempt:0}},async commitStaged(t){try{return await e.firestore.runTransaction(async s=>{let a=e.doc(t),i=await s.get(a);if(!i.exists)throw new Error("missing");let o=i.data()??{};if(o.dead===!0||o.staged!==!0)throw new Error("not-staged");s.update(a,{staged:!1,enqueuedAt:new Date().toISOString(),attempt:0,visibleAfter:new Date().toISOString()});}),!0}catch{return false}},async discardStaged(t,s){try{return await e.firestore.runTransaction(async a=>{let i=e.doc(t),o=await a.get(i);if(!o.exists)throw new Error("missing");let d=o.data()??{};if(d.dead===!0||d.staged!==!0)throw new Error("not-staged");a.update(i,{staged:!1,dead:!0,deadReason:s??"discarded"});}),!0}catch{return false}},async peekStaged(t=""){return (await e.where("dead","==",false).where("staged","==",true).orderBy("enqueuedAt").get()).docs.map(a=>a.data()??{}).filter(a=>!t||String(a.id??"").startsWith(t)).map(a=>({id:String(a.id??""),body:a.body,enqueuedAt:String(a.enqueuedAt??""),attempt:Number(a.attempt??0)}))},async lease(t={}){let s=Math.max(1,Number(t.max??1)),a=Math.max(1,Number(t.visibilityMs??n)),i=new Date().toISOString(),o=Math.max(s*32,128),d=await e.where("dead","==",false).where("staged","==",false).where("visibleAfter","<=",i).orderBy("visibleAfter").limit(o).get(),h=[];for(let F of d.docs){if(h.length>=s)break;let R=e.doc(F.id);try{let S=null;await e.firestore.runTransaction(async x=>{let T=await x.get(R);if(!T.exists)throw new Error("gone");let u=T.data()??{},k=new Date().toISOString();if(u.dead===!0)throw new Error("dead");if(u.staged===!0)throw new Error("staged");if(typeof u.visibleAfter=="string"&&u.visibleAfter>k)throw new Error("hidden");if(u.leaseToken&&typeof u.leaseExpiresAt=="string"&&u.leaseExpiresAt>k)throw new Error("leased");let L=K(),$=new Date(Date.now()+a).toISOString(),v=Number(u.attempt??0)+1;x.update(R,{leaseToken:L,leaseExpiresAt:$,attempt:v}),S={id:String(u.id??F.id),body:u.body,enqueuedAt:String(u.enqueuedAt??k),attempt:v,leaseToken:L,leaseExpiresAt:$};}),S&&h.push(S);}catch{}}return h},async ack(t,s){try{return await e.firestore.runTransaction(async a=>{let i=e.doc(t),o=await a.get(i);if(!o.exists)return;if((o.data()??{}).leaseToken!==s)throw new Error("token mismatch");a.delete(i);}),!0}catch{return false}},async nack(t,s,a={}){try{return await e.firestore.runTransaction(async i=>{let o=e.doc(t),d=await i.get(o);if(!d.exists)return;if((d.data()??{}).leaseToken!==s)throw new Error("token mismatch");a.dead===!0?i.update(o,{dead:!0,deadReason:a.reason??"nacked",leaseToken:null,leaseExpiresAt:null}):i.update(o,{leaseToken:null,leaseExpiresAt:null,visibleAfter:new Date().toISOString()});}),!0}catch{return false}},async peekActive(t=""){return (await e.where("dead","==",false).where("staged","==",false).orderBy("enqueuedAt").get()).docs.map(a=>a.data()??{}).filter(a=>!t||String(a.id??"").startsWith(t)).map(a=>({id:String(a.id??""),body:a.body,enqueuedAt:String(a.enqueuedAt??""),attempt:Number(a.attempt??0)}))},async peekDeadLetter(t=""){return (await e.where("dead","==",true).orderBy("enqueuedAt").get()).docs.map(a=>a.data()??{}).filter(a=>!t||String(a.id??"").startsWith(t)).map(a=>({id:String(a.id??""),body:a.body,enqueuedAt:String(a.enqueuedAt??""),attempt:Number(a.attempt??0),reason:a.deadReason}))}}}function z(e,r,n={}){return chunkWRMOGPRG_cjs.c({boardId:r,kvStorage(t){return A(y(e,r,`kv-${t||"root"}`))},kvStorageForRef(t){return A(e.collection(p(t,`boards/${r}/kv-root`)))},blobStorage(t){return w(y(e,r,`blobs-${t||"root"}`))},blobStorageForRef(t){return w(e.collection(p(t,`boards/${r}/blobs-root`)))},chatStorageForRef(t){let s=p(t,`boards/${r}/chat`);return chunkMCPADH33_cjs.b(a=>m(e.collection(`${s}-journal-${j(a)}`)),A(e.collection(`${s}-kv`)))},queueStoreRef:N(r).queueStoreRef,queueStorageForRef(t,s){let a=p(t,`boards/${r}/runtime`);return W(e.collection(`${a}-${s}`))},scratchStorage(){return O(y(e,r,"scratch"))},scratchStorageForRef(t){return O(e.collection(p(t,`boards/${r}/scratch`)))},archiveFactory(){return P(e,r)},archiveFactoryForRef(t){let s=Q(t),a=s?.kind==="firestore-board"?s.value:r;return P(e,a)},journalStorage(){return m(y(e,r,"journal"))},journalStorageForRef(t){let s=p(t,`boards/${r}/runtime-board`);return m(e.collection(`${s}-journal`))},lock:J(y(e,r,"locks").doc("board-lock"),{holderId:n.holderId}),hashFn(t){return V(t)},genId(){return f()},supportsDirectSourceOutput(t){return t.howToRun==="queue-storage"||t.howToRun==="http:post"},requestProcessAccumulated:n.requestProcessAccumulated,publishBoardChangeNotifications:n.publishBoardChangeNotifications,onWarn:t=>console.warn(`[firestore-board-adapter:${r}] ${t}`)})}function Y(e,r,n={}){let t={...N(r),...n.refs??{}},s=z(e,r,n);return {refs:t,boardAdapter:s}}
2
2
  exports.createFirestoreArchiveFactory=P;exports.createFirestoreBlobStorage=w;exports.createFirestoreBoardAdapter=z;exports.createFirestoreBoardRefs=N;exports.createFirestoreBoardRuntimeBundle=Y;exports.createFirestoreJournalStorage=m;exports.createFirestoreKvStorage=A;exports.createFirestoreLock=J;exports.createFirestoreQueueStorage=W;exports.createFirestoreScratchStorage=O;exports.makeFirestoreRef=b;exports.serializeFirestoreRef=l;//# sourceMappingURL=index.cjs.map
3
3
  //# sourceMappingURL=index.cjs.map
@@ -1,3 +1,3 @@
1
- import {a as a$1}from'../chunk-VS3BXEYK.js';import {b as b$1}from'../chunk-Y4WK7HE4.js';import'../chunk-QLB6PKOT.js';import'../chunk-JYVYAAXT.js';import {c as c$1}from'../chunk-6MD6FVE3.js';import'../chunk-P3R6TXII.js';import'../chunk-ANKA7HEJ.js';import {a,b as b$2}from'../chunk-44L64VQ2.js';import'../chunk-VGT3TRQG.js';import'../chunk-WDPOGXTY.js';import'../chunk-JMDHDY6M.js';import'../chunk-3KC6LBOG.js';import'../chunk-MNEOJWPS.js';import'../chunk-7QNEV5S3.js';import'../chunk-UGB7PC4P.js';import'../chunk-FW4363Y4.js';function j(e){return String(e).replace(/[^a-zA-Z0-9_-]/g,"_")}function M(e){let r="";for(let n=0;n<e.length;n++)r+=String.fromCharCode(e[n]);return btoa(r)}function U(e){let r=atob(e),n=new Uint8Array(r.length);for(let t=0;t<r.length;t++)n[t]=r.charCodeAt(t);return n}function I(e){let r=new TextEncoder().encode(e);return M(r).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}function V(e){return a$1(e).slice(0,16)}function K(){return globalThis.crypto&&typeof globalThis.crypto.randomUUID=="function"?globalThis.crypto.randomUUID():`${Date.now().toString(16)}-${Math.random().toString(16).slice(2,10)}`}function c(e){return I(String(e))}function f(){let e=String(Date.now()).padStart(13,"0"),r=Math.random().toString(36).slice(2,10).padEnd(8,"0");return `${e}-${r}`}function Q(e){try{return b$2(e)}catch{return null}}function p(e,r){let n=Q(e);return n?.kind==="firestore"&&n.value?n.value:r}function g(e){if(e===void 0)return null;if(Array.isArray(e))return e.map(r=>g(r===void 0?null:r));if(e&&typeof e=="object"){let r=Object.entries(e).filter(([,n])=>n!==void 0).map(([n,t])=>[n,g(t)]);return Object.fromEntries(r)}return e}function _(e,r){return e.collection("boards").doc(r)}function y(e,r,n){return _(e,r).collection(n)}function b(e){return {kind:"firestore",value:String(e)}}function l(e){return a(b(e))}function N(e){return {baseRef:b(`boards/${e}`),boardRuntimeStoreRef:l(`boards/${e}/runtime-board`),cardStoreRef:l(`boards/${e}/cards`),outputsStoreRef:l(`boards/${e}/runtime-out`),queueStoreRef:l(`boards/${e}/runtime`),scratchStoreRef:l(`boards/${e}/scratch`),chatStoreRef:l(`boards/${e}/chat`),artifactsStoreRef:l(`boards/${e}/files`),fetchedSourcesStoreRef:l(`boards/${e}/sources`)}}function A(e){return {async read(r){let n=await e.doc(c(r)).get();return n.exists?n.data()?.value??null:null},async write(r,n){await e.doc(c(r)).set(g({k:r,value:n}));},async delete(r){await e.doc(c(r)).delete();},async listKeys(r=""){return (await(r?e.where("k",">=",r).where("k","<",`${r}\uF8FF`).orderBy("k"):e.orderBy("k")).get()).docs.map(s=>s.data()?.k??s.id)}}}function m(e){return {async append(r){let n=f();return await e.doc(n).set(g({id:n,createdAt:new Date().toISOString(),payload:r})),{id:n,payload:r}},async readAll(){return (await e.orderBy("id").get()).docs.map(n=>{let t=n.data()??{};return {id:String(t.id??n.id),payload:t.payload}})},async readAfter(r){let s=(await(r?e.where("id",">",r).orderBy("id"):e.orderBy("id")).get()).docs.map(a=>{let i=a.data()??{};return {id:String(i.id??a.id),payload:i.payload}});return {entries:s,newCursor:s.length>0?s[s.length-1].id:r}},async clear(){let r=await e.get();if(typeof e.firestore.batch=="function"){let n=e.firestore.batch();for(let t of r.docs)n.delete(e.doc(t.id));await n.commit();return}await Promise.all(r.docs.map(n=>e.doc(n.id).delete()));}}}function w(e){return {async read(r){let n=await e.doc(c(r)).get();return n.exists?n.data()?.content??null:null},async write(r,n){await e.doc(c(r)).set({k:r,content:n});},async exists(r){return (await e.doc(c(r)).get()).exists},async remove(r){await e.doc(c(r)).delete();},async readBytes(r){let n=await e.doc(c(r)).get();if(!n.exists)return null;let t=n.data()??{};return typeof t.bytesBase64=="string"?U(t.bytesBase64):typeof t.content=="string"?new TextEncoder().encode(t.content):null},async writeBytes(r,n){await e.doc(c(r)).set({k:r,bytesBase64:M(n)});},async listKeys(r=""){return (await(r?e.where("k",">=",r).where("k","<",`${r}\uF8FF`).orderBy("k"):e.orderBy("k")).get()).docs.map(s=>s.data()?.k??s.id)},async stat(r){let n=await e.doc(c(r)).get();if(!n.exists)return null;let t=n.data()??{},s=typeof t.bytesBase64=="string"?Math.floor(t.bytesBase64.length*3/4):typeof t.content=="string"?t.content.length:0;return {key:r,size:s,contentType:String(t.contentType??"application/octet-stream")}},async renameKey(r,n){let t=await e.doc(c(r)).get();if(!t.exists)return false;let s=t.data()??{};return await e.doc(c(n)).set({...s,k:n}),await e.doc(c(r)).delete(),true}}}function O(e){let r=w(e);return {...r,async getUniqueKey(n="scratch-",t=""){return `${n}${f()}${t}`},async create(n,t="scratch-",s=""){let a=`${t}${f()}${s}`;return await r.write(a,n),a},keyRef(n){return b(`${e.path}/${c(n)}`)},config:{async get(n){let t=await r.read(`__config__/${n}`);if(t==null)return null;try{return JSON.parse(t)}catch{return t}},async set(n,t){await r.write(`__config__/${n}`,JSON.stringify(t));}}}}function P(e,r){let n=_(e,r);return {stream(t){return m(n.collection(`archive-stream-${t}`))},blob(t){return w(n.collection(`archive-blob-${t}`))},async listStreams(t=""){return typeof n.listCollections!="function"?[]:(await n.listCollections()).map(a=>a.path.split("/").at(-1)??"").filter(a=>a.startsWith(`archive-stream-${t}`)).map(a=>a.slice(15))},async listBlobs(t=""){return typeof n.listCollections!="function"?[]:(await n.listCollections()).map(a=>a.path.split("/").at(-1)??"").filter(a=>a.startsWith(`archive-blob-${t}`)).map(a=>a.slice(13))},config:{async get(t){let s=await n.collection("archive-config").doc("main").get();return s.exists?s.data()?.[t]??null:null},async set(t,s){await n.collection("archive-config").doc("main").set(g({[t]:s}),{merge:true});}}}}function J(e,r={}){let n=r.holderId??K(),t=r.ttlMs??3e4;return {async tryAcquire(){try{await e.firestore.runTransaction(async s=>{let a=await s.get(e),i=new Date().toISOString();if(a.exists){let o=a.data()??{};if(o.held===!0&&typeof o.expiresAt=="string"&&o.expiresAt>i)throw Object.assign(new Error("locked"),{code:"locked"})}s.set(e,{held:!0,holderId:n,acquiredAt:i,expiresAt:new Date(Date.now()+t).toISOString()});});}catch(s){if(s?.code==="locked")return null;throw s}return async()=>{try{await e.firestore.runTransaction(async s=>{let a=await s.get(e);if(!a.exists)return;(a.data()??{}).holderId===n&&s.update(e,{held:!1,holderId:null});});}catch{}}}}}function W(e,r={}){let n=r.defaultVisibilityMs??3e4;return {async enqueue(t){let s=f(),a=new Date().toISOString();return await e.doc(s).set(g({id:s,body:t,enqueuedAt:a,attempt:0,staged:false,visibleAfter:a,leaseToken:null,leaseExpiresAt:null,dead:false,deadReason:null})),{id:s,body:t,enqueuedAt:a,attempt:0}},async enqueueMany(t){let s=[];for(let a of t)s.push(await this.enqueue(a));return s},async enqueueIfAbsent(t,s){if((await e.where("dedupKey","==",s).where("dead","==",false).limit(1).get()).docs.length>0)return null;let i=f(),o=new Date().toISOString();return await e.doc(i).set(g({id:i,body:t,dedupKey:s,enqueuedAt:o,attempt:0,staged:false,visibleAfter:o,leaseToken:null,leaseExpiresAt:null,dead:false,deadReason:null})),{id:i,body:t,enqueuedAt:o,attempt:0}},async stage(t,s={}){if(s.dedupKey&&(await e.where("dedupKey","==",s.dedupKey).where("dead","==",false).limit(1).get()).docs.length>0)return null;let a=f(),i=new Date().toISOString();return await e.doc(a).set(g({id:a,body:t,dedupKey:s.dedupKey,enqueuedAt:i,attempt:0,staged:true,visibleAfter:null,leaseToken:null,leaseExpiresAt:null,dead:false,deadReason:null})),{id:a,body:t,enqueuedAt:i,attempt:0}},async commitStaged(t){try{return await e.firestore.runTransaction(async s=>{let a=e.doc(t),i=await s.get(a);if(!i.exists)throw new Error("missing");let o=i.data()??{};if(o.dead===!0||o.staged!==!0)throw new Error("not-staged");s.update(a,{staged:!1,enqueuedAt:new Date().toISOString(),attempt:0,visibleAfter:new Date().toISOString()});}),!0}catch{return false}},async discardStaged(t,s){try{return await e.firestore.runTransaction(async a=>{let i=e.doc(t),o=await a.get(i);if(!o.exists)throw new Error("missing");let d=o.data()??{};if(d.dead===!0||d.staged!==!0)throw new Error("not-staged");a.update(i,{staged:!1,dead:!0,deadReason:s??"discarded"});}),!0}catch{return false}},async peekStaged(t=""){return (await e.where("dead","==",false).where("staged","==",true).orderBy("enqueuedAt").get()).docs.map(a=>a.data()??{}).filter(a=>!t||String(a.id??"").startsWith(t)).map(a=>({id:String(a.id??""),body:a.body,enqueuedAt:String(a.enqueuedAt??""),attempt:Number(a.attempt??0)}))},async lease(t={}){let s=Math.max(1,Number(t.max??1)),a=Math.max(1,Number(t.visibilityMs??n)),i=new Date().toISOString(),o=Math.max(s*32,128),d=await e.where("dead","==",false).where("staged","==",false).where("visibleAfter","<=",i).orderBy("visibleAfter").limit(o).get(),h=[];for(let F of d.docs){if(h.length>=s)break;let R=e.doc(F.id);try{let S=null;await e.firestore.runTransaction(async x=>{let T=await x.get(R);if(!T.exists)throw new Error("gone");let u=T.data()??{},k=new Date().toISOString();if(u.dead===!0)throw new Error("dead");if(u.staged===!0)throw new Error("staged");if(typeof u.visibleAfter=="string"&&u.visibleAfter>k)throw new Error("hidden");if(u.leaseToken&&typeof u.leaseExpiresAt=="string"&&u.leaseExpiresAt>k)throw new Error("leased");let L=K(),$=new Date(Date.now()+a).toISOString(),v=Number(u.attempt??0)+1;x.update(R,{leaseToken:L,leaseExpiresAt:$,attempt:v}),S={id:String(u.id??F.id),body:u.body,enqueuedAt:String(u.enqueuedAt??k),attempt:v,leaseToken:L,leaseExpiresAt:$};}),S&&h.push(S);}catch{}}return h},async ack(t,s){try{return await e.firestore.runTransaction(async a=>{let i=e.doc(t),o=await a.get(i);if(!o.exists)return;if((o.data()??{}).leaseToken!==s)throw new Error("token mismatch");a.delete(i);}),!0}catch{return false}},async nack(t,s,a={}){try{return await e.firestore.runTransaction(async i=>{let o=e.doc(t),d=await i.get(o);if(!d.exists)return;if((d.data()??{}).leaseToken!==s)throw new Error("token mismatch");a.dead===!0?i.update(o,{dead:!0,deadReason:a.reason??"nacked",leaseToken:null,leaseExpiresAt:null}):i.update(o,{leaseToken:null,leaseExpiresAt:null,visibleAfter:new Date().toISOString()});}),!0}catch{return false}},async peekActive(t=""){return (await e.where("dead","==",false).where("staged","==",false).orderBy("enqueuedAt").get()).docs.map(a=>a.data()??{}).filter(a=>!t||String(a.id??"").startsWith(t)).map(a=>({id:String(a.id??""),body:a.body,enqueuedAt:String(a.enqueuedAt??""),attempt:Number(a.attempt??0)}))},async peekDeadLetter(t=""){return (await e.where("dead","==",true).orderBy("enqueuedAt").get()).docs.map(a=>a.data()??{}).filter(a=>!t||String(a.id??"").startsWith(t)).map(a=>({id:String(a.id??""),body:a.body,enqueuedAt:String(a.enqueuedAt??""),attempt:Number(a.attempt??0),reason:a.deadReason}))}}}function z(e,r,n={}){return c$1({boardId:r,kvStorage(t){return A(y(e,r,`kv-${t||"root"}`))},kvStorageForRef(t){return A(e.collection(p(t,`boards/${r}/kv-root`)))},blobStorage(t){return w(y(e,r,`blobs-${t||"root"}`))},blobStorageForRef(t){return w(e.collection(p(t,`boards/${r}/blobs-root`)))},chatStorageForRef(t){let s=p(t,`boards/${r}/chat`);return b$1(a=>m(e.collection(`${s}-journal-${j(a)}`)),A(e.collection(`${s}-kv`)))},queueStoreRef:N(r).queueStoreRef,queueStorageForRef(t,s){let a=p(t,`boards/${r}/runtime`);return W(e.collection(`${a}-${s}`))},scratchStorage(){return O(y(e,r,"scratch"))},scratchStorageForRef(t){return O(e.collection(p(t,`boards/${r}/scratch`)))},archiveFactory(){return P(e,r)},archiveFactoryForRef(t){let s=Q(t),a=s?.kind==="firestore-board"?s.value:r;return P(e,a)},journalStorage(){return m(y(e,r,"journal"))},journalStorageForRef(t){let s=p(t,`boards/${r}/runtime-board`);return m(e.collection(`${s}-journal`))},lock:J(y(e,r,"locks").doc("board-lock"),{holderId:n.holderId}),hashFn(t){return V(t)},genId(){return f()},supportsDirectSourceOutput(t){return t.howToRun==="queue-storage"||t.howToRun==="http:post"},requestProcessAccumulated:n.requestProcessAccumulated,publishBoardChangeNotifications:n.publishBoardChangeNotifications,onWarn:t=>console.warn(`[firestore-board-adapter:${r}] ${t}`)})}function Y(e,r,n={}){let t={...N(r),...n.refs??{}},s=z(e,r,n);return {refs:t,boardAdapter:s}}
1
+ import {a as a$1}from'../chunk-VS3BXEYK.js';import {b as b$1}from'../chunk-Y4WK7HE4.js';import'../chunk-QLB6PKOT.js';import'../chunk-BVQISI6G.js';import {c as c$1}from'../chunk-6MD6FVE3.js';import'../chunk-ZA4FS27N.js';import'../chunk-ANKA7HEJ.js';import {a,b as b$2}from'../chunk-44L64VQ2.js';import'../chunk-VGT3TRQG.js';import'../chunk-WDPOGXTY.js';import'../chunk-E46UCDYN.js';import'../chunk-M53MX233.js';import'../chunk-MNEOJWPS.js';import'../chunk-7QNEV5S3.js';import'../chunk-UGB7PC4P.js';import'../chunk-FW4363Y4.js';function j(e){return String(e).replace(/[^a-zA-Z0-9_-]/g,"_")}function M(e){let r="";for(let n=0;n<e.length;n++)r+=String.fromCharCode(e[n]);return btoa(r)}function U(e){let r=atob(e),n=new Uint8Array(r.length);for(let t=0;t<r.length;t++)n[t]=r.charCodeAt(t);return n}function I(e){let r=new TextEncoder().encode(e);return M(r).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}function V(e){return a$1(e).slice(0,16)}function K(){return globalThis.crypto&&typeof globalThis.crypto.randomUUID=="function"?globalThis.crypto.randomUUID():`${Date.now().toString(16)}-${Math.random().toString(16).slice(2,10)}`}function c(e){return I(String(e))}function f(){let e=String(Date.now()).padStart(13,"0"),r=Math.random().toString(36).slice(2,10).padEnd(8,"0");return `${e}-${r}`}function Q(e){try{return b$2(e)}catch{return null}}function p(e,r){let n=Q(e);return n?.kind==="firestore"&&n.value?n.value:r}function g(e){if(e===void 0)return null;if(Array.isArray(e))return e.map(r=>g(r===void 0?null:r));if(e&&typeof e=="object"){let r=Object.entries(e).filter(([,n])=>n!==void 0).map(([n,t])=>[n,g(t)]);return Object.fromEntries(r)}return e}function _(e,r){return e.collection("boards").doc(r)}function y(e,r,n){return _(e,r).collection(n)}function b(e){return {kind:"firestore",value:String(e)}}function l(e){return a(b(e))}function N(e){return {baseRef:b(`boards/${e}`),boardRuntimeStoreRef:l(`boards/${e}/runtime-board`),cardStoreRef:l(`boards/${e}/cards`),outputsStoreRef:l(`boards/${e}/runtime-out`),queueStoreRef:l(`boards/${e}/runtime`),scratchStoreRef:l(`boards/${e}/scratch`),chatStoreRef:l(`boards/${e}/chat`),artifactsStoreRef:l(`boards/${e}/files`),fetchedSourcesStoreRef:l(`boards/${e}/sources`)}}function A(e){return {async read(r){let n=await e.doc(c(r)).get();return n.exists?n.data()?.value??null:null},async write(r,n){await e.doc(c(r)).set(g({k:r,value:n}));},async delete(r){await e.doc(c(r)).delete();},async listKeys(r=""){return (await(r?e.where("k",">=",r).where("k","<",`${r}\uF8FF`).orderBy("k"):e.orderBy("k")).get()).docs.map(s=>s.data()?.k??s.id)}}}function m(e){return {async append(r){let n=f();return await e.doc(n).set(g({id:n,createdAt:new Date().toISOString(),payload:r})),{id:n,payload:r}},async readAll(){return (await e.orderBy("id").get()).docs.map(n=>{let t=n.data()??{};return {id:String(t.id??n.id),payload:t.payload}})},async readAfter(r){let s=(await(r?e.where("id",">",r).orderBy("id"):e.orderBy("id")).get()).docs.map(a=>{let i=a.data()??{};return {id:String(i.id??a.id),payload:i.payload}});return {entries:s,newCursor:s.length>0?s[s.length-1].id:r}},async clear(){let r=await e.get();if(typeof e.firestore.batch=="function"){let n=e.firestore.batch();for(let t of r.docs)n.delete(e.doc(t.id));await n.commit();return}await Promise.all(r.docs.map(n=>e.doc(n.id).delete()));}}}function w(e){return {async read(r){let n=await e.doc(c(r)).get();return n.exists?n.data()?.content??null:null},async write(r,n){await e.doc(c(r)).set({k:r,content:n});},async exists(r){return (await e.doc(c(r)).get()).exists},async remove(r){await e.doc(c(r)).delete();},async readBytes(r){let n=await e.doc(c(r)).get();if(!n.exists)return null;let t=n.data()??{};return typeof t.bytesBase64=="string"?U(t.bytesBase64):typeof t.content=="string"?new TextEncoder().encode(t.content):null},async writeBytes(r,n){await e.doc(c(r)).set({k:r,bytesBase64:M(n)});},async listKeys(r=""){return (await(r?e.where("k",">=",r).where("k","<",`${r}\uF8FF`).orderBy("k"):e.orderBy("k")).get()).docs.map(s=>s.data()?.k??s.id)},async stat(r){let n=await e.doc(c(r)).get();if(!n.exists)return null;let t=n.data()??{},s=typeof t.bytesBase64=="string"?Math.floor(t.bytesBase64.length*3/4):typeof t.content=="string"?t.content.length:0;return {key:r,size:s,contentType:String(t.contentType??"application/octet-stream")}},async renameKey(r,n){let t=await e.doc(c(r)).get();if(!t.exists)return false;let s=t.data()??{};return await e.doc(c(n)).set({...s,k:n}),await e.doc(c(r)).delete(),true}}}function O(e){let r=w(e);return {...r,async getUniqueKey(n="scratch-",t=""){return `${n}${f()}${t}`},async create(n,t="scratch-",s=""){let a=`${t}${f()}${s}`;return await r.write(a,n),a},keyRef(n){return b(`${e.path}/${c(n)}`)},config:{async get(n){let t=await r.read(`__config__/${n}`);if(t==null)return null;try{return JSON.parse(t)}catch{return t}},async set(n,t){await r.write(`__config__/${n}`,JSON.stringify(t));}}}}function P(e,r){let n=_(e,r);return {stream(t){return m(n.collection(`archive-stream-${t}`))},blob(t){return w(n.collection(`archive-blob-${t}`))},async listStreams(t=""){return typeof n.listCollections!="function"?[]:(await n.listCollections()).map(a=>a.path.split("/").at(-1)??"").filter(a=>a.startsWith(`archive-stream-${t}`)).map(a=>a.slice(15))},async listBlobs(t=""){return typeof n.listCollections!="function"?[]:(await n.listCollections()).map(a=>a.path.split("/").at(-1)??"").filter(a=>a.startsWith(`archive-blob-${t}`)).map(a=>a.slice(13))},config:{async get(t){let s=await n.collection("archive-config").doc("main").get();return s.exists?s.data()?.[t]??null:null},async set(t,s){await n.collection("archive-config").doc("main").set(g({[t]:s}),{merge:true});}}}}function J(e,r={}){let n=r.holderId??K(),t=r.ttlMs??3e4;return {async tryAcquire(){try{await e.firestore.runTransaction(async s=>{let a=await s.get(e),i=new Date().toISOString();if(a.exists){let o=a.data()??{};if(o.held===!0&&typeof o.expiresAt=="string"&&o.expiresAt>i)throw Object.assign(new Error("locked"),{code:"locked"})}s.set(e,{held:!0,holderId:n,acquiredAt:i,expiresAt:new Date(Date.now()+t).toISOString()});});}catch(s){if(s?.code==="locked")return null;throw s}return async()=>{try{await e.firestore.runTransaction(async s=>{let a=await s.get(e);if(!a.exists)return;(a.data()??{}).holderId===n&&s.update(e,{held:!1,holderId:null});});}catch{}}}}}function W(e,r={}){let n=r.defaultVisibilityMs??3e4;return {async enqueue(t){let s=f(),a=new Date().toISOString();return await e.doc(s).set(g({id:s,body:t,enqueuedAt:a,attempt:0,staged:false,visibleAfter:a,leaseToken:null,leaseExpiresAt:null,dead:false,deadReason:null})),{id:s,body:t,enqueuedAt:a,attempt:0}},async enqueueMany(t){let s=[];for(let a of t)s.push(await this.enqueue(a));return s},async enqueueIfAbsent(t,s){if((await e.where("dedupKey","==",s).where("dead","==",false).limit(1).get()).docs.length>0)return null;let i=f(),o=new Date().toISOString();return await e.doc(i).set(g({id:i,body:t,dedupKey:s,enqueuedAt:o,attempt:0,staged:false,visibleAfter:o,leaseToken:null,leaseExpiresAt:null,dead:false,deadReason:null})),{id:i,body:t,enqueuedAt:o,attempt:0}},async stage(t,s={}){if(s.dedupKey&&(await e.where("dedupKey","==",s.dedupKey).where("dead","==",false).limit(1).get()).docs.length>0)return null;let a=f(),i=new Date().toISOString();return await e.doc(a).set(g({id:a,body:t,dedupKey:s.dedupKey,enqueuedAt:i,attempt:0,staged:true,visibleAfter:null,leaseToken:null,leaseExpiresAt:null,dead:false,deadReason:null})),{id:a,body:t,enqueuedAt:i,attempt:0}},async commitStaged(t){try{return await e.firestore.runTransaction(async s=>{let a=e.doc(t),i=await s.get(a);if(!i.exists)throw new Error("missing");let o=i.data()??{};if(o.dead===!0||o.staged!==!0)throw new Error("not-staged");s.update(a,{staged:!1,enqueuedAt:new Date().toISOString(),attempt:0,visibleAfter:new Date().toISOString()});}),!0}catch{return false}},async discardStaged(t,s){try{return await e.firestore.runTransaction(async a=>{let i=e.doc(t),o=await a.get(i);if(!o.exists)throw new Error("missing");let d=o.data()??{};if(d.dead===!0||d.staged!==!0)throw new Error("not-staged");a.update(i,{staged:!1,dead:!0,deadReason:s??"discarded"});}),!0}catch{return false}},async peekStaged(t=""){return (await e.where("dead","==",false).where("staged","==",true).orderBy("enqueuedAt").get()).docs.map(a=>a.data()??{}).filter(a=>!t||String(a.id??"").startsWith(t)).map(a=>({id:String(a.id??""),body:a.body,enqueuedAt:String(a.enqueuedAt??""),attempt:Number(a.attempt??0)}))},async lease(t={}){let s=Math.max(1,Number(t.max??1)),a=Math.max(1,Number(t.visibilityMs??n)),i=new Date().toISOString(),o=Math.max(s*32,128),d=await e.where("dead","==",false).where("staged","==",false).where("visibleAfter","<=",i).orderBy("visibleAfter").limit(o).get(),h=[];for(let F of d.docs){if(h.length>=s)break;let R=e.doc(F.id);try{let S=null;await e.firestore.runTransaction(async x=>{let T=await x.get(R);if(!T.exists)throw new Error("gone");let u=T.data()??{},k=new Date().toISOString();if(u.dead===!0)throw new Error("dead");if(u.staged===!0)throw new Error("staged");if(typeof u.visibleAfter=="string"&&u.visibleAfter>k)throw new Error("hidden");if(u.leaseToken&&typeof u.leaseExpiresAt=="string"&&u.leaseExpiresAt>k)throw new Error("leased");let L=K(),$=new Date(Date.now()+a).toISOString(),v=Number(u.attempt??0)+1;x.update(R,{leaseToken:L,leaseExpiresAt:$,attempt:v}),S={id:String(u.id??F.id),body:u.body,enqueuedAt:String(u.enqueuedAt??k),attempt:v,leaseToken:L,leaseExpiresAt:$};}),S&&h.push(S);}catch{}}return h},async ack(t,s){try{return await e.firestore.runTransaction(async a=>{let i=e.doc(t),o=await a.get(i);if(!o.exists)return;if((o.data()??{}).leaseToken!==s)throw new Error("token mismatch");a.delete(i);}),!0}catch{return false}},async nack(t,s,a={}){try{return await e.firestore.runTransaction(async i=>{let o=e.doc(t),d=await i.get(o);if(!d.exists)return;if((d.data()??{}).leaseToken!==s)throw new Error("token mismatch");a.dead===!0?i.update(o,{dead:!0,deadReason:a.reason??"nacked",leaseToken:null,leaseExpiresAt:null}):i.update(o,{leaseToken:null,leaseExpiresAt:null,visibleAfter:new Date().toISOString()});}),!0}catch{return false}},async peekActive(t=""){return (await e.where("dead","==",false).where("staged","==",false).orderBy("enqueuedAt").get()).docs.map(a=>a.data()??{}).filter(a=>!t||String(a.id??"").startsWith(t)).map(a=>({id:String(a.id??""),body:a.body,enqueuedAt:String(a.enqueuedAt??""),attempt:Number(a.attempt??0)}))},async peekDeadLetter(t=""){return (await e.where("dead","==",true).orderBy("enqueuedAt").get()).docs.map(a=>a.data()??{}).filter(a=>!t||String(a.id??"").startsWith(t)).map(a=>({id:String(a.id??""),body:a.body,enqueuedAt:String(a.enqueuedAt??""),attempt:Number(a.attempt??0),reason:a.deadReason}))}}}function z(e,r,n={}){return c$1({boardId:r,kvStorage(t){return A(y(e,r,`kv-${t||"root"}`))},kvStorageForRef(t){return A(e.collection(p(t,`boards/${r}/kv-root`)))},blobStorage(t){return w(y(e,r,`blobs-${t||"root"}`))},blobStorageForRef(t){return w(e.collection(p(t,`boards/${r}/blobs-root`)))},chatStorageForRef(t){let s=p(t,`boards/${r}/chat`);return b$1(a=>m(e.collection(`${s}-journal-${j(a)}`)),A(e.collection(`${s}-kv`)))},queueStoreRef:N(r).queueStoreRef,queueStorageForRef(t,s){let a=p(t,`boards/${r}/runtime`);return W(e.collection(`${a}-${s}`))},scratchStorage(){return O(y(e,r,"scratch"))},scratchStorageForRef(t){return O(e.collection(p(t,`boards/${r}/scratch`)))},archiveFactory(){return P(e,r)},archiveFactoryForRef(t){let s=Q(t),a=s?.kind==="firestore-board"?s.value:r;return P(e,a)},journalStorage(){return m(y(e,r,"journal"))},journalStorageForRef(t){let s=p(t,`boards/${r}/runtime-board`);return m(e.collection(`${s}-journal`))},lock:J(y(e,r,"locks").doc("board-lock"),{holderId:n.holderId}),hashFn(t){return V(t)},genId(){return f()},supportsDirectSourceOutput(t){return t.howToRun==="queue-storage"||t.howToRun==="http:post"},requestProcessAccumulated:n.requestProcessAccumulated,publishBoardChangeNotifications:n.publishBoardChangeNotifications,onWarn:t=>console.warn(`[firestore-board-adapter:${r}] ${t}`)})}function Y(e,r,n={}){let t={...N(r),...n.refs??{}},s=z(e,r,n);return {refs:t,boardAdapter:s}}
2
2
  export{P as createFirestoreArchiveFactory,w as createFirestoreBlobStorage,z as createFirestoreBoardAdapter,N as createFirestoreBoardRefs,Y as createFirestoreBoardRuntimeBundle,m as createFirestoreJournalStorage,A as createFirestoreKvStorage,J as createFirestoreLock,W as createFirestoreQueueStorage,O as createFirestoreScratchStorage,b as makeFirestoreRef,l as serializeFirestoreRef};//# sourceMappingURL=index.js.map
3
3
  //# sourceMappingURL=index.js.map