yaml-flow 8.11.2 → 8.11.3

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 (34) hide show
  1. package/browser/adapters/firestore-storage.js +2 -2
  2. package/browser/adapters/localstorage-storage.js +3 -3
  3. package/browser/asset-integrity.json +5 -5
  4. package/browser/server-runtime-controlface.js +5 -5
  5. package/examples/board/test/server-http-test-browser.ts +8 -0
  6. package/examples/board/test/server-http-test.js +14 -18
  7. package/lib/board-live-cards-node.cjs +2 -2
  8. package/lib/board-live-cards-node.js +2 -2
  9. package/lib/board-live-cards-public.cjs +1 -1
  10. package/lib/board-live-cards-public.js +1 -1
  11. package/lib/board-live-cards-server-runtime.cjs +1 -1
  12. package/lib/board-live-cards-server-runtime.js +1 -1
  13. package/lib/chunk-5VTIOM2U.js +3 -0
  14. package/lib/chunk-BAG7MHZP.cjs +3 -0
  15. package/lib/chunk-EZOXABJ2.js +3 -0
  16. package/lib/chunk-HVLWVMG6.cjs +3 -0
  17. package/lib/chunk-SEUSFOMM.js +3 -0
  18. package/lib/{chunk-42ZOYXEV.cjs → chunk-YQ4MW72D.cjs} +3 -3
  19. package/lib/cloud-storage.cjs +1 -1
  20. package/lib/cloud-storage.js +1 -1
  21. package/lib/firestore-storage/index.cjs +1 -1
  22. package/lib/firestore-storage/index.js +1 -1
  23. package/lib/localstorage-storage/index.cjs +1 -1
  24. package/lib/localstorage-storage/index.js +1 -1
  25. package/lib/server-runtime/index.cjs +1 -1
  26. package/lib/server-runtime/index.js +1 -1
  27. package/lib/server-runtime-controlface/index.cjs +1 -1
  28. package/lib/server-runtime-controlface/index.js +1 -1
  29. package/package.json +1 -1
  30. package/lib/chunk-AHW6EMUO.js +0 -3
  31. package/lib/chunk-EYBDAEVO.cjs +0 -3
  32. package/lib/chunk-HFI2NAZJ.js +0 -3
  33. package/lib/chunk-LDVJPFIW.js +0 -3
  34. package/lib/chunk-ZOZ7ZDGA.cjs +0 -3
@@ -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-ZOZ7ZDGA.cjs');var chunkWRMOGPRG_cjs=require('../chunk-WRMOGPRG.cjs');require('../chunk-EYBDAEVO.cjs'),require('../chunk-7JVHYHT2.cjs');var chunkVQCIOKJV_cjs=require('../chunk-VQCIOKJV.cjs');require('../chunk-G4XXRHL2.cjs'),require('../chunk-LODXIALE.cjs'),require('../chunk-QBEQL4TL.cjs'),require('../chunk-QEHKMLHA.cjs'),require('../chunk-UJ7ZTV4J.cjs'),require('../chunk-5XLFPPTY.cjs'),require('../chunk-2RIHC5TZ.cjs'),require('../chunk-GNFE24S7.cjs');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-HVLWVMG6.cjs');var chunkWRMOGPRG_cjs=require('../chunk-WRMOGPRG.cjs');require('../chunk-BAG7MHZP.cjs'),require('../chunk-7JVHYHT2.cjs');var chunkVQCIOKJV_cjs=require('../chunk-VQCIOKJV.cjs');require('../chunk-G4XXRHL2.cjs'),require('../chunk-LODXIALE.cjs'),require('../chunk-QBEQL4TL.cjs'),require('../chunk-QEHKMLHA.cjs'),require('../chunk-UJ7ZTV4J.cjs'),require('../chunk-5XLFPPTY.cjs'),require('../chunk-2RIHC5TZ.cjs'),require('../chunk-GNFE24S7.cjs');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-HFI2NAZJ.js';import {c as c$1}from'../chunk-6MD6FVE3.js';import'../chunk-AHW6EMUO.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-ATOQP3BD.js';import'../chunk-YT76JNKE.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-5VTIOM2U.js';import {c as c$1}from'../chunk-6MD6FVE3.js';import'../chunk-EZOXABJ2.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-ATOQP3BD.js';import'../chunk-YT76JNKE.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
@@ -1,2 +1,2 @@
1
- 'use strict';var chunkHFW7E2Z7_cjs=require('../chunk-HFW7E2Z7.cjs'),chunkMCPADH33_cjs=require('../chunk-MCPADH33.cjs');require('../chunk-6EJRZHFP.cjs'),require('../chunk-ZOZ7ZDGA.cjs');var chunkWRMOGPRG_cjs=require('../chunk-WRMOGPRG.cjs');require('../chunk-EYBDAEVO.cjs'),require('../chunk-7JVHYHT2.cjs');var chunkVQCIOKJV_cjs=require('../chunk-VQCIOKJV.cjs');require('../chunk-G4XXRHL2.cjs'),require('../chunk-LODXIALE.cjs'),require('../chunk-QBEQL4TL.cjs'),require('../chunk-QEHKMLHA.cjs'),require('../chunk-UJ7ZTV4J.cjs'),require('../chunk-5XLFPPTY.cjs'),require('../chunk-2RIHC5TZ.cjs'),require('../chunk-GNFE24S7.cjs');function K(){let a=false;return {async tryAcquire(){return a?null:(a=true,()=>{a=false;})}}}function L(){let a=new Map,n=new Map,t=new Map;return {async enqueue(r){let e={id:globalThis.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2,10)}`,body:r,enqueuedAt:new Date().toISOString(),attempt:0};return a.set(e.id,e),e},async enqueueMany(r){let e=[];for(let s of r)e.push(await this.enqueue(s));return e},async enqueueIfAbsent(r,e){for(let o of a.values())if(o.dedupKey===e)return null;for(let o of n.values())if(o.dedupKey===e)return null;let s={id:globalThis.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2,10)}`,body:r,enqueuedAt:new Date().toISOString(),attempt:0,dedupKey:e};return a.set(s.id,s),s},async stage(r,e){let s=e?.dedupKey;if(s){for(let i of a.values())if(i.dedupKey===s)return null;for(let i of n.values())if(i.dedupKey===s)return null}let o={id:globalThis.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2,10)}`,body:r,enqueuedAt:new Date().toISOString(),attempt:0,...s?{dedupKey:s}:{}};return n.set(o.id,o),o},async commitStaged(r){let e=n.get(r);return e?(n.delete(r),a.set(r,{...e,enqueuedAt:new Date().toISOString(),attempt:0}),true):false},async discardStaged(r,e){let s=n.get(r);return s?(n.delete(r),t.set(r,{...s,reason:e}),true):false},async peekStaged(r=""){return Array.from(n.values()).filter(e=>!r||e.id.startsWith(r)).map(e=>({id:e.id,body:e.body,enqueuedAt:e.enqueuedAt,attempt:e.attempt}))},async lease(r){let e=Math.max(1,Math.floor(r?.max??1)),s=Math.max(1,Math.floor(r?.visibilityMs??6e4)),o=Date.now();for(let u of a.values())u.leaseExpiresAt&&Date.parse(u.leaseExpiresAt)<=o&&(delete u.leaseToken,delete u.leaseExpiresAt);let i=[];for(let u of a.values()){if(i.length>=e)break;u.leaseToken||(u.attempt+=1,u.leaseToken=globalThis.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2,10)}`,u.leaseExpiresAt=new Date(Date.now()+s).toISOString(),i.push({id:u.id,body:u.body,enqueuedAt:u.enqueuedAt,attempt:u.attempt,leaseToken:u.leaseToken,leaseExpiresAt:u.leaseExpiresAt}));}return i},async ack(r,e){let s=a.get(r);return !s||s.leaseToken!==e?false:(a.delete(r),true)},async nack(r,e,s){let o=a.get(r);return !o||o.leaseToken!==e?false:(delete o.leaseToken,delete o.leaseExpiresAt,s?.dead&&(a.delete(r),t.set(r,{...o,reason:s.reason})),true)},async peekActive(r=""){return Array.from(a.values()).filter(e=>!e.leaseToken).filter(e=>!r||e.id.startsWith(r)).map(e=>({id:e.id,body:e.body,enqueuedAt:e.enqueuedAt,attempt:e.attempt}))},async peekDeadLetter(r=""){return Array.from(t.values()).filter(e=>!r||e.id.startsWith(r)).map(e=>({id:e.id,body:e.body,enqueuedAt:e.enqueuedAt,attempt:e.attempt,reason:e.reason}))}}}function g(a){let n=chunkHFW7E2Z7_cjs.e(a);return {async read(t){return n.read(t)},async write(t,r){n.write(t,r);},async delete(t){n.delete(t);},async listKeys(t){return n.listKeys(t)}}}function $(a){let n=chunkHFW7E2Z7_cjs.b(a);return {async read(t){return n.read(t)},async write(t,r){n.write(t,r);},async exists(t){return n.exists(t)},async remove(t){n.remove(t);},async readBytes(t){return n.readBytes?.(t)??null},async writeBytes(t,r){await n.writeBytes?.(t,r);},async listKeys(t){return n.listKeys(t)},async stat(t){return n.stat?.(t)??null},async renameKey(t,r){let e=await n.read(t);return e==null?false:(n.write(r,e),n.remove(t),true)}}}function q(a){let n=chunkHFW7E2Z7_cjs.c(a);return {async read(t){return n.read(t)},async write(t,r){n.write(t,r);},async exists(t){return n.exists(t)},async remove(t){n.remove(t);},async readBytes(t){return n.readBytes?.(t)??null},async writeBytes(t,r){await n.writeBytes?.(t,r);},async listKeys(t){return n.listKeys(t)},async stat(t){return n.stat?.(t)??null},async getUniqueKey(t,r){return n.getUniqueKey(t,r)},async create(t,r,e){return n.create(t,r,e)},keyRef(t){return n.keyRef(t)},async renameKey(t,r){let e=n.read(t);return e==null?false:(n.write(r,e),n.remove(t),true)},config:{async get(t){return n.config.get(t)},async set(t,r){n.config.set(t,r);}}}}function f(a){let n=chunkHFW7E2Z7_cjs.f(a);function t(r){return {id:r.id,payload:r.event}}return {async append(r){let e={id:n.generateId(),event:r};return n.appendEntry(e),t(e)},async readAll(){return n.readAllEntries().map(t)},async readAfter(r){let e=n.readAllEntries().map(t);if(!r)return {entries:e,newCursor:e.length>0?e[e.length-1].id:null};let s=e.findIndex(i=>i.id===r),o=s===-1?e:e.slice(s+1);return {entries:o,newCursor:o.length>0?o[o.length-1].id:r}}}}function B(a){let n=chunkHFW7E2Z7_cjs.d(a);return {stream(t){let r=n.stream(t);return {async append(e){return r.append(e)},async readAll(){return r.readAll()},async readAfter(e){return r.readAfter(e)},async clear(){r.clear?.();}}},blob(t){let r=n.blob(t);return {async read(e){return r.read(e)},async write(e,s){r.write(e,s);},async exists(e){return r.exists(e)},async remove(e){r.remove(e);},async readBytes(e){return r.readBytes?.(e)??null},async writeBytes(e,s){await r.writeBytes?.(e,s);},async listKeys(e){return r.listKeys(e)},async stat(e){return r.stat?.(e)??null},async renameKey(e,s){let o=r.read(e);return o==null?false:(r.write(s,o),r.remove(e),true)}}},async listStreams(t){return n.listStreams(t)},async listBlobs(t){return n.listBlobs(t)},config:{async get(t){return n.config.get(t)},async set(t,r){n.config.set(t,r);}}}}function T(a){return String(a||"").trim()}function M(a){return String(a).replace(/[^a-zA-Z0-9_-]/g,"_")}function k(a){return {kind:"local-storage",value:T(a)}}function c(a){return chunkVQCIOKJV_cjs.a(k(a))}function x(a){let n=`boards:${a}`;return {baseRef:k(n),boardRuntimeStoreRef:c(`${n}:runtime-board`),cardStoreRef:c(`${n}:cards`),outputsStoreRef:c(`${n}:runtime-out`),queueStoreRef:c(`${n}:runtime`),scratchStoreRef:c(`${n}:scratch`),chatStoreRef:c(`${n}:chat`),artifactsStoreRef:c(`${n}:files`),fetchedSourcesStoreRef:c(`${n}:sources`)}}function l(a,n){try{let t=chunkVQCIOKJV_cjs.b(a);if(t?.kind==="local-storage"&&t.value)return T(t.value)}catch{}return n}function D(a,n={}){let t=x(a),r=new Map;return chunkWRMOGPRG_cjs.c({boardId:a,kvStorage(e){return g(`${t.baseRef.value}:${e||"root"}`)},kvStorageForRef(e){return g(l(e,`${t.baseRef.value}:root`))},blobStorage(e){return $(e?`${t.baseRef.value}:${e}`:t.baseRef.value)},blobStorageForRef(e){return $(l(e,t.baseRef.value))},chatStorageForRef(e){let s=l(e,`${t.baseRef.value}:chat`);return chunkMCPADH33_cjs.b(o=>f(`${s}:journal:${M(o)}`),g(s))},queueStoreRef:t.queueStoreRef,queueStorageForRef(e,s){let o=`${l(e,`${t.baseRef.value}:runtime`)}:queue:${s}`,i=r.get(o);return i||(i=L(),r.set(o,i)),i},scratchStorage(){return q(`${t.baseRef.value}:scratch`)},scratchStorageForRef(e){return q(l(e,`${t.baseRef.value}:scratch`))},archiveFactory(){return B(`${t.baseRef.value}:archive`)},archiveFactoryForRef(e){return B(l(e,`${t.baseRef.value}:archive`))},journalStorage(){return f(`${t.baseRef.value}:journal`)},journalStorageForRef(e){return f(`${l(e,`${t.baseRef.value}:runtime-board`)}:journal`)},lock:K(),resolveBlob:async e=>{let s=e?.kind==="local-storage"?e:null;if(!s?.value)throw new Error(`Unsupported localStorage ref: ${chunkVQCIOKJV_cjs.a(e)}`);let o=chunkHFW7E2Z7_cjs.b(s.value),i=await Promise.resolve(o.read(""));if(i===null)throw new Error(`Blob not found: ${chunkVQCIOKJV_cjs.a(e)}`);try{let u=JSON.parse(i);if(u?.__kind==="bytes-b64"&&typeof u.data=="string"){let p=await Promise.resolve(o.readBytes?.(""));if(p)return new TextDecoder().decode(p)}}catch{}return i},hashFn:chunkHFW7E2Z7_cjs.a,genId:()=>(globalThis.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2,10)}`).replace(/-/g,""),requestProcessAccumulated:n.requestProcessAccumulated,publishBoardChangeNotifications:n.publishBoardChangeNotifications,onWarn:e=>console.warn(`[localstorage-board-adapter:${a}] ${e}`)})}function J(a,n={}){return {refs:{...x(a),...n.refs??{}},boardAdapter:D(a,n)}}exports.createLocalStorageBoardAdapter=D;exports.createLocalStorageBoardRefs=x;exports.createLocalStorageBoardRuntimeBundle=J;exports.makeLocalStorageRef=k;exports.serializeLocalStorageRef=c;//# sourceMappingURL=index.cjs.map
1
+ 'use strict';var chunkHFW7E2Z7_cjs=require('../chunk-HFW7E2Z7.cjs'),chunkMCPADH33_cjs=require('../chunk-MCPADH33.cjs');require('../chunk-6EJRZHFP.cjs'),require('../chunk-HVLWVMG6.cjs');var chunkWRMOGPRG_cjs=require('../chunk-WRMOGPRG.cjs');require('../chunk-BAG7MHZP.cjs'),require('../chunk-7JVHYHT2.cjs');var chunkVQCIOKJV_cjs=require('../chunk-VQCIOKJV.cjs');require('../chunk-G4XXRHL2.cjs'),require('../chunk-LODXIALE.cjs'),require('../chunk-QBEQL4TL.cjs'),require('../chunk-QEHKMLHA.cjs'),require('../chunk-UJ7ZTV4J.cjs'),require('../chunk-5XLFPPTY.cjs'),require('../chunk-2RIHC5TZ.cjs'),require('../chunk-GNFE24S7.cjs');function K(){let a=false;return {async tryAcquire(){return a?null:(a=true,()=>{a=false;})}}}function L(){let a=new Map,n=new Map,t=new Map;return {async enqueue(r){let e={id:globalThis.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2,10)}`,body:r,enqueuedAt:new Date().toISOString(),attempt:0};return a.set(e.id,e),e},async enqueueMany(r){let e=[];for(let s of r)e.push(await this.enqueue(s));return e},async enqueueIfAbsent(r,e){for(let o of a.values())if(o.dedupKey===e)return null;for(let o of n.values())if(o.dedupKey===e)return null;let s={id:globalThis.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2,10)}`,body:r,enqueuedAt:new Date().toISOString(),attempt:0,dedupKey:e};return a.set(s.id,s),s},async stage(r,e){let s=e?.dedupKey;if(s){for(let i of a.values())if(i.dedupKey===s)return null;for(let i of n.values())if(i.dedupKey===s)return null}let o={id:globalThis.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2,10)}`,body:r,enqueuedAt:new Date().toISOString(),attempt:0,...s?{dedupKey:s}:{}};return n.set(o.id,o),o},async commitStaged(r){let e=n.get(r);return e?(n.delete(r),a.set(r,{...e,enqueuedAt:new Date().toISOString(),attempt:0}),true):false},async discardStaged(r,e){let s=n.get(r);return s?(n.delete(r),t.set(r,{...s,reason:e}),true):false},async peekStaged(r=""){return Array.from(n.values()).filter(e=>!r||e.id.startsWith(r)).map(e=>({id:e.id,body:e.body,enqueuedAt:e.enqueuedAt,attempt:e.attempt}))},async lease(r){let e=Math.max(1,Math.floor(r?.max??1)),s=Math.max(1,Math.floor(r?.visibilityMs??6e4)),o=Date.now();for(let u of a.values())u.leaseExpiresAt&&Date.parse(u.leaseExpiresAt)<=o&&(delete u.leaseToken,delete u.leaseExpiresAt);let i=[];for(let u of a.values()){if(i.length>=e)break;u.leaseToken||(u.attempt+=1,u.leaseToken=globalThis.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2,10)}`,u.leaseExpiresAt=new Date(Date.now()+s).toISOString(),i.push({id:u.id,body:u.body,enqueuedAt:u.enqueuedAt,attempt:u.attempt,leaseToken:u.leaseToken,leaseExpiresAt:u.leaseExpiresAt}));}return i},async ack(r,e){let s=a.get(r);return !s||s.leaseToken!==e?false:(a.delete(r),true)},async nack(r,e,s){let o=a.get(r);return !o||o.leaseToken!==e?false:(delete o.leaseToken,delete o.leaseExpiresAt,s?.dead&&(a.delete(r),t.set(r,{...o,reason:s.reason})),true)},async peekActive(r=""){return Array.from(a.values()).filter(e=>!e.leaseToken).filter(e=>!r||e.id.startsWith(r)).map(e=>({id:e.id,body:e.body,enqueuedAt:e.enqueuedAt,attempt:e.attempt}))},async peekDeadLetter(r=""){return Array.from(t.values()).filter(e=>!r||e.id.startsWith(r)).map(e=>({id:e.id,body:e.body,enqueuedAt:e.enqueuedAt,attempt:e.attempt,reason:e.reason}))}}}function g(a){let n=chunkHFW7E2Z7_cjs.e(a);return {async read(t){return n.read(t)},async write(t,r){n.write(t,r);},async delete(t){n.delete(t);},async listKeys(t){return n.listKeys(t)}}}function $(a){let n=chunkHFW7E2Z7_cjs.b(a);return {async read(t){return n.read(t)},async write(t,r){n.write(t,r);},async exists(t){return n.exists(t)},async remove(t){n.remove(t);},async readBytes(t){return n.readBytes?.(t)??null},async writeBytes(t,r){await n.writeBytes?.(t,r);},async listKeys(t){return n.listKeys(t)},async stat(t){return n.stat?.(t)??null},async renameKey(t,r){let e=await n.read(t);return e==null?false:(n.write(r,e),n.remove(t),true)}}}function q(a){let n=chunkHFW7E2Z7_cjs.c(a);return {async read(t){return n.read(t)},async write(t,r){n.write(t,r);},async exists(t){return n.exists(t)},async remove(t){n.remove(t);},async readBytes(t){return n.readBytes?.(t)??null},async writeBytes(t,r){await n.writeBytes?.(t,r);},async listKeys(t){return n.listKeys(t)},async stat(t){return n.stat?.(t)??null},async getUniqueKey(t,r){return n.getUniqueKey(t,r)},async create(t,r,e){return n.create(t,r,e)},keyRef(t){return n.keyRef(t)},async renameKey(t,r){let e=n.read(t);return e==null?false:(n.write(r,e),n.remove(t),true)},config:{async get(t){return n.config.get(t)},async set(t,r){n.config.set(t,r);}}}}function f(a){let n=chunkHFW7E2Z7_cjs.f(a);function t(r){return {id:r.id,payload:r.event}}return {async append(r){let e={id:n.generateId(),event:r};return n.appendEntry(e),t(e)},async readAll(){return n.readAllEntries().map(t)},async readAfter(r){let e=n.readAllEntries().map(t);if(!r)return {entries:e,newCursor:e.length>0?e[e.length-1].id:null};let s=e.findIndex(i=>i.id===r),o=s===-1?e:e.slice(s+1);return {entries:o,newCursor:o.length>0?o[o.length-1].id:r}}}}function B(a){let n=chunkHFW7E2Z7_cjs.d(a);return {stream(t){let r=n.stream(t);return {async append(e){return r.append(e)},async readAll(){return r.readAll()},async readAfter(e){return r.readAfter(e)},async clear(){r.clear?.();}}},blob(t){let r=n.blob(t);return {async read(e){return r.read(e)},async write(e,s){r.write(e,s);},async exists(e){return r.exists(e)},async remove(e){r.remove(e);},async readBytes(e){return r.readBytes?.(e)??null},async writeBytes(e,s){await r.writeBytes?.(e,s);},async listKeys(e){return r.listKeys(e)},async stat(e){return r.stat?.(e)??null},async renameKey(e,s){let o=r.read(e);return o==null?false:(r.write(s,o),r.remove(e),true)}}},async listStreams(t){return n.listStreams(t)},async listBlobs(t){return n.listBlobs(t)},config:{async get(t){return n.config.get(t)},async set(t,r){n.config.set(t,r);}}}}function T(a){return String(a||"").trim()}function M(a){return String(a).replace(/[^a-zA-Z0-9_-]/g,"_")}function k(a){return {kind:"local-storage",value:T(a)}}function c(a){return chunkVQCIOKJV_cjs.a(k(a))}function x(a){let n=`boards:${a}`;return {baseRef:k(n),boardRuntimeStoreRef:c(`${n}:runtime-board`),cardStoreRef:c(`${n}:cards`),outputsStoreRef:c(`${n}:runtime-out`),queueStoreRef:c(`${n}:runtime`),scratchStoreRef:c(`${n}:scratch`),chatStoreRef:c(`${n}:chat`),artifactsStoreRef:c(`${n}:files`),fetchedSourcesStoreRef:c(`${n}:sources`)}}function l(a,n){try{let t=chunkVQCIOKJV_cjs.b(a);if(t?.kind==="local-storage"&&t.value)return T(t.value)}catch{}return n}function D(a,n={}){let t=x(a),r=new Map;return chunkWRMOGPRG_cjs.c({boardId:a,kvStorage(e){return g(`${t.baseRef.value}:${e||"root"}`)},kvStorageForRef(e){return g(l(e,`${t.baseRef.value}:root`))},blobStorage(e){return $(e?`${t.baseRef.value}:${e}`:t.baseRef.value)},blobStorageForRef(e){return $(l(e,t.baseRef.value))},chatStorageForRef(e){let s=l(e,`${t.baseRef.value}:chat`);return chunkMCPADH33_cjs.b(o=>f(`${s}:journal:${M(o)}`),g(s))},queueStoreRef:t.queueStoreRef,queueStorageForRef(e,s){let o=`${l(e,`${t.baseRef.value}:runtime`)}:queue:${s}`,i=r.get(o);return i||(i=L(),r.set(o,i)),i},scratchStorage(){return q(`${t.baseRef.value}:scratch`)},scratchStorageForRef(e){return q(l(e,`${t.baseRef.value}:scratch`))},archiveFactory(){return B(`${t.baseRef.value}:archive`)},archiveFactoryForRef(e){return B(l(e,`${t.baseRef.value}:archive`))},journalStorage(){return f(`${t.baseRef.value}:journal`)},journalStorageForRef(e){return f(`${l(e,`${t.baseRef.value}:runtime-board`)}:journal`)},lock:K(),resolveBlob:async e=>{let s=e?.kind==="local-storage"?e:null;if(!s?.value)throw new Error(`Unsupported localStorage ref: ${chunkVQCIOKJV_cjs.a(e)}`);let o=chunkHFW7E2Z7_cjs.b(s.value),i=await Promise.resolve(o.read(""));if(i===null)throw new Error(`Blob not found: ${chunkVQCIOKJV_cjs.a(e)}`);try{let u=JSON.parse(i);if(u?.__kind==="bytes-b64"&&typeof u.data=="string"){let p=await Promise.resolve(o.readBytes?.(""));if(p)return new TextDecoder().decode(p)}}catch{}return i},hashFn:chunkHFW7E2Z7_cjs.a,genId:()=>(globalThis.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2,10)}`).replace(/-/g,""),requestProcessAccumulated:n.requestProcessAccumulated,publishBoardChangeNotifications:n.publishBoardChangeNotifications,onWarn:e=>console.warn(`[localstorage-board-adapter:${a}] ${e}`)})}function J(a,n={}){return {refs:{...x(a),...n.refs??{}},boardAdapter:D(a,n)}}exports.createLocalStorageBoardAdapter=D;exports.createLocalStorageBoardRefs=x;exports.createLocalStorageBoardRuntimeBundle=J;exports.makeLocalStorageRef=k;exports.serializeLocalStorageRef=c;//# sourceMappingURL=index.cjs.map
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1,2 +1,2 @@
1
- import {a as a$1,b,f as f$1,d,c as c$2,e}from'../chunk-VS3BXEYK.js';import {b as b$1}from'../chunk-Y4WK7HE4.js';import'../chunk-QLB6PKOT.js';import'../chunk-HFI2NAZJ.js';import {c as c$1}from'../chunk-6MD6FVE3.js';import'../chunk-AHW6EMUO.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-ATOQP3BD.js';import'../chunk-YT76JNKE.js';import'../chunk-MNEOJWPS.js';import'../chunk-7QNEV5S3.js';import'../chunk-UGB7PC4P.js';import'../chunk-FW4363Y4.js';function K(){let a=false;return {async tryAcquire(){return a?null:(a=true,()=>{a=false;})}}}function L(){let a=new Map,n=new Map,t=new Map;return {async enqueue(r){let e={id:globalThis.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2,10)}`,body:r,enqueuedAt:new Date().toISOString(),attempt:0};return a.set(e.id,e),e},async enqueueMany(r){let e=[];for(let s of r)e.push(await this.enqueue(s));return e},async enqueueIfAbsent(r,e){for(let o of a.values())if(o.dedupKey===e)return null;for(let o of n.values())if(o.dedupKey===e)return null;let s={id:globalThis.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2,10)}`,body:r,enqueuedAt:new Date().toISOString(),attempt:0,dedupKey:e};return a.set(s.id,s),s},async stage(r,e){let s=e?.dedupKey;if(s){for(let i of a.values())if(i.dedupKey===s)return null;for(let i of n.values())if(i.dedupKey===s)return null}let o={id:globalThis.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2,10)}`,body:r,enqueuedAt:new Date().toISOString(),attempt:0,...s?{dedupKey:s}:{}};return n.set(o.id,o),o},async commitStaged(r){let e=n.get(r);return e?(n.delete(r),a.set(r,{...e,enqueuedAt:new Date().toISOString(),attempt:0}),true):false},async discardStaged(r,e){let s=n.get(r);return s?(n.delete(r),t.set(r,{...s,reason:e}),true):false},async peekStaged(r=""){return Array.from(n.values()).filter(e=>!r||e.id.startsWith(r)).map(e=>({id:e.id,body:e.body,enqueuedAt:e.enqueuedAt,attempt:e.attempt}))},async lease(r){let e=Math.max(1,Math.floor(r?.max??1)),s=Math.max(1,Math.floor(r?.visibilityMs??6e4)),o=Date.now();for(let u of a.values())u.leaseExpiresAt&&Date.parse(u.leaseExpiresAt)<=o&&(delete u.leaseToken,delete u.leaseExpiresAt);let i=[];for(let u of a.values()){if(i.length>=e)break;u.leaseToken||(u.attempt+=1,u.leaseToken=globalThis.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2,10)}`,u.leaseExpiresAt=new Date(Date.now()+s).toISOString(),i.push({id:u.id,body:u.body,enqueuedAt:u.enqueuedAt,attempt:u.attempt,leaseToken:u.leaseToken,leaseExpiresAt:u.leaseExpiresAt}));}return i},async ack(r,e){let s=a.get(r);return !s||s.leaseToken!==e?false:(a.delete(r),true)},async nack(r,e,s){let o=a.get(r);return !o||o.leaseToken!==e?false:(delete o.leaseToken,delete o.leaseExpiresAt,s?.dead&&(a.delete(r),t.set(r,{...o,reason:s.reason})),true)},async peekActive(r=""){return Array.from(a.values()).filter(e=>!e.leaseToken).filter(e=>!r||e.id.startsWith(r)).map(e=>({id:e.id,body:e.body,enqueuedAt:e.enqueuedAt,attempt:e.attempt}))},async peekDeadLetter(r=""){return Array.from(t.values()).filter(e=>!r||e.id.startsWith(r)).map(e=>({id:e.id,body:e.body,enqueuedAt:e.enqueuedAt,attempt:e.attempt,reason:e.reason}))}}}function g(a){let n=e(a);return {async read(t){return n.read(t)},async write(t,r){n.write(t,r);},async delete(t){n.delete(t);},async listKeys(t){return n.listKeys(t)}}}function $(a){let n=b(a);return {async read(t){return n.read(t)},async write(t,r){n.write(t,r);},async exists(t){return n.exists(t)},async remove(t){n.remove(t);},async readBytes(t){return n.readBytes?.(t)??null},async writeBytes(t,r){await n.writeBytes?.(t,r);},async listKeys(t){return n.listKeys(t)},async stat(t){return n.stat?.(t)??null},async renameKey(t,r){let e=await n.read(t);return e==null?false:(n.write(r,e),n.remove(t),true)}}}function q(a){let n=c$2(a);return {async read(t){return n.read(t)},async write(t,r){n.write(t,r);},async exists(t){return n.exists(t)},async remove(t){n.remove(t);},async readBytes(t){return n.readBytes?.(t)??null},async writeBytes(t,r){await n.writeBytes?.(t,r);},async listKeys(t){return n.listKeys(t)},async stat(t){return n.stat?.(t)??null},async getUniqueKey(t,r){return n.getUniqueKey(t,r)},async create(t,r,e){return n.create(t,r,e)},keyRef(t){return n.keyRef(t)},async renameKey(t,r){let e=n.read(t);return e==null?false:(n.write(r,e),n.remove(t),true)},config:{async get(t){return n.config.get(t)},async set(t,r){n.config.set(t,r);}}}}function f(a){let n=f$1(a);function t(r){return {id:r.id,payload:r.event}}return {async append(r){let e={id:n.generateId(),event:r};return n.appendEntry(e),t(e)},async readAll(){return n.readAllEntries().map(t)},async readAfter(r){let e=n.readAllEntries().map(t);if(!r)return {entries:e,newCursor:e.length>0?e[e.length-1].id:null};let s=e.findIndex(i=>i.id===r),o=s===-1?e:e.slice(s+1);return {entries:o,newCursor:o.length>0?o[o.length-1].id:r}}}}function B(a){let n=d(a);return {stream(t){let r=n.stream(t);return {async append(e){return r.append(e)},async readAll(){return r.readAll()},async readAfter(e){return r.readAfter(e)},async clear(){r.clear?.();}}},blob(t){let r=n.blob(t);return {async read(e){return r.read(e)},async write(e,s){r.write(e,s);},async exists(e){return r.exists(e)},async remove(e){r.remove(e);},async readBytes(e){return r.readBytes?.(e)??null},async writeBytes(e,s){await r.writeBytes?.(e,s);},async listKeys(e){return r.listKeys(e)},async stat(e){return r.stat?.(e)??null},async renameKey(e,s){let o=r.read(e);return o==null?false:(r.write(s,o),r.remove(e),true)}}},async listStreams(t){return n.listStreams(t)},async listBlobs(t){return n.listBlobs(t)},config:{async get(t){return n.config.get(t)},async set(t,r){n.config.set(t,r);}}}}function T(a){return String(a||"").trim()}function M(a){return String(a).replace(/[^a-zA-Z0-9_-]/g,"_")}function k(a){return {kind:"local-storage",value:T(a)}}function c(a$1){return a(k(a$1))}function x(a){let n=`boards:${a}`;return {baseRef:k(n),boardRuntimeStoreRef:c(`${n}:runtime-board`),cardStoreRef:c(`${n}:cards`),outputsStoreRef:c(`${n}:runtime-out`),queueStoreRef:c(`${n}:runtime`),scratchStoreRef:c(`${n}:scratch`),chatStoreRef:c(`${n}:chat`),artifactsStoreRef:c(`${n}:files`),fetchedSourcesStoreRef:c(`${n}:sources`)}}function l(a,n){try{let t=b$2(a);if(t?.kind==="local-storage"&&t.value)return T(t.value)}catch{}return n}function D(a$2,n={}){let t=x(a$2),r=new Map;return c$1({boardId:a$2,kvStorage(e){return g(`${t.baseRef.value}:${e||"root"}`)},kvStorageForRef(e){return g(l(e,`${t.baseRef.value}:root`))},blobStorage(e){return $(e?`${t.baseRef.value}:${e}`:t.baseRef.value)},blobStorageForRef(e){return $(l(e,t.baseRef.value))},chatStorageForRef(e){let s=l(e,`${t.baseRef.value}:chat`);return b$1(o=>f(`${s}:journal:${M(o)}`),g(s))},queueStoreRef:t.queueStoreRef,queueStorageForRef(e,s){let o=`${l(e,`${t.baseRef.value}:runtime`)}:queue:${s}`,i=r.get(o);return i||(i=L(),r.set(o,i)),i},scratchStorage(){return q(`${t.baseRef.value}:scratch`)},scratchStorageForRef(e){return q(l(e,`${t.baseRef.value}:scratch`))},archiveFactory(){return B(`${t.baseRef.value}:archive`)},archiveFactoryForRef(e){return B(l(e,`${t.baseRef.value}:archive`))},journalStorage(){return f(`${t.baseRef.value}:journal`)},journalStorageForRef(e){return f(`${l(e,`${t.baseRef.value}:runtime-board`)}:journal`)},lock:K(),resolveBlob:async e=>{let s=e?.kind==="local-storage"?e:null;if(!s?.value)throw new Error(`Unsupported localStorage ref: ${a(e)}`);let o=b(s.value),i=await Promise.resolve(o.read(""));if(i===null)throw new Error(`Blob not found: ${a(e)}`);try{let u=JSON.parse(i);if(u?.__kind==="bytes-b64"&&typeof u.data=="string"){let p=await Promise.resolve(o.readBytes?.(""));if(p)return new TextDecoder().decode(p)}}catch{}return i},hashFn:a$1,genId:()=>(globalThis.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2,10)}`).replace(/-/g,""),requestProcessAccumulated:n.requestProcessAccumulated,publishBoardChangeNotifications:n.publishBoardChangeNotifications,onWarn:e=>console.warn(`[localstorage-board-adapter:${a$2}] ${e}`)})}function J(a,n={}){return {refs:{...x(a),...n.refs??{}},boardAdapter:D(a,n)}}export{D as createLocalStorageBoardAdapter,x as createLocalStorageBoardRefs,J as createLocalStorageBoardRuntimeBundle,k as makeLocalStorageRef,c as serializeLocalStorageRef};//# sourceMappingURL=index.js.map
1
+ import {a as a$1,b,f as f$1,d,c as c$2,e}from'../chunk-VS3BXEYK.js';import {b as b$1}from'../chunk-Y4WK7HE4.js';import'../chunk-QLB6PKOT.js';import'../chunk-5VTIOM2U.js';import {c as c$1}from'../chunk-6MD6FVE3.js';import'../chunk-EZOXABJ2.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-ATOQP3BD.js';import'../chunk-YT76JNKE.js';import'../chunk-MNEOJWPS.js';import'../chunk-7QNEV5S3.js';import'../chunk-UGB7PC4P.js';import'../chunk-FW4363Y4.js';function K(){let a=false;return {async tryAcquire(){return a?null:(a=true,()=>{a=false;})}}}function L(){let a=new Map,n=new Map,t=new Map;return {async enqueue(r){let e={id:globalThis.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2,10)}`,body:r,enqueuedAt:new Date().toISOString(),attempt:0};return a.set(e.id,e),e},async enqueueMany(r){let e=[];for(let s of r)e.push(await this.enqueue(s));return e},async enqueueIfAbsent(r,e){for(let o of a.values())if(o.dedupKey===e)return null;for(let o of n.values())if(o.dedupKey===e)return null;let s={id:globalThis.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2,10)}`,body:r,enqueuedAt:new Date().toISOString(),attempt:0,dedupKey:e};return a.set(s.id,s),s},async stage(r,e){let s=e?.dedupKey;if(s){for(let i of a.values())if(i.dedupKey===s)return null;for(let i of n.values())if(i.dedupKey===s)return null}let o={id:globalThis.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2,10)}`,body:r,enqueuedAt:new Date().toISOString(),attempt:0,...s?{dedupKey:s}:{}};return n.set(o.id,o),o},async commitStaged(r){let e=n.get(r);return e?(n.delete(r),a.set(r,{...e,enqueuedAt:new Date().toISOString(),attempt:0}),true):false},async discardStaged(r,e){let s=n.get(r);return s?(n.delete(r),t.set(r,{...s,reason:e}),true):false},async peekStaged(r=""){return Array.from(n.values()).filter(e=>!r||e.id.startsWith(r)).map(e=>({id:e.id,body:e.body,enqueuedAt:e.enqueuedAt,attempt:e.attempt}))},async lease(r){let e=Math.max(1,Math.floor(r?.max??1)),s=Math.max(1,Math.floor(r?.visibilityMs??6e4)),o=Date.now();for(let u of a.values())u.leaseExpiresAt&&Date.parse(u.leaseExpiresAt)<=o&&(delete u.leaseToken,delete u.leaseExpiresAt);let i=[];for(let u of a.values()){if(i.length>=e)break;u.leaseToken||(u.attempt+=1,u.leaseToken=globalThis.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2,10)}`,u.leaseExpiresAt=new Date(Date.now()+s).toISOString(),i.push({id:u.id,body:u.body,enqueuedAt:u.enqueuedAt,attempt:u.attempt,leaseToken:u.leaseToken,leaseExpiresAt:u.leaseExpiresAt}));}return i},async ack(r,e){let s=a.get(r);return !s||s.leaseToken!==e?false:(a.delete(r),true)},async nack(r,e,s){let o=a.get(r);return !o||o.leaseToken!==e?false:(delete o.leaseToken,delete o.leaseExpiresAt,s?.dead&&(a.delete(r),t.set(r,{...o,reason:s.reason})),true)},async peekActive(r=""){return Array.from(a.values()).filter(e=>!e.leaseToken).filter(e=>!r||e.id.startsWith(r)).map(e=>({id:e.id,body:e.body,enqueuedAt:e.enqueuedAt,attempt:e.attempt}))},async peekDeadLetter(r=""){return Array.from(t.values()).filter(e=>!r||e.id.startsWith(r)).map(e=>({id:e.id,body:e.body,enqueuedAt:e.enqueuedAt,attempt:e.attempt,reason:e.reason}))}}}function g(a){let n=e(a);return {async read(t){return n.read(t)},async write(t,r){n.write(t,r);},async delete(t){n.delete(t);},async listKeys(t){return n.listKeys(t)}}}function $(a){let n=b(a);return {async read(t){return n.read(t)},async write(t,r){n.write(t,r);},async exists(t){return n.exists(t)},async remove(t){n.remove(t);},async readBytes(t){return n.readBytes?.(t)??null},async writeBytes(t,r){await n.writeBytes?.(t,r);},async listKeys(t){return n.listKeys(t)},async stat(t){return n.stat?.(t)??null},async renameKey(t,r){let e=await n.read(t);return e==null?false:(n.write(r,e),n.remove(t),true)}}}function q(a){let n=c$2(a);return {async read(t){return n.read(t)},async write(t,r){n.write(t,r);},async exists(t){return n.exists(t)},async remove(t){n.remove(t);},async readBytes(t){return n.readBytes?.(t)??null},async writeBytes(t,r){await n.writeBytes?.(t,r);},async listKeys(t){return n.listKeys(t)},async stat(t){return n.stat?.(t)??null},async getUniqueKey(t,r){return n.getUniqueKey(t,r)},async create(t,r,e){return n.create(t,r,e)},keyRef(t){return n.keyRef(t)},async renameKey(t,r){let e=n.read(t);return e==null?false:(n.write(r,e),n.remove(t),true)},config:{async get(t){return n.config.get(t)},async set(t,r){n.config.set(t,r);}}}}function f(a){let n=f$1(a);function t(r){return {id:r.id,payload:r.event}}return {async append(r){let e={id:n.generateId(),event:r};return n.appendEntry(e),t(e)},async readAll(){return n.readAllEntries().map(t)},async readAfter(r){let e=n.readAllEntries().map(t);if(!r)return {entries:e,newCursor:e.length>0?e[e.length-1].id:null};let s=e.findIndex(i=>i.id===r),o=s===-1?e:e.slice(s+1);return {entries:o,newCursor:o.length>0?o[o.length-1].id:r}}}}function B(a){let n=d(a);return {stream(t){let r=n.stream(t);return {async append(e){return r.append(e)},async readAll(){return r.readAll()},async readAfter(e){return r.readAfter(e)},async clear(){r.clear?.();}}},blob(t){let r=n.blob(t);return {async read(e){return r.read(e)},async write(e,s){r.write(e,s);},async exists(e){return r.exists(e)},async remove(e){r.remove(e);},async readBytes(e){return r.readBytes?.(e)??null},async writeBytes(e,s){await r.writeBytes?.(e,s);},async listKeys(e){return r.listKeys(e)},async stat(e){return r.stat?.(e)??null},async renameKey(e,s){let o=r.read(e);return o==null?false:(r.write(s,o),r.remove(e),true)}}},async listStreams(t){return n.listStreams(t)},async listBlobs(t){return n.listBlobs(t)},config:{async get(t){return n.config.get(t)},async set(t,r){n.config.set(t,r);}}}}function T(a){return String(a||"").trim()}function M(a){return String(a).replace(/[^a-zA-Z0-9_-]/g,"_")}function k(a){return {kind:"local-storage",value:T(a)}}function c(a$1){return a(k(a$1))}function x(a){let n=`boards:${a}`;return {baseRef:k(n),boardRuntimeStoreRef:c(`${n}:runtime-board`),cardStoreRef:c(`${n}:cards`),outputsStoreRef:c(`${n}:runtime-out`),queueStoreRef:c(`${n}:runtime`),scratchStoreRef:c(`${n}:scratch`),chatStoreRef:c(`${n}:chat`),artifactsStoreRef:c(`${n}:files`),fetchedSourcesStoreRef:c(`${n}:sources`)}}function l(a,n){try{let t=b$2(a);if(t?.kind==="local-storage"&&t.value)return T(t.value)}catch{}return n}function D(a$2,n={}){let t=x(a$2),r=new Map;return c$1({boardId:a$2,kvStorage(e){return g(`${t.baseRef.value}:${e||"root"}`)},kvStorageForRef(e){return g(l(e,`${t.baseRef.value}:root`))},blobStorage(e){return $(e?`${t.baseRef.value}:${e}`:t.baseRef.value)},blobStorageForRef(e){return $(l(e,t.baseRef.value))},chatStorageForRef(e){let s=l(e,`${t.baseRef.value}:chat`);return b$1(o=>f(`${s}:journal:${M(o)}`),g(s))},queueStoreRef:t.queueStoreRef,queueStorageForRef(e,s){let o=`${l(e,`${t.baseRef.value}:runtime`)}:queue:${s}`,i=r.get(o);return i||(i=L(),r.set(o,i)),i},scratchStorage(){return q(`${t.baseRef.value}:scratch`)},scratchStorageForRef(e){return q(l(e,`${t.baseRef.value}:scratch`))},archiveFactory(){return B(`${t.baseRef.value}:archive`)},archiveFactoryForRef(e){return B(l(e,`${t.baseRef.value}:archive`))},journalStorage(){return f(`${t.baseRef.value}:journal`)},journalStorageForRef(e){return f(`${l(e,`${t.baseRef.value}:runtime-board`)}:journal`)},lock:K(),resolveBlob:async e=>{let s=e?.kind==="local-storage"?e:null;if(!s?.value)throw new Error(`Unsupported localStorage ref: ${a(e)}`);let o=b(s.value),i=await Promise.resolve(o.read(""));if(i===null)throw new Error(`Blob not found: ${a(e)}`);try{let u=JSON.parse(i);if(u?.__kind==="bytes-b64"&&typeof u.data=="string"){let p=await Promise.resolve(o.readBytes?.(""));if(p)return new TextDecoder().decode(p)}}catch{}return i},hashFn:a$1,genId:()=>(globalThis.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2,10)}`).replace(/-/g,""),requestProcessAccumulated:n.requestProcessAccumulated,publishBoardChangeNotifications:n.publishBoardChangeNotifications,onWarn:e=>console.warn(`[localstorage-board-adapter:${a$2}] ${e}`)})}function J(a,n={}){return {refs:{...x(a),...n.refs??{}},boardAdapter:D(a,n)}}export{D as createLocalStorageBoardAdapter,x as createLocalStorageBoardRefs,J as createLocalStorageBoardRuntimeBundle,k as makeLocalStorageRef,c as serializeLocalStorageRef};//# sourceMappingURL=index.js.map
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- 'use strict';var chunk42ZOYXEV_cjs=require('../chunk-42ZOYXEV.cjs');require('../chunk-LFVMX23W.cjs'),require('../chunk-NM6O35RY.cjs'),require('../chunk-NBJTYAYN.cjs'),require('../chunk-NMOUBZXX.cjs');var chunkBQJVCCFU_cjs=require('../chunk-BQJVCCFU.cjs');require('../chunk-BQUQTOPB.cjs'),require('../chunk-GPCMBPLK.cjs'),require('../chunk-7FGPOGRV.cjs'),require('../chunk-LPXVVMQT.cjs'),require('../chunk-272IYUKT.cjs'),require('../chunk-ZOZ7ZDGA.cjs'),require('../chunk-WRMOGPRG.cjs'),require('../chunk-EYBDAEVO.cjs'),require('../chunk-7JVHYHT2.cjs'),require('../chunk-VQCIOKJV.cjs'),require('../chunk-G4XXRHL2.cjs'),require('../chunk-LODXIALE.cjs'),require('../chunk-GHUW6P4G.cjs'),require('../chunk-QBEQL4TL.cjs'),require('../chunk-QEHKMLHA.cjs'),require('../chunk-UJ7ZTV4J.cjs'),require('../chunk-5XLFPPTY.cjs'),require('../chunk-SDJ3747Q.cjs'),require('../chunk-OF4FPYNI.cjs'),require('../chunk-2RIHC5TZ.cjs'),require('../chunk-GNFE24S7.cjs');Object.defineProperty(exports,"createMultiBoardServerRuntime",{enumerable:true,get:function(){return chunk42ZOYXEV_cjs.b}});Object.defineProperty(exports,"createSingleBoardServerRuntime",{enumerable:true,get:function(){return chunk42ZOYXEV_cjs.a}});Object.defineProperty(exports,"createHostedBoardQueueLaneRegistry",{enumerable:true,get:function(){return chunkBQJVCCFU_cjs.a}});//# sourceMappingURL=index.cjs.map
1
+ 'use strict';var chunkYQ4MW72D_cjs=require('../chunk-YQ4MW72D.cjs');require('../chunk-LFVMX23W.cjs'),require('../chunk-NM6O35RY.cjs'),require('../chunk-NBJTYAYN.cjs'),require('../chunk-NMOUBZXX.cjs');var chunkBQJVCCFU_cjs=require('../chunk-BQJVCCFU.cjs');require('../chunk-BQUQTOPB.cjs'),require('../chunk-GPCMBPLK.cjs'),require('../chunk-7FGPOGRV.cjs'),require('../chunk-LPXVVMQT.cjs'),require('../chunk-272IYUKT.cjs'),require('../chunk-HVLWVMG6.cjs'),require('../chunk-WRMOGPRG.cjs'),require('../chunk-BAG7MHZP.cjs'),require('../chunk-7JVHYHT2.cjs'),require('../chunk-VQCIOKJV.cjs'),require('../chunk-G4XXRHL2.cjs'),require('../chunk-LODXIALE.cjs'),require('../chunk-GHUW6P4G.cjs'),require('../chunk-QBEQL4TL.cjs'),require('../chunk-QEHKMLHA.cjs'),require('../chunk-UJ7ZTV4J.cjs'),require('../chunk-5XLFPPTY.cjs'),require('../chunk-SDJ3747Q.cjs'),require('../chunk-OF4FPYNI.cjs'),require('../chunk-2RIHC5TZ.cjs'),require('../chunk-GNFE24S7.cjs');Object.defineProperty(exports,"createMultiBoardServerRuntime",{enumerable:true,get:function(){return chunkYQ4MW72D_cjs.b}});Object.defineProperty(exports,"createSingleBoardServerRuntime",{enumerable:true,get:function(){return chunkYQ4MW72D_cjs.a}});Object.defineProperty(exports,"createHostedBoardQueueLaneRegistry",{enumerable:true,get:function(){return chunkBQJVCCFU_cjs.a}});//# sourceMappingURL=index.cjs.map
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1,2 +1,2 @@
1
- export{b as createMultiBoardServerRuntime,a as createSingleBoardServerRuntime}from'../chunk-LDVJPFIW.js';import'../chunk-JB4Q2W7I.js';import'../chunk-XYN5D3GL.js';import'../chunk-O5UYCGIN.js';import'../chunk-CZ6ZFWFT.js';export{a as createHostedBoardQueueLaneRegistry}from'../chunk-7UJQMFVS.js';import'../chunk-FOFGEABN.js';import'../chunk-RKKSVOP2.js';import'../chunk-NTICU4OK.js';import'../chunk-O7NOHKVR.js';import'../chunk-ZJ5M5COT.js';import'../chunk-HFI2NAZJ.js';import'../chunk-6MD6FVE3.js';import'../chunk-AHW6EMUO.js';import'../chunk-ANKA7HEJ.js';import'../chunk-44L64VQ2.js';import'../chunk-VGT3TRQG.js';import'../chunk-WDPOGXTY.js';import'../chunk-6M3RIGUH.js';import'../chunk-ATOQP3BD.js';import'../chunk-YT76JNKE.js';import'../chunk-MNEOJWPS.js';import'../chunk-7QNEV5S3.js';import'../chunk-BJGK5FNL.js';import'../chunk-NIBLKYXN.js';import'../chunk-UGB7PC4P.js';import'../chunk-FW4363Y4.js';//# sourceMappingURL=index.js.map
1
+ export{b as createMultiBoardServerRuntime,a as createSingleBoardServerRuntime}from'../chunk-SEUSFOMM.js';import'../chunk-JB4Q2W7I.js';import'../chunk-XYN5D3GL.js';import'../chunk-O5UYCGIN.js';import'../chunk-CZ6ZFWFT.js';export{a as createHostedBoardQueueLaneRegistry}from'../chunk-7UJQMFVS.js';import'../chunk-FOFGEABN.js';import'../chunk-RKKSVOP2.js';import'../chunk-NTICU4OK.js';import'../chunk-O7NOHKVR.js';import'../chunk-ZJ5M5COT.js';import'../chunk-5VTIOM2U.js';import'../chunk-6MD6FVE3.js';import'../chunk-EZOXABJ2.js';import'../chunk-ANKA7HEJ.js';import'../chunk-44L64VQ2.js';import'../chunk-VGT3TRQG.js';import'../chunk-WDPOGXTY.js';import'../chunk-6M3RIGUH.js';import'../chunk-ATOQP3BD.js';import'../chunk-YT76JNKE.js';import'../chunk-MNEOJWPS.js';import'../chunk-7QNEV5S3.js';import'../chunk-BJGK5FNL.js';import'../chunk-NIBLKYXN.js';import'../chunk-UGB7PC4P.js';import'../chunk-FW4363Y4.js';//# sourceMappingURL=index.js.map
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- 'use strict';var chunk42ZOYXEV_cjs=require('../chunk-42ZOYXEV.cjs');require('../chunk-LFVMX23W.cjs'),require('../chunk-NM6O35RY.cjs'),require('../chunk-NBJTYAYN.cjs'),require('../chunk-NMOUBZXX.cjs'),require('../chunk-BQJVCCFU.cjs'),require('../chunk-BQUQTOPB.cjs'),require('../chunk-GPCMBPLK.cjs'),require('../chunk-7FGPOGRV.cjs'),require('../chunk-LPXVVMQT.cjs'),require('../chunk-272IYUKT.cjs'),require('../chunk-ZOZ7ZDGA.cjs'),require('../chunk-WRMOGPRG.cjs'),require('../chunk-EYBDAEVO.cjs'),require('../chunk-7JVHYHT2.cjs'),require('../chunk-VQCIOKJV.cjs'),require('../chunk-G4XXRHL2.cjs'),require('../chunk-LODXIALE.cjs'),require('../chunk-GHUW6P4G.cjs'),require('../chunk-QBEQL4TL.cjs'),require('../chunk-QEHKMLHA.cjs'),require('../chunk-UJ7ZTV4J.cjs'),require('../chunk-5XLFPPTY.cjs'),require('../chunk-SDJ3747Q.cjs'),require('../chunk-OF4FPYNI.cjs'),require('../chunk-2RIHC5TZ.cjs'),require('../chunk-GNFE24S7.cjs');var a=["/mcp","/mcp-raw","/mcp-actions","/mcp-controlplane","/mcp-webhooks","/notify-q"];function l(n,e){return a.some(r=>e===`${n}${r}`)}function s(n,e){return a.some(r=>{let i=`${r}`;if(!e.startsWith(`${n}/`)||!e.endsWith(i))return false;let t=e.slice(n.length+1,e.length-i.length);return t.length>0&&!t.includes("/")})}function c(n){let e=chunk42ZOYXEV_cjs.a(n);return {...e,async handleRuntimeApi(r,i,t){return l(e.apiBasePath,t.pathname)?e.handleRuntimeApi(r,i,t):false}}}function d(n){let e=chunk42ZOYXEV_cjs.b(n);return {...e,async handleApi(r,i,t){return s(e.apiBasePath,t.pathname)?e.handleApi(r,i,t):false}}}exports.createMultiBoardServerRuntime=d;exports.createSingleBoardServerRuntime=c;//# sourceMappingURL=index.cjs.map
1
+ 'use strict';var chunkYQ4MW72D_cjs=require('../chunk-YQ4MW72D.cjs');require('../chunk-LFVMX23W.cjs'),require('../chunk-NM6O35RY.cjs'),require('../chunk-NBJTYAYN.cjs'),require('../chunk-NMOUBZXX.cjs'),require('../chunk-BQJVCCFU.cjs'),require('../chunk-BQUQTOPB.cjs'),require('../chunk-GPCMBPLK.cjs'),require('../chunk-7FGPOGRV.cjs'),require('../chunk-LPXVVMQT.cjs'),require('../chunk-272IYUKT.cjs'),require('../chunk-HVLWVMG6.cjs'),require('../chunk-WRMOGPRG.cjs'),require('../chunk-BAG7MHZP.cjs'),require('../chunk-7JVHYHT2.cjs'),require('../chunk-VQCIOKJV.cjs'),require('../chunk-G4XXRHL2.cjs'),require('../chunk-LODXIALE.cjs'),require('../chunk-GHUW6P4G.cjs'),require('../chunk-QBEQL4TL.cjs'),require('../chunk-QEHKMLHA.cjs'),require('../chunk-UJ7ZTV4J.cjs'),require('../chunk-5XLFPPTY.cjs'),require('../chunk-SDJ3747Q.cjs'),require('../chunk-OF4FPYNI.cjs'),require('../chunk-2RIHC5TZ.cjs'),require('../chunk-GNFE24S7.cjs');var a=["/mcp","/mcp-raw","/mcp-actions","/mcp-controlplane","/mcp-webhooks","/notify-q"];function l(n,e){return a.some(r=>e===`${n}${r}`)}function s(n,e){return a.some(r=>{let i=`${r}`;if(!e.startsWith(`${n}/`)||!e.endsWith(i))return false;let t=e.slice(n.length+1,e.length-i.length);return t.length>0&&!t.includes("/")})}function c(n){let e=chunkYQ4MW72D_cjs.a(n);return {...e,async handleRuntimeApi(r,i,t){return l(e.apiBasePath,t.pathname)?e.handleRuntimeApi(r,i,t):false}}}function d(n){let e=chunkYQ4MW72D_cjs.b(n);return {...e,async handleApi(r,i,t){return s(e.apiBasePath,t.pathname)?e.handleApi(r,i,t):false}}}exports.createMultiBoardServerRuntime=d;exports.createSingleBoardServerRuntime=c;//# sourceMappingURL=index.cjs.map
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1,2 +1,2 @@
1
- import {a as a$1,b}from'../chunk-LDVJPFIW.js';import'../chunk-JB4Q2W7I.js';import'../chunk-XYN5D3GL.js';import'../chunk-O5UYCGIN.js';import'../chunk-CZ6ZFWFT.js';import'../chunk-7UJQMFVS.js';import'../chunk-FOFGEABN.js';import'../chunk-RKKSVOP2.js';import'../chunk-NTICU4OK.js';import'../chunk-O7NOHKVR.js';import'../chunk-ZJ5M5COT.js';import'../chunk-HFI2NAZJ.js';import'../chunk-6MD6FVE3.js';import'../chunk-AHW6EMUO.js';import'../chunk-ANKA7HEJ.js';import'../chunk-44L64VQ2.js';import'../chunk-VGT3TRQG.js';import'../chunk-WDPOGXTY.js';import'../chunk-6M3RIGUH.js';import'../chunk-ATOQP3BD.js';import'../chunk-YT76JNKE.js';import'../chunk-MNEOJWPS.js';import'../chunk-7QNEV5S3.js';import'../chunk-BJGK5FNL.js';import'../chunk-NIBLKYXN.js';import'../chunk-UGB7PC4P.js';import'../chunk-FW4363Y4.js';var a=["/mcp","/mcp-raw","/mcp-actions","/mcp-controlplane","/mcp-webhooks","/notify-q"];function l(n,e){return a.some(r=>e===`${n}${r}`)}function s(n,e){return a.some(r=>{let i=`${r}`;if(!e.startsWith(`${n}/`)||!e.endsWith(i))return false;let t=e.slice(n.length+1,e.length-i.length);return t.length>0&&!t.includes("/")})}function c(n){let e=a$1(n);return {...e,async handleRuntimeApi(r,i,t){return l(e.apiBasePath,t.pathname)?e.handleRuntimeApi(r,i,t):false}}}function d(n){let e=b(n);return {...e,async handleApi(r,i,t){return s(e.apiBasePath,t.pathname)?e.handleApi(r,i,t):false}}}export{d as createMultiBoardServerRuntime,c as createSingleBoardServerRuntime};//# sourceMappingURL=index.js.map
1
+ import {a as a$1,b}from'../chunk-SEUSFOMM.js';import'../chunk-JB4Q2W7I.js';import'../chunk-XYN5D3GL.js';import'../chunk-O5UYCGIN.js';import'../chunk-CZ6ZFWFT.js';import'../chunk-7UJQMFVS.js';import'../chunk-FOFGEABN.js';import'../chunk-RKKSVOP2.js';import'../chunk-NTICU4OK.js';import'../chunk-O7NOHKVR.js';import'../chunk-ZJ5M5COT.js';import'../chunk-5VTIOM2U.js';import'../chunk-6MD6FVE3.js';import'../chunk-EZOXABJ2.js';import'../chunk-ANKA7HEJ.js';import'../chunk-44L64VQ2.js';import'../chunk-VGT3TRQG.js';import'../chunk-WDPOGXTY.js';import'../chunk-6M3RIGUH.js';import'../chunk-ATOQP3BD.js';import'../chunk-YT76JNKE.js';import'../chunk-MNEOJWPS.js';import'../chunk-7QNEV5S3.js';import'../chunk-BJGK5FNL.js';import'../chunk-NIBLKYXN.js';import'../chunk-UGB7PC4P.js';import'../chunk-FW4363Y4.js';var a=["/mcp","/mcp-raw","/mcp-actions","/mcp-controlplane","/mcp-webhooks","/notify-q"];function l(n,e){return a.some(r=>e===`${n}${r}`)}function s(n,e){return a.some(r=>{let i=`${r}`;if(!e.startsWith(`${n}/`)||!e.endsWith(i))return false;let t=e.slice(n.length+1,e.length-i.length);return t.length>0&&!t.includes("/")})}function c(n){let e=a$1(n);return {...e,async handleRuntimeApi(r,i,t){return l(e.apiBasePath,t.pathname)?e.handleRuntimeApi(r,i,t):false}}}function d(n){let e=b(n);return {...e,async handleApi(r,i,t){return s(e.apiBasePath,t.pathname)?e.handleApi(r,i,t):false}}}export{d as createMultiBoardServerRuntime,c as createSingleBoardServerRuntime};//# sourceMappingURL=index.js.map
2
2
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "yaml-flow",
3
- "version": "8.11.2",
3
+ "version": "8.11.3",
4
4
  "description": "Unified workflow engine: step-machine (sequential) + event-graph (stateless DAG) with pluggable storage",
5
5
  "author": "",
6
6
  "license": "MIT",
@@ -1,3 +0,0 @@
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-ATOQP3BD.js';import {a as a$2}from'./chunk-7QNEV5S3.js';import {e,f}from'./chunk-UGB7PC4P.js';function ft(e){return typeof e=="string"&&e.trim().length>0}function mt(e,t){if(!e||typeof e!="object")throw new Error(`${t}: adapter.selfRef is required`);if(!ft(e.howToRun))throw new Error(`${t}: adapter.selfRef.howToRun is required`);if(!ft(e.whatToRun))throw new Error(`${t}: adapter.selfRef.whatToRun is required`)}function pt(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 tr(e,t="callbackTransport"){return {createCallback(n){let a=e();return mt(a,t),{token:n,via:a}}}}function $e(e){return tr(()=>e,"createStaticExecutionRefCallbackTransport")}function kr(e){return $e({meta:"board-live-cards",howToRun:"http:post",whatToRun:a({kind:"http-url",value:String(e||"").trim()})})}function Rr(e){return $e({meta:"board-live-cards",howToRun:"in-process-loop",whatToRun:a({kind:"in-process-loop",value:String(e||"").trim()})})}function hr(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 St(e,t){let n={...e};for(let a of t.deleteKeys)delete n[a];return {...n,...t.shallowMerge}}function Cr(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 l={},h=null;for(let y of u){let V=s.read(y);Ie(V)?h=(h??Promise.resolve()).then(async()=>{l[y]=await V;}):l[y]=V;}return h?h.then(()=>({version:t(l),values:l})):{version:t(l),values:l}})},writeValues(a,s,d){let u=e(a),l=null;for(let h of d){let y=u.delete(h);Ie(y)&&(l=(l??Promise.resolve()).then(()=>y).then(()=>{}));}for(let[h,y]of Object.entries(s)){let V=u.write(h,y);Ie(V)&&(l=(l??Promise.resolve()).then(()=>V).then(()=>{}));}return l?l.then(()=>t(s)):t(s)}}}function kt(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=St(s.values,a);return Je(e.writeValues(n,d,a.deleteKeys),u=>({ok:true,newVersion:u}))})}}}function gt(e,t){if(!t)return e;let n=e.findIndex(a=>a.id===t);return n===-1?e:e.slice(n+1)}function Rt(e){return {readEntriesAfterCursor(t){let n=gt(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 gt(e.readAllEntries(),t).length},appendEvent(t){e.appendEntry({id:e.generateId(),event:t});}}}function br(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 _e(e){return typeof e=="object"&&e!==null&&"then"in e&&typeof e.then=="function"}function de(e,t){return _e(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);_e(s)&&(n=Promise.resolve(s).then(()=>{}));}return n??void 0}function rr(e){if(e==null)return null;let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{return t}}function nr(e,t){let n=e.match(t);return n?n[1]:null}function ht(e,t,n){let a={},s=Me(e,d=>{let u=n(d);if(u)return de(t(d),l=>{a[u]=l;})});return _e(s)?s.then(()=>a):a}function yt(e,t){return {readSourceData(n,a){return de(e.read(`${n}/${a}`),rr)},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 or(e,t){let n=(a,s)=>{try{let d=s(a);return _e(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,l=>n(l,s)),()=>e.delete(a))})}}}function sr(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 Ct(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=>ht(t,n=>e.read(n),n=>nr(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=>ht(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 l=String(d||"").split(".").filter(Boolean);if(l.length===0)return u&&typeof u=="object"&&!Array.isArray(u)?u:{value:u};let h={...s},y=h;for(let V=0;V<l.length-1;V++){let z=l[V],Y=y[z],ee=Y&&typeof Y=="object"&&!Array.isArray(Y)?{...Y}:{};y[z]=ee,y=ee;}return y[l[l.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 l=e.readCard(u.key);l?s.push(l):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[l,h]of Object.entries(d))s[l]!==h.checksum&&u.push(l);for(let l of Object.keys(s))d[l]||u.push(l);return u},validateUpsert(s,d){let u=n(),l=u[s],h=Object.entries(u).find(([,y])=>y.key===d);return l&&l.key!==d?{ok:false,error:`Card id "${s}" is already mapped to key "${l.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 l=n(),h=u??l[s]?.key??e.defaultCardKey(s),y=e.writeCard(h,d);l[s]={key:h,checksum:y,updatedAt:new Date().toISOString()},e.writeIndex(l);},patchCard(s,d,u){let l=n(),h=l[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);l[s]={key:h.key,checksum:z,updatedAt:new Date().toISOString()},e.writeIndex(l);},removeCard(s){let d=n(),u=d[s];u&&(e.removeCard(u.key),delete d[s],e.writeIndex(d));},readIndex(){return n()}}}function Fe(e,t){return yt(e,t)}function xt(e){return Rt(e)}var Oe="v1",he="board/graph",Et="board/lastJournalProcessedId";function Fr(e){return `cards/${e}/runtime`}function Tt(e){return kt(e,Oe)}function Be(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 At(e){return Ct(e)}function bt(e){return e?{lastRequestedToken:e.lastRequestedToken,lastCompletedToken:e.lastCompletedToken,lastCompletionStatus:e.lastCompletionStatus??(e.lastCompletedToken?"success":"not-started"),queueRequestedToken:e.queueRequestedToken}:{lastCompletionStatus:"not-started"}}function ar(e){return e?.lastRequestedToken?e.lastCompletedToken!==e.lastRequestedToken:false}function wt(e,t){return e?.lastRequestedToken?ar(e)?"in-flight":!e.lastCompletedToken||e.lastCompletedToken<t?"dispatch":"idle":"dispatch"}function ir(e,t){return {...e,lastCompletedToken:t,lastCompletionStatus:"success"}}function vt(e,t){return {...e,lastCompletedToken:t,lastCompletionStatus:"failure"}}function Pe(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},l=new Map;for(let T of d.pending)l.set(T.taskName,T.waitingOn);for(let T of d.unresolved)l.set(T.taskName,T.missingTokens);for(let T of d.blocked)l.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(),p=U.filter(B=>t.state.availableOutputs.includes(B)),b=U.filter(B=>!t.state.availableOutputs.includes(B)),I=l.get(T)??b,w=new Set;for(let B of g)for(let D of h.get(B)??[])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:p,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(p=>p!==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 ur(){return new Date().toISOString()}function It(e,t,n,a$1,s,d,u){return async l=>{let h=[],y=n.cardStore.readCard(l.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=>bt(T._sources[E]),g=(E,v)=>{T._sources[E]=bt(v),S=true;},i=l.taskState?.executionCount??0;if(T._lastExecutionCount!==i&&(T._sources={},T._lastExecutionCount=i,S=true),l.update){let E=l.update,v=E.outputFile;if(v){let P=U(v);if(E.failure){let L=E.rqt??P.lastRequestedToken??P.queueRequestedToken;L&&g(v,vt(P,L));}else {let L=E.rqt;if(!P.lastCompletedToken||L>P.lastCompletedToken){let te=typeof E.deliveryToken=="string"?E.deliveryToken:void 0,j=false;te&&(j=n.fetchedSourcesStore.commitSourceData(V,v,te)),j?g(v,ir(P,L)):g(v,vt(P,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(l.state??{}))if(v!==null&&typeof v=="object"&&!Array.isArray(v)){let P=v[E];I[E]=P!==void 0?P: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}),B=e.value;x.source_defs=Array.isArray(K)?K.map(E=>({...E,boardDir:typeof E.boardDir=="string"&&E.boardDir?E.boardDir:B})):K;let D=ur(),H=l.update?void 0:D,ne=ee.filter(E=>{let v=E.outputFile;if(typeof v!="string"||!v)return true;let P=U(v);H&&(P={...P,queueRequestedToken:H},g(v,P));let L=P.queueRequestedToken??P.lastRequestedToken??D,te=wt(P,L);return te==="in-flight"?false:te==="dispatch"});if(G(),ne.length>0){let E=false,v=D;for(let P of ne){let L=P.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:l.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 P=U(v),L=P.queueRequestedToken??P.lastRequestedToken??D;return wt(P,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(l.nodeId,ae),h.length>0&&n.executionRequestStore.appendEntries(t,h),"task-initiated"}}var Ge={settings:{completion:"manual",refreshStrategy:"data-changed"},tasks:{}};function _t(e){return {[he]:e.graph,[Et]:e.lastDrainedJournalId,board:{runtimeByCardId:e.runtimeByCardId}}}function Ft(e){let t=e[he],n=e[Et],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 Ot(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 F(e){return {status:"error",error:e instanceof Error?e.message:String(e)}}var Bt="sys_keys_board_state";function dr(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 Vt(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(Vt(e));return typeof t?.t=="string"?{taskName:t.t}:null}catch{return null}}function Pt(e){return dr(JSON.stringify(e))}function qt(e){try{let t=JSON.parse(Vt(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 cr(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 Lr(e$1,t,n={}){pt(t.callbackTransport,"createBoardLiveCardsPublic");let a$3=t.callbackTransport,s=t.onWarn??(()=>{}),d=a(e$1),u$1=n.boardRuntimeStoreRef,l=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),c=f({kind:"notification-batch",notifications:r}),f$1=V(c);f$1&&typeof f$1.catch=="function"&&f$1.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(c){r.write("_index",c);},readCard(c){return r.read(c)},writeCard(c,f){return r.write(c,f),t.hashFn(f)},removeCard(c){r.delete(c);},cardExists(c){return r.read(c)!==null},defaultCardKey(c){return c}}}let T={readValues(o){let r=t.kvStorageForRef(z()),c=r.listKeys().sort();if(c.length===0)return {version:null,values:{}};let f={};for(let C of c)f[C]=r.read(C);return {version:t.hashFn(f),values:f}},writeValues(o,r,c){let f=t.kvStorageForRef(z());for(let C of c)f.delete(C);for(let[C,_]of Object.entries(r))f.write(C,_);return t.hashFn(r)}},S=()=>Be(t.kvStorageForRef(z())),G=()=>Tt(T),U=()=>xt(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 At(t.kvStorageForRef(o))};function p$1(){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 c=G().commitSnapshot(e$1.value,{schemaVersion:Oe,expectedVersion:r,commitId:t.genId(),committedAt:Z(),deleteKeys:[],shallowMerge:_t(o)});if(!c.ok)throw new Error(`Snapshot commit failed (version mismatch): expected=${r??"null"} current=${c.currentVersion??"null"}`)}function x(o){U().appendEvent(o);}async function K(){let r=cr((m,k)=>{let O=m.payload,N=(O?.enrichedCard??{}).id??O?.cardId??"unknown";x({type:"task-failed",taskName:N,error:k,timestamp:Z()});}),c=I(),f=q(c.graph),{events:C,newCursor:_}=U().readEntriesAfterCursor(c.lastDrainedJournalId),$=j(),q$1=Fe($,m=>t.resolveBlob(m)),J={...c.runtimeByCardId},W=new Map,Se={readRuntime(m){return W.get(m)??J[m]??{_sources:{}}},writeRuntime(m,k){W.set(m,k),J[m]=k;}},ke=[],oe=new Map,we={readSourceData(m,k){let O=`${m}/${k}`;return oe.has(O)?oe.get(O):q$1.readSourceData(m,k)},ingestSourceDataStaged(m,k,O,ue){q$1.ingestSourceDataStaged(m,k,O,ue);},commitSourceData(m,k,O){let ue=`${m}/.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=`${m}/${k}`,fe=N.trim();try{oe.set(se,JSON.parse(fe));}catch{oe.set(se,fe);}return ke.push({cardId:m,outputFile:k,deliveryToken:O}),true},hasSource(m,k){let O=`${m}/${k}`;return oe.has(O)?true:q$1.hasSource(m,k)},listSources(m){let k=q$1.listSources(m),O=new Set;for(let N of oe.keys())N.startsWith(`${m}/`)&&O.add(N.slice(`${m}/`.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,We=new Set,Wt=(m,k)=>{Re.push({type:"task-completed",taskName:m,data:k,timestamp:Z()});},Ne=(m,k)=>{x({type:"task-failed",taskName:m,error:k,timestamp:Z()});},ve=u(f,{handlers:{"card-handler":It(e$1,_,le,Wt,Ne,(m,k)=>{Ve.push({cardId:m,values:k});},m=>{je.push(m);})},onNodeRemoved:m=>{Ke.delete(m),W.delete(m),delete J[m],We.add(m);}});for(Re=C;Re.length>0;){let m=Re;Re=[];for(let k of m)if(k.type==="task-restart"){let O=le.cardStore.readCard(k.taskName);O&&Ke.set(k.taskName,O);}ve.pushAll(m),await ve.waitForHandlers();}let Ze=ve.getState();await ve.dispose({wait:true});let Zt=G().readSnapshot(e$1.value).version;w({lastDrainedJournalId:_,graph:p(Ze),runtimeByCardId:J},Zt);for(let{cardId:m,values:k}of Ve)le.outputStore.writeComputedValues(m,k);for(let m of je)le.outputStore.writeDataObjects(m);for(let{cardId:m,outputFile:k,deliveryToken:O}of ke)q$1.commitSourceData(m,k,O);let xe;try{xe=Pe(d,Ze),le.outputStore.writeStatusSnapshot(xe);}catch(m){s(`[board-live-cards-public] status publish failed: ${m instanceof Error?m.message:String(m)}`);}let ye=[];for(let{cardId:m,values:k}of Ve)ye.push({kind:"computed_values",cardId:m,values:k});for(let m of je)for(let[k,O]of Object.entries(m))k&&ye.push({kind:"data_object",key:k,payload:O});for(let[m,k]of Ke)ye.push({kind:"card_refreshed",cardId:m,card:k});for(let m of We)ye.push({kind:"card_removed",cardId:m});xe!==void 0&&ye.push({kind:"status",status:xe}),Y(ye);let Ce=p$1()??{howToRun:"built-in",whatToRun:a({kind:"built-in",value:"source-cli-task-executor"})},et=t.supportsDirectSourceOutput?.(Ce)===true;r.dispatchEntriesForJournalId(_,m=>{if(m.taskKind!=="source-fetch"){s(`[process-accumulated-events] unknown taskKind "${m.taskKind}" \u2014 skipping`);return}let k=m.payload,O=k.enrichedCard?.id??"unknown",ue=k.enrichedCard?.source_defs??[];if(Ce.howToRun==="queue-storage"&&et){try{let N=t.queueStorageForRef(B(),"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}`,tt=$.keyRef?.(Te);if(!tt)continue;let rt={ref:a(tt),deliveryToken:Ee,outputFile:Q.outputFile,cardId:O},er=Pt({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:rt.deliveryToken});fe.push({...se?{boardId:se}:{},ref:Ce,args:{source_def:Q,base_ref:a(e$1),callback:a$3.createCallback(er),output:rt}});}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(et){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=Pt({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 B(){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(B(),"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(B(),"process-accumulated");for(;;){let r=o.lease({max:64,visibilityMs:1e3});if(r.length<=0)return;for(let c of r)o.ack(c.id,c.leaseToken);if(r.length<64)return}}async function ne(){try{let o=()=>{let c=I(),{events:f}=U().readEntriesAfterCursor(c.lastDrainedJournalId);f.length<=0||D();},r=await c(t.lock,K,o);return A({ran:r!==!1})}catch(o){return F(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 c=o.params?.outputsStoreRef;if(!c)return R("init requires params.outputsStoreRef \u2014 pass the outputs store ref here");let f=o.params?.queueStoreRef;if(!f)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");l=o.params?.scratchStoreRef;let _=o.params?.chatStoreRef;if(!_)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(c),q$1.writeQueueStoreRef(f),q$1.writeFetchedSourcesStoreRef(C),q$1.writeChatStoreRef(_),q$1.writeArtifactsStoreRef($);try{i().writeStatusSnapshot(Pe(d,q(I().graph)));}catch{}return A()}catch(r){return F(r)}}function ae(o){try{let r=i().readStatusSnapshot();if(!r){r=Pe(d,q(I().graph));try{i().writeStatusSnapshot(r);}catch{}}return A(r)}catch(r){return F(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 F(r)}}function v(o){try{let r=o.params?.cardId;if(!r)return R("addCardFiles requires params.cardId");let c=a$2(g(),{emitNotification:V}).appendFiles({params:{id:r},body:o.body});return c.status!=="success"?c:A({cardId:r,files_added:c.data.files_added,notified:!0})}catch(r){return F(r)}}function P(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 F(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,c=o.params?.all,f=!!o.params?.restart;if(!r&&!c)return R("upsertCard requires --card-id <id> or --all");let C=c?g().readAllCards().map(_=>_.id):[r];for(let _ of C)if(!g().readCard(_))return R(`Card "${_}" not found in board at ${e$1.value}`);for(let _ of C){let $=g().readCard(_),q=Ot($),J=t.hashFn(q),W=t.kvStorage("card-upsert"),Se=W.read(_),ke=Se?.taskConfigHash!==J;if(!(!ke&&!f)){if(ke){let oe=Se?.blobRef??g().readCardKey(_)??_;x({type:"task-upsert",taskName:_,taskConfig:q,timestamp:Z()}),W.write(_,{blobRef:oe,taskConfigHash:J,updatedAt:Z()});}f&&x({type:"task-restart",taskName:_,timestamp:Z()});}}return X(),A()}catch(r){return F(r)}}function ie(o){try{let r=o.params?.token;if(!r)return R("taskFailed requires params.token");let c=o.params?.error??"unknown error",f=qe(r);return f?(x({type:"task-failed",taskName:f.taskName,error:c,timestamp:Z()}),X(),A()):R("Invalid callback token")}catch(r){return F(r)}}function ge(o){try{let r=o.params?.token;if(!r)return R("taskProgress requires params.token");let f=(o.body??{}).update??{},C=qe(r);return C?(x({type:"task-progress",taskName:C.taskName,update:f,timestamp:Z()}),X(),A()):R("Invalid callback token")}catch(r){return F(r)}}function be(o){try{let r=o.params?.token,c=o.params?.ref;if(!r)return R("sourceDataFetched requires params.token");if(!c)return R("sourceDataFetched requires params.ref");let f=qt(r);if(!f)return R("Invalid source token");let{cbk:C,cid:_,b:$,d:q,cs:J,rqt:W,dt:Se}=f,ke=Fe(j(),Re=>t.resolveBlob(Re)),oe=Se||t.genId();Se||ke.ingestSourceDataStaged(_,q,b(c),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 F(r)}}function ce(o){try{let r=o.params?.token,c=o.params?.reason??"unknown";if(!r)return R("sourceDataFetchFailure requires params.token");let f=qt(r);if(!f)return R("Invalid source token");let{cbk:C,b:_,d:$,cs:q,rqt:J}=f,W=qe(C);return W?(x({type:"task-progress",taskName:W.taskName,update:{bindTo:_,outputFile:$,failure:!0,reason:c,sourceChecksum:q,rqt:J},timestamp:Z()}),X(),A()):R("Invalid callback token embedded in source token")}catch(r){return F(r)}}function jt(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 F(r)}}function Kt(o){try{return A({storeRef:u$1??null})}catch(r){return F(r)}}function Nt(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 F(r)}}function Dt(o){try{return A({storeRef:l??null})}catch(r){return F(r)}}function Lt(o){try{let r=S().readChatStoreRef();return A({storeRef:r})}catch(r){return F(r)}}function $t(o){try{let r=S().readArtifactsStoreRef();return A({storeRef:r})}catch(r){return F(r)}}function Jt(o){try{let r=S().readFetchedSourcesStoreRef();return A({storeRef:r})}catch(r){return F(r)}}function Mt(o){try{let r=o.params?.key;if(!r)return R("getConfig requires params.key");let c=S(),f;switch(r){case "task-executor":f=h??null;break;case "chat-handler-flow":f=y??null;break;case "board-runtime-store-ref":f=c.readBoardRuntimeStoreRef();break;case "card-store-ref":f=c.readCardStoreRef();break;case "outputs-store-ref":f=c.readOutputsStoreRef();break;case "scratch-store-ref":f=l??null;break;case "chat-store-ref":f=c.readChatStoreRef();break;case "artifacts-store-ref":f=c.readArtifactsStoreRef();break;case "fetched-sources-store-ref":f=c.readFetchedSourcesStoreRef();break;default:return R(`getConfig: unknown key "${r}"`)}return A({value:f})}catch(r){return F(r)}}function Ht(o){try{let r=o.params?.key;if(!r)return R("getOutputsDataObject requires params.key");let c=Ue()[r]??null;return A(c)}catch(r){return F(r)}}function Gt(o){if(!o||typeof o!="object"||Array.isArray(o))return false;let r=o.__private;return !!r&&typeof r=="object"&&!Array.isArray(r)&&r.visible_controlplane_only===true}function Ut(o){let r=[...new Set(g().readAllCards().filter(f=>!Gt(f)).map(f=>f.id).filter(f=>typeof f=="string"&&f.length>0))].sort(),c=[...new Set(Object.keys(o).filter(f=>f&&f!==Bt))].sort();return {card_ids:r,data_object_keys:c}}function Ue(){let o=i().readAllDataObjects();return {...o,[Bt]:Ut(o)}}function Qe(o){try{return A(Ue())}catch(r){return F(r)}}function Qt(o){try{let r=o.params?.key;if(!r)return R("getOutputsComputedValues requires params.key");let c=i().readComputedValues(r);return A(c)}catch(r){return F(r)}}function ze(o){try{return A(i().readAllComputedValues())}catch(r){return F(r)}}function Ye(){return Fe(j(),o=>t.resolveBlob(o))}function Xe(o){let r=j().keyRef?.(o);if(!r)throw new Error("configured fetched-sources store does not support keyRef");return a(r)}function zt(o){try{let r=o.params?.key;if(!r)return R("getOutputsFetchedSources requires params.key");let c=Ye().listSources(r),f={};for(let C of c)f[C]=Xe(`${r}/${C}`);return A(f)}catch(r){return F(r)}}function Yt(o){try{let r=Ye(),c=new Set;for(let C of j().listKeys()){let _=C.indexOf("/");_>0&&!C.includes("/.staged/")&&c.add(C.slice(0,_));}let f={};for(let C of c){let _=r.listSources(C);if(_.length>0){f[C]={};for(let $ of _)f[C][$]=Xe(`${C}/${$}`);}}return A(f)}catch(r){return F(r)}}function Xt(o){try{let r=g().readAllCards(),c=ae({});if(c.status!=="success")return c;let f=Qe({});if(f.status!=="success")return f;let C=ze({});if(C.status!=="success")return C;let _=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:_[J]&&typeof _[J]=="object"?_[J]:{}};}return A({cardDefinitions:r,statusSnapshot:c.data,dataObjectsByToken:f.data,cardRuntimeById:$})}catch(r){return F(r)}}return {init:pe,status:ae,getBoardRuntimeStoreRef:Kt,getCardStoreRef:jt,getOutputsStoreRef:Nt,getScratchStoreRef:Dt,getChatStoreRef:Lt,getArtifactsStoreRef:$t,getFetchedSourcesStoreRef:Jt,getConfig:Mt,getOutputsDataObject:Ht,getAllOutputsDataObjects:Qe,getOutputsComputedValues:Qt,getAllOutputsComputedValues:ze,getOutputsFetchedSources:zt,getAllOutputsFetchedSources:Yt,buildSseOneShotPayload:Xt,removeCard:E,addCardFiles:v,retrigger:P,processAccumulatedEvents:L,upsertCard:re,taskFailed:ie,taskProgress:ge,sourceDataFetched:be,sourceDataFetchFailure:ce}}function $r(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 Be(t.kvStorageForRef(n.boardRuntimeStoreRef))}return Be(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(p){i.write("_index",p);},readCard(p){return i.read(p)},writeCard(p,b){return i.write(p,b),t.hashFn(b)},removeCard(p){i.delete(p);},cardExists(p){return i.read(p)!==null},defaultCardKey(p){return p}}}let u=()=>He(d(),t.onWarn??(()=>{}));function l(){return a??s().readTaskExecutorRef()}async function h(g,i){let p=t.validateSchema(i),b=[],I=l();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 B;try{B=await t.invokeExecutor(I,"validate-source-def",{timeout:t.executorTimeouts?.validationMs??1e4,input:JSON.stringify(x)});}catch(H){let ne=H;if(B=typeof ne?.stdout=="string"?ne.stdout:"",!B.trim()){b.push(`source "${K}": executor validate-source-def failed \u2014 ${H instanceof Error?H.message:String(H)}`);continue}}let D=JSON.parse(B.trim());if(!D.ok&&Array.isArray(D.errors))for(let H of D.errors)b.push(`source "${K}": ${H}`);}catch(B){b.push(`source "${K}": executor validate-source-def failed \u2014 ${B instanceof Error?B.message:String(B)}`);}}let w=[...p.errors,...b];return A({cardId:g,isValid:w.length===0,issues:w})}function y(g,i){let p=g.params?.sourceIdx,b=g.params?.outRef;if(p===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(p<0||p>=K.length)return R(`sourceIdx ${p} out of range (card has ${K.length} source(s))`);let B=K[p],D=typeof B.bindTo=="string"?B.bindTo:"source";return {src:B,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,p=i["card-content"]??i,b=typeof p.id=="string"?p.id:"(unknown)";return await h(b,p)}catch(i){return F(i)}}async function z(g){try{let i=y(g,"probeSourcePreflight");if("status"in i)return i;let p=l();if(!p)return R("No task-executor registered for this board");try{let b={...i.src,_projections:i.mockProjections},I=await t.invokeExecutor(p,"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 F(i)}}async function Y(g){try{let i=y(g,"runSourcePreflight");if("status"in i)return i;let p=l();if(!p)return R("No task-executor registered for this board");try{let b$1={...i.src,_projections:i.mockProjections},I=await t.invokeExecutor(p,"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 F(i)}}async function ee(g){try{let i=l();if(!i)return R("No task-executor registered for this board");let p=await t.invokeExecutor(i,"describe-capabilities",{timeout:t.executorTimeouts?.describeMs??1e4});return A(JSON.parse(p.trim()))}catch(i){return F(i)}}function T(g){try{let i=g.body;if(!i||!Array.isArray(i.ops))return R("updatesInCardStore requires body.ops array");let p=i.ops,b=u();for(let I of p){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 F(i)}}function S(g){try{let i=g.body;if(!i||!Array.isArray(i.ids))return R("readFromCardStore requires body.ids array");let p=i.ids,b=u(),I=p.map(w=>({id:w,"card-content":b.readCard(w)}));return A({cards:I})}catch(i){return F(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,p=i["card-content"]??i,b=typeof p.id=="string"?p.id:"(unknown)",I=i["mock-fetched-sources"]??{},w=i["mock-requires"]??{},x=p.compute;if(!x||!Array.isArray(x)||x.length===0)return A({cardId:b,ok:!0,computed_values:{},errors:[]});let K={id:b,card_data:p.card_data??{},requires:w,source_defs:p.source_defs,compute:x},B=a$3.runSync(K,{sourcesData:I}),D=B.node.computed_values??{},H=B.errors??[];return A({cardId:b,ok:H.length===0,computed_values:D,errors:H})}catch(i){return F(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,p=i["card-content"]??i,b=typeof p.id=="string"?p.id:"(unknown)",I=i["mock-fetched-sources"]??{},w=i["mock-requires"]??{},x=await h(b,p),K=x.status==="success"?{isValid:x.data.isValid,issues:x.data.issues}:{isValid:!1,issues:[x.status==="fail"?x.error:"internal error"]},B=p.source_defs??[],D=p.card_data??{},H=[],ne=[];if(B.length>0){H=a$3.enrichSourcesSync(B,{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)??l();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=p.compute,P={},L=[];if(v&&Array.isArray(v)&&v.length>0){let j={id:b,card_data:D,requires:w,source_defs:p.source_defs,compute:v},re=a$3.runSync(j,{sourcesData:pe});P=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:P,compute_errors:L})}catch(i){return F(i)}}return {validateCardPreflight:V,probeSourcePreflight:z,runSourcePreflight:Y,evalCardCompute:G,simulateCardCycle:U,describeTaskExecutorCapabilities:ee,updatesInCardStore:T,readFromCardStore:S}}
2
- export{Cr as a,kt as b,br as c,pt as d,kr as e,Rr as f,hr as g,yt as h,or as i,sr as j,Ct as k,He as l,Oe as m,he as n,Fr as o,bt as p,wt as q,ir as r,vt as s,Pe as t,Ge as u,_t as v,Ft as w,Ot as x,Lr as y,$r as z};//# sourceMappingURL=chunk-AHW6EMUO.js.map
3
- //# sourceMappingURL=chunk-AHW6EMUO.js.map
@@ -1,3 +0,0 @@
1
- 'use strict';var chunk7JVHYHT2_cjs=require('./chunk-7JVHYHT2.cjs'),chunkVQCIOKJV_cjs=require('./chunk-VQCIOKJV.cjs'),chunkG4XXRHL2_cjs=require('./chunk-G4XXRHL2.cjs'),chunkQBEQL4TL_cjs=require('./chunk-QBEQL4TL.cjs'),chunk5XLFPPTY_cjs=require('./chunk-5XLFPPTY.cjs'),chunk2RIHC5TZ_cjs=require('./chunk-2RIHC5TZ.cjs');function ft(e){return typeof e=="string"&&e.trim().length>0}function mt(e,t){if(!e||typeof e!="object")throw new Error(`${t}: adapter.selfRef is required`);if(!ft(e.howToRun))throw new Error(`${t}: adapter.selfRef.howToRun is required`);if(!ft(e.whatToRun))throw new Error(`${t}: adapter.selfRef.whatToRun is required`)}function pt(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 tr(e,t="callbackTransport"){return {createCallback(n){let a=e();return mt(a,t),{token:n,via:a}}}}function $e(e){return tr(()=>e,"createStaticExecutionRefCallbackTransport")}function kr(e){return $e({meta:"board-live-cards",howToRun:"http:post",whatToRun:chunkVQCIOKJV_cjs.a({kind:"http-url",value:String(e||"").trim()})})}function Rr(e){return $e({meta:"board-live-cards",howToRun:"in-process-loop",whatToRun:chunkVQCIOKJV_cjs.a({kind:"in-process-loop",value:String(e||"").trim()})})}function hr(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 St(e,t){let n={...e};for(let a of t.deleteKeys)delete n[a];return {...n,...t.shallowMerge}}function Cr(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 l={},h=null;for(let y of u){let V=s.read(y);Ie(V)?h=(h??Promise.resolve()).then(async()=>{l[y]=await V;}):l[y]=V;}return h?h.then(()=>({version:t(l),values:l})):{version:t(l),values:l}})},writeValues(a,s,d){let u=e(a),l=null;for(let h of d){let y=u.delete(h);Ie(y)&&(l=(l??Promise.resolve()).then(()=>y).then(()=>{}));}for(let[h,y]of Object.entries(s)){let V=u.write(h,y);Ie(V)&&(l=(l??Promise.resolve()).then(()=>V).then(()=>{}));}return l?l.then(()=>t(s)):t(s)}}}function kt(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=St(s.values,a);return Je(e.writeValues(n,d,a.deleteKeys),u=>({ok:true,newVersion:u}))})}}}function gt(e,t){if(!t)return e;let n=e.findIndex(a=>a.id===t);return n===-1?e:e.slice(n+1)}function Rt(e){return {readEntriesAfterCursor(t){let n=gt(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 gt(e.readAllEntries(),t).length},appendEvent(t){e.appendEntry({id:e.generateId(),event:t});}}}function br(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 _e(e){return typeof e=="object"&&e!==null&&"then"in e&&typeof e.then=="function"}function de(e,t){return _e(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);_e(s)&&(n=Promise.resolve(s).then(()=>{}));}return n??void 0}function rr(e){if(e==null)return null;let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{return t}}function nr(e,t){let n=e.match(t);return n?n[1]:null}function ht(e,t,n){let a={},s=Me(e,d=>{let u=n(d);if(u)return de(t(d),l=>{a[u]=l;})});return _e(s)?s.then(()=>a):a}function yt(e,t){return {readSourceData(n,a){return de(e.read(`${n}/${a}`),rr)},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 or(e,t){let n=(a,s)=>{try{let d=s(a);return _e(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,l=>n(l,s)),()=>e.delete(a))})}}}function sr(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 Ct(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=>ht(t,n=>e.read(n),n=>nr(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=>ht(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 l=String(d||"").split(".").filter(Boolean);if(l.length===0)return u&&typeof u=="object"&&!Array.isArray(u)?u:{value:u};let h={...s},y=h;for(let V=0;V<l.length-1;V++){let z=l[V],Y=y[z],ee=Y&&typeof Y=="object"&&!Array.isArray(Y)?{...Y}:{};y[z]=ee,y=ee;}return y[l[l.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 l=e.readCard(u.key);l?s.push(l):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[l,h]of Object.entries(d))s[l]!==h.checksum&&u.push(l);for(let l of Object.keys(s))d[l]||u.push(l);return u},validateUpsert(s,d){let u=n(),l=u[s],h=Object.entries(u).find(([,y])=>y.key===d);return l&&l.key!==d?{ok:false,error:`Card id "${s}" is already mapped to key "${l.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 l=n(),h=u??l[s]?.key??e.defaultCardKey(s),y=e.writeCard(h,d);l[s]={key:h,checksum:y,updatedAt:new Date().toISOString()},e.writeIndex(l);},patchCard(s,d,u){let l=n(),h=l[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);l[s]={key:h.key,checksum:z,updatedAt:new Date().toISOString()},e.writeIndex(l);},removeCard(s){let d=n(),u=d[s];u&&(e.removeCard(u.key),delete d[s],e.writeIndex(d));},readIndex(){return n()}}}function Fe(e,t){return yt(e,t)}function xt(e){return Rt(e)}var Oe="v1",he="board/graph",Et="board/lastJournalProcessedId";function Fr(e){return `cards/${e}/runtime`}function Tt(e){return kt(e,Oe)}function Be(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 At(e){return Ct(e)}function bt(e){return e?{lastRequestedToken:e.lastRequestedToken,lastCompletedToken:e.lastCompletedToken,lastCompletionStatus:e.lastCompletionStatus??(e.lastCompletedToken?"success":"not-started"),queueRequestedToken:e.queueRequestedToken}:{lastCompletionStatus:"not-started"}}function ar(e){return e?.lastRequestedToken?e.lastCompletedToken!==e.lastRequestedToken:false}function wt(e,t){return e?.lastRequestedToken?ar(e)?"in-flight":!e.lastCompletedToken||e.lastCompletedToken<t?"dispatch":"idle":"dispatch"}function ir(e,t){return {...e,lastCompletedToken:t,lastCompletionStatus:"success"}}function vt(e,t){return {...e,lastCompletedToken:t,lastCompletionStatus:"failure"}}function Pe(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},l=new Map;for(let T of d.pending)l.set(T.taskName,T.waitingOn);for(let T of d.unresolved)l.set(T.taskName,T.missingTokens);for(let T of d.blocked)l.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(),p=U.filter(B=>t.state.availableOutputs.includes(B)),b=U.filter(B=>!t.state.availableOutputs.includes(B)),I=l.get(T)??b,w=new Set;for(let B of g)for(let D of h.get(B)??[])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:p,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(p=>p!==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 ur(){return new Date().toISOString()}function It(e,t,n,a,s,d,u){return async l=>{let h=[],y=n.cardStore.readCard(l.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=>bt(T._sources[E]),g=(E,v)=>{T._sources[E]=bt(v),S=true;},i=l.taskState?.executionCount??0;if(T._lastExecutionCount!==i&&(T._sources={},T._lastExecutionCount=i,S=true),l.update){let E=l.update,v=E.outputFile;if(v){let P=U(v);if(E.failure){let L=E.rqt??P.lastRequestedToken??P.queueRequestedToken;L&&g(v,vt(P,L));}else {let L=E.rqt;if(!P.lastCompletedToken||L>P.lastCompletedToken){let te=typeof E.deliveryToken=="string"?E.deliveryToken:void 0,j=false;te&&(j=n.fetchedSourcesStore.commitSourceData(V,v,te)),j?g(v,ir(P,L)):g(v,vt(P,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(l.state??{}))if(v!==null&&typeof v=="object"&&!Array.isArray(v)){let P=v[E];I[E]=P!==void 0?P: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&&chunkQBEQL4TL_cjs.a.runSync(w,{sourcesData:b}),(d??n.outputStore.writeComputedValues.bind(n.outputStore))(V,w.computed_values??{});let x={...y},K=chunkQBEQL4TL_cjs.a.enrichSourcesSync(Array.isArray(y.source_defs)?y.source_defs:void 0,{card_data:y.card_data,requires:I}),B=e.value;x.source_defs=Array.isArray(K)?K.map(E=>({...E,boardDir:typeof E.boardDir=="string"&&E.boardDir?E.boardDir:B})):K;let D=ur(),H=l.update?void 0:D,ne=ee.filter(E=>{let v=E.outputFile;if(typeof v!="string"||!v)return true;let P=U(v);H&&(P={...P,queueRequestedToken:H},g(v,P));let L=P.queueRequestedToken??P.lastRequestedToken??D,te=wt(P,L);return te==="in-flight"?false:te==="dispatch"});if(G(),ne.length>0){let E=false,v=D;for(let P of ne){let L=P.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:l.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 P=U(v),L=P.queueRequestedToken??P.lastRequestedToken??D;return wt(P,L)==="in-flight"}))return "task-initiated";let pe=y.provides??[],ae={};for(let{bindTo:E,ref:v}of pe)ae[E]=chunkQBEQL4TL_cjs.a.resolve(w,v);return (u??n.outputStore.writeDataObjects.bind(n.outputStore))(ae),a(l.nodeId,ae),h.length>0&&n.executionRequestStore.appendEntries(t,h),"task-initiated"}}var Ge={settings:{completion:"manual",refreshStrategy:"data-changed"},tasks:{}};function _t(e){return {[he]:e.graph,[Et]:e.lastDrainedJournalId,board:{runtimeByCardId:e.runtimeByCardId}}}function Ft(e){let t=e[he],n=e[Et],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 Ot(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 F(e){return {status:"error",error:e instanceof Error?e.message:String(e)}}var Bt="sys_keys_board_state";function dr(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 Vt(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(Vt(e));return typeof t?.t=="string"?{taskName:t.t}:null}catch{return null}}function Pt(e){return dr(JSON.stringify(e))}function qt(e){try{let t=JSON.parse(Vt(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 cr(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 Lr(e,t,n={}){pt(t.callbackTransport,"createBoardLiveCardsPublic");let a=t.callbackTransport,s=t.onWarn??(()=>{}),d=chunkVQCIOKJV_cjs.a(e),u=n.boardRuntimeStoreRef,l=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),c=chunk2RIHC5TZ_cjs.f({kind:"notification-batch",notifications:r}),f=V(c);f&&typeof f.catch=="function"&&f.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(c){r.write("_index",c);},readCard(c){return r.read(c)},writeCard(c,f){return r.write(c,f),t.hashFn(f)},removeCard(c){r.delete(c);},cardExists(c){return r.read(c)!==null},defaultCardKey(c){return c}}}let T={readValues(o){let r=t.kvStorageForRef(z()),c=r.listKeys().sort();if(c.length===0)return {version:null,values:{}};let f={};for(let C of c)f[C]=r.read(C);return {version:t.hashFn(f),values:f}},writeValues(o,r,c){let f=t.kvStorageForRef(z());for(let C of c)f.delete(C);for(let[C,_]of Object.entries(r))f.write(C,_);return t.hashFn(r)}},S=()=>Be(t.kvStorageForRef(z())),G=()=>Tt(T),U=()=>xt(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 At(t.kvStorageForRef(o))};function p(){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 c=G().commitSnapshot(e.value,{schemaVersion:Oe,expectedVersion:r,commitId:t.genId(),committedAt:Z(),deleteKeys:[],shallowMerge:_t(o)});if(!c.ok)throw new Error(`Snapshot commit failed (version mismatch): expected=${r??"null"} current=${c.currentVersion??"null"}`)}function x(o){U().appendEvent(o);}async function K(){let r=cr((m,k)=>{let O=m.payload,N=(O?.enrichedCard??{}).id??O?.cardId??"unknown";x({type:"task-failed",taskName:N,error:k,timestamp:Z()});}),c=I(),f=chunkG4XXRHL2_cjs.q(c.graph),{events:C,newCursor:_}=U().readEntriesAfterCursor(c.lastDrainedJournalId),$=j(),q=Fe($,m=>t.resolveBlob(m)),J={...c.runtimeByCardId},W=new Map,Se={readRuntime(m){return W.get(m)??J[m]??{_sources:{}}},writeRuntime(m,k){W.set(m,k),J[m]=k;}},ke=[],oe=new Map,we={readSourceData(m,k){let O=`${m}/${k}`;return oe.has(O)?oe.get(O):q.readSourceData(m,k)},ingestSourceDataStaged(m,k,O,ue){q.ingestSourceDataStaged(m,k,O,ue);},commitSourceData(m,k,O){let ue=`${m}/.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=`${m}/${k}`,fe=N.trim();try{oe.set(se,JSON.parse(fe));}catch{oe.set(se,fe);}return ke.push({cardId:m,outputFile:k,deliveryToken:O}),true},hasSource(m,k){let O=`${m}/${k}`;return oe.has(O)?true:q.hasSource(m,k)},listSources(m){let k=q.listSources(m),O=new Set;for(let N of oe.keys())N.startsWith(`${m}/`)&&O.add(N.slice(`${m}/`.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,We=new Set,Wt=(m,k)=>{Re.push({type:"task-completed",taskName:m,data:k,timestamp:Z()});},Ne=(m,k)=>{x({type:"task-failed",taskName:m,error:k,timestamp:Z()});},ve=chunkG4XXRHL2_cjs.u(f,{handlers:{"card-handler":It(e,_,le,Wt,Ne,(m,k)=>{Ve.push({cardId:m,values:k});},m=>{je.push(m);})},onNodeRemoved:m=>{Ke.delete(m),W.delete(m),delete J[m],We.add(m);}});for(Re=C;Re.length>0;){let m=Re;Re=[];for(let k of m)if(k.type==="task-restart"){let O=le.cardStore.readCard(k.taskName);O&&Ke.set(k.taskName,O);}ve.pushAll(m),await ve.waitForHandlers();}let Ze=ve.getState();await ve.dispose({wait:true});let Zt=G().readSnapshot(e.value).version;w({lastDrainedJournalId:_,graph:chunkG4XXRHL2_cjs.p(Ze),runtimeByCardId:J},Zt);for(let{cardId:m,values:k}of Ve)le.outputStore.writeComputedValues(m,k);for(let m of je)le.outputStore.writeDataObjects(m);for(let{cardId:m,outputFile:k,deliveryToken:O}of ke)q.commitSourceData(m,k,O);let xe;try{xe=Pe(d,Ze),le.outputStore.writeStatusSnapshot(xe);}catch(m){s(`[board-live-cards-public] status publish failed: ${m instanceof Error?m.message:String(m)}`);}let ye=[];for(let{cardId:m,values:k}of Ve)ye.push({kind:"computed_values",cardId:m,values:k});for(let m of je)for(let[k,O]of Object.entries(m))k&&ye.push({kind:"data_object",key:k,payload:O});for(let[m,k]of Ke)ye.push({kind:"card_refreshed",cardId:m,card:k});for(let m of We)ye.push({kind:"card_removed",cardId:m});xe!==void 0&&ye.push({kind:"status",status:xe}),Y(ye);let Ce=p()??{howToRun:"built-in",whatToRun:chunkVQCIOKJV_cjs.a({kind:"built-in",value:"source-cli-task-executor"})},et=t.supportsDirectSourceOutput?.(Ce)===true;r.dispatchEntriesForJournalId(_,m=>{if(m.taskKind!=="source-fetch"){s(`[process-accumulated-events] unknown taskKind "${m.taskKind}" \u2014 skipping`);return}let k=m.payload,O=k.enrichedCard?.id??"unknown",ue=k.enrichedCard?.source_defs??[];if(Ce.howToRun==="queue-storage"&&et){try{let N=t.queueStorageForRef(B(),"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}`,tt=$.keyRef?.(Te);if(!tt)continue;let rt={ref:chunkVQCIOKJV_cjs.a(tt),deliveryToken:Ee,outputFile:Q.outputFile,cardId:O},er=Pt({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:rt.deliveryToken});fe.push({...se?{boardId:se}:{},ref:Ce,args:{source_def:Q,base_ref:chunkVQCIOKJV_cjs.a(e),callback:a.createCallback(er),output:rt}});}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(et){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=Pt({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 B(){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(B(),"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(B(),"process-accumulated");for(;;){let r=o.lease({max:64,visibilityMs:1e3});if(r.length<=0)return;for(let c of r)o.ack(c.id,c.leaseToken);if(r.length<64)return}}async function ne(){try{let o=()=>{let c=I(),{events:f}=U().readEntriesAfterCursor(c.lastDrainedJournalId);f.length<=0||D();},r=await chunkVQCIOKJV_cjs.c(t.lock,K,o);return A({ran:r!==!1})}catch(o){return F(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 c=o.params?.outputsStoreRef;if(!c)return R("init requires params.outputsStoreRef \u2014 pass the outputs store ref here");let f=o.params?.queueStoreRef;if(!f)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");l=o.params?.scratchStoreRef;let _=o.params?.chatStoreRef;if(!_)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(c),q.writeQueueStoreRef(f),q.writeFetchedSourcesStoreRef(C),q.writeChatStoreRef(_),q.writeArtifactsStoreRef($);try{i().writeStatusSnapshot(Pe(d,chunkG4XXRHL2_cjs.q(I().graph)));}catch{}return A()}catch(r){return F(r)}}function ae(o){try{let r=i().readStatusSnapshot();if(!r){r=Pe(d,chunkG4XXRHL2_cjs.q(I().graph));try{i().writeStatusSnapshot(r);}catch{}}return A(r)}catch(r){return F(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 F(r)}}function v(o){try{let r=o.params?.cardId;if(!r)return R("addCardFiles requires params.cardId");let c=chunk5XLFPPTY_cjs.a(g(),{emitNotification:V}).appendFiles({params:{id:r},body:o.body});return c.status!=="success"?c:A({cardId:r,files_added:c.data.files_added,notified:!0})}catch(r){return F(r)}}function P(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 F(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,c=o.params?.all,f=!!o.params?.restart;if(!r&&!c)return R("upsertCard requires --card-id <id> or --all");let C=c?g().readAllCards().map(_=>_.id):[r];for(let _ of C)if(!g().readCard(_))return R(`Card "${_}" not found in board at ${e.value}`);for(let _ of C){let $=g().readCard(_),q=Ot($),J=t.hashFn(q),W=t.kvStorage("card-upsert"),Se=W.read(_),ke=Se?.taskConfigHash!==J;if(!(!ke&&!f)){if(ke){let oe=Se?.blobRef??g().readCardKey(_)??_;x({type:"task-upsert",taskName:_,taskConfig:q,timestamp:Z()}),W.write(_,{blobRef:oe,taskConfigHash:J,updatedAt:Z()});}f&&x({type:"task-restart",taskName:_,timestamp:Z()});}}return X(),A()}catch(r){return F(r)}}function ie(o){try{let r=o.params?.token;if(!r)return R("taskFailed requires params.token");let c=o.params?.error??"unknown error",f=qe(r);return f?(x({type:"task-failed",taskName:f.taskName,error:c,timestamp:Z()}),X(),A()):R("Invalid callback token")}catch(r){return F(r)}}function ge(o){try{let r=o.params?.token;if(!r)return R("taskProgress requires params.token");let f=(o.body??{}).update??{},C=qe(r);return C?(x({type:"task-progress",taskName:C.taskName,update:f,timestamp:Z()}),X(),A()):R("Invalid callback token")}catch(r){return F(r)}}function be(o){try{let r=o.params?.token,c=o.params?.ref;if(!r)return R("sourceDataFetched requires params.token");if(!c)return R("sourceDataFetched requires params.ref");let f=qt(r);if(!f)return R("Invalid source token");let{cbk:C,cid:_,b:$,d:q,cs:J,rqt:W,dt:Se}=f,ke=Fe(j(),Re=>t.resolveBlob(Re)),oe=Se||t.genId();Se||ke.ingestSourceDataStaged(_,q,chunkVQCIOKJV_cjs.b(c),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 F(r)}}function ce(o){try{let r=o.params?.token,c=o.params?.reason??"unknown";if(!r)return R("sourceDataFetchFailure requires params.token");let f=qt(r);if(!f)return R("Invalid source token");let{cbk:C,b:_,d:$,cs:q,rqt:J}=f,W=qe(C);return W?(x({type:"task-progress",taskName:W.taskName,update:{bindTo:_,outputFile:$,failure:!0,reason:c,sourceChecksum:q,rqt:J},timestamp:Z()}),X(),A()):R("Invalid callback token embedded in source token")}catch(r){return F(r)}}function jt(o){try{let r=S().readCardStoreRef();return r?A({storeRef:r}):R(`Board at ${e.value} has no card store configured`)}catch(r){return F(r)}}function Kt(o){try{return A({storeRef:u??null})}catch(r){return F(r)}}function Nt(o){try{let r=S().readOutputsStoreRef();return r?A({storeRef:r}):R(`Board at ${e.value} has no outputs store configured`)}catch(r){return F(r)}}function Dt(o){try{return A({storeRef:l??null})}catch(r){return F(r)}}function Lt(o){try{let r=S().readChatStoreRef();return A({storeRef:r})}catch(r){return F(r)}}function $t(o){try{let r=S().readArtifactsStoreRef();return A({storeRef:r})}catch(r){return F(r)}}function Jt(o){try{let r=S().readFetchedSourcesStoreRef();return A({storeRef:r})}catch(r){return F(r)}}function Mt(o){try{let r=o.params?.key;if(!r)return R("getConfig requires params.key");let c=S(),f;switch(r){case "task-executor":f=h??null;break;case "chat-handler-flow":f=y??null;break;case "board-runtime-store-ref":f=c.readBoardRuntimeStoreRef();break;case "card-store-ref":f=c.readCardStoreRef();break;case "outputs-store-ref":f=c.readOutputsStoreRef();break;case "scratch-store-ref":f=l??null;break;case "chat-store-ref":f=c.readChatStoreRef();break;case "artifacts-store-ref":f=c.readArtifactsStoreRef();break;case "fetched-sources-store-ref":f=c.readFetchedSourcesStoreRef();break;default:return R(`getConfig: unknown key "${r}"`)}return A({value:f})}catch(r){return F(r)}}function Ht(o){try{let r=o.params?.key;if(!r)return R("getOutputsDataObject requires params.key");let c=Ue()[r]??null;return A(c)}catch(r){return F(r)}}function Gt(o){if(!o||typeof o!="object"||Array.isArray(o))return false;let r=o.__private;return !!r&&typeof r=="object"&&!Array.isArray(r)&&r.visible_controlplane_only===true}function Ut(o){let r=[...new Set(g().readAllCards().filter(f=>!Gt(f)).map(f=>f.id).filter(f=>typeof f=="string"&&f.length>0))].sort(),c=[...new Set(Object.keys(o).filter(f=>f&&f!==Bt))].sort();return {card_ids:r,data_object_keys:c}}function Ue(){let o=i().readAllDataObjects();return {...o,[Bt]:Ut(o)}}function Qe(o){try{return A(Ue())}catch(r){return F(r)}}function Qt(o){try{let r=o.params?.key;if(!r)return R("getOutputsComputedValues requires params.key");let c=i().readComputedValues(r);return A(c)}catch(r){return F(r)}}function ze(o){try{return A(i().readAllComputedValues())}catch(r){return F(r)}}function Ye(){return Fe(j(),o=>t.resolveBlob(o))}function Xe(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 zt(o){try{let r=o.params?.key;if(!r)return R("getOutputsFetchedSources requires params.key");let c=Ye().listSources(r),f={};for(let C of c)f[C]=Xe(`${r}/${C}`);return A(f)}catch(r){return F(r)}}function Yt(o){try{let r=Ye(),c=new Set;for(let C of j().listKeys()){let _=C.indexOf("/");_>0&&!C.includes("/.staged/")&&c.add(C.slice(0,_));}let f={};for(let C of c){let _=r.listSources(C);if(_.length>0){f[C]={};for(let $ of _)f[C][$]=Xe(`${C}/${$}`);}}return A(f)}catch(r){return F(r)}}function Xt(o){try{let r=g().readAllCards(),c=ae({});if(c.status!=="success")return c;let f=Qe({});if(f.status!=="success")return f;let C=ze({});if(C.status!=="success")return C;let _=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:_[J]&&typeof _[J]=="object"?_[J]:{}};}return A({cardDefinitions:r,statusSnapshot:c.data,dataObjectsByToken:f.data,cardRuntimeById:$})}catch(r){return F(r)}}return {init:pe,status:ae,getBoardRuntimeStoreRef:Kt,getCardStoreRef:jt,getOutputsStoreRef:Nt,getScratchStoreRef:Dt,getChatStoreRef:Lt,getArtifactsStoreRef:$t,getFetchedSourcesStoreRef:Jt,getConfig:Mt,getOutputsDataObject:Ht,getAllOutputsDataObjects:Qe,getOutputsComputedValues:Qt,getAllOutputsComputedValues:ze,getOutputsFetchedSources:zt,getAllOutputsFetchedSources:Yt,buildSseOneShotPayload:Xt,removeCard:E,addCardFiles:v,retrigger:P,processAccumulatedEvents:L,upsertCard:re,taskFailed:ie,taskProgress:ge,sourceDataFetched:be,sourceDataFetchFailure:ce}}function $r(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 Be(t.kvStorageForRef(n.boardRuntimeStoreRef))}return Be(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(p){i.write("_index",p);},readCard(p){return i.read(p)},writeCard(p,b){return i.write(p,b),t.hashFn(b)},removeCard(p){i.delete(p);},cardExists(p){return i.read(p)!==null},defaultCardKey(p){return p}}}let u=()=>He(d(),t.onWarn??(()=>{}));function l(){return a??s().readTaskExecutorRef()}async function h(g,i){let p=t.validateSchema(i),b=[],I=l();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 B;try{B=await t.invokeExecutor(I,"validate-source-def",{timeout:t.executorTimeouts?.validationMs??1e4,input:JSON.stringify(x)});}catch(H){let ne=H;if(B=typeof ne?.stdout=="string"?ne.stdout:"",!B.trim()){b.push(`source "${K}": executor validate-source-def failed \u2014 ${H instanceof Error?H.message:String(H)}`);continue}}let D=JSON.parse(B.trim());if(!D.ok&&Array.isArray(D.errors))for(let H of D.errors)b.push(`source "${K}": ${H}`);}catch(B){b.push(`source "${K}": executor validate-source-def failed \u2014 ${B instanceof Error?B.message:String(B)}`);}}let w=[...p.errors,...b];return A({cardId:g,isValid:w.length===0,issues:w})}function y(g,i){let p=g.params?.sourceIdx,b=g.params?.outRef;if(p===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(p<0||p>=K.length)return R(`sourceIdx ${p} out of range (card has ${K.length} source(s))`);let B=K[p],D=typeof B.bindTo=="string"?B.bindTo:"source";return {src:B,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,p=i["card-content"]??i,b=typeof p.id=="string"?p.id:"(unknown)";return await h(b,p)}catch(i){return F(i)}}async function z(g){try{let i=y(g,"probeSourcePreflight");if("status"in i)return i;let p=l();if(!p)return R("No task-executor registered for this board");try{let b={...i.src,_projections:i.mockProjections},I=await t.invokeExecutor(p,"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 F(i)}}async function Y(g){try{let i=y(g,"runSourcePreflight");if("status"in i)return i;let p=l();if(!p)return R("No task-executor registered for this board");try{let b={...i.src,_projections:i.mockProjections},I=await t.invokeExecutor(p,"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 F(i)}}async function ee(g){try{let i=l();if(!i)return R("No task-executor registered for this board");let p=await t.invokeExecutor(i,"describe-capabilities",{timeout:t.executorTimeouts?.describeMs??1e4});return A(JSON.parse(p.trim()))}catch(i){return F(i)}}function T(g){try{let i=g.body;if(!i||!Array.isArray(i.ops))return R("updatesInCardStore requires body.ops array");let p=i.ops,b=u();for(let I of p){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 F(i)}}function S(g){try{let i=g.body;if(!i||!Array.isArray(i.ids))return R("readFromCardStore requires body.ids array");let p=i.ids,b=u(),I=p.map(w=>({id:w,"card-content":b.readCard(w)}));return A({cards:I})}catch(i){return F(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,p=i["card-content"]??i,b=typeof p.id=="string"?p.id:"(unknown)",I=i["mock-fetched-sources"]??{},w=i["mock-requires"]??{},x=p.compute;if(!x||!Array.isArray(x)||x.length===0)return A({cardId:b,ok:!0,computed_values:{},errors:[]});let K={id:b,card_data:p.card_data??{},requires:w,source_defs:p.source_defs,compute:x},B=chunkQBEQL4TL_cjs.a.runSync(K,{sourcesData:I}),D=B.node.computed_values??{},H=B.errors??[];return A({cardId:b,ok:H.length===0,computed_values:D,errors:H})}catch(i){return F(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,p=i["card-content"]??i,b=typeof p.id=="string"?p.id:"(unknown)",I=i["mock-fetched-sources"]??{},w=i["mock-requires"]??{},x=await h(b,p),K=x.status==="success"?{isValid:x.data.isValid,issues:x.data.issues}:{isValid:!1,issues:[x.status==="fail"?x.error:"internal error"]},B=p.source_defs??[],D=p.card_data??{},H=[],ne=[];if(B.length>0){H=chunkQBEQL4TL_cjs.a.enrichSourcesSync(B,{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)??l();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=p.compute,P={},L=[];if(v&&Array.isArray(v)&&v.length>0){let j={id:b,card_data:D,requires:w,source_defs:p.source_defs,compute:v},re=chunkQBEQL4TL_cjs.a.runSync(j,{sourcesData:pe});P=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:P,compute_errors:L})}catch(i){return F(i)}}return {validateCardPreflight:V,probeSourcePreflight:z,runSourcePreflight:Y,evalCardCompute:G,simulateCardCycle:U,describeTaskExecutorCapabilities:ee,updatesInCardStore:T,readFromCardStore:S}}
2
- exports.a=Cr;exports.b=kt;exports.c=br;exports.d=pt;exports.e=kr;exports.f=Rr;exports.g=hr;exports.h=yt;exports.i=or;exports.j=sr;exports.k=Ct;exports.l=He;exports.m=Oe;exports.n=he;exports.o=Fr;exports.p=bt;exports.q=wt;exports.r=ir;exports.s=vt;exports.t=Pe;exports.u=Ge;exports.v=_t;exports.w=Ft;exports.x=Ot;exports.y=Lr;exports.z=$r;//# sourceMappingURL=chunk-EYBDAEVO.cjs.map
3
- //# sourceMappingURL=chunk-EYBDAEVO.cjs.map
@@ -1,3 +0,0 @@
1
- import {b as b$1}from'./chunk-6MD6FVE3.js';import {a,d,x,t,u,n,w,v,k,b as b$2,c,h,i,j,o,s,r,q as q$2,p as p$1}from'./chunk-AHW6EMUO.js';import {a as a$1,b}from'./chunk-44L64VQ2.js';import {q as q$1,p,a as a$2,u as u$1}from'./chunk-VGT3TRQG.js';import {a as a$3}from'./chunk-ATOQP3BD.js';import {e,f}from'./chunk-UGB7PC4P.js';async function rt(t,o,a){let r=await t.tryAcquire();if(!r)return false;try{await o();}finally{await r();}return await a?.(),true}function Rt(t){return typeof t=="object"&&t!==null&&"then"in t&&typeof t.then=="function"}function Ce(t,o){return Rt(t)?t.then(o):o(t)}function nt(t,o){let a={...t};for(let[r,s]of Object.entries(o))s!==null&&typeof s=="object"&&!Array.isArray(s)&&a[r]!==null&&typeof a[r]=="object"&&!Array.isArray(a[r])?a[r]=nt(a[r],s):a[r]=s;return a}function we(t,o,a){if(o.length===0)return t;let[r,...s]=o;if(s.length===0)return {...t,[r]:a};let d=t[r]!==null&&typeof t[r]=="object"&&!Array.isArray(t[r])?t[r]:{};return {...t,[r]:we(d,s,a)}}function at(t){return {read:a=>t.read(a),get(a,r){return Ce(t.read(a),s=>{if(s===null)return null;let d=s;for(let f of r.split(".").filter(Boolean)){if(d===null||typeof d!="object"||Array.isArray(d))return null;d=d[f]??null;}return d??null})},write:(a,r)=>t.write(a,r),delete:a=>t.delete(a),listKeys:a=>t.listKeys(a),shallowMerge(a,r){return Ce(t.read(a),s=>t.write(a,{...s??{},...r}))},deepMerge(a,r){return Ce(t.read(a),s=>t.write(a,nt(s??{},r)))},patch(a,r,s){return Ce(t.read(a),d=>{let f=r.split(".").filter(Boolean);return t.write(a,we(d??{},f,s))})}}}function ot(t){return at(t)}function st(t,o){return {async readIndex(){return await t.read("_index")},writeIndex(a){return t.write("_index",a)},async readCard(a){return await t.read(a)},async writeCard(a,r){return await t.write(a,r),o(r)},removeCard(a){return t.delete(a)},async cardExists(a){return await t.read(a)!==null},defaultCardKey(a){return a}}}function it(t,o){async function a(){return await t.readIndex()??{}}return {async readCard(r){let s=(await a())[r];return !s||!await t.cardExists(s.key)?null:await t.readCard(s.key)},async readCardKey(r){return (await a())[r]?.key??null},async readAllCards(){let r=[];for(let[s,d]of Object.entries(await a())){if(!await t.cardExists(d.key))continue;let f=await t.readCard(d.key);f?r.push(f):o?.(`[card-store] could not read card "${s}" at key "${d.key}"`);}return r},async readChecksumIndex(){let r={};for(let[s,d]of Object.entries(await a()))r[s]=d.checksum;return r},async changedSince(r){let s=await a(),d=[];for(let[f,v]of Object.entries(s))r[f]!==v.checksum&&d.push(f);for(let f of Object.keys(r))s[f]||d.push(f);return d},async validateUpsert(r,s){let d=await a(),f=d[r],v=Object.entries(d).find(([,w])=>w.key===s);return f&&f.key!==s?{ok:false,error:`Card id "${r}" is already mapped to key "${f.key}", cannot remap to "${s}"`}:v&&v[0]!==r?{ok:false,error:`Key "${s}" is already mapped to card id "${v[0]}", cannot remap to "${r}"`}:{ok:true}},async writeCard(r,s,d){let f=await a(),v=d??f[r]?.key??t.defaultCardKey(r),w=await t.writeCard(v,s);f[r]={key:v,checksum:w,updatedAt:new Date().toISOString()},await t.writeIndex(f);},async patchCard(r,s,d){let f=await a(),v=f[r];if(!v||!await t.cardExists(v.key))throw new Error(`card "${r}" not found`);let w=await t.readCard(v.key);if(!w||typeof w!="object"||Array.isArray(w))throw new Error(`card "${r}" is not patchable`);let m=String(s||"").split(".").filter(Boolean),l=we(w,m,d),k=await t.writeCard(v.key,l);f[r]={key:v.key,checksum:k,updatedAt:new Date().toISOString()},await t.writeIndex(f);},async removeCard(r){let s=await a(),d=s[r];d&&(await t.removeCard(d.key),delete s[r],await t.writeIndex(s));},readIndex(){return a()}}}function Ot(t,o){return a(t,o)}function Ft(t,o,a){return {blob:t,kv:o,journal:a}}function ut(t,o={}){function a(m){return {status:"success",data:m}}function r(m){return {status:"fail",error:m}}function s(m){return {status:"error",error:m instanceof Error?m.message:String(m)}}async function d(m){let l=o.emitNotification;if(!l||m.length===0)return;let k=e(m);if(k.length===1){await l(k[0]);return}await l(f({kind:"notification-batch",notifications:k}));}async function f$1(m){let l=m.params?.id;if(l){let k=await t.readCard(l);if(!k)throw new Error(`card "${l}" not found`);return [k]}return await t.readAllCards()}function v(m){return f({kind:"notification-batch",notifications:e(m.map(l=>({kind:"card_refreshed",cardId:l.id,card:l})))})}function w(m){if(Array.isArray(m))return m;if(m&&typeof m=="object"){let l=m;return Array.isArray(l.files)?l.files:[m]}return null}return {async get(m){try{return a({cards:await f$1(m)})}catch(l){return s(l)}},async buildNotificationBatch(m){try{return a(v(await f$1(m)))}catch(l){return s(l)}},async set(m){try{let l=m.body;if(l==null)return r("set requires a body (card object or array of cards)");let k=Array.isArray(l)?l:[l];for(let h of k){if(typeof h.id!="string")return r("each card must have a string `id` field");await t.writeCard(h.id,h);}return await d(k.map(h=>({kind:"card_refreshed",cardId:h.id,card:h}))),a({count:k.length})}catch(l){return s(l)}},async del(m){try{let l=m.body?.ids??[],k=m.params?.id,h=k?[...l,k]:l;if(h.length===0)return r("del requires body.ids (string[]) or params.id");for(let B of h)await t.removeCard(B);return await d(h.map(B=>({kind:"card_removed",cardId:B}))),a({count:h.length})}catch(l){return s(l)}},async patch(m){try{let l=m.params?.id,k=m.params?.path;if(!l)return r("patch requires params.id");if(!k)return r("patch requires params.path");let h=m.body,B=h&&Object.prototype.hasOwnProperty.call(h,"value")?h.value:m.body;await t.patchCard(l,k,B);let x=await t.readCard(l);return x?(await d([{kind:"card_refreshed",cardId:l,card:x}]),a({count:1})):r(`card "${l}" not found`)}catch(l){return s(l)}},async appendFiles(m){try{let l=m.params?.id;if(!l)return r("appendFiles requires params.id");let k=await t.readCard(l);if(!k)return r(`card "${l}" not found`);let h=w(m.body);if(!h||h.length===0)return r("appendFiles requires a file metadata object, array, or body.files array");let B=k.card_data&&typeof k.card_data=="object"&&!Array.isArray(k.card_data)?k.card_data:{},x=Array.isArray(B.files)?B.files:[],$=[...x,...h],V=h.map((L,z)=>({idx:x.length+z,entry:L})),E=await this.patch({params:{id:l,path:"card_data.files"},body:{value:$}});return E.status!=="success"?E:a({files_added:V})}catch(l){return s(l)}}}}async function kt(t,o){return (await t.peekActive()).find(a=>a.id===o)}function _t(t,o={}){async function a(r){let s=o.emitNotification;if(!s||r.length===0)return;let d=e(r);if(d.length===1){await s(d[0]);return}await s(f({kind:"notification-batch",notifications:d}));}return {async enqueue(r){let s=await t.enqueue(r);return await a([{kind:"message_enqueued",lane:o.lane,message:s}]),s},async enqueueMany(r){let s=await t.enqueueMany(r);return await a(s.map(d=>({kind:"message_enqueued",lane:o.lane,message:d}))),s},enqueueIfAbsent:t.enqueueIfAbsent?async(r,s)=>{let d=await t.enqueueIfAbsent(r,s);return d&&await a([{kind:"message_enqueued",lane:o.lane,message:d}]),d}:void 0,lease(r){return t.lease(r)},ack(r,s){return t.ack(r,s)},nack(r,s,d){return t.nack(r,s,d)},peekActive(r){return t.peekActive(r)},peekDeadLetter(r){return t.peekDeadLetter(r)},async stage(r,s){return t.stage(r,s)},async commitStaged(r){let s=await t.commitStaged(r);if(s){let d=await kt(t,r);d&&await a([{kind:"message_enqueued",lane:o.lane,message:d}]);}return s},async discardStaged(r,s){return t.discardStaged(r,s)},peekStaged(r){return t.peekStaged(r)}}}function A(t){return t!==void 0?{status:"success",data:t}:{status:"success"}}function C(t){return {status:"fail",error:t}}function I(t){return {status:"error",error:t instanceof Error?t.message:String(t)}}var dt="sys_keys_board_state";function q(){return new Date().toISOString()}function Ct(t){let o=new TextEncoder().encode(t),a=Array.from(o,r=>String.fromCharCode(r)).join("");return btoa(a).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function lt(t){let o=t.replace(/-/g,"+").replace(/_/g,"/"),a=o+"=".repeat((4-o.length%4)%4),r=atob(a),s=Uint8Array.from(r,d=>d.charCodeAt(0));return new TextDecoder().decode(s)}function he(t){try{let o=JSON.parse(lt(t));return typeof o?.t=="string"?{taskName:o.t}:null}catch{return null}}function ct(t){return Ct(JSON.stringify(t))}function mt(t){try{let o=JSON.parse(lt(t));return typeof o?.cbk=="string"&&typeof o?.cid=="string"&&typeof o?.b=="string"&&typeof o?.d=="string"?o:null}catch{return null}}function wt(t){return j(t,o,()=>({_sources:{}}))}function ht(t,o){return h(t,o)}function Pt(t){return k(t)}function vt(t,o){return i(t,o)}function bt(t,o,a,r$1,s$1,d){return async f=>{let v=[],w=await a.cardStore.readCard(f.nodeId);if(!w)return "task-initiate-failure";let m=w.id,l=w.card_data??{},k=w.source_defs??[],h=k,B=await a.cardRuntimeStore.readRuntime(m),x=false,$=async()=>{x&&(await a.cardRuntimeStore.writeRuntime(m,B),x=false);},V=p=>p$1(B._sources[p]),E=(p,S)=>{B._sources[p]=p$1(S),x=true;},L=f.taskState?.executionCount??0;if(B._lastExecutionCount!==L&&(B._sources={},B._lastExecutionCount=L,x=true),f.update){let p=f.update.outputFile;if(p){let S=V(p);if(f.update.failure){let T=f.update.rqt??S.lastRequestedToken??S.queueRequestedToken;T&&E(p,s(S,T));}else {let T=f.update.rqt;if(!S.lastCompletedToken||T>S.lastCompletedToken){let N=typeof f.update.deliveryToken=="string"?f.update.deliveryToken:void 0,Z=N?await a.fetchedSourcesStore.commitSourceData(m,p,N):false;E(p,Z?r(S,T):s(S,T));}}await $();}}let z={};for(let p of k){if(!p.outputFile)continue;let S=await a.fetchedSourcesStore.readSourceData(m,p.outputFile);S!==null&&(z[p.bindTo]=S);}let M={};for(let[p,S]of Object.entries(f.state??{}))if(S!==null&&typeof S=="object"&&!Array.isArray(S)){let T=S[p];M[p]=T!==void 0?T:S;}else M[p]=S;let W={id:m,card_data:{...l},requires:M,source_defs:k,compute:w.compute};W._sourcesData=z,w.compute&&a$3.runSync(W,{sourcesData:z}),(s$1??(()=>{}))(m,W.computed_values??{});let Y=a$3.enrichSourcesSync(Array.isArray(w.source_defs)?w.source_defs:void 0,{card_data:w.card_data,requires:M}),Pe={...w,source_defs:Array.isArray(Y)?Y.map(p=>({...p,boardDir:typeof p.boardDir=="string"&&p.boardDir?p.boardDir:t.value})):Y},X=q(),me=f.update?void 0:X,ue=h.filter(p=>{let S=p.outputFile;if(typeof S!="string"||!S)return true;let T=V(S);me&&(T={...T,queueRequestedToken:me},E(S,T));let N=T.queueRequestedToken??T.lastRequestedToken??X;return q$2(T,N)==="dispatch"});if(await $(),ue.length>0){let p=false,S=X;for(let T of ue){let N=T.outputFile;if(typeof N!="string"||!N)continue;let Z=V(N),de=Z.queueRequestedToken??X;E(N,{...Z,lastRequestedToken:de}),S=de,p=true;}return p&&await $(),p&&(v.push({taskKind:"source-fetch",payload:{boardRef:a$1(t),enrichedCard:Pe,callbackToken:f.callbackToken,rqt:S}}),await a.executionRequestStore.appendEntries(o,v)),"task-initiated"}if(h.some(p=>{let S=p.outputFile;if(typeof S!="string"||!S)return false;let T=V(S),N=T.queueRequestedToken??T.lastRequestedToken??X;return q$2(T,N)==="in-flight"}))return "task-initiated";let ve=w.provides??[],H={};for(let{bindTo:p,ref:S}of ve)H[p]=a$3.resolve(W,S);return (d??(()=>{}))(H),r$1(f.nodeId,H),v.length>0&&await a.executionRequestStore.appendEntries(o,v),"task-initiated"}}function Xt(t$1,o,a$3={}){d(o.callbackTransport,"createAsyncBoardLiveCardsPublic");let r=o.callbackTransport,s=o.warn??(()=>{}),d$1=a$1(t$1),f$1=a$3.emitNotification??(n=>{if(!o.publishBoardChangeNotifications)return;let e=n.kind==="notification-batch"?n.notifications:[n];return o.publishBoardChangeNotifications(e)}),v$1=null,w$1=a$3.boardRuntimeStoreRef,m=a$3.scratchStoreRef,l=a$3.taskExecutorRef,k=a$3.chatHandlerFlow;function h(){if(!w$1)throw new Error(`Board at ${t$1.value} has no board runtime store configured. Pass boardRuntimeStoreRef at construction or init.`);return w$1}function B(n){if(n.length!==0)try{let e$1=e(n),c=f({kind:"notification-batch",notifications:e$1});return Promise.resolve(f$1(c)).catch(i=>{s(`[async-board-live-cards-public] emitNotification failed: ${i instanceof Error?i.message:String(i)}`);})}catch(e){s(`[async-board-live-cards-public] emitNotification failed: ${e instanceof Error?e.message:String(e)}`);return}}let x$1=()=>b$1(o.kvStorageForRef(h())),$=t$1.value,V=()=>b$2(a(()=>o.kvStorageForRef(h()),o.hashFn),"v1"),E=async()=>{let n=await x$1().readOutputsStoreRef();if(!n)throw new Error(`Board at ${t$1.value} has no outputs store configured.`);return Pt(o.kvStorageForRef(n))},L=async()=>{let n=await x$1().readCardStoreRef();if(!n)throw new Error(`Board at ${t$1.value} has no card store configured.`);let e=o.kvStorageForRef(n);return it(st(ot(e),o.hashFn),s)};async function z(){return !!(await V().readSnapshot($)).values[n]}async function M(){let n$1=await V().readSnapshot($);if(!n$1.values[n])throw new Error(`Board not initialized at ${t$1.value}`);return w(n$1.values)}async function W(n,e){let c=await V().commitSnapshot($,{schemaVersion:"v1",expectedVersion:e,deleteKeys:[],shallowMerge:v(n)});if(!c.ok)throw new Error(`Snapshot commit failed (version mismatch): expected=${e??"null"} current=${c.currentVersion??"null"}`)}let Y=()=>c(o.journalStorageForRef(h()));async function Pe(){return l??await x$1().readTaskExecutorRef()}function X(n){if(!n||typeof n!="object"||Array.isArray(n))return false;let e=n.__private;return !!e&&typeof e=="object"&&!Array.isArray(e)&&e.visible_controlplane_only===true}async function me(n){let e=await(await L()).readAllCards(),c=[...new Set(e.filter(R=>!X(R)).map(R=>R.id).filter(R=>typeof R=="string"&&R.length>0))].sort(),i=[...new Set(Object.keys(n).filter(R=>R&&R!==dt))].sort();return {card_ids:c,data_object_keys:i}}async function ue(){let n=await(await E()).readAllDataObjects();return {...n,[dt]:await me(n)}}async function j(n){await Y().appendEvent(n);}async function ve(){let n=await x$1().readFetchedSourcesStoreRef();if(!n)throw new Error(`Board at ${t$1.value} has no fetched sources store configured. Run: init --fetched-sources-store-ref <b64-ref>`);return n}async function H(){return o.blobStorageForRef(await ve())}async function p$1(){return ht(await H(),n=>o.resolveBlob(n))}async function S(n){let e=(await H()).keyRef?.(n);if(!e)throw new Error("configured fetched-sources store does not support keyRef");let c=await Promise.resolve(e);return a$1(c)}async function T(){let n=vt(o.kvStorageForRef(h()),async(u,g)=>{let P=u.payload,F=(P.enrichedCard??{}).id??P.cardId??"unknown";await j({type:"task-failed",taskName:F,error:g,timestamp:q()});}),e=wt(o.kvStorageForRef(h())),c=await H(),i=await p$1(),R=await L(),b=await E(),O=new Map,y=new Map,K=[],G=[],oe=[],se=new Map,ce=new Set,be={async readRuntime(u){return O.get(u)??await e.readRuntime(u)},async writeRuntime(u,g){O.set(u,g),Ie[u]=g;}},gt={async readSourceData(u,g){let P=`${u}/${g}`;return y.has(P)?y.get(P):await i.readSourceData(u,g)},ingestSourceDataStaged(u,g,P,D){return i.ingestSourceDataStaged(u,g,P,D)},async commitSourceData(u,g,P){let D=`${u}/.staged/${P}/${g}`,F=await c.read(D);if(F==null){let Q=await Promise.resolve(c.keyRef?.(D));Q&&(F=await o.resolveBlob(Q));}if(F==null)return false;let J=`${u}/${g}`,re=F.trim();try{y.set(J,JSON.parse(re));}catch{y.set(J,re);}return K.push({cardId:u,outputFile:g,deliveryToken:P}),true},async hasSource(u,g){let P=`${u}/${g}`;return y.has(P)||await i.hasSource(u,g)},async listSources(u){let g=await i.listSources(u),P=[...y.keys()].filter(D=>D.startsWith(`${u}/`)).map(D=>D.slice(`${u}/`.length));return [...new Set([...g,...P])]}},Ae=await M(),pt=q$1(Ae.graph),Ie={...Ae.runtimeByCardId},{events:yt,newCursor:xe}=await Y().readEntriesAfterCursor(Ae.lastDrainedJournalId),le=yt,fe=u$1(pt,{handlers:{"card-handler":bt(t$1,xe,{cardStore:R,cardRuntimeStore:be,fetchedSourcesStore:gt,executionRequestStore:n},(u,g)=>{le.push({type:"task-completed",taskName:u,data:g,timestamp:q()});},(u,g)=>{G.push({cardId:u,values:g});},u=>{oe.push(u);})},onNodeRemoved:u=>{se.delete(u),O.delete(u),delete Ie[u],ce.add(u);}});for(;le.length>0;){let u=le;le=[];for(let g of u)if(g.type==="task-restart"){let P=await R.readCard(g.taskName);P&&se.set(g.taskName,P);}fe.pushAll(u),await fe.waitForHandlers();}let Ee=fe.getState();await fe.dispose({wait:true}),await W({lastDrainedJournalId:xe,graph:p(Ee),runtimeByCardId:Ie},(await V().readSnapshot($)).version);for(let{cardId:u,values:g}of G)await b.writeComputedValues(u,g);for(let u of oe)await b.writeDataObjects(u);for(let[u,g]of O)await e.writeRuntime(u,g);for(let u of K)await i.commitSourceData(u.cardId,u.outputFile,u.deliveryToken);let Ne=t(d$1,Ee);await b.writeStatusSnapshot(Ne);let ie=[];for(let{cardId:u,values:g}of G)ie.push({kind:"computed_values",cardId:u,values:g});for(let u of oe)for(let[g,P]of Object.entries(u))ie.push({kind:"data_object",key:g,payload:P});for(let[u,g]of se)ie.push({kind:"card_refreshed",cardId:u,card:g});for(let u of ce)ie.push({kind:"card_removed",cardId:u});ie.push({kind:"status",status:Ne}),await B(ie);let te=await Pe();if(!te)return;let _e=o.supportsDirectSourceOutput?.(te)===true;await n.dispatchEntriesForJournalId(xe,async u=>{if(u.taskKind!=="source-fetch"){s(`[async-process-accumulated-events] unknown taskKind "${u.taskKind}" \u2014 skipping`);return}let g=u.payload,P=g.enrichedCard?.id??"unknown",D=g.enrichedCard?.source_defs??[];if(te.howToRun==="queue-storage"&&_e){try{let F=await x$1().readQueueStoreRef();if(!F)throw new Error(`Board at ${t$1.value} has no queue store configured. Run: init --queue-store-ref <b64-ref>`);let J=o.queueStorageForRef(F,"task-executor"),re=typeof te.extra?.boardId=="string"?te.extra.boardId:void 0,Q=[];for(let U of D){if(!U.outputFile)continue;let ge=o.genId(),pe=`${P}/.staged/${ge}/${U.outputFile}`,je=await Promise.resolve(c.keyRef?.(pe));if(!je)continue;let Ke={ref:a$1(je),deliveryToken:ge,outputFile:U.outputFile,cardId:P},St=ct({cbk:g.callbackToken,rg:t$1.value,br:a$1(t$1),cid:P,b:U.bindTo,d:U.outputFile,cs:void 0,rqt:g.rqt,dt:Ke.deliveryToken});Q.push({...re?{boardId:re}:{},ref:te,args:{source_def:U,base_ref:a$1(t$1),callback:r.createCallback(St),output:Ke}});}Q.length>0&&await J.enqueueMany(Q);}catch(F){await j({type:"task-failed",taskName:P,error:F instanceof Error?F.message:String(F),timestamp:q()});}return}for(let F of D){if(!F.outputFile)continue;let J;if(_e){let U=o.genId(),ge=`${P}/.staged/${U}/${F.outputFile}`,pe=await Promise.resolve(c.keyRef?.(ge));pe&&(J={ref:a$1(pe),deliveryToken:U,outputFile:F.outputFile,cardId:P});}let re=ct({cbk:g.callbackToken,rg:t$1.value,br:a$1(t$1),cid:P,b:F.bindTo,d:F.outputFile,cs:void 0,rqt:g.rqt,...J?{dt:J.deliveryToken}:{}}),Q=await o.dispatchExecution(te,{source_def:F,base_ref:a$1(t$1),callback:r.createCallback(re),...J?{output:J}:{}});Q.dispatched||await j({type:"task-failed",taskName:P,error:Q.error??"dispatch failed",timestamp:q()});}});}async function N(){try{let n=async()=>{let c=await M(),{events:i}=await Y().readEntriesAfterCursor(c.lastDrainedJournalId);i.length>0&&await de();},e=await rt(o.lock,T,n);return A({ran:e!==!1})}catch(n){return I(n)}}async function Z(){return v$1||(v$1=N().finally(()=>{v$1=null;}),v$1)}async function de(){let n=await x$1().readQueueStoreRef();if(!n)throw new Error(`Board at ${t$1.value} has no queue store configured. Run: init --queue-store-ref <b64-ref>`);let e=o.queueStorageForRef(n,"process-accumulated");e.enqueueIfAbsent?await e.enqueueIfAbsent({boardRef:a$1(t$1)},`process-accumulated:${a$1(t$1)}`):await e.enqueue({boardRef:a$1(t$1)}),await o.requestProcessAccumulated?.();}async function ft(){let n=await x$1().readQueueStoreRef();if(!n)throw new Error(`Board at ${t$1.value} has no queue store configured. Run: init --queue-store-ref <b64-ref>`);let e=o.queueStorageForRef(n,"process-accumulated");for(;;){let c=await e.lease({max:64,visibilityMs:1e3});if(c.length<=0)return;for(let i of c)await e.ack(i.id,i.leaseToken);if(c.length<64)return}}function ee(){de();}return {async init(n){try{let e=n.params?.cardStoreRef;if(!e)return C("init requires params.cardStoreRef");if(w$1=n.params?.boardRuntimeStoreRef,!w$1)return C("init requires params.boardRuntimeStoreRef");let c=n.params?.outputsStoreRef;if(!c)return C("init requires params.outputsStoreRef");let i=n.params?.queueStoreRef;if(!i)return C("init requires params.queueStoreRef");let R=n.params?.fetchedSourcesStoreRef;if(!R)return C("init requires params.fetchedSourcesStoreRef");m=n.params?.scratchStoreRef;let b=n.params?.chatStoreRef;if(!b)return C("init requires params.chatStoreRef");let O=n.params?.artifactsStoreRef;if(!O)return C("init requires params.artifactsStoreRef");await z()||await W({lastDrainedJournalId:"",graph:p(a$2(u)),runtimeByCardId:{}},null);let y=x$1();return await y.writeBoardRuntimeStoreRef(w$1),await y.writeCardStoreRef(e),await y.writeOutputsStoreRef(c),await y.writeQueueStoreRef(i),await y.writeFetchedSourcesStoreRef(R),await y.writeChatStoreRef(b),await y.writeArtifactsStoreRef(O),await(await E()).writeStatusSnapshot(t(d$1,q$1((await M()).graph))),A()}catch(e){return I(e)}},async status(n){try{let e=await E(),c=await e.readStatusSnapshot();return c||(c=t(d$1,q$1((await M()).graph)),await e.writeStatusSnapshot(c)),A(c)}catch(e){return I(e)}},async getCardStoreRef(n){try{let e=await x$1().readCardStoreRef();return e?A({storeRef:e}):C(`Board at ${t$1.value} has no card store configured`)}catch(e){return I(e)}},async getBoardRuntimeStoreRef(n){try{return A({storeRef:w$1??null})}catch(e){return I(e)}},async getOutputsStoreRef(n){try{let e=await x$1().readOutputsStoreRef();return e?A({storeRef:e}):C(`Board at ${t$1.value} has no outputs store configured`)}catch(e){return I(e)}},async getScratchStoreRef(n){try{return A({storeRef:m??null})}catch(e){return I(e)}},async getChatStoreRef(n){try{return A({storeRef:await x$1().readChatStoreRef()})}catch(e){return I(e)}},async getArtifactsStoreRef(n){try{return A({storeRef:await x$1().readArtifactsStoreRef()})}catch(e){return I(e)}},async getFetchedSourcesStoreRef(n){try{return A({storeRef:await x$1().readFetchedSourcesStoreRef()})}catch(e){return I(e)}},async getConfig(n){try{let e=n.params?.key;if(!e)return C("getConfig requires params.key");let c=x$1(),i;switch(e){case "task-executor":i=l??null;break;case "chat-handler-flow":i=k??null;break;case "board-runtime-store-ref":i=await c.readBoardRuntimeStoreRef();break;case "card-store-ref":i=await c.readCardStoreRef();break;case "outputs-store-ref":i=await c.readOutputsStoreRef();break;case "scratch-store-ref":i=m??null;break;case "chat-store-ref":i=await c.readChatStoreRef();break;case "artifacts-store-ref":i=await c.readArtifactsStoreRef();break;case "fetched-sources-store-ref":i=await c.readFetchedSourcesStoreRef();break;default:return C(`getConfig: unknown key "${e}"`)}return A({value:i})}catch(e){return I(e)}},async getOutputsDataObject(n){try{let e=n.params?.key;if(!e)return C("getOutputsDataObject requires params.key");let c=await ue();return A(c[e]??null)}catch(e){return I(e)}},async getAllOutputsDataObjects(n){try{return A(await ue())}catch(e){return I(e)}},async getOutputsComputedValues(n){try{let e=n.params?.key;return e?A(await(await E()).readComputedValues(e)):C("getOutputsComputedValues requires params.key")}catch(e){return I(e)}},async getAllOutputsComputedValues(n){try{return A(await(await E()).readAllComputedValues())}catch(e){return I(e)}},async getOutputsFetchedSources(n){try{let e=n.params?.key;if(!e)return C("getOutputsFetchedSources requires params.key");let c=await(await p$1()).listSources(e),i={};for(let R of c)i[R]=await S(`${e}/${R}`);return A(i)}catch(e){return I(e)}},async getAllOutputsFetchedSources(n){try{let e=await p$1(),c=await(await H()).listKeys(),i=new Set;for(let b of c){let O=b.indexOf("/");O>0&&!b.includes("/.staged/")&&i.add(b.slice(0,O));}let R={};for(let b of i){let O=await e.listSources(b);if(O.length!==0){R[b]={};for(let y of O)R[b][y]=await S(`${b}/${y}`);}}return A(R)}catch(e){return I(e)}},async buildSseOneShotPayload(n){try{let e=await(await L()).readAllCards(),c=await this.status({});if(c.status!=="success")return c;let i=await this.getAllOutputsDataObjects({});if(i.status!=="success")return i;let R=await this.getAllOutputsComputedValues({});if(R.status!=="success")return R;let b=R.data,O={};for(let y of e){let K=typeof y?.id=="string"?y.id:null;if(!K)continue;let G=y.card_data&&typeof y.card_data=="object"&&!Array.isArray(y.card_data)?y.card_data:{};O[K]={schema_version:"v1",card_id:K,card_data:{...G},computed_values:b[K]&&typeof b[K]=="object"?b[K]:{}};}return A({cardDefinitions:e,statusSnapshot:c.data,dataObjectsByToken:i.data,cardRuntimeById:O})}catch(e){return I(e)}},async addCardFiles(n){try{let e=n.params?.cardId;if(!e)return C("addCardFiles requires params.cardId");let i=await ut(await L(),{emitNotification:f$1}).appendFiles({params:{id:e},body:n.body});return i.status!=="success"?i:A({cardId:e,files_added:i.data.files_added,notified:!0})}catch(e){return I(e)}},async removeCard(n){try{let e=n.params?.id;if(!e)return C("removeCard requires params.id");try{await o.kvStorage("card-upsert").delete(e);}catch{}return await j({type:"task-removal",taskName:e,timestamp:q()}),ee(),A()}catch(e){return I(e)}},async retrigger(n){try{let e=n.params?.id;return e?(await j({type:"task-restart",taskName:e,timestamp:q()}),ee(),A()):C("retrigger requires params.id")}catch(e){return I(e)}},async processAccumulatedEvents(n){return await ft(),Z()},async upsertCard(n){try{let e=n.params?.cardId,c=n.params?.all,i=!!n.params?.restart;if(!e&&!c)return C("upsertCard requires --card-id <id> or --all");let R=await L(),b=c?(await R.readAllCards()).map(y=>y.id):[e];for(let y of b)if(!await R.readCard(y))return C(`Card "${y}" not found in board at ${t$1.value}`);let O=o.kvStorage("card-upsert");for(let y of b){let K=await R.readCard(y);if(!K)continue;let G=x(K),oe=o.hashFn(G),se=await O.read(y),ce=se?.taskConfigHash!==oe;if(!(!ce&&!i)){if(ce){let be=se?.blobRef??await R.readCardKey(y)??y;await j({type:"task-upsert",taskName:y,taskConfig:G,timestamp:q()}),await O.write(y,{blobRef:be,taskConfigHash:oe,updatedAt:q()});}i&&await j({type:"task-restart",taskName:y,timestamp:q()});}}return ee(),A()}catch(e){return I(e)}},async taskFailed(n){try{let e=n.params?.token;if(!e)return C("taskFailed requires params.token");let c=n.params?.error??"unknown error",i=he(e);return i?(await j({type:"task-failed",taskName:i.taskName,error:c,timestamp:q()}),ee(),A()):C("Invalid callback token")}catch(e){return I(e)}},async taskProgress(n){try{let e=n.params?.token;if(!e)return C("taskProgress requires params.token");let c=(n.body??{}).update??{},i=he(e);return i?(await j({type:"task-progress",taskName:i.taskName,update:c,timestamp:q()}),ee(),A()):C("Invalid callback token")}catch(e){return I(e)}},async sourceDataFetched(n){try{let e=n.params?.token,c=n.params?.ref;if(!e)return C("sourceDataFetched requires params.token");if(!c)return C("sourceDataFetched requires params.ref");let i=mt(e);if(!i)return C("Invalid source token");let R=await p$1(),b$1=i.dt||o.genId();i.dt||await R.ingestSourceDataStaged(i.cid,i.d,b(c),b$1);let O=he(i.cbk);return O?(await j({type:"task-progress",taskName:O.taskName,update:{bindTo:i.b,outputFile:i.d,fetchedAt:q(),deliveryToken:b$1,sourceChecksum:i.cs,rqt:i.rqt},timestamp:q()}),ee(),A()):C("Invalid callback token embedded in source token")}catch(e){return I(e)}},async sourceDataFetchFailure(n){try{let e=n.params?.token,c=n.params?.reason??"unknown";if(!e)return C("sourceDataFetchFailure requires params.token");let i=mt(e);if(!i)return C("Invalid source token");let R=he(i.cbk);return R?(await j({type:"task-progress",taskName:R.taskName,update:{bindTo:i.b,outputFile:i.d,failure:!0,reason:c,sourceChecksum:i.cs,rqt:i.rqt},timestamp:q()}),ee(),A()):C("Invalid callback token embedded in source token")}catch(e){return I(e)}}}}
2
- export{rt as a,ot as b,st as c,it as d,Ot as e,Ft as f,ut as g,_t as h,Xt as i};//# sourceMappingURL=chunk-HFI2NAZJ.js.map
3
- //# sourceMappingURL=chunk-HFI2NAZJ.js.map