yaml-flow 8.8.7 → 8.9.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 (155) hide show
  1. package/browser/adapters/firestore-storage.js +2 -2
  2. package/browser/adapters/localstorage-storage.js +3 -3
  3. package/browser/asset-integrity.json +7 -7
  4. package/browser/server-runtime-controlface.js +5 -5
  5. package/examples/board/test/server-http-test-browser.ts +2394 -0
  6. package/examples/board/test/server-http-test.js +44 -35
  7. package/lib/{artifacts-store-lib-C6qBpMfU.d.cts → artifacts-store-lib-CqkJEgbx.d.cts} +1 -1
  8. package/lib/{artifacts-store-lib-D4qf7Q-7.d.ts → artifacts-store-lib-D6Bo4yFN.d.ts} +1 -1
  9. package/lib/artifacts-store-public.d.cts +5 -3
  10. package/lib/artifacts-store-public.d.ts +5 -3
  11. package/lib/board-callback-transport-Bekq8Gp-.d.ts +71 -0
  12. package/lib/board-callback-transport-kP0K6UMq.d.cts +71 -0
  13. package/lib/board-live-cards-lib-DVh3t9NT.d.cts +222 -0
  14. package/lib/board-live-cards-lib-iU8xOwNp.d.ts +222 -0
  15. package/lib/board-live-cards-mcp.cjs +1 -1
  16. package/lib/board-live-cards-mcp.d.cts +4 -8
  17. package/lib/board-live-cards-mcp.d.ts +4 -8
  18. package/lib/board-live-cards-mcp.js +1 -1
  19. package/lib/board-live-cards-node.cjs +7 -7
  20. package/lib/board-live-cards-node.d.cts +15 -11
  21. package/lib/board-live-cards-node.d.ts +15 -11
  22. package/lib/board-live-cards-node.js +7 -7
  23. package/lib/{board-live-cards-public-async-CYjr4mgX.d.cts → board-live-cards-public-async-Cl0M3j5P.d.cts} +6 -4
  24. package/lib/{board-live-cards-public-async-DlyC3PgC.d.ts → board-live-cards-public-async-U98IXUBx.d.ts} +6 -4
  25. package/lib/board-live-cards-public.cjs +1 -1
  26. package/lib/board-live-cards-public.d.cts +325 -3
  27. package/lib/board-live-cards-public.d.ts +325 -3
  28. package/lib/board-live-cards-public.js +1 -1
  29. package/lib/board-live-cards-server-runtime.cjs +1 -1
  30. package/lib/board-live-cards-server-runtime.d.cts +8 -6
  31. package/lib/board-live-cards-server-runtime.d.ts +8 -6
  32. package/lib/board-live-cards-server-runtime.js +1 -1
  33. package/lib/{board-platform-adapter-async-JP9V-U5E.d.ts → board-platform-adapter-async-ByBRFn1G.d.ts} +4 -3
  34. package/lib/{board-platform-adapter-async-BZIftm36.d.cts → board-platform-adapter-async-DjBwE0m9.d.cts} +4 -3
  35. package/lib/board-state-reducer.cjs +2 -0
  36. package/lib/board-state-reducer.d.cts +53 -0
  37. package/lib/board-state-reducer.d.ts +53 -0
  38. package/lib/board-state-reducer.js +2 -0
  39. package/lib/card-store-public.cjs +1 -1
  40. package/lib/card-store-public.d.cts +11 -4
  41. package/lib/card-store-public.d.ts +11 -4
  42. package/lib/card-store-public.js +1 -1
  43. package/lib/chat-store-public.cjs +1 -1
  44. package/lib/chat-store-public.d.cts +15 -4
  45. package/lib/chat-store-public.d.ts +15 -4
  46. package/lib/chat-store-public.js +1 -1
  47. package/lib/chunk-2RIHC5TZ.cjs +2 -0
  48. package/lib/chunk-37FDOKDK.js +3 -0
  49. package/lib/chunk-3S7LV2HZ.cjs +2 -0
  50. package/lib/chunk-3T5TMAWG.cjs +3 -0
  51. package/lib/chunk-5XLFPPTY.cjs +2 -0
  52. package/lib/{chunk-R44X3RQB.cjs → chunk-6EJRZHFP.cjs} +2 -2
  53. package/lib/{chunk-NNSBBO5R.js → chunk-6MD6FVE3.js} +2 -2
  54. package/lib/chunk-7QNEV5S3.js +2 -0
  55. package/lib/{chunk-6OPXQPSC.js → chunk-7UJQMFVS.js} +2 -2
  56. package/lib/chunk-BJGK5FNL.js +2 -0
  57. package/lib/{chunk-ETW3BXHD.cjs → chunk-BQJVCCFU.cjs} +2 -2
  58. package/lib/chunk-DQPBAB5Z.cjs +2 -0
  59. package/lib/chunk-JB4Q2W7I.js +7 -0
  60. package/lib/chunk-JYVYAAXT.js +3 -0
  61. package/lib/chunk-LFVMX23W.cjs +7 -0
  62. package/lib/chunk-NIBLKYXN.js +2 -0
  63. package/lib/chunk-OF4FPYNI.cjs +2 -0
  64. package/lib/chunk-P3R6TXII.js +3 -0
  65. package/lib/{chunk-7BTZCOT5.js → chunk-QLB6PKOT.js} +2 -2
  66. package/lib/chunk-R4YASXSJ.js +2 -0
  67. package/lib/chunk-RZRIXQ6A.cjs +3 -0
  68. package/lib/chunk-SDJ3747Q.cjs +2 -0
  69. package/lib/chunk-SJANU3PL.cjs +3 -0
  70. package/lib/chunk-UGB7PC4P.js +2 -0
  71. package/lib/chunk-VBYNMTWC.js +2 -0
  72. package/lib/{chunk-37HDEW26.cjs → chunk-WRMOGPRG.cjs} +2 -2
  73. package/lib/cloud-storage.cjs +1 -1
  74. package/lib/cloud-storage.d.cts +44 -8
  75. package/lib/cloud-storage.d.ts +44 -8
  76. package/lib/cloud-storage.js +1 -1
  77. package/lib/firebase-storage/index.d.cts +2 -2
  78. package/lib/firebase-storage/index.d.ts +2 -2
  79. package/lib/firestore-storage/index.cjs +2 -2
  80. package/lib/firestore-storage/index.d.cts +6 -5
  81. package/lib/firestore-storage/index.d.ts +6 -5
  82. package/lib/firestore-storage/index.js +2 -2
  83. package/lib/index.cjs +2 -2
  84. package/lib/index.d.cts +1 -1
  85. package/lib/index.d.ts +1 -1
  86. package/lib/index.js +1 -1
  87. package/lib/localstorage-storage/index.cjs +1 -1
  88. package/lib/localstorage-storage/index.d.cts +6 -5
  89. package/lib/localstorage-storage/index.d.ts +6 -5
  90. package/lib/localstorage-storage/index.js +1 -1
  91. package/lib/notification-consumer/index.cjs +2 -0
  92. package/lib/notification-consumer/index.d.cts +17 -0
  93. package/lib/notification-consumer/index.d.ts +17 -0
  94. package/lib/notification-consumer/index.js +2 -0
  95. package/lib/queue-storage-public.cjs +2 -0
  96. package/lib/queue-storage-public.d.cts +13 -0
  97. package/lib/queue-storage-public.d.ts +13 -0
  98. package/lib/queue-storage-public.js +2 -0
  99. package/lib/server-jobs-queue-runner/index.cjs +1 -1
  100. package/lib/server-jobs-queue-runner/index.d.cts +9 -7
  101. package/lib/server-jobs-queue-runner/index.d.ts +9 -7
  102. package/lib/server-jobs-queue-runner/index.js +1 -1
  103. package/lib/server-runtime/index.cjs +1 -1
  104. package/lib/server-runtime/index.d.cts +9 -7
  105. package/lib/server-runtime/index.d.ts +9 -7
  106. package/lib/server-runtime/index.js +1 -1
  107. package/lib/server-runtime-agentface/index.d.cts +8 -6
  108. package/lib/server-runtime-agentface/index.d.ts +8 -6
  109. package/lib/server-runtime-controlface/index.cjs +1 -1
  110. package/lib/server-runtime-controlface/index.d.cts +8 -6
  111. package/lib/server-runtime-controlface/index.d.ts +8 -6
  112. package/lib/server-runtime-controlface/index.js +1 -1
  113. package/lib/server-runtime-core/index.cjs +1 -1
  114. package/lib/server-runtime-core/index.d.cts +16 -37
  115. package/lib/server-runtime-core/index.d.ts +16 -37
  116. package/lib/server-runtime-core/index.js +1 -1
  117. package/lib/server-runtime-watchers/index.cjs +1 -1
  118. package/lib/server-runtime-watchers/index.d.cts +11 -8
  119. package/lib/server-runtime-watchers/index.d.ts +11 -8
  120. package/lib/server-runtime-watchers/index.js +1 -1
  121. package/lib/server-runtime-webhooks/index.d.cts +8 -6
  122. package/lib/server-runtime-webhooks/index.d.ts +8 -6
  123. package/lib/{sse-hub-DM8bw-dO.d.ts → sse-hub-BRBvymHR.d.cts} +18 -15
  124. package/lib/{sse-hub-BDjWI7JR.d.cts → sse-hub-D_94fV87.d.ts} +18 -15
  125. package/lib/step-machine-public/index.d.cts +1 -1
  126. package/lib/step-machine-public/index.d.ts +1 -1
  127. package/lib/{storage-async-interface-CyO-zwVQ.d.cts → storage-async-interface-CLOXiqwC.d.cts} +2 -2
  128. package/lib/{storage-async-interface-CG0bMqvE.d.ts → storage-async-interface-Cb-SULrI.d.ts} +2 -2
  129. package/lib/{storage-interface-D-iEiTJA.d.cts → storage-interface-DogVPooM.d.cts} +1 -1
  130. package/lib/{storage-interface-D-iEiTJA.d.ts → storage-interface-DogVPooM.d.ts} +1 -1
  131. package/lib/stores/index.d.cts +1 -1
  132. package/lib/stores/index.d.ts +1 -1
  133. package/lib/stores/kv.d.cts +1 -1
  134. package/lib/stores/kv.d.ts +1 -1
  135. package/lib/{types-BsfXZyI3.d.ts → types-BsqzUZNl.d.ts} +6 -4
  136. package/lib/{types-CPnYv7RC.d.cts → types-DxhB6Toz.d.cts} +6 -4
  137. package/package.json +16 -1
  138. package/lib/board-live-cards-public-BT5HrgqZ.d.cts +0 -529
  139. package/lib/board-live-cards-public-DSRamFm8.d.ts +0 -529
  140. package/lib/chunk-35N7ONTH.js +0 -2
  141. package/lib/chunk-36QUKFL7.cjs +0 -3
  142. package/lib/chunk-3MMTBEAO.js +0 -2
  143. package/lib/chunk-7QQFDYBM.js +0 -3
  144. package/lib/chunk-7QZ267XP.cjs +0 -2
  145. package/lib/chunk-ABAVFLDP.js +0 -7
  146. package/lib/chunk-EPCJYP4N.js +0 -3
  147. package/lib/chunk-H22NK6KH.cjs +0 -7
  148. package/lib/chunk-KBELAKIY.js +0 -2
  149. package/lib/chunk-OJ2CAQ4C.cjs +0 -2
  150. package/lib/chunk-Q3OTUDIE.js +0 -2
  151. package/lib/chunk-QG6ERLZQ.cjs +0 -3
  152. package/lib/chunk-UB54HZA4.cjs +0 -2
  153. package/lib/chunk-YMEIPKLW.cjs +0 -2
  154. package/lib/chunk-ZENTBLLA.cjs +0 -3
  155. package/lib/chunk-ZWVT24YW.js +0 -3
@@ -1,23 +1,27 @@
1
- import { a as ArtifactsStore } from './artifacts-store-lib-D4qf7Q-7.js';
2
- export { c as createArtifactsStore, b as createCardFileMetadataStore, d as createFileArtifactsStore } from './artifacts-store-lib-D4qf7Q-7.js';
1
+ import { a as ArtifactsStore } from './artifacts-store-lib-D6Bo4yFN.js';
2
+ export { c as createArtifactsStore, b as createCardFileMetadataStore, d as createFileArtifactsStore } from './artifacts-store-lib-D6Bo4yFN.js';
3
3
  import { ExecutionRef, ArgsMassaging } from './execution-refs.js';
4
4
  export { executionRefFromScriptPath, parseExecutionRef, serializeExecutionRef } from './execution-refs.js';
5
- import { c as BoardRuntimeNonCorePublic, i as BoardWorkerStore, f as BoardWorkerRequest, I as InvocationAdapter } from './types-BsfXZyI3.js';
6
- export { j as BoardWorkerDeadLetterRequest, k as BoardWorkerLeasedRequest, l as BoardWorkerQueuedRequest, D as DescribeEnvelope, m as createBoardWorkerStore } from './types-BsfXZyI3.js';
7
- import { a as KindValueRef, B as BlobStorage, f as QueueStorage } from './storage-interface-D-iEiTJA.js';
8
- export { p as parseRef, s as serializeRef } from './storage-interface-D-iEiTJA.js';
9
- import { f as ChatStorage, k as BoardCallbackTransport, d as BoardNonCorePlatformAdapter, e as BoardPlatformAdapter } from './board-live-cards-public-DSRamFm8.js';
10
- export { p as BOARD_GRAPH_KEY, l as BoardLiveCardsNonCorePublic, c as BoardLiveCardsPublic, i as ChatConfig, g as ChatRecord, C as CommandInput, a as CommandResult, E as EMPTY_CONFIG, L as LiveCard, q as SNAPSHOT_SCHEMA_VERSION_V1, r as createBoardLiveCardsNonCorePublic, s as createBoardLiveCardsPublic, t as createCardStore, u as createChatStorage, v as createHttpBoardCallbackTransport, w as createInMemoryChatStorage, x as createInProcessBoardCallbackTransport, y as createLocalNodeBoardCallbackTransport } from './board-live-cards-public-DSRamFm8.js';
5
+ import { c as BoardRuntimeNonCorePublic, i as BoardWorkerStore, f as BoardWorkerRequest, I as InvocationAdapter } from './types-BsqzUZNl.js';
6
+ export { j as BoardWorkerDeadLetterRequest, k as BoardWorkerLeasedRequest, l as BoardWorkerQueuedRequest, D as DescribeEnvelope, m as createBoardWorkerStore } from './types-BsqzUZNl.js';
7
+ import { a as KindValueRef, B as BlobStorage, Q as QueueStorage } from './storage-interface-DogVPooM.js';
8
+ export { p as parseRef, s as serializeRef } from './storage-interface-DogVPooM.js';
9
+ import { C as ChatStorage, B as BoardCallbackTransport } from './board-callback-transport-Bekq8Gp-.js';
10
+ export { c as ChatConfig, a as ChatRecord, d as createChatStorage, e as createHttpBoardCallbackTransport, f as createInMemoryChatStorage, g as createInProcessBoardCallbackTransport, h as createLocalNodeBoardCallbackTransport } from './board-callback-transport-Bekq8Gp-.js';
11
+ import { BoardNonCorePlatformAdapter, BoardPlatformAdapter } from './board-live-cards-public.js';
12
+ export { BoardLiveCardsNonCorePublic, BoardLiveCardsPublic, CommandInput, CommandResult, createBoardLiveCardsNonCorePublic, createBoardLiveCardsPublic } from './board-live-cards-public.js';
11
13
  export { BoardLiveCardsMcp, BoardLiveCardsMcpBoardStatusResult, BoardLiveCardsMcpDeps, BoardLiveCardsMcpDiscoverSourceKindsResult, BoardLiveCardsMcpFileDownloadDescriptor, BoardLiveCardsMcpInspectCardDefinitionAndRuntimeResult, BoardLiveCardsMcpInspectChatMessagesResult, BoardLiveCardsMcpManageUpsertCardResult, createBoardLiveCardsMcp } from './board-live-cards-mcp.js';
12
14
  export { createCardStorePublic } from './card-store-public.js';
15
+ export { QueueStoragePublic, createQueueStoragePublic } from './queue-storage-public.js';
13
16
  export { createArtifactsStorePublic } from './artifacts-store-public.js';
14
- import { A as AsyncBoardPlatformAdapter } from './board-platform-adapter-async-JP9V-U5E.js';
17
+ export { l as BOARD_GRAPH_KEY, E as EMPTY_CONFIG, L as LiveCard, S as SNAPSHOT_SCHEMA_VERSION_V1, r as createCardStore } from './board-live-cards-lib-iU8xOwNp.js';
18
+ import { A as AsyncBoardPlatformAdapter } from './board-platform-adapter-async-ByBRFn1G.js';
15
19
  import { Q as QueueLaneLease, a as QueueLaneDescriptor, b as QueueLaneRegistry } from './queue-lane-registry-PaZuFpwp.js';
16
20
  export { c as createQueueLaneRegistry } from './queue-lane-registry-PaZuFpwp.js';
17
- import './board-live-cards-public-async-DlyC3PgC.js';
21
+ import './board-live-cards-public-async-U98IXUBx.js';
18
22
  import './types-BBhqYGhE.js';
19
23
  import './chat-store-public.js';
20
- import './storage-async-interface-CG0bMqvE.js';
24
+ import './storage-async-interface-Cb-SULrI.js';
21
25
 
22
26
  /**
23
27
  * cli/common/args-massaging — JSONata-based mapping from logical args to
@@ -1,12 +1,12 @@
1
- import {a as a$2}from'./chunk-Y4WK7HE4.js';export{a as createChatStorage,c as createInMemoryChatStorage}from'./chunk-Y4WK7HE4.js';import {a as a$3}from'./chunk-O5UYCGIN.js';export{a as createArtifactsStore,c as createCardFileMetadataStore,b as createFileArtifactsStore}from'./chunk-O5UYCGIN.js';import {a as a$4}from'./chunk-RKKSVOP2.js';export{a as createBoardWorkerStore,b as createQueueLaneRegistry}from'./chunk-RKKSVOP2.js';import {a as a$5}from'./chunk-YBYXCFAI.js';import {a}from'./chunk-VGDLSS2H.js';import'./chunk-7BTZCOT5.js';import'./chunk-7QQFDYBM.js';import {b as b$1}from'./chunk-NNSBBO5R.js';import {g,y}from'./chunk-ZWVT24YW.js';export{n as BOARD_GRAPH_KEY,u as EMPTY_CONFIG,m as SNAPSHOT_SCHEMA_VERSION_V1,z as createBoardLiveCardsNonCorePublic,y as createBoardLiveCardsPublic,l as createCardStore,e as createHttpBoardCallbackTransport,f as createInProcessBoardCallbackTransport,g as createLocalNodeBoardCallbackTransport}from'./chunk-ZWVT24YW.js';export{a as executionRefFromScriptPath,c as parseExecutionRef,b as serializeExecutionRef}from'./chunk-ANKA7HEJ.js';import {a as a$1,b}from'./chunk-44L64VQ2.js';export{b as parseRef,a as serializeRef}from'./chunk-44L64VQ2.js';import'./chunk-VGT3TRQG.js';import'./chunk-WDPOGXTY.js';export{a as createBoardLiveCardsMcp}from'./chunk-35N7ONTH.js';import {a as a$6}from'./chunk-JMDHDY6M.js';import {d}from'./chunk-3KC6LBOG.js';import'./chunk-MNEOJWPS.js';export{a as createCardStorePublic}from'./chunk-KBELAKIY.js';export{a as createArtifactsStorePublic}from'./chunk-X3LC4LII.js';import {h}from'./chunk-J4MHQ7JF.js';import'./chunk-FW4363Y4.js';import {spawn,spawnSync,execFile,execFileSync}from'child_process';import*as i from'fs';import*as Oe from'os';import*as x from'path';import*as qe from'net';import {fileURLToPath}from'url';import {randomUUID,createHash}from'crypto';import {createRequire}from'module';import {lockSync}from'proper-lockfile';function C(...e){return x.join(...e)}function Ne(e){return x.isAbsolute(e)}function ue(){return randomUUID()}function Qe(e){return createHash("sha256").update(e).digest("hex")}function Je(e){return x.dirname(fileURLToPath(e))}function Pt(e){if(typeof e=="object"&&e!==null){let{command:r,args:o=[],...n}=e,s=Le(r,o);return {...n,command:s.command,args:s.args}}let t=De(e);if(t.length===0)throw new Error(`Empty command spec: ${JSON.stringify(e)}`);return Le(t[0],t.slice(1))}function Le(e,t){return /^(node|node\.exe)$/i.test(e)?{command:process.execPath,args:t}:/\.m?js$/i.test(e)?{command:process.execPath,args:[e,...t]}:{command:e,args:t}}function De(e){let t=[],r="",o=null;for(let n of e.trim()){if(o){n===o?o=null:r+=n;continue}if(n==='"'||n==="'"){o=n;continue}if(/\s/.test(n)){r&&(t.push(r),r="");continue}r+=n;}if(o)throw new Error(`Unterminated quote in command: ${e}`);return r&&t.push(r),t}function We(e){return process.platform==="win32"&&/\.(cmd|bat)$/i.test(e)}function He(e,t){let{command:r,args:o=[],cwd:n,env:s,timeoutMs:a}=e;return execFileSync(r,o,{shell:We(r),timeout:a,encoding:t?.encoding??"utf-8",cwd:n,windowsHide:true,env:s?{...process.env,...s}:void 0,input:t?.input})}function Ft(e,t){let{command:r,args:o=[],cwd:n,env:s,timeoutMs:a=3e4}=e;execFile(r,o,{shell:We(r),encoding:"utf8",windowsHide:true,timeout:a,maxBuffer:10*1024*1024,cwd:n,env:s?{...process.env,...s}:void 0},(g,S,c)=>t(g??null,S,c));}function Ke(e,t,r){let o=x.join(e,"board-live-cards-cli.js");if(i.existsSync(o))return {cmd:process.execPath,args:[o,t,...r]};let n=x.join(e,"board-live-cards-cli.ts"),a=[x.join(e,"..","..","..","node_modules","tsx","dist","cli.mjs"),x.join(e,"..","..","node_modules","tsx","dist","cli.mjs"),x.join(e,"..","..","..","node_modules",".bin","tsx"),x.join(e,"..","..","node_modules",".bin","tsx")].find(S=>i.existsSync(S));return i.existsSync(n)&&a?{cmd:process.execPath,args:[a,n,t,...r]}:{cmd:process.platform==="win32"?"npx.cmd":"npx",args:["tsx",n,t,...r]}}function Ve(e){let t=x.join(e,"board-live-cards-cli.mjs");if(i.existsSync(t))return t;let r=x.join(e,"..","..","..","dev","board-live-cards-cli.js");if(i.existsSync(r))return r;let o=x.join(e,"..","..","dev","board-live-cards-cli.js");if(i.existsSync(o))return o;let n=x.join(e,"board-live-cards-cli.js");if(i.existsSync(n))return n;throw new Error(`resolveBoardCliCallbackTarget: cannot find callback target in ${e} (expected dev/board-live-cards-cli.js wrapper, ${n}, or ${t})`)}function $t(e){return process.platform==="win32"?`\\\\.\\pipe\\${e}`:x.join(Oe.tmpdir(),`${e}.sock`)}var ce=new Map;function Ue(e,t,r){if(t.length===0)return;let o=t.map(g=>JSON.stringify(g)).join(`
1
+ import {a as a$2}from'./chunk-Y4WK7HE4.js';export{a as createChatStorage,c as createInMemoryChatStorage}from'./chunk-Y4WK7HE4.js';import {a as a$5}from'./chunk-YBYXCFAI.js';import {a as a$3}from'./chunk-O5UYCGIN.js';export{a as createArtifactsStore,c as createCardFileMetadataStore,b as createFileArtifactsStore}from'./chunk-O5UYCGIN.js';import {a as a$4}from'./chunk-RKKSVOP2.js';export{a as createBoardWorkerStore,b as createQueueLaneRegistry}from'./chunk-RKKSVOP2.js';import {h}from'./chunk-J4MHQ7JF.js';import {a}from'./chunk-VGDLSS2H.js';import'./chunk-QLB6PKOT.js';import'./chunk-JYVYAAXT.js';import {b as b$1}from'./chunk-6MD6FVE3.js';import {g,y}from'./chunk-P3R6TXII.js';export{n as BOARD_GRAPH_KEY,u as EMPTY_CONFIG,m as SNAPSHOT_SCHEMA_VERSION_V1,z as createBoardLiveCardsNonCorePublic,y as createBoardLiveCardsPublic,l as createCardStore,e as createHttpBoardCallbackTransport,f as createInProcessBoardCallbackTransport,g as createLocalNodeBoardCallbackTransport}from'./chunk-P3R6TXII.js';export{a as executionRefFromScriptPath,c as parseExecutionRef,b as serializeExecutionRef}from'./chunk-ANKA7HEJ.js';import {a as a$1,b}from'./chunk-44L64VQ2.js';export{b as parseRef,a as serializeRef}from'./chunk-44L64VQ2.js';import'./chunk-VGT3TRQG.js';import'./chunk-WDPOGXTY.js';export{a as createBoardLiveCardsMcp}from'./chunk-VBYNMTWC.js';import {a as a$6}from'./chunk-JMDHDY6M.js';import {d}from'./chunk-3KC6LBOG.js';import'./chunk-MNEOJWPS.js';export{a as createCardStorePublic}from'./chunk-7QNEV5S3.js';export{a as createQueueStoragePublic}from'./chunk-BJGK5FNL.js';export{a as createArtifactsStorePublic}from'./chunk-X3LC4LII.js';import'./chunk-UGB7PC4P.js';import'./chunk-FW4363Y4.js';import {spawn,spawnSync,execFile,execFileSync}from'child_process';import*as i from'fs';import*as qe from'os';import*as w from'path';import*as Le from'net';import {fileURLToPath}from'url';import {randomUUID,createHash}from'crypto';import {createRequire}from'module';import {lockSync}from'proper-lockfile';function C(...e){return w.join(...e)}function Ne(e){return w.isAbsolute(e)}function ue(){return randomUUID()}function Qe(e){return createHash("sha256").update(e).digest("hex")}function Je(e){return w.dirname(fileURLToPath(e))}function Ft(e){if(typeof e=="object"&&e!==null){let{command:r,args:o=[],...n}=e,s=Oe(r,o);return {...n,command:s.command,args:s.args}}let t=De(e);if(t.length===0)throw new Error(`Empty command spec: ${JSON.stringify(e)}`);return Oe(t[0],t.slice(1))}function Oe(e,t){return /^(node|node\.exe)$/i.test(e)?{command:process.execPath,args:t}:/\.m?js$/i.test(e)?{command:process.execPath,args:[e,...t]}:{command:e,args:t}}function De(e){let t=[],r="",o=null;for(let n of e.trim()){if(o){n===o?o=null:r+=n;continue}if(n==='"'||n==="'"){o=n;continue}if(/\s/.test(n)){r&&(t.push(r),r="");continue}r+=n;}if(o)throw new Error(`Unterminated quote in command: ${e}`);return r&&t.push(r),t}function Ke(e){return process.platform==="win32"&&/\.(cmd|bat)$/i.test(e)}function We(e,t){let{command:r,args:o=[],cwd:n,env:s,timeoutMs:u}=e;return execFileSync(r,o,{shell:Ke(r),timeout:u,encoding:t?.encoding??"utf-8",cwd:n,windowsHide:true,env:s?{...process.env,...s}:void 0,input:t?.input})}function $t(e,t){let{command:r,args:o=[],cwd:n,env:s,timeoutMs:u=3e4}=e;execFile(r,o,{shell:Ke(r),encoding:"utf8",windowsHide:true,timeout:u,maxBuffer:10*1024*1024,cwd:n,env:s?{...process.env,...s}:void 0},(p,x,c)=>t(p??null,x,c));}function He(e,t,r){let o=w.join(e,"board-live-cards-cli.js");if(i.existsSync(o))return {cmd:process.execPath,args:[o,t,...r]};let n=w.join(e,"board-live-cards-cli.ts"),u=[w.join(e,"..","..","..","node_modules","tsx","dist","cli.mjs"),w.join(e,"..","..","node_modules","tsx","dist","cli.mjs"),w.join(e,"..","..","..","node_modules",".bin","tsx"),w.join(e,"..","..","node_modules",".bin","tsx")].find(x=>i.existsSync(x));return i.existsSync(n)&&u?{cmd:process.execPath,args:[u,n,t,...r]}:{cmd:process.platform==="win32"?"npx.cmd":"npx",args:["tsx",n,t,...r]}}function Ve(e){let t=w.join(e,"board-live-cards-cli.mjs");if(i.existsSync(t))return t;let r=w.join(e,"..","..","..","dev","board-live-cards-cli.js");if(i.existsSync(r))return r;let o=w.join(e,"..","..","dev","board-live-cards-cli.js");if(i.existsSync(o))return o;let n=w.join(e,"board-live-cards-cli.js");if(i.existsSync(n))return n;throw new Error(`resolveBoardCliCallbackTarget: cannot find callback target in ${e} (expected dev/board-live-cards-cli.js wrapper, ${n}, or ${t})`)}function Mt(e){return process.platform==="win32"?`\\\\.\\pipe\\${e}`:w.join(qe.tmpdir(),`${e}.sock`)}var ce=new Map;function Ue(e,t,r){if(t.length===0)return;let o=t.map(p=>JSON.stringify(p)).join(`
2
2
  `)+`
3
- `,n=ce.get(e);if(n&&!n.socket.destroyed){n.ready?n.socket.write(o):n.queue.push(o);return}let s=$t(e),a=qe.createConnection(s);n={socket:a,ready:false,queue:[o]},ce.set(e,n),a.on("connect",()=>{n.ready=true;for(let g of n.queue)a.write(g);n.queue.length=0;}),a.on("error",g=>{r?.(`[named-pipe publish] ${s}: ${g instanceof Error?g.message:String(g)}`),ce.delete(e);}),a.on("close",()=>{ce.delete(e);});}function ze(){return {executeSync(e,t,r){return He({command:e,args:t,cwd:r?.cwd,timeoutMs:r?.timeout,env:r?.env},{encoding:r?.encoding,input:r?.input})},executeAsync(e,t,r){Ft({command:e,args:t},r);},resolveInvocation(e,t){let r=Pt({command:e,args:t});return {cmd:r.command,args:r.args??[]}},splitCommand:De}}function xe(e){return {id:e.id??"board-worker",pollIntervalMs:e.pollIntervalMs,visibilityMs:e.visibilityMs,concurrency:e.concurrency,maxAttempts:e.maxAttempts,async lease(t){return e.workerStore.leaseRequests(t).map(r=>({id:r.messageId,attempt:r.attempt,message:r.request,ack:()=>e.workerStore.ackRequest(r.messageId,r.leaseToken),nack:o=>e.workerStore.nackRequest(r.messageId,r.leaseToken,o)}))},async handle(t){await e.handleRequest(t.args,t);},onError:e.onError}}function we(e){return {id:e.id,pollIntervalMs:e.pollIntervalMs,visibilityMs:e.visibilityMs,concurrency:e.concurrency,maxAttempts:e.maxAttempts,async lease(t){return e.queueStorage.lease(t).map(r=>({id:r.id,attempt:r.attempt,message:r.body,ack:()=>e.queueStorage.ack(r.id,r.leaseToken),nack:o=>e.queueStorage.nack(r.id,r.leaseToken,o)}))},handle:e.handleMessage,onError:e.onError}}async function Ge(e,t){try{await e.handle(t.message,t),await t.ack();}catch(r){let o=t.attempt>=Math.max(1,Math.floor(e.maxAttempts??5));await t.nack({dead:o,reason:r instanceof Error?r.message:String(r)}),e.onError?.(r,t);}}function Ye(e){let t=Math.max(1,Math.floor(e.pollIntervalMs??250)),r=Math.max(1,Math.floor(e.visibilityMs??6e4)),o=Math.max(1,Math.floor(e.concurrency??1)),n=false,s=false;async function a(){if(!(n||s)){s=true;try{let S=await e.lease({max:o,visibilityMs:r});for(let c of S)await Ge(e,c);}finally{s=false;}}}let g=setInterval(()=>{a();},t);return typeof g.unref=="function"&&g.unref(),a(),()=>{n=true,clearInterval(g);}}async function Mt(e){let t=Math.max(1,Math.floor(e.visibilityMs??6e4)),r=Math.max(1,Math.floor(e.concurrency??1)),o=await e.lease({max:r,visibilityMs:t});for(let n of o)await Ge(e,n);return o.length}async function de(e,t){let r=Math.max(1,Math.floor(t?.maxPasses??256)),o=0;for(let n=0;n<r;n+=1){let s=await Mt(e);if(o+=s,s<=0)return o}throw new Error(`drainQueueLaneToIdle exceeded ${r} passes for lane "${e.id}"`)}function _t(e){let r=(Array.isArray(e)?e:e.lanes).map(o=>Ye(o));return ()=>{for(let o of r)o();}}var Ot=createRequire(import.meta.url);function qt(e){return typeof e=="object"?e:b(e)}function Xe(e){let t=x.basename(String(e||"").trim());if(!t)throw new Error(`resolveYamlFlowCliPath: expected non-empty cli file name, got ${JSON.stringify(e)}`);let r=x.dirname(Ot.resolve("yaml-flow/package.json")),o=t.replace(/\.[^.]+$/,""),n=x.join(r,"cli","bundled",`${o}.mjs`);if(i.existsSync(n))return n;let s=x.join(r,"cli","node",t);if(i.existsSync(s))return s;throw new Error(`resolveYamlFlowCliPath: could not find ${t} under cli/bundled or cli/node in ${r}`)}function q(e){let t=qt(e);return t.kind==="yaml-flow-cli"?Xe(t.value):t.value}function Nt(e,t){let r=q(e);switch(r){case "source-cli-task-executor":{let o=x.join(t,"source-cli-task-executor.js");if(i.existsSync(o))return {command:process.execPath,args:[o]};let n=x.join(t,"source-cli-task-executor.ts"),s=x.join(t,"..","..","node_modules","tsx","dist","cli.mjs"),a=x.join(t,"..","..","node_modules",".bin","tsx"),g=i.existsSync(s)?s:a;return i.existsSync(n)&&i.existsSync(g)?{command:process.execPath,args:[g,n]}:{command:process.execPath,args:[o]}}case "board-live-cards":{let{cmd:o,args:n}=Ke(t,"_",[]);return {command:o,args:n}}default:throw new Error(`resolveBuiltIn: unknown built-in name "${r}". Supported: source-cli-task-executor, board-live-cards`)}}function Qt(e,t){if(e.howToRun==="built-in"){let{command:o,args:n}=Nt(e.whatToRun,t);return {command:o,baseArgs:n}}let r=(typeof e.whatToRun=="object",q(e.whatToRun));switch(e.howToRun){case "local-node":return {command:process.execPath,baseArgs:[r]};case "local-python":return {command:process.platform==="win32"?"python":"python3",baseArgs:[r]};case "local-process":return {command:r,baseArgs:[]};default:throw new Error(`resolveBaseInvocation: howToRun "${e.howToRun}" is not a local transport`)}}function le(e,t){return Qt(e,t)}var ke=new Map;function Jt(e,t){let r=String(e||"").trim();if(!r)throw new Error("registerInProcessExecutionHandler: key is required");ke.set(r,t);}function Dt(e){let t=String(e||"").trim();t&&ke.delete(t);}function et(e){let t=e.trim();if(!t)throw new Error("empty stdout");try{return JSON.parse(t)}catch{let r=t.split(/\r?\n/).filter(Boolean),o=r[r.length-1];return JSON.parse(o)}}function tt(e,t){return {...t,whatToRun:q(e.whatToRun),...e.extra?{extra:e.extra}:{}}}function be(e,t,r="invokeExecutionRef"){return a(e,t,r)}function rt(e,t){if(e&&typeof e=="object"&&!Array.isArray(e)&&typeof e.result=="string"&&e.data&&typeof e.data=="object"&&!Array.isArray(e.data))return {...e,...t||{}};if(e&&typeof e=="object"&&!Array.isArray(e)&&typeof e.status=="string"){let o=e,n=o.status==="success"?"success":o.status==="fail"?"failure":o.status,s=o.data&&typeof o.data=="object"&&!Array.isArray(o.data)?o.data:o.data===void 0?{}:{stdout:o.data};return {result:n,data:s,...typeof o.error=="string"?{error:o.error}:{},...t||{}}}return {result:"success",data:e&&typeof e=="object"&&!Array.isArray(e)?e:{stdout:e},...t||{}}}function O(e){return {result:"failure",data:{error:e}}}function V(e,t,r){let o=r?.label??"invokeExecutionRefSync",n=r?.cliDir??r?.cwd??process.cwd(),s;try{s=be(e.argsMassaging,tt(e,t),o);}catch(h){let l=h instanceof Error?h.message:String(h);return O(l)}let a;try{a=le(e,n);}catch(h){let l=h instanceof Error?h.message:String(h);return O(`[${o}] ref resolution failed: ${l}`)}let g=[...a.baseArgs,...s.cmdArgs??[]],S=JSON.stringify(s.stdin??t),c=ze(),d;try{d=c.executeSync(a.command,g,{timeout:r?.timeoutMs??3e4,encoding:"utf-8",cwd:r?.cwd,input:S});}catch(h){let l=h,u=(l.stderr?String(l.stderr):"").trim(),p=typeof l.status=="number"?l.status:"unknown",m=u||l.message;return O(`[${o}] ref exited with status ${p}${m?`: ${m}`:""}`)}try{return rt(et(d))}catch{return {result:"success",data:{stdout:d.trim()}}}}async function Ze(e,t,r){let o=r?.label??"invokeExecutionRef",n;try{n=be(e.argsMassaging,tt(e,t),o);}catch(h){let l=h instanceof Error?h.message:String(h);return O(l)}let s=q(e.whatToRun),a=n.headers?{"Content-Type":"application/json",...n.headers}:{"Content-Type":"application/json"},g=n.url??s,S;if(e.howToRun==="http:get"){let h=n.body&&typeof n.body=="object"&&!Array.isArray(n.body)?n.body:t,l=new URLSearchParams(Object.entries(h).filter(([,u])=>u!=null).map(([u,p])=>[u,String(p)]));l.size>0&&(g=`${g}${g.includes("?")?"&":"?"}${l.toString()}`);}else S=JSON.stringify(n.body??t);let c={method:e.howToRun==="http:get"?"GET":"POST",headers:a,body:S},d=0;for(;;)try{let h=await fetch(g,c);if(!h.ok){let m=await h.text().catch(()=>"");return O(`[${o}] HTTP ${h.status}${m?`: ${m}`:""}`)}let l={};h.headers.forEach((m,R)=>{l[R]=m;});let u=new Uint8Array(await h.arrayBuffer());if(u.byteLength===0)return {result:"success",data:{},headers:l};let p=new TextDecoder().decode(u);try{return rt(et(p),{headers:l})}catch{return {result:"success",data:{stdout:p},headers:l}}}catch(h){let l=h?.cause,u=l&&typeof l=="object"&&"code"in l?String(l.code||""):"";if((u==="ECONNRESET"||u==="UND_ERR_SOCKET")&&d===0){d+=1;continue}let m=h instanceof Error?h.message:String(h),R=l instanceof Error?`${l.name}: ${l.message}${u?` [${u}]`:""}`:l?String(l):"",w=n.url??s??"",f=`${m}${R?` (cause: ${R})`:""}${w?` url=${w}`:""}`;return O(`[${o}] ${f}`)}}async function Wt(e,t,r){let o=r?.label??"invokeExecutionRef",n=q(e.whatToRun).trim();if(!n)return O(`[${o}] in-process-loop requires a non-empty handler key`);let s=ke.get(n);if(!s)return O(`[${o}] no in-process handler registered for: ${n}`);try{return await s(e,t,r)}catch(a){let g=a instanceof Error?a.message:String(a);return O(`[${o}] ${g}`)}}var Ht={"local-node":async(e,t,r)=>V(e,t,r),"local-python":async(e,t,r)=>V(e,t,r),"local-process":async(e,t,r)=>V(e,t,r),"built-in":async(e,t,r)=>V(e,t,r),"http:post":Ze,"http:get":Ze,"in-process-loop":Wt},Kt={"local-node":V,"local-python":V,"local-process":V,"built-in":V};async function Z(e,t,r){let o=r?.transports?.[e.howToRun]??Ht[e.howToRun];return o?o(e,t,r):O(`[${r?.label??"invokeExecutionRef"}] unsupported howToRun: ${e.howToRun}`)}function ve(e,t,r){let o=r?.syncTransports?.[e.howToRun]??Kt[e.howToRun];return o?o(e,t,r):O(`[${r?.label??"invokeExecutionRefSync"}] unsupported sync howToRun: ${e.howToRun}`)}function Vt(e){return {invoke(t,r){return Z(t,r,e)},invokeSync(t,r){return ve(t,r,e)}}}function Ut(e,t,r){return ve(e,t,r)}function Ae(e={}){let t=e.resolveRef??(r=>r);return {...e.executorTimeouts?{executorTimeouts:e.executorTimeouts}:{},async invokeExecutor(r,o,n){let s=t(r);if(s.howToRun==="queue-storage")throw new Error("queue-storage does not support inline executor request/response");if(s.howToRun==="http:post"||s.howToRun==="in-process-loop"){let d=await h(s,{subcommand:o,...n?.input!==void 0?{input:n.input}:{}});return typeof d=="string"?d:d&&typeof d=="object"&&!Array.isArray(d)&&typeof d.stdout=="string"?String(d.stdout):JSON.stringify(d??{})}if(s.howToRun==="http:get"){let d=await Z(s,{subcommand:o,...n?.input!==void 0?{input:n.input}:{},...s.extra?{extra:s.extra}:{}},{cwd:process.cwd(),timeoutMs:n?.timeout??3e4,label:`invokeExecutor:${o}`});if(d.result!=="success"){let h=typeof d.data?.error=="string"?d.data.error:d.error;throw new Error(h||`executor request failed: ${d.result}`)}return typeof d.data?.stdout=="string"?d.data.stdout:JSON.stringify(d.data??{})}if(!e.resolveCliDir)throw new Error(`createNonCoreExecutorDispatcher: ref.howToRun="${s.howToRun}" requires opts.resolveCliDir`);let{command:a,baseArgs:g}=le(s,e.resolveCliDir()),S=s.extra?["--extra",Buffer.from(JSON.stringify(s.extra)).toString("base64")]:[],c=[...g,o,...S];return await new Promise((d,h)=>{let l=spawn(a,c,{cwd:process.cwd(),stdio:"pipe",windowsHide:true,shell:process.platform==="win32"&&/\.(cmd|bat)$/i.test(a)}),u=[],p=[],m=false,R=null,w=y=>{m||(m=true,R&&clearTimeout(R),h(y));},f=y=>{m||(m=true,R&&clearTimeout(R),d(y));};l.stdout.on("data",y=>{u.push(Buffer.from(y));}),l.stderr.on("data",y=>{p.push(Buffer.from(y));}),l.on("error",y=>{let v=y;v.stdout=Buffer.concat(u).toString("utf-8"),v.stderr=Buffer.concat(p).toString("utf-8"),w(v);}),l.on("close",y=>{let v=Buffer.concat(u).toString("utf-8"),k=Buffer.concat(p).toString("utf-8");if(y===0){f(v);return}let b=new Error(k.trim()||`executor exited with status ${y}`);b.stdout=v,b.stderr=k,w(b);}),n?.timeout&&n.timeout>0&&(R=setTimeout(()=>{l.kill();let y=new Error(`executor timed out after ${n.timeout}ms`);y.stdout=Buffer.concat(u).toString("utf-8"),y.stderr=Buffer.concat(p).toString("utf-8"),w(y);},n.timeout)),n?.input!==void 0?l.stdin.end(n.input):l.stdin.end();})}}}function B(e,t){if(process.platform!=="win32"){i.renameSync(e,t);return}let r=[10,20,40,80,160];for(let o=0;o<=r.length;o++)try{i.renameSync(e,t);return}catch(n){let s=n.code;if((s==="EPERM"||s==="EBUSY")&&o<r.length){Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,r[o]);continue}throw n}}function U(e){function t(n){return x.join(e,...n.split("/"))}function r(n){return x.relative(e,n).replace(/\\/g,"/")}function o(n,s){if(i.existsSync(n))for(let a of i.readdirSync(n,{withFileTypes:true})){let g=x.join(n,a.name);if(a.isDirectory()){o(g,s);continue}a.isFile()&&s.push(r(g));}}return {read(n){let s=t(n);if(!i.existsSync(s))return null;try{return i.readFileSync(s,"utf-8")}catch{return null}},write(n,s){let a=t(n),g=`${a}.${process.pid}.${randomUUID()}.tmp`;i.mkdirSync(x.dirname(a),{recursive:true}),i.writeFileSync(g,s,"utf-8"),B(g,a);},exists(n){return i.existsSync(t(n))},remove(n){let s=t(n);try{i.existsSync(s)&&i.unlinkSync(s);}catch{}},readBytes(n){let s=t(n);if(!i.existsSync(s))return null;try{return new Uint8Array(i.readFileSync(s))}catch{return null}},writeBytes(n,s){let a=t(n),g=`${a}.${process.pid}.${randomUUID()}.tmp`;i.mkdirSync(x.dirname(a),{recursive:true}),i.writeFileSync(g,Buffer.from(s)),B(g,a);},listKeys(n){let s=[];o(e,s);let a=s.sort();return n?a.filter(g=>g.startsWith(n)):a},stat(n){let s=t(n);if(!i.existsSync(s))return null;try{let a=i.statSync(s);return {key:n,size:Number(a.size||0),updatedAt:new Date(a.mtimeMs).toISOString()}}catch{return null}},keyRef(n){return {kind:"fs-path",value:t(n)}},renameKey(n,s){let a=t(n);if(!i.existsSync(a))return false;let g=t(s);return i.mkdirSync(x.dirname(g),{recursive:true}),B(a,g),true}}}function Ie(){return {read(e){if(!i.existsSync(e))return null;try{return i.readFileSync(e,"utf-8")}catch{return null}},write(e,t){let r=`${e}.${process.pid}.${randomUUID()}.tmp`;i.mkdirSync(x.dirname(e),{recursive:true}),i.writeFileSync(r,t,"utf-8"),B(r,e);},exists(e){return i.existsSync(e)},remove(e){try{i.existsSync(e)&&i.unlinkSync(e);}catch{}},readBytes(e){if(!i.existsSync(e))return null;try{return new Uint8Array(i.readFileSync(e))}catch{return null}},writeBytes(e,t){let r=`${e}.${process.pid}.${randomUUID()}.tmp`;i.mkdirSync(x.dirname(e),{recursive:true}),i.writeFileSync(r,Buffer.from(t)),B(r,e);},stat(e){if(!i.existsSync(e))return null;try{let t=i.statSync(e);return {key:e,size:Number(t.size||0),updatedAt:new Date(t.mtimeMs).toISOString()}}catch{return null}},listKeys(e){return []},renameKey(e,t){return i.existsSync(e)?(i.mkdirSync(x.dirname(t),{recursive:true}),B(e,t),true):false}}}function D(e,t){let r=`${e}.${process.pid}.${randomUUID()}.tmp`;i.mkdirSync(x.dirname(e),{recursive:true}),i.writeFileSync(r,JSON.stringify(t,null,2),"utf-8"),B(r,e);}function N(e){if(!i.existsSync(e))return null;try{return JSON.parse(i.readFileSync(e,"utf-8"))}catch{return null}}function X(e){return i.existsSync(e)?i.readdirSync(e).filter(t=>t.endsWith(".json")).sort().map(t=>x.join(e,t)):[]}function ee(e){return {id:e.id,body:e.body,enqueuedAt:e.enqueuedAt,attempt:e.attempt}}function Zt(e){return {...ee(e),leaseToken:String(e.leaseToken||""),leaseExpiresAt:String(e.leaseExpiresAt||"")}}function Xt(e){return {...ee(e),reason:e.reason}}function je(e){let t=x.join(e,"active"),r=x.join(e,"leased"),o=x.join(e,"done"),n=x.join(e,"dead"),s=x.join(e,"staged");for(let l of [t,r,o,n,s])i.mkdirSync(l,{recursive:true});function a(l){let u=String(l.enqueuedAt||new Date().toISOString()).replace(/[:.]/g,"-");return x.join(t,`${u}-${l.id}.json`)}function g(l){return x.join(r,`${l}.json`)}function S(l){return x.join(o,`${l}.json`)}function c(l){return x.join(n,`${l}.json`)}function d(l){return x.join(s,`${l}.json`)}function h(){let l=Date.now();for(let u of X(r)){let p=N(u);if(!p?.leaseExpiresAt)continue;let m=Date.parse(p.leaseExpiresAt);if(Number.isNaN(m)||m>l)continue;let R={id:p.id,body:p.body,enqueuedAt:p.enqueuedAt,attempt:p.attempt};D(a(R),R);try{i.unlinkSync(u);}catch{}}}return {enqueue(l){let u={id:randomUUID(),body:l,enqueuedAt:new Date().toISOString(),attempt:0};return D(a(u),u),ee(u)},enqueueMany(l){return l.map(u=>this.enqueue(u))},enqueueIfAbsent(l,u){h();for(let m of [t,r,s])for(let R of X(m))if(N(R)?.dedupKey===u)return null;let p={id:randomUUID(),body:l,enqueuedAt:new Date().toISOString(),attempt:0,dedupKey:u};return D(a(p),p),ee(p)},lease(l){h();let u=Math.max(1,Math.floor(l?.max??1)),p=Math.max(1,Math.floor(l?.visibilityMs??6e4)),m=[];for(let R of X(t)){if(m.length>=u)break;let w=N(R);if(!w)continue;let f=g(w.id);try{B(R,f);}catch{continue}let y={...w,attempt:(Number(w.attempt)||0)+1,leaseToken:randomUUID(),leaseExpiresAt:new Date(Date.now()+p).toISOString()};D(f,y),m.push(Zt(y));}return m},ack(l,u){let p=g(l),m=N(p);if(!m||m.leaseToken!==u)return false;try{B(p,S(l));}catch{return false}return true},nack(l,u,p){let m=g(l),R=N(m);if(!R||R.leaseToken!==u)return false;let w={id:R.id,body:R.body,enqueuedAt:R.enqueuedAt,attempt:R.attempt};p?.dead?(w.reason=p.reason,D(c(l),w)):D(a(w),w);try{i.unlinkSync(m);}catch{}return true},peekActive(l){return h(),X(t).map(u=>N(u)).filter(u=>!!u).map(ee)},peekDeadLetter(l){return X(n).map(u=>N(u)).filter(u=>!!u).map(Xt)},stage(l,u){let p=u?.dedupKey;if(p){h();for(let R of [t,r,s])for(let w of X(R))if(N(w)?.dedupKey===p)return null}let m={id:randomUUID(),body:l,enqueuedAt:new Date().toISOString(),attempt:0,...p?{dedupKey:p}:{}};return D(d(m.id),m),ee(m)},commitStaged(l){let u=d(l),p=N(u);if(!p)return false;let m={...p,attempt:0,enqueuedAt:new Date().toISOString()};D(a(m),m);try{i.unlinkSync(u);}catch{}return true},discardStaged(l,u){let p=d(l),m=N(p);if(!m)return false;let R={id:m.id,body:m.body,enqueuedAt:m.enqueuedAt,attempt:m.attempt,reason:u};D(c(l),R);try{i.unlinkSync(p);}catch{}return true},peekStaged(l){return X(s).map(u=>N(u)).filter(u=>!!u).map(ee)}}}var Ee="__scratch-marker",Te="__scratch-config.json",er=1440*60*1e3,tr=720*60*1e3,rr=500;function nt(e,t){if(!e)return t;let r=e.replace(/[^A-Za-z0-9._-]/g,"_");return r.length>0?r:t}function oe(e){i.mkdirSync(e,{recursive:true});let t=x.join(e,Ee),r=x.join(e,Te),o=!i.existsSync(t);if(o)try{i.writeFileSync(t,`scratch-store
3
+ `,n=ce.get(e);if(n&&!n.socket.destroyed){n.ready?n.socket.write(o):n.queue.push(o);return}let s=Mt(e),u=Le.createConnection(s);n={socket:u,ready:false,queue:[o]},ce.set(e,n),u.on("connect",()=>{n.ready=true;for(let p of n.queue)u.write(p);n.queue.length=0;}),u.on("error",p=>{r?.(`[named-pipe publish] ${s}: ${p instanceof Error?p.message:String(p)}`),ce.delete(e);}),u.on("close",()=>{ce.delete(e);});}function ze(){return {executeSync(e,t,r){return We({command:e,args:t,cwd:r?.cwd,timeoutMs:r?.timeout,env:r?.env},{encoding:r?.encoding,input:r?.input})},executeAsync(e,t,r){$t({command:e,args:t},r);},resolveInvocation(e,t){let r=Ft({command:e,args:t});return {cmd:r.command,args:r.args??[]}},splitCommand:De}}function xe(e){return {id:e.id??"board-worker",pollIntervalMs:e.pollIntervalMs,visibilityMs:e.visibilityMs,concurrency:e.concurrency,maxAttempts:e.maxAttempts,async lease(t){return e.workerStore.leaseRequests(t).map(r=>({id:r.messageId,attempt:r.attempt,message:r.request,ack:()=>e.workerStore.ackRequest(r.messageId,r.leaseToken),nack:o=>e.workerStore.nackRequest(r.messageId,r.leaseToken,o)}))},async handle(t){await e.handleRequest(t.args,t);},onError:e.onError}}function we(e){return {id:e.id,pollIntervalMs:e.pollIntervalMs,visibilityMs:e.visibilityMs,concurrency:e.concurrency,maxAttempts:e.maxAttempts,async lease(t){return e.queueStorage.lease(t).map(r=>({id:r.id,attempt:r.attempt,message:r.body,ack:()=>e.queueStorage.ack(r.id,r.leaseToken),nack:o=>e.queueStorage.nack(r.id,r.leaseToken,o)}))},handle:e.handleMessage,onError:e.onError}}async function Ge(e,t){try{await e.handle(t.message,t),await t.ack();}catch(r){let o=t.attempt>=Math.max(1,Math.floor(e.maxAttempts??5));await t.nack({dead:o,reason:r instanceof Error?r.message:String(r)}),e.onError?.(r,t);}}function Ye(e){let t=Math.max(1,Math.floor(e.pollIntervalMs??250)),r=Math.max(1,Math.floor(e.visibilityMs??6e4)),o=Math.max(1,Math.floor(e.concurrency??1)),n=false,s=false;async function u(){if(!(n||s)){s=true;try{let x=await e.lease({max:o,visibilityMs:r});for(let c of x)await Ge(e,c);}finally{s=false;}}}let p=setInterval(()=>{u();},t);return typeof p.unref=="function"&&p.unref(),u(),()=>{n=true,clearInterval(p);}}async function _t(e){let t=Math.max(1,Math.floor(e.visibilityMs??6e4)),r=Math.max(1,Math.floor(e.concurrency??1)),o=await e.lease({max:r,visibilityMs:t});for(let n of o)await Ge(e,n);return o.length}async function de(e,t){let r=Math.max(1,Math.floor(t?.maxPasses??256)),o=0;for(let n=0;n<r;n+=1){let s=await _t(e);if(o+=s,s<=0)return o}throw new Error(`drainQueueLaneToIdle exceeded ${r} passes for lane "${e.id}"`)}function Ot(e){let r=(Array.isArray(e)?e:e.lanes).map(o=>Ye(o));return ()=>{for(let o of r)o();}}var Lt=createRequire(import.meta.url);function Nt(e){return typeof e=="object"?e:b(e)}function Xe(e){let t=w.basename(String(e||"").trim());if(!t)throw new Error(`resolveYamlFlowCliPath: expected non-empty cli file name, got ${JSON.stringify(e)}`);let r=w.dirname(Lt.resolve("yaml-flow/package.json")),o=t.replace(/\.[^.]+$/,""),n=w.join(r,"cli","bundled",`${o}.mjs`);if(i.existsSync(n))return n;let s=w.join(r,"cli","node",t);if(i.existsSync(s))return s;throw new Error(`resolveYamlFlowCliPath: could not find ${t} under cli/bundled or cli/node in ${r}`)}function L(e){let t=Nt(e);return t.kind==="yaml-flow-cli"?Xe(t.value):t.value}function Qt(e,t){let r=L(e);switch(r){case "source-cli-task-executor":{let o=w.join(t,"source-cli-task-executor.js");if(i.existsSync(o))return {command:process.execPath,args:[o]};let n=w.join(t,"source-cli-task-executor.ts"),s=w.join(t,"..","..","node_modules","tsx","dist","cli.mjs"),u=w.join(t,"..","..","node_modules",".bin","tsx"),p=i.existsSync(s)?s:u;return i.existsSync(n)&&i.existsSync(p)?{command:process.execPath,args:[p,n]}:{command:process.execPath,args:[o]}}case "board-live-cards":{let{cmd:o,args:n}=He(t,"_",[]);return {command:o,args:n}}default:throw new Error(`resolveBuiltIn: unknown built-in name "${r}". Supported: source-cli-task-executor, board-live-cards`)}}function Jt(e,t){if(e.howToRun==="built-in"){let{command:o,args:n}=Qt(e.whatToRun,t);return {command:o,baseArgs:n}}let r=(typeof e.whatToRun=="object",L(e.whatToRun));switch(e.howToRun){case "local-node":return {command:process.execPath,baseArgs:[r]};case "local-python":return {command:process.platform==="win32"?"python":"python3",baseArgs:[r]};case "local-process":return {command:r,baseArgs:[]};default:throw new Error(`resolveBaseInvocation: howToRun "${e.howToRun}" is not a local transport`)}}function le(e,t){return Jt(e,t)}var be=new Map;function Dt(e,t){let r=String(e||"").trim();if(!r)throw new Error("registerInProcessExecutionHandler: key is required");be.set(r,t);}function Kt(e){let t=String(e||"").trim();t&&be.delete(t);}function et(e){let t=e.trim();if(!t)throw new Error("empty stdout");try{return JSON.parse(t)}catch{let r=t.split(/\r?\n/).filter(Boolean),o=r[r.length-1];return JSON.parse(o)}}function tt(e,t){return {...t,whatToRun:L(e.whatToRun),...e.extra?{extra:e.extra}:{}}}function ke(e,t,r="invokeExecutionRef"){return a(e,t,r)}function rt(e,t){if(e&&typeof e=="object"&&!Array.isArray(e)&&typeof e.result=="string"&&e.data&&typeof e.data=="object"&&!Array.isArray(e.data))return {...e,...t||{}};if(e&&typeof e=="object"&&!Array.isArray(e)&&typeof e.status=="string"){let o=e,n=o.status==="success"?"success":o.status==="fail"?"failure":o.status,s=o.data&&typeof o.data=="object"&&!Array.isArray(o.data)?o.data:o.data===void 0?{}:{stdout:o.data};return {result:n,data:s,...typeof o.error=="string"?{error:o.error}:{},...t||{}}}return {result:"success",data:e&&typeof e=="object"&&!Array.isArray(e)?e:{stdout:e},...t||{}}}function q(e){return {result:"failure",data:{error:e}}}function V(e,t,r){let o=r?.label??"invokeExecutionRefSync",n=r?.cliDir??r?.cwd??process.cwd(),s;try{s=ke(e.argsMassaging,tt(e,t),o);}catch(h){let R=h instanceof Error?h.message:String(h);return q(R)}let u;try{u=le(e,n);}catch(h){let R=h instanceof Error?h.message:String(h);return q(`[${o}] ref resolution failed: ${R}`)}let p=[...u.baseArgs,...s.cmdArgs??[]],x=JSON.stringify(s.stdin??t),c=ze(),l;try{l=c.executeSync(u.command,p,{timeout:r?.timeoutMs??3e4,encoding:"utf-8",cwd:r?.cwd,input:x});}catch(h){let R=h,y=(R.stderr?String(R.stderr):"").trim(),d=typeof R.status=="number"?R.status:"unknown",f=y||R.message;return q(`[${o}] ref exited with status ${d}${f?`: ${f}`:""}`)}try{return rt(et(l))}catch{return {result:"success",data:{stdout:l.trim()}}}}async function Ze(e,t,r){let o=r?.label??"invokeExecutionRef",n;try{n=ke(e.argsMassaging,tt(e,t),o);}catch(h){let R=h instanceof Error?h.message:String(h);return q(R)}let s=L(e.whatToRun),u=n.headers?{"Content-Type":"application/json",...n.headers}:{"Content-Type":"application/json"},p=n.url??s,x;if(e.howToRun==="http:get"){let h=n.body&&typeof n.body=="object"&&!Array.isArray(n.body)?n.body:t,R=new URLSearchParams(Object.entries(h).filter(([,y])=>y!=null).map(([y,d])=>[y,String(d)]));R.size>0&&(p=`${p}${p.includes("?")?"&":"?"}${R.toString()}`);}else x=JSON.stringify(n.body??t);let c={method:e.howToRun==="http:get"?"GET":"POST",headers:u,body:x},l=0;for(;;)try{let h=await fetch(p,c);if(!h.ok){let f=await h.text().catch(()=>"");return q(`[${o}] HTTP ${h.status}${f?`: ${f}`:""}`)}let R={};h.headers.forEach((f,m)=>{R[m]=f;});let y=new Uint8Array(await h.arrayBuffer());if(y.byteLength===0)return {result:"success",data:{},headers:R};let d=new TextDecoder().decode(y);try{return rt(et(d),{headers:R})}catch{return {result:"success",data:{stdout:d},headers:R}}}catch(h){let R=h?.cause,y=R&&typeof R=="object"&&"code"in R?String(R.code||""):"";if((y==="ECONNRESET"||y==="UND_ERR_SOCKET")&&l===0){l+=1;continue}let f=h instanceof Error?h.message:String(h),m=R instanceof Error?`${R.name}: ${R.message}${y?` [${y}]`:""}`:R?String(R):"",S=n.url??s??"",a=`${f}${m?` (cause: ${m})`:""}${S?` url=${S}`:""}`;return q(`[${o}] ${a}`)}}async function Wt(e,t,r){let o=r?.label??"invokeExecutionRef",n=L(e.whatToRun).trim();if(!n)return q(`[${o}] in-process-loop requires a non-empty handler key`);let s=be.get(n);if(!s)return q(`[${o}] no in-process handler registered for: ${n}`);try{return await s(e,t,r)}catch(u){let p=u instanceof Error?u.message:String(u);return q(`[${o}] ${p}`)}}var Ht={"local-node":async(e,t,r)=>V(e,t,r),"local-python":async(e,t,r)=>V(e,t,r),"local-process":async(e,t,r)=>V(e,t,r),"built-in":async(e,t,r)=>V(e,t,r),"http:post":Ze,"http:get":Ze,"in-process-loop":Wt},Vt={"local-node":V,"local-python":V,"local-process":V,"built-in":V};async function Z(e,t,r){let o=r?.transports?.[e.howToRun]??Ht[e.howToRun];return o?o(e,t,r):q(`[${r?.label??"invokeExecutionRef"}] unsupported howToRun: ${e.howToRun}`)}function ve(e,t,r){let o=r?.syncTransports?.[e.howToRun]??Vt[e.howToRun];return o?o(e,t,r):q(`[${r?.label??"invokeExecutionRefSync"}] unsupported sync howToRun: ${e.howToRun}`)}function Ut(e){return {invoke(t,r){return Z(t,r,e)},invokeSync(t,r){return ve(t,r,e)}}}function zt(e,t,r){return ve(e,t,r)}function Ae(e={}){let t=e.resolveRef??(r=>r);return {...e.executorTimeouts?{executorTimeouts:e.executorTimeouts}:{},async invokeExecutor(r,o,n){let s=t(r);if(s.howToRun==="queue-storage")throw new Error("queue-storage does not support inline executor request/response");if(s.howToRun==="http:post"||s.howToRun==="in-process-loop"){let l=await h(s,{subcommand:o,...n?.input!==void 0?{input:n.input}:{}});return typeof l=="string"?l:l&&typeof l=="object"&&!Array.isArray(l)&&typeof l.stdout=="string"?String(l.stdout):JSON.stringify(l??{})}if(s.howToRun==="http:get"){let l=await Z(s,{subcommand:o,...n?.input!==void 0?{input:n.input}:{},...s.extra?{extra:s.extra}:{}},{cwd:process.cwd(),timeoutMs:n?.timeout??3e4,label:`invokeExecutor:${o}`});if(l.result!=="success"){let h=typeof l.data?.error=="string"?l.data.error:l.error;throw new Error(h||`executor request failed: ${l.result}`)}return typeof l.data?.stdout=="string"?l.data.stdout:JSON.stringify(l.data??{})}if(!e.resolveCliDir)throw new Error(`createNonCoreExecutorDispatcher: ref.howToRun="${s.howToRun}" requires opts.resolveCliDir`);let{command:u,baseArgs:p}=le(s,e.resolveCliDir()),x=s.extra?["--extra",Buffer.from(JSON.stringify(s.extra)).toString("base64")]:[],c=[...p,o,...x];return await new Promise((l,h)=>{let R=spawn(u,c,{cwd:process.cwd(),stdio:"pipe",windowsHide:true,shell:process.platform==="win32"&&/\.(cmd|bat)$/i.test(u)}),y=[],d=[],f=false,m=null,S=g=>{f||(f=true,m&&clearTimeout(m),h(g));},a=g=>{f||(f=true,m&&clearTimeout(m),l(g));};R.stdout.on("data",g=>{y.push(Buffer.from(g));}),R.stderr.on("data",g=>{d.push(Buffer.from(g));}),R.on("error",g=>{let v=g;v.stdout=Buffer.concat(y).toString("utf-8"),v.stderr=Buffer.concat(d).toString("utf-8"),S(v);}),R.on("close",g=>{let v=Buffer.concat(y).toString("utf-8"),b=Buffer.concat(d).toString("utf-8");if(g===0){a(v);return}let k=new Error(b.trim()||`executor exited with status ${g}`);k.stdout=v,k.stderr=b,S(k);}),n?.timeout&&n.timeout>0&&(m=setTimeout(()=>{R.kill();let g=new Error(`executor timed out after ${n.timeout}ms`);g.stdout=Buffer.concat(y).toString("utf-8"),g.stderr=Buffer.concat(d).toString("utf-8"),S(g);},n.timeout)),n?.input!==void 0?R.stdin.end(n.input):R.stdin.end();})}}}function B(e,t){if(process.platform!=="win32"){i.renameSync(e,t);return}let r=[10,20,40,80,160];for(let o=0;o<=r.length;o++)try{i.renameSync(e,t);return}catch(n){let s=n.code;if((s==="EPERM"||s==="EBUSY")&&o<r.length){Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,r[o]);continue}throw n}}function U(e){function t(n){return w.join(e,...n.split("/"))}function r(n){return w.relative(e,n).replace(/\\/g,"/")}function o(n,s){if(i.existsSync(n))for(let u of i.readdirSync(n,{withFileTypes:true})){let p=w.join(n,u.name);if(u.isDirectory()){o(p,s);continue}u.isFile()&&s.push(r(p));}}return {read(n){let s=t(n);if(!i.existsSync(s))return null;try{return i.readFileSync(s,"utf-8")}catch{return null}},write(n,s){let u=t(n),p=`${u}.${process.pid}.${randomUUID()}.tmp`;i.mkdirSync(w.dirname(u),{recursive:true}),i.writeFileSync(p,s,"utf-8"),B(p,u);},exists(n){return i.existsSync(t(n))},remove(n){let s=t(n);try{i.existsSync(s)&&i.unlinkSync(s);}catch{}},readBytes(n){let s=t(n);if(!i.existsSync(s))return null;try{return new Uint8Array(i.readFileSync(s))}catch{return null}},writeBytes(n,s){let u=t(n),p=`${u}.${process.pid}.${randomUUID()}.tmp`;i.mkdirSync(w.dirname(u),{recursive:true}),i.writeFileSync(p,Buffer.from(s)),B(p,u);},listKeys(n){let s=[];o(e,s);let u=s.sort();return n?u.filter(p=>p.startsWith(n)):u},stat(n){let s=t(n);if(!i.existsSync(s))return null;try{let u=i.statSync(s);return {key:n,size:Number(u.size||0),updatedAt:new Date(u.mtimeMs).toISOString()}}catch{return null}},keyRef(n){return {kind:"fs-path",value:t(n)}},renameKey(n,s){let u=t(n);if(!i.existsSync(u))return false;let p=t(s);return i.mkdirSync(w.dirname(p),{recursive:true}),B(u,p),true}}}function Ie(){return {read(e){if(!i.existsSync(e))return null;try{return i.readFileSync(e,"utf-8")}catch{return null}},write(e,t){let r=`${e}.${process.pid}.${randomUUID()}.tmp`;i.mkdirSync(w.dirname(e),{recursive:true}),i.writeFileSync(r,t,"utf-8"),B(r,e);},exists(e){return i.existsSync(e)},remove(e){try{i.existsSync(e)&&i.unlinkSync(e);}catch{}},readBytes(e){if(!i.existsSync(e))return null;try{return new Uint8Array(i.readFileSync(e))}catch{return null}},writeBytes(e,t){let r=`${e}.${process.pid}.${randomUUID()}.tmp`;i.mkdirSync(w.dirname(e),{recursive:true}),i.writeFileSync(r,Buffer.from(t)),B(r,e);},stat(e){if(!i.existsSync(e))return null;try{let t=i.statSync(e);return {key:e,size:Number(t.size||0),updatedAt:new Date(t.mtimeMs).toISOString()}}catch{return null}},listKeys(e){return []},renameKey(e,t){return i.existsSync(e)?(i.mkdirSync(w.dirname(t),{recursive:true}),B(e,t),true):false}}}function D(e,t){let r=`${e}.${process.pid}.${randomUUID()}.tmp`;i.mkdirSync(w.dirname(e),{recursive:true}),i.writeFileSync(r,JSON.stringify(t,null,2),"utf-8"),B(r,e);}function N(e){if(!i.existsSync(e))return null;try{return JSON.parse(i.readFileSync(e,"utf-8"))}catch{return null}}function X(e){return i.existsSync(e)?i.readdirSync(e).filter(t=>t.endsWith(".json")).sort().map(t=>w.join(e,t)):[]}function ee(e){return {id:e.id,body:e.body,enqueuedAt:e.enqueuedAt,attempt:e.attempt}}function Xt(e){return {...ee(e),leaseToken:String(e.leaseToken||""),leaseExpiresAt:String(e.leaseExpiresAt||"")}}function er(e){return {...ee(e),reason:e.reason}}function je(e){let t=w.join(e,"active"),r=w.join(e,"leased"),o=w.join(e,"done"),n=w.join(e,"dead"),s=w.join(e,"staged");for(let d of [t,r,o,n,s])i.mkdirSync(d,{recursive:true});let u=0;function p(d){let f=d.replace(/[:.]/g,"-"),m=String(u++).padStart(6,"0");return `${f}-${m}`}function x(d){let f=d.activeOrderKey||p(String(d.enqueuedAt||new Date().toISOString()));return w.join(t,`${f}-${d.id}.json`)}function c(d){return w.join(r,`${d}.json`)}function l(d){return w.join(o,`${d}.json`)}function h(d){return w.join(n,`${d}.json`)}function R(d){return w.join(s,`${d}.json`)}function y(){let d=Date.now();for(let f of X(r)){let m=N(f);if(!m?.leaseExpiresAt)continue;let S=Date.parse(m.leaseExpiresAt);if(Number.isNaN(S)||S>d)continue;let a={id:m.id,body:m.body,enqueuedAt:m.enqueuedAt,attempt:m.attempt,activeOrderKey:m.activeOrderKey};D(x(a),a);try{i.unlinkSync(f);}catch{}}}return {enqueue(d){let f={id:randomUUID(),body:d,enqueuedAt:new Date().toISOString(),attempt:0};return f.activeOrderKey=p(f.enqueuedAt),D(x(f),f),ee(f)},enqueueMany(d){return d.map(f=>this.enqueue(f))},enqueueIfAbsent(d,f){y();for(let S of [t,r,s])for(let a of X(S))if(N(a)?.dedupKey===f)return null;let m={id:randomUUID(),body:d,enqueuedAt:new Date().toISOString(),attempt:0,dedupKey:f};return m.activeOrderKey=p(m.enqueuedAt),D(x(m),m),ee(m)},lease(d){y();let f=Math.max(1,Math.floor(d?.max??1)),m=Math.max(1,Math.floor(d?.visibilityMs??6e4)),S=[];for(let a of X(t)){if(S.length>=f)break;let g=N(a);if(!g)continue;let v=c(g.id);try{B(a,v);}catch{continue}let b={...g,attempt:(Number(g.attempt)||0)+1,leaseToken:randomUUID(),leaseExpiresAt:new Date(Date.now()+m).toISOString()};D(v,b),S.push(Xt(b));}return S},ack(d,f){let m=c(d),S=N(m);if(!S||S.leaseToken!==f)return false;try{B(m,l(d));}catch{return false}return true},nack(d,f,m){let S=c(d),a=N(S);if(!a||a.leaseToken!==f)return false;let g={id:a.id,body:a.body,enqueuedAt:a.enqueuedAt,attempt:a.attempt,activeOrderKey:a.activeOrderKey};m?.dead?(g.reason=m.reason,D(h(d),g)):D(x(g),g);try{i.unlinkSync(S);}catch{}return true},peekActive(d){return y(),X(t).map(f=>N(f)).filter(f=>!!f).map(ee)},peekDeadLetter(d){return X(n).map(f=>N(f)).filter(f=>!!f).map(er)},stage(d,f){let m=f?.dedupKey;if(m){y();for(let a of [t,r,s])for(let g of X(a))if(N(g)?.dedupKey===m)return null}let S={id:randomUUID(),body:d,enqueuedAt:new Date().toISOString(),attempt:0,...m?{dedupKey:m}:{}};return D(R(S.id),S),ee(S)},commitStaged(d){let f=R(d),m=N(f);if(!m)return false;let S=new Date().toISOString(),a={...m,attempt:0,enqueuedAt:S,activeOrderKey:p(S)};D(x(a),a);try{i.unlinkSync(f);}catch{}return true},discardStaged(d,f){let m=R(d),S=N(m);if(!S)return false;let a={id:S.id,body:S.body,enqueuedAt:S.enqueuedAt,attempt:S.attempt,reason:f};D(h(d),a);try{i.unlinkSync(m);}catch{}return true},peekStaged(d){return X(s).map(f=>N(f)).filter(f=>!!f).map(ee)}}}var Ee="__scratch-marker",Te="__scratch-config.json",tr=1440*60*1e3,rr=720*60*1e3,nr=500;function nt(e,t){if(!e)return t;let r=e.replace(/[^A-Za-z0-9._-]/g,"_");return r.length>0?r:t}function oe(e){i.mkdirSync(e,{recursive:true});let t=w.join(e,Ee),r=w.join(e,Te),o=!i.existsSync(t);if(o)try{i.writeFileSync(t,`scratch-store
4
4
  ${new Date().toISOString()}
5
- `,"utf-8");}catch{}function n(){if(!i.existsSync(r))return {};try{let c=i.readFileSync(r,"utf-8"),d=JSON.parse(c);return d&&typeof d=="object"&&!Array.isArray(d)?d:{}}catch{return {}}}function s(c){let d=`${r}.${process.pid}.${randomUUID()}.tmp`;try{i.writeFileSync(d,JSON.stringify(c,null,2),"utf-8"),B(d,r);}catch{}}if(o){let c=n();typeof c["retention.lastSweepAt"]!="number"&&(c["retention.lastSweepAt"]=Date.now(),s(c));}function a(){if(!i.existsSync(t))return;let c=n(),d=typeof c["retention.maxAgeMs"]=="number"?c["retention.maxAgeMs"]:er,h=typeof c["retention.sweepIntervalMs"]=="number"?c["retention.sweepIntervalMs"]:tr;if(d<=0||h<=0)return;let l=typeof c["retention.lastSweepAt"]=="number"?c["retention.lastSweepAt"]:0,u=Date.now();if(u-l<h)return;c["retention.lastSweepAt"]=u,s(c);let p=u;try{let m=i.readdirSync(e,{withFileTypes:!0});for(let R of m){if(Date.now()-p>rr)break;if(!R.isFile()||R.name===Ee||R.name===Te)continue;let w=x.join(e,R.name);try{let f=i.statSync(w);if(u-f.mtimeMs>d)try{i.unlinkSync(w);}catch{}}catch{}}}catch{}}function g(c,d){let h=nt(c,"scratch"),l=nt(d,".json"),u=l.startsWith(".")?l:`.${l}`,p=`${h}-${Date.now()}-${randomUUID().slice(0,8)}${u}`;return x.join(e,p)}function S(c,d){let h=`${c}.${process.pid}.${randomUUID()}.tmp`;i.mkdirSync(x.dirname(c),{recursive:true}),i.writeFileSync(h,d,"utf-8"),B(h,c);}return {read(c){if(!i.existsSync(c))return null;try{return i.readFileSync(c,"utf-8")}catch{return null}},write(c,d){S(c,d);try{a();}catch{}},exists(c){return i.existsSync(c)},remove(c){try{i.existsSync(c)&&i.unlinkSync(c);}catch{}},readBytes(c){if(!i.existsSync(c))return null;try{return new Uint8Array(i.readFileSync(c))}catch{return null}},writeBytes(c,d){let h=`${c}.${process.pid}.${randomUUID()}.tmp`;i.mkdirSync(x.dirname(c),{recursive:true}),i.writeFileSync(h,Buffer.from(d)),B(h,c);try{a();}catch{}},stat(c){if(!i.existsSync(c))return null;try{let d=i.statSync(c);return {key:c,size:Number(d.size||0),updatedAt:new Date(d.mtimeMs).toISOString()}}catch{return null}},listKeys(c){try{let d=i.readdirSync(e,{withFileTypes:!0}),h=[];for(let l of d){if(!l.isFile()||l.name===Ee||l.name===Te)continue;let u=x.join(e,l.name);(!c||u.startsWith(c))&&h.push(u);}return h.sort()}catch{return []}},getUniqueKey(c,d){return g(c,d)},create(c,d,h){let l=g(d,h);S(l,c);try{a();}catch{}return l},keyRef(c){return {kind:"fs-path",value:c}},renameKey(c,d){return i.existsSync(c)?(i.mkdirSync(x.dirname(d),{recursive:true}),B(c,d),true):false},config:{get(c){return n()[c]??null},set(c,d){let h=n();d==null?delete h[c]:h[c]=d,s(h);}}}}var nr="__archive-marker",or="__archive-config.json",fe="streams",pe="blobs",sr=500;function ot(e){let t=e.replace(/[^A-Za-z0-9._-]/g,"_");if(!t)throw new Error("Archive segment name cannot be empty after sanitization");return t}function ge(e){i.mkdirSync(e,{recursive:true}),i.mkdirSync(x.join(e,fe),{recursive:true}),i.mkdirSync(x.join(e,pe),{recursive:true});let t=x.join(e,nr),r=x.join(e,or);if(!i.existsSync(t))try{i.writeFileSync(t,`archive-store
5
+ `,"utf-8");}catch{}function n(){if(!i.existsSync(r))return {};try{let c=i.readFileSync(r,"utf-8"),l=JSON.parse(c);return l&&typeof l=="object"&&!Array.isArray(l)?l:{}}catch{return {}}}function s(c){let l=`${r}.${process.pid}.${randomUUID()}.tmp`;try{i.writeFileSync(l,JSON.stringify(c,null,2),"utf-8"),B(l,r);}catch{}}if(o){let c=n();typeof c["retention.lastSweepAt"]!="number"&&(c["retention.lastSweepAt"]=Date.now(),s(c));}function u(){if(!i.existsSync(t))return;let c=n(),l=typeof c["retention.maxAgeMs"]=="number"?c["retention.maxAgeMs"]:tr,h=typeof c["retention.sweepIntervalMs"]=="number"?c["retention.sweepIntervalMs"]:rr;if(l<=0||h<=0)return;let R=typeof c["retention.lastSweepAt"]=="number"?c["retention.lastSweepAt"]:0,y=Date.now();if(y-R<h)return;c["retention.lastSweepAt"]=y,s(c);let d=y;try{let f=i.readdirSync(e,{withFileTypes:!0});for(let m of f){if(Date.now()-d>nr)break;if(!m.isFile()||m.name===Ee||m.name===Te)continue;let S=w.join(e,m.name);try{let a=i.statSync(S);if(y-a.mtimeMs>l)try{i.unlinkSync(S);}catch{}}catch{}}}catch{}}function p(c,l){let h=nt(c,"scratch"),R=nt(l,".json"),y=R.startsWith(".")?R:`.${R}`,d=`${h}-${Date.now()}-${randomUUID().slice(0,8)}${y}`;return w.join(e,d)}function x(c,l){let h=`${c}.${process.pid}.${randomUUID()}.tmp`;i.mkdirSync(w.dirname(c),{recursive:true}),i.writeFileSync(h,l,"utf-8"),B(h,c);}return {read(c){if(!i.existsSync(c))return null;try{return i.readFileSync(c,"utf-8")}catch{return null}},write(c,l){x(c,l);try{u();}catch{}},exists(c){return i.existsSync(c)},remove(c){try{i.existsSync(c)&&i.unlinkSync(c);}catch{}},readBytes(c){if(!i.existsSync(c))return null;try{return new Uint8Array(i.readFileSync(c))}catch{return null}},writeBytes(c,l){let h=`${c}.${process.pid}.${randomUUID()}.tmp`;i.mkdirSync(w.dirname(c),{recursive:true}),i.writeFileSync(h,Buffer.from(l)),B(h,c);try{u();}catch{}},stat(c){if(!i.existsSync(c))return null;try{let l=i.statSync(c);return {key:c,size:Number(l.size||0),updatedAt:new Date(l.mtimeMs).toISOString()}}catch{return null}},listKeys(c){try{let l=i.readdirSync(e,{withFileTypes:!0}),h=[];for(let R of l){if(!R.isFile()||R.name===Ee||R.name===Te)continue;let y=w.join(e,R.name);(!c||y.startsWith(c))&&h.push(y);}return h.sort()}catch{return []}},getUniqueKey(c,l){return p(c,l)},create(c,l,h){let R=p(l,h);x(R,c);try{u();}catch{}return R},keyRef(c){return {kind:"fs-path",value:c}},renameKey(c,l){return i.existsSync(c)?(i.mkdirSync(w.dirname(l),{recursive:true}),B(c,l),true):false},config:{get(c){return n()[c]??null},set(c,l){let h=n();l==null?delete h[c]:h[c]=l,s(h);}}}}var or="__archive-marker",sr="__archive-config.json",fe="streams",pe="blobs",ir=500;function ot(e){let t=e.replace(/[^A-Za-z0-9._-]/g,"_");if(!t)throw new Error("Archive segment name cannot be empty after sanitization");return t}function ge(e){i.mkdirSync(e,{recursive:true}),i.mkdirSync(w.join(e,fe),{recursive:true}),i.mkdirSync(w.join(e,pe),{recursive:true});let t=w.join(e,or),r=w.join(e,sr);if(!i.existsSync(t))try{i.writeFileSync(t,`archive-store
6
6
  ${new Date().toISOString()}
7
- `,"utf-8");}catch{}function o(){if(!i.existsSync(r))return {};try{let a=i.readFileSync(r,"utf-8"),g=JSON.parse(a);return g&&typeof g=="object"&&!Array.isArray(g)?g:{}}catch{return {}}}function n(a){let g=`${r}.${process.pid}.${randomUUID()}.tmp`;try{i.writeFileSync(g,JSON.stringify(a,null,2),"utf-8"),B(g,r);}catch{}}function s(){if(!i.existsSync(t))return;let a=o(),g=typeof a["retention.maxAgeMs"]=="number"?a["retention.maxAgeMs"]:0,S=typeof a["retention.sweepIntervalMs"]=="number"?a["retention.sweepIntervalMs"]:0;if(g<=0||S<=0)return;let c=typeof a["retention.lastSweepAt"]=="number"?a["retention.lastSweepAt"]:0,d=Date.now();if(d-c<S)return;a["retention.lastSweepAt"]=d,n(a);let h=d,l=u=>{let p;try{p=i.readdirSync(u,{withFileTypes:!0});}catch{return}for(let m of p){if(Date.now()-h>sr)return;let R=x.join(u,m.name);if(m.isDirectory()){l(R);continue}if(m.isFile())try{let w=i.statSync(R);if(d-w.mtimeMs>g)try{i.unlinkSync(R);}catch{}}catch{}}};l(x.join(e,fe)),l(x.join(e,pe));}return {stream(a){let g=ot(a),S=x.join(e,fe,`${g}.jsonl`),c=me(S);return {append(d){let h=c.append(d);try{s();}catch{}return h},readAll:()=>c.readAll(),readAfter:d=>c.readAfter(d),clear:()=>{c.clear&&c.clear();}}},blob(a){let g=ot(a),S=x.join(e,pe,g);i.mkdirSync(S,{recursive:true});let c=U(S);return {read:d=>c.read(d),write:(d,h)=>{c.write(d,h);try{s();}catch{}},exists:d=>c.exists(d),remove:d=>c.remove(d),readBytes:c.readBytes?d=>c.readBytes(d):void 0,writeBytes:c.writeBytes?(d,h)=>{c.writeBytes(d,h);try{s();}catch{}}:void 0,listKeys:d=>c.listKeys(d),stat:c.stat?d=>c.stat(d):void 0,renameKey:(d,h)=>c.renameKey(d,h)}},listStreams(a){let g=x.join(e,fe);try{return i.readdirSync(g,{withFileTypes:!0}).filter(S=>S.isFile()&&S.name.endsWith(".jsonl")).map(S=>S.name.slice(0,-6)).filter(S=>!a||S.startsWith(a)).sort()}catch{return []}},listBlobs(a){let g=x.join(e,pe);try{return i.readdirSync(g,{withFileTypes:!0}).filter(S=>S.isDirectory()).map(S=>S.name).filter(S=>!a||S.startsWith(a)).sort()}catch{return []}},config:{get(a){return o()[a]??null},set(a,g){let S=o();g==null?delete S[a]:S[a]=g,n(S);}}}}function se(e){function t(o){return x.join(e,...o.split("/"))+".json"}function r(o,n,s,a){if(i.existsSync(o))for(let g of i.readdirSync(o,{withFileTypes:true})){let S=n?`${n}/${g.name}`:g.name;if(g.isDirectory()){r(x.join(o,g.name),S,s,a);continue}if(!g.isFile()||!g.name.endsWith(".json"))continue;let c=S.replace(/\.json$/,"");(!s||c.startsWith(s))&&a.push(c);}}return {read(o){let n=t(o);if(!i.existsSync(n))return null;try{return JSON.parse(i.readFileSync(n,"utf-8"))}catch{return null}},write(o,n){let s=t(o),a=`${s}.${process.pid}.${randomUUID()}.tmp`;i.mkdirSync(x.dirname(s),{recursive:true}),i.writeFileSync(a,JSON.stringify(n,null,2),"utf-8"),B(a,s);},delete(o){let n=t(o);try{i.existsSync(n)&&i.unlinkSync(n);}catch{}},listKeys(o){let n=[];return r(e,"",o,n),n.sort()}}}function me(e){function t(){if(!i.existsSync(e))return [];let r=i.readFileSync(e,"utf-8").trim();return r?r.split(`
8
- `).filter(Boolean).map(o=>JSON.parse(o)):[]}return {append(r){let o={id:randomUUID(),payload:r};return i.mkdirSync(x.dirname(e),{recursive:true}),i.appendFileSync(e,JSON.stringify(o)+`
9
- `,"utf-8"),o},readAll(){return t()},readAfter(r){let o=t();if(!r)return {entries:o,newCursor:o.length>0?o[o.length-1].id:null};let n=o.findIndex(a=>a.id===r),s=n===-1?o:o.slice(n+1);return {entries:s,newCursor:s.length>0?s[s.length-1].id:r}},clear(){i.existsSync(e)&&i.truncateSync(e,0);}}}function Ce(e){if(e==null||typeof e!="object")return JSON.stringify(e);if(Array.isArray(e))return `[${e.map(Ce).join(",")}]`;let t=e;return `{${Object.keys(t).sort().map(o=>`${JSON.stringify(o)}:${Ce(t[o])}`).join(",")}}`}function st(e){return createHash("sha256").update(Ce(e)).digest("hex")}function Be(e){let t=x.join(e,"board-journal.jsonl");return {readAllEntries(){if(!i.existsSync(t))return [];let r=i.readFileSync(t,"utf-8").trim();return r?r.split(`
7
+ `,"utf-8");}catch{}function o(){if(!i.existsSync(r))return {};try{let u=i.readFileSync(r,"utf-8"),p=JSON.parse(u);return p&&typeof p=="object"&&!Array.isArray(p)?p:{}}catch{return {}}}function n(u){let p=`${r}.${process.pid}.${randomUUID()}.tmp`;try{i.writeFileSync(p,JSON.stringify(u,null,2),"utf-8"),B(p,r);}catch{}}function s(){if(!i.existsSync(t))return;let u=o(),p=typeof u["retention.maxAgeMs"]=="number"?u["retention.maxAgeMs"]:0,x=typeof u["retention.sweepIntervalMs"]=="number"?u["retention.sweepIntervalMs"]:0;if(p<=0||x<=0)return;let c=typeof u["retention.lastSweepAt"]=="number"?u["retention.lastSweepAt"]:0,l=Date.now();if(l-c<x)return;u["retention.lastSweepAt"]=l,n(u);let h=l,R=y=>{let d;try{d=i.readdirSync(y,{withFileTypes:!0});}catch{return}for(let f of d){if(Date.now()-h>ir)return;let m=w.join(y,f.name);if(f.isDirectory()){R(m);continue}if(f.isFile())try{let S=i.statSync(m);if(l-S.mtimeMs>p)try{i.unlinkSync(m);}catch{}}catch{}}};R(w.join(e,fe)),R(w.join(e,pe));}return {stream(u){let p=ot(u),x=w.join(e,fe,`${p}.jsonl`),c=me(x);return {append(l){let h=c.append(l);try{s();}catch{}return h},readAll:()=>c.readAll(),readAfter:l=>c.readAfter(l),clear:()=>{c.clear&&c.clear();}}},blob(u){let p=ot(u),x=w.join(e,pe,p);i.mkdirSync(x,{recursive:true});let c=U(x);return {read:l=>c.read(l),write:(l,h)=>{c.write(l,h);try{s();}catch{}},exists:l=>c.exists(l),remove:l=>c.remove(l),readBytes:c.readBytes?l=>c.readBytes(l):void 0,writeBytes:c.writeBytes?(l,h)=>{c.writeBytes(l,h);try{s();}catch{}}:void 0,listKeys:l=>c.listKeys(l),stat:c.stat?l=>c.stat(l):void 0,renameKey:(l,h)=>c.renameKey(l,h)}},listStreams(u){let p=w.join(e,fe);try{return i.readdirSync(p,{withFileTypes:!0}).filter(x=>x.isFile()&&x.name.endsWith(".jsonl")).map(x=>x.name.slice(0,-6)).filter(x=>!u||x.startsWith(u)).sort()}catch{return []}},listBlobs(u){let p=w.join(e,pe);try{return i.readdirSync(p,{withFileTypes:!0}).filter(x=>x.isDirectory()).map(x=>x.name).filter(x=>!u||x.startsWith(u)).sort()}catch{return []}},config:{get(u){return o()[u]??null},set(u,p){let x=o();p==null?delete x[u]:x[u]=p,n(x);}}}}function se(e){function t(o){return w.join(e,...o.split("/"))+".json"}function r(o,n,s,u){if(i.existsSync(o))for(let p of i.readdirSync(o,{withFileTypes:true})){let x=n?`${n}/${p.name}`:p.name;if(p.isDirectory()){r(w.join(o,p.name),x,s,u);continue}if(!p.isFile()||!p.name.endsWith(".json"))continue;let c=x.replace(/\.json$/,"");(!s||c.startsWith(s))&&u.push(c);}}return {read(o){let n=t(o);if(!i.existsSync(n))return null;try{return JSON.parse(i.readFileSync(n,"utf-8"))}catch{return null}},write(o,n){let s=t(o),u=`${s}.${process.pid}.${randomUUID()}.tmp`;i.mkdirSync(w.dirname(s),{recursive:true}),i.writeFileSync(u,JSON.stringify(n,null,2),"utf-8"),B(u,s);},delete(o){let n=t(o);try{i.existsSync(n)&&i.unlinkSync(n);}catch{}},listKeys(o){let n=[];return r(e,"",o,n),n.sort()}}}function me(e){function t(){if(!i.existsSync(e))return [];let r=i.readFileSync(e,"utf-8").trim();return r?r.split(`
8
+ `).filter(Boolean).map(o=>JSON.parse(o)):[]}return {append(r){let o={id:randomUUID(),payload:r};return i.mkdirSync(w.dirname(e),{recursive:true}),i.appendFileSync(e,JSON.stringify(o)+`
9
+ `,"utf-8"),o},readAll(){return t()},readAfter(r){let o=t();if(!r)return {entries:o,newCursor:o.length>0?o[o.length-1].id:null};let n=o.findIndex(u=>u.id===r),s=n===-1?o:o.slice(n+1);return {entries:s,newCursor:s.length>0?s[s.length-1].id:r}},clear(){i.existsSync(e)&&i.truncateSync(e,0);}}}function Ce(e){if(e==null||typeof e!="object")return JSON.stringify(e);if(Array.isArray(e))return `[${e.map(Ce).join(",")}]`;let t=e;return `{${Object.keys(t).sort().map(o=>`${JSON.stringify(o)}:${Ce(t[o])}`).join(",")}}`}function st(e){return createHash("sha256").update(Ce(e)).digest("hex")}function Be(e){let t=w.join(e,"board-journal.jsonl");return {readAllEntries(){if(!i.existsSync(t))return [];let r=i.readFileSync(t,"utf-8").trim();return r?r.split(`
10
10
  `).filter(Boolean).map(o=>JSON.parse(o)):[]},appendEntry(r){i.appendFileSync(t,JSON.stringify(r)+`
11
- `,"utf-8");},generateId(){return randomUUID()}}}function it(e){return {tryAcquire(){try{if(!i.existsSync(e)){i.mkdirSync(x.dirname(e),{recursive:!0});try{i.writeFileSync(e,"{}",{flag:"wx"});}catch{}}return lockSync(e,{retries:0})}catch{return null}}}}function z(e){return {status:"success",data:e}}function Q(e){return {status:"fail",error:e}}function re(e){return {status:"error",error:e instanceof Error?e.message:String(e)}}function ne(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:{}}function ir(e,t={}){let r=()=>b$1(e.kvStorage("config")),o=t.unsupportedLabel??"hosted async runtime";async function n(){return t.taskExecutorRef?t.taskExecutorRef:await r().readTaskExecutorRef().catch(()=>{})}async function s(u,p,m){let R=await n();if(!R||!t.invokeExecutor)throw new Error(`${u} is not supported on the ${o} yet`);let f=(await t.invokeExecutor(R,u,{...p!==void 0?{input:typeof p=="string"?p:JSON.stringify(p)}:{},...m!==void 0?{timeout:m}:{}})).trim();return f?ne(JSON.parse(f)):{}}async function a(u){try{if(!u.body||typeof u.body!="object"||Array.isArray(u.body))return Q("validateCardPreflight requires card JSON object in body");let p=u.body,m=p["card-content"]??p,R=typeof m.id=="string"?m.id:"(unknown)",w=a$5(m),f=Array.isArray(m.source_defs)&&m.source_defs.length>0,y=[...w.issues];if(f)if(t.invokeExecutor&&await n())for(let v of m.source_defs){let k=typeof v.bindTo=="string"?v.bindTo:"(unknown)";try{let b=await s("validate-source-def",v,1e4);if(b.ok!==!0&&Array.isArray(b.errors))for(let A of b.errors)typeof A=="string"&&A&&y.push(`source "${k}": ${A}`);}catch(b){y.push(`source "${k}": executor validate-source-def failed \u2014 ${b instanceof Error?b.message:String(b)}`);}}else await n()&&y.push(`executor-backed source_def preflight is not supported on the ${o} yet`);return z({cardId:R,isValid:y.length===0,issues:y})}catch(p){return re(p)}}function g(u){try{if(!u.body||typeof u.body!="object"||Array.isArray(u.body))return Q("evalCardCompute requires a JSON object in body");let p=u.body,m=p["card-content"]??p,R=typeof m.id=="string"?m.id:"(unknown)",w=p["mock-fetched-sources"]??{},f=p["mock-requires"]??{},y=m.compute;if(!y||!Array.isArray(y)||y.length===0)return z({cardId:R,ok:!0,computed_values:{},errors:[]});let v={id:R,card_data:m.card_data??{},requires:f,source_defs:m.source_defs,compute:y},k=a$6.runSync(v,{sourcesData:w});return z({cardId:R,ok:(k.errors??[]).length===0,computed_values:k.node.computed_values??{},errors:k.errors??[]})}catch(p){return re(p)}}async function S(u){return Q(`${u} is not supported on the ${o} yet`)}async function c(){try{return t.invokeExecutor&&await n()?z(await s("describe-capabilities",void 0,1e4)):await S("describeTaskExecutorCapabilities")}catch(u){return re(u)}}async function d(u){try{if(!t.invokeExecutor||!await n())return await S("probeSourcePreflight");if(!u.body||typeof u.body!="object"||Array.isArray(u.body))return Q("probeSourcePreflight requires card JSON object in body");let p=u.body,m=p["card-content"]??p,R=ne(p["mock-projections"]??{}),w=u.params?.sourceIdx,f=Array.isArray(m.source_defs)?m.source_defs:[];if(w===void 0)return Q("probeSourcePreflight requires params.sourceIdx");if(w<0||w>=f.length)return Q(`sourceIdx ${w} out of range (card has ${f.length} source(s))`);let y=f[w],v=typeof y.bindTo=="string"?y.bindTo:"source",k=await s("probe-source-preflight",{...y,_projections:R},y.timeout??6e4);return k.ok!==!0?Q(typeof k.error=="string"?k.error:"Preflight probe failed"):z({bindTo:v,reachable:k.reachable,latencyMs:k.latencyMs,...typeof k.note=="string"?{note:k.note}:{}})}catch(p){return re(p)}}async function h(u){try{if(!t.invokeExecutor||!await n())return await S("runSourcePreflight");if(!u.body||typeof u.body!="object"||Array.isArray(u.body))return Q("runSourcePreflight requires card JSON object in body");let p=u.body,m=p["card-content"]??p,R=ne(p["mock-projections"]??{}),w=u.params?.sourceIdx,f=Array.isArray(m.source_defs)?m.source_defs:[];if(w===void 0)return Q("runSourcePreflight requires params.sourceIdx");if(w<0||w>=f.length)return Q(`sourceIdx ${w} out of range (card has ${f.length} source(s))`);let y=f[w],v=typeof y.bindTo=="string"?y.bindTo:"source",k=await s("run-source-preflight",{...y,_projections:R},y.timeout??6e4);return k.ok!==!0?z({bindTo:v,ok:!1,result:null,issues:[typeof k.error=="string"?k.error:"Preflight run failed"]}):z({bindTo:v,ok:!0,result:Object.prototype.hasOwnProperty.call(k,"resultValue")?k.resultValue:null,issues:[]})}catch(p){return re(p)}}async function l(u){try{if(!u.body||typeof u.body!="object"||Array.isArray(u.body))return Q("simulateCardCycle requires a JSON object in body");let p=u.body,m=p["card-content"]??p,R=typeof m.id=="string"?m.id:"(unknown)",w=ne(p["mock-fetched-sources"]??{}),f=ne(p["mock-requires"]??{}),y=await a({body:{"card-content":m}}),v=y.status==="success"?{isValid:y.data.isValid,issues:y.data.issues}:{isValid:!1,issues:[y.status==="fail"?y.error:"internal error"]},k=Array.isArray(m.source_defs)?m.source_defs:[],b=ne(m.card_data??{}),A=[],F=[];if(k.length>0){A=a$6.enrichSourcesSync(k,{card_data:b,requires:f});for(let I of A){let P=I.projections,H=I._projections;if(P&&H){for(let $ of Object.keys(P))if(H[$]===void 0){let ut=typeof I.bindTo=="string"?I.bindTo:"(unknown)";F.push({bindTo:ut,key:$,error:`Projection "${$}" resolved to undefined`});}}}}let E=[],M={...w};for(let I=0;I<A.length;I+=1){let P=A[I],H=typeof P.bindTo=="string"?P.bindTo:`source_${I}`;if(!t.invokeExecutor||!await n()){E.push({bindTo:H,skipped:!0,error:"No task executor configured"});continue}try{let $=await s("run-source-preflight",P,P.timeout??6e4);$.ok===!0&&!Object.prototype.hasOwnProperty.call(w,H)&&Object.prototype.hasOwnProperty.call($,"resultValue")&&(M[H]=$.resultValue),E.push({bindTo:H,reachable:$.reachable,latencyMs:$.latencyMs,...$.ok===!0?{}:{error:typeof $.error=="string"?$.error:"Preflight run failed"}});}catch{E.push({bindTo:H,skipped:!0,error:"Executor does not support run-source-preflight"});}}let W=m.compute,te={},G=[];if(W&&Array.isArray(W)&&W.length>0){let I={id:R,card_data:b,requires:f,source_defs:m.source_defs,compute:W},P=a$6.runSync(I,{sourcesData:M});te=P.node.computed_values??{},G=P.errors??[];}return z({cardId:R,ok:v.isValid&&F.length===0&&G.length===0&&E.every(I=>!I.error),validation:v,source_probes:E,projection_errors:F,fetched_sources:M,computed_values:te,compute_errors:G})}catch(p){return re(p)}}return {describeTaskExecutorCapabilities:c,validateCardPreflight:a,evalCardCompute:g,probeSourcePreflight:d,runSourcePreflight:h,simulateCardCycle:l}}function on(){return {async invoke(e,t){if(e.howToRun!=="local-node")return {dispatched:false,error:`createNodeSpawnInvocationAdapter: unsupported howToRun "${e.howToRun}"`};let r="";try{let s=e.whatToRun;r=q(s);}catch{r="";}if(!r)return {dispatched:false,error:"createNodeSpawnInvocationAdapter: could not resolve executable path from whatToRun"};let o={...t},n=Buffer.from(JSON.stringify(o)).toString("base64");try{return spawn(process.execPath,[r,"--boardId",String(t.boardId??""),"--cardId",String(t.cardId??""),"--extraEncJson",n],{stdio:"ignore",windowsHide:!0}).unref(),{dispatched:!0}}catch(s){return {dispatched:false,error:s instanceof Error?s.message:String(s)}}},async describe(e){if(e.howToRun!=="local-node")return null;let t="";try{let r=e.whatToRun;t=q(r);}catch{t="";}if(!t)return null;try{let r=spawnSync(process.execPath,[t,"describe"],{timeout:5e3,encoding:"utf-8",windowsHide:!0});return r.status!==0?null:JSON.parse(String(r.stdout).trim())}catch{return null}}}}var ur=".board.lock";function at(e,t){if(!e||!t)return false;let r=String(e).replace(/[\\/]+$/,"").split(/[\\/]+/).filter(Boolean);return r.length>0&&r[r.length-1]===t}function dr(e,t){return typeof e=="string"?{cliDir:e,opts:t}:{cliDir:void 0,opts:e}}function lr(e,t){return typeof e=="string"?{cliDir:e,opts:t}:{cliDir:void 0,opts:e}}function ct(e){if(e)return e;let t=Je(import.meta.url),r=[t,C(t,"..","cli","node"),C(t,"..","..","cli","node")];for(let o of r)try{return Ve(o),o}catch{}throw new Error(`createFsBoardPlatformAdapter: could not resolve a public CLI directory from module dir ${t}`)}function fr(e,t,r){let{cliDir:o,opts:n}=dr(t,r),s=e.value,a=null,g$1,S=null,c;function d(){return c||(c=ct(o)),c}function h(f){let y=n?.queueStoreRef;if(!y)throw new Error(`createFsBoardPlatformAdapter: ${f} requires opts.queueStoreRef`);return y}function l(f){let y=n?.boardRuntimeStoreRef;if(!y)throw new Error(`createFsBoardPlatformAdapter: ${f} requires opts.boardRuntimeStoreRef`);return y}let u=n?.callbackTransport??g({notifyChannel:n?.notifyChannel,boardRuntimeStoreRef:n?.boardRuntimeStoreRef,queueStoreRef:n?.queueStoreRef}),p;function m(f){return p.queueStorageForRef(h(`internal lane "${f}"`),f)}function R(f){return a$4(m(f))}function w(){if(n?.suppressSpawn||a)return;let f=xe({id:"task-executor",workerStore:R("task-executor"),handleRequest:async(y,v)=>{let k=await Z(v.ref,v.args,{cliDir:d(),cwd:process.cwd(),label:"fsBoardAdapter.boardWorker"});if(k.result!=="success"){let b=typeof k.data?.error=="string"?k.data.error:k.error;throw new Error(b||k.result)}}});a=de(f).catch(y=>{n?.onWarn?.(`[board-worker] in-process queue drain failed: ${y instanceof Error?y.message:String(y)}`);}).finally(()=>{a=null,m("task-executor").peekActive().length>0&&w();});}return p={kvStorage:f=>se(C(s,`.${f}`)),blobStorage:f=>f?U(C(s,f)):U(s),blobStorageForRef:f=>U(b(f).value),chatStorageForRef:f=>pr(b(f).value),queueStorageForRef:(f,y)=>je(C(b(f).value,y)),scratchStorage:()=>oe(C(s,".tmp")),scratchStorageForRef:f=>oe(b(f).value),archiveFactory:()=>ge(C(s,"archive")),archiveFactoryForRef:f=>ge(b(f).value),journalAdapter:()=>Be(s),journalAdapterForRef:f=>Be(b(f).value),lock:it(C(s,ur)),callbackTransport:u,async dispatchExecution(f,y){let v=!!y.output?.ref;if(f.howToRun==="queue-storage")try{let b=R("task-executor"),A=typeof f.extra?.boardId=="string"?f.extra.boardId:void 0;if(v)return b.enqueueRequest({boardId:A,ref:f,args:y}),{dispatched:!0};let F=y.source_def?.bindTo??ue().slice(0,8),E=oe(C(s,".tmp")),M=E.create(JSON.stringify(y,null,2),`exec-in-${F}`,".json"),W=E.getUniqueKey(`exec-out-${F}`,".json"),te=E.getUniqueKey(`exec-err-${F}`,".txt"),G=a$1(E.keyRef(M)),I=a$1(E.keyRef(W)),P=a$1(E.keyRef(te));return b.enqueueRequest({boardId:A,ref:f,args:{subcommand:"run-source-fetch",inRef:G,outRef:I,errRef:P}}),{dispatched:!0}}catch(b){return {dispatched:false,error:b instanceof Error?b.message:String(b)}}if(v&&(f.howToRun==="http:post"||f.howToRun==="in-process-loop"))try{if(f.howToRun==="http:post"){let F=q(f.whatToRun),E=await fetch(F,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...y,...f.extra?{extra:f.extra}:{}})});if(!E.ok){let M=await E.text().catch(()=>"");return {dispatched:!1,error:`HTTP ${E.status}: ${M}`}}return {dispatched:!0}}let b=await Z(f,y,{cwd:process.cwd(),label:"dispatchExecution.directHostedWorker"});return b.result==="success"?{dispatched:!0}:{dispatched:!1,error:(typeof b.data?.error=="string"?b.data.error:b.error)||b.result}}catch(b){return {dispatched:false,error:b instanceof Error?b.message:String(b)}}let k=f.howToRun==="local-node"||f.howToRun==="local-process"||f.howToRun==="local-python"||f.howToRun==="built-in";if(n?.suppressSpawn&&k)return {dispatched:false};try{let b=y.source_def?.bindTo??ue().slice(0,8),A=oe(C(s,".tmp")),F=A.create(JSON.stringify(y,null,2),`exec-in-${b}`,".json"),E=A.getUniqueKey(`exec-out-${b}`,".json"),M=A.getUniqueKey(`exec-err-${b}`,".txt"),W=a$1(A.keyRef(F)),te=a$1(A.keyRef(E)),G=a$1(A.keyRef(M)),I=R("task-executor"),P=typeof f.extra?.boardId=="string"?f.extra.boardId:void 0;return I.enqueueRequest({boardId:P,ref:f,args:{subcommand:"run-source-fetch",inRef:W,outRef:te,errRef:G}}),w(),{dispatched:!0}}catch(b){let A=b instanceof Error?b.message:String(b);try{let F=ge(C(s,"archive")),E=new Date().toISOString().replace(/[:.]/g,"-"),M=y.source_def?.bindTo??"unknown";F.blob("exec-failures").write(`${E}-${M}.json`,JSON.stringify({error:A,args:y,ref:f,at:new Date().toISOString()},null,2));}catch{}return {dispatched:false,error:A}}},supportsDirectSourceOutput(f){return f.howToRun==="queue-storage"||f.howToRun==="http:post"||f.howToRun==="in-process-loop"},resolveBlob(f){let y=Ne(f.value)?Ie().read(f.value):U(s).read(f.value);if(y===null)throw new Error(`resolveBlob: blob not found: ::${f.kind}::${f.value}`);return y},hashFn:st,genId:()=>Qe(`${Date.now()}-${Math.random()}`).slice(0,32),kvStorageForRef:f=>se(b(f).value),requestProcessAccumulated(){if(n?.suppressSpawn||S)return;let f=this,y$1=g$1??=y(e,f,{boardRuntimeStoreRef:l("requestProcessAccumulated")}),v=we({id:"process-accumulated",queueStorage:m("process-accumulated"),handleMessage:async()=>{let k=await y$1.processAccumulatedEvents({});if(k.status!=="success")throw new Error(k.error||`processAccumulatedEvents returned ${k.status}`)}});S=de(v).catch(k=>{n?.onWarn?.(`[process-accumulated] in-process queue drain failed: ${k instanceof Error?k.message:String(k)}`);}).finally(()=>{S=null,m("process-accumulated").peekActive().length>0&&f.requestProcessAccumulated?.();});},publishBoardChangeNotifications(f){if(!n?.notifyChannel||f.length===0)return;let y=f.map(v=>({id:ue(),ts:new Date().toISOString(),boardRef:a$1(e),notification:v}));Ue(n.notifyChannel,y,n.onWarn);},onWarn:n?.onWarn},p}function sn(e,t,r){let{cliDir:o,opts:n}=lr(t,r),s,a=()=>(s||(s=ct(o)),s),g=fr(e,o,n),S=Ae({resolveCliDir:a,...n?.resolveRef?{resolveRef:n.resolveRef}:{}});return {...g,invokeExecutor:S.invokeExecutor,validateSchema(c){let d$1=d(c);return {ok:d$1.errors.length===0,errors:d$1.errors}},absoluteBlob:Ie()}}function an(e,t={}){let r=t.chatsSubdir??"chats",o=t.kvSubdir??".kv",n=o?[o,"chat"]:["chat"],s=r&&!at(e,r)?C(e,r):e,a=se(C(e,...n));return a$2(g=>{let c=`${String(g).replace(/[^a-zA-Z0-9_-]/g,"_")}.jsonl`,d=C(s,c);return me(d)},a)}function pr(e){return a$2(t=>{let o=`${String(t).replace(/[^a-zA-Z0-9_-]/g,"_")}.jsonl`;return me(C(e,"journal",o))},se(C(e,"kv")))}function cn(e,t={}){let r=t.filesSubdir??"files",o=r&&!at(e,r)?C(e,r):e;return a$3(U(o))}function un(e){try{let t=JSON.parse(Buffer.from(e,"base64url").toString());return typeof t.br=="string"?t.br:null}catch{return null}}export{le as buildLocalBaseSpec,xe as createBoardWorkerQueueLane,Vt as createExecutionRefInvoker,U as createFsBlobStorage,an as createFsBoardChatStorage,cn as createFsBoardFileArtifactsStore,sn as createFsBoardNonCorePlatformAdapter,fr as createFsBoardPlatformAdapter,pr as createFsChatStorageForRefRoot,je as createFsQueueStorage,ir as createHostedAsyncBoardNonCorePublic,on as createNodeSpawnInvocationAdapter,Ae as createNonCoreExecutorDispatcher,we as createQueueStorageLane,un as decodeBoardRefFromToken,de as drainQueueLaneToIdle,be as evaluateArgsMassaging,Z as invokeExecutionRef,ve as invokeExecutionRefSync,Ut as invokeRefSync,Jt as registerInProcessExecutionHandler,q as resolveWhatToRunValue,Xe as resolveYamlFlowCliPath,Ye as startQueueLaneRunner,_t as startQueueLaneRunners,Dt as unregisterInProcessExecutionHandler};//# sourceMappingURL=board-live-cards-node.js.map
11
+ `,"utf-8");},generateId(){return randomUUID()}}}function it(e){return {tryAcquire(){try{if(!i.existsSync(e)){i.mkdirSync(w.dirname(e),{recursive:!0});try{i.writeFileSync(e,"{}",{flag:"wx"});}catch{}}return lockSync(e,{retries:0})}catch{return null}}}}function z(e){return {status:"success",data:e}}function Q(e){return {status:"fail",error:e}}function re(e){return {status:"error",error:e instanceof Error?e.message:String(e)}}function ne(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:{}}function ar(e,t={}){let r=()=>b$1(e.kvStorage("config")),o=t.unsupportedLabel??"hosted async runtime";async function n(){return t.taskExecutorRef?t.taskExecutorRef:await r().readTaskExecutorRef().catch(()=>{})}async function s(y,d,f){let m=await n();if(!m||!t.invokeExecutor)throw new Error(`${y} is not supported on the ${o} yet`);let a=(await t.invokeExecutor(m,y,{...d!==void 0?{input:typeof d=="string"?d:JSON.stringify(d)}:{},...f!==void 0?{timeout:f}:{}})).trim();return a?ne(JSON.parse(a)):{}}async function u(y){try{if(!y.body||typeof y.body!="object"||Array.isArray(y.body))return Q("validateCardPreflight requires card JSON object in body");let d=y.body,f=d["card-content"]??d,m=typeof f.id=="string"?f.id:"(unknown)",S=a$5(f),a=Array.isArray(f.source_defs)&&f.source_defs.length>0,g=[...S.issues];if(a)if(t.invokeExecutor&&await n())for(let v of f.source_defs){let b=typeof v.bindTo=="string"?v.bindTo:"(unknown)";try{let k=await s("validate-source-def",v,1e4);if(k.ok!==!0&&Array.isArray(k.errors))for(let A of k.errors)typeof A=="string"&&A&&g.push(`source "${b}": ${A}`);}catch(k){g.push(`source "${b}": executor validate-source-def failed \u2014 ${k instanceof Error?k.message:String(k)}`);}}else await n()&&g.push(`executor-backed source_def preflight is not supported on the ${o} yet`);return z({cardId:m,isValid:g.length===0,issues:g})}catch(d){return re(d)}}function p(y){try{if(!y.body||typeof y.body!="object"||Array.isArray(y.body))return Q("evalCardCompute requires a JSON object in body");let d=y.body,f=d["card-content"]??d,m=typeof f.id=="string"?f.id:"(unknown)",S=d["mock-fetched-sources"]??{},a=d["mock-requires"]??{},g=f.compute;if(!g||!Array.isArray(g)||g.length===0)return z({cardId:m,ok:!0,computed_values:{},errors:[]});let v={id:m,card_data:f.card_data??{},requires:a,source_defs:f.source_defs,compute:g},b=a$6.runSync(v,{sourcesData:S});return z({cardId:m,ok:(b.errors??[]).length===0,computed_values:b.node.computed_values??{},errors:b.errors??[]})}catch(d){return re(d)}}async function x(y){return Q(`${y} is not supported on the ${o} yet`)}async function c(){try{return t.invokeExecutor&&await n()?z(await s("describe-capabilities",void 0,1e4)):await x("describeTaskExecutorCapabilities")}catch(y){return re(y)}}async function l(y){try{if(!t.invokeExecutor||!await n())return await x("probeSourcePreflight");if(!y.body||typeof y.body!="object"||Array.isArray(y.body))return Q("probeSourcePreflight requires card JSON object in body");let d=y.body,f=d["card-content"]??d,m=ne(d["mock-projections"]??{}),S=y.params?.sourceIdx,a=Array.isArray(f.source_defs)?f.source_defs:[];if(S===void 0)return Q("probeSourcePreflight requires params.sourceIdx");if(S<0||S>=a.length)return Q(`sourceIdx ${S} out of range (card has ${a.length} source(s))`);let g=a[S],v=typeof g.bindTo=="string"?g.bindTo:"source",b=await s("probe-source-preflight",{...g,_projections:m},g.timeout??6e4);return b.ok!==!0?Q(typeof b.error=="string"?b.error:"Preflight probe failed"):z({bindTo:v,reachable:b.reachable,latencyMs:b.latencyMs,...typeof b.note=="string"?{note:b.note}:{}})}catch(d){return re(d)}}async function h(y){try{if(!t.invokeExecutor||!await n())return await x("runSourcePreflight");if(!y.body||typeof y.body!="object"||Array.isArray(y.body))return Q("runSourcePreflight requires card JSON object in body");let d=y.body,f=d["card-content"]??d,m=ne(d["mock-projections"]??{}),S=y.params?.sourceIdx,a=Array.isArray(f.source_defs)?f.source_defs:[];if(S===void 0)return Q("runSourcePreflight requires params.sourceIdx");if(S<0||S>=a.length)return Q(`sourceIdx ${S} out of range (card has ${a.length} source(s))`);let g=a[S],v=typeof g.bindTo=="string"?g.bindTo:"source",b=await s("run-source-preflight",{...g,_projections:m},g.timeout??6e4);return b.ok!==!0?z({bindTo:v,ok:!1,result:null,issues:[typeof b.error=="string"?b.error:"Preflight run failed"]}):z({bindTo:v,ok:!0,result:Object.prototype.hasOwnProperty.call(b,"resultValue")?b.resultValue:null,issues:[]})}catch(d){return re(d)}}async function R(y){try{if(!y.body||typeof y.body!="object"||Array.isArray(y.body))return Q("simulateCardCycle requires a JSON object in body");let d=y.body,f=d["card-content"]??d,m=typeof f.id=="string"?f.id:"(unknown)",S=ne(d["mock-fetched-sources"]??{}),a=ne(d["mock-requires"]??{}),g=await u({body:{"card-content":f}}),v=g.status==="success"?{isValid:g.data.isValid,issues:g.data.issues}:{isValid:!1,issues:[g.status==="fail"?g.error:"internal error"]},b=Array.isArray(f.source_defs)?f.source_defs:[],k=ne(f.card_data??{}),A=[],F=[];if(b.length>0){A=a$6.enrichSourcesSync(b,{card_data:k,requires:a});for(let I of A){let P=I.projections,W=I._projections;if(P&&W){for(let $ of Object.keys(P))if(W[$]===void 0){let ut=typeof I.bindTo=="string"?I.bindTo:"(unknown)";F.push({bindTo:ut,key:$,error:`Projection "${$}" resolved to undefined`});}}}}let E=[],M={...S};for(let I=0;I<A.length;I+=1){let P=A[I],W=typeof P.bindTo=="string"?P.bindTo:`source_${I}`;if(!t.invokeExecutor||!await n()){E.push({bindTo:W,skipped:!0,error:"No task executor configured"});continue}try{let $=await s("run-source-preflight",P,P.timeout??6e4);$.ok===!0&&!Object.prototype.hasOwnProperty.call(S,W)&&Object.prototype.hasOwnProperty.call($,"resultValue")&&(M[W]=$.resultValue),E.push({bindTo:W,reachable:$.reachable,latencyMs:$.latencyMs,...$.ok===!0?{}:{error:typeof $.error=="string"?$.error:"Preflight run failed"}});}catch{E.push({bindTo:W,skipped:!0,error:"Executor does not support run-source-preflight"});}}let K=f.compute,te={},G=[];if(K&&Array.isArray(K)&&K.length>0){let I={id:m,card_data:k,requires:a,source_defs:f.source_defs,compute:K},P=a$6.runSync(I,{sourcesData:M});te=P.node.computed_values??{},G=P.errors??[];}return z({cardId:m,ok:v.isValid&&F.length===0&&G.length===0&&E.every(I=>!I.error),validation:v,source_probes:E,projection_errors:F,fetched_sources:M,computed_values:te,compute_errors:G})}catch(d){return re(d)}}return {describeTaskExecutorCapabilities:c,validateCardPreflight:u,evalCardCompute:p,probeSourcePreflight:l,runSourcePreflight:h,simulateCardCycle:R}}function sn(){return {async invoke(e,t){if(e.howToRun!=="local-node")return {dispatched:false,error:`createNodeSpawnInvocationAdapter: unsupported howToRun "${e.howToRun}"`};let r="";try{let s=e.whatToRun;r=L(s);}catch{r="";}if(!r)return {dispatched:false,error:"createNodeSpawnInvocationAdapter: could not resolve executable path from whatToRun"};let o={...t},n=Buffer.from(JSON.stringify(o)).toString("base64");try{return spawn(process.execPath,[r,"--boardId",String(t.boardId??""),"--cardId",String(t.cardId??""),"--extraEncJson",n],{stdio:"ignore",windowsHide:!0}).unref(),{dispatched:!0}}catch(s){return {dispatched:false,error:s instanceof Error?s.message:String(s)}}},async describe(e){if(e.howToRun!=="local-node")return null;let t="";try{let r=e.whatToRun;t=L(r);}catch{t="";}if(!t)return null;try{let r=spawnSync(process.execPath,[t,"describe"],{timeout:5e3,encoding:"utf-8",windowsHide:!0});return r.status!==0?null:JSON.parse(String(r.stdout).trim())}catch{return null}}}}var dr=".board.lock";function at(e,t){if(!e||!t)return false;let r=String(e).replace(/[\\/]+$/,"").split(/[\\/]+/).filter(Boolean);return r.length>0&&r[r.length-1]===t}function lr(e,t){return typeof e=="string"?{cliDir:e,opts:t}:{cliDir:void 0,opts:e}}function fr(e,t){return typeof e=="string"?{cliDir:e,opts:t}:{cliDir:void 0,opts:e}}function ct(e){if(e)return e;let t=Je(import.meta.url),r=[t,C(t,"..","cli","node"),C(t,"..","..","cli","node")];for(let o of r)try{return Ve(o),o}catch{}throw new Error(`createFsBoardPlatformAdapter: could not resolve a public CLI directory from module dir ${t}`)}function pr(e,t,r){let{cliDir:o,opts:n}=lr(t,r),s=e.value,u=null,p,x=null,c;function l(){return c||(c=ct(o)),c}function h(a){let g=n?.queueStoreRef;if(!g)throw new Error(`createFsBoardPlatformAdapter: ${a} requires opts.queueStoreRef`);return g}function R(a){let g=n?.boardRuntimeStoreRef;if(!g)throw new Error(`createFsBoardPlatformAdapter: ${a} requires opts.boardRuntimeStoreRef`);return g}let y$1=n?.callbackTransport??g({notifyChannel:n?.notifyChannel,boardRuntimeStoreRef:n?.boardRuntimeStoreRef,queueStoreRef:n?.queueStoreRef}),d;function f(a){return d.queueStorageForRef(h(`internal lane "${a}"`),a)}function m(a){return a$4(f(a))}function S(){if(n?.suppressSpawn||u)return;let a=xe({id:"task-executor",workerStore:m("task-executor"),handleRequest:async(g,v)=>{let b=await Z(v.ref,v.args,{cliDir:l(),cwd:process.cwd(),label:"fsBoardAdapter.boardWorker"});if(b.result!=="success"){let k=typeof b.data?.error=="string"?b.data.error:b.error;throw new Error(k||b.result)}}});u=de(a).catch(g=>{n?.onWarn?.(`[board-worker] in-process queue drain failed: ${g instanceof Error?g.message:String(g)}`);}).finally(()=>{u=null,f("task-executor").peekActive().length>0&&S();});}return d={kvStorage:a=>se(C(s,`.${a}`)),blobStorage:a=>a?U(C(s,a)):U(s),blobStorageForRef:a=>U(b(a).value),chatStorageForRef:a=>gr(b(a).value),queueStorageForRef:(a,g)=>je(C(b(a).value,g)),scratchStorage:()=>oe(C(s,".tmp")),scratchStorageForRef:a=>oe(b(a).value),archiveFactory:()=>ge(C(s,"archive")),archiveFactoryForRef:a=>ge(b(a).value),journalAdapter:()=>Be(s),journalAdapterForRef:a=>Be(b(a).value),lock:it(C(s,dr)),callbackTransport:y$1,async dispatchExecution(a,g){let v=!!g.output?.ref;if(a.howToRun==="queue-storage")try{let k=m("task-executor"),A=typeof a.extra?.boardId=="string"?a.extra.boardId:void 0;if(v)return k.enqueueRequest({boardId:A,ref:a,args:g}),{dispatched:!0};let F=g.source_def?.bindTo??ue().slice(0,8),E=oe(C(s,".tmp")),M=E.create(JSON.stringify(g,null,2),`exec-in-${F}`,".json"),K=E.getUniqueKey(`exec-out-${F}`,".json"),te=E.getUniqueKey(`exec-err-${F}`,".txt"),G=a$1(E.keyRef(M)),I=a$1(E.keyRef(K)),P=a$1(E.keyRef(te));return k.enqueueRequest({boardId:A,ref:a,args:{subcommand:"run-source-fetch",inRef:G,outRef:I,errRef:P}}),{dispatched:!0}}catch(k){return {dispatched:false,error:k instanceof Error?k.message:String(k)}}if(v&&(a.howToRun==="http:post"||a.howToRun==="in-process-loop"))try{if(a.howToRun==="http:post"){let F=L(a.whatToRun),E=await fetch(F,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...g,...a.extra?{extra:a.extra}:{}})});if(!E.ok){let M=await E.text().catch(()=>"");return {dispatched:!1,error:`HTTP ${E.status}: ${M}`}}return {dispatched:!0}}let k=await Z(a,g,{cwd:process.cwd(),label:"dispatchExecution.directHostedWorker"});return k.result==="success"?{dispatched:!0}:{dispatched:!1,error:(typeof k.data?.error=="string"?k.data.error:k.error)||k.result}}catch(k){return {dispatched:false,error:k instanceof Error?k.message:String(k)}}let b=a.howToRun==="local-node"||a.howToRun==="local-process"||a.howToRun==="local-python"||a.howToRun==="built-in";if(n?.suppressSpawn&&b)return {dispatched:false};try{let k=g.source_def?.bindTo??ue().slice(0,8),A=oe(C(s,".tmp")),F=A.create(JSON.stringify(g,null,2),`exec-in-${k}`,".json"),E=A.getUniqueKey(`exec-out-${k}`,".json"),M=A.getUniqueKey(`exec-err-${k}`,".txt"),K=a$1(A.keyRef(F)),te=a$1(A.keyRef(E)),G=a$1(A.keyRef(M)),I=m("task-executor"),P=typeof a.extra?.boardId=="string"?a.extra.boardId:void 0;return I.enqueueRequest({boardId:P,ref:a,args:{subcommand:"run-source-fetch",inRef:K,outRef:te,errRef:G}}),S(),{dispatched:!0}}catch(k){let A=k instanceof Error?k.message:String(k);try{let F=ge(C(s,"archive")),E=new Date().toISOString().replace(/[:.]/g,"-"),M=g.source_def?.bindTo??"unknown";F.blob("exec-failures").write(`${E}-${M}.json`,JSON.stringify({error:A,args:g,ref:a,at:new Date().toISOString()},null,2));}catch{}return {dispatched:false,error:A}}},supportsDirectSourceOutput(a){return a.howToRun==="queue-storage"||a.howToRun==="http:post"||a.howToRun==="in-process-loop"},resolveBlob(a){let g=Ne(a.value)?Ie().read(a.value):U(s).read(a.value);if(g===null)throw new Error(`resolveBlob: blob not found: ::${a.kind}::${a.value}`);return g},hashFn:st,genId:()=>Qe(`${Date.now()}-${Math.random()}`).slice(0,32),kvStorageForRef:a=>se(b(a).value),requestProcessAccumulated(){if(n?.suppressSpawn||x)return;let a=this,g=p??=y(e,a,{boardRuntimeStoreRef:R("requestProcessAccumulated")}),v=we({id:"process-accumulated",queueStorage:f("process-accumulated"),handleMessage:async()=>{let b=await g.processAccumulatedEvents({});if(b.status!=="success")throw new Error(b.error||`processAccumulatedEvents returned ${b.status}`)}});x=de(v).catch(b=>{n?.onWarn?.(`[process-accumulated] in-process queue drain failed: ${b instanceof Error?b.message:String(b)}`);}).finally(()=>{x=null,f("process-accumulated").peekActive().length>0&&a.requestProcessAccumulated?.();});},publishBoardChangeNotifications(a){if(!n?.notifyChannel||a.length===0)return;let g=a.map(v=>({id:ue(),ts:new Date().toISOString(),boardRef:a$1(e),notification:v}));Ue(n.notifyChannel,g,n.onWarn);},onWarn:n?.onWarn},d}function an(e,t,r){let{cliDir:o,opts:n}=fr(t,r),s,u=()=>(s||(s=ct(o)),s),p=pr(e,o,n),x=Ae({resolveCliDir:u,...n?.resolveRef?{resolveRef:n.resolveRef}:{}});return {...p,invokeExecutor:x.invokeExecutor,validateSchema(c){let l=d(c);return {ok:l.errors.length===0,errors:l.errors}},absoluteBlob:Ie()}}function cn(e,t={}){let r=t.chatsSubdir??"chats",o=t.kvSubdir??".kv",n=o?[o,"chat"]:["chat"],s=r&&!at(e,r)?C(e,r):e,u=se(C(e,...n));return a$2(p=>{let c=`${String(p).replace(/[^a-zA-Z0-9_-]/g,"_")}.jsonl`,l=C(s,c);return me(l)},u)}function gr(e){return a$2(t=>{let o=`${String(t).replace(/[^a-zA-Z0-9_-]/g,"_")}.jsonl`;return me(C(e,"journal",o))},se(C(e,"kv")))}function un(e,t={}){let r=t.filesSubdir??"files",o=r&&!at(e,r)?C(e,r):e;return a$3(U(o))}function dn(e){try{let t=JSON.parse(Buffer.from(e,"base64url").toString());return typeof t.br=="string"?t.br:null}catch{return null}}export{le as buildLocalBaseSpec,xe as createBoardWorkerQueueLane,Ut as createExecutionRefInvoker,U as createFsBlobStorage,cn as createFsBoardChatStorage,un as createFsBoardFileArtifactsStore,an as createFsBoardNonCorePlatformAdapter,pr as createFsBoardPlatformAdapter,gr as createFsChatStorageForRefRoot,je as createFsQueueStorage,ar as createHostedAsyncBoardNonCorePublic,sn as createNodeSpawnInvocationAdapter,Ae as createNonCoreExecutorDispatcher,we as createQueueStorageLane,dn as decodeBoardRefFromToken,de as drainQueueLaneToIdle,ke as evaluateArgsMassaging,Z as invokeExecutionRef,ve as invokeExecutionRefSync,zt as invokeRefSync,Dt as registerInProcessExecutionHandler,L as resolveWhatToRunValue,Xe as resolveYamlFlowCliPath,Ye as startQueueLaneRunner,Ot as startQueueLaneRunners,Kt as unregisterInProcessExecutionHandler};//# sourceMappingURL=board-live-cards-node.js.map
12
12
  //# sourceMappingURL=board-live-cards-node.js.map
@@ -1,7 +1,8 @@
1
- import { a as KindValueRef } from './storage-interface-D-iEiTJA.cjs';
2
- import { C as CommandInput, a as CommandResult, j as BoardStatusObject } from './board-live-cards-public-BT5HrgqZ.cjs';
1
+ import { a as KindValueRef } from './storage-interface-DogVPooM.cjs';
2
+ import { CommandInput, CommandResult, BoardSseOneShotPayload } from './board-live-cards-public.cjs';
3
+ import { k as BoardStatusObject, h as NotificationEmitter } from './board-live-cards-lib-DVh3t9NT.cjs';
3
4
  import { ExecutionRef } from './execution-refs.cjs';
4
- import { A as AsyncBoardPlatformAdapter } from './board-platform-adapter-async-BZIftm36.cjs';
5
+ import { A as AsyncBoardPlatformAdapter } from './board-platform-adapter-async-DjBwE0m9.cjs';
5
6
 
6
7
  interface AsyncBoardLiveCardsPublic {
7
8
  init(input: CommandInput): Promise<CommandResult>;
@@ -36,6 +37,7 @@ interface AsyncBoardLiveCardsPublic {
36
37
  getAllOutputsComputedValues(input: CommandInput): Promise<CommandResult<Record<string, unknown>>>;
37
38
  getOutputsFetchedSources(input: CommandInput): Promise<CommandResult<Record<string, string>>>;
38
39
  getAllOutputsFetchedSources(input: CommandInput): Promise<CommandResult<Record<string, Record<string, string>>>>;
40
+ buildSseOneShotPayload(input: CommandInput): Promise<CommandResult<BoardSseOneShotPayload>>;
39
41
  addCardFiles(input: CommandInput): Promise<CommandResult<{
40
42
  cardId: string;
41
43
  files_added: Array<{
@@ -44,7 +46,6 @@ interface AsyncBoardLiveCardsPublic {
44
46
  }>;
45
47
  notified: true;
46
48
  }>>;
47
- cardRefreshedNotify(input: CommandInput): Promise<CommandResult>;
48
49
  removeCard(input: CommandInput): Promise<CommandResult>;
49
50
  retrigger(input: CommandInput): Promise<CommandResult>;
50
51
  processAccumulatedEvents(input: CommandInput): Promise<CommandResult>;
@@ -59,6 +60,7 @@ interface AsyncBoardLiveCardsPublicOptions {
59
60
  scratchStoreRef?: string;
60
61
  taskExecutorRef?: ExecutionRef;
61
62
  chatHandlerFlow?: unknown;
63
+ emitNotification?: NotificationEmitter;
62
64
  }
63
65
  declare function createAsyncBoardLiveCardsPublic(baseRef: KindValueRef, adapter: AsyncBoardPlatformAdapter, options?: AsyncBoardLiveCardsPublicOptions): AsyncBoardLiveCardsPublic;
64
66
 
@@ -1,7 +1,8 @@
1
- import { a as KindValueRef } from './storage-interface-D-iEiTJA.js';
2
- import { C as CommandInput, a as CommandResult, j as BoardStatusObject } from './board-live-cards-public-DSRamFm8.js';
1
+ import { a as KindValueRef } from './storage-interface-DogVPooM.js';
2
+ import { CommandInput, CommandResult, BoardSseOneShotPayload } from './board-live-cards-public.js';
3
+ import { k as BoardStatusObject, h as NotificationEmitter } from './board-live-cards-lib-iU8xOwNp.js';
3
4
  import { ExecutionRef } from './execution-refs.js';
4
- import { A as AsyncBoardPlatformAdapter } from './board-platform-adapter-async-JP9V-U5E.js';
5
+ import { A as AsyncBoardPlatformAdapter } from './board-platform-adapter-async-ByBRFn1G.js';
5
6
 
6
7
  interface AsyncBoardLiveCardsPublic {
7
8
  init(input: CommandInput): Promise<CommandResult>;
@@ -36,6 +37,7 @@ interface AsyncBoardLiveCardsPublic {
36
37
  getAllOutputsComputedValues(input: CommandInput): Promise<CommandResult<Record<string, unknown>>>;
37
38
  getOutputsFetchedSources(input: CommandInput): Promise<CommandResult<Record<string, string>>>;
38
39
  getAllOutputsFetchedSources(input: CommandInput): Promise<CommandResult<Record<string, Record<string, string>>>>;
40
+ buildSseOneShotPayload(input: CommandInput): Promise<CommandResult<BoardSseOneShotPayload>>;
39
41
  addCardFiles(input: CommandInput): Promise<CommandResult<{
40
42
  cardId: string;
41
43
  files_added: Array<{
@@ -44,7 +46,6 @@ interface AsyncBoardLiveCardsPublic {
44
46
  }>;
45
47
  notified: true;
46
48
  }>>;
47
- cardRefreshedNotify(input: CommandInput): Promise<CommandResult>;
48
49
  removeCard(input: CommandInput): Promise<CommandResult>;
49
50
  retrigger(input: CommandInput): Promise<CommandResult>;
50
51
  processAccumulatedEvents(input: CommandInput): Promise<CommandResult>;
@@ -59,6 +60,7 @@ interface AsyncBoardLiveCardsPublicOptions {
59
60
  scratchStoreRef?: string;
60
61
  taskExecutorRef?: ExecutionRef;
61
62
  chatHandlerFlow?: unknown;
63
+ emitNotification?: NotificationEmitter;
62
64
  }
63
65
  declare function createAsyncBoardLiveCardsPublic(baseRef: KindValueRef, adapter: AsyncBoardPlatformAdapter, options?: AsyncBoardLiveCardsPublicOptions): AsyncBoardLiveCardsPublic;
64
66
 
@@ -1,2 +1,2 @@
1
- 'use strict';var chunkZENTBLLA_cjs=require('./chunk-ZENTBLLA.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,"BOARD_GRAPH_KEY",{enumerable:true,get:function(){return chunkZENTBLLA_cjs.n}});Object.defineProperty(exports,"EMPTY_CONFIG",{enumerable:true,get:function(){return chunkZENTBLLA_cjs.u}});Object.defineProperty(exports,"SNAPSHOT_SCHEMA_VERSION_V1",{enumerable:true,get:function(){return chunkZENTBLLA_cjs.m}});Object.defineProperty(exports,"createBoardLiveCardsNonCorePublic",{enumerable:true,get:function(){return chunkZENTBLLA_cjs.z}});Object.defineProperty(exports,"createBoardLiveCardsPublic",{enumerable:true,get:function(){return chunkZENTBLLA_cjs.y}});//# sourceMappingURL=board-live-cards-public.cjs.map
1
+ 'use strict';var chunkSJANU3PL_cjs=require('./chunk-SJANU3PL.cjs');require('./chunk-7JVHYHT2.cjs'),require('./chunk-VQCIOKJV.cjs'),require('./chunk-G4XXRHL2.cjs'),require('./chunk-LODXIALE.cjs'),require('./chunk-IXZG74EW.cjs'),require('./chunk-HWYMZK3N.cjs'),require('./chunk-UJ7ZTV4J.cjs'),require('./chunk-5XLFPPTY.cjs'),require('./chunk-2RIHC5TZ.cjs'),require('./chunk-GNFE24S7.cjs');Object.defineProperty(exports,"BOARD_GRAPH_KEY",{enumerable:true,get:function(){return chunkSJANU3PL_cjs.n}});Object.defineProperty(exports,"EMPTY_CONFIG",{enumerable:true,get:function(){return chunkSJANU3PL_cjs.u}});Object.defineProperty(exports,"SNAPSHOT_SCHEMA_VERSION_V1",{enumerable:true,get:function(){return chunkSJANU3PL_cjs.m}});Object.defineProperty(exports,"createBoardLiveCardsNonCorePublic",{enumerable:true,get:function(){return chunkSJANU3PL_cjs.z}});Object.defineProperty(exports,"createBoardLiveCardsPublic",{enumerable:true,get:function(){return chunkSJANU3PL_cjs.y}});//# sourceMappingURL=board-live-cards-public.cjs.map
2
2
  //# sourceMappingURL=board-live-cards-public.cjs.map