yaml-flow 8.7.1 → 8.8.0

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 (182) hide show
  1. package/browser/adapters/firebase-storage.js +2 -2
  2. package/browser/adapters/firestore-storage.js +2 -2
  3. package/browser/adapters/localstorage-storage.js +3 -3
  4. package/browser/asset-integrity.json +9 -13
  5. package/browser/server-runtime-controlface.js +5 -5
  6. package/examples/ARCHITECTURE.md +0 -27
  7. package/examples/board/server/board-server.js +150 -100
  8. package/examples/board/server/board-worker/source_def_flows.json +0 -8
  9. package/examples/board/server/board-worker/task-executor.js +1 -3
  10. package/examples/board/test/server-http-test.js +108 -73
  11. package/examples/board-firestore/server/worker.js +8 -0
  12. package/examples/portfolio-tracker/portfolio-tracker.js +11 -1
  13. package/examples/portfolio-tracker/test/portfolio-t4.js +12 -2
  14. package/lib/{artifacts-store-lib-D9nMkVcE.d.cts → artifacts-store-lib-C6qBpMfU.d.cts} +1 -1
  15. package/lib/{artifacts-store-lib-DSSMqVL2.d.ts → artifacts-store-lib-D4qf7Q-7.d.ts} +1 -1
  16. package/lib/artifacts-store-public.d.cts +3 -3
  17. package/lib/artifacts-store-public.d.ts +3 -3
  18. package/lib/board-live-cards-mcp.cjs +1 -1
  19. package/lib/board-live-cards-mcp.d.cts +6 -7
  20. package/lib/board-live-cards-mcp.d.ts +6 -7
  21. package/lib/board-live-cards-mcp.js +1 -1
  22. package/lib/board-live-cards-node.cjs +8 -8
  23. package/lib/board-live-cards-node.d.cts +15 -14
  24. package/lib/board-live-cards-node.d.ts +15 -14
  25. package/lib/board-live-cards-node.js +8 -8
  26. package/lib/{board-live-cards-public-LlVUQPL2.d.cts → board-live-cards-public-BT5HrgqZ.d.cts} +82 -59
  27. package/lib/{board-live-cards-public-JNRKfBZy.d.ts → board-live-cards-public-DSRamFm8.d.ts} +82 -59
  28. package/lib/{board-live-cards-public-async-Di9QB141.d.cts → board-live-cards-public-async-CYjr4mgX.d.cts} +18 -8
  29. package/lib/{board-live-cards-public-async-fwd1QI82.d.ts → board-live-cards-public-async-DlyC3PgC.d.ts} +18 -8
  30. package/lib/board-live-cards-public.cjs +1 -1
  31. package/lib/board-live-cards-public.d.cts +2 -2
  32. package/lib/board-live-cards-public.d.ts +2 -2
  33. package/lib/board-live-cards-public.js +1 -1
  34. package/lib/board-live-cards-server-runtime.cjs +1 -1
  35. package/lib/board-live-cards-server-runtime.d.cts +6 -8
  36. package/lib/board-live-cards-server-runtime.d.ts +6 -8
  37. package/lib/board-live-cards-server-runtime.js +1 -1
  38. package/lib/{board-platform-adapter-async-BfHmHdx2.d.cts → board-platform-adapter-async-BZIftm36.d.cts} +18 -14
  39. package/lib/{board-platform-adapter-async-DYahVzIK.d.ts → board-platform-adapter-async-JP9V-U5E.d.ts} +18 -14
  40. package/lib/board-worker-adapter.cjs +1 -24
  41. package/lib/board-worker-adapter.d.cts +68 -3
  42. package/lib/board-worker-adapter.d.ts +68 -3
  43. package/lib/board-worker-adapter.js +1 -24
  44. package/lib/card-store-public.d.cts +2 -2
  45. package/lib/card-store-public.d.ts +2 -2
  46. package/lib/chat-store-public.cjs +1 -1
  47. package/lib/chat-store-public.d.cts +20 -20
  48. package/lib/chat-store-public.d.ts +20 -20
  49. package/lib/chat-store-public.js +1 -1
  50. package/lib/chunk-2GSI6C45.js +7 -0
  51. package/lib/chunk-35N7ONTH.js +2 -0
  52. package/lib/chunk-37HDEW26.cjs +2 -0
  53. package/lib/{chunk-PMUSJQSR.cjs → chunk-3CZCGNY4.cjs} +2 -2
  54. package/lib/{chunk-BQS3EIEK.js → chunk-44L64VQ2.js} +3 -3
  55. package/lib/chunk-6OPXQPSC.js +2 -0
  56. package/lib/chunk-7BTZCOT5.js +2 -0
  57. package/lib/{chunk-U2N6MCD5.cjs → chunk-7JVHYHT2.cjs} +2 -2
  58. package/lib/chunk-7QZ267XP.cjs +2 -0
  59. package/lib/{chunk-XQRNDX4Q.js → chunk-ANKA7HEJ.js} +2 -2
  60. package/lib/{chunk-KAWQPLIE.cjs → chunk-BQUQTOPB.cjs} +2 -2
  61. package/lib/chunk-CMFD27ZC.cjs +3 -0
  62. package/lib/chunk-DOFNXJ4C.js +3 -0
  63. package/lib/chunk-ETW3BXHD.cjs +2 -0
  64. package/lib/{chunk-SGV7PU4H.js → chunk-FOFGEABN.js} +2 -2
  65. package/lib/chunk-GPCMBPLK.cjs +2 -0
  66. package/lib/chunk-GU3T75C4.js +3 -0
  67. package/lib/chunk-H3EHFCDZ.js +3 -0
  68. package/lib/chunk-H4TYOSMD.cjs +45 -0
  69. package/lib/chunk-HFW7E2Z7.cjs +4 -0
  70. package/lib/chunk-IQIZA7TN.cjs +7 -0
  71. package/lib/chunk-J4MHQ7JF.js +45 -0
  72. package/lib/chunk-MCPADH33.cjs +2 -0
  73. package/lib/chunk-NBJTYAYN.cjs +2 -0
  74. package/lib/chunk-NDAKMJQK.cjs +3 -0
  75. package/lib/chunk-NNSBBO5R.js +2 -0
  76. package/lib/chunk-NU5NO5NM.js +2 -0
  77. package/lib/chunk-O4RKTQBP.cjs +3 -0
  78. package/lib/chunk-O5UYCGIN.js +2 -0
  79. package/lib/chunk-Q3OTUDIE.js +2 -0
  80. package/lib/chunk-R44X3RQB.cjs +2 -0
  81. package/lib/chunk-RKKSVOP2.js +2 -0
  82. package/lib/chunk-UB54HZA4.cjs +2 -0
  83. package/lib/{chunk-CIAJNUR4.js → chunk-VGDLSS2H.js} +2 -2
  84. package/lib/{chunk-SFVO2LB2.cjs → chunk-VQCIOKJV.cjs} +3 -3
  85. package/lib/chunk-VS3BXEYK.js +4 -0
  86. package/lib/chunk-Y4WK7HE4.js +2 -0
  87. package/lib/chunk-ZK3E7L4Y.cjs +2 -0
  88. package/lib/cloud-storage.cjs +1 -1
  89. package/lib/cloud-storage.d.cts +6 -6
  90. package/lib/cloud-storage.d.ts +6 -6
  91. package/lib/cloud-storage.js +1 -1
  92. package/lib/execution-refs.cjs +1 -1
  93. package/lib/execution-refs.js +1 -1
  94. package/lib/firebase-storage/index.cjs +2 -2
  95. package/lib/firebase-storage/index.d.cts +2 -2
  96. package/lib/firebase-storage/index.d.ts +2 -2
  97. package/lib/firebase-storage/index.js +2 -2
  98. package/lib/firestore-storage/index.cjs +2 -2
  99. package/lib/firestore-storage/index.d.cts +12 -10
  100. package/lib/firestore-storage/index.d.ts +12 -10
  101. package/lib/firestore-storage/index.js +2 -2
  102. package/lib/index.d.cts +1 -1
  103. package/lib/index.d.ts +1 -1
  104. package/lib/localstorage-storage/index.cjs +1 -1
  105. package/lib/localstorage-storage/index.d.cts +10 -6
  106. package/lib/localstorage-storage/index.d.ts +10 -6
  107. package/lib/localstorage-storage/index.js +1 -1
  108. package/lib/{mcp-tool-registries-W3TRj6O5.d.cts → mcp-tool-registries-CRtea2x4.d.cts} +3 -0
  109. package/lib/{mcp-tool-registries-BBObLYga.d.ts → mcp-tool-registries-D3rWSppt.d.ts} +3 -0
  110. package/lib/server-jobs-queue-runner/index.cjs +1 -1
  111. package/lib/server-jobs-queue-runner/index.d.cts +12 -9
  112. package/lib/server-jobs-queue-runner/index.d.ts +12 -9
  113. package/lib/server-jobs-queue-runner/index.js +1 -1
  114. package/lib/server-runtime/index.cjs +1 -1
  115. package/lib/server-runtime/index.d.cts +7 -9
  116. package/lib/server-runtime/index.d.ts +7 -9
  117. package/lib/server-runtime/index.js +1 -1
  118. package/lib/server-runtime-agentface/index.d.cts +7 -9
  119. package/lib/server-runtime-agentface/index.d.ts +7 -9
  120. package/lib/server-runtime-controlface/index.cjs +1 -1
  121. package/lib/server-runtime-controlface/index.d.cts +8 -9
  122. package/lib/server-runtime-controlface/index.d.ts +8 -9
  123. package/lib/server-runtime-controlface/index.js +1 -1
  124. package/lib/server-runtime-core/index.cjs +1 -1
  125. package/lib/server-runtime-core/index.d.cts +59 -21
  126. package/lib/server-runtime-core/index.d.ts +59 -21
  127. package/lib/server-runtime-core/index.js +1 -1
  128. package/lib/server-runtime-watchers/index.cjs +1 -1
  129. package/lib/server-runtime-watchers/index.d.cts +9 -65
  130. package/lib/server-runtime-watchers/index.d.ts +9 -65
  131. package/lib/server-runtime-watchers/index.js +1 -1
  132. package/lib/server-runtime-webhooks/index.d.cts +7 -9
  133. package/lib/server-runtime-webhooks/index.d.ts +7 -9
  134. package/lib/sse-hub-CYXisfXJ.d.cts +63 -0
  135. package/lib/sse-hub-Dodwtc3_.d.ts +63 -0
  136. package/lib/step-machine-public/index.cjs +1 -1
  137. package/lib/step-machine-public/index.d.cts +1 -1
  138. package/lib/step-machine-public/index.d.ts +1 -1
  139. package/lib/step-machine-public/index.js +1 -1
  140. package/lib/{storage-async-interface-BRR4eBjx.d.cts → storage-async-interface-CG0bMqvE.d.ts} +20 -1
  141. package/lib/{storage-async-interface-DhlOVPSp.d.ts → storage-async-interface-CyO-zwVQ.d.cts} +20 -1
  142. package/lib/{storage-interface-BFiD3kyB.d.ts → storage-interface-D-iEiTJA.d.cts} +45 -1
  143. package/lib/{storage-interface-BFiD3kyB.d.cts → storage-interface-D-iEiTJA.d.ts} +45 -1
  144. package/lib/stores/index.d.cts +1 -1
  145. package/lib/stores/index.d.ts +1 -1
  146. package/lib/stores/kv.d.cts +1 -1
  147. package/lib/stores/kv.d.ts +1 -1
  148. package/lib/{types-SO5OZm4s.d.ts → types-BtH3scgE.d.ts} +64 -29
  149. package/lib/{types-Ba8H5_Wo.d.cts → types-Ch0u3FKP.d.cts} +64 -29
  150. package/package.json +4 -5
  151. package/browser/board-livecards-client.js +0 -2
  152. package/examples/board/demo-shell-with-server.html +0 -272
  153. package/examples/board/doc.html +0 -465
  154. package/examples/board/server-config.json +0 -24
  155. package/lib/chat-storage-lib-B9Q34Dyv.d.cts +0 -54
  156. package/lib/chat-storage-lib-DB9iSai2.d.ts +0 -54
  157. package/lib/chunk-5XHOHTLZ.cjs +0 -2
  158. package/lib/chunk-6APH25VI.js +0 -2
  159. package/lib/chunk-76C7N4YT.js +0 -3
  160. package/lib/chunk-76ON3V7R.js +0 -2
  161. package/lib/chunk-7ICPAABP.cjs +0 -7
  162. package/lib/chunk-ASR44K7H.cjs +0 -3
  163. package/lib/chunk-CPAXTVBQ.cjs +0 -2
  164. package/lib/chunk-EGRHWZRV.js +0 -2
  165. package/lib/chunk-EZENHAVZ.cjs +0 -2
  166. package/lib/chunk-GL2OHR2E.cjs +0 -2
  167. package/lib/chunk-GYQXDNNI.cjs +0 -2
  168. package/lib/chunk-IPLSRN6P.cjs +0 -4
  169. package/lib/chunk-J6EGN6S4.cjs +0 -3
  170. package/lib/chunk-JH37NJGP.js +0 -3
  171. package/lib/chunk-JJL5VOQZ.cjs +0 -3
  172. package/lib/chunk-NJJ7WEDT.cjs +0 -2
  173. package/lib/chunk-NKIQRCOM.cjs +0 -2
  174. package/lib/chunk-PBOQ4HYB.cjs +0 -2
  175. package/lib/chunk-PRKRXAVN.js +0 -3
  176. package/lib/chunk-QJVR3FWQ.js +0 -2
  177. package/lib/chunk-S44QZUDX.js +0 -2
  178. package/lib/chunk-TSN3RTXT.js +0 -4
  179. package/lib/chunk-VXJHBWK3.js +0 -2
  180. package/lib/chunk-WHDEBJLT.js +0 -7
  181. package/lib/chunk-YGALANRO.js +0 -2
  182. package/lib/chunk-ZCNN6XPV.js +0 -2
@@ -0,0 +1,2 @@
1
+ 'use strict';var chunkLPXVVMQT_cjs=require('./chunk-LPXVVMQT.cjs'),chunkBQUQTOPB_cjs=require('./chunk-BQUQTOPB.cjs'),chunkVQCIOKJV_cjs=require('./chunk-VQCIOKJV.cjs'),chunk7QZ267XP_cjs=require('./chunk-7QZ267XP.cjs');function W(){return {status:null,computedValues:{},dataObjects:{},cards:{}}}function V(s){if(!s||typeof s!="object")return false;let e=s.summary;return !e||typeof e!="object"?false:Number(e.card_count||0)>0}function H(s,e){if(!e||typeof e!="object")return;let n=e;if(n.kind==="notification-batch"&&Array.isArray(n.notifications)){for(let l of n.notifications)H(s,l);return}n.kind==="status"&&V(n.status)&&(s.status=n.status),n.kind==="computed_values"&&n.cardId&&(s.computedValues[n.cardId]=n.values),n.kind==="data_object"&&n.key&&(s.dataObjects[n.key]=n.payload),n.kind==="card_refreshed"&&n.cardId&&(s.cards[n.cardId]=n.card),n.kind==="card_removed"&&n.cardId&&(delete s.cards[n.cardId],delete s.computedValues[n.cardId]);}function j(s,e){if(s?.status==="success")return Object.prototype.hasOwnProperty.call(s,"data")?s.data:void 0;throw s?.status==="fail"||s?.status==="error"?Object.assign(new Error(s.error||`${e} failed`),{statusCode:400}):Object.assign(new Error(`${e} returned an unexpected response`),{statusCode:500})}async function B(s,e){return j(await s,e)}function D(s){let e=chunkLPXVVMQT_cjs.a(s,"key");if(!e)throw Object.assign(new Error("MCP tool requires key"),{statusCode:400});let n=e.split(".");if(!(n.length>=2&&n[0]==="chat"&&n.every(h=>/^[A-Za-z_][A-Za-z0-9_]*$/.test(h))))throw Object.assign(new Error("MCP tool only supports card private keys under chat.*"),{statusCode:400});return e}function q(s,e){let n=s.__private;for(let l of e.split(".")){if(!n||typeof n!="object"||Array.isArray(n)||!Object.prototype.hasOwnProperty.call(n,l))return {exists:false,value:null};n=n[l];}return {exists:true,value:n}}function Q(s){let{boardId:e,bootstrapBoard:n,sseHub:l,onChannelSubscribed:h,onChannelUnsubscribed:v,getMcpFacade:I,getMcpCardStoreFacade:r}=s;function C(d){let u=chunkLPXVVMQT_cjs.a(d,"board_id");if(!u)throw Object.assign(new Error("MCP tool requires board_id"),{statusCode:400});if(u!==e)throw Object.assign(new Error(`Unknown board_id: ${u}`),{statusCode:400})}function w(d){let u=chunkLPXVVMQT_cjs.a(d,"client_id");if(!u)throw Object.assign(new Error("MCP tool requires client_id"),{statusCode:400});return u}function c(d){C(d);let u=w(d),a=chunkLPXVVMQT_cjs.a(d,"channel_name"),t=chunkLPXVVMQT_cjs.a(d,"card_id")||void 0;if(!a)throw Object.assign(new Error("MCP tool requires channel_name"),{statusCode:400});return {clientId:u,channelName:a,...t?{cardId:t}:{}}}function g(d){C(d);let u=chunkLPXVVMQT_cjs.a(d,"card_id");if(!u)throw Object.assign(new Error("MCP tool requires card_id"),{statusCode:400});return {cardId:u}}async function b(d){await n();let{cardId:u}=g(d),a=w(d);if(!await l.subscribeChat(a,u))throw Object.assign(new Error(`SSE client not connected: ${a}`),{statusCode:404});return {status:"success",data:{boardId:e,cardId:u,clientId:a,subscribed:true}}}async function y(d){await n();let{cardId:u}=g(d),a=w(d);if(!l.unsubscribeChat(a,u))throw Object.assign(new Error(`SSE client not connected: ${a}`),{statusCode:404});return {status:"success",data:{boardId:e,cardId:u,clientId:a,subscribed:false}}}async function k(d,u){await n();let{clientId:a,channelName:t,cardId:o}=c(d);if(!l.has(a))throw Object.assign(new Error(`SSE client not connected: ${a}`),{statusCode:404});return u?h?.(a,t,o?{cardId:o}:{}):v?.(a,t,o?{cardId:o}:{}),{status:"success",data:{boardId:e,clientId:a,channelName:t,subscribed:u,...o?{cardId:o}:{}}}}async function f(d,u){let{cardId:a}=g(d);return await I().setChatProcessing({cardId:a,active:u}),{status:"success",data:{boardId:e,cardId:a,active:u}}}async function i(d){let{cardId:u}=g(d),a=await I().getChatProcessing({cardId:u});return {status:"success",data:{boardId:e,cardId:u,active:a.active}}}async function m(d){let{cardId:u}=g(d),a=D(d);if(!Object.prototype.hasOwnProperty.call(d,"value"))throw Object.assign(new Error("MCP tool requires value"),{statusCode:400});if(a.split(".").includes("visible_controlplane_only")){let t=await B(r().get({params:{id:u}}),"cardStore.get"),o=Array.isArray(t.cards)&&t.cards.length>0&&typeof t.cards[0]=="object"&&!Array.isArray(t.cards[0])?t.cards[0]:null,R=o?q(o,"visible_controlplane_only").value:void 0;if(d.value!==R)throw Object.assign(new Error("MCP tool cannot change the reserved private flag visible_controlplane_only"),{statusCode:403});return {status:"success",data:{boardId:e,cardId:u,key:a}}}return j(await r().patch({params:{id:u,path:`__private.${a}`},body:{value:d.value}}),"cardStore.patch"),{status:"success",data:{boardId:e,cardId:u,key:a}}}async function _(d){let{cardId:u}=g(d),a=D(d),t=await B(r().get({params:{id:u}}),"cardStore.get"),o=Array.isArray(t.cards)&&t.cards.length>0&&t.cards[0]&&typeof t.cards[0]=="object"&&!Array.isArray(t.cards[0])?t.cards[0]:null;if(!o)throw Object.assign(new Error(`Card "${u}" not found`),{statusCode:404});let R=q(o,a);return {status:"success",data:{boardId:e,cardId:u,key:a,exists:R.exists,value:R.value}}}return {requireCardArgs:g,subscribeChat:b,unsubscribeChat:y,watchChannel:k,setChatProcessing:f,getChatProcessing:i,setCardMeta:m,getCardMeta:_}}function ee(s){let{boardId:e,boardContexts:n,readCardDefinitions:l,readChatRecords:h,getChatProcessing:v}=s;async function I(){let c=(await Promise.all(n.map(async f=>{try{let i=f.boardAdapter.kvStorageForRef(f.outputsStoreRef),m=await Promise.resolve(i.read("status"));if(m!=null)return m}catch{}return f.notification.status}))).filter(Boolean);if(c.length===0)return null;if(c.length===1)return c[0];let g=[],b=["completed","eligible","pending","blocked","unresolved","failed","in_progress","orphan_cards"],y={};for(let f of b)y[f]=0;for(let f of c){let i=f,m=Array.isArray(i.cards)?i.cards:[];g.push(...m);for(let _ of b)y[_]+=Number(i?.summary?.[_]||0);}let k=c[0];return {...k,cards:g,summary:{...k.summary||{},card_count:g.length,...y}}}async function r(){let c={},g=async b=>{try{let y=await b.boardOps.getAllOutputsComputedValues({});if(y.status==="success"&&y.data&&typeof y.data=="object"){for(let[k,f]of Object.entries(y.data)){let i=b.notification.cards[k];c[k]={schema_version:"v1",card_id:k,card_data:i?.card_data??{},computed_values:f??{}};}return}}catch{}for(let[y,k]of Object.entries(b.notification.computedValues)){let f=b.notification.cards[y];c[y]={schema_version:"v1",card_id:y,card_data:f?.card_data??{},computed_values:k??{}};}};for(let b of n)await g(b);return c}async function C(){let c={};for(let g of n){try{let b=await g.boardOps.getAllOutputsDataObjects({});if(b.status==="success"&&b.data&&typeof b.data=="object"){Object.assign(c,b.data);continue}}catch{}Object.assign(c,g.notification.dataObjects||{});}return c}async function w(){let c=await l(),g=await r(),b=await C(),y={};for(let f of c){if(!f?.id)continue;let i=f.id,m=g[i]||{},_={...m.card_data&&typeof m.card_data=="object"?m.card_data:f.card_data&&typeof f.card_data=="object"?f.card_data:{}};y[i]={schema_version:m.schema_version||"v1",card_id:m.card_id||i,card_data:_,computed_values:m.computed_values&&typeof m.computed_values=="object"?m.computed_values:{}};}let k={};for(let f of c){if(!f?.id)continue;let i=f.id;try{let m=await h(i),_=await v(i);(m.length>0||_)&&(k[i]={messages:m.map(d=>({role:String(d.role||"system"),text:String(d.text||""),files:Array.isArray(d.files)?d.files:[]})),receiving:!1,processing:_});}catch{}}return {boardId:e,cardDefinitions:c,statusSnapshot:await I(),dataObjectsByToken:b,cardRuntimeById:y,cardChatsByCardId:k}}return {readStatusSnapshot:I,readCardRuntimeArtifacts:r,readDataObjectsByToken:C,buildPublishedRuntimePayload:w}}function z(s){let e=String(s||"").trim();if(!e)return "upload.bin";let n=Math.max(e.lastIndexOf("/"),e.lastIndexOf("\\"));return (n>=0?e.slice(n+1):e)||"upload.bin"}function re(s){let{safeCardId:e,artifactsStores:n,cardFileMetadataStore:l,readCardFromStore:h,updateCardLocalOnly:v,writeChatRecord:I}=s;async function r(c){let g=[];try{let b=await h(c);if(!b)return g;let y=l().read(b.card_data&&typeof b.card_data=="object"?b.card_data:null);for(let k of y)g.push(String(k.stored_name??""));}catch{}return g}async function C(c,g,b,y){let k=e(c),f=n(c),i=z(g),m=await r(c),d=`${String(m.length+1).padStart(3,"0")}-${i}`.slice(-36);if(!f.files)throw Object.assign(new Error(`artifactsStoreRef is not configured for card uploads: ${c}`),{statusCode:500});return await f.files.putBytes(`${k}/${d}`,new Uint8Array(y),b||"application/octet-stream"),{name:i,stored_name:d,size:y.length,mime_type:b||"application/octet-stream",uploaded_at:new Date().toISOString()}}async function w(c,g,b,y,k){if(!y.length)throw Object.assign(new Error("Empty upload body"),{statusCode:400});let f=k?.inChat===true,i=await C(c,g,b,y),m=null;if(await v(c,_=>{let d=new Date().toISOString(),u=_.card_data&&typeof _.card_data=="object"?_.card_data:{};_.card_data=u;let a=l().normalizeIncoming([{name:i.name,stored_name:i.stored_name,size:i.size,mime_type:i.mime_type,uploaded_at:i.uploaded_at||d,chat:f}],d);return m=l().merge(u,a).findIndex(o=>o.stored_name===i.stored_name),_}),f&&k?.suppressChatRecordWrite!==true){let _=typeof m=="number"&&m>=0?` #${m}`:"";await I(c,"system",`file uploaded: ${i.name} as ${i.stored_name}${_}`,[],k?.turnId??"");}return {ok:true,file:{...i,...typeof m=="number"&&m>=0?{file_idx:m}:{},chat:f},...typeof m=="number"&&m>=0?{file_idx:m}:{}}}return {uploadCardFile:w,readCardStoredFileNames:r}}function se(s){return {"discover.source-kinds":()=>s.discoverSourceKinds(),"inspect.board-runtime-status":()=>s.inspectBoardRuntimeStatus(),"inspect.card-definition-and-runtime":e=>s.inspectCardDefinitionAndRuntime({cardId:chunkLPXVVMQT_cjs.a(e,"card_id")}),"inspect.chat-messages-on-cards":e=>{let n=chunkLPXVVMQT_cjs.b(e,"tail_turns"),l=chunkLPXVVMQT_cjs.b(e,"tail"),h=chunkLPXVVMQT_cjs.a(e,"turn_id"),v=e.all_turns===true,I=chunkLPXVVMQT_cjs.a(e,"tail_turns_before_id");return s.inspectChatMessagesOnCards({cardId:chunkLPXVVMQT_cjs.a(e,"card_id"),...n!==void 0?{lastUserTurns:n}:{},...l!==void 0?{tail:l}:{},...h?{turnId:h}:{},...v?{allTurns:true}:{},...I?{tailTurnsBeforeId:I}:{}})},"inspect.file-contents":e=>s.inspectFileContents({cardId:chunkLPXVVMQT_cjs.a(e,"card_id"),fileIdx:Number(chunkLPXVVMQT_cjs.b(e,"file_idx"))}),"preflight.validate-candidate-card-definition":e=>s.preflightValidateCandidateCardDefinition({candidateCardContent:chunkLPXVVMQT_cjs.d(e,"candidate_card_content","candidate_card_content")}),"preflight.materialize-candidate-card":e=>s.preflightMaterializeCandidateCard({candidateCardContent:chunkLPXVVMQT_cjs.d(e,"candidate_card_content","candidate_card_content"),mockRequires:chunkLPXVVMQT_cjs.d(e,"mock_requires","mock_requires"),mockFetchedSources:chunkLPXVVMQT_cjs.d(e,"mock_fetched_sources","mock_fetched_sources")}),"preflight.probe-single-source-in-candidate-card":e=>s.preflightProbeSingleSourceInCandidateCard({candidateCardContent:chunkLPXVVMQT_cjs.d(e,"candidate_card_content","candidate_card_content"),mockProjections:chunkLPXVVMQT_cjs.c(e,"mock_projections"),sourceIdx:chunkLPXVVMQT_cjs.e(e,"source_idx","source_idx")}),"preflight.run-single-source-in-candidate-card":e=>s.preflightRunSingleSourceInCandidateCard({candidateCardContent:chunkLPXVVMQT_cjs.d(e,"candidate_card_content","candidate_card_content"),mockProjections:chunkLPXVVMQT_cjs.c(e,"mock_projections"),sourceIdx:chunkLPXVVMQT_cjs.e(e,"source_idx","source_idx")}),"preflight.run-single-source-in-live-card":e=>s.preflightRunSingleSourceInLiveCard({cardId:chunkLPXVVMQT_cjs.a(e,"card_id"),sourceIdx:chunkLPXVVMQT_cjs.e(e,"source_idx","source_idx"),mockRequires:chunkLPXVVMQT_cjs.d(e,"mock_requires","mock_requires")}),"preflight.run-one-cycle-with-candidate-card":e=>s.preflightRunOneCycleWithCandidateCard({candidateCardContent:chunkLPXVVMQT_cjs.d(e,"candidate_card_content","candidate_card_content"),mockRequires:chunkLPXVVMQT_cjs.c(e,"mock_requires")}),"manage.read-card":e=>s.manageReadCard({cardId:chunkLPXVVMQT_cjs.a(e,"card_id")}),"stage-ai-response-and-any-attachments":e=>{let n=chunkLPXVVMQT_cjs.a(e,"turn_id");if(!n)throw Object.assign(new Error("stage-ai-response-and-any-attachments requires a non-empty turn_id"),{statusCode:400});return s.manageAddChatEntryAndAnyAttachments({cardId:chunkLPXVVMQT_cjs.a(e,"card_id"),role:"assistant",...typeof e.text=="string"?{text:e.text}:{},...n?{turn:n}:{},...Array.isArray(e.files)?{files:e.files}:{}})},"manage.upsert-card":e=>s.manageUpsertCard({cardId:chunkLPXVVMQT_cjs.a(e,"card_id"),candidateCardContent:chunkLPXVVMQT_cjs.c(e,"candidate_card_content")}),"manage.remove-card":e=>s.manageRemoveCard({cardId:chunkLPXVVMQT_cjs.a(e,"card_id")})}}function oe(s){return {"webhook.process-accumulated":()=>s.webhookProcessAccumulated(),"webhook.source-fetch-done":e=>s.webhookSourceFetchDone({token:chunkLPXVVMQT_cjs.a(e,"token"),ref:chunkLPXVVMQT_cjs.a(e,"ref")}),"webhook.source-fetch-failed":e=>s.webhookSourceFetchFailed({token:chunkLPXVVMQT_cjs.a(e,"token"),reason:chunkLPXVVMQT_cjs.a(e,"reason")})}}function de(s){let{boardId:e,uploadCardFile:n,getMcpFacade:l,controlplane:h}=s;function v(r,C){let w=chunkLPXVVMQT_cjs.a(r,"board_id");if(!w)throw Object.assign(new Error(`${C} requires board_id`),{statusCode:400});if(w!==e)throw Object.assign(new Error(`Unknown board_id: ${w}`),{statusCode:400})}function I(r,C){let{cardId:w}=h.requireCardArgs(r),c=chunkLPXVVMQT_cjs.a(r,"turn_id");return v(r,C),l().manageAddChatAttachment({cardId:w,role:chunkLPXVVMQT_cjs.a(r,"role")||"user",...c?{turn:c}:{},files:[{file_name:chunkLPXVVMQT_cjs.a(r,"file_name"),content_type:chunkLPXVVMQT_cjs.a(r,"content_type")||"application/octet-stream",...typeof r.text=="string"?{text:r.text}:{},...typeof r.base64=="string"?{base64:r.base64}:{},...Array.isArray(r.bytes)?{bytes:r.bytes}:{}}]})}return {"list-runtime-cards":r=>(v(r,"list-runtime-cards"),l().listRuntimeCards()),"sse.subscribe-chat":r=>h.subscribeChat(r),"sse.unsubscribe-chat":r=>h.unsubscribeChat(r),"sse.watch-channel":r=>h.watchChannel(r,true),"sse.unwatch-channel":r=>h.watchChannel(r,false),"getstate.is-chat-processing":r=>h.getChatProcessing(r),"setstate.chat-processing-started":r=>h.setChatProcessing(r,true),"setstate.chat-processing-done":r=>h.setChatProcessing(r,false),"getstate.card-private":r=>h.getCardMeta(r),"setstate.card-private":r=>h.setCardMeta(r),"manage.upload-card-file":r=>{let C=chunkLPXVVMQT_cjs.a(r,"card_id"),w=chunkLPXVVMQT_cjs.a(r,"file_name"),c=chunkLPXVVMQT_cjs.a(r,"content_type")||"application/octet-stream",g=chunkLPXVVMQT_cjs.f(r);if(v(r,"manage.upload-card-file"),!C)throw Object.assign(new Error("manage.upload-card-file requires card_id"),{statusCode:400});if(!w)throw Object.assign(new Error("manage.upload-card-file requires file_name"),{statusCode:400});if(!g)throw Object.assign(new Error("manage.upload-card-file requires args.bytes, args.text, or args.base64"),{statusCode:400});return n(C,w,c,g,{inChat:false})},"manage.add-chat-attachment":r=>I(r,"manage.add-chat-attachment"),"manage.add-chat-attachement":r=>I(r,"manage.add-chat-attachement"),"manage.add-chat-entry-and-any-attachments":r=>{let{cardId:C}=h.requireCardArgs(r),w=chunkLPXVVMQT_cjs.a(r,"role")||"user",c=chunkLPXVVMQT_cjs.a(r,"turn_id");return v(r,"manage.add-chat-entry-and-any-attachments"),l().manageAddChatEntryAndAnyAttachments({cardId:C,role:w,...typeof r.text=="string"?{text:r.text}:{},...c?{turn:c}:{},...Array.isArray(r.files)?{files:r.files}:{}})},"manage.patch-card":r=>{let{cardId:C}=h.requireCardArgs(r);return v(r,"manage.patch-card"),l().managePatchCard({cardId:C,patch:chunkLPXVVMQT_cjs.c(r,"patch")})},"manage.upsert-card":r=>{let{cardId:C}=h.requireCardArgs(r);return v(r,"manage.upsert-card"),l().manageUpsertCard({cardId:C,candidateCardContent:chunkLPXVVMQT_cjs.c(r,"candidate_card_content")})},"manage.remove-card":r=>{let{cardId:C}=h.requireCardArgs(r);return v(r,"manage.remove-card"),l().manageRemoveCard({cardId:C})},"manage.admin-read-card":async r=>{let{cardId:C}=h.requireCardArgs(r);return {status:"success",data:{cards:await l().adminReadCard({cardId:C})}}},"manage.admin-upsert-card":r=>{let C=chunkLPXVVMQT_cjs.a(r,"board_id"),w=chunkLPXVVMQT_cjs.a(r,"card_id");if(!C)throw Object.assign(new Error("manage.admin-upsert-card requires board_id"),{statusCode:400});if(!w)throw Object.assign(new Error("manage.admin-upsert-card requires card_id"),{statusCode:400});if(C!==e)throw Object.assign(new Error(`Unknown board_id: ${C}`),{statusCode:400});return l().adminUpsertCard({cardId:w,candidateCardContent:chunkLPXVVMQT_cjs.c(r,"candidate_card_content")})}}}function pe(s){let{boardContexts:e,cardOwnerIndex:n,cardContextForCard:l,readStatusSnapshot:h,readDataObjectsByToken:v,readCardRuntimeArtifacts:I,readCardFromStore:r,readCardDefinitions:C,processAccumulatedLaneInternal:w,reportSourceFetched:c,reportSourceFetchFailure:g,uploadCardFile:b,chatStorePublic:y,serverUrl:k,apiBasePath:f}=s;function i(){return e[0]??null}function m(){return {async status(){let a=await h();return a==null?{status:"fail",error:"Board status is unavailable"}:{status:"success",data:a}},async getOutputsDataObject(a){let t=a?.params?.key;return t?{status:"success",data:(await v())[t]}:{status:"fail",error:"getOutputsDataObject requires params.key"}},async getOutputsComputedValues(a){let t=a?.params?.key;return t?{status:"success",data:(await I())[t]?.computed_values}:{status:"fail",error:"getOutputsComputedValues requires params.key"}},async getOutputsFetchedSources(a){let t=a?.params?.key;if(!t)return {status:"fail",error:"getOutputsFetchedSources requires params.key"};let o=l(t)??i();return o?o.boardOps.getOutputsFetchedSources({params:{key:t}}):{status:"fail",error:"Board context is unavailable"}},async removeCard(a){let t=a?.params?.id;if(!t)return {status:"fail",error:"removeCard requires params.id"};let o=l(t)??i();return o?o.boardOps.removeCard({params:{id:t}}):{status:"fail",error:"Board context is unavailable"}},async cardRefreshedNotify(a){let t=a?.params?.cardId;if(!t)return {status:"fail",error:"cardRefreshedNotify requires params.cardId"};let o=l(t)??i();return o?o.boardOps.cardRefreshedNotify({params:{cardId:t}}):{status:"fail",error:"Board context is unavailable"}},async upsertCard(a){let t=a?.params?.cardId;if(!t)return {status:"fail",error:"upsertCard requires params.cardId"};let o=l(t)??i();if(!o)return {status:"fail",error:"Board context is unavailable"};let R=await o.boardOps.upsertCard({params:{cardId:t,restart:a.params.restart===true}});if(R.status!=="success")return R;if(chunkBQUQTOPB_cjs.a(o.boardAdapter)){let P=await w(true);if(P.status!=="success")return P}return R}}}function _(){let a=()=>{let t=i();if(!t?.nonCore)throw new Error("Board non-core adapter is not configured for MCP preflight/discovery tools");return t.nonCore};return {describeTaskExecutorCapabilities(t){return a().describeTaskExecutorCapabilities(t)},validateCardPreflight(t){return a().validateCardPreflight(t)},evalCardCompute(t){return a().evalCardCompute(t)},probeSourcePreflight(t){return a().probeSourcePreflight(t)},runSourcePreflight(t){return a().runSourcePreflight(t)},simulateCardCycle(t){return a().simulateCardCycle(t)}}}function d(){return {async get(a){let t=typeof a.params?.id=="string"?a.params.id:void 0;if(t){let o=await r(t);return o?{status:"success",data:{cards:[o]}}:{status:"success",data:{cards:[]}}}return {status:"success",data:{cards:await C()}}},async set(a){let t=a.body;if(t==null)return {status:"fail",error:"set requires a body (card object or array of cards)"};let o=Array.isArray(t)?t:[t];for(let R of o){let P=R,A=typeof P.id=="string"?P.id:"";if(!A)return {status:"fail",error:"each card must have a string `id` field"};let E=n.get(A)??0,N=e[E]??i();if(!N)return {status:"fail",error:"Board context is unavailable"};let T=await N.cardStoreOps.set({body:P});if(T.status!=="success")return T;n.set(A,E);}return {status:"success",data:{count:o.length}}},async del(a){let t=[a.params?.id,...a.body?.ids??[]].filter(o=>typeof o=="string"&&!!o);if(t.length===0)return {status:"fail",error:"del requires body.ids (string[]) or params.id"};for(let o of t){let R=l(o)??i();if(!R)return {status:"fail",error:"Board context is unavailable"};let P=await R.cardStoreOps.del({params:{id:o}});if(P.status!=="success")return P;n.delete(o);}return {status:"success",data:{count:t.length}}},async patch(a){let t=typeof a.params?.id=="string"?a.params.id:void 0,o=typeof a.params?.path=="string"?a.params.path:void 0;if(!t||!o)return {status:"fail",error:"patch requires params.id and params.path"};let R=l(t)??i();return R?R.cardStoreOps.patch(a):{status:"fail",error:"Board context is unavailable"}},async appendFiles(a){let t=typeof a.params?.id=="string"?a.params.id:void 0;if(!t)return {status:"fail",error:"appendFiles requires params.id"};let o=l(t)??i();return o?o.cardStoreOps.appendFiles(a):{status:"fail",error:"Board context is unavailable"}}}}function u(){return chunk7QZ267XP_cjs.a({board:m(),nonCore:_(),cardStore:d(),chatStore:y,processAccumulated:()=>w(true),sourceFetchDone:({token:a,ref:t})=>c(a,t),sourceFetchFailed:({token:a,reason:t})=>g(a,t),uploadCardFile({cardId:a,fileName:t,contentType:o,bytes:R,suppressChatRecordWrite:P}){return b(a,t,o,R,{inChat:true,...P===true?{suppressChatRecordWrite:true}:{}})},buildFileDownloadUrl({cardId:a,fileIdx:t,storedName:o}){let R=`${k||""}${f}/cards/${encodeURIComponent(a)}/files/${t}`;return o?`${R}?sn=${encodeURIComponent(o)}`:R},readFetchedSourceJsonByRef({cardId:a,ref:t}){let o=l(a)??i();if(!o||chunkBQUQTOPB_cjs.a(o.boardAdapter))return null;let A=o.boardAdapter.resolveBlob(chunkVQCIOKJV_cjs.b(t)).trim();return A?JSON.parse(A):null}})}return {mcpBoardFacade:m,mcpNonCoreFacade:_,mcpCardStoreFacade:d,createMcpFacade:u}}exports.a=W;exports.b=V;exports.c=H;exports.d=j;exports.e=B;exports.f=D;exports.g=q;exports.h=Q;exports.i=ee;exports.j=re;exports.k=se;exports.l=oe;exports.m=de;exports.n=pe;//# sourceMappingURL=chunk-ZK3E7L4Y.cjs.map
2
+ //# sourceMappingURL=chunk-ZK3E7L4Y.cjs.map
@@ -1,2 +1,2 @@
1
- 'use strict';var chunk5XHOHTLZ_cjs=require('./chunk-5XHOHTLZ.cjs'),chunkJ6EGN6S4_cjs=require('./chunk-J6EGN6S4.cjs');require('./chunk-PBCDDO4V.cjs'),require('./chunk-JJL5VOQZ.cjs'),require('./chunk-U2N6MCD5.cjs'),require('./chunk-SFVO2LB2.cjs'),require('./chunk-G4XXRHL2.cjs'),require('./chunk-LODXIALE.cjs'),require('./chunk-IXZG74EW.cjs'),require('./chunk-HWYMZK3N.cjs'),require('./chunk-UJ7ZTV4J.cjs'),require('./chunk-YMEIPKLW.cjs'),require('./chunk-GNFE24S7.cjs');Object.defineProperty(exports,"createAzureBlobStorage",{enumerable:true,get:function(){return chunk5XHOHTLZ_cjs.d}});Object.defineProperty(exports,"createAzureQueueStorage",{enumerable:true,get:function(){return chunk5XHOHTLZ_cjs.e}});Object.defineProperty(exports,"createCosmosAtomicRelayLock",{enumerable:true,get:function(){return chunk5XHOHTLZ_cjs.c}});Object.defineProperty(exports,"createCosmosJournalStorage",{enumerable:true,get:function(){return chunk5XHOHTLZ_cjs.b}});Object.defineProperty(exports,"createCosmosKvStorage",{enumerable:true,get:function(){return chunk5XHOHTLZ_cjs.a}});Object.defineProperty(exports,"createAsyncBoardConfigStore",{enumerable:true,get:function(){return chunkJ6EGN6S4_cjs.h}});Object.defineProperty(exports,"createAsyncBoardLiveCardsPublic",{enumerable:true,get:function(){return chunkJ6EGN6S4_cjs.j}});Object.defineProperty(exports,"createAsyncBoardWorkerStore",{enumerable:true,get:function(){return chunkJ6EGN6S4_cjs.g}});Object.defineProperty(exports,"createAsyncCardStorageAdapter",{enumerable:true,get:function(){return chunkJ6EGN6S4_cjs.c}});Object.defineProperty(exports,"createAsyncCardStore",{enumerable:true,get:function(){return chunkJ6EGN6S4_cjs.d}});Object.defineProperty(exports,"createAsyncJsonStorage",{enumerable:true,get:function(){return chunkJ6EGN6S4_cjs.b}});Object.defineProperty(exports,"createAsyncStateSnapshotAdapter",{enumerable:true,get:function(){return chunkJ6EGN6S4_cjs.e}});Object.defineProperty(exports,"createAsyncStorageProvider",{enumerable:true,get:function(){return chunkJ6EGN6S4_cjs.f}});Object.defineProperty(exports,"createHostedAsyncBoardPlatformAdapter",{enumerable:true,get:function(){return chunkJ6EGN6S4_cjs.i}});Object.defineProperty(exports,"withAsyncRelayLock",{enumerable:true,get:function(){return chunkJ6EGN6S4_cjs.a}});//# sourceMappingURL=cloud-storage.cjs.map
1
+ 'use strict';var chunkR44X3RQB_cjs=require('./chunk-R44X3RQB.cjs'),chunkCMFD27ZC_cjs=require('./chunk-CMFD27ZC.cjs'),chunk37HDEW26_cjs=require('./chunk-37HDEW26.cjs');require('./chunk-PBCDDO4V.cjs'),require('./chunk-NDAKMJQK.cjs'),require('./chunk-7JVHYHT2.cjs'),require('./chunk-VQCIOKJV.cjs'),require('./chunk-G4XXRHL2.cjs'),require('./chunk-LODXIALE.cjs'),require('./chunk-IXZG74EW.cjs'),require('./chunk-HWYMZK3N.cjs'),require('./chunk-UJ7ZTV4J.cjs'),require('./chunk-YMEIPKLW.cjs'),require('./chunk-GNFE24S7.cjs');Object.defineProperty(exports,"createAzureBlobStorage",{enumerable:true,get:function(){return chunkR44X3RQB_cjs.d}});Object.defineProperty(exports,"createAzureQueueStorage",{enumerable:true,get:function(){return chunkR44X3RQB_cjs.e}});Object.defineProperty(exports,"createCosmosAtomicRelayLock",{enumerable:true,get:function(){return chunkR44X3RQB_cjs.c}});Object.defineProperty(exports,"createCosmosJournalStorage",{enumerable:true,get:function(){return chunkR44X3RQB_cjs.b}});Object.defineProperty(exports,"createCosmosKvStorage",{enumerable:true,get:function(){return chunkR44X3RQB_cjs.a}});Object.defineProperty(exports,"createAsyncBoardLiveCardsPublic",{enumerable:true,get:function(){return chunkCMFD27ZC_cjs.g}});Object.defineProperty(exports,"createAsyncCardStorageAdapter",{enumerable:true,get:function(){return chunkCMFD27ZC_cjs.c}});Object.defineProperty(exports,"createAsyncCardStore",{enumerable:true,get:function(){return chunkCMFD27ZC_cjs.d}});Object.defineProperty(exports,"createAsyncJsonStorage",{enumerable:true,get:function(){return chunkCMFD27ZC_cjs.b}});Object.defineProperty(exports,"createAsyncStateSnapshotAdapter",{enumerable:true,get:function(){return chunkCMFD27ZC_cjs.e}});Object.defineProperty(exports,"createAsyncStorageProvider",{enumerable:true,get:function(){return chunkCMFD27ZC_cjs.f}});Object.defineProperty(exports,"withAsyncRelayLock",{enumerable:true,get:function(){return chunkCMFD27ZC_cjs.a}});Object.defineProperty(exports,"createAsyncBoardConfigStore",{enumerable:true,get:function(){return chunk37HDEW26_cjs.b}});Object.defineProperty(exports,"createAsyncBoardWorkerStore",{enumerable:true,get:function(){return chunk37HDEW26_cjs.a}});Object.defineProperty(exports,"createHostedAsyncBoardPlatformAdapter",{enumerable:true,get:function(){return chunk37HDEW26_cjs.c}});//# sourceMappingURL=cloud-storage.cjs.map
2
2
  //# sourceMappingURL=cloud-storage.cjs.map
@@ -1,9 +1,9 @@
1
- import { g as AsyncJSONStorage, c as AsyncKVStorage, a as AsyncBlobStorage, b as AsyncJournalStorage, h as AsyncStorageProvider, d as AsyncAtomicRelayLock, e as AsyncQueueStorage } from './storage-async-interface-BRR4eBjx.cjs';
2
- export { w as withAsyncRelayLock } from './storage-async-interface-BRR4eBjx.cjs';
3
- import { L as LiveCard, j as CardChecksumIndex, k as CardUpsertValidation, l as CardIndex, S as StateSnapshotReadView } from './board-live-cards-public-LlVUQPL2.cjs';
4
- export { a as AsyncBoardConfigStore, A as AsyncBoardPlatformAdapter, b as AsyncBoardWorkerDeadLetterRequest, c as AsyncBoardWorkerLeasedRequest, d as AsyncBoardWorkerQueuedRequest, e as AsyncBoardWorkerRequest, f as AsyncBoardWorkerStore, H as HostedAsyncBoardPlatformAdapterOptions, g as HostedFetchLike, h as HostedFetchResponseLike, i as createAsyncBoardConfigStore, j as createAsyncBoardWorkerStore, k as createHostedAsyncBoardPlatformAdapter } from './board-platform-adapter-async-BfHmHdx2.cjs';
5
- export { A as AsyncBoardLiveCardsPublic, c as createAsyncBoardLiveCardsPublic } from './board-live-cards-public-async-Di9QB141.cjs';
6
- import { a as KindValueRef } from './storage-interface-BFiD3kyB.cjs';
1
+ import { g as AsyncJSONStorage, c as AsyncKVStorage, a as AsyncBlobStorage, b as AsyncJournalStorage, h as AsyncStorageProvider, d as AsyncAtomicRelayLock, e as AsyncQueueStorage } from './storage-async-interface-CyO-zwVQ.cjs';
2
+ export { w as withAsyncRelayLock } from './storage-async-interface-CyO-zwVQ.cjs';
3
+ import { L as LiveCard, m as CardChecksumIndex, n as CardUpsertValidation, o as CardIndex, S as StateSnapshotReadView } from './board-live-cards-public-BT5HrgqZ.cjs';
4
+ export { a as AsyncBoardConfigStore, A as AsyncBoardPlatformAdapter, b as AsyncBoardWorkerDeadLetterRequest, c as AsyncBoardWorkerLeasedRequest, d as AsyncBoardWorkerQueuedRequest, e as AsyncBoardWorkerRequest, f as AsyncBoardWorkerStore, H as HostedAsyncBoardPlatformAdapterOptions, g as HostedFetchLike, h as HostedFetchResponseLike, i as createAsyncBoardConfigStore, j as createAsyncBoardWorkerStore, k as createHostedAsyncBoardPlatformAdapter } from './board-platform-adapter-async-BZIftm36.cjs';
5
+ export { A as AsyncBoardLiveCardsPublic, c as createAsyncBoardLiveCardsPublic } from './board-live-cards-public-async-CYjr4mgX.cjs';
6
+ import { a as KindValueRef } from './storage-interface-D-iEiTJA.cjs';
7
7
  import './execution-refs.cjs';
8
8
  import './types-BBhqYGhE.cjs';
9
9
 
@@ -1,9 +1,9 @@
1
- import { g as AsyncJSONStorage, c as AsyncKVStorage, a as AsyncBlobStorage, b as AsyncJournalStorage, h as AsyncStorageProvider, d as AsyncAtomicRelayLock, e as AsyncQueueStorage } from './storage-async-interface-DhlOVPSp.js';
2
- export { w as withAsyncRelayLock } from './storage-async-interface-DhlOVPSp.js';
3
- import { L as LiveCard, j as CardChecksumIndex, k as CardUpsertValidation, l as CardIndex, S as StateSnapshotReadView } from './board-live-cards-public-JNRKfBZy.js';
4
- export { a as AsyncBoardConfigStore, A as AsyncBoardPlatformAdapter, b as AsyncBoardWorkerDeadLetterRequest, c as AsyncBoardWorkerLeasedRequest, d as AsyncBoardWorkerQueuedRequest, e as AsyncBoardWorkerRequest, f as AsyncBoardWorkerStore, H as HostedAsyncBoardPlatformAdapterOptions, g as HostedFetchLike, h as HostedFetchResponseLike, i as createAsyncBoardConfigStore, j as createAsyncBoardWorkerStore, k as createHostedAsyncBoardPlatformAdapter } from './board-platform-adapter-async-DYahVzIK.js';
5
- export { A as AsyncBoardLiveCardsPublic, c as createAsyncBoardLiveCardsPublic } from './board-live-cards-public-async-fwd1QI82.js';
6
- import { a as KindValueRef } from './storage-interface-BFiD3kyB.js';
1
+ import { g as AsyncJSONStorage, c as AsyncKVStorage, a as AsyncBlobStorage, b as AsyncJournalStorage, h as AsyncStorageProvider, d as AsyncAtomicRelayLock, e as AsyncQueueStorage } from './storage-async-interface-CG0bMqvE.js';
2
+ export { w as withAsyncRelayLock } from './storage-async-interface-CG0bMqvE.js';
3
+ import { L as LiveCard, m as CardChecksumIndex, n as CardUpsertValidation, o as CardIndex, S as StateSnapshotReadView } from './board-live-cards-public-DSRamFm8.js';
4
+ export { a as AsyncBoardConfigStore, A as AsyncBoardPlatformAdapter, b as AsyncBoardWorkerDeadLetterRequest, c as AsyncBoardWorkerLeasedRequest, d as AsyncBoardWorkerQueuedRequest, e as AsyncBoardWorkerRequest, f as AsyncBoardWorkerStore, H as HostedAsyncBoardPlatformAdapterOptions, g as HostedFetchLike, h as HostedFetchResponseLike, i as createAsyncBoardConfigStore, j as createAsyncBoardWorkerStore, k as createHostedAsyncBoardPlatformAdapter } from './board-platform-adapter-async-JP9V-U5E.js';
5
+ export { A as AsyncBoardLiveCardsPublic, c as createAsyncBoardLiveCardsPublic } from './board-live-cards-public-async-DlyC3PgC.js';
6
+ import { a as KindValueRef } from './storage-interface-D-iEiTJA.js';
7
7
  import './execution-refs.js';
8
8
  import './types-BBhqYGhE.js';
9
9
 
@@ -1,2 +1,2 @@
1
- export{d as createAzureBlobStorage,e as createAzureQueueStorage,c as createCosmosAtomicRelayLock,b as createCosmosJournalStorage,a as createCosmosKvStorage}from'./chunk-S44QZUDX.js';export{h as createAsyncBoardConfigStore,j as createAsyncBoardLiveCardsPublic,g as createAsyncBoardWorkerStore,c as createAsyncCardStorageAdapter,d as createAsyncCardStore,b as createAsyncJsonStorage,e as createAsyncStateSnapshotAdapter,f as createAsyncStorageProvider,i as createHostedAsyncBoardPlatformAdapter,a as withAsyncRelayLock}from'./chunk-PRKRXAVN.js';import'./chunk-HEEDJEKM.js';import'./chunk-JH37NJGP.js';import'./chunk-XQRNDX4Q.js';import'./chunk-BQS3EIEK.js';import'./chunk-VGT3TRQG.js';import'./chunk-WDPOGXTY.js';import'./chunk-JMDHDY6M.js';import'./chunk-3KC6LBOG.js';import'./chunk-MNEOJWPS.js';import'./chunk-KBELAKIY.js';import'./chunk-FW4363Y4.js';//# sourceMappingURL=cloud-storage.js.map
1
+ export{d as createAzureBlobStorage,e as createAzureQueueStorage,c as createCosmosAtomicRelayLock,b as createCosmosJournalStorage,a as createCosmosKvStorage}from'./chunk-7BTZCOT5.js';export{g as createAsyncBoardLiveCardsPublic,c as createAsyncCardStorageAdapter,d as createAsyncCardStore,b as createAsyncJsonStorage,e as createAsyncStateSnapshotAdapter,f as createAsyncStorageProvider,a as withAsyncRelayLock}from'./chunk-GU3T75C4.js';export{b as createAsyncBoardConfigStore,a as createAsyncBoardWorkerStore,c as createHostedAsyncBoardPlatformAdapter}from'./chunk-NNSBBO5R.js';import'./chunk-HEEDJEKM.js';import'./chunk-DOFNXJ4C.js';import'./chunk-ANKA7HEJ.js';import'./chunk-44L64VQ2.js';import'./chunk-VGT3TRQG.js';import'./chunk-WDPOGXTY.js';import'./chunk-JMDHDY6M.js';import'./chunk-3KC6LBOG.js';import'./chunk-MNEOJWPS.js';import'./chunk-KBELAKIY.js';import'./chunk-FW4363Y4.js';//# sourceMappingURL=cloud-storage.js.map
2
2
  //# sourceMappingURL=cloud-storage.js.map
@@ -1,2 +1,2 @@
1
- 'use strict';var chunkU2N6MCD5_cjs=require('./chunk-U2N6MCD5.cjs');require('./chunk-SFVO2LB2.cjs'),require('./chunk-GNFE24S7.cjs');Object.defineProperty(exports,"executionRefFromScriptPath",{enumerable:true,get:function(){return chunkU2N6MCD5_cjs.a}});Object.defineProperty(exports,"parseExecutionRef",{enumerable:true,get:function(){return chunkU2N6MCD5_cjs.c}});Object.defineProperty(exports,"serializeExecutionRef",{enumerable:true,get:function(){return chunkU2N6MCD5_cjs.b}});//# sourceMappingURL=execution-refs.cjs.map
1
+ 'use strict';var chunk7JVHYHT2_cjs=require('./chunk-7JVHYHT2.cjs');require('./chunk-VQCIOKJV.cjs'),require('./chunk-GNFE24S7.cjs');Object.defineProperty(exports,"executionRefFromScriptPath",{enumerable:true,get:function(){return chunk7JVHYHT2_cjs.a}});Object.defineProperty(exports,"parseExecutionRef",{enumerable:true,get:function(){return chunk7JVHYHT2_cjs.c}});Object.defineProperty(exports,"serializeExecutionRef",{enumerable:true,get:function(){return chunk7JVHYHT2_cjs.b}});//# sourceMappingURL=execution-refs.cjs.map
2
2
  //# sourceMappingURL=execution-refs.cjs.map
@@ -1,2 +1,2 @@
1
- export{a as executionRefFromScriptPath,c as parseExecutionRef,b as serializeExecutionRef}from'./chunk-XQRNDX4Q.js';import'./chunk-BQS3EIEK.js';import'./chunk-FW4363Y4.js';//# sourceMappingURL=execution-refs.js.map
1
+ export{a as executionRefFromScriptPath,c as parseExecutionRef,b as serializeExecutionRef}from'./chunk-ANKA7HEJ.js';import'./chunk-44L64VQ2.js';import'./chunk-FW4363Y4.js';//# sourceMappingURL=execution-refs.js.map
2
2
  //# sourceMappingURL=execution-refs.js.map
@@ -1,3 +1,3 @@
1
- 'use strict';require('../chunk-GNFE24S7.cjs');var h=new TextEncoder;function y(o){let r="";for(let i of h.encode(String(o)))r+=String.fromCharCode(i);return (typeof btoa=="function"?btoa(r):Buffer.from(r,"binary").toString("base64")).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}function p(o){let r=String(o).replace(/-/g,"+").replace(/_/g,"/")+"=".repeat((4-String(o).length%4)%4),s=typeof atob=="function"?atob(r):Buffer.from(r,"base64").toString("binary"),i=new Uint8Array(s.length);for(let n=0;n<s.length;n+=1)i[n]=s.charCodeAt(n);return new TextDecoder().decode(i)}function g(...o){return o.map(r=>String(r??"").trim()).filter(Boolean).join("/")}function u(o){return !!(o&&typeof o=="object"&&o.code==="storage/object-not-found")}function S(o,r){let s=o.ref(r);function i(e){return s.child(y(e))}async function n(e){let t=await e.getDownloadURL(),c=await fetch(t,{cache:"no-store"});if(!c.ok)throw new Error(`Failed to fetch storage object ${e.fullPath}: ${c.status}`);return c.text()}async function a(e){let t=await e.getDownloadURL(),c=await fetch(t,{cache:"no-store"});if(!c.ok)throw new Error(`Failed to fetch storage object ${e.fullPath}: ${c.status}`);return new Uint8Array(await c.arrayBuffer())}async function l(){let e=[];async function t(c){let d=await c.listAll();for(let f of d.prefixes)await t(f);for(let f of d.items){let w=f.name||f.fullPath.slice(s.fullPath.length+1);e.push(p(w));}}try{await t(s);}catch(c){if(u(c))return [];throw c}return e.sort()}return {async read(e){try{return await n(i(e))}catch(t){if(u(t))return null;throw t}},async write(e,t){await i(e).putString(String(t),"raw",{contentType:"text/plain; charset=utf-8"});},async exists(e){try{return await i(e).getMetadata(),!0}catch(t){if(u(t))return false;throw t}},async remove(e){try{await i(e).delete();}catch(t){if(!u(t))throw t}},async readBytes(e){try{return await a(i(e))}catch(t){if(u(t))return null;throw t}},async writeBytes(e,t){await i(e).put(t,{contentType:"application/octet-stream"});},async listKeys(e=""){let t=await l();return e?t.filter(c=>c.startsWith(e)):t},async stat(e){try{let t=await i(e).getMetadata();return {key:e,size:Number(t.size??0),updatedAt:t.updated??void 0,contentType:t.contentType??void 0}}catch(t){if(u(t))return null;throw t}},keyRef(e){return {kind:"firebase-storage",value:g(r,y(e))}}}}function b(o,r){let s=S(o,r);async function i(n="scratch-",a=""){let l=globalThis.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2,10)}`;return `${n}${l}${a}`}return {...s,getUniqueKey:i,async create(n,a="scratch-",l=""){let e=await i(a,l);return await s.write(e,n),e},keyRef(n){return {kind:"firebase-storage",value:g(r,y(n))}},config:{async get(n){let a=await s.read(`__config__/${n}`);if(a==null)return null;try{return JSON.parse(a)}catch{return a}},async set(n,a){await s.write(`__config__/${n}`,JSON.stringify(a));}}}}function m(o,r,s){let i=g("boards",s,"blobs"),n=g("boards",s,"scratch");return {...o,blobStorage(a){return S(r,g(i,a||"root"))},scratchStorage(){return b(r,n)},scratchStorageForRef(){return b(r,n)},async resolveBlob(a){if(a?.kind==="firebase-storage"&&typeof a.value=="string"){let l=await r.ref(a.value).getDownloadURL(),e=await fetch(l,{cache:"no-store"});if(!e.ok)throw new Error(`Failed to resolve storage blob ${a.value}: ${e.status}`);return e.text()}return typeof o.resolveBlob=="function"?o.resolveBlob(a):null}}}
2
- exports.createFirebaseStorageBlobStore=S;exports.createFirebaseStorageScratchStore=b;exports.wrapWithFirebaseStorageBlobs=m;//# sourceMappingURL=index.cjs.map
1
+ 'use strict';var chunkVQCIOKJV_cjs=require('../chunk-VQCIOKJV.cjs');require('../chunk-GNFE24S7.cjs');var p=new TextEncoder;function d(n){let a="";for(let o of p.encode(String(n)))a+=String.fromCharCode(o);return (typeof btoa=="function"?btoa(a):Buffer.from(a,"binary").toString("base64")).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}function m(n){let a=String(n).replace(/-/g,"+").replace(/_/g,"/")+"=".repeat((4-String(n).length%4)%4),c=typeof atob=="function"?atob(a):Buffer.from(a,"base64").toString("binary"),o=new Uint8Array(c.length);for(let i=0;i<c.length;i+=1)o[i]=c.charCodeAt(i);return new TextDecoder().decode(o)}function y(...n){return n.map(a=>String(a??"").trim()).filter(Boolean).join("/")}function g(n){return !!(n&&typeof n=="object"&&n.code==="storage/object-not-found")}function w(n,a){let c=n.ref(a);function o(e){return c.child(d(e))}async function i(e){let t=await e.getDownloadURL(),s=await fetch(t,{cache:"no-store"});if(!s.ok)throw new Error(`Failed to fetch storage object ${e.fullPath}: ${s.status}`);return s.text()}async function r(e){let t=await e.getDownloadURL(),s=await fetch(t,{cache:"no-store"});if(!s.ok)throw new Error(`Failed to fetch storage object ${e.fullPath}: ${s.status}`);return new Uint8Array(await s.arrayBuffer())}async function l(){let e=[];async function t(s){let f=await s.listAll();for(let u of f.prefixes)await t(u);for(let u of f.items){let b=u.name||u.fullPath.slice(c.fullPath.length+1);e.push(m(b));}}try{await t(c);}catch(s){if(g(s))return [];throw s}return e.sort()}return {async read(e){try{return await i(o(e))}catch(t){if(g(t))return null;throw t}},async write(e,t){await o(e).putString(String(t),"raw",{contentType:"text/plain; charset=utf-8"});},async exists(e){try{return await o(e).getMetadata(),!0}catch(t){if(g(t))return false;throw t}},async remove(e){try{await o(e).delete();}catch(t){if(!g(t))throw t}},async readBytes(e){try{return await r(o(e))}catch(t){if(g(t))return null;throw t}},async writeBytes(e,t){await o(e).put(t,{contentType:"application/octet-stream"});},async listKeys(e=""){let t=await l();return e?t.filter(s=>s.startsWith(e)):t},async stat(e){try{let t=await o(e).getMetadata();return {key:e,size:Number(t.size??0),updatedAt:t.updated??void 0,contentType:t.contentType??void 0}}catch(t){if(g(t))return null;throw t}},keyRef(e){return {kind:"firebase-storage",value:y(a,d(e))}},async renameKey(e,t){let s=o(e),f,u;try{u=await s.getMetadata(),f=await r(s);}catch(b){if(g(b))return false;throw b}await o(t).put(f,{contentType:u.contentType??"application/octet-stream"});try{await s.delete();}catch{}return true}}}function h(n,a){let c=w(n,a);async function o(i="scratch-",r=""){let l=globalThis.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2,10)}`;return `${i}${l}${r}`}return {...c,getUniqueKey:o,async create(i,r="scratch-",l=""){let e=await o(r,l);return await c.write(e,i),e},keyRef(i){return {kind:"firebase-storage",value:y(a,d(i))}},config:{async get(i){let r=await c.read(`__config__/${i}`);if(r==null)return null;try{return JSON.parse(r)}catch{return r}},async set(i,r){await c.write(`__config__/${i}`,JSON.stringify(r));}}}}function F(n,a,c){let o=y("boards",c,"blobs"),i=y("boards",c,"scratch");return {...n,blobStorage(r){return w(a,y(o,r||"root"))},blobStorageForRef(r){let l=chunkVQCIOKJV_cjs.b(r);return l.kind==="firebase-storage"?w(a,l.value):n.blobStorageForRef(r)},scratchStorage(){return h(a,i)},scratchStorageForRef(){return h(a,i)},async resolveBlob(r){if(r?.kind==="firebase-storage"&&typeof r.value=="string"){let l=await a.ref(r.value).getDownloadURL(),e=await fetch(l,{cache:"no-store"});if(!e.ok)throw new Error(`Failed to resolve storage blob ${r.value}: ${e.status}`);return e.text()}return typeof n.resolveBlob=="function"?n.resolveBlob(r):null}}}
2
+ exports.createFirebaseStorageBlobStore=w;exports.createFirebaseStorageScratchStore=h;exports.wrapWithFirebaseStorageBlobs=F;//# sourceMappingURL=index.cjs.map
3
3
  //# sourceMappingURL=index.cjs.map
@@ -1,5 +1,5 @@
1
- import { a as KindValueRef } from '../storage-interface-BFiD3kyB.cjs';
2
- import { a as AsyncBlobStorage, f as AsyncScratchStorage } from '../storage-async-interface-BRR4eBjx.cjs';
1
+ import { a as KindValueRef } from '../storage-interface-D-iEiTJA.cjs';
2
+ import { a as AsyncBlobStorage, f as AsyncScratchStorage } from '../storage-async-interface-CyO-zwVQ.cjs';
3
3
 
4
4
  /**
5
5
  * firebase-storage — browser-safe Firebase Storage (Google Cloud Storage) blob
@@ -1,5 +1,5 @@
1
- import { a as KindValueRef } from '../storage-interface-BFiD3kyB.js';
2
- import { a as AsyncBlobStorage, f as AsyncScratchStorage } from '../storage-async-interface-DhlOVPSp.js';
1
+ import { a as KindValueRef } from '../storage-interface-D-iEiTJA.js';
2
+ import { a as AsyncBlobStorage, f as AsyncScratchStorage } from '../storage-async-interface-CG0bMqvE.js';
3
3
 
4
4
  /**
5
5
  * firebase-storage — browser-safe Firebase Storage (Google Cloud Storage) blob
@@ -1,3 +1,3 @@
1
- import'../chunk-FW4363Y4.js';var h=new TextEncoder;function y(o){let r="";for(let i of h.encode(String(o)))r+=String.fromCharCode(i);return (typeof btoa=="function"?btoa(r):Buffer.from(r,"binary").toString("base64")).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}function p(o){let r=String(o).replace(/-/g,"+").replace(/_/g,"/")+"=".repeat((4-String(o).length%4)%4),s=typeof atob=="function"?atob(r):Buffer.from(r,"base64").toString("binary"),i=new Uint8Array(s.length);for(let n=0;n<s.length;n+=1)i[n]=s.charCodeAt(n);return new TextDecoder().decode(i)}function g(...o){return o.map(r=>String(r??"").trim()).filter(Boolean).join("/")}function u(o){return !!(o&&typeof o=="object"&&o.code==="storage/object-not-found")}function S(o,r){let s=o.ref(r);function i(e){return s.child(y(e))}async function n(e){let t=await e.getDownloadURL(),c=await fetch(t,{cache:"no-store"});if(!c.ok)throw new Error(`Failed to fetch storage object ${e.fullPath}: ${c.status}`);return c.text()}async function a(e){let t=await e.getDownloadURL(),c=await fetch(t,{cache:"no-store"});if(!c.ok)throw new Error(`Failed to fetch storage object ${e.fullPath}: ${c.status}`);return new Uint8Array(await c.arrayBuffer())}async function l(){let e=[];async function t(c){let d=await c.listAll();for(let f of d.prefixes)await t(f);for(let f of d.items){let w=f.name||f.fullPath.slice(s.fullPath.length+1);e.push(p(w));}}try{await t(s);}catch(c){if(u(c))return [];throw c}return e.sort()}return {async read(e){try{return await n(i(e))}catch(t){if(u(t))return null;throw t}},async write(e,t){await i(e).putString(String(t),"raw",{contentType:"text/plain; charset=utf-8"});},async exists(e){try{return await i(e).getMetadata(),!0}catch(t){if(u(t))return false;throw t}},async remove(e){try{await i(e).delete();}catch(t){if(!u(t))throw t}},async readBytes(e){try{return await a(i(e))}catch(t){if(u(t))return null;throw t}},async writeBytes(e,t){await i(e).put(t,{contentType:"application/octet-stream"});},async listKeys(e=""){let t=await l();return e?t.filter(c=>c.startsWith(e)):t},async stat(e){try{let t=await i(e).getMetadata();return {key:e,size:Number(t.size??0),updatedAt:t.updated??void 0,contentType:t.contentType??void 0}}catch(t){if(u(t))return null;throw t}},keyRef(e){return {kind:"firebase-storage",value:g(r,y(e))}}}}function b(o,r){let s=S(o,r);async function i(n="scratch-",a=""){let l=globalThis.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2,10)}`;return `${n}${l}${a}`}return {...s,getUniqueKey:i,async create(n,a="scratch-",l=""){let e=await i(a,l);return await s.write(e,n),e},keyRef(n){return {kind:"firebase-storage",value:g(r,y(n))}},config:{async get(n){let a=await s.read(`__config__/${n}`);if(a==null)return null;try{return JSON.parse(a)}catch{return a}},async set(n,a){await s.write(`__config__/${n}`,JSON.stringify(a));}}}}function m(o,r,s){let i=g("boards",s,"blobs"),n=g("boards",s,"scratch");return {...o,blobStorage(a){return S(r,g(i,a||"root"))},scratchStorage(){return b(r,n)},scratchStorageForRef(){return b(r,n)},async resolveBlob(a){if(a?.kind==="firebase-storage"&&typeof a.value=="string"){let l=await r.ref(a.value).getDownloadURL(),e=await fetch(l,{cache:"no-store"});if(!e.ok)throw new Error(`Failed to resolve storage blob ${a.value}: ${e.status}`);return e.text()}return typeof o.resolveBlob=="function"?o.resolveBlob(a):null}}}
2
- export{S as createFirebaseStorageBlobStore,b as createFirebaseStorageScratchStore,m as wrapWithFirebaseStorageBlobs};//# sourceMappingURL=index.js.map
1
+ import {b}from'../chunk-44L64VQ2.js';import'../chunk-FW4363Y4.js';var p=new TextEncoder;function d(n){let a="";for(let o of p.encode(String(n)))a+=String.fromCharCode(o);return (typeof btoa=="function"?btoa(a):Buffer.from(a,"binary").toString("base64")).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}function m(n){let a=String(n).replace(/-/g,"+").replace(/_/g,"/")+"=".repeat((4-String(n).length%4)%4),c=typeof atob=="function"?atob(a):Buffer.from(a,"base64").toString("binary"),o=new Uint8Array(c.length);for(let i=0;i<c.length;i+=1)o[i]=c.charCodeAt(i);return new TextDecoder().decode(o)}function y(...n){return n.map(a=>String(a??"").trim()).filter(Boolean).join("/")}function g(n){return !!(n&&typeof n=="object"&&n.code==="storage/object-not-found")}function w(n,a){let c=n.ref(a);function o(e){return c.child(d(e))}async function i(e){let t=await e.getDownloadURL(),s=await fetch(t,{cache:"no-store"});if(!s.ok)throw new Error(`Failed to fetch storage object ${e.fullPath}: ${s.status}`);return s.text()}async function r(e){let t=await e.getDownloadURL(),s=await fetch(t,{cache:"no-store"});if(!s.ok)throw new Error(`Failed to fetch storage object ${e.fullPath}: ${s.status}`);return new Uint8Array(await s.arrayBuffer())}async function l(){let e=[];async function t(s){let f=await s.listAll();for(let u of f.prefixes)await t(u);for(let u of f.items){let b=u.name||u.fullPath.slice(c.fullPath.length+1);e.push(m(b));}}try{await t(c);}catch(s){if(g(s))return [];throw s}return e.sort()}return {async read(e){try{return await i(o(e))}catch(t){if(g(t))return null;throw t}},async write(e,t){await o(e).putString(String(t),"raw",{contentType:"text/plain; charset=utf-8"});},async exists(e){try{return await o(e).getMetadata(),!0}catch(t){if(g(t))return false;throw t}},async remove(e){try{await o(e).delete();}catch(t){if(!g(t))throw t}},async readBytes(e){try{return await r(o(e))}catch(t){if(g(t))return null;throw t}},async writeBytes(e,t){await o(e).put(t,{contentType:"application/octet-stream"});},async listKeys(e=""){let t=await l();return e?t.filter(s=>s.startsWith(e)):t},async stat(e){try{let t=await o(e).getMetadata();return {key:e,size:Number(t.size??0),updatedAt:t.updated??void 0,contentType:t.contentType??void 0}}catch(t){if(g(t))return null;throw t}},keyRef(e){return {kind:"firebase-storage",value:y(a,d(e))}},async renameKey(e,t){let s=o(e),f,u;try{u=await s.getMetadata(),f=await r(s);}catch(b){if(g(b))return false;throw b}await o(t).put(f,{contentType:u.contentType??"application/octet-stream"});try{await s.delete();}catch{}return true}}}function h(n,a){let c=w(n,a);async function o(i="scratch-",r=""){let l=globalThis.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2,10)}`;return `${i}${l}${r}`}return {...c,getUniqueKey:o,async create(i,r="scratch-",l=""){let e=await o(r,l);return await c.write(e,i),e},keyRef(i){return {kind:"firebase-storage",value:y(a,d(i))}},config:{async get(i){let r=await c.read(`__config__/${i}`);if(r==null)return null;try{return JSON.parse(r)}catch{return r}},async set(i,r){await c.write(`__config__/${i}`,JSON.stringify(r));}}}}function F(n,a,c){let o=y("boards",c,"blobs"),i=y("boards",c,"scratch");return {...n,blobStorage(r){return w(a,y(o,r||"root"))},blobStorageForRef(r){let l=b(r);return l.kind==="firebase-storage"?w(a,l.value):n.blobStorageForRef(r)},scratchStorage(){return h(a,i)},scratchStorageForRef(){return h(a,i)},async resolveBlob(r){if(r?.kind==="firebase-storage"&&typeof r.value=="string"){let l=await a.ref(r.value).getDownloadURL(),e=await fetch(l,{cache:"no-store"});if(!e.ok)throw new Error(`Failed to resolve storage blob ${r.value}: ${e.status}`);return e.text()}return typeof n.resolveBlob=="function"?n.resolveBlob(r):null}}}
2
+ export{w as createFirebaseStorageBlobStore,h as createFirebaseStorageScratchStore,F as wrapWithFirebaseStorageBlobs};//# sourceMappingURL=index.js.map
3
3
  //# sourceMappingURL=index.js.map
@@ -1,3 +1,3 @@
1
- 'use strict';var chunkIPLSRN6P_cjs=require('../chunk-IPLSRN6P.cjs'),chunkFO4KNVU7_cjs=require('../chunk-FO4KNVU7.cjs');require('../chunk-NKIQRCOM.cjs'),require('../chunk-5XHOHTLZ.cjs');var chunkJ6EGN6S4_cjs=require('../chunk-J6EGN6S4.cjs');require('../chunk-PBCDDO4V.cjs'),require('../chunk-JJL5VOQZ.cjs'),require('../chunk-U2N6MCD5.cjs');var chunkSFVO2LB2_cjs=require('../chunk-SFVO2LB2.cjs');require('../chunk-G4XXRHL2.cjs'),require('../chunk-LODXIALE.cjs');var chunkIXZG74EW_cjs=require('../chunk-IXZG74EW.cjs');require('../chunk-HWYMZK3N.cjs'),require('../chunk-UJ7ZTV4J.cjs'),require('../chunk-YMEIPKLW.cjs'),require('../chunk-GNFE24S7.cjs');function x(e){return {status:"success",data:e}}function b(e){return {status:"fail",error:e}}function _(e){return {status:"error",error:e instanceof Error?e.message:String(e)}}function P(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:{}}function ce(e,r={}){let n=()=>chunkJ6EGN6S4_cjs.h(e.kvStorage("config"));async function t(){return await n().readTaskExecutorRef().catch(()=>{})}async function s(c,a,i){if(!r.nonCoreTaskExecutor)throw new Error(`${c} is not supported on the hosted Firestore runtime yet`);let y=await r.nonCoreTaskExecutor({subcommand:c,...a!==void 0?{input:typeof a=="string"?a:JSON.stringify(a)}:{},...i!==void 0?{timeoutMs:i}:{}});return P(y)}async function o(c){try{if(!c.body||typeof c.body!="object"||Array.isArray(c.body))return b("validateCardPreflight requires card JSON object in body");let a=c.body,i=a["card-content"]??a,y=typeof i.id=="string"?i.id:"(unknown)",f=chunkFO4KNVU7_cjs.a(i),p=Array.isArray(i.source_defs)&&i.source_defs.length>0,u=[...f.issues];if(p)if(r.nonCoreTaskExecutor)for(let m of i.source_defs){let d=typeof m.bindTo=="string"?m.bindTo:"(unknown)";try{let A=await s("validate-source-def",m,1e4);if(A.ok!==!0&&Array.isArray(A.errors))for(let C of A.errors)typeof C=="string"&&C&&u.push(`source "${d}": ${C}`);}catch(A){u.push(`source "${d}": executor validate-source-def failed \u2014 ${A instanceof Error?A.message:String(A)}`);}}else await t()&&u.push("executor-backed source_def preflight is not supported on the hosted Firestore runtime yet");return x({cardId:y,isValid:u.length===0,issues:u})}catch(a){return _(a)}}function l(c){try{if(!c.body||typeof c.body!="object"||Array.isArray(c.body))return b("evalCardCompute requires a JSON object in body");let a=c.body,i=a["card-content"]??a,y=typeof i.id=="string"?i.id:"(unknown)",f=a["mock-fetched-sources"]??{},p=a["mock-requires"]??{},u=i.compute;if(!u||!Array.isArray(u)||u.length===0)return x({cardId:y,ok:!0,computed_values:{},errors:[]});let m={id:y,card_data:i.card_data??{},requires:p,source_defs:i.source_defs,compute:u},d=chunkIXZG74EW_cjs.a.runSync(m,{sourcesData:f});return x({cardId:y,ok:(d.errors??[]).length===0,computed_values:d.node.computed_values??{},errors:d.errors??[]})}catch(a){return _(a)}}async function g(c){return await t(),b(`${c} is not supported on the hosted Firestore runtime yet`)}async function S(){try{return r.nonCoreTaskExecutor?x(await s("describe-capabilities",void 0,1e4)):await g("describeTaskExecutorCapabilities")}catch(c){return _(c)}}async function E(c){try{if(!r.nonCoreTaskExecutor)return await g("probeSourcePreflight");if(!c.body||typeof c.body!="object"||Array.isArray(c.body))return b("probeSourcePreflight requires card JSON object in body");let a=c.body,i=a["card-content"]??a,y=P(a["mock-projections"]??{}),f=c.params?.sourceIdx,p=Array.isArray(i.source_defs)?i.source_defs:[];if(f===void 0)return b("probeSourcePreflight requires params.sourceIdx");if(f<0||f>=p.length)return b(`sourceIdx ${f} out of range (card has ${p.length} source(s))`);let u=p[f],m=typeof u.bindTo=="string"?u.bindTo:"source",d=await s("probe-source-preflight",{...u,_projections:y},u.timeout??6e4);return d.ok!==!0?b(typeof d.error=="string"?d.error:"Preflight probe failed"):x({bindTo:m,reachable:d.reachable,latencyMs:d.latencyMs,...typeof d.note=="string"?{note:d.note}:{}})}catch(a){return _(a)}}async function j(c){try{if(!r.nonCoreTaskExecutor)return await g("runSourcePreflight");if(!c.body||typeof c.body!="object"||Array.isArray(c.body))return b("runSourcePreflight requires card JSON object in body");let a=c.body,i=a["card-content"]??a,y=P(a["mock-projections"]??{}),f=c.params?.sourceIdx,p=Array.isArray(i.source_defs)?i.source_defs:[];if(f===void 0)return b("runSourcePreflight requires params.sourceIdx");if(f<0||f>=p.length)return b(`sourceIdx ${f} out of range (card has ${p.length} source(s))`);let u=p[f],m=typeof u.bindTo=="string"?u.bindTo:"source",d=await s("run-source-preflight",{...u,_projections:y},u.timeout??6e4);return d.ok!==!0?x({bindTo:m,ok:!1,result:null,issues:[typeof d.error=="string"?d.error:"Preflight run failed"]}):x({bindTo:m,ok:!0,result:Object.prototype.hasOwnProperty.call(d,"resultValue")?d.resultValue:null,issues:[]})}catch(a){return _(a)}}async function $(c){try{if(!c.body||typeof c.body!="object"||Array.isArray(c.body))return b("simulateCardCycle requires a JSON object in body");let a=c.body,i=a["card-content"]??a,y=typeof i.id=="string"?i.id:"(unknown)",f=P(a["mock-fetched-sources"]??{}),p=P(a["mock-requires"]??{}),u=await o({body:{"card-content":i}}),m=u.status==="success"?{isValid:u.data.isValid,issues:u.data.issues}:{isValid:!1,issues:[u.status==="fail"?u.error:"internal error"]},d=Array.isArray(i.source_defs)?i.source_defs:[],A=P(i.card_data??{}),C=[],I=[];if(d.length>0){C=chunkIXZG74EW_cjs.a.enrichSourcesSync(d,{card_data:A,requires:p});for(let h of C){let R=h.projections,T=h._projections;if(R&&T){for(let k of Object.keys(R))if(T[k]===void 0){let ae=typeof h.bindTo=="string"?h.bindTo:"(unknown)";I.push({bindTo:ae,key:k,error:`Projection "${k}" resolved to undefined`});}}}}let L=[],N={...f};for(let h=0;h<C.length;h+=1){let R=C[h],T=typeof R.bindTo=="string"?R.bindTo:`source_${h}`;if(!r.nonCoreTaskExecutor){L.push({bindTo:T,skipped:!0,error:"No task executor configured"});continue}try{let k=await s("run-source-preflight",R,R.timeout??6e4);k.ok===!0&&!Object.prototype.hasOwnProperty.call(f,T)&&Object.prototype.hasOwnProperty.call(k,"resultValue")&&(N[T]=k.resultValue),L.push({bindTo:T,reachable:k.reachable,latencyMs:k.latencyMs,...k.ok===!0?{}:{error:typeof k.error=="string"?k.error:"Preflight run failed"}});}catch{L.push({bindTo:T,skipped:!0,error:"Executor does not support run-source-preflight"});}}let D=i.compute,U={},V=[];if(D&&Array.isArray(D)&&D.length>0){let h={id:y,card_data:A,requires:p,source_defs:i.source_defs,compute:D},R=chunkIXZG74EW_cjs.a.runSync(h,{sourcesData:N});U=R.node.computed_values??{},V=R.errors??[];}return x({cardId:y,ok:m.isValid&&I.length===0&&V.length===0&&L.every(h=>!h.error),validation:m,source_probes:L,projection_errors:I,fetched_sources:N,computed_values:U,compute_errors:V})}catch(a){return _(a)}}return {describeTaskExecutorCapabilities:S,validateCardPreflight:o,evalCardCompute:l,probeSourcePreflight:E,runSourcePreflight:j,simulateCardCycle:$}}function te(e){let r="";for(let n=0;n<e.length;n++)r+=String.fromCharCode(e[n]);return btoa(r)}function ue(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 de(e){let r=new TextEncoder().encode(e);return te(r).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}function le(e){return chunkIPLSRN6P_cjs.a(e).slice(0,16)}function ne(){return globalThis.crypto&&typeof globalThis.crypto.randomUUID=="function"?globalThis.crypto.randomUUID():`${Date.now().toString(16)}-${Math.random().toString(16).slice(2,10)}`}function w(e){return de(String(e))}function B(){let e=String(Date.now()).padStart(13,"0"),r=Math.random().toString(36).slice(2,10).padEnd(8,"0");return `${e}-${r}`}function oe(e){try{return chunkSFVO2LB2_cjs.b(e)}catch{return null}}function Y(e,r){let n=oe(e);return n?.kind==="firestore"&&n.value?n.value:r}function v(e){if(e===void 0)return null;if(Array.isArray(e))return e.map(r=>v(r===void 0?null:r));if(e&&typeof e=="object"){let r=Object.entries(e).filter(([,n])=>n!==void 0).map(([n,t])=>[n,v(t)]);return Object.fromEntries(r)}return e}function se(e,r){return e.collection("boards").doc(r)}function F(e,r,n){return se(e,r).collection(n)}function Q(e){return {kind:"firestore",value:String(e)}}function q(e){return chunkSFVO2LB2_cjs.a(Q(e))}function fe(e){return {baseRef:Q(`boards/${e}`),cardStoreRef:q(`boards/${e}/cards`),outputsStoreRef:q(`boards/${e}/runtime-out`),scratchStoreRef:q(`boards/${e}/scratch`),archiveStoreRef:q(`boards/${e}/archive`),chatStoreRef:q(`boards/${e}/chat`),artifactsStoreRef:q(`boards/${e}/files`)}}function Z(e){return {async read(r){let n=await e.doc(w(r)).get();return n.exists?n.data()?.value??null:null},async write(r,n){await e.doc(w(r)).set(v({k:r,value:n}));},async delete(r){await e.doc(w(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 ie(e){return {async append(r){let n=B();return await e.doc(n).set(v({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(o=>{let l=o.data()??{};return {id:String(l.id??o.id),payload:l.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 J(e){return {async read(r){let n=await e.doc(w(r)).get();return n.exists?n.data()?.content??null:null},async write(r,n){await e.doc(w(r)).set({k:r,content:n});},async exists(r){return (await e.doc(w(r)).get()).exists},async remove(r){await e.doc(w(r)).delete();},async readBytes(r){let n=await e.doc(w(r)).get();if(!n.exists)return null;let t=n.data()??{};return typeof t.bytesBase64=="string"?ue(t.bytesBase64):typeof t.content=="string"?new TextEncoder().encode(t.content):null},async writeBytes(r,n){await e.doc(w(r)).set({k:r,bytesBase64:te(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(w(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")}}}}function ee(e){let r=J(e);return {...r,async getUniqueKey(n="scratch-",t=""){return `${n}${B()}${t}`},async create(n,t="scratch-",s=""){let o=`${t}${B()}${s}`;return await r.write(o,n),o},keyRef(n){return Q(`${e.path}/${w(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 re(e,r){let n=se(e,r);return {stream(t){return ie(n.collection(`archive-stream-${t}`))},blob(t){return J(n.collection(`archive-blob-${t}`))},async listStreams(t=""){return typeof n.listCollections!="function"?[]:(await n.listCollections()).map(o=>o.path.split("/").at(-1)??"").filter(o=>o.startsWith(`archive-stream-${t}`)).map(o=>o.slice(15))},async listBlobs(t=""){return typeof n.listCollections!="function"?[]:(await n.listCollections()).map(o=>o.path.split("/").at(-1)??"").filter(o=>o.startsWith(`archive-blob-${t}`)).map(o=>o.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(v({[t]:s}),{merge:true});}}}}function ge(e,r={}){let n=r.holderId??ne(),t=r.ttlMs??3e4;return {async tryAcquire(){try{await e.firestore.runTransaction(async s=>{let o=await s.get(e),l=new Date().toISOString();if(o.exists){let g=o.data()??{};if(g.held===!0&&typeof g.expiresAt=="string"&&g.expiresAt>l)throw Object.assign(new Error("locked"),{code:"locked"})}s.set(e,{held:!0,holderId:n,acquiredAt:l,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 o=await s.get(e);if(!o.exists)return;(o.data()??{}).holderId===n&&s.update(e,{held:!1,holderId:null});});}catch{}}}}}function M(e,r={}){let n=r.defaultVisibilityMs??3e4;return {async enqueue(t){let s=B(),o=new Date().toISOString();return await e.doc(s).set(v({id:s,body:t,enqueuedAt:o,attempt:0,visibleAfter:o,leaseToken:null,leaseExpiresAt:null,dead:false,deadReason:null})),{id:s,body:t,enqueuedAt:o,attempt:0}},async enqueueIfAbsent(t,s){if((await e.where("dedupKey","==",s).where("dead","==",false).limit(1).get()).docs.length>0)return null;let l=B(),g=new Date().toISOString();return await e.doc(l).set(v({id:l,body:t,dedupKey:s,enqueuedAt:g,attempt:0,visibleAfter:g,leaseToken:null,leaseExpiresAt:null,dead:false,deadReason:null})),{id:l,body:t,enqueuedAt:g,attempt:0}},async lease(t={}){let s=Math.max(1,Number(t.max??1)),o=Math.max(1,Number(t.visibilityMs??n)),l=new Date().toISOString(),g=await e.where("dead","==",false).where("visibleAfter","<=",l).orderBy("visibleAfter").limit(s*4).get(),S=[];for(let E of g.docs){if(S.length>=s)break;let j=e.doc(E.id);try{let $=null;await e.firestore.runTransaction(async c=>{let a=await c.get(j);if(!a.exists)throw new Error("gone");let i=a.data()??{},y=new Date().toISOString();if(i.dead===!0)throw new Error("dead");if(typeof i.visibleAfter=="string"&&i.visibleAfter>y)throw new Error("hidden");if(i.leaseToken&&typeof i.leaseExpiresAt=="string"&&i.leaseExpiresAt>y)throw new Error("leased");let f=ne(),p=new Date(Date.now()+o).toISOString(),u=Number(i.attempt??0)+1;c.update(j,{leaseToken:f,leaseExpiresAt:p,attempt:u}),$={id:String(i.id??E.id),body:i.body,enqueuedAt:String(i.enqueuedAt??y),attempt:u,leaseToken:f,leaseExpiresAt:p};}),$&&S.push($);}catch{}}return S},async ack(t,s){try{return await e.firestore.runTransaction(async o=>{let l=e.doc(t),g=await o.get(l);if(!g.exists)return;if((g.data()??{}).leaseToken!==s)throw new Error("token mismatch");o.delete(l);}),!0}catch{return false}},async nack(t,s,o={}){try{return await e.firestore.runTransaction(async l=>{let g=e.doc(t),S=await l.get(g);if(!S.exists)return;if((S.data()??{}).leaseToken!==s)throw new Error("token mismatch");o.dead===!0?l.update(g,{dead:!0,deadReason:o.reason??"nacked",leaseToken:null,leaseExpiresAt:null}):l.update(g,{leaseToken:null,leaseExpiresAt:null,visibleAfter:new Date().toISOString()});}),!0}catch{return false}},async peekActive(t=""){return (await e.where("dead","==",false).orderBy("enqueuedAt").get()).docs.map(o=>o.data()??{}).filter(o=>!t||String(o.id??"").startsWith(t)).map(o=>({id:String(o.id??""),body:o.body,enqueuedAt:String(o.enqueuedAt??""),attempt:Number(o.attempt??0)}))},async peekDeadLetter(t=""){return (await e.where("dead","==",true).orderBy("enqueuedAt").get()).docs.map(o=>o.data()??{}).filter(o=>!t||String(o.id??"").startsWith(t)).map(o=>({id:String(o.id??""),body:o.body,enqueuedAt:String(o.enqueuedAt??""),attempt:Number(o.attempt??0),reason:o.deadReason}))}}}function ye(e,r,n={}){return chunkJ6EGN6S4_cjs.i({boardId:r,kvStorage(t){return Z(F(e,r,`kv-${t||"root"}`))},kvStorageForRef(t){return Z(e.collection(Y(t,`boards/${r}/kv-root`)))},blobStorage(t){return J(F(e,r,`blobs-${t||"root"}`))},scratchStorage(){return ee(F(e,r,"scratch"))},scratchStorageForRef(t){return ee(e.collection(Y(t,`boards/${r}/scratch`)))},archiveFactory(){return re(e,r)},archiveFactoryForRef(t){let s=oe(t),o=s?.kind==="firestore-board"?s.value:r;return re(e,o)},journalStorage(){return ie(F(e,r,"journal"))},queueStorage:M(F(e,r,"worker-queue")),chatAgentQueueStorage:M(F(e,r,"chat-queue")),processAccumulatedQueueStorage:M(F(e,r,"process-queue")),lock:ge(F(e,r,"locks").doc("board-lock"),{holderId:n.holderId}),hashFn(t){return le(t)},genId(){return B()},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 Ae(e,r,n={}){let t={...fe(r),...n.refs??{}},s=ye(e,r,n);return {refs:t,boardAdapter:s,nonCore:ce(s,n)}}
2
- exports.createFirestoreArchiveFactory=re;exports.createFirestoreBlobStorage=J;exports.createFirestoreBoardAdapter=ye;exports.createFirestoreBoardRefs=fe;exports.createFirestoreBoardRuntimeBundle=Ae;exports.createFirestoreJournalStorage=ie;exports.createFirestoreKvStorage=Z;exports.createFirestoreLock=ge;exports.createFirestoreQueueStorage=M;exports.createFirestoreScratchStorage=ee;exports.makeFirestoreRef=Q;exports.serializeFirestoreRef=q;//# sourceMappingURL=index.cjs.map
1
+ 'use strict';var chunkHFW7E2Z7_cjs=require('../chunk-HFW7E2Z7.cjs'),chunkFO4KNVU7_cjs=require('../chunk-FO4KNVU7.cjs'),chunkMCPADH33_cjs=require('../chunk-MCPADH33.cjs');require('../chunk-R44X3RQB.cjs'),require('../chunk-CMFD27ZC.cjs');var chunk37HDEW26_cjs=require('../chunk-37HDEW26.cjs');require('../chunk-PBCDDO4V.cjs'),require('../chunk-NDAKMJQK.cjs'),require('../chunk-7JVHYHT2.cjs');var chunkVQCIOKJV_cjs=require('../chunk-VQCIOKJV.cjs');require('../chunk-G4XXRHL2.cjs'),require('../chunk-LODXIALE.cjs');var chunkIXZG74EW_cjs=require('../chunk-IXZG74EW.cjs');require('../chunk-HWYMZK3N.cjs'),require('../chunk-UJ7ZTV4J.cjs'),require('../chunk-YMEIPKLW.cjs'),require('../chunk-GNFE24S7.cjs');function x(e){return {status:"success",data:e}}function S(e){return {status:"fail",error:e}}function q(e){return {status:"error",error:e instanceof Error?e.message:String(e)}}function $(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:{}}function ue(e){return String(e).replace(/[^a-zA-Z0-9_-]/g,"_")}function de(e,t={}){let n=()=>chunk37HDEW26_cjs.b(e.kvStorage("config"));async function r(){return await n().readTaskExecutorRef().catch(()=>{})}async function s(c,i,a){if(!t.nonCoreTaskExecutor)throw new Error(`${c} is not supported on the hosted Firestore runtime yet`);let y=await t.nonCoreTaskExecutor({subcommand:c,...i!==void 0?{input:typeof i=="string"?i:JSON.stringify(i)}:{},...a!==void 0?{timeoutMs:a}:{}});return $(y)}async function o(c){try{if(!c.body||typeof c.body!="object"||Array.isArray(c.body))return S("validateCardPreflight requires card JSON object in body");let i=c.body,a=i["card-content"]??i,y=typeof a.id=="string"?a.id:"(unknown)",g=chunkFO4KNVU7_cjs.a(a),p=Array.isArray(a.source_defs)&&a.source_defs.length>0,d=[...g.issues];if(p)if(t.nonCoreTaskExecutor)for(let m of a.source_defs){let f=typeof m.bindTo=="string"?m.bindTo:"(unknown)";try{let R=await s("validate-source-def",m,1e4);if(R.ok!==!0&&Array.isArray(R.errors))for(let C of R.errors)typeof C=="string"&&C&&d.push(`source "${f}": ${C}`);}catch(R){d.push(`source "${f}": executor validate-source-def failed \u2014 ${R instanceof Error?R.message:String(R)}`);}}else await r()&&d.push("executor-backed source_def preflight is not supported on the hosted Firestore runtime yet");return x({cardId:y,isValid:d.length===0,issues:d})}catch(i){return q(i)}}function u(c){try{if(!c.body||typeof c.body!="object"||Array.isArray(c.body))return S("evalCardCompute requires a JSON object in body");let i=c.body,a=i["card-content"]??i,y=typeof a.id=="string"?a.id:"(unknown)",g=i["mock-fetched-sources"]??{},p=i["mock-requires"]??{},d=a.compute;if(!d||!Array.isArray(d)||d.length===0)return x({cardId:y,ok:!0,computed_values:{},errors:[]});let m={id:y,card_data:a.card_data??{},requires:p,source_defs:a.source_defs,compute:d},f=chunkIXZG74EW_cjs.a.runSync(m,{sourcesData:g});return x({cardId:y,ok:(f.errors??[]).length===0,computed_values:f.node.computed_values??{},errors:f.errors??[]})}catch(i){return q(i)}}async function l(c){return await r(),S(`${c} is not supported on the hosted Firestore runtime yet`)}async function w(){try{return t.nonCoreTaskExecutor?x(await s("describe-capabilities",void 0,1e4)):await l("describeTaskExecutorCapabilities")}catch(c){return q(c)}}async function E(c){try{if(!t.nonCoreTaskExecutor)return await l("probeSourcePreflight");if(!c.body||typeof c.body!="object"||Array.isArray(c.body))return S("probeSourcePreflight requires card JSON object in body");let i=c.body,a=i["card-content"]??i,y=$(i["mock-projections"]??{}),g=c.params?.sourceIdx,p=Array.isArray(a.source_defs)?a.source_defs:[];if(g===void 0)return S("probeSourcePreflight requires params.sourceIdx");if(g<0||g>=p.length)return S(`sourceIdx ${g} out of range (card has ${p.length} source(s))`);let d=p[g],m=typeof d.bindTo=="string"?d.bindTo:"source",f=await s("probe-source-preflight",{...d,_projections:y},d.timeout??6e4);return f.ok!==!0?S(typeof f.error=="string"?f.error:"Preflight probe failed"):x({bindTo:m,reachable:f.reachable,latencyMs:f.latencyMs,...typeof f.note=="string"?{note:f.note}:{}})}catch(i){return q(i)}}async function D(c){try{if(!t.nonCoreTaskExecutor)return await l("runSourcePreflight");if(!c.body||typeof c.body!="object"||Array.isArray(c.body))return S("runSourcePreflight requires card JSON object in body");let i=c.body,a=i["card-content"]??i,y=$(i["mock-projections"]??{}),g=c.params?.sourceIdx,p=Array.isArray(a.source_defs)?a.source_defs:[];if(g===void 0)return S("runSourcePreflight requires params.sourceIdx");if(g<0||g>=p.length)return S(`sourceIdx ${g} out of range (card has ${p.length} source(s))`);let d=p[g],m=typeof d.bindTo=="string"?d.bindTo:"source",f=await s("run-source-preflight",{...d,_projections:y},d.timeout??6e4);return f.ok!==!0?x({bindTo:m,ok:!1,result:null,issues:[typeof f.error=="string"?f.error:"Preflight run failed"]}):x({bindTo:m,ok:!0,result:Object.prototype.hasOwnProperty.call(f,"resultValue")?f.resultValue:null,issues:[]})}catch(i){return q(i)}}async function B(c){try{if(!c.body||typeof c.body!="object"||Array.isArray(c.body))return S("simulateCardCycle requires a JSON object in body");let i=c.body,a=i["card-content"]??i,y=typeof a.id=="string"?a.id:"(unknown)",g=$(i["mock-fetched-sources"]??{}),p=$(i["mock-requires"]??{}),d=await o({body:{"card-content":a}}),m=d.status==="success"?{isValid:d.data.isValid,issues:d.data.issues}:{isValid:!1,issues:[d.status==="fail"?d.error:"internal error"]},f=Array.isArray(a.source_defs)?a.source_defs:[],R=$(a.card_data??{}),C=[],V=[];if(f.length>0){C=chunkIXZG74EW_cjs.a.enrichSourcesSync(f,{card_data:R,requires:p});for(let b of C){let A=b.projections,T=b._projections;if(A&&T){for(let k of Object.keys(A))if(T[k]===void 0){let ce=typeof b.bindTo=="string"?b.bindTo:"(unknown)";V.push({bindTo:ce,key:k,error:`Projection "${k}" resolved to undefined`});}}}}let L=[],K={...g};for(let b=0;b<C.length;b+=1){let A=C[b],T=typeof A.bindTo=="string"?A.bindTo:`source_${b}`;if(!t.nonCoreTaskExecutor){L.push({bindTo:T,skipped:!0,error:"No task executor configured"});continue}try{let k=await s("run-source-preflight",A,A.timeout??6e4);k.ok===!0&&!Object.prototype.hasOwnProperty.call(g,T)&&Object.prototype.hasOwnProperty.call(k,"resultValue")&&(K[T]=k.resultValue),L.push({bindTo:T,reachable:k.reachable,latencyMs:k.latencyMs,...k.ok===!0?{}:{error:typeof k.error=="string"?k.error:"Preflight run failed"}});}catch{L.push({bindTo:T,skipped:!0,error:"Executor does not support run-source-preflight"});}}let O=a.compute,H={},Q=[];if(O&&Array.isArray(O)&&O.length>0){let b={id:y,card_data:R,requires:p,source_defs:a.source_defs,compute:O},A=chunkIXZG74EW_cjs.a.runSync(b,{sourcesData:K});H=A.node.computed_values??{},Q=A.errors??[];}return x({cardId:y,ok:m.isValid&&V.length===0&&Q.length===0&&L.every(b=>!b.error),validation:m,source_probes:L,projection_errors:V,fetched_sources:K,computed_values:H,compute_errors:Q})}catch(i){return q(i)}}return {describeTaskExecutorCapabilities:w,validateCardPreflight:o,evalCardCompute:u,probeSourcePreflight:E,runSourcePreflight:D,simulateCardCycle:B}}function ne(e){let t="";for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return btoa(t)}function le(e){let t=atob(e),n=new Uint8Array(t.length);for(let r=0;r<t.length;r++)n[r]=t.charCodeAt(r);return n}function fe(e){let t=new TextEncoder().encode(e);return ne(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}function ge(e){return chunkHFW7E2Z7_cjs.a(e).slice(0,16)}function oe(){return globalThis.crypto&&typeof globalThis.crypto.randomUUID=="function"?globalThis.crypto.randomUUID():`${Date.now().toString(16)}-${Math.random().toString(16).slice(2,10)}`}function h(e){return fe(String(e))}function _(){let e=String(Date.now()).padStart(13,"0"),t=Math.random().toString(36).slice(2,10).padEnd(8,"0");return `${e}-${t}`}function se(e){try{return chunkVQCIOKJV_cjs.b(e)}catch{return null}}function P(e,t){let n=se(e);return n?.kind==="firestore"&&n.value?n.value:t}function v(e){if(e===void 0)return null;if(Array.isArray(e))return e.map(t=>v(t===void 0?null:t));if(e&&typeof e=="object"){let t=Object.entries(e).filter(([,n])=>n!==void 0).map(([n,r])=>[n,v(r)]);return Object.fromEntries(t)}return e}function ae(e,t){return e.collection("boards").doc(t)}function j(e,t,n){return ae(e,t).collection(n)}function U(e){return {kind:"firestore",value:String(e)}}function F(e){return chunkVQCIOKJV_cjs.a(U(e))}function ie(e){return {baseRef:U(`boards/${e}`),boardRuntimeStoreRef:F(`boards/${e}/runtime-board`),cardStoreRef:F(`boards/${e}/cards`),outputsStoreRef:F(`boards/${e}/runtime-out`),queueStoreRef:F(`boards/${e}/runtime`),scratchStoreRef:F(`boards/${e}/scratch`),chatStoreRef:F(`boards/${e}/chat`),artifactsStoreRef:F(`boards/${e}/files`),fetchedSourcesStoreRef:F(`boards/${e}/sources`)}}function J(e){return {async read(t){let n=await e.doc(h(t)).get();return n.exists?n.data()?.value??null:null},async write(t,n){await e.doc(h(t)).set(v({k:t,value:n}));},async delete(t){await e.doc(h(t)).delete();},async listKeys(t=""){return (await(t?e.where("k",">=",t).where("k","<",`${t}\uF8FF`).orderBy("k"):e.orderBy("k")).get()).docs.map(s=>s.data()?.k??s.id)}}}function N(e){return {async append(t){let n=_();return await e.doc(n).set(v({id:n,createdAt:new Date().toISOString(),payload:t})),{id:n,payload:t}},async readAll(){return (await e.orderBy("id").get()).docs.map(n=>{let r=n.data()??{};return {id:String(r.id??n.id),payload:r.payload}})},async readAfter(t){let s=(await(t?e.where("id",">",t).orderBy("id"):e.orderBy("id")).get()).docs.map(o=>{let u=o.data()??{};return {id:String(u.id??o.id),payload:u.payload}});return {entries:s,newCursor:s.length>0?s[s.length-1].id:t}},async clear(){let t=await e.get();if(typeof e.firestore.batch=="function"){let n=e.firestore.batch();for(let r of t.docs)n.delete(e.doc(r.id));await n.commit();return}await Promise.all(t.docs.map(n=>e.doc(n.id).delete()));}}}function M(e){return {async read(t){let n=await e.doc(h(t)).get();return n.exists?n.data()?.content??null:null},async write(t,n){await e.doc(h(t)).set({k:t,content:n});},async exists(t){return (await e.doc(h(t)).get()).exists},async remove(t){await e.doc(h(t)).delete();},async readBytes(t){let n=await e.doc(h(t)).get();if(!n.exists)return null;let r=n.data()??{};return typeof r.bytesBase64=="string"?le(r.bytesBase64):typeof r.content=="string"?new TextEncoder().encode(r.content):null},async writeBytes(t,n){await e.doc(h(t)).set({k:t,bytesBase64:ne(n)});},async listKeys(t=""){return (await(t?e.where("k",">=",t).where("k","<",`${t}\uF8FF`).orderBy("k"):e.orderBy("k")).get()).docs.map(s=>s.data()?.k??s.id)},async stat(t){let n=await e.doc(h(t)).get();if(!n.exists)return null;let r=n.data()??{},s=typeof r.bytesBase64=="string"?Math.floor(r.bytesBase64.length*3/4):typeof r.content=="string"?r.content.length:0;return {key:t,size:s,contentType:String(r.contentType??"application/octet-stream")}},async renameKey(t,n){let r=await e.doc(h(t)).get();if(!r.exists)return false;let s=r.data()??{};return await e.doc(h(n)).set({...s,k:n}),await e.doc(h(t)).delete(),true}}}function re(e){let t=M(e);return {...t,async getUniqueKey(n="scratch-",r=""){return `${n}${_()}${r}`},async create(n,r="scratch-",s=""){let o=`${r}${_()}${s}`;return await t.write(o,n),o},keyRef(n){return U(`${e.path}/${h(n)}`)},config:{async get(n){let r=await t.read(`__config__/${n}`);if(r==null)return null;try{return JSON.parse(r)}catch{return r}},async set(n,r){await t.write(`__config__/${n}`,JSON.stringify(r));}}}}function te(e,t){let n=ae(e,t);return {stream(r){return N(n.collection(`archive-stream-${r}`))},blob(r){return M(n.collection(`archive-blob-${r}`))},async listStreams(r=""){return typeof n.listCollections!="function"?[]:(await n.listCollections()).map(o=>o.path.split("/").at(-1)??"").filter(o=>o.startsWith(`archive-stream-${r}`)).map(o=>o.slice(15))},async listBlobs(r=""){return typeof n.listCollections!="function"?[]:(await n.listCollections()).map(o=>o.path.split("/").at(-1)??"").filter(o=>o.startsWith(`archive-blob-${r}`)).map(o=>o.slice(13))},config:{async get(r){let s=await n.collection("archive-config").doc("main").get();return s.exists?s.data()?.[r]??null:null},async set(r,s){await n.collection("archive-config").doc("main").set(v({[r]:s}),{merge:true});}}}}function ye(e,t={}){let n=t.holderId??oe(),r=t.ttlMs??3e4;return {async tryAcquire(){try{await e.firestore.runTransaction(async s=>{let o=await s.get(e),u=new Date().toISOString();if(o.exists){let l=o.data()??{};if(l.held===!0&&typeof l.expiresAt=="string"&&l.expiresAt>u)throw Object.assign(new Error("locked"),{code:"locked"})}s.set(e,{held:!0,holderId:n,acquiredAt:u,expiresAt:new Date(Date.now()+r).toISOString()});});}catch(s){if(s?.code==="locked")return null;throw s}return async()=>{try{await e.firestore.runTransaction(async s=>{let o=await s.get(e);if(!o.exists)return;(o.data()??{}).holderId===n&&s.update(e,{held:!1,holderId:null});});}catch{}}}}}function pe(e,t={}){let n=t.defaultVisibilityMs??3e4;return {async enqueue(r){let s=_(),o=new Date().toISOString();return await e.doc(s).set(v({id:s,body:r,enqueuedAt:o,attempt:0,staged:false,visibleAfter:o,leaseToken:null,leaseExpiresAt:null,dead:false,deadReason:null})),{id:s,body:r,enqueuedAt:o,attempt:0}},async enqueueMany(r){let s=[];for(let o of r)s.push(await this.enqueue(o));return s},async enqueueIfAbsent(r,s){if((await e.where("dedupKey","==",s).where("dead","==",false).limit(1).get()).docs.length>0)return null;let u=_(),l=new Date().toISOString();return await e.doc(u).set(v({id:u,body:r,dedupKey:s,enqueuedAt:l,attempt:0,staged:false,visibleAfter:l,leaseToken:null,leaseExpiresAt:null,dead:false,deadReason:null})),{id:u,body:r,enqueuedAt:l,attempt:0}},async stage(r,s={}){if(s.dedupKey&&(await e.where("dedupKey","==",s.dedupKey).where("dead","==",false).limit(1).get()).docs.length>0)return null;let o=_(),u=new Date().toISOString();return await e.doc(o).set(v({id:o,body:r,dedupKey:s.dedupKey,enqueuedAt:u,attempt:0,staged:true,visibleAfter:null,leaseToken:null,leaseExpiresAt:null,dead:false,deadReason:null})),{id:o,body:r,enqueuedAt:u,attempt:0}},async commitStaged(r){try{return await e.firestore.runTransaction(async s=>{let o=e.doc(r),u=await s.get(o);if(!u.exists)throw new Error("missing");let l=u.data()??{};if(l.dead===!0||l.staged!==!0)throw new Error("not-staged");s.update(o,{staged:!1,enqueuedAt:new Date().toISOString(),attempt:0,visibleAfter:new Date().toISOString()});}),!0}catch{return false}},async discardStaged(r,s){try{return await e.firestore.runTransaction(async o=>{let u=e.doc(r),l=await o.get(u);if(!l.exists)throw new Error("missing");let w=l.data()??{};if(w.dead===!0||w.staged!==!0)throw new Error("not-staged");o.update(u,{staged:!1,dead:!0,deadReason:s??"discarded"});}),!0}catch{return false}},async peekStaged(r=""){return (await e.where("dead","==",false).where("staged","==",true).orderBy("enqueuedAt").get()).docs.map(o=>o.data()??{}).filter(o=>!r||String(o.id??"").startsWith(r)).map(o=>({id:String(o.id??""),body:o.body,enqueuedAt:String(o.enqueuedAt??""),attempt:Number(o.attempt??0)}))},async lease(r={}){let s=Math.max(1,Number(r.max??1)),o=Math.max(1,Number(r.visibilityMs??n)),u=new Date().toISOString(),l=await e.where("dead","==",false).where("staged","==",false).where("visibleAfter","<=",u).orderBy("visibleAfter").limit(s*4).get(),w=[];for(let E of l.docs){if(w.length>=s)break;let D=e.doc(E.id);try{let B=null;await e.firestore.runTransaction(async c=>{let i=await c.get(D);if(!i.exists)throw new Error("gone");let a=i.data()??{},y=new Date().toISOString();if(a.dead===!0)throw new Error("dead");if(a.staged===!0)throw new Error("staged");if(typeof a.visibleAfter=="string"&&a.visibleAfter>y)throw new Error("hidden");if(a.leaseToken&&typeof a.leaseExpiresAt=="string"&&a.leaseExpiresAt>y)throw new Error("leased");let g=oe(),p=new Date(Date.now()+o).toISOString(),d=Number(a.attempt??0)+1;c.update(D,{leaseToken:g,leaseExpiresAt:p,attempt:d}),B={id:String(a.id??E.id),body:a.body,enqueuedAt:String(a.enqueuedAt??y),attempt:d,leaseToken:g,leaseExpiresAt:p};}),B&&w.push(B);}catch{}}return w},async ack(r,s){try{return await e.firestore.runTransaction(async o=>{let u=e.doc(r),l=await o.get(u);if(!l.exists)return;if((l.data()??{}).leaseToken!==s)throw new Error("token mismatch");o.delete(u);}),!0}catch{return false}},async nack(r,s,o={}){try{return await e.firestore.runTransaction(async u=>{let l=e.doc(r),w=await u.get(l);if(!w.exists)return;if((w.data()??{}).leaseToken!==s)throw new Error("token mismatch");o.dead===!0?u.update(l,{dead:!0,deadReason:o.reason??"nacked",leaseToken:null,leaseExpiresAt:null}):u.update(l,{leaseToken:null,leaseExpiresAt:null,visibleAfter:new Date().toISOString()});}),!0}catch{return false}},async peekActive(r=""){return (await e.where("dead","==",false).where("staged","==",false).orderBy("enqueuedAt").get()).docs.map(o=>o.data()??{}).filter(o=>!r||String(o.id??"").startsWith(r)).map(o=>({id:String(o.id??""),body:o.body,enqueuedAt:String(o.enqueuedAt??""),attempt:Number(o.attempt??0)}))},async peekDeadLetter(r=""){return (await e.where("dead","==",true).orderBy("enqueuedAt").get()).docs.map(o=>o.data()??{}).filter(o=>!r||String(o.id??"").startsWith(r)).map(o=>({id:String(o.id??""),body:o.body,enqueuedAt:String(o.enqueuedAt??""),attempt:Number(o.attempt??0),reason:o.deadReason}))}}}function me(e,t,n={}){return chunk37HDEW26_cjs.c({boardId:t,kvStorage(r){return J(j(e,t,`kv-${r||"root"}`))},kvStorageForRef(r){return J(e.collection(P(r,`boards/${t}/kv-root`)))},blobStorage(r){return M(j(e,t,`blobs-${r||"root"}`))},blobStorageForRef(r){return M(e.collection(P(r,`boards/${t}/blobs-root`)))},chatStorageForRef(r){let s=P(r,`boards/${t}/chat`);return chunkMCPADH33_cjs.b(o=>N(e.collection(`${s}-journal-${ue(o)}`)),J(e.collection(`${s}-kv`)))},queueStoreRef:ie(t).queueStoreRef,queueStorageForRef(r,s){let o=P(r,`boards/${t}/runtime`);return pe(e.collection(`${o}-${s}`))},scratchStorage(){return re(j(e,t,"scratch"))},scratchStorageForRef(r){return re(e.collection(P(r,`boards/${t}/scratch`)))},archiveFactory(){return te(e,t)},archiveFactoryForRef(r){let s=se(r),o=s?.kind==="firestore-board"?s.value:t;return te(e,o)},journalStorage(){return N(j(e,t,"journal"))},journalStorageForRef(r){let s=P(r,`boards/${t}/runtime-board`);return N(e.collection(`${s}-journal`))},lock:ye(j(e,t,"locks").doc("board-lock"),{holderId:n.holderId}),hashFn(r){return ge(r)},genId(){return _()},supportsDirectSourceOutput(r){return r.howToRun==="queue-storage"||r.howToRun==="http:post"},requestProcessAccumulated:n.requestProcessAccumulated,publishBoardChangeNotifications:n.publishBoardChangeNotifications,onWarn:r=>console.warn(`[firestore-board-adapter:${t}] ${r}`)})}function Ce(e,t,n={}){let r={...ie(t),...n.refs??{}},s=me(e,t,n);return {refs:r,boardAdapter:s,nonCore:de(s,n)}}
2
+ exports.createFirestoreArchiveFactory=te;exports.createFirestoreBlobStorage=M;exports.createFirestoreBoardAdapter=me;exports.createFirestoreBoardRefs=ie;exports.createFirestoreBoardRuntimeBundle=Ce;exports.createFirestoreJournalStorage=N;exports.createFirestoreKvStorage=J;exports.createFirestoreLock=ye;exports.createFirestoreQueueStorage=pe;exports.createFirestoreScratchStorage=re;exports.makeFirestoreRef=U;exports.serializeFirestoreRef=F;//# sourceMappingURL=index.cjs.map
3
3
  //# sourceMappingURL=index.cjs.map
@@ -1,13 +1,11 @@
1
1
  import { ExecutionRef } from '../execution-refs.cjs';
2
- import { a as KindValueRef } from '../storage-interface-BFiD3kyB.cjs';
3
- import { A as AsyncArchiveFactory, a as AsyncBlobStorage, b as AsyncJournalStorage, c as AsyncKVStorage, d as AsyncAtomicRelayLock, e as AsyncQueueStorage, f as AsyncScratchStorage } from '../storage-async-interface-BRR4eBjx.cjs';
4
- import { A as AsyncBoardPlatformAdapter } from '../board-platform-adapter-async-BfHmHdx2.cjs';
5
- import { c as BoardRuntimeNonCorePublic } from '../types-Ba8H5_Wo.cjs';
6
- import '../board-live-cards-public-LlVUQPL2.cjs';
2
+ import { a as KindValueRef } from '../storage-interface-D-iEiTJA.cjs';
3
+ import { A as AsyncArchiveFactory, a as AsyncBlobStorage, b as AsyncJournalStorage, c as AsyncKVStorage, d as AsyncAtomicRelayLock, e as AsyncQueueStorage, f as AsyncScratchStorage } from '../storage-async-interface-CyO-zwVQ.cjs';
4
+ import { A as AsyncBoardPlatformAdapter } from '../board-platform-adapter-async-BZIftm36.cjs';
5
+ import { c as BoardRuntimeNonCorePublic } from '../types-Ch0u3FKP.cjs';
6
+ import '../board-live-cards-public-BT5HrgqZ.cjs';
7
7
  import '../types-BBhqYGhE.cjs';
8
- import '../artifacts-store-lib-D9nMkVcE.cjs';
9
- import '../board-live-cards-public-async-Di9QB141.cjs';
10
- import '../chat-storage-lib-B9Q34Dyv.cjs';
8
+ import '../board-live-cards-public-async-CYjr4mgX.cjs';
11
9
 
12
10
  interface FirestoreDocumentSnapshotLike {
13
11
  readonly exists: boolean;
@@ -56,12 +54,14 @@ interface FirestoreLike {
56
54
  }
57
55
  interface FirestoreBoardRefs {
58
56
  baseRef: KindValueRef;
57
+ boardRuntimeStoreRef: string;
59
58
  cardStoreRef: string;
60
59
  outputsStoreRef: string;
60
+ queueStoreRef: string;
61
61
  scratchStoreRef: string;
62
- archiveStoreRef: string;
63
62
  chatStoreRef: string;
64
63
  artifactsStoreRef: string;
64
+ fetchedSourcesStoreRef: string;
65
65
  }
66
66
  interface FirestoreNonCoreExecutorRequest {
67
67
  subcommand: string;
@@ -97,12 +97,14 @@ declare function createFirestoreBoardAdapter(db: FirestoreLike, boardId: string,
97
97
  declare function createFirestoreBoardRuntimeBundle(db: FirestoreLike, boardId: string, options?: FirestoreBoardAdapterOptions): {
98
98
  refs: {
99
99
  baseRef: KindValueRef;
100
+ boardRuntimeStoreRef: string;
100
101
  cardStoreRef: string;
101
102
  outputsStoreRef: string;
103
+ queueStoreRef: string;
102
104
  scratchStoreRef: string;
103
- archiveStoreRef: string;
104
105
  chatStoreRef: string;
105
106
  artifactsStoreRef: string;
107
+ fetchedSourcesStoreRef: string;
106
108
  };
107
109
  boardAdapter: AsyncBoardPlatformAdapter;
108
110
  nonCore: BoardRuntimeNonCorePublic;
@@ -1,13 +1,11 @@
1
1
  import { ExecutionRef } from '../execution-refs.js';
2
- import { a as KindValueRef } from '../storage-interface-BFiD3kyB.js';
3
- import { A as AsyncArchiveFactory, a as AsyncBlobStorage, b as AsyncJournalStorage, c as AsyncKVStorage, d as AsyncAtomicRelayLock, e as AsyncQueueStorage, f as AsyncScratchStorage } from '../storage-async-interface-DhlOVPSp.js';
4
- import { A as AsyncBoardPlatformAdapter } from '../board-platform-adapter-async-DYahVzIK.js';
5
- import { c as BoardRuntimeNonCorePublic } from '../types-SO5OZm4s.js';
6
- import '../board-live-cards-public-JNRKfBZy.js';
2
+ import { a as KindValueRef } from '../storage-interface-D-iEiTJA.js';
3
+ import { A as AsyncArchiveFactory, a as AsyncBlobStorage, b as AsyncJournalStorage, c as AsyncKVStorage, d as AsyncAtomicRelayLock, e as AsyncQueueStorage, f as AsyncScratchStorage } from '../storage-async-interface-CG0bMqvE.js';
4
+ import { A as AsyncBoardPlatformAdapter } from '../board-platform-adapter-async-JP9V-U5E.js';
5
+ import { c as BoardRuntimeNonCorePublic } from '../types-BtH3scgE.js';
6
+ import '../board-live-cards-public-DSRamFm8.js';
7
7
  import '../types-BBhqYGhE.js';
8
- import '../artifacts-store-lib-DSSMqVL2.js';
9
- import '../board-live-cards-public-async-fwd1QI82.js';
10
- import '../chat-storage-lib-DB9iSai2.js';
8
+ import '../board-live-cards-public-async-DlyC3PgC.js';
11
9
 
12
10
  interface FirestoreDocumentSnapshotLike {
13
11
  readonly exists: boolean;
@@ -56,12 +54,14 @@ interface FirestoreLike {
56
54
  }
57
55
  interface FirestoreBoardRefs {
58
56
  baseRef: KindValueRef;
57
+ boardRuntimeStoreRef: string;
59
58
  cardStoreRef: string;
60
59
  outputsStoreRef: string;
60
+ queueStoreRef: string;
61
61
  scratchStoreRef: string;
62
- archiveStoreRef: string;
63
62
  chatStoreRef: string;
64
63
  artifactsStoreRef: string;
64
+ fetchedSourcesStoreRef: string;
65
65
  }
66
66
  interface FirestoreNonCoreExecutorRequest {
67
67
  subcommand: string;
@@ -97,12 +97,14 @@ declare function createFirestoreBoardAdapter(db: FirestoreLike, boardId: string,
97
97
  declare function createFirestoreBoardRuntimeBundle(db: FirestoreLike, boardId: string, options?: FirestoreBoardAdapterOptions): {
98
98
  refs: {
99
99
  baseRef: KindValueRef;
100
+ boardRuntimeStoreRef: string;
100
101
  cardStoreRef: string;
101
102
  outputsStoreRef: string;
103
+ queueStoreRef: string;
102
104
  scratchStoreRef: string;
103
- archiveStoreRef: string;
104
105
  chatStoreRef: string;
105
106
  artifactsStoreRef: string;
107
+ fetchedSourcesStoreRef: string;
106
108
  };
107
109
  boardAdapter: AsyncBoardPlatformAdapter;
108
110
  nonCore: BoardRuntimeNonCorePublic;
@@ -1,3 +1,3 @@
1
- import {a as a$1}from'../chunk-TSN3RTXT.js';import {a as a$3}from'../chunk-YBYXCFAI.js';import'../chunk-EGRHWZRV.js';import'../chunk-S44QZUDX.js';import {i,h}from'../chunk-PRKRXAVN.js';import'../chunk-HEEDJEKM.js';import'../chunk-JH37NJGP.js';import'../chunk-XQRNDX4Q.js';import {a,b as b$1}from'../chunk-BQS3EIEK.js';import'../chunk-VGT3TRQG.js';import'../chunk-WDPOGXTY.js';import {a as a$2}from'../chunk-JMDHDY6M.js';import'../chunk-3KC6LBOG.js';import'../chunk-MNEOJWPS.js';import'../chunk-KBELAKIY.js';import'../chunk-FW4363Y4.js';function x(e){return {status:"success",data:e}}function b(e){return {status:"fail",error:e}}function _(e){return {status:"error",error:e instanceof Error?e.message:String(e)}}function P(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:{}}function ce(e,r={}){let n=()=>h(e.kvStorage("config"));async function t(){return await n().readTaskExecutorRef().catch(()=>{})}async function s(c,a,i){if(!r.nonCoreTaskExecutor)throw new Error(`${c} is not supported on the hosted Firestore runtime yet`);let y=await r.nonCoreTaskExecutor({subcommand:c,...a!==void 0?{input:typeof a=="string"?a:JSON.stringify(a)}:{},...i!==void 0?{timeoutMs:i}:{}});return P(y)}async function o(c){try{if(!c.body||typeof c.body!="object"||Array.isArray(c.body))return b("validateCardPreflight requires card JSON object in body");let a=c.body,i=a["card-content"]??a,y=typeof i.id=="string"?i.id:"(unknown)",f=a$3(i),p=Array.isArray(i.source_defs)&&i.source_defs.length>0,u=[...f.issues];if(p)if(r.nonCoreTaskExecutor)for(let m of i.source_defs){let d=typeof m.bindTo=="string"?m.bindTo:"(unknown)";try{let A=await s("validate-source-def",m,1e4);if(A.ok!==!0&&Array.isArray(A.errors))for(let C of A.errors)typeof C=="string"&&C&&u.push(`source "${d}": ${C}`);}catch(A){u.push(`source "${d}": executor validate-source-def failed \u2014 ${A instanceof Error?A.message:String(A)}`);}}else await t()&&u.push("executor-backed source_def preflight is not supported on the hosted Firestore runtime yet");return x({cardId:y,isValid:u.length===0,issues:u})}catch(a){return _(a)}}function l(c){try{if(!c.body||typeof c.body!="object"||Array.isArray(c.body))return b("evalCardCompute requires a JSON object in body");let a=c.body,i=a["card-content"]??a,y=typeof i.id=="string"?i.id:"(unknown)",f=a["mock-fetched-sources"]??{},p=a["mock-requires"]??{},u=i.compute;if(!u||!Array.isArray(u)||u.length===0)return x({cardId:y,ok:!0,computed_values:{},errors:[]});let m={id:y,card_data:i.card_data??{},requires:p,source_defs:i.source_defs,compute:u},d=a$2.runSync(m,{sourcesData:f});return x({cardId:y,ok:(d.errors??[]).length===0,computed_values:d.node.computed_values??{},errors:d.errors??[]})}catch(a){return _(a)}}async function g(c){return await t(),b(`${c} is not supported on the hosted Firestore runtime yet`)}async function S(){try{return r.nonCoreTaskExecutor?x(await s("describe-capabilities",void 0,1e4)):await g("describeTaskExecutorCapabilities")}catch(c){return _(c)}}async function E(c){try{if(!r.nonCoreTaskExecutor)return await g("probeSourcePreflight");if(!c.body||typeof c.body!="object"||Array.isArray(c.body))return b("probeSourcePreflight requires card JSON object in body");let a=c.body,i=a["card-content"]??a,y=P(a["mock-projections"]??{}),f=c.params?.sourceIdx,p=Array.isArray(i.source_defs)?i.source_defs:[];if(f===void 0)return b("probeSourcePreflight requires params.sourceIdx");if(f<0||f>=p.length)return b(`sourceIdx ${f} out of range (card has ${p.length} source(s))`);let u=p[f],m=typeof u.bindTo=="string"?u.bindTo:"source",d=await s("probe-source-preflight",{...u,_projections:y},u.timeout??6e4);return d.ok!==!0?b(typeof d.error=="string"?d.error:"Preflight probe failed"):x({bindTo:m,reachable:d.reachable,latencyMs:d.latencyMs,...typeof d.note=="string"?{note:d.note}:{}})}catch(a){return _(a)}}async function j(c){try{if(!r.nonCoreTaskExecutor)return await g("runSourcePreflight");if(!c.body||typeof c.body!="object"||Array.isArray(c.body))return b("runSourcePreflight requires card JSON object in body");let a=c.body,i=a["card-content"]??a,y=P(a["mock-projections"]??{}),f=c.params?.sourceIdx,p=Array.isArray(i.source_defs)?i.source_defs:[];if(f===void 0)return b("runSourcePreflight requires params.sourceIdx");if(f<0||f>=p.length)return b(`sourceIdx ${f} out of range (card has ${p.length} source(s))`);let u=p[f],m=typeof u.bindTo=="string"?u.bindTo:"source",d=await s("run-source-preflight",{...u,_projections:y},u.timeout??6e4);return d.ok!==!0?x({bindTo:m,ok:!1,result:null,issues:[typeof d.error=="string"?d.error:"Preflight run failed"]}):x({bindTo:m,ok:!0,result:Object.prototype.hasOwnProperty.call(d,"resultValue")?d.resultValue:null,issues:[]})}catch(a){return _(a)}}async function $(c){try{if(!c.body||typeof c.body!="object"||Array.isArray(c.body))return b("simulateCardCycle requires a JSON object in body");let a=c.body,i=a["card-content"]??a,y=typeof i.id=="string"?i.id:"(unknown)",f=P(a["mock-fetched-sources"]??{}),p=P(a["mock-requires"]??{}),u=await o({body:{"card-content":i}}),m=u.status==="success"?{isValid:u.data.isValid,issues:u.data.issues}:{isValid:!1,issues:[u.status==="fail"?u.error:"internal error"]},d=Array.isArray(i.source_defs)?i.source_defs:[],A=P(i.card_data??{}),C=[],I=[];if(d.length>0){C=a$2.enrichSourcesSync(d,{card_data:A,requires:p});for(let h of C){let R=h.projections,T=h._projections;if(R&&T){for(let k of Object.keys(R))if(T[k]===void 0){let ae=typeof h.bindTo=="string"?h.bindTo:"(unknown)";I.push({bindTo:ae,key:k,error:`Projection "${k}" resolved to undefined`});}}}}let L=[],N={...f};for(let h=0;h<C.length;h+=1){let R=C[h],T=typeof R.bindTo=="string"?R.bindTo:`source_${h}`;if(!r.nonCoreTaskExecutor){L.push({bindTo:T,skipped:!0,error:"No task executor configured"});continue}try{let k=await s("run-source-preflight",R,R.timeout??6e4);k.ok===!0&&!Object.prototype.hasOwnProperty.call(f,T)&&Object.prototype.hasOwnProperty.call(k,"resultValue")&&(N[T]=k.resultValue),L.push({bindTo:T,reachable:k.reachable,latencyMs:k.latencyMs,...k.ok===!0?{}:{error:typeof k.error=="string"?k.error:"Preflight run failed"}});}catch{L.push({bindTo:T,skipped:!0,error:"Executor does not support run-source-preflight"});}}let D=i.compute,U={},V=[];if(D&&Array.isArray(D)&&D.length>0){let h={id:y,card_data:A,requires:p,source_defs:i.source_defs,compute:D},R=a$2.runSync(h,{sourcesData:N});U=R.node.computed_values??{},V=R.errors??[];}return x({cardId:y,ok:m.isValid&&I.length===0&&V.length===0&&L.every(h=>!h.error),validation:m,source_probes:L,projection_errors:I,fetched_sources:N,computed_values:U,compute_errors:V})}catch(a){return _(a)}}return {describeTaskExecutorCapabilities:S,validateCardPreflight:o,evalCardCompute:l,probeSourcePreflight:E,runSourcePreflight:j,simulateCardCycle:$}}function te(e){let r="";for(let n=0;n<e.length;n++)r+=String.fromCharCode(e[n]);return btoa(r)}function ue(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 de(e){let r=new TextEncoder().encode(e);return te(r).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}function le(e){return a$1(e).slice(0,16)}function ne(){return globalThis.crypto&&typeof globalThis.crypto.randomUUID=="function"?globalThis.crypto.randomUUID():`${Date.now().toString(16)}-${Math.random().toString(16).slice(2,10)}`}function w(e){return de(String(e))}function B(){let e=String(Date.now()).padStart(13,"0"),r=Math.random().toString(36).slice(2,10).padEnd(8,"0");return `${e}-${r}`}function oe(e){try{return b$1(e)}catch{return null}}function Y(e,r){let n=oe(e);return n?.kind==="firestore"&&n.value?n.value:r}function v(e){if(e===void 0)return null;if(Array.isArray(e))return e.map(r=>v(r===void 0?null:r));if(e&&typeof e=="object"){let r=Object.entries(e).filter(([,n])=>n!==void 0).map(([n,t])=>[n,v(t)]);return Object.fromEntries(r)}return e}function se(e,r){return e.collection("boards").doc(r)}function F(e,r,n){return se(e,r).collection(n)}function Q(e){return {kind:"firestore",value:String(e)}}function q(e){return a(Q(e))}function fe(e){return {baseRef:Q(`boards/${e}`),cardStoreRef:q(`boards/${e}/cards`),outputsStoreRef:q(`boards/${e}/runtime-out`),scratchStoreRef:q(`boards/${e}/scratch`),archiveStoreRef:q(`boards/${e}/archive`),chatStoreRef:q(`boards/${e}/chat`),artifactsStoreRef:q(`boards/${e}/files`)}}function Z(e){return {async read(r){let n=await e.doc(w(r)).get();return n.exists?n.data()?.value??null:null},async write(r,n){await e.doc(w(r)).set(v({k:r,value:n}));},async delete(r){await e.doc(w(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 ie(e){return {async append(r){let n=B();return await e.doc(n).set(v({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(o=>{let l=o.data()??{};return {id:String(l.id??o.id),payload:l.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 J(e){return {async read(r){let n=await e.doc(w(r)).get();return n.exists?n.data()?.content??null:null},async write(r,n){await e.doc(w(r)).set({k:r,content:n});},async exists(r){return (await e.doc(w(r)).get()).exists},async remove(r){await e.doc(w(r)).delete();},async readBytes(r){let n=await e.doc(w(r)).get();if(!n.exists)return null;let t=n.data()??{};return typeof t.bytesBase64=="string"?ue(t.bytesBase64):typeof t.content=="string"?new TextEncoder().encode(t.content):null},async writeBytes(r,n){await e.doc(w(r)).set({k:r,bytesBase64:te(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(w(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")}}}}function ee(e){let r=J(e);return {...r,async getUniqueKey(n="scratch-",t=""){return `${n}${B()}${t}`},async create(n,t="scratch-",s=""){let o=`${t}${B()}${s}`;return await r.write(o,n),o},keyRef(n){return Q(`${e.path}/${w(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 re(e,r){let n=se(e,r);return {stream(t){return ie(n.collection(`archive-stream-${t}`))},blob(t){return J(n.collection(`archive-blob-${t}`))},async listStreams(t=""){return typeof n.listCollections!="function"?[]:(await n.listCollections()).map(o=>o.path.split("/").at(-1)??"").filter(o=>o.startsWith(`archive-stream-${t}`)).map(o=>o.slice(15))},async listBlobs(t=""){return typeof n.listCollections!="function"?[]:(await n.listCollections()).map(o=>o.path.split("/").at(-1)??"").filter(o=>o.startsWith(`archive-blob-${t}`)).map(o=>o.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(v({[t]:s}),{merge:true});}}}}function ge(e,r={}){let n=r.holderId??ne(),t=r.ttlMs??3e4;return {async tryAcquire(){try{await e.firestore.runTransaction(async s=>{let o=await s.get(e),l=new Date().toISOString();if(o.exists){let g=o.data()??{};if(g.held===!0&&typeof g.expiresAt=="string"&&g.expiresAt>l)throw Object.assign(new Error("locked"),{code:"locked"})}s.set(e,{held:!0,holderId:n,acquiredAt:l,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 o=await s.get(e);if(!o.exists)return;(o.data()??{}).holderId===n&&s.update(e,{held:!1,holderId:null});});}catch{}}}}}function M(e,r={}){let n=r.defaultVisibilityMs??3e4;return {async enqueue(t){let s=B(),o=new Date().toISOString();return await e.doc(s).set(v({id:s,body:t,enqueuedAt:o,attempt:0,visibleAfter:o,leaseToken:null,leaseExpiresAt:null,dead:false,deadReason:null})),{id:s,body:t,enqueuedAt:o,attempt:0}},async enqueueIfAbsent(t,s){if((await e.where("dedupKey","==",s).where("dead","==",false).limit(1).get()).docs.length>0)return null;let l=B(),g=new Date().toISOString();return await e.doc(l).set(v({id:l,body:t,dedupKey:s,enqueuedAt:g,attempt:0,visibleAfter:g,leaseToken:null,leaseExpiresAt:null,dead:false,deadReason:null})),{id:l,body:t,enqueuedAt:g,attempt:0}},async lease(t={}){let s=Math.max(1,Number(t.max??1)),o=Math.max(1,Number(t.visibilityMs??n)),l=new Date().toISOString(),g=await e.where("dead","==",false).where("visibleAfter","<=",l).orderBy("visibleAfter").limit(s*4).get(),S=[];for(let E of g.docs){if(S.length>=s)break;let j=e.doc(E.id);try{let $=null;await e.firestore.runTransaction(async c=>{let a=await c.get(j);if(!a.exists)throw new Error("gone");let i=a.data()??{},y=new Date().toISOString();if(i.dead===!0)throw new Error("dead");if(typeof i.visibleAfter=="string"&&i.visibleAfter>y)throw new Error("hidden");if(i.leaseToken&&typeof i.leaseExpiresAt=="string"&&i.leaseExpiresAt>y)throw new Error("leased");let f=ne(),p=new Date(Date.now()+o).toISOString(),u=Number(i.attempt??0)+1;c.update(j,{leaseToken:f,leaseExpiresAt:p,attempt:u}),$={id:String(i.id??E.id),body:i.body,enqueuedAt:String(i.enqueuedAt??y),attempt:u,leaseToken:f,leaseExpiresAt:p};}),$&&S.push($);}catch{}}return S},async ack(t,s){try{return await e.firestore.runTransaction(async o=>{let l=e.doc(t),g=await o.get(l);if(!g.exists)return;if((g.data()??{}).leaseToken!==s)throw new Error("token mismatch");o.delete(l);}),!0}catch{return false}},async nack(t,s,o={}){try{return await e.firestore.runTransaction(async l=>{let g=e.doc(t),S=await l.get(g);if(!S.exists)return;if((S.data()??{}).leaseToken!==s)throw new Error("token mismatch");o.dead===!0?l.update(g,{dead:!0,deadReason:o.reason??"nacked",leaseToken:null,leaseExpiresAt:null}):l.update(g,{leaseToken:null,leaseExpiresAt:null,visibleAfter:new Date().toISOString()});}),!0}catch{return false}},async peekActive(t=""){return (await e.where("dead","==",false).orderBy("enqueuedAt").get()).docs.map(o=>o.data()??{}).filter(o=>!t||String(o.id??"").startsWith(t)).map(o=>({id:String(o.id??""),body:o.body,enqueuedAt:String(o.enqueuedAt??""),attempt:Number(o.attempt??0)}))},async peekDeadLetter(t=""){return (await e.where("dead","==",true).orderBy("enqueuedAt").get()).docs.map(o=>o.data()??{}).filter(o=>!t||String(o.id??"").startsWith(t)).map(o=>({id:String(o.id??""),body:o.body,enqueuedAt:String(o.enqueuedAt??""),attempt:Number(o.attempt??0),reason:o.deadReason}))}}}function ye(e,r,n={}){return i({boardId:r,kvStorage(t){return Z(F(e,r,`kv-${t||"root"}`))},kvStorageForRef(t){return Z(e.collection(Y(t,`boards/${r}/kv-root`)))},blobStorage(t){return J(F(e,r,`blobs-${t||"root"}`))},scratchStorage(){return ee(F(e,r,"scratch"))},scratchStorageForRef(t){return ee(e.collection(Y(t,`boards/${r}/scratch`)))},archiveFactory(){return re(e,r)},archiveFactoryForRef(t){let s=oe(t),o=s?.kind==="firestore-board"?s.value:r;return re(e,o)},journalStorage(){return ie(F(e,r,"journal"))},queueStorage:M(F(e,r,"worker-queue")),chatAgentQueueStorage:M(F(e,r,"chat-queue")),processAccumulatedQueueStorage:M(F(e,r,"process-queue")),lock:ge(F(e,r,"locks").doc("board-lock"),{holderId:n.holderId}),hashFn(t){return le(t)},genId(){return B()},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 Ae(e,r,n={}){let t={...fe(r),...n.refs??{}},s=ye(e,r,n);return {refs:t,boardAdapter:s,nonCore:ce(s,n)}}
2
- export{re as createFirestoreArchiveFactory,J as createFirestoreBlobStorage,ye as createFirestoreBoardAdapter,fe as createFirestoreBoardRefs,Ae as createFirestoreBoardRuntimeBundle,ie as createFirestoreJournalStorage,Z as createFirestoreKvStorage,ge as createFirestoreLock,M as createFirestoreQueueStorage,ee as createFirestoreScratchStorage,Q as makeFirestoreRef,q as serializeFirestoreRef};//# sourceMappingURL=index.js.map
1
+ import {a as a$1}from'../chunk-VS3BXEYK.js';import {a as a$3}from'../chunk-YBYXCFAI.js';import {b}from'../chunk-Y4WK7HE4.js';import'../chunk-7BTZCOT5.js';import'../chunk-GU3T75C4.js';import {c,b as b$2}from'../chunk-NNSBBO5R.js';import'../chunk-HEEDJEKM.js';import'../chunk-DOFNXJ4C.js';import'../chunk-ANKA7HEJ.js';import {a,b as b$1}from'../chunk-44L64VQ2.js';import'../chunk-VGT3TRQG.js';import'../chunk-WDPOGXTY.js';import {a as a$2}from'../chunk-JMDHDY6M.js';import'../chunk-3KC6LBOG.js';import'../chunk-MNEOJWPS.js';import'../chunk-KBELAKIY.js';import'../chunk-FW4363Y4.js';function x(e){return {status:"success",data:e}}function S(e){return {status:"fail",error:e}}function q(e){return {status:"error",error:e instanceof Error?e.message:String(e)}}function $(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:{}}function ue(e){return String(e).replace(/[^a-zA-Z0-9_-]/g,"_")}function de(e,t={}){let n=()=>b$2(e.kvStorage("config"));async function r(){return await n().readTaskExecutorRef().catch(()=>{})}async function s(c,i,a){if(!t.nonCoreTaskExecutor)throw new Error(`${c} is not supported on the hosted Firestore runtime yet`);let y=await t.nonCoreTaskExecutor({subcommand:c,...i!==void 0?{input:typeof i=="string"?i:JSON.stringify(i)}:{},...a!==void 0?{timeoutMs:a}:{}});return $(y)}async function o(c){try{if(!c.body||typeof c.body!="object"||Array.isArray(c.body))return S("validateCardPreflight requires card JSON object in body");let i=c.body,a=i["card-content"]??i,y=typeof a.id=="string"?a.id:"(unknown)",g=a$3(a),p=Array.isArray(a.source_defs)&&a.source_defs.length>0,d=[...g.issues];if(p)if(t.nonCoreTaskExecutor)for(let m of a.source_defs){let f=typeof m.bindTo=="string"?m.bindTo:"(unknown)";try{let R=await s("validate-source-def",m,1e4);if(R.ok!==!0&&Array.isArray(R.errors))for(let C of R.errors)typeof C=="string"&&C&&d.push(`source "${f}": ${C}`);}catch(R){d.push(`source "${f}": executor validate-source-def failed \u2014 ${R instanceof Error?R.message:String(R)}`);}}else await r()&&d.push("executor-backed source_def preflight is not supported on the hosted Firestore runtime yet");return x({cardId:y,isValid:d.length===0,issues:d})}catch(i){return q(i)}}function u(c){try{if(!c.body||typeof c.body!="object"||Array.isArray(c.body))return S("evalCardCompute requires a JSON object in body");let i=c.body,a=i["card-content"]??i,y=typeof a.id=="string"?a.id:"(unknown)",g=i["mock-fetched-sources"]??{},p=i["mock-requires"]??{},d=a.compute;if(!d||!Array.isArray(d)||d.length===0)return x({cardId:y,ok:!0,computed_values:{},errors:[]});let m={id:y,card_data:a.card_data??{},requires:p,source_defs:a.source_defs,compute:d},f=a$2.runSync(m,{sourcesData:g});return x({cardId:y,ok:(f.errors??[]).length===0,computed_values:f.node.computed_values??{},errors:f.errors??[]})}catch(i){return q(i)}}async function l(c){return await r(),S(`${c} is not supported on the hosted Firestore runtime yet`)}async function w(){try{return t.nonCoreTaskExecutor?x(await s("describe-capabilities",void 0,1e4)):await l("describeTaskExecutorCapabilities")}catch(c){return q(c)}}async function E(c){try{if(!t.nonCoreTaskExecutor)return await l("probeSourcePreflight");if(!c.body||typeof c.body!="object"||Array.isArray(c.body))return S("probeSourcePreflight requires card JSON object in body");let i=c.body,a=i["card-content"]??i,y=$(i["mock-projections"]??{}),g=c.params?.sourceIdx,p=Array.isArray(a.source_defs)?a.source_defs:[];if(g===void 0)return S("probeSourcePreflight requires params.sourceIdx");if(g<0||g>=p.length)return S(`sourceIdx ${g} out of range (card has ${p.length} source(s))`);let d=p[g],m=typeof d.bindTo=="string"?d.bindTo:"source",f=await s("probe-source-preflight",{...d,_projections:y},d.timeout??6e4);return f.ok!==!0?S(typeof f.error=="string"?f.error:"Preflight probe failed"):x({bindTo:m,reachable:f.reachable,latencyMs:f.latencyMs,...typeof f.note=="string"?{note:f.note}:{}})}catch(i){return q(i)}}async function D(c){try{if(!t.nonCoreTaskExecutor)return await l("runSourcePreflight");if(!c.body||typeof c.body!="object"||Array.isArray(c.body))return S("runSourcePreflight requires card JSON object in body");let i=c.body,a=i["card-content"]??i,y=$(i["mock-projections"]??{}),g=c.params?.sourceIdx,p=Array.isArray(a.source_defs)?a.source_defs:[];if(g===void 0)return S("runSourcePreflight requires params.sourceIdx");if(g<0||g>=p.length)return S(`sourceIdx ${g} out of range (card has ${p.length} source(s))`);let d=p[g],m=typeof d.bindTo=="string"?d.bindTo:"source",f=await s("run-source-preflight",{...d,_projections:y},d.timeout??6e4);return f.ok!==!0?x({bindTo:m,ok:!1,result:null,issues:[typeof f.error=="string"?f.error:"Preflight run failed"]}):x({bindTo:m,ok:!0,result:Object.prototype.hasOwnProperty.call(f,"resultValue")?f.resultValue:null,issues:[]})}catch(i){return q(i)}}async function B(c){try{if(!c.body||typeof c.body!="object"||Array.isArray(c.body))return S("simulateCardCycle requires a JSON object in body");let i=c.body,a=i["card-content"]??i,y=typeof a.id=="string"?a.id:"(unknown)",g=$(i["mock-fetched-sources"]??{}),p=$(i["mock-requires"]??{}),d=await o({body:{"card-content":a}}),m=d.status==="success"?{isValid:d.data.isValid,issues:d.data.issues}:{isValid:!1,issues:[d.status==="fail"?d.error:"internal error"]},f=Array.isArray(a.source_defs)?a.source_defs:[],R=$(a.card_data??{}),C=[],V=[];if(f.length>0){C=a$2.enrichSourcesSync(f,{card_data:R,requires:p});for(let b of C){let A=b.projections,T=b._projections;if(A&&T){for(let k of Object.keys(A))if(T[k]===void 0){let ce=typeof b.bindTo=="string"?b.bindTo:"(unknown)";V.push({bindTo:ce,key:k,error:`Projection "${k}" resolved to undefined`});}}}}let L=[],K={...g};for(let b=0;b<C.length;b+=1){let A=C[b],T=typeof A.bindTo=="string"?A.bindTo:`source_${b}`;if(!t.nonCoreTaskExecutor){L.push({bindTo:T,skipped:!0,error:"No task executor configured"});continue}try{let k=await s("run-source-preflight",A,A.timeout??6e4);k.ok===!0&&!Object.prototype.hasOwnProperty.call(g,T)&&Object.prototype.hasOwnProperty.call(k,"resultValue")&&(K[T]=k.resultValue),L.push({bindTo:T,reachable:k.reachable,latencyMs:k.latencyMs,...k.ok===!0?{}:{error:typeof k.error=="string"?k.error:"Preflight run failed"}});}catch{L.push({bindTo:T,skipped:!0,error:"Executor does not support run-source-preflight"});}}let O=a.compute,H={},Q=[];if(O&&Array.isArray(O)&&O.length>0){let b={id:y,card_data:R,requires:p,source_defs:a.source_defs,compute:O},A=a$2.runSync(b,{sourcesData:K});H=A.node.computed_values??{},Q=A.errors??[];}return x({cardId:y,ok:m.isValid&&V.length===0&&Q.length===0&&L.every(b=>!b.error),validation:m,source_probes:L,projection_errors:V,fetched_sources:K,computed_values:H,compute_errors:Q})}catch(i){return q(i)}}return {describeTaskExecutorCapabilities:w,validateCardPreflight:o,evalCardCompute:u,probeSourcePreflight:E,runSourcePreflight:D,simulateCardCycle:B}}function ne(e){let t="";for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return btoa(t)}function le(e){let t=atob(e),n=new Uint8Array(t.length);for(let r=0;r<t.length;r++)n[r]=t.charCodeAt(r);return n}function fe(e){let t=new TextEncoder().encode(e);return ne(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}function ge(e){return a$1(e).slice(0,16)}function oe(){return globalThis.crypto&&typeof globalThis.crypto.randomUUID=="function"?globalThis.crypto.randomUUID():`${Date.now().toString(16)}-${Math.random().toString(16).slice(2,10)}`}function h(e){return fe(String(e))}function _(){let e=String(Date.now()).padStart(13,"0"),t=Math.random().toString(36).slice(2,10).padEnd(8,"0");return `${e}-${t}`}function se(e){try{return b$1(e)}catch{return null}}function P(e,t){let n=se(e);return n?.kind==="firestore"&&n.value?n.value:t}function v(e){if(e===void 0)return null;if(Array.isArray(e))return e.map(t=>v(t===void 0?null:t));if(e&&typeof e=="object"){let t=Object.entries(e).filter(([,n])=>n!==void 0).map(([n,r])=>[n,v(r)]);return Object.fromEntries(t)}return e}function ae(e,t){return e.collection("boards").doc(t)}function j(e,t,n){return ae(e,t).collection(n)}function U(e){return {kind:"firestore",value:String(e)}}function F(e){return a(U(e))}function ie(e){return {baseRef:U(`boards/${e}`),boardRuntimeStoreRef:F(`boards/${e}/runtime-board`),cardStoreRef:F(`boards/${e}/cards`),outputsStoreRef:F(`boards/${e}/runtime-out`),queueStoreRef:F(`boards/${e}/runtime`),scratchStoreRef:F(`boards/${e}/scratch`),chatStoreRef:F(`boards/${e}/chat`),artifactsStoreRef:F(`boards/${e}/files`),fetchedSourcesStoreRef:F(`boards/${e}/sources`)}}function J(e){return {async read(t){let n=await e.doc(h(t)).get();return n.exists?n.data()?.value??null:null},async write(t,n){await e.doc(h(t)).set(v({k:t,value:n}));},async delete(t){await e.doc(h(t)).delete();},async listKeys(t=""){return (await(t?e.where("k",">=",t).where("k","<",`${t}\uF8FF`).orderBy("k"):e.orderBy("k")).get()).docs.map(s=>s.data()?.k??s.id)}}}function N(e){return {async append(t){let n=_();return await e.doc(n).set(v({id:n,createdAt:new Date().toISOString(),payload:t})),{id:n,payload:t}},async readAll(){return (await e.orderBy("id").get()).docs.map(n=>{let r=n.data()??{};return {id:String(r.id??n.id),payload:r.payload}})},async readAfter(t){let s=(await(t?e.where("id",">",t).orderBy("id"):e.orderBy("id")).get()).docs.map(o=>{let u=o.data()??{};return {id:String(u.id??o.id),payload:u.payload}});return {entries:s,newCursor:s.length>0?s[s.length-1].id:t}},async clear(){let t=await e.get();if(typeof e.firestore.batch=="function"){let n=e.firestore.batch();for(let r of t.docs)n.delete(e.doc(r.id));await n.commit();return}await Promise.all(t.docs.map(n=>e.doc(n.id).delete()));}}}function M(e){return {async read(t){let n=await e.doc(h(t)).get();return n.exists?n.data()?.content??null:null},async write(t,n){await e.doc(h(t)).set({k:t,content:n});},async exists(t){return (await e.doc(h(t)).get()).exists},async remove(t){await e.doc(h(t)).delete();},async readBytes(t){let n=await e.doc(h(t)).get();if(!n.exists)return null;let r=n.data()??{};return typeof r.bytesBase64=="string"?le(r.bytesBase64):typeof r.content=="string"?new TextEncoder().encode(r.content):null},async writeBytes(t,n){await e.doc(h(t)).set({k:t,bytesBase64:ne(n)});},async listKeys(t=""){return (await(t?e.where("k",">=",t).where("k","<",`${t}\uF8FF`).orderBy("k"):e.orderBy("k")).get()).docs.map(s=>s.data()?.k??s.id)},async stat(t){let n=await e.doc(h(t)).get();if(!n.exists)return null;let r=n.data()??{},s=typeof r.bytesBase64=="string"?Math.floor(r.bytesBase64.length*3/4):typeof r.content=="string"?r.content.length:0;return {key:t,size:s,contentType:String(r.contentType??"application/octet-stream")}},async renameKey(t,n){let r=await e.doc(h(t)).get();if(!r.exists)return false;let s=r.data()??{};return await e.doc(h(n)).set({...s,k:n}),await e.doc(h(t)).delete(),true}}}function re(e){let t=M(e);return {...t,async getUniqueKey(n="scratch-",r=""){return `${n}${_()}${r}`},async create(n,r="scratch-",s=""){let o=`${r}${_()}${s}`;return await t.write(o,n),o},keyRef(n){return U(`${e.path}/${h(n)}`)},config:{async get(n){let r=await t.read(`__config__/${n}`);if(r==null)return null;try{return JSON.parse(r)}catch{return r}},async set(n,r){await t.write(`__config__/${n}`,JSON.stringify(r));}}}}function te(e,t){let n=ae(e,t);return {stream(r){return N(n.collection(`archive-stream-${r}`))},blob(r){return M(n.collection(`archive-blob-${r}`))},async listStreams(r=""){return typeof n.listCollections!="function"?[]:(await n.listCollections()).map(o=>o.path.split("/").at(-1)??"").filter(o=>o.startsWith(`archive-stream-${r}`)).map(o=>o.slice(15))},async listBlobs(r=""){return typeof n.listCollections!="function"?[]:(await n.listCollections()).map(o=>o.path.split("/").at(-1)??"").filter(o=>o.startsWith(`archive-blob-${r}`)).map(o=>o.slice(13))},config:{async get(r){let s=await n.collection("archive-config").doc("main").get();return s.exists?s.data()?.[r]??null:null},async set(r,s){await n.collection("archive-config").doc("main").set(v({[r]:s}),{merge:true});}}}}function ye(e,t={}){let n=t.holderId??oe(),r=t.ttlMs??3e4;return {async tryAcquire(){try{await e.firestore.runTransaction(async s=>{let o=await s.get(e),u=new Date().toISOString();if(o.exists){let l=o.data()??{};if(l.held===!0&&typeof l.expiresAt=="string"&&l.expiresAt>u)throw Object.assign(new Error("locked"),{code:"locked"})}s.set(e,{held:!0,holderId:n,acquiredAt:u,expiresAt:new Date(Date.now()+r).toISOString()});});}catch(s){if(s?.code==="locked")return null;throw s}return async()=>{try{await e.firestore.runTransaction(async s=>{let o=await s.get(e);if(!o.exists)return;(o.data()??{}).holderId===n&&s.update(e,{held:!1,holderId:null});});}catch{}}}}}function pe(e,t={}){let n=t.defaultVisibilityMs??3e4;return {async enqueue(r){let s=_(),o=new Date().toISOString();return await e.doc(s).set(v({id:s,body:r,enqueuedAt:o,attempt:0,staged:false,visibleAfter:o,leaseToken:null,leaseExpiresAt:null,dead:false,deadReason:null})),{id:s,body:r,enqueuedAt:o,attempt:0}},async enqueueMany(r){let s=[];for(let o of r)s.push(await this.enqueue(o));return s},async enqueueIfAbsent(r,s){if((await e.where("dedupKey","==",s).where("dead","==",false).limit(1).get()).docs.length>0)return null;let u=_(),l=new Date().toISOString();return await e.doc(u).set(v({id:u,body:r,dedupKey:s,enqueuedAt:l,attempt:0,staged:false,visibleAfter:l,leaseToken:null,leaseExpiresAt:null,dead:false,deadReason:null})),{id:u,body:r,enqueuedAt:l,attempt:0}},async stage(r,s={}){if(s.dedupKey&&(await e.where("dedupKey","==",s.dedupKey).where("dead","==",false).limit(1).get()).docs.length>0)return null;let o=_(),u=new Date().toISOString();return await e.doc(o).set(v({id:o,body:r,dedupKey:s.dedupKey,enqueuedAt:u,attempt:0,staged:true,visibleAfter:null,leaseToken:null,leaseExpiresAt:null,dead:false,deadReason:null})),{id:o,body:r,enqueuedAt:u,attempt:0}},async commitStaged(r){try{return await e.firestore.runTransaction(async s=>{let o=e.doc(r),u=await s.get(o);if(!u.exists)throw new Error("missing");let l=u.data()??{};if(l.dead===!0||l.staged!==!0)throw new Error("not-staged");s.update(o,{staged:!1,enqueuedAt:new Date().toISOString(),attempt:0,visibleAfter:new Date().toISOString()});}),!0}catch{return false}},async discardStaged(r,s){try{return await e.firestore.runTransaction(async o=>{let u=e.doc(r),l=await o.get(u);if(!l.exists)throw new Error("missing");let w=l.data()??{};if(w.dead===!0||w.staged!==!0)throw new Error("not-staged");o.update(u,{staged:!1,dead:!0,deadReason:s??"discarded"});}),!0}catch{return false}},async peekStaged(r=""){return (await e.where("dead","==",false).where("staged","==",true).orderBy("enqueuedAt").get()).docs.map(o=>o.data()??{}).filter(o=>!r||String(o.id??"").startsWith(r)).map(o=>({id:String(o.id??""),body:o.body,enqueuedAt:String(o.enqueuedAt??""),attempt:Number(o.attempt??0)}))},async lease(r={}){let s=Math.max(1,Number(r.max??1)),o=Math.max(1,Number(r.visibilityMs??n)),u=new Date().toISOString(),l=await e.where("dead","==",false).where("staged","==",false).where("visibleAfter","<=",u).orderBy("visibleAfter").limit(s*4).get(),w=[];for(let E of l.docs){if(w.length>=s)break;let D=e.doc(E.id);try{let B=null;await e.firestore.runTransaction(async c=>{let i=await c.get(D);if(!i.exists)throw new Error("gone");let a=i.data()??{},y=new Date().toISOString();if(a.dead===!0)throw new Error("dead");if(a.staged===!0)throw new Error("staged");if(typeof a.visibleAfter=="string"&&a.visibleAfter>y)throw new Error("hidden");if(a.leaseToken&&typeof a.leaseExpiresAt=="string"&&a.leaseExpiresAt>y)throw new Error("leased");let g=oe(),p=new Date(Date.now()+o).toISOString(),d=Number(a.attempt??0)+1;c.update(D,{leaseToken:g,leaseExpiresAt:p,attempt:d}),B={id:String(a.id??E.id),body:a.body,enqueuedAt:String(a.enqueuedAt??y),attempt:d,leaseToken:g,leaseExpiresAt:p};}),B&&w.push(B);}catch{}}return w},async ack(r,s){try{return await e.firestore.runTransaction(async o=>{let u=e.doc(r),l=await o.get(u);if(!l.exists)return;if((l.data()??{}).leaseToken!==s)throw new Error("token mismatch");o.delete(u);}),!0}catch{return false}},async nack(r,s,o={}){try{return await e.firestore.runTransaction(async u=>{let l=e.doc(r),w=await u.get(l);if(!w.exists)return;if((w.data()??{}).leaseToken!==s)throw new Error("token mismatch");o.dead===!0?u.update(l,{dead:!0,deadReason:o.reason??"nacked",leaseToken:null,leaseExpiresAt:null}):u.update(l,{leaseToken:null,leaseExpiresAt:null,visibleAfter:new Date().toISOString()});}),!0}catch{return false}},async peekActive(r=""){return (await e.where("dead","==",false).where("staged","==",false).orderBy("enqueuedAt").get()).docs.map(o=>o.data()??{}).filter(o=>!r||String(o.id??"").startsWith(r)).map(o=>({id:String(o.id??""),body:o.body,enqueuedAt:String(o.enqueuedAt??""),attempt:Number(o.attempt??0)}))},async peekDeadLetter(r=""){return (await e.where("dead","==",true).orderBy("enqueuedAt").get()).docs.map(o=>o.data()??{}).filter(o=>!r||String(o.id??"").startsWith(r)).map(o=>({id:String(o.id??""),body:o.body,enqueuedAt:String(o.enqueuedAt??""),attempt:Number(o.attempt??0),reason:o.deadReason}))}}}function me(e,t,n={}){return c({boardId:t,kvStorage(r){return J(j(e,t,`kv-${r||"root"}`))},kvStorageForRef(r){return J(e.collection(P(r,`boards/${t}/kv-root`)))},blobStorage(r){return M(j(e,t,`blobs-${r||"root"}`))},blobStorageForRef(r){return M(e.collection(P(r,`boards/${t}/blobs-root`)))},chatStorageForRef(r){let s=P(r,`boards/${t}/chat`);return b(o=>N(e.collection(`${s}-journal-${ue(o)}`)),J(e.collection(`${s}-kv`)))},queueStoreRef:ie(t).queueStoreRef,queueStorageForRef(r,s){let o=P(r,`boards/${t}/runtime`);return pe(e.collection(`${o}-${s}`))},scratchStorage(){return re(j(e,t,"scratch"))},scratchStorageForRef(r){return re(e.collection(P(r,`boards/${t}/scratch`)))},archiveFactory(){return te(e,t)},archiveFactoryForRef(r){let s=se(r),o=s?.kind==="firestore-board"?s.value:t;return te(e,o)},journalStorage(){return N(j(e,t,"journal"))},journalStorageForRef(r){let s=P(r,`boards/${t}/runtime-board`);return N(e.collection(`${s}-journal`))},lock:ye(j(e,t,"locks").doc("board-lock"),{holderId:n.holderId}),hashFn(r){return ge(r)},genId(){return _()},supportsDirectSourceOutput(r){return r.howToRun==="queue-storage"||r.howToRun==="http:post"},requestProcessAccumulated:n.requestProcessAccumulated,publishBoardChangeNotifications:n.publishBoardChangeNotifications,onWarn:r=>console.warn(`[firestore-board-adapter:${t}] ${r}`)})}function Ce(e,t,n={}){let r={...ie(t),...n.refs??{}},s=me(e,t,n);return {refs:r,boardAdapter:s,nonCore:de(s,n)}}
2
+ export{te as createFirestoreArchiveFactory,M as createFirestoreBlobStorage,me as createFirestoreBoardAdapter,ie as createFirestoreBoardRefs,Ce as createFirestoreBoardRuntimeBundle,N as createFirestoreJournalStorage,J as createFirestoreKvStorage,ye as createFirestoreLock,pe as createFirestoreQueueStorage,re as createFirestoreScratchStorage,U as makeFirestoreRef,F as serializeFirestoreRef};//# sourceMappingURL=index.js.map
3
3
  //# sourceMappingURL=index.js.map
package/lib/index.d.cts CHANGED
@@ -12,7 +12,7 @@ export { CommandSpec, GraphMutation, Journal, MemoryJournal, ProcessHandlerOptio
12
12
  export { B as BlockedTask, D as DownstreamResult, L as LiveBoard, a as LiveCard, b as LiveCardsToReactiveOptions, c as LiveCardsToReactiveResult, d as LiveGraph, e as LiveGraphHealth, f as LiveGraphSnapshot, N as NodeInfo, P as PendingTask, R as ReactiveGraph, g as ReactiveGraphOptions, S as ScheduleResult, T as TaskHandlerFn, h as TaskHandlerInput, i as TaskHandlerReturn, U as UnreachableNodesResult, j as UnreachableTokensResult, k as UnresolvedDependency, l as UpstreamResult, m as createReactiveGraph, n as liveCardsToReactiveGraph, s as schedule } from './live-cards-bridge-Bwi-lbBT.cjs';
13
13
  export { BoardLiveGraphRuntime, BoardLiveGraphRuntimeOptions, BoardLiveGraphRuntimeUpdate, BoardRuntimeView, BoardTaskExecutor, BoardTaskExecutorContext, BrowserSourceAdapter, BrowserSourceAdapterContext, LiveCardRuntimeModel, createBoardLiveGraphRuntime } from './board-livegraph-runtime/index.cjs';
14
14
  export { CardCompute, ComputeNode, ComputeStep, ValidationResult, validateLiveCard, validateLiveCardDefinition, validateLiveCardRuntimeExpressions, validateLiveCardSchema } from './card-compute/index.cjs';
15
- import './storage-interface-BFiD3kyB.cjs';
15
+ import './storage-interface-D-iEiTJA.cjs';
16
16
 
17
17
  /**
18
18
  * schema-validator — Full JSON Schema validation for published runtime artifacts.
package/lib/index.d.ts CHANGED
@@ -12,7 +12,7 @@ export { CommandSpec, GraphMutation, Journal, MemoryJournal, ProcessHandlerOptio
12
12
  export { B as BlockedTask, D as DownstreamResult, L as LiveBoard, a as LiveCard, b as LiveCardsToReactiveOptions, c as LiveCardsToReactiveResult, d as LiveGraph, e as LiveGraphHealth, f as LiveGraphSnapshot, N as NodeInfo, P as PendingTask, R as ReactiveGraph, g as ReactiveGraphOptions, S as ScheduleResult, T as TaskHandlerFn, h as TaskHandlerInput, i as TaskHandlerReturn, U as UnreachableNodesResult, j as UnreachableTokensResult, k as UnresolvedDependency, l as UpstreamResult, m as createReactiveGraph, n as liveCardsToReactiveGraph, s as schedule } from './live-cards-bridge-YL6AWawT.js';
13
13
  export { BoardLiveGraphRuntime, BoardLiveGraphRuntimeOptions, BoardLiveGraphRuntimeUpdate, BoardRuntimeView, BoardTaskExecutor, BoardTaskExecutorContext, BrowserSourceAdapter, BrowserSourceAdapterContext, LiveCardRuntimeModel, createBoardLiveGraphRuntime } from './board-livegraph-runtime/index.js';
14
14
  export { CardCompute, ComputeNode, ComputeStep, ValidationResult, validateLiveCard, validateLiveCardDefinition, validateLiveCardRuntimeExpressions, validateLiveCardSchema } from './card-compute/index.js';
15
- import './storage-interface-BFiD3kyB.js';
15
+ import './storage-interface-D-iEiTJA.js';
16
16
 
17
17
  /**
18
18
  * schema-validator — Full JSON Schema validation for published runtime artifacts.