yaml-flow 8.7.1 → 8.8.5

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 (195) hide show
  1. package/browser/adapters/firebase-storage.js +2 -2
  2. package/browser/adapters/firestore-storage.js +2 -2
  3. package/browser/adapters/localstorage-storage.js +3 -3
  4. package/browser/asset-integrity.json +9 -13
  5. package/browser/live-cards.js +6 -6
  6. package/browser/server-runtime-controlface.js +5 -5
  7. package/examples/ARCHITECTURE.md +0 -27
  8. package/examples/board/server/board-server.js +150 -100
  9. package/examples/board/server/board-worker/source_def_flows.json +0 -8
  10. package/examples/board/server/board-worker/task-executor.js +1 -3
  11. package/examples/board/server/chat-flow/flow-steps.json +5 -5
  12. package/examples/board/test/server-http-test.js +726 -87
  13. package/examples/board-firestore/server/worker.js +8 -0
  14. package/examples/portfolio-tracker/portfolio-tracker.js +11 -1
  15. package/examples/portfolio-tracker/test/portfolio-t4.js +12 -2
  16. package/lib/{artifacts-store-lib-D9nMkVcE.d.cts → artifacts-store-lib-C6qBpMfU.d.cts} +1 -1
  17. package/lib/{artifacts-store-lib-DSSMqVL2.d.ts → artifacts-store-lib-D4qf7Q-7.d.ts} +1 -1
  18. package/lib/artifacts-store-public.d.cts +3 -3
  19. package/lib/artifacts-store-public.d.ts +3 -3
  20. package/lib/board-live-cards-mcp.cjs +1 -1
  21. package/lib/board-live-cards-mcp.d.cts +6 -7
  22. package/lib/board-live-cards-mcp.d.ts +6 -7
  23. package/lib/board-live-cards-mcp.js +1 -1
  24. package/lib/board-live-cards-node.cjs +8 -8
  25. package/lib/board-live-cards-node.d.cts +70 -15
  26. package/lib/board-live-cards-node.d.ts +70 -15
  27. package/lib/board-live-cards-node.js +8 -8
  28. package/lib/{board-live-cards-public-LlVUQPL2.d.cts → board-live-cards-public-BT5HrgqZ.d.cts} +82 -59
  29. package/lib/{board-live-cards-public-JNRKfBZy.d.ts → board-live-cards-public-DSRamFm8.d.ts} +82 -59
  30. package/lib/{board-live-cards-public-async-Di9QB141.d.cts → board-live-cards-public-async-CYjr4mgX.d.cts} +18 -8
  31. package/lib/{board-live-cards-public-async-fwd1QI82.d.ts → board-live-cards-public-async-DlyC3PgC.d.ts} +18 -8
  32. package/lib/board-live-cards-public.cjs +1 -1
  33. package/lib/board-live-cards-public.d.cts +2 -2
  34. package/lib/board-live-cards-public.d.ts +2 -2
  35. package/lib/board-live-cards-public.js +1 -1
  36. package/lib/board-live-cards-server-runtime.cjs +1 -1
  37. package/lib/board-live-cards-server-runtime.d.cts +6 -8
  38. package/lib/board-live-cards-server-runtime.d.ts +6 -8
  39. package/lib/board-live-cards-server-runtime.js +1 -1
  40. package/lib/board-livegraph-runtime/index.cjs +1 -1
  41. package/lib/board-livegraph-runtime/index.d.cts +1 -0
  42. package/lib/board-livegraph-runtime/index.d.ts +1 -0
  43. package/lib/board-livegraph-runtime/index.js +1 -1
  44. package/lib/{board-platform-adapter-async-BfHmHdx2.d.cts → board-platform-adapter-async-BZIftm36.d.cts} +18 -14
  45. package/lib/{board-platform-adapter-async-DYahVzIK.d.ts → board-platform-adapter-async-JP9V-U5E.d.ts} +18 -14
  46. package/lib/board-worker-adapter.cjs +1 -24
  47. package/lib/board-worker-adapter.d.cts +68 -3
  48. package/lib/board-worker-adapter.d.ts +68 -3
  49. package/lib/board-worker-adapter.js +1 -24
  50. package/lib/card-store-public.d.cts +2 -2
  51. package/lib/card-store-public.d.ts +2 -2
  52. package/lib/chat-store-public.cjs +1 -1
  53. package/lib/chat-store-public.d.cts +20 -20
  54. package/lib/chat-store-public.d.ts +20 -20
  55. package/lib/chat-store-public.js +1 -1
  56. package/lib/chunk-35N7ONTH.js +2 -0
  57. package/lib/chunk-36QUKFL7.cjs +3 -0
  58. package/lib/chunk-37HDEW26.cjs +2 -0
  59. package/lib/{chunk-PMUSJQSR.cjs → chunk-3CZCGNY4.cjs} +2 -2
  60. package/lib/{chunk-BQS3EIEK.js → chunk-44L64VQ2.js} +3 -3
  61. package/lib/{chunk-YGKDQLYP.js → chunk-4HIEOBJC.js} +2 -2
  62. package/lib/chunk-6OPXQPSC.js +2 -0
  63. package/lib/chunk-7BTZCOT5.js +2 -0
  64. package/lib/{chunk-U2N6MCD5.cjs → chunk-7JVHYHT2.cjs} +2 -2
  65. package/lib/chunk-7QQFDYBM.js +3 -0
  66. package/lib/chunk-7QZ267XP.cjs +2 -0
  67. package/lib/chunk-ABAVFLDP.js +7 -0
  68. package/lib/{chunk-XQRNDX4Q.js → chunk-ANKA7HEJ.js} +2 -2
  69. package/lib/{chunk-KAWQPLIE.cjs → chunk-BQUQTOPB.cjs} +2 -2
  70. package/lib/chunk-ETW3BXHD.cjs +2 -0
  71. package/lib/{chunk-SGV7PU4H.js → chunk-FOFGEABN.js} +2 -2
  72. package/lib/chunk-GPCMBPLK.cjs +2 -0
  73. package/lib/chunk-H22NK6KH.cjs +7 -0
  74. package/lib/chunk-H4TYOSMD.cjs +45 -0
  75. package/lib/chunk-HFW7E2Z7.cjs +4 -0
  76. package/lib/chunk-J4MHQ7JF.js +45 -0
  77. package/lib/chunk-MCPADH33.cjs +2 -0
  78. package/lib/chunk-NBJTYAYN.cjs +2 -0
  79. package/lib/chunk-NNSBBO5R.js +2 -0
  80. package/lib/chunk-NU5NO5NM.js +2 -0
  81. package/lib/chunk-O5UYCGIN.js +2 -0
  82. package/lib/chunk-O6II7S4M.js +3 -0
  83. package/lib/chunk-PN5D32NP.cjs +3 -0
  84. package/lib/chunk-Q3OTUDIE.js +2 -0
  85. package/lib/chunk-R44X3RQB.cjs +2 -0
  86. package/lib/chunk-RKKSVOP2.js +2 -0
  87. package/lib/chunk-UB54HZA4.cjs +2 -0
  88. package/lib/{chunk-CIAJNUR4.js → chunk-VGDLSS2H.js} +2 -2
  89. package/lib/{chunk-SFVO2LB2.cjs → chunk-VQCIOKJV.cjs} +3 -3
  90. package/lib/chunk-VS3BXEYK.js +4 -0
  91. package/lib/{chunk-S6DRP2HX.cjs → chunk-XQAHHUZO.cjs} +2 -2
  92. package/lib/chunk-Y4WK7HE4.js +2 -0
  93. package/lib/chunk-ZENTBLLA.cjs +3 -0
  94. package/lib/chunk-ZK3E7L4Y.cjs +2 -0
  95. package/lib/chunk-ZWVT24YW.js +3 -0
  96. package/lib/cloud-storage.cjs +1 -1
  97. package/lib/cloud-storage.d.cts +6 -6
  98. package/lib/cloud-storage.d.ts +6 -6
  99. package/lib/cloud-storage.js +1 -1
  100. package/lib/execution-refs.cjs +1 -1
  101. package/lib/execution-refs.js +1 -1
  102. package/lib/firebase-storage/index.cjs +2 -2
  103. package/lib/firebase-storage/index.d.cts +2 -2
  104. package/lib/firebase-storage/index.d.ts +2 -2
  105. package/lib/firebase-storage/index.js +2 -2
  106. package/lib/firestore-storage/index.cjs +2 -2
  107. package/lib/firestore-storage/index.d.cts +12 -21
  108. package/lib/firestore-storage/index.d.ts +12 -21
  109. package/lib/firestore-storage/index.js +2 -2
  110. package/lib/index.cjs +2 -2
  111. package/lib/index.d.cts +1 -1
  112. package/lib/index.d.ts +1 -1
  113. package/lib/index.js +1 -1
  114. package/lib/localstorage-storage/index.cjs +1 -1
  115. package/lib/localstorage-storage/index.d.cts +10 -6
  116. package/lib/localstorage-storage/index.d.ts +10 -6
  117. package/lib/localstorage-storage/index.js +1 -1
  118. package/lib/{mcp-tool-registries-W3TRj6O5.d.cts → mcp-tool-registries-CRtea2x4.d.cts} +3 -0
  119. package/lib/{mcp-tool-registries-BBObLYga.d.ts → mcp-tool-registries-D3rWSppt.d.ts} +3 -0
  120. package/lib/server-jobs-queue-runner/index.cjs +1 -1
  121. package/lib/server-jobs-queue-runner/index.d.cts +12 -9
  122. package/lib/server-jobs-queue-runner/index.d.ts +12 -9
  123. package/lib/server-jobs-queue-runner/index.js +1 -1
  124. package/lib/server-runtime/index.cjs +1 -1
  125. package/lib/server-runtime/index.d.cts +7 -9
  126. package/lib/server-runtime/index.d.ts +7 -9
  127. package/lib/server-runtime/index.js +1 -1
  128. package/lib/server-runtime-agentface/index.d.cts +7 -9
  129. package/lib/server-runtime-agentface/index.d.ts +7 -9
  130. package/lib/server-runtime-controlface/index.cjs +1 -1
  131. package/lib/server-runtime-controlface/index.d.cts +8 -9
  132. package/lib/server-runtime-controlface/index.d.ts +8 -9
  133. package/lib/server-runtime-controlface/index.js +1 -1
  134. package/lib/server-runtime-core/index.cjs +1 -1
  135. package/lib/server-runtime-core/index.d.cts +59 -21
  136. package/lib/server-runtime-core/index.d.ts +59 -21
  137. package/lib/server-runtime-core/index.js +1 -1
  138. package/lib/server-runtime-watchers/index.cjs +1 -1
  139. package/lib/server-runtime-watchers/index.d.cts +9 -65
  140. package/lib/server-runtime-watchers/index.d.ts +9 -65
  141. package/lib/server-runtime-watchers/index.js +1 -1
  142. package/lib/server-runtime-webhooks/index.d.cts +7 -9
  143. package/lib/server-runtime-webhooks/index.d.ts +7 -9
  144. package/lib/sse-hub-BDjWI7JR.d.cts +63 -0
  145. package/lib/sse-hub-DM8bw-dO.d.ts +63 -0
  146. package/lib/step-machine-public/index.cjs +1 -1
  147. package/lib/step-machine-public/index.d.cts +1 -1
  148. package/lib/step-machine-public/index.d.ts +1 -1
  149. package/lib/step-machine-public/index.js +1 -1
  150. package/lib/{storage-async-interface-BRR4eBjx.d.cts → storage-async-interface-CG0bMqvE.d.ts} +20 -1
  151. package/lib/{storage-async-interface-DhlOVPSp.d.ts → storage-async-interface-CyO-zwVQ.d.cts} +20 -1
  152. package/lib/{storage-interface-BFiD3kyB.d.ts → storage-interface-D-iEiTJA.d.cts} +45 -1
  153. package/lib/{storage-interface-BFiD3kyB.d.cts → storage-interface-D-iEiTJA.d.ts} +45 -1
  154. package/lib/stores/index.d.cts +1 -1
  155. package/lib/stores/index.d.ts +1 -1
  156. package/lib/stores/kv.d.cts +1 -1
  157. package/lib/stores/kv.d.ts +1 -1
  158. package/lib/{types-SO5OZm4s.d.ts → types-BsfXZyI3.d.ts} +64 -29
  159. package/lib/{types-Ba8H5_Wo.d.cts → types-CPnYv7RC.d.cts} +64 -29
  160. package/package.json +4 -5
  161. package/browser/board-livecards-client.js +0 -2
  162. package/examples/board/demo-shell-with-server.html +0 -272
  163. package/examples/board/doc.html +0 -465
  164. package/examples/board/server-config.json +0 -24
  165. package/examples/board/test/sse-worker.js +0 -49
  166. package/lib/chat-storage-lib-B9Q34Dyv.d.cts +0 -54
  167. package/lib/chat-storage-lib-DB9iSai2.d.ts +0 -54
  168. package/lib/chunk-5XHOHTLZ.cjs +0 -2
  169. package/lib/chunk-6APH25VI.js +0 -2
  170. package/lib/chunk-76C7N4YT.js +0 -3
  171. package/lib/chunk-76ON3V7R.js +0 -2
  172. package/lib/chunk-7ICPAABP.cjs +0 -7
  173. package/lib/chunk-ASR44K7H.cjs +0 -3
  174. package/lib/chunk-CPAXTVBQ.cjs +0 -2
  175. package/lib/chunk-EGRHWZRV.js +0 -2
  176. package/lib/chunk-EZENHAVZ.cjs +0 -2
  177. package/lib/chunk-GL2OHR2E.cjs +0 -2
  178. package/lib/chunk-GYQXDNNI.cjs +0 -2
  179. package/lib/chunk-HEEDJEKM.js +0 -2
  180. package/lib/chunk-IPLSRN6P.cjs +0 -4
  181. package/lib/chunk-J6EGN6S4.cjs +0 -3
  182. package/lib/chunk-JH37NJGP.js +0 -3
  183. package/lib/chunk-JJL5VOQZ.cjs +0 -3
  184. package/lib/chunk-NJJ7WEDT.cjs +0 -2
  185. package/lib/chunk-NKIQRCOM.cjs +0 -2
  186. package/lib/chunk-PBCDDO4V.cjs +0 -2
  187. package/lib/chunk-PBOQ4HYB.cjs +0 -2
  188. package/lib/chunk-PRKRXAVN.js +0 -3
  189. package/lib/chunk-QJVR3FWQ.js +0 -2
  190. package/lib/chunk-S44QZUDX.js +0 -2
  191. package/lib/chunk-TSN3RTXT.js +0 -4
  192. package/lib/chunk-VXJHBWK3.js +0 -2
  193. package/lib/chunk-WHDEBJLT.js +0 -7
  194. package/lib/chunk-YGALANRO.js +0 -2
  195. package/lib/chunk-ZCNN6XPV.js +0 -2
@@ -1,6 +1,5 @@
1
- import { C as CommandInput, a as CommandResult } from './board-live-cards-public-JNRKfBZy.js';
2
- import { a as ChatRecord, b as ChatReadAfterResult, c as ChatConfig, C as ChatStorage } from './chat-storage-lib-DB9iSai2.js';
3
- import './storage-interface-BFiD3kyB.js';
1
+ import { C as CommandInput, a as CommandResult, g as ChatRecord, h as ChatReadAfterResult, i as ChatConfig, f as ChatStorage } from './board-live-cards-public-DSRamFm8.js';
2
+ import './storage-interface-D-iEiTJA.js';
4
3
  import './execution-refs.js';
5
4
  import './types-BBhqYGhE.js';
6
5
 
@@ -29,6 +28,7 @@ import './types-BBhqYGhE.js';
29
28
  * const result = store.setConfig({ params: { cardId: 'c1' }, body: { systemPrompt: '...' } });
30
29
  */
31
30
 
31
+ type Awaitable<T> = T | Promise<T>;
32
32
  type ChatStoreCommandName = 'append' | 'read-all' | 'read-after' | 'clear' | 'set-processing' | 'is-processing' | 'get-config' | 'set-config';
33
33
  type ChatStoreCommandEnvelope = {
34
34
  command: ChatStoreCommandName;
@@ -65,71 +65,71 @@ interface ChatStorePublic {
65
65
  * body.text: string
66
66
  * body.files?: unknown[]
67
67
  */
68
- append(input: CommandInput): CommandResult<{
68
+ append(input: CommandInput): Awaitable<CommandResult<{
69
69
  id: string;
70
- }>;
70
+ }>>;
71
71
  /**
72
72
  * Read all messages for a card in insertion order.
73
73
  * params.cardId: string
74
74
  * body.lastUserTurns?: positive integer
75
75
  */
76
- readAll(input: CommandInput): CommandResult<{
76
+ readAll(input: CommandInput): Awaitable<CommandResult<{
77
77
  records: ChatRecord[];
78
- }>;
78
+ }>>;
79
79
  /**
80
80
  * Read messages appended after a cursor.
81
81
  * params.cardId: string
82
82
  * params.cursor?: string | null (omit or null to read from the beginning)
83
83
  */
84
- readAfter(input: CommandInput): CommandResult<ChatReadAfterResult>;
84
+ readAfter(input: CommandInput): Awaitable<CommandResult<ChatReadAfterResult>>;
85
85
  /**
86
86
  * Remove all messages for a card.
87
87
  * params.cardId: string
88
88
  */
89
- clear(input: CommandInput): CommandResult<{
89
+ clear(input: CommandInput): Awaitable<CommandResult<{
90
90
  ok: true;
91
- }>;
91
+ }>>;
92
92
  /**
93
93
  * Set or clear the processing flag for a card.
94
94
  * params.cardId: string
95
95
  * body.active: boolean
96
96
  */
97
- setProcessing(input: CommandInput): CommandResult<{
97
+ setProcessing(input: CommandInput): Awaitable<CommandResult<{
98
98
  ok: true;
99
- }>;
99
+ }>>;
100
100
  /**
101
101
  * Check whether a card is currently processing.
102
102
  * params.cardId: string
103
103
  */
104
- isProcessing(input: CommandInput): CommandResult<{
104
+ isProcessing(input: CommandInput): Awaitable<CommandResult<{
105
105
  active: boolean;
106
- }>;
106
+ }>>;
107
107
  /**
108
108
  * Read the chat config for a card.
109
109
  * params.cardId: string
110
110
  */
111
- getConfig(input: CommandInput): CommandResult<{
111
+ getConfig(input: CommandInput): Awaitable<CommandResult<{
112
112
  config: ChatConfig;
113
- }>;
113
+ }>>;
114
114
  /**
115
115
  * Patch (merge) the chat config for a card.
116
116
  * params.cardId: string
117
117
  * body: Partial<ChatConfig> e.g. { systemPrompt: '...' }
118
118
  */
119
- setConfig(input: CommandInput): CommandResult<{
119
+ setConfig(input: CommandInput): Awaitable<CommandResult<{
120
120
  ok: true;
121
- }>;
121
+ }>>;
122
122
  /**
123
123
  * Run a single command envelope against this store instance.
124
124
  * The store is already bound to a backing adapter, so boardDir is not part
125
125
  * of the public contract here.
126
126
  */
127
- run(envelope: ChatStoreCommandEnvelope, label?: string): CommandResult<unknown>;
127
+ run(envelope: ChatStoreCommandEnvelope, label?: string): Awaitable<CommandResult<unknown>>;
128
128
  /**
129
129
  * Run a sequence of command envelopes with optional top-level cardId default.
130
130
  * Stops on first non-success result and returns that failure/error.
131
131
  */
132
- runBatch(envelope: ChatStoreCommandBatchEnvelope): CommandResult<ChatStoreBatchResult>;
132
+ runBatch(envelope: ChatStoreCommandBatchEnvelope): Awaitable<CommandResult<ChatStoreBatchResult>>;
133
133
  }
134
134
  declare function createChatStorePublic(store: ChatStorage): ChatStorePublic;
135
135
 
@@ -1,2 +1,2 @@
1
- export{a as createChatStorePublic}from'./chunk-76ON3V7R.js';import'./chunk-FW4363Y4.js';//# sourceMappingURL=chat-store-public.js.map
1
+ export{a as createChatStorePublic}from'./chunk-Q3OTUDIE.js';import'./chunk-FW4363Y4.js';//# sourceMappingURL=chat-store-public.js.map
2
2
  //# sourceMappingURL=chat-store-public.js.map
@@ -0,0 +1,2 @@
1
+ import {a as a$1}from'./chunk-JMDHDY6M.js';function v(s,i){if(s?.status==="success")return Object.prototype.hasOwnProperty.call(s,"data")?s.data:void 0;throw s?.status==="fail"||s?.status==="error"?new Error(s.error||`${i} failed`):new Error(`${i} returned an unexpected response`)}function H(s,i){if(s?.status==="success"&&Object.prototype.hasOwnProperty.call(s,"data"))return s.data;throw s?.status==="success"?new Error(`${i} returned success without data`):s?.status==="fail"||s?.status==="error"?new Error(s.error||`${i} failed`):new Error(`${i} returned an unexpected response`)}function a(s){return s&&typeof s=="object"&&!Array.isArray(s)?s:{}}function b(s){return Array.isArray(s)?s:[]}function z(s,i){if(typeof i!="string"||i.length===0)return;let c=s,u=i;u.startsWith("fetched_sources.")&&(c=a(s).fetched_sources,u=u.slice(16));for(let f of u.split(".")){if(c==null||typeof c!="object")return;c=c[f];}return c}function V(s,i){let c=a(s.view),u=b(c.elements);return {layout:c.layout,features:c.features,elements:u.map((f,_)=>{let I=a(f),k=a(I.data),R=typeof I.visible=="string"?!!z(i,I.visible):true,M=typeof k.bind=="string"?k.bind:void 0,P=typeof k.maxRows=="number"?k.maxRows:void 0,B=M?z(i,M):void 0,F={id:typeof I.id=="string"&&I.id?I.id:`element-${_}`,kind:I.kind,label:I.label,visible:R};return B!==void 0&&(F.resolved=Array.isArray(B)&&typeof P=="number"?B.slice(0,P):B),F})}}function G(s,i){let c=typeof s.id=="string"&&s.id?s.id:"card",u=b(s.provides),f=u.length>0?u:[{bindTo:c,ref:"card_data"}],_={};for(let I of f){let k=a(I),R=typeof k.bindTo=="string"?k.bindTo:"",M=typeof k.ref=="string"?k.ref:"";if(!R||!M)continue;let P=z(i,M);P!==void 0&&(_[R]=P);}return _}function he(s){if(typeof s!="string"||!s.trim())return null;let i=/^(file uploaded|AI generated|AI geneterated):\s*.*?#(\d+)\s*$/i.exec(s.trim());if(!i)return null;let c=Number.parseInt(i[2],10);return !Number.isInteger(c)||c<0?null:c}function ke(s){return {"card-content":s}}function E(s){let i={...s};return delete i.__private,i}function D(s,i){return Object.prototype.hasOwnProperty.call(s,i)}function Re(s){return typeof structuredClone=="function"?structuredClone(s):JSON.parse(JSON.stringify(s))}function ve(s,i){let c=Re(s);if(!i||Object.keys(i).length===0)return c;function u(f,_,I){let k=String(_||"").split(".").filter(Boolean);if(!k.length)return;let R=f;for(let M=0;M<k.length-1;M+=1){let P=k[M];(!R[P]||typeof R[P]!="object")&&(R[P]={}),R=R[P];}R[k[k.length-1]]=I;}if(i.fieldValues!==void 0&&i.fieldValues!==null){let f=null,_=a(c.view),I=b(_.elements);for(let k of I){let R=a(a(k).data);if(typeof R.writeTo=="string"&&R.writeTo){f=R.writeTo;break}}return f?u(c,f,i.fieldValues):typeof i.fieldValues=="object"&&!Array.isArray(i.fieldValues)&&(c.card_data={...a(c.card_data),...i.fieldValues}),c}if(Array.isArray(i._stagedFiles)&&i._stagedFiles.length>0)return c;for(let[f,_]of Object.entries(i))f!=="_stagedFiles"&&(_!==null&&typeof _=="object"&&!Array.isArray(_)&&c[f]!==null&&typeof c[f]=="object"&&!Array.isArray(c[f])?c[f]={...c[f],..._}:c[f]=_);return c}function Q(s){return a(s.__private).visible_controlplane_only===true}async function T(s,i){let c=await U(s.get({params:{id:i}}),"cardStore.get"),u=Array.isArray(c?.cards)?c.cards:[];if(u.length===0)throw new Error(`Card "${i}" not found`);return u[0]}function Ae(s){let{board:i,nonCore:c,cardStore:u,chatStore:f,processAccumulated:_,sourceFetchDone:I,sourceFetchFailed:k,uploadCardFile:R,buildFileDownloadUrl:M,readFetchedSourceJsonByRef:P}=s;function B(e,r){if(typeof e=="function")return e;throw new Error(`${r} is not configured for this MCP facade`)}async function F(){let e=await U(u.get({}),"cardStore.get");return Array.isArray(e.cards)?e.cards.map(r=>a(r)):[]}function X(e){if(Array.isArray(e.bytes))return new Uint8Array(e.bytes.map(r=>Math.max(0,Math.min(255,Number(r)||0))));if(typeof e.text=="string")return new TextEncoder().encode(e.text);if(typeof e.base64=="string"){let r=String(e.base64).replace(/-/g,"+").replace(/_/g,"/"),t=r+"=".repeat((4-r.length%4)%4),n=atob(t);return Uint8Array.from(n,o=>o.charCodeAt(0))}throw new Error("file entry requires bytes, text, or base64")}async function Y(){let e=a(await U(c.describeTaskExecutorCapabilities({}),"describeTaskExecutorCapabilities"));return {version:e.version,commonSourceFields:a(e.commonSourceDefFields),sourceKinds:a(e.sourceKinds)}}async function Z(){let e=a(await U(i.status({}),"status")),r=a(e.summary),t=b(e.cards);return {meta:a(e.meta),summary:{card_count:typeof r.card_count=="number"?r.card_count:0,completed:typeof r.completed=="number"?r.completed:0,eligible:typeof r.eligible=="number"?r.eligible:0,pending:typeof r.pending=="number"?r.pending:0,blocked:typeof r.blocked=="number"?r.blocked:0,in_progress:typeof r.in_progress=="number"?r.in_progress:0,failed:typeof r.failed=="number"?r.failed:0,unresolved:typeof r.unresolved=="number"?r.unresolved:0},cards:t.map(n=>{let o=a(n);return {"card-id":typeof o.name=="string"?o.name:null,status:o.status??null,error:o.error??null,requires:b(o.requires),requires_satisfied:b(o.requires_satisfied),requires_missing:b(o.requires_missing),provides_declared:b(o.provides_declared),provides_runtime:b(o.provides_runtime)}})}}async function ee(e){let r=String(e.cardId||"").trim();if(!r)throw new Error("inspectCardDefinitionAndRuntime requires cardId");let t=a(await U(i.status({}),"status")),o=b(t.cards).map(a).find(p=>p.name===r);if(!o)throw new Error(`card "${r}" not found in board status`);let d=a(await T(u,r));if(Q(d))throw Object.assign(new Error(`card "${r}" not found`),{statusCode:404});let m=E(d),g=b(o.requires_satisfied).filter(p=>typeof p=="string"&&!!p),w=b(o.provides_runtime).filter(p=>typeof p=="string"&&!!p),h=Object.fromEntries(await Promise.all(g.map(async p=>[p,await U(i.getOutputsDataObject({params:{key:p}}),`getOutputsDataObject(${p})`)]))),A=Object.fromEntries(await Promise.all(w.map(async p=>[p,await U(i.getOutputsDataObject({params:{key:p}}),`getOutputsDataObject(${p})`)]))),C=a(await U(i.getOutputsComputedValues({params:{key:r}}),"getOutputsComputedValues")),l=await U(i.getOutputsFetchedSources({params:{key:r}}),"getOutputsFetchedSources"),S=b(d.source_defs).map(a),y={};for(let p of S)typeof p.bindTo=="string"&&typeof p.outputFile=="string"&&(y[p.outputFile]=p.bindTo);let x={};for(let[p,O]of Object.entries(l)){let q=y[p]??p;if(!P||typeof O!="string"){x[q]=null;continue}try{x[q]=P({cardId:r,ref:O});}catch{x[q]=null;}}let L={card_data:a(d.card_data),requires:h,fetched_sources:x,computed_values:C};return {cardId:r,card_status_in_board:o,card_definition_and_static_data:m,refs_for_fetched_source_files:l,runtime_data:{requires:h,provides:A,computed_values:C,rendered_view:V(d,L)}}}async function re(e){let r=String(e.cardId||"").trim();if(!r)throw new Error("inspectChatMessagesOnCards requires cardId");let t=typeof e.turnId=="string"?e.turnId:"",n=e.allTurns===true,o=typeof e.tailTurnsBeforeId=="string"?e.tailTurnsBeforeId:"",d=n?void 0:e.lastUserTurns??(t?void 0:1),m=e.tail,g={...d===void 0?{}:{tailTurns:d},...t?{turnId:t}:{},...n?{allTurns:true}:{},...o?{tailTurnsBeforeId:o}:{}},w=Object.keys(g).length>0?{params:{cardId:r},body:g}:{params:{cardId:r}},h=v(await f.readAll(w),"chatStore.readAll"),A=a(await T(u,r)),C=b(a(A.card_data).files).map((y,x)=>({idx:x,stored_name:a(y).stored_name})).filter(y=>typeof y.stored_name=="string"&&y.stored_name.length>0),S=(Array.isArray(h.records)?h.records:[]).map(y=>{let L=a(y.payload),p={...y},O=typeof y?.role=="string"?y.role:typeof L.role=="string"?String(L.role):"",q=typeof y?.text=="string"?y.text:typeof L.text=="string"?String(L.text):"";if(O==="system"){let N=he(q);if(N!==null&&C.some(j=>j.idx===N)){let j=`Retrieve using inspect-file-contents --card-id ${r} --file-idx ${N}`;p.retrieval_hint=j,Object.keys(L).length>0&&typeof y.role!="string"&&(p.payload={...L,retrieval_hint:j});}}return p});return {cardId:r,messages:typeof m=="number"&&m>=0?S.slice(-m):S}}async function te(e){let r=String(e.cardId||"").trim(),t=Number(e.fileIdx);if(!r)throw new Error("inspectFileContents requires cardId");if(!Number.isInteger(t)||t<0)throw new Error("inspectFileContents requires fileIdx to be a non-negative integer");let n=a(await T(u,r)),o=b(a(n.card_data).files).map(a);if(t>=o.length)throw new Error(`attachment index ${t} is out of range for card "${r}"`);let d=o[t],m=typeof d.stored_name=="string"?d.stored_name:null;return {cardId:r,fileIdx:t,downloadUrl:M({cardId:r,fileIdx:t,storedName:m}),...typeof d.name=="string"?{name:d.name}:{},...typeof d.stored_name=="string"?{stored_name:d.stored_name}:{},...typeof d.mime_type=="string"?{mime_type:d.mime_type}:{},...typeof d.size=="number"?{size:d.size}:{},...typeof d.uploaded_at=="string"?{uploaded_at:d.uploaded_at}:{}}}async function $(e){return await c.validateCardPreflight({body:ke(e.candidateCardContent)})}function ne(e){if(!e.mockRequires||typeof e.mockRequires!="object"||Array.isArray(e.mockRequires))throw new Error("preflightMaterializeCandidateCard requires mockRequires");if(!e.mockFetchedSources||typeof e.mockFetchedSources!="object"||Array.isArray(e.mockFetchedSources))throw new Error("preflightMaterializeCandidateCard requires mockFetchedSources");let r=c.evalCardCompute({body:{"card-content":e.candidateCardContent,"mock-requires":e.mockRequires,"mock-fetched-sources":e.mockFetchedSources}});if(r.status!=="success")return r;let t=a(H(r,"evalCardCompute")),n=a(e.candidateCardContent),o={card_data:a(n.card_data),requires:a(e.mockRequires),fetched_sources:a(e.mockFetchedSources),computed_values:a(t.computed_values)};return {status:"success",data:{cardId:typeof t.cardId=="string"?t.cardId:typeof n.id=="string"?n.id:"(unknown)",ok:t.ok===true,computed_values:a(t.computed_values),errors:b(t.errors).map(d=>{let m=a(d);return {bindTo:typeof m.bindTo=="string"?m.bindTo:"",error:typeof m.error=="string"?m.error:""}}),provides_outputs:G(n,o),rendered_view:V(n,o)}}}async function ae(e){return await c.probeSourcePreflight({params:{sourceIdx:e.sourceIdx},body:{"card-content":e.candidateCardContent,"mock-projections":e.mockProjections}})}async function oe(e){return await c.runSourcePreflight({params:{sourceIdx:e.sourceIdx},body:{"card-content":e.candidateCardContent,"mock-projections":e.mockProjections}})}async function se(e){let r=String(e.cardId||"").trim();if(!r)throw new Error("preflightRunSingleSourceInLiveCard requires cardId");if(!e.mockRequires||typeof e.mockRequires!="object"||Array.isArray(e.mockRequires))throw new Error("preflightRunSingleSourceInLiveCard requires mockRequires");let t=a(await T(u,r)),n=b(t.source_defs).filter(d=>!!d&&typeof d=="object"&&!Array.isArray(d)),o={};if(e.sourceIdx>=0&&e.sourceIdx<n.length){let d=n[e.sourceIdx],m=a$1.enrichSourcesSync([d],{card_data:a(t.card_data),requires:e.mockRequires});Array.isArray(m)&&m.length>0&&(o=a(m[0]._projections));}return await c.runSourcePreflight({params:{sourceIdx:e.sourceIdx},body:{"card-content":t,"mock-requires":e.mockRequires,"mock-projections":o}})}async function ie(e){let r=a(await U(c.simulateCardCycle({body:{"card-content":e.candidateCardContent,"mock-requires":e.mockRequires}}),"simulateCardCycle")),t=a(e.candidateCardContent),n=a(r.validation),o=b(r.source_probes),d=b(r.projection_errors),m=a(r.fetched_sources),g=b(r.compute_errors),w=a(r.computed_values),h={card_data:a(t.card_data),requires:e.mockRequires,fetched_sources:m,computed_values:w},A=[];for(let C of b(n.issues))typeof C=="string"&&C&&A.push(C);for(let C of o){let l=a(C),S=typeof l.bindTo=="string"?l.bindTo:"source",y=typeof l.error=="string"?l.error:"";y&&A.push(`${S}: ${y}`);}for(let C of d){let l=a(C),S=typeof l.bindTo=="string"?l.bindTo:"source",y=typeof l.key=="string"?l.key:"projection",x=typeof l.error=="string"?l.error:"projection failed";A.push(`${S}.${y}: ${x}`);}for(let C of g){let l=a(C),S=typeof l.bindTo=="string"?l.bindTo:"compute",y=typeof l.error=="string"?l.error:"compute failed";A.push(`${S}: ${y}`);}return {status:"success",data:{cardId:typeof r.cardId=="string"?r.cardId:"(unknown)",ok:r.ok===true,issues:A,provides_outputs:G(t,h),rendered_view:V(t,h)}}}async function K(e){let r=String(e.cardId||"").trim();if(!r)throw new Error("manageReadCard requires cardId");let t=await U(u.get({params:{id:r}}),"cardStore.get"),n=Array.isArray(t.cards)?t.cards.map(a):[];if(n.some(Q))throw Object.assign(new Error(`Card "${r}" not found`),{statusCode:404});return n.map(o=>E(o))}async function W(e){let r=await Promise.all(b(e.files).map(async t=>{let n=a(t),o=String(n.file_name??n.fileName??n.name??"").trim(),d=String(n.content_type??n.contentType??"application/octet-stream");if(!o)throw new Error("file entry requires file_name");return await R({cardId:e.cardId,fileName:o,contentType:d,bytes:X(n),suppressChatRecordWrite:true})}));for(let[t,n]of r.entries()){let o=a(n.file),d=typeof n.file_idx=="number"&&Number.isInteger(n.file_idx)&&n.file_idx>=0?n.file_idx:t,m=e.role==="assistant"?`AI generated: ${String(o.name||"")} as ${String(o.stored_name||"")} #${d}`:`file uploaded: ${String(o.name||"")} as ${String(o.stored_name||"")} #${d}`;v(await f.append({params:{cardId:e.cardId},body:{role:"system",text:m,files:[],turn:e.turn}}),"chatStore.append(system attachment message)");}return r.map(t=>t.file)}async function de(e){let r=String(e.cardId||"").trim(),t=String(e.role||"user").trim()||"user",n=typeof e.turn=="string"?e.turn:"";if(!r)throw new Error("manageAddChatAttachment requires cardId");let o=await W({cardId:r,role:t,turn:n,files:e.files});return {status:"success",data:{cardId:r,turn:n,files:o}}}async function ce(e){let r=String(e.cardId||"").trim(),t=String(e.role||"").trim(),n=typeof e.text=="string"?e.text:"",o=typeof e.turn=="string"?e.turn:"";if(!r)throw new Error("manageAddChatEntryAndAnyAttachments requires cardId");if(!t)throw new Error("manageAddChatEntryAndAnyAttachments requires role");if(t==="assistant"&&o){let g=v(await f.readAll({params:{cardId:r},body:{turnId:o}}),"chatStore.readAll(existing turn messages)"),w=Array.isArray(g.records)?g.records.find(h=>h.role==="assistant"&&String(h.turn||"")===o):void 0;if(w)return {status:"success",data:{cardId:r,id:String(w.id),role:t,turn:o,files:Array.isArray(w.files)?w.files:[]}}}let d=await W({cardId:r,role:t,turn:o,files:e.files}),m=v(await f.append({params:{cardId:r},body:{role:t,text:n,files:d,turn:o}}),"chatStore.append");return {status:"success",data:{cardId:r,id:String(m.id),role:t,turn:o,files:d}}}async function ue(e){let r=String(e.cardId||"").trim(),t=a(e.patch);if(!r)throw new Error("managePatchCard requires cardId");let n=await K({cardId:r}),o=a(n[0]),m={...ve(o,t),...D(o,"meta")?{meta:o.meta}:{},...D(o,"__private")?{__private:o.__private}:{}},g=await u.set({body:m});v(g,"cardStore.set");let w;try{w=await i.upsertCard({params:{cardId:r,restart:!0}}),v(w,"upsertCard");}catch(A){try{await u.set({body:o});}catch{}throw A}let h=null;try{h=await i.cardRefreshedNotify({params:{cardId:r}}),v(h,"cardRefreshedNotify");}catch{h=null;}return {status:"success",data:{validation:null,card_saved:null,board_result:w,refresh_notify:h}}}async function le(e){let r=String(e.cardId||"").trim(),t=a(e.candidateCardContent),n=E(t);if(!r)throw new Error("manageUpsertCard requires cardId");if(typeof n.id!="string"||!n.id.trim())throw new Error("candidateCardContent.id must be a non-empty string");if(n.id!==r)throw new Error(`candidateCardContent.id must match cardId (${r})`);let o=await $({candidateCardContent:n}),d=a(o),m=a(d.data);if(d.status!=="success"||m.isValid!==true)return {status:"fail",step:"validate",validation:o};let g=null;try{g=await T(u,r);}catch{g=null;}let w=g?a(g):null,h={...n,...w&&D(w,"meta")?{meta:w.meta}:{},...w&&D(w,"__private")?{__private:w.__private}:{}},A=await u.set({body:h});v(A,"cardStore.set");let C;try{C=await i.upsertCard({params:{cardId:r,restart:!0}}),v(C,"upsertCard");}catch(S){try{g&&await u.set({body:g});}catch{}throw S}let l=null;try{l=await i.cardRefreshedNotify({params:{cardId:r}}),v(l,"cardRefreshedNotify");}catch{l=null;}return {status:"success",data:{validation:o,card_saved:null,board_result:C,refresh_notify:l}}}async function me(e){let r=String(e.cardId||"").trim();if(!r)throw new Error("manageRemoveCard requires cardId");let t=await i.removeCard({params:{id:r}});v(t,"removeCard");let n=await u.del({params:{id:r}});return v(n,"cardStore.del"),{status:"success",data:{board_result:t,store_result:n}}}async function pe(e){let r=String(e.cardId||"").trim();if(!r)throw new Error("adminReadCard requires cardId");let t=await U(u.get({params:{id:r}}),"cardStore.get");return Array.isArray(t.cards)?t.cards.map(n=>a(n)):[]}async function fe(e){let r=String(e.cardId||"").trim(),t=a(e.candidateCardContent),n=E(t);if(!r)throw new Error("adminUpsertCard requires cardId");if(typeof n.id!="string"||!n.id.trim())throw new Error("candidateCardContent.id must be a non-empty string");if(n.id!==r)throw new Error(`candidateCardContent.id must match cardId (${r})`);let o=await $({candidateCardContent:n}),d=a(o),m=a(d.data);if(d.status!=="success"||m.isValid!==true)return {status:"fail",step:"validate",validation:o};let g=null;try{g=await T(u,r);}catch{g=null;}let w=g?a(a(g).__private):{},h={...n,__private:{...w,visible_controlplane_only:true}},A=await u.set({body:h});v(A,"cardStore.set");let C;try{C=await i.upsertCard({params:{cardId:r,restart:!0}}),v(C,"upsertCard");}catch(S){try{g&&await u.set({body:g});}catch{}throw S}let l=null;try{l=await i.cardRefreshedNotify({params:{cardId:r}}),v(l,"cardRefreshedNotify");}catch{l=null;}return {status:"success",data:{validation:o,card_saved:null,board_result:C,refresh_notify:l}}}async function ge(e){let r=String(e.cardId||"").trim();if(!r)throw new Error("getChatProcessing requires cardId");let t=H(await f.isProcessing({params:{cardId:r}}),"chatStore.isProcessing");return {cardId:r,active:!!t.active}}async function we(e){let r=String(e.cardId||"").trim();if(!r)throw new Error("setChatProcessing requires cardId");if(typeof e.active!="boolean")throw new Error("setChatProcessing requires boolean active");return v(await f.setProcessing({params:{cardId:r},body:{active:e.active}}),"chatStore.setProcessing"),{cardId:r,active:e.active}}async function Ce(){let e=await B(_,"webhook.process-accumulated")();return e?.status==="fail"||e?.status==="error"?e:{status:"success",data:{runtime_result:Object.prototype.hasOwnProperty.call(e??{},"data")?e.data??null:null}}}async function ye(e){let r=String(e.token||"").trim(),t=String(e.ref||"").trim();if(!r)throw new Error("webhookSourceFetchDone requires token");if(!t)throw new Error("webhookSourceFetchDone requires ref");let n=await B(I,"webhook.source-fetch-done")({token:r,ref:t});return n?.status==="fail"||n?.status==="error"?n:{status:"success",data:{token:r,ref:t,runtime_result:Object.prototype.hasOwnProperty.call(n??{},"data")?n.data??null:null}}}async function be(e){let r=String(e.token||"").trim(),t=String(e.reason||"").trim();if(!r)throw new Error("webhookSourceFetchFailed requires token");if(!t)throw new Error("webhookSourceFetchFailed requires reason");let n=await B(k,"webhook.source-fetch-failed")({token:r,reason:t});return n?.status==="fail"||n?.status==="error"?n:{status:"success",data:{token:r,reason:t,runtime_result:Object.prototype.hasOwnProperty.call(n??{},"data")?n.data??null:null}}}return {listRuntimeCards:F,discoverSourceKinds:Y,inspectBoardRuntimeStatus:Z,inspectCardDefinitionAndRuntime:ee,inspectChatMessagesOnCards:re,inspectFileContents:te,preflightValidateCandidateCardDefinition:$,preflightMaterializeCandidateCard:ne,preflightProbeSingleSourceInCandidateCard:ae,preflightRunSingleSourceInCandidateCard:oe,preflightRunSingleSourceInLiveCard:se,preflightRunOneCycleWithCandidateCard:ie,manageReadCard:K,manageAddChatAttachment:de,manageAddChatEntryAndAnyAttachments:ce,managePatchCard:ue,manageUpsertCard:le,manageRemoveCard:me,adminReadCard:pe,adminUpsertCard:fe,getChatProcessing:ge,setChatProcessing:we,webhookProcessAccumulated:Ce,webhookSourceFetchDone:ye,webhookSourceFetchFailed:be}}async function U(s,i){return v(await s,i)}export{Ae as a};//# sourceMappingURL=chunk-35N7ONTH.js.map
2
+ //# sourceMappingURL=chunk-35N7ONTH.js.map
@@ -0,0 +1,3 @@
1
+ 'use strict';var chunk37HDEW26_cjs=require('./chunk-37HDEW26.cjs'),chunkZENTBLLA_cjs=require('./chunk-ZENTBLLA.cjs'),chunkVQCIOKJV_cjs=require('./chunk-VQCIOKJV.cjs'),chunkG4XXRHL2_cjs=require('./chunk-G4XXRHL2.cjs'),chunkIXZG74EW_cjs=require('./chunk-IXZG74EW.cjs');async function Ye(t,o,n){let s=await t.tryAcquire();if(!s)return false;try{await o();}finally{await s();}return await n?.(),true}function ct(t){return typeof t=="object"&&t!==null&&"then"in t&&typeof t.then=="function"}function ge(t,o){return ct(t)?t.then(o):o(t)}function Xe(t,o){let n={...t};for(let[s,d]of Object.entries(o))d!==null&&typeof d=="object"&&!Array.isArray(d)&&n[s]!==null&&typeof n[s]=="object"&&!Array.isArray(n[s])?n[s]=Xe(n[s],d):n[s]=d;return n}function pe(t,o,n){if(o.length===0)return t;let[s,...d]=o;if(d.length===0)return {...t,[s]:n};let g=t[s]!==null&&typeof t[s]=="object"&&!Array.isArray(t[s])?t[s]:{};return {...t,[s]:pe(g,d,n)}}function Ze(t){return {read:n=>t.read(n),get(n,s){return ge(t.read(n),d=>{if(d===null)return null;let g=d;for(let c of s.split(".").filter(Boolean)){if(g===null||typeof g!="object"||Array.isArray(g))return null;g=g[c]??null;}return g??null})},write:(n,s)=>t.write(n,s),delete:n=>t.delete(n),listKeys:n=>t.listKeys(n),shallowMerge(n,s){return ge(t.read(n),d=>t.write(n,{...d??{},...s}))},deepMerge(n,s){return ge(t.read(n),d=>t.write(n,Xe(d??{},s)))},patch(n,s,d){return ge(t.read(n),g=>{let c=s.split(".").filter(Boolean);return t.write(n,pe(g??{},c,d))})}}}function et(t){return Ze(t)}function tt(t,o){return {async readIndex(){return await t.read("_index")},writeIndex(n){return t.write("_index",n)},async readCard(n){return await t.read(n)},async writeCard(n,s){return await t.write(n,s),o(s)},removeCard(n){return t.delete(n)},async cardExists(n){return await t.read(n)!==null},defaultCardKey(n){return n}}}function rt(t,o){async function n(){return await t.readIndex()??{}}return {async readCard(s){let d=(await n())[s];return !d||!await t.cardExists(d.key)?null:await t.readCard(d.key)},async readCardKey(s){return (await n())[s]?.key??null},async readAllCards(){let s=[];for(let[d,g]of Object.entries(await n())){if(!await t.cardExists(g.key))continue;let c=await t.readCard(g.key);c?s.push(c):o?.(`[card-store] could not read card "${d}" at key "${g.key}"`);}return s},async readChecksumIndex(){let s={};for(let[d,g]of Object.entries(await n()))s[d]=g.checksum;return s},async changedSince(s){let d=await n(),g=[];for(let[c,w]of Object.entries(d))s[c]!==w.checksum&&g.push(c);for(let c of Object.keys(s))d[c]||g.push(c);return g},async validateUpsert(s,d){let g=await n(),c=g[s],w=Object.entries(g).find(([,v])=>v.key===d);return c&&c.key!==d?{ok:false,error:`Card id "${s}" is already mapped to key "${c.key}", cannot remap to "${d}"`}:w&&w[0]!==s?{ok:false,error:`Key "${d}" is already mapped to card id "${w[0]}", cannot remap to "${s}"`}:{ok:true}},async writeCard(s,d,g){let c=await n(),w=g??c[s]?.key??t.defaultCardKey(s),v=await t.writeCard(w,d);c[s]={key:w,checksum:v,updatedAt:new Date().toISOString()},await t.writeIndex(c);},async patchCard(s,d,g){let c=await n(),w=c[s];if(!w||!await t.cardExists(w.key))throw new Error(`card "${s}" not found`);let v=await t.readCard(w.key);if(!v||typeof v!="object"||Array.isArray(v))throw new Error(`card "${s}" is not patchable`);let B=String(d||"").split(".").filter(Boolean),te=pe(v,B,g),O=await t.writeCard(w.key,te);c[s]={key:w.key,checksum:O,updatedAt:new Date().toISOString()},await t.writeIndex(c);},async removeCard(s){let d=await n(),g=d[s];g&&(await t.removeCard(g.key),delete d[s],await t.writeIndex(d));},readIndex(){return n()}}}function Ct(t,o){return chunkZENTBLLA_cjs.a(t,o)}function ht(t,o,n){return {blob:t,kv:o,journal:n}}function h(t){return t!==void 0?{status:"success",data:t}:{status:"success"}}function p(t){return {status:"fail",error:t}}function P(t){return {status:"error",error:t instanceof Error?t.message:String(t)}}function x(){return new Date().toISOString()}function lt(t){let o=new TextEncoder().encode(t),n=Array.from(o,s=>String.fromCharCode(s)).join("");return btoa(n).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function st(t){let o=t.replace(/-/g,"+").replace(/_/g,"/"),n=o+"=".repeat((4-o.length%4)%4),s=atob(n),d=Uint8Array.from(s,g=>g.charCodeAt(0));return new TextDecoder().decode(d)}function ye(t){try{let o=JSON.parse(st(t));return typeof o?.t=="string"?{taskName:o.t}:null}catch{return null}}function nt(t){return lt(JSON.stringify(t))}function ot(t){try{let o=JSON.parse(st(t));return typeof o?.cbk=="string"&&typeof o?.cid=="string"&&typeof o?.b=="string"&&typeof o?.d=="string"?o:null}catch{return null}}function mt(t){return chunkZENTBLLA_cjs.j(t,chunkZENTBLLA_cjs.o,()=>({_sources:{}}))}function ft(t,o){return chunkZENTBLLA_cjs.h(t,o)}function gt(t){return chunkZENTBLLA_cjs.k(t)}function pt(t,o){return chunkZENTBLLA_cjs.i(t,o)}function yt(t,o,n,s,d,g){return async c=>{let w=[],v=await n.cardStore.readCard(c.nodeId);if(!v)return "task-initiate-failure";let B=v.id,te=v.card_data??{},O=v.source_defs??[],re=O.filter(m=>m.optionalForCompletionGating!==true),b=await n.cardRuntimeStore.readRuntime(B),_=false,$=async()=>{_&&(await n.cardRuntimeStore.writeRuntime(B,b),_=false);},T=m=>chunkZENTBLLA_cjs.p(b._sources[m]),D=(m,f)=>{b._sources[m]=chunkZENTBLLA_cjs.p(f),_=true;},se=c.taskState?.executionCount??0;if(b._lastExecutionCount!==se&&(b._sources={},b._lastExecutionCount=se,_=true),c.update){let m=c.update.outputFile;if(m){let f=T(m);if(c.update.failure){let R=c.update.rqt??f.lastRequestedToken??f.queueRequestedToken;R&&D(m,chunkZENTBLLA_cjs.s(f,R));}else {let R=c.update.rqt;if(!f.lastCompletedToken||R>f.lastCompletedToken){let r=typeof c.update.deliveryToken=="string"?c.update.deliveryToken:void 0,e=r?await n.fetchedSourcesStore.commitSourceData(B,m,r):false;D(m,e?chunkZENTBLLA_cjs.r(f,R):chunkZENTBLLA_cjs.s(f,R));}}await $();}}let J={};for(let m of O){if(!m.outputFile)continue;let f=await n.fetchedSourcesStore.readSourceData(B,m.outputFile);f!==null&&(J[m.bindTo]=f);}let H={};for(let[m,f]of Object.entries(c.state??{}))if(f!==null&&typeof f=="object"&&!Array.isArray(f)){let R=f[m];H[m]=R!==void 0?R:f;}else H[m]=f;let L={id:B,card_data:{...te},requires:H,source_defs:O,compute:v.compute};L._sourcesData=J,v.compute&&chunkIXZG74EW_cjs.a.runSync(L,{sourcesData:J}),(d??(()=>{}))(B,L.computed_values??{});let ne=chunkIXZG74EW_cjs.a.enrichSourcesSync(Array.isArray(v.source_defs)?v.source_defs:void 0,{card_data:v.card_data,requires:H}),F={...v,source_defs:Array.isArray(ne)?ne.map(m=>({...m,boardDir:typeof m.boardDir=="string"&&m.boardDir?m.boardDir:t.value})):ne},M=x(),G=c.update?void 0:M,W=re.filter(m=>{let f=m.outputFile;if(typeof f!="string"||!f)return true;let R=T(f);G&&(R={...R,queueRequestedToken:G},D(f,R));let r=R.queueRequestedToken??R.lastRequestedToken??M;return chunkZENTBLLA_cjs.q(R,r)==="dispatch"});if(await $(),W.length>0){let m=false,f=M;for(let R of W){let r=R.outputFile;if(typeof r!="string"||!r)continue;let e=T(r),u=e.queueRequestedToken??M;D(r,{...e,lastRequestedToken:u}),f=u,m=true;}return m&&await $(),m&&(w.push({taskKind:"source-fetch",payload:{boardRef:chunkVQCIOKJV_cjs.a(t),enrichedCard:F,callbackToken:c.callbackToken,rqt:f}}),await n.executionRequestStore.appendEntries(o,w)),"task-initiated"}if(re.some(m=>{let f=m.outputFile;if(typeof f!="string"||!f)return false;let R=T(f),r=R.queueRequestedToken??R.lastRequestedToken??M;return chunkZENTBLLA_cjs.q(R,r)==="in-flight"}))return "task-initiated";let Re=v.provides??[],oe={};for(let{bindTo:m,ref:f}of Re)oe[m]=chunkIXZG74EW_cjs.a.resolve(L,f);return (g??(()=>{}))(oe),O.filter(m=>{if(m.optionalForCompletionGating!==true)return false;let f=T(m.outputFile);return !f.lastRequestedToken||!f.lastCompletedToken?true:f.lastCompletedToken<=f.lastRequestedToken}).length>0&&w.push({taskKind:"source-fetch",payload:{boardRef:chunkVQCIOKJV_cjs.a(t),enrichedCard:F,callbackToken:c.callbackToken,rqt:M}}),s(c.nodeId,oe),w.length>0&&await n.executionRequestStore.appendEntries(o,w),"task-initiated"}}function _t(t,o,n={}){chunkZENTBLLA_cjs.d(o.callbackTransport,"createAsyncBoardLiveCardsPublic");let s=o.callbackTransport,d=o.warn??(()=>{}),g=chunkVQCIOKJV_cjs.a(t),c=null,w=n.boardRuntimeStoreRef,v=n.scratchStoreRef,B=n.taskExecutorRef,te=n.chatHandlerFlow;function O(){if(!w)throw new Error(`Board at ${t.value} has no board runtime store configured. Pass boardRuntimeStoreRef at construction or init.`);return w}function re(r){if(r.length!==0)try{return Promise.resolve(o.publishBoardChangeNotifications?.(r)).catch(e=>{d(`[async-board-live-cards-public] publishBoardChangeNotifications failed: ${e instanceof Error?e.message:String(e)}`);})}catch(e){d(`[async-board-live-cards-public] publishBoardChangeNotifications failed: ${e instanceof Error?e.message:String(e)}`);return}}let b=()=>chunk37HDEW26_cjs.b(o.kvStorageForRef(O())),_=t.value,$=()=>chunkZENTBLLA_cjs.b(chunkZENTBLLA_cjs.a(()=>o.kvStorageForRef(O()),o.hashFn),"v1"),T=async()=>{let r=await b().readOutputsStoreRef();if(!r)throw new Error(`Board at ${t.value} has no outputs store configured.`);return gt(o.kvStorageForRef(r))},D=async()=>{let r=await b().readCardStoreRef();if(!r)throw new Error(`Board at ${t.value} has no card store configured.`);let e=o.kvStorageForRef(r);return rt(tt(et(e),o.hashFn),d)};async function se(){return !!(await $().readSnapshot(_)).values[chunkZENTBLLA_cjs.n]}async function J(){let r=await $().readSnapshot(_);if(!r.values[chunkZENTBLLA_cjs.n])throw new Error(`Board not initialized at ${t.value}`);return chunkZENTBLLA_cjs.w(r.values)}async function H(r,e){let u=await $().commitSnapshot(_,{schemaVersion:"v1",expectedVersion:e,deleteKeys:[],shallowMerge:chunkZENTBLLA_cjs.v(r)});if(!u.ok)throw new Error(`Snapshot commit failed (version mismatch): expected=${e??"null"} current=${u.currentVersion??"null"}`)}let L=()=>chunkZENTBLLA_cjs.c(o.journalStorageForRef(O()));async function ne(){return B??await b().readTaskExecutorRef()}async function F(r){await L().appendEvent(r);}async function M(){let r=await b().readFetchedSourcesStoreRef();if(!r)throw new Error(`Board at ${t.value} has no fetched sources store configured. Run: init --fetched-sources-store-ref <b64-ref>`);return r}async function G(){return o.blobStorageForRef(await M())}async function W(){return ft(await G(),r=>o.resolveBlob(r))}async function ke(r){let e=(await G()).keyRef?.(r);if(!e)throw new Error("configured fetched-sources store does not support keyRef");let u=await Promise.resolve(e);return chunkVQCIOKJV_cjs.a(u)}async function Re(){let r=pt(o.kvStorageForRef(O()),async(i,l)=>{let S=i.payload,I=(S.enrichedCard??{}).id??S.cardId??"unknown";await F({type:"task-failed",taskName:I,error:l,timestamp:x()});}),e=mt(o.kvStorageForRef(O())),u=await G(),a=await W(),k=await D(),C=await T(),A=new Map,y=new Map,z=[],Q=[],V=[],U=new Map,Y=new Set,Se={async readRuntime(i){return A.get(i)??await e.readRuntime(i)},async writeRuntime(i,l){A.set(i,l),Ce[i]=l;}},at={async readSourceData(i,l){let S=`${i}/${l}`;return y.has(S)?y.get(S):await a.readSourceData(i,l)},ingestSourceDataStaged(i,l,S,E){return a.ingestSourceDataStaged(i,l,S,E)},async commitSourceData(i,l,S){let E=`${i}/.staged/${S}/${l}`,I=await u.read(E);if(I==null){let j=await Promise.resolve(u.keyRef?.(E));j&&(I=await o.resolveBlob(j));}if(I==null)return false;let K=`${i}/${l}`,Z=I.trim();try{y.set(K,JSON.parse(Z));}catch{y.set(K,Z);}return z.push({cardId:i,outputFile:l,deliveryToken:S}),true},async hasSource(i,l){let S=`${i}/${l}`;return y.has(S)||await a.hasSource(i,l)},async listSources(i){let l=await a.listSources(i),S=[...y.keys()].filter(E=>E.startsWith(`${i}/`)).map(E=>E.slice(`${i}/`.length));return [...new Set([...l,...S])]}},we=await J(),it=chunkG4XXRHL2_cjs.q(we.graph),Ce={...we.runtimeByCardId},{events:ut,newCursor:he}=await L().readEntriesAfterCursor(we.lastDrainedJournalId),ae=ut,ie=chunkG4XXRHL2_cjs.u(it,{handlers:{"card-handler":yt(t,he,{cardStore:k,cardRuntimeStore:Se,fetchedSourcesStore:at,executionRequestStore:r},(i,l)=>{ae.push({type:"task-completed",taskName:i,data:l,timestamp:x()});},(i,l)=>{Q.push({cardId:i,values:l});},i=>{V.push(i);})},onNodeRemoved:i=>{U.delete(i),A.delete(i),delete Ce[i],Y.add(i);}});for(;ae.length>0;){let i=ae;ae=[];for(let l of i)if(l.type==="task-restart"){let S=await k.readCard(l.taskName);S&&U.set(l.taskName,S);}ie.pushAll(i),await ie.waitForHandlers();}let Fe=ie.getState();await ie.dispose({wait:true}),await H({lastDrainedJournalId:he,graph:chunkG4XXRHL2_cjs.p(Fe),runtimeByCardId:Ce},(await $().readSnapshot(_)).version);for(let{cardId:i,values:l}of Q)await C.writeComputedValues(i,l);for(let i of V)await C.writeDataObjects(i);for(let[i,l]of A)await e.writeRuntime(i,l);for(let i of z)await a.commitSourceData(i.cardId,i.outputFile,i.deliveryToken);let qe=chunkZENTBLLA_cjs.t(g,Fe);await C.writeStatusSnapshot(qe);let ee=[];for(let{cardId:i,values:l}of Q)ee.push({kind:"computed_values",cardId:i,values:l});for(let i of V)for(let[l,S]of Object.entries(i))ee.push({kind:"data_object",key:l,payload:S});for(let[i,l]of U)ee.push({kind:"card_refreshed",cardId:i,card:l});for(let i of Y)ee.push({kind:"card_removed",cardId:i});ee.push({kind:"status",status:qe}),await re(ee);let X=await ne();if(!X)return;let Te=o.supportsDirectSourceOutput?.(X)===true;await r.dispatchEntriesForJournalId(he,async i=>{if(i.taskKind!=="source-fetch"){d(`[async-process-accumulated-events] unknown taskKind "${i.taskKind}" \u2014 skipping`);return}let l=i.payload,S=l.enrichedCard?.id??"unknown",E=l.enrichedCard?.source_defs??[];if(X.howToRun==="queue-storage"&&Te){try{let I=await b().readQueueStoreRef();if(!I)throw new Error(`Board at ${t.value} has no queue store configured. Run: init --queue-store-ref <b64-ref>`);let K=o.queueStorageForRef(I,"task-executor"),Z=typeof X.extra?.boardId=="string"?X.extra.boardId:void 0,j=[];for(let N of E){if(!N.outputFile)continue;let ue=o.genId(),de=`${S}/.staged/${ue}/${N.outputFile}`,Oe=await Promise.resolve(u.keyRef?.(de));if(!Oe)continue;let Ee={ref:chunkVQCIOKJV_cjs.a(Oe),deliveryToken:ue,outputFile:N.outputFile,cardId:S},dt=nt({cbk:l.callbackToken,rg:t.value,br:chunkVQCIOKJV_cjs.a(t),cid:S,b:N.bindTo,d:N.outputFile,cs:void 0,rqt:l.rqt,dt:Ee.deliveryToken});j.push({...Z?{boardId:Z}:{},ref:X,args:{source_def:N,base_ref:chunkVQCIOKJV_cjs.a(t),callback:s.createCallback(dt),output:Ee}});}j.length>0&&await K.enqueueMany(j);}catch(I){await F({type:"task-failed",taskName:S,error:I instanceof Error?I.message:String(I),timestamp:x()});}return}for(let I of E){if(!I.outputFile)continue;let K;if(Te){let N=o.genId(),ue=`${S}/.staged/${N}/${I.outputFile}`,de=await Promise.resolve(u.keyRef?.(ue));de&&(K={ref:chunkVQCIOKJV_cjs.a(de),deliveryToken:N,outputFile:I.outputFile,cardId:S});}let Z=nt({cbk:l.callbackToken,rg:t.value,br:chunkVQCIOKJV_cjs.a(t),cid:S,b:I.bindTo,d:I.outputFile,cs:void 0,rqt:l.rqt,...K?{dt:K.deliveryToken}:{}}),j=await o.dispatchExecution(X,{source_def:I,base_ref:chunkVQCIOKJV_cjs.a(t),callback:s.createCallback(Z),...K?{output:K}:{}});j.dispatched||await F({type:"task-failed",taskName:S,error:j.error??"dispatch failed",timestamp:x()});}});}async function oe(){try{let r=async()=>{let u=await J(),{events:a}=await L().readEntriesAfterCursor(u.lastDrainedJournalId);a.length>0&&await m();},e=await Ye(o.lock,Re,r);return h({ran:e!==!1})}catch(r){return P(r)}}async function xe(){return c||(c=oe().finally(()=>{c=null;}),c)}async function m(){let r=await b().readQueueStoreRef();if(!r)throw new Error(`Board at ${t.value} has no queue store configured. Run: init --queue-store-ref <b64-ref>`);let e=o.queueStorageForRef(r,"process-accumulated");e.enqueueIfAbsent?await e.enqueueIfAbsent({boardRef:chunkVQCIOKJV_cjs.a(t)},`process-accumulated:${chunkVQCIOKJV_cjs.a(t)}`):await e.enqueue({boardRef:chunkVQCIOKJV_cjs.a(t)}),await o.requestProcessAccumulated?.();}async function f(){let r=await b().readQueueStoreRef();if(!r)throw new Error(`Board at ${t.value} has no queue store configured. Run: init --queue-store-ref <b64-ref>`);let e=o.queueStorageForRef(r,"process-accumulated");for(;;){let u=await e.lease({max:64,visibilityMs:1e3});if(u.length<=0)return;for(let a of u)await e.ack(a.id,a.leaseToken);if(u.length<64)return}}function R(){m();}return {async init(r){try{let e=r.params?.cardStoreRef;if(!e)return p("init requires params.cardStoreRef");if(w=r.params?.boardRuntimeStoreRef,!w)return p("init requires params.boardRuntimeStoreRef");let u=r.params?.outputsStoreRef;if(!u)return p("init requires params.outputsStoreRef");let a=r.params?.queueStoreRef;if(!a)return p("init requires params.queueStoreRef");let k=r.params?.fetchedSourcesStoreRef;if(!k)return p("init requires params.fetchedSourcesStoreRef");if(v=r.params?.scratchStoreRef,!v)return p("init requires params.scratchStoreRef");let C=r.params?.chatStoreRef;if(!C)return p("init requires params.chatStoreRef");let A=r.params?.artifactsStoreRef;if(!A)return p("init requires params.artifactsStoreRef");await se()||await H({lastDrainedJournalId:"",graph:chunkG4XXRHL2_cjs.p(chunkG4XXRHL2_cjs.a(chunkZENTBLLA_cjs.u)),runtimeByCardId:{}},null);let y=b();return await y.writeBoardRuntimeStoreRef(w),await y.writeCardStoreRef(e),await y.writeOutputsStoreRef(u),await y.writeQueueStoreRef(a),await y.writeFetchedSourcesStoreRef(k),await y.writeChatStoreRef(C),await y.writeArtifactsStoreRef(A),await(await T()).writeStatusSnapshot(chunkZENTBLLA_cjs.t(g,chunkG4XXRHL2_cjs.q((await J()).graph))),h()}catch(e){return P(e)}},async status(r){try{let e=await T(),u=await e.readStatusSnapshot();return u||(u=chunkZENTBLLA_cjs.t(g,chunkG4XXRHL2_cjs.q((await J()).graph)),await e.writeStatusSnapshot(u)),h(u)}catch(e){return P(e)}},async getCardStoreRef(r){try{let e=await b().readCardStoreRef();return e?h({storeRef:e}):p(`Board at ${t.value} has no card store configured`)}catch(e){return P(e)}},async getBoardRuntimeStoreRef(r){try{return h({storeRef:w??null})}catch(e){return P(e)}},async getOutputsStoreRef(r){try{let e=await b().readOutputsStoreRef();return e?h({storeRef:e}):p(`Board at ${t.value} has no outputs store configured`)}catch(e){return P(e)}},async getScratchStoreRef(r){try{return h({storeRef:v??null})}catch(e){return P(e)}},async getChatStoreRef(r){try{return h({storeRef:await b().readChatStoreRef()})}catch(e){return P(e)}},async getArtifactsStoreRef(r){try{return h({storeRef:await b().readArtifactsStoreRef()})}catch(e){return P(e)}},async getFetchedSourcesStoreRef(r){try{return h({storeRef:await b().readFetchedSourcesStoreRef()})}catch(e){return P(e)}},async getConfig(r){try{let e=r.params?.key;if(!e)return p("getConfig requires params.key");let u=b(),a;switch(e){case "task-executor":a=B??null;break;case "chat-handler-flow":a=te??null;break;case "board-runtime-store-ref":a=await u.readBoardRuntimeStoreRef();break;case "card-store-ref":a=await u.readCardStoreRef();break;case "outputs-store-ref":a=await u.readOutputsStoreRef();break;case "scratch-store-ref":a=v??null;break;case "chat-store-ref":a=await u.readChatStoreRef();break;case "artifacts-store-ref":a=await u.readArtifactsStoreRef();break;case "fetched-sources-store-ref":a=await u.readFetchedSourcesStoreRef();break;default:return p(`getConfig: unknown key "${e}"`)}return h({value:a})}catch(e){return P(e)}},async getOutputsDataObject(r){try{let e=r.params?.key;return e?h(await(await T()).readDataObject(e)):p("getOutputsDataObject requires params.key")}catch(e){return P(e)}},async getAllOutputsDataObjects(r){try{return h(await(await T()).readAllDataObjects())}catch(e){return P(e)}},async getOutputsComputedValues(r){try{let e=r.params?.key;return e?h(await(await T()).readComputedValues(e)):p("getOutputsComputedValues requires params.key")}catch(e){return P(e)}},async getAllOutputsComputedValues(r){try{return h(await(await T()).readAllComputedValues())}catch(e){return P(e)}},async getOutputsFetchedSources(r){try{let e=r.params?.key;if(!e)return p("getOutputsFetchedSources requires params.key");let u=await(await W()).listSources(e),a={};for(let k of u)a[k]=await ke(`${e}/${k}`);return h(a)}catch(e){return P(e)}},async getAllOutputsFetchedSources(r){try{let e=await W(),u=await(await G()).listKeys(),a=new Set;for(let C of u){let A=C.indexOf("/");A>0&&!C.includes("/.staged/")&&a.add(C.slice(0,A));}let k={};for(let C of a){let A=await e.listSources(C);if(A.length!==0){k[C]={};for(let y of A)k[C][y]=await ke(`${C}/${y}`);}}return h(k)}catch(e){return P(e)}},async addCardFiles(r){try{let e=r.params?.cardId;if(!e)return p("addCardFiles requires params.cardId");let u=await D(),a=await u.readCard(e);if(!a)return p(`card "${e}" not found`);let k=r.body,C=Array.isArray(k)?k:k&&typeof k=="object"&&Array.isArray(k.files)?k.files:k!=null?[k]:null;if(!C||C.length===0)return p("addCardFiles requires a file metadata object, array, or body.files array");let A=a.card_data&&typeof a.card_data=="object"&&!Array.isArray(a.card_data)?a.card_data:{},y=Array.isArray(A.files)?A.files:[],z=[...y,...C],Q=C.map((U,Y)=>({idx:y.length+Y,entry:U}));await u.writeCard(e,{...a,card_data:{...A,files:z}});let V=await this.cardRefreshedNotify({params:{cardId:e}});return V.status!=="success"?V:h({cardId:e,files_added:Q,notified:!0})}catch(e){return P(e)}},async cardRefreshedNotify(r){try{let e=r.params?.cardId;if(!e)return p("cardRefreshedNotify requires params.cardId");let u=await(await D()).readCard(e);return u?(await re([{kind:"card_refreshed",cardId:e,card:u}]),h({cardId:e,notified:!0})):p(`Card "${e}" not found in board at ${t.value}`)}catch(e){return P(e)}},async removeCard(r){try{let e=r.params?.id;if(!e)return p("removeCard requires params.id");try{await o.kvStorage("card-upsert").delete(e);}catch{}return await F({type:"task-removal",taskName:e,timestamp:x()}),R(),h()}catch(e){return P(e)}},async retrigger(r){try{let e=r.params?.id;return e?(await F({type:"task-restart",taskName:e,timestamp:x()}),R(),h()):p("retrigger requires params.id")}catch(e){return P(e)}},async processAccumulatedEvents(r){return await f(),xe()},async upsertCard(r){try{let e=r.params?.cardId,u=r.params?.all,a=!!r.params?.restart;if(!e&&!u)return p("upsertCard requires --card-id <id> or --all");let k=await D(),C=u?(await k.readAllCards()).map(y=>y.id):[e];for(let y of C)if(!await k.readCard(y))return p(`Card "${y}" not found in board at ${t.value}`);let A=o.kvStorage("card-upsert");for(let y of C){let z=await k.readCard(y);if(!z)continue;let Q=chunkZENTBLLA_cjs.x(z),V=o.hashFn(Q),U=await A.read(y),Y=U?.taskConfigHash!==V;if(!(!Y&&!a)){if(Y){let Se=U?.blobRef??await k.readCardKey(y)??y;await F({type:"task-upsert",taskName:y,taskConfig:Q,timestamp:x()}),await A.write(y,{blobRef:Se,taskConfigHash:V,updatedAt:x()});}a&&await F({type:"task-restart",taskName:y,timestamp:x()});}}return R(),h()}catch(e){return P(e)}},async taskFailed(r){try{let e=r.params?.token;if(!e)return p("taskFailed requires params.token");let u=r.params?.error??"unknown error",a=ye(e);return a?(await F({type:"task-failed",taskName:a.taskName,error:u,timestamp:x()}),R(),h()):p("Invalid callback token")}catch(e){return P(e)}},async taskProgress(r){try{let e=r.params?.token;if(!e)return p("taskProgress requires params.token");let u=(r.body??{}).update??{},a=ye(e);return a?(await F({type:"task-progress",taskName:a.taskName,update:u,timestamp:x()}),R(),h()):p("Invalid callback token")}catch(e){return P(e)}},async sourceDataFetched(r){try{let e=r.params?.token,u=r.params?.ref;if(!e)return p("sourceDataFetched requires params.token");if(!u)return p("sourceDataFetched requires params.ref");let a=ot(e);if(!a)return p("Invalid source token");let k=await W(),C=a.dt||o.genId();a.dt||await k.ingestSourceDataStaged(a.cid,a.d,chunkVQCIOKJV_cjs.b(u),C);let A=ye(a.cbk);return A?(await F({type:"task-progress",taskName:A.taskName,update:{bindTo:a.b,outputFile:a.d,fetchedAt:x(),deliveryToken:C,sourceChecksum:a.cs,rqt:a.rqt},timestamp:x()}),R(),h()):p("Invalid callback token embedded in source token")}catch(e){return P(e)}},async sourceDataFetchFailure(r){try{let e=r.params?.token,u=r.params?.reason??"unknown";if(!e)return p("sourceDataFetchFailure requires params.token");let a=ot(e);if(!a)return p("Invalid source token");let k=ye(a.cbk);return k?(await F({type:"task-progress",taskName:k.taskName,update:{bindTo:a.b,outputFile:a.d,failure:!0,reason:u,sourceChecksum:a.cs,rqt:a.rqt},timestamp:x()}),R(),h()):p("Invalid callback token embedded in source token")}catch(e){return P(e)}}}}
2
+ exports.a=Ye;exports.b=et;exports.c=tt;exports.d=rt;exports.e=Ct;exports.f=ht;exports.g=_t;//# sourceMappingURL=chunk-36QUKFL7.cjs.map
3
+ //# sourceMappingURL=chunk-36QUKFL7.cjs.map
@@ -0,0 +1,2 @@
1
+ 'use strict';var chunk7JVHYHT2_cjs=require('./chunk-7JVHYHT2.cjs'),chunkVQCIOKJV_cjs=require('./chunk-VQCIOKJV.cjs');function c(e){return {messageId:e.id,enqueuedAt:e.enqueuedAt,attempt:e.attempt,request:e.body}}function l(e){return typeof e=="string"?e.startsWith("b64:")?chunkVQCIOKJV_cjs.b(e).value:e:e.value}function m(e){return {async enqueueRequest(t){return (await e.enqueue(t)).id},async leaseRequests(t){return (await e.lease(t)).map(r=>({...c(r),leaseToken:r.leaseToken,leaseExpiresAt:r.leaseExpiresAt}))},ackRequest(t,r){return e.ack(t,r)},nackRequest(t,r,a){return e.nack(t,r,a)},async peekActive(){return (await e.peekActive()).map(c)},async peekDeadLetter(){return (await e.peekDeadLetter()).map(t=>({...c(t),reason:t.reason}))}}}function h(e){async function t(r){let a=await e.read(r);return a==null?null:typeof a=="string"?a:JSON.stringify(a)}return {async readTaskExecutorRef(){let r=await t("task-executor");if(r?.trim())return chunk7JVHYHT2_cjs.c(r.trim())},writeTaskExecutorRef(r){return e.write("task-executor",chunk7JVHYHT2_cjs.b(r))},readChatHandlerFlow(){return e.read("chat-handler-flow")},writeChatHandlerFlow(r){return e.write("chat-handler-flow",r)},readBoardRuntimeStoreRef(){return t("board-runtime-store-ref")},writeBoardRuntimeStoreRef(r){return e.write("board-runtime-store-ref",r)},readCardStoreRef(){return t("card-store-ref")},writeCardStoreRef(r){return e.write("card-store-ref",r)},readOutputsStoreRef(){return t("outputs-store-ref")},writeOutputsStoreRef(r){return e.write("outputs-store-ref",r)},readQueueStoreRef(){return t("queue-store-ref")},writeQueueStoreRef(r){return e.write("queue-store-ref",r)},readScratchStoreRef(){return t("scratch-store-ref")},writeScratchStoreRef(r){return e.write("scratch-store-ref",r)},readChatStoreRef(){return t("chat-store-ref")},writeChatStoreRef(r){return e.write("chat-store-ref",r)},readArtifactsStoreRef(){return t("artifacts-store-ref")},writeArtifactsStoreRef(r){return e.write("artifacts-store-ref",r)},readFetchedSourcesStoreRef(){return t("fetched-sources-store-ref")},writeFetchedSourcesStoreRef(r){return e.write("fetched-sources-store-ref",r)}}}function y(e){let t=e.callbackTransport,r=e.resolveBlob??(async o=>{let s=await e.blobStorage("").read(o.value);if(s==null)throw new Error(`Blob not found for ref ${o.kind}:${o.value}`);return s});async function a(o,s){if(o.howToRun==="queue-storage")return e.queueStoreRef?(await m(e.queueStorageForRef(e.queueStoreRef,"task-executor")).enqueueRequest({boardId:typeof o.extra?.boardId=="string"?o.extra.boardId:e.boardId,ref:o,args:s}),{dispatched:true}):{dispatched:false,error:"queue-storage dispatch requires queueStoreRef"};if(o.howToRun==="http:post"){let n=e.fetch??globalThis.fetch;if(!n)return {dispatched:false,error:"http:post dispatch requires fetch support"};let i=await n(l(o.whatToRun),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...s,...o.extra?{extra:o.extra}:{}})});if(!i.ok){let g=await i.text().catch(()=>"");return {dispatched:false,error:`HTTP ${i.status}: ${g}`}}return {dispatched:true}}return {dispatched:false,error:`Unsupported hosted async transport "${o.howToRun}"`}}return {kvStorage:e.kvStorage,kvStorageForRef:e.kvStorageForRef,blobStorage:e.blobStorage,blobStorageForRef:e.blobStorageForRef,chatStorageForRef:e.chatStorageForRef,queueStorageForRef:e.queueStorageForRef,scratchStorage:e.scratchStorage,scratchStorageForRef:e.scratchStorageForRef,archiveFactory:e.archiveFactory,archiveFactoryForRef:e.archiveFactoryForRef,journalStorage:e.journalStorage,journalStorageForRef:e.journalStorageForRef,lock:e.lock,get callbackTransport(){return t},set callbackTransport(o){t=o;},dispatchExecution:(o,s)=>e.dispatchExecution?.(o,s)??a(o,s),supportsDirectSourceOutput:e.supportsDirectSourceOutput,resolveBlob:r,hashFn:e.hashFn,genId:e.genId,requestProcessAccumulated:e.requestProcessAccumulated,publishBoardChangeNotifications:e.publishBoardChangeNotifications,warn:e.onWarn}}exports.a=m;exports.b=h;exports.c=y;//# sourceMappingURL=chunk-37HDEW26.cjs.map
2
+ //# sourceMappingURL=chunk-37HDEW26.cjs.map
@@ -1,2 +1,2 @@
1
- 'use strict';var chunkSFVO2LB2_cjs=require('./chunk-SFVO2LB2.cjs'),module$1=require('module'),url=require('url'),path=require('path'),fs=require('fs');var _documentCurrentScript=typeof document!=='undefined'?document.currentScript:null;var f=path.dirname(url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-PMUSJQSR.cjs', document.baseURI).href)))),E=module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-PMUSJQSR.cjs', document.baseURI).href)));function w(){let e=path.resolve(f,"./jsonata-sync.cjs");return fs.existsSync(e)?e:path.resolve(f,"../../card-compute/jsonata-sync.cjs")}var p=E(w());function u(e){e.registerFunction("fsPathRef",s=>chunkSFVO2LB2_cjs.a({kind:"fs-path",value:String(s)}),"<s:s>");}function R(e,s,c){if(!e||typeof e!="object")return {};let i={};if(Array.isArray(e.cmdTemplate)){let r=[];for(let n of e.cmdTemplate)try{let a=p(n);u(a),r.push(String(a.evaluate(s)));}catch(a){let t=a instanceof Error?a.message:String(a);throw new Error(`[${c}] argsMassaging.cmdTemplate failed on "${n}": ${t}`)}i.cmdArgs=r;}if(typeof e.stdinTemplate=="string")try{let r=p(e.stdinTemplate);u(r),i.stdin=r.evaluate(s);}catch(r){let n=r instanceof Error?r.message:String(r);throw new Error(`[${c}] argsMassaging.stdinTemplate failed: ${n}`)}if(typeof e.urlTemplate=="string")try{let r=p(e.urlTemplate);u(r),i.url=String(r.evaluate(s));}catch(r){let n=r instanceof Error?r.message:String(r);throw new Error(`[${c}] argsMassaging.urlTemplate failed: ${n}`)}if(typeof e.headerTemplate=="string")try{let r=p(e.headerTemplate);u(r);let n=r.evaluate(s);if(typeof n!="object"||n===null)throw new Error(`headerTemplate must produce an object, got: ${JSON.stringify(n)}`);i.headers=n;}catch(r){let n=r instanceof Error?r.message:String(r);throw new Error(`[${c}] argsMassaging.headerTemplate failed: ${n}`)}if(typeof e.bodyTemplate=="string")try{let r=p(e.bodyTemplate);u(r),i.body=r.evaluate(s);}catch(r){let n=r instanceof Error?r.message:String(r);throw new Error(`[${c}] argsMassaging.bodyTemplate failed: ${n}`)}return i}function _(e,s,c){if(!e||typeof e!="object")return s;let i={output:s},r=s.result,n=s.data,a=s.error;if(typeof e.resultExpr=="string")try{let t=p(e.resultExpr);u(t);let o=t.evaluate(i);if(typeof o!="string"||!o.trim())throw new Error(`resultExpr did not produce a non-empty string (got ${JSON.stringify(o)})`);r=o;}catch(t){let o=t instanceof Error?t.message:String(t);throw new Error(`[${c}] outputTransforms.resultExpr failed: ${o}`)}if(typeof e.dataTemplate=="string")try{let t=p(e.dataTemplate);u(t);let o=t.evaluate(i);if(!o||typeof o!="object"||Array.isArray(o))throw new Error(`dataTemplate did not produce an object (got ${JSON.stringify(o)})`);n=o;}catch(t){let o=t instanceof Error?t.message:String(t);throw new Error(`[${c}] outputTransforms.dataTemplate failed: ${o}`)}if(typeof e.errorExpr=="string")try{let t=p(e.errorExpr);u(t);let o=t.evaluate(i);a=o!=null?String(o):void 0;}catch(t){let o=t instanceof Error?t.message:String(t);throw new Error(`[${c}] outputTransforms.errorExpr failed: ${o}`)}return a!==void 0?{result:r,data:n,error:a}:{result:r,data:n}}exports.a=R;exports.b=_;//# sourceMappingURL=chunk-PMUSJQSR.cjs.map
2
- //# sourceMappingURL=chunk-PMUSJQSR.cjs.map
1
+ 'use strict';var chunkVQCIOKJV_cjs=require('./chunk-VQCIOKJV.cjs'),module$1=require('module'),url=require('url'),path=require('path'),fs=require('fs');var _documentCurrentScript=typeof document!=='undefined'?document.currentScript:null;var f=path.dirname(url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-3CZCGNY4.cjs', document.baseURI).href)))),E=module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-3CZCGNY4.cjs', document.baseURI).href)));function w(){let e=path.resolve(f,"./jsonata-sync.cjs");return fs.existsSync(e)?e:path.resolve(f,"../../card-compute/jsonata-sync.cjs")}var p=E(w());function u(e){e.registerFunction("fsPathRef",s=>chunkVQCIOKJV_cjs.a({kind:"fs-path",value:String(s)}),"<s:s>");}function R(e,s,c){if(!e||typeof e!="object")return {};let i={};if(Array.isArray(e.cmdTemplate)){let r=[];for(let n of e.cmdTemplate)try{let a=p(n);u(a),r.push(String(a.evaluate(s)));}catch(a){let t=a instanceof Error?a.message:String(a);throw new Error(`[${c}] argsMassaging.cmdTemplate failed on "${n}": ${t}`)}i.cmdArgs=r;}if(typeof e.stdinTemplate=="string")try{let r=p(e.stdinTemplate);u(r),i.stdin=r.evaluate(s);}catch(r){let n=r instanceof Error?r.message:String(r);throw new Error(`[${c}] argsMassaging.stdinTemplate failed: ${n}`)}if(typeof e.urlTemplate=="string")try{let r=p(e.urlTemplate);u(r),i.url=String(r.evaluate(s));}catch(r){let n=r instanceof Error?r.message:String(r);throw new Error(`[${c}] argsMassaging.urlTemplate failed: ${n}`)}if(typeof e.headerTemplate=="string")try{let r=p(e.headerTemplate);u(r);let n=r.evaluate(s);if(typeof n!="object"||n===null)throw new Error(`headerTemplate must produce an object, got: ${JSON.stringify(n)}`);i.headers=n;}catch(r){let n=r instanceof Error?r.message:String(r);throw new Error(`[${c}] argsMassaging.headerTemplate failed: ${n}`)}if(typeof e.bodyTemplate=="string")try{let r=p(e.bodyTemplate);u(r),i.body=r.evaluate(s);}catch(r){let n=r instanceof Error?r.message:String(r);throw new Error(`[${c}] argsMassaging.bodyTemplate failed: ${n}`)}return i}function _(e,s,c){if(!e||typeof e!="object")return s;let i={output:s},r=s.result,n=s.data,a=s.error;if(typeof e.resultExpr=="string")try{let t=p(e.resultExpr);u(t);let o=t.evaluate(i);if(typeof o!="string"||!o.trim())throw new Error(`resultExpr did not produce a non-empty string (got ${JSON.stringify(o)})`);r=o;}catch(t){let o=t instanceof Error?t.message:String(t);throw new Error(`[${c}] outputTransforms.resultExpr failed: ${o}`)}if(typeof e.dataTemplate=="string")try{let t=p(e.dataTemplate);u(t);let o=t.evaluate(i);if(!o||typeof o!="object"||Array.isArray(o))throw new Error(`dataTemplate did not produce an object (got ${JSON.stringify(o)})`);n=o;}catch(t){let o=t instanceof Error?t.message:String(t);throw new Error(`[${c}] outputTransforms.dataTemplate failed: ${o}`)}if(typeof e.errorExpr=="string")try{let t=p(e.errorExpr);u(t);let o=t.evaluate(i);a=o!=null?String(o):void 0;}catch(t){let o=t instanceof Error?t.message:String(t);throw new Error(`[${c}] outputTransforms.errorExpr failed: ${o}`)}return a!==void 0?{result:r,data:n,error:a}:{result:r,data:n}}exports.a=R;exports.b=_;//# sourceMappingURL=chunk-3CZCGNY4.cjs.map
2
+ //# sourceMappingURL=chunk-3CZCGNY4.cjs.map
@@ -1,3 +1,3 @@
1
- var s="b64:";function a(e){let n=new TextEncoder().encode(e),r=globalThis.Buffer,t;if(r)t=r.from(n).toString("base64");else if(typeof btoa=="function"){let o="";for(let i of n)o+=String.fromCharCode(i);t=btoa(o);}else throw new Error("No base64 encoder available in this runtime");return t.replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}function g(e){let n=e.replace(/-/g,"+").replace(/_/g,"/")+"=".repeat((4-e.length%4)%4),r=globalThis.Buffer;if(r)return r.from(n,"base64").toString("utf8");if(typeof atob=="function"){let t=atob(n),o=new Uint8Array(t.length);for(let i=0;i<t.length;i+=1)o[i]=t.charCodeAt(i);return new TextDecoder().decode(o)}throw new Error("No base64 decoder available in this runtime")}function l(e){return `${s}${a(JSON.stringify(e))}`}function u(e){if(!e.startsWith(s))throw new Error(`Invalid ref format (expected ${s}<base64url(json)>): ${e}`);let n;try{n=JSON.parse(g(e.slice(s.length)));}catch{throw new Error(`Invalid ref format (malformed base64url/json): ${e}`)}if(!n||typeof n!="object")throw new Error(`Invalid ref format (expected object payload): ${e}`);let r=n;if(typeof r.kind!="string"||typeof r.value!="string")throw new Error(`Invalid ref format (payload must contain string kind/value): ${e}`);return {kind:r.kind,value:r.value}}async function f(e,n,r){let t=e.tryAcquire();if(!t)return false;try{await n();}finally{t();}return r?.(),true}
2
- export{l as a,u as b,f as c};//# sourceMappingURL=chunk-BQS3EIEK.js.map
3
- //# sourceMappingURL=chunk-BQS3EIEK.js.map
1
+ var s="b64:";function a(e){let n=new TextEncoder().encode(e),r=globalThis.Buffer,t;if(r)t=r.from(n).toString("base64");else if(typeof btoa=="function"){let o="";for(let i of n)o+=String.fromCharCode(i);t=btoa(o);}else throw new Error("No base64 encoder available in this runtime");return t.replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}function g(e){let n=e.replace(/-/g,"+").replace(/_/g,"/")+"=".repeat((4-e.length%4)%4),r=globalThis.Buffer;if(r)return r.from(n,"base64").toString("utf8");if(typeof atob=="function"){let t=atob(n),o=new Uint8Array(t.length);for(let i=0;i<t.length;i+=1)o[i]=t.charCodeAt(i);return new TextDecoder().decode(o)}throw new Error("No base64 decoder available in this runtime")}function u(e){return `${s}${a(JSON.stringify(e))}`}function l(e){if(!e.startsWith(s))throw new Error(`Invalid ref format (expected ${s}<base64url(json)>): ${e}`);let n;try{n=JSON.parse(g(e.slice(s.length)));}catch{throw new Error(`Invalid ref format (malformed base64url/json): ${e}`)}if(!n||typeof n!="object")throw new Error(`Invalid ref format (expected object payload): ${e}`);let r=n;if(typeof r.kind!="string"||typeof r.value!="string")throw new Error(`Invalid ref format (payload must contain string kind/value): ${e}`);return {kind:r.kind,value:r.value}}async function d(e,n,r){let t=e.tryAcquire();if(!t)return false;try{await n();}finally{t();}return r?.(),true}
2
+ export{u as a,l as b,d as c};//# sourceMappingURL=chunk-44L64VQ2.js.map
3
+ //# sourceMappingURL=chunk-44L64VQ2.js.map
@@ -1,2 +1,2 @@
1
- import {u}from'./chunk-VGT3TRQG.js';import {a}from'./chunk-JMDHDY6M.js';function b(e){return JSON.parse(JSON.stringify(e))}function E(e){let r=e.provides&&e.provides.length>0?e.provides.map(n=>n.bindTo):[e.id];return {requires:e.requires&&e.requires.length>0?[...e.requires]:void 0,provides:r,taskHandlers:[e.id],description:e.meta?.title??e.id}}function I(e){let r=new Map;for(let[n,u]of e.entries()){let o=u.provides&&u.provides.length>0?u.provides:[{bindTo:n,ref:"card_data"}];for(let h of o)r.set(h.bindTo,n);}return r}function O(e,r){let n=I(e),u=e.get(r);if(u){for(let o of u.requires??[])if(!n.has(o))throw new Error(`Card "${r}" requires token "${o}" but no card provides it`)}}var F={CARD_PREFIX:"yf:cards:",RUNTIME_OUT_PREFIX:"yf:runtime-out:cards:",STATUS_KEY:"yf:runtime-out:status",writeCard(e,r){try{localStorage.setItem(this.CARD_PREFIX+e,JSON.stringify(r));}catch(n){console.warn(`Failed to write card ${e} to localStorage:`,n);}},readCard(e){try{let r=localStorage.getItem(this.CARD_PREFIX+e);return r?JSON.parse(r):null}catch(r){return console.warn(`Failed to read card ${e} from localStorage:`,r),null}},readAllCards(e){let r={};for(let n of e){let u=this.readCard(n);u&&(r[n]=u);}return r},writeComputedArtifact(e){if(!(!e||!e.card_id))try{localStorage.setItem(this.RUNTIME_OUT_PREFIX+String(e.card_id),JSON.stringify(e));}catch(r){console.warn(`Failed to write computed artifact ${e.card_id}:`,r);}},readComputedArtifact(e){try{let r=localStorage.getItem(this.RUNTIME_OUT_PREFIX+e);return r?JSON.parse(r):null}catch(r){return console.warn(`Failed to read computed artifact ${e}:`,r),null}},readAllComputedArtifacts(e){let r={};for(let n of e){let u=this.readComputedArtifact(n);u&&(r[n]=u);}return r},writeStatusSnapshot(e){try{localStorage.setItem(this.STATUS_KEY,JSON.stringify(e));}catch(r){console.warn("Failed to write status snapshot to localStorage:",r);}},readStatusSnapshot(){try{let e=localStorage.getItem(this.STATUS_KEY);return e?JSON.parse(e):null}catch(e){return console.warn("Failed to read status snapshot from localStorage:",e),null}},clear(){let e=[];for(let r=0;r<localStorage.length;r++){let n=localStorage.key(r);n&&(n.startsWith(this.CARD_PREFIX)||n.startsWith(this.RUNTIME_OUT_PREFIX)||n===this.STATUS_KEY)&&e.push(n);}for(let r of e)localStorage.removeItem(r);}};function H(e,r={}){let n=Array.isArray(e)?{}:{id:e.id,title:e.title,mode:e.mode,positions:e.positions,settings:e.settings},u$1=Array.isArray(e)?e:e.nodes,o=new Map;for(let t of u$1){if(o.has(t.id))throw new Error(`Duplicate card ID: "${t.id}"`);o.set(t.id,b(t));}let h=new Set,S=r.taskExecutor,L=r.sourceAdapters??{},d=r.defaultSourceAdapter,m=null,A=(t,g)=>{let a={events:t,graph:g,nodes:v()};for(let w of h)w(a);},_=t=>async g=>{let a$1=o.get(t);if(!a$1)return "task-initiate-failure";let w={};for(let R of a$1.requires??[]){let y=g.state[R];if(!y||typeof y!="object")continue;let k=y.provides_data;!k||typeof k!="object"||Object.prototype.hasOwnProperty.call(k,R)&&(w[R]=k[R]);}let p={};if(a$1.source_defs&&a$1.source_defs.length>0){let R=L[t]??d,y=S?await S({card:a$1,input:g}):R?await R({card:a$1,input:g}):void 0;if(y&&typeof y=="object")for(let k of a$1.source_defs)Object.prototype.hasOwnProperty.call(y,k.bindTo)?p[k.bindTo]=y[k.bindTo]:a$1.source_defs.length===1&&(p[k.bindTo]=y);}let c={id:a$1.id,card_data:b(a$1.card_data??{}),requires:w,source_defs:a$1.source_defs,compute:a$1.compute};c._sourcesData=p,c.compute&&c.compute.length>0&&await a.run(c,{sourcesData:p});let T={};if(a$1.provides&&a$1.provides.length>0)for(let{bindTo:R,ref:y}of a$1.provides)T[R]=a.resolve(c,y);else T[a$1.id]={...c.card_data??{},...c.computed_values??{},...c._sourcesData??{}};let B={provides_data:T,card_data:c.card_data??{},computed_values:c.computed_values??{},fetched_sources:p,requires:w};return m?.resolveCallback(g.callbackToken,B),"task-initiated"},s={},f={};for(let[t,g]of o.entries())O(o,t),s[t]=E(g),f[t]=_(t);let l={id:n.id??`browser-board-${Date.now()}`,settings:{completion:"manual",execution_mode:"eligibility-mode",...n.settings??{},...r.graphSettings??{}},tasks:s},C=r.reactiveOptions?.onDrain,i=u(l,{...r.reactiveOptions??{},handlers:f,onDrain:(t,g,a)=>{C?.(t,g,a),A(t,g);}},r.executionId);m=i;function v(){let t=i.getState(),g=[];for(let[a,w]of o.entries()){let p=t.state.tasks[a]?.data,c=t.state.tasks[a],T={...w.card_data??{},...p&&typeof p.card_data=="object"?p.card_data:{}},B=c?.status==="running"?"loading":c?.status,R={...T,...B?{status:B}:{},...c?.lastUpdated?{lastRun:c.lastUpdated}:{},...c?.status==="failed"&&c.error?{error:c.error}:{}};g.push({id:a,card:b(w),card_data:R,requires:p&&typeof p.requires=="object"?b(p.requires):{},computed_values:p&&typeof p.computed_values=="object"?b(p.computed_values):{},runtime_state:c?b(c):{}});}return g}return {getGraph:()=>i,getState:()=>i.getState(),getSchedule:()=>i.getSchedule(),getNodes:()=>v(),getBoard:()=>({...n,nodes:v()}),subscribe(t){return h.add(t),t({events:[],graph:i.getState(),nodes:v()}),()=>h.delete(t)},addCard(t){if(o.has(t.id))throw new Error(`Card "${t.id}" already exists`);o.set(t.id,b(t)),O(o,t.id),i.registerHandler(t.id,_(t.id)),i.addNode(t.id,E(t));},upsertCard(t){o.set(t.id,b(t)),O(o,t.id),i.registerHandler(t.id,_(t.id)),i.addNode(t.id,E(t));},removeCard(t){o.delete(t),i.unregisterHandler(t),i.removeNode(t);},patchCardState(t,g){let a=o.get(t);if(!a)throw new Error(`Card "${t}" not found`);a.card_data={...a.card_data??{},...g},i.retrigger(t);},retrigger(t){i.retrigger(t);},retriggerAll(){i.retriggerAll(Array.from(o.keys()));},push(t){i.push(t);},pushAll(t){i.pushAll(t);},dispose(){h.clear(),i.dispose();}}}function G(e){return e==="running"||e==="in-progress"?"loading":e==="failed"?"error":"fresh"}function D(e){return e==="loading"?"in-progress":e==="error"?"failed":e==="stale"?"pending":e==="fresh"?"completed":"pending"}function M(e,r){let n=r&&typeof r=="object"&&!Array.isArray(r)?r:{};return {schema_version:n.schema_version||"v1",card_id:typeof n.card_id=="string"?n.card_id:e,card_data:n.card_data&&typeof n.card_data=="object"&&!Array.isArray(n.card_data)?structuredClone(n.card_data):{},computed_values:n.computed_values&&typeof n.computed_values=="object"&&!Array.isArray(n.computed_values)?structuredClone(n.computed_values):{}}}function P(e,r){if(!e||typeof e!="object")throw new Error("payload must be an object");if(!r)throw new Error("cardId is required");let u=(Array.isArray(e.cardDefinitions)?e.cardDefinitions:[]).find(t=>t.id===r);if(!u)throw new Error(`cardDefinitions has no entry with id ${r}`);let o=e.statusSnapshot&&typeof e.statusSnapshot=="object"?e.statusSnapshot:{},h=e.cardRuntimeById&&typeof e.cardRuntimeById=="object"?e.cardRuntimeById:{},S=e.dataObjectsByToken&&typeof e.dataObjectsByToken=="object"?e.dataObjectsByToken:{},d=(Array.isArray(o.cards)?o.cards:[]).find(t=>t.name===r),m=structuredClone(u),A=M(r,h[r]),s={...m.card_data&&typeof m.card_data=="object"&&!Array.isArray(m.card_data)?m.card_data:{},...A.card_data||{},status:G(d?.status),lastRun:d?.runtime?.last_transition_at??null};d?.error?.message&&(s.error=d.error.message);let f=d?{task_status:d.status??null,card_status:G(d.status),runtime:structuredClone(d.runtime??{}),error:d.error?structuredClone(d.error):null,blocked_by:Array.isArray(d.blocked_by)?structuredClone(d.blocked_by):[],requires_missing:Array.isArray(d.requires_missing)?structuredClone(d.requires_missing):[]}:{task_status:null,card_status:s.status??"fresh",runtime:{last_transition_at:s.lastRun??null},error:s.error?{message:s.error}:null,blocked_by:[],requires_missing:[]},l=Array.isArray(m.requires)?m.requires:[],C={};for(let[t,g]of Object.entries(S))C[t]=structuredClone(g);for(let t of l)Object.prototype.hasOwnProperty.call(C,t)||(C[t]=null);let v=(e.cardChatsByCardId&&typeof e.cardChatsByCardId=="object"?e.cardChatsByCardId:{})[r],q=v?{messages:Array.isArray(v.messages)?v.messages:[],receiving:!!v.receiving,processing:!!v.processing}:null;return {id:r,card:m,card_data:s,requires:C,computed_values:A.computed_values,runtime_state:f,card_chats:q}}function $(e){if(!e||typeof e!="object")throw new Error("payload must be an object");return (Array.isArray(e.cardDefinitions)?e.cardDefinitions:[]).map(n=>P(e,n.id))}function J({boardPath:e,cardDefinitions:r,runtimeModels:n,graphState:u}){let o=Array.isArray(r)?r:[],h=Array.isArray(n)?n:[],S=new Map(h.map(s=>[s.id,s])),d=u.state?.tasks??{},m={};for(let s of h)s?.id&&(m[s.id]={schema_version:"v1",card_id:s.id,card_data:structuredClone(s.card_data??{}),computed_values:structuredClone(s.computed_values??{})});let A={};for(let s of Object.keys(d)){let f=d[s]?.data?.provides_data;if(f&&typeof f=="object")for(let l of Object.keys(f))A[l]=structuredClone(f[l]);}let _=o.map(s=>{let f=S.get(s.id)??{},l=d[s.id],C=typeof l?.status=="string"?l.status:D(f.card_data?.status),i=typeof l?.error=="string"?l.error:typeof f.card_data?.error=="string"?f.card_data.error:null;return {name:s.id,status:C,...i?{error:{message:i,code:"TASK_FAILED",at:l?.failedAt??null,source:"browser-runtime"}}:{},requires:Array.isArray(s.requires)?s.requires:[],requires_satisfied:[],requires_missing:[],provides_declared:Array.isArray(s.provides)?s.provides.map(v=>v.bindTo):[s.id],provides_runtime:Object.keys(l?.data?.provides_data??{}).sort(),blocked_by:[],unblocks:[],runtime:{attempt_count:l?.executionCount??0,restart_count:l?.retryCount??0,in_progress_since:C==="in-progress"?l?.startedAt??null:null,last_transition_at:l?.lastUpdated??f.card_data?.lastRun??null,last_completed_at:l?.completedAt??null,last_restarted_at:l?.startedAt??null,status_age_ms:null}}});return {cardDefinitions:structuredClone(o),cardRuntimeById:m,dataObjectsByToken:A,statusSnapshot:{schema_version:"v1",meta:{board:{path:e??"browser-runtime"}},summary:{card_count:_.length,completed:_.filter(s=>s.status==="completed").length,eligible:0,pending:_.filter(s=>s.status==="pending").length,blocked:0,unresolved:0,failed:_.filter(s=>s.status==="failed").length,in_progress:_.filter(s=>s.status==="in-progress").length,orphan_cards:0,topology:{edge_count:0,max_fan_out_card:null,max_fan_out:0}},cards:_}}}export{F as a,H as b,P as c,$ as d,J as e};//# sourceMappingURL=chunk-YGKDQLYP.js.map
2
- //# sourceMappingURL=chunk-YGKDQLYP.js.map
1
+ import {u}from'./chunk-VGT3TRQG.js';import {a}from'./chunk-JMDHDY6M.js';function b(e){return JSON.parse(JSON.stringify(e))}function E(e){let r=e.provides&&e.provides.length>0?e.provides.map(n=>n.bindTo):[e.id];return {requires:e.requires&&e.requires.length>0?[...e.requires]:void 0,provides:r,taskHandlers:[e.id],description:e.meta?.title??e.id}}function I(e){let r=new Map;for(let[n,u]of e.entries()){let o=u.provides&&u.provides.length>0?u.provides:[{bindTo:n,ref:"card_data"}];for(let h of o)r.set(h.bindTo,n);}return r}function O(e,r){let n=I(e),u=e.get(r);if(u){for(let o of u.requires??[])if(!n.has(o))throw new Error(`Card "${r}" requires token "${o}" but no card provides it`)}}var F={CARD_PREFIX:"yf:cards:",RUNTIME_OUT_PREFIX:"yf:runtime-out:cards:",STATUS_KEY:"yf:runtime-out:status",writeCard(e,r){try{localStorage.setItem(this.CARD_PREFIX+e,JSON.stringify(r));}catch(n){console.warn(`Failed to write card ${e} to localStorage:`,n);}},readCard(e){try{let r=localStorage.getItem(this.CARD_PREFIX+e);return r?JSON.parse(r):null}catch(r){return console.warn(`Failed to read card ${e} from localStorage:`,r),null}},readAllCards(e){let r={};for(let n of e){let u=this.readCard(n);u&&(r[n]=u);}return r},writeComputedArtifact(e){if(!(!e||!e.card_id))try{localStorage.setItem(this.RUNTIME_OUT_PREFIX+String(e.card_id),JSON.stringify(e));}catch(r){console.warn(`Failed to write computed artifact ${e.card_id}:`,r);}},readComputedArtifact(e){try{let r=localStorage.getItem(this.RUNTIME_OUT_PREFIX+e);return r?JSON.parse(r):null}catch(r){return console.warn(`Failed to read computed artifact ${e}:`,r),null}},readAllComputedArtifacts(e){let r={};for(let n of e){let u=this.readComputedArtifact(n);u&&(r[n]=u);}return r},writeStatusSnapshot(e){try{localStorage.setItem(this.STATUS_KEY,JSON.stringify(e));}catch(r){console.warn("Failed to write status snapshot to localStorage:",r);}},readStatusSnapshot(){try{let e=localStorage.getItem(this.STATUS_KEY);return e?JSON.parse(e):null}catch(e){return console.warn("Failed to read status snapshot from localStorage:",e),null}},clear(){let e=[];for(let r=0;r<localStorage.length;r++){let n=localStorage.key(r);n&&(n.startsWith(this.CARD_PREFIX)||n.startsWith(this.RUNTIME_OUT_PREFIX)||n===this.STATUS_KEY)&&e.push(n);}for(let r of e)localStorage.removeItem(r);}};function H(e,r={}){let n=Array.isArray(e)?{}:{id:e.id,title:e.title,mode:e.mode,positions:e.positions,settings:e.settings},u$1=Array.isArray(e)?e:e.nodes,o=new Map;for(let t of u$1){if(o.has(t.id))throw new Error(`Duplicate card ID: "${t.id}"`);o.set(t.id,b(t));}let h=new Set,S=r.taskExecutor,L=r.sourceAdapters??{},d=r.defaultSourceAdapter,m=null,A=(t,g)=>{let a={events:t,graph:g,nodes:v()};for(let w of h)w(a);},_=t=>async g=>{let a$1=o.get(t);if(!a$1)return "task-initiate-failure";let w={};for(let R of a$1.requires??[]){let y=g.state[R];if(!y||typeof y!="object")continue;let k=y.provides_data;!k||typeof k!="object"||Object.prototype.hasOwnProperty.call(k,R)&&(w[R]=k[R]);}let p={};if(a$1.source_defs&&a$1.source_defs.length>0){let R=L[t]??d,y=S?await S({card:a$1,input:g}):R?await R({card:a$1,input:g}):void 0;if(y&&typeof y=="object")for(let k of a$1.source_defs)Object.prototype.hasOwnProperty.call(y,k.bindTo)?p[k.bindTo]=y[k.bindTo]:a$1.source_defs.length===1&&(p[k.bindTo]=y);}let c={id:a$1.id,card_data:b(a$1.card_data??{}),requires:w,source_defs:a$1.source_defs,compute:a$1.compute};c._sourcesData=p,c.compute&&c.compute.length>0&&await a.run(c,{sourcesData:p});let T={};if(a$1.provides&&a$1.provides.length>0)for(let{bindTo:R,ref:y}of a$1.provides)T[R]=a.resolve(c,y);else T[a$1.id]={...c.card_data??{},...c.computed_values??{},...c._sourcesData??{}};let B={provides_data:T,card_data:c.card_data??{},computed_values:c.computed_values??{},fetched_sources:p,requires:w};return m?.resolveCallback(g.callbackToken,B),"task-initiated"},s={},f={};for(let[t,g]of o.entries())O(o,t),s[t]=E(g),f[t]=_(t);let l={id:n.id??`browser-board-${Date.now()}`,settings:{completion:"manual",execution_mode:"eligibility-mode",...n.settings??{},...r.graphSettings??{}},tasks:s},C=r.reactiveOptions?.onDrain,i=u(l,{...r.reactiveOptions??{},handlers:f,onDrain:(t,g,a)=>{C?.(t,g,a),A(t,g);}},r.executionId);m=i;function v(){let t=i.getState(),g=[];for(let[a,w]of o.entries()){let p=t.state.tasks[a]?.data,c=t.state.tasks[a],T={...w.card_data??{},...p&&typeof p.card_data=="object"?p.card_data:{}},B=c?.status==="running"?"loading":c?.status,R={...T,...B?{status:B}:{},...c?.lastUpdated?{lastRun:c.lastUpdated}:{},...c?.status==="failed"&&c.error?{error:c.error}:{}};g.push({id:a,card:b(w),card_data:R,requires:p&&typeof p.requires=="object"?b(p.requires):{},computed_values:p&&typeof p.computed_values=="object"?b(p.computed_values):{},runtime_state:c?b(c):{}});}return g}return {getGraph:()=>i,getState:()=>i.getState(),getSchedule:()=>i.getSchedule(),getNodes:()=>v(),getBoard:()=>({...n,nodes:v()}),subscribe(t){return h.add(t),t({events:[],graph:i.getState(),nodes:v()}),()=>h.delete(t)},addCard(t){if(o.has(t.id))throw new Error(`Card "${t.id}" already exists`);o.set(t.id,b(t)),O(o,t.id),i.registerHandler(t.id,_(t.id)),i.addNode(t.id,E(t));},upsertCard(t){o.set(t.id,b(t)),O(o,t.id),i.registerHandler(t.id,_(t.id)),i.addNode(t.id,E(t));},removeCard(t){o.delete(t),i.unregisterHandler(t),i.removeNode(t);},patchCardState(t,g){let a=o.get(t);if(!a)throw new Error(`Card "${t}" not found`);a.card_data={...a.card_data??{},...g},i.retrigger(t);},retrigger(t){i.retrigger(t);},retriggerAll(){i.retriggerAll(Array.from(o.keys()));},push(t){i.push(t);},pushAll(t){i.pushAll(t);},dispose(){h.clear(),i.dispose();}}}function G(e){return e==="running"||e==="in-progress"?"loading":e==="failed"?"error":"fresh"}function D(e){return e==="loading"?"in-progress":e==="error"?"failed":e==="stale"?"pending":e==="fresh"?"completed":"pending"}function M(e,r){let n=r&&typeof r=="object"&&!Array.isArray(r)?r:{};return {schema_version:n.schema_version||"v1",card_id:typeof n.card_id=="string"?n.card_id:e,card_data:n.card_data&&typeof n.card_data=="object"&&!Array.isArray(n.card_data)?structuredClone(n.card_data):{},computed_values:n.computed_values&&typeof n.computed_values=="object"&&!Array.isArray(n.computed_values)?structuredClone(n.computed_values):{}}}function P(e,r){if(!e||typeof e!="object")throw new Error("payload must be an object");if(!r)throw new Error("cardId is required");let u=(Array.isArray(e.cardDefinitions)?e.cardDefinitions:[]).find(t=>t.id===r);if(!u)throw new Error(`cardDefinitions has no entry with id ${r}`);let o=e.statusSnapshot&&typeof e.statusSnapshot=="object"?e.statusSnapshot:{},h=e.cardRuntimeById&&typeof e.cardRuntimeById=="object"?e.cardRuntimeById:{},S=e.dataObjectsByToken&&typeof e.dataObjectsByToken=="object"?e.dataObjectsByToken:{},d=(Array.isArray(o.cards)?o.cards:[]).find(t=>t.name===r),m=structuredClone(u),A=M(r,h[r]),s={...m.card_data&&typeof m.card_data=="object"&&!Array.isArray(m.card_data)?m.card_data:{},...A.card_data||{},status:G(d?.status),lastRun:d?.runtime?.last_transition_at??null};d?.error?.message&&(s.error=d.error.message);let f=d?{task_status:d.status??null,card_status:G(d.status),runtime:structuredClone(d.runtime??{}),error:d.error?structuredClone(d.error):null,blocked_by:Array.isArray(d.blocked_by)?structuredClone(d.blocked_by):[],requires_missing:Array.isArray(d.requires_missing)?structuredClone(d.requires_missing):[]}:{task_status:null,card_status:s.status??"fresh",runtime:{last_transition_at:s.lastRun??null},error:s.error?{message:s.error}:null,blocked_by:[],requires_missing:[]},l=Array.isArray(m.requires)?m.requires:[],C={};for(let[t,g]of Object.entries(S))C[t]=structuredClone(g);for(let t of l)Object.prototype.hasOwnProperty.call(C,t)||(C[t]=null);let v=(e.cardChatsByCardId&&typeof e.cardChatsByCardId=="object"?e.cardChatsByCardId:{})[r],q=v?{messages:Array.isArray(v.messages)?v.messages:[],receiving:!!v.receiving,processing:!!v.processing}:null;return {id:r,card:m,card_data:s,requires:C,computed_values:A.computed_values,runtime_state:f,card_chats:q}}function $(e){if(!e||typeof e!="object")throw new Error("payload must be an object");return (Array.isArray(e.cardDefinitions)?e.cardDefinitions:[]).map(n=>P(e,n.id))}function J({boardPath:e,cardDefinitions:r,runtimeModels:n,graphState:u}){let o=Array.isArray(r)?r:[],h=Array.isArray(n)?n:[],S=new Map(h.map(s=>[s.id,s])),d=u.state?.tasks??{},m={};for(let s of h)s?.id&&(m[s.id]={schema_version:"v1",card_id:s.id,card_data:structuredClone(s.card_data??{}),computed_values:structuredClone(s.computed_values??{})});let A={};for(let s of Object.keys(d)){let f=d[s]?.data?.provides_data;if(f&&typeof f=="object")for(let l of Object.keys(f))A[l]=structuredClone(f[l]);}let _=o.map(s=>{let f=S.get(s.id)??{},l=d[s.id],C=typeof l?.status=="string"?l.status:D(f.card_data?.status),i=typeof l?.error=="string"?l.error:typeof f.card_data?.error=="string"?f.card_data.error:null;return {name:s.id,status:C,...i?{error:{message:i,code:"TASK_FAILED",at:l?.failedAt??null,source:"browser-runtime"}}:{},requires:Array.isArray(s.requires)?s.requires:[],requires_satisfied:[],requires_missing:[],provides_declared:Array.isArray(s.provides)?s.provides.map(v=>v.bindTo):[s.id],provides_runtime:Object.keys(l?.data?.provides_data??{}).sort(),blocked_by:[],unblocks:[],runtime:{attempt_count:l?.executionCount??0,restart_count:l?.retryCount??0,in_progress_since:C==="in-progress"?l?.startedAt??null:null,last_transition_at:l?.lastUpdated??f.card_data?.lastRun??null,last_completed_at:l?.completedAt??null,last_restarted_at:l?.startedAt??null,status_age_ms:null}}});return {cardDefinitions:structuredClone(o),cardRuntimeById:m,dataObjectsByToken:A,statusSnapshot:{schema_version:"v1",meta:{board:{path:e??"browser-runtime"}},summary:{card_count:_.length,completed:_.filter(s=>s.status==="completed").length,eligible:0,pending:_.filter(s=>s.status==="pending").length,blocked:0,unresolved:0,failed:_.filter(s=>s.status==="failed").length,in_progress:_.filter(s=>s.status==="in-progress").length,orphan_cards:0,topology:{edge_count:0,max_fan_out_card:null,max_fan_out:0}},cards:_}}}export{F as a,H as b,P as c,$ as d,J as e};//# sourceMappingURL=chunk-4HIEOBJC.js.map
2
+ //# sourceMappingURL=chunk-4HIEOBJC.js.map
@@ -0,0 +1,2 @@
1
+ import {a}from'./chunk-FOFGEABN.js';import {a as a$2,b}from'./chunk-RKKSVOP2.js';import {a as a$1}from'./chunk-NNSBBO5R.js';function l(e,r){return r?{...e,...r.pollIntervalMs!=null?{pollIntervalMs:r.pollIntervalMs}:{},...r.visibilityMs!=null?{visibilityMs:r.visibilityMs}:{},...r.concurrency!=null?{concurrency:r.concurrency}:{},...r.maxAttempts!=null?{maxAttempts:r.maxAttempts}:{}}:e}function f(e,r,u,s){return {id:e,async lease(o){return (await Promise.resolve(r.leaseRequests(o))).map(t=>({id:t.messageId,attempt:t.attempt,message:t.request,ack:()=>Promise.resolve(r.ackRequest(t.messageId,t.leaseToken)),nack:a=>Promise.resolve(r.nackRequest(t.messageId,t.leaseToken,a))}))},async handle(o){await u(o.args,o);},onError:s?(o,i)=>s(o,i.attempt,i.message):void 0}}function R(e,r,u,s){return {id:e,async lease(o){return (await Promise.resolve(r.lease(o))).map(t=>({id:t.id,attempt:t.attempt,message:t.body,ack:()=>Promise.resolve(r.ack(t.id,t.leaseToken)),nack:a=>Promise.resolve(r.nack(t.id,t.leaseToken,a))}))},async handle(){await u();},onError:s?(o,i)=>s(o,i.attempt):void 0}}function Q(e){let r=e.logger??{info(){},warn(){},error(){}},u=e.boardAdapter,s=e.runtime.queueLaneTuning??{},o=u.queueStorageForRef(e.queueStoreRef,"process-accumulated"),i=a(u)?a$1(u.queueStorageForRef(e.queueStoreRef,"chat-agent")):a$2(u.queueStorageForRef(e.queueStoreRef,"chat-agent")),t=[];if(t.push(l(R("process-accumulated",o,async()=>{let a=await e.runtime.__drainProcessAccumulatedLane();if(a.status!=="success")throw new Error(a.error||`__drainProcessAccumulatedLane returned ${a.status}`)},(a,n)=>{r.error(`[board-server] queued process-accumulated failed for ${e.boardId} (attempt ${n}): ${String(a&&a.message||a)}`);}),s.processAccumulated)),t.push(l(f("chat-agent",i,async(a,n)=>{await e.runtime.handleChatAgentRequest(n);},(a,n,c)=>{let p=typeof c.args?.cardId=="string"?c.args.cardId:"";r.error(`[board-server] queued chat-agent failed for ${e.boardId}${p?`/${p}`:""} (attempt ${n}): ${String(a&&a.message||a)}`);}),s.chatAgent)),e.executeTaskExecutorRequest){let a$3=a(u)?a$1(u.queueStorageForRef(e.queueStoreRef,"task-executor")):a$2(u.queueStorageForRef(e.queueStoreRef,"task-executor"));t.push(l(f("task-executor",a$3,e.executeTaskExecutorRequest,(n,c)=>{r.error(`[board-server] queued board-worker failed for ${e.boardId} (attempt ${c}): ${String(n&&n.message||n)}`);}),s.taskExecutor));}return b(t)}export{Q as a};//# sourceMappingURL=chunk-6OPXQPSC.js.map
2
+ //# sourceMappingURL=chunk-6OPXQPSC.js.map
@@ -0,0 +1,2 @@
1
+ function w(e){if(!e||typeof e!="object")return;let n=e;if(typeof n.statusCode=="number")return n.statusCode;if(typeof n.code=="number")return n.code}function l(e,n){return w(e)===n}function p(e,n,r){return n?typeof n=="function"?n(e):n:r}function A(e){return (e?.()??new Date).toISOString()}function L(e,n){if(n)return n();let r=String((e?.()??new Date).getTime()).padStart(13,"0"),o=Math.random().toString(36).slice(2,10).padEnd(8,"0");return `${r}-${o}`}function f(e){return {id:e.id,payload:e.payload}}function B(e,n={}){return {async read(r){let o=p(r,n.partitionKey,"kv");try{return (await e.item(r,o).read()).resource?.value??null}catch(t){if(l(t,404))return null;throw t}},async write(r,o){let t=p(r,n.partitionKey,"kv");await e.items.upsert({id:r,pk:t,kind:"kv",value:o});},async delete(r){let o=p(r,n.partitionKey,"kv");try{await e.item(r,o).delete();}catch(t){if(!l(t,404))throw t}},async listKeys(r=""){let{resources:o}=await e.items.query({query:"SELECT c.id FROM c WHERE c.kind = @kind AND STARTSWITH(c.id, @prefix)",parameters:[{name:"@kind",value:"kv"},{name:"@prefix",value:r}]}).fetchAll();return o.map(t=>t.id).sort()}}}function M(e,n,r={}){let o=p(n,r.partitionKey,`journal:${n}`);return {async append(t){let a={id:L(r.now,r.idFactory),pk:o,kind:"journal",streamKey:n,createdAt:A(r.now),payload:t};return await e.items.create(a),f(a)},async readAll(){let{resources:t}=await e.items.query({query:"SELECT * FROM c WHERE c.kind = @kind AND c.pk = @pk AND c.streamKey = @streamKey ORDER BY c.id",parameters:[{name:"@kind",value:"journal"},{name:"@pk",value:o},{name:"@streamKey",value:n}]}).fetchAll();return t.sort((a,s)=>a.id.localeCompare(s.id)).map(f)},async readAfter(t){let{resources:a}=await e.items.query({query:t?"SELECT * FROM c WHERE c.kind = @kind AND c.pk = @pk AND c.streamKey = @streamKey AND c.id > @cursor ORDER BY c.id":"SELECT * FROM c WHERE c.kind = @kind AND c.pk = @pk AND c.streamKey = @streamKey ORDER BY c.id",parameters:[{name:"@kind",value:"journal"},{name:"@pk",value:o},{name:"@streamKey",value:n},...t?[{name:"@cursor",value:t}]:[]]}).fetchAll(),s=a.sort((u,d)=>u.id.localeCompare(d.id));return {entries:s.map(f),newCursor:s.length>0?s[s.length-1].id:t}},async clear(){let t=await this.readAll();await Promise.all(t.map(a=>e.item(a.id,o).delete()));}}}function P(e,n,r={}){let o=r.partitionKey??"lock",t=r.holderId??`holder-${Math.random().toString(36).slice(2,10)}`,a=r.now,s=r.ttlMs??3e4;function u(){let i=a?.()??new Date;return {id:n,pk:o,kind:"lock",held:true,holderId:t,expiresAt:new Date(i.getTime()+s).toISOString(),updatedAt:i.toISOString()}}function d(i){return {...i??{id:n,pk:o,kind:"lock"},kind:"lock",held:false,holderId:t,expiresAt:null,updatedAt:A(a)}}async function g(){try{return (await e.item(n,o).read()).resource??null}catch(i){if(l(i,404))return null;throw i}}function S(i){return i?.held?i.expiresAt?Date.parse(i.expiresAt)>(a?.()??new Date).getTime():true:false}return {async tryAcquire(){let i=await g(),b=u();if(i){if(S(i))return null;try{await e.item(n,o).replace(b,i._etag?{accessCondition:{type:"IfMatch",condition:i._etag}}:void 0);}catch(c){if(l(c,412)||l(c,409))return null;throw c}}else try{await e.items.create(b);}catch(c){if(l(c,409))return null;throw c}return async()=>{let c=await g();if(!c)return;let T=d(c);try{await e.item(n,o).replace(T,c._etag?{accessCondition:{type:"IfMatch",condition:c._etag}}:void 0);}catch{}}}}}function x(e){return new TextDecoder().decode(e)}function h(e,n={}){return {async read(r){if(!await e.getBlobClient(r).exists())return null;let o=await e.getBlobClient(r).downloadToBuffer();return x(o)},async write(r,o){await e.getBlockBlobClient(r).upload(o,new TextEncoder().encode(o).byteLength,{blobHTTPHeaders:{blobContentType:n.defaultContentType??"application/json; charset=utf-8"}});},exists(r){return e.getBlobClient(r).exists()},async remove(r){await e.getBlobClient(r).deleteIfExists();},async readBytes(r){return await e.getBlobClient(r).exists()?await e.getBlobClient(r).downloadToBuffer():null},async writeBytes(r,o){await e.getBlockBlobClient(r).upload(o,o.byteLength,{blobHTTPHeaders:{blobContentType:n.defaultContentType??"application/octet-stream"}});},async listKeys(r=""){let o=[];for await(let t of e.listBlobsFlat({prefix:r}))o.push(t.name);return o.sort()},async stat(r){if(!await e.getBlobClient(r).exists())return null;let o=await e.getBlobClient(r).getProperties();return {key:r,size:Number(o.contentLength??0),updatedAt:o.lastModified?.toISOString(),contentType:o.contentType}},keyRef(r){return n.keyRef?.(r)??{kind:"azure-blob-key",value:r}},async renameKey(r,o){let t=e.getBlobClient(r);if(!await t.exists())return false;let[a,s]=await Promise.all([t.downloadToBuffer(),t.getProperties()]);return await e.getBlockBlobClient(o).upload(a,a.byteLength,{blobHTTPHeaders:{blobContentType:s.contentType??n.defaultContentType??"application/octet-stream"}}),await t.deleteIfExists(),true}}}function C(e){if(!e||typeof e!="object")return;let n=e;if(typeof n.statusCode=="number")return n.statusCode;if(typeof n.code=="number")return n.code}function y(e){let n=JSON.stringify(e),r=globalThis.Buffer;if(r)return r.from(n,"utf-8").toString("base64");if(typeof btoa=="function")return btoa(n);throw new Error("No base64 encoder available in this runtime")}function k(e){let n=e??"",r=globalThis.Buffer;if(r)return JSON.parse(r.from(n,"base64").toString("utf-8"));if(typeof atob=="function")return JSON.parse(atob(n));throw new Error("No base64 decoder available in this runtime")}function m(e,n){return (e??n()).toISOString()}function D(e,n){return {id:String(e.messageId??""),body:k(e.messageText),enqueuedAt:m(e.insertedOn??e.insertionTime,n),attempt:Number(e.dequeueCount??0)}}function v(e,n){return {id:String(e.messageId??""),body:k(e.messageText),enqueuedAt:m(e.insertedOn??e.insertionTime,n),attempt:Number(e.dequeueCount??0),leaseToken:String(e.popReceipt??""),leaseExpiresAt:m(e.nextVisibleOn,n)}}function R(e,n={}){let r=n.now??(()=>new Date),o=new Map;return {async enqueue(t){let a=await e.sendMessage(y(t));return {id:String(a.messageId??""),body:t,enqueuedAt:m(a.insertionTime,r),attempt:0}},async enqueueMany(t){let a=[];for(let s of t)a.push(await this.enqueue(s));return a},async stage(t,a){let s=a?.dedupKey;if(s){for(let g of o.values())if(g.dedupKey===s)return null}let u=`staged:${crypto.randomUUID?.()??Math.random().toString(36).slice(2,10)}`,d={body:t,enqueuedAt:r().toISOString(),attempt:0,...s?{dedupKey:s}:{}};return o.set(u,d),{id:u,body:t,enqueuedAt:d.enqueuedAt,attempt:0}},async commitStaged(t){let a=o.get(t);return a?(o.delete(t),await e.sendMessage(y(a.body)),true):false},async discardStaged(t){return o.has(t)?(o.delete(t),true):false},async peekStaged(t=""){return Array.from(o.entries()).filter(([a])=>!t||a.startsWith(t)).map(([a,s])=>({id:a,body:s.body,enqueuedAt:s.enqueuedAt,attempt:s.attempt}))},async lease(t){return (await e.receiveMessages({numberOfMessages:t?.max,visibilityTimeout:t?.visibilityMs?Math.max(1,Math.ceil(t.visibilityMs/1e3)):void 0})).receivedMessageItems.map(s=>v(s,r))},async ack(t,a){try{return await e.deleteMessage(t,a),!0}catch(s){if(C(s)===404)return false;throw s}},async nack(t,a,s){try{if(s?.dead){if(!n.deadLetterQueueClient)return !1;let u={messageId:t,reason:s.reason??null};return await n.deadLetterQueueClient.sendMessage(y(u)),await e.deleteMessage(t,a),!0}return await e.updateMessage(t,a,y({requeued:!0}),0),!0}catch(u){if(C(u)===404)return false;throw u}},async peekActive(t=""){return (await e.peekMessages({numberOfMessages:32})).peekedMessageItems.map(s=>D(s,r)).filter(s=>!t||s.id.startsWith(t))},async peekDeadLetter(t=""){return n.deadLetterQueueClient?(await n.deadLetterQueueClient.peekMessages({numberOfMessages:32})).peekedMessageItems.map(s=>{let u=k(s.messageText);return {id:String(s.messageId??""),body:u,enqueuedAt:m(s.insertedOn??s.insertionTime,r),attempt:Number(s.dequeueCount??0),reason:typeof u.reason=="string"?u.reason:void 0}}).filter(s=>!t||s.id.startsWith(t)):[]}}}export{B as a,M as b,P as c,h as d,R as e};//# sourceMappingURL=chunk-7BTZCOT5.js.map
2
+ //# sourceMappingURL=chunk-7BTZCOT5.js.map
@@ -1,2 +1,2 @@
1
- 'use strict';var chunkSFVO2LB2_cjs=require('./chunk-SFVO2LB2.cjs');function i(e,t){let n;return /\.m?js$/i.test(e)?n="local-node":/\.py$/i.test(e)?n="local-python":n="local-process",{meta:"task-executor",howToRun:n,whatToRun:chunkSFVO2LB2_cjs.a({kind:"fs-path",value:e}),...t?{extra:t}:{}}}function s(e){return JSON.stringify(e)}function a(e){let t;try{t=JSON.parse(e);}catch{throw new Error(`parseExecutionRef: invalid JSON \u2014 ${e}`)}if(typeof t!="object"||t===null||typeof t.howToRun!="string"||typeof t.whatToRun!="string")throw new Error(`parseExecutionRef: missing required fields howToRun/whatToRun \u2014 ${e}`);return t}exports.a=i;exports.b=s;exports.c=a;//# sourceMappingURL=chunk-U2N6MCD5.cjs.map
2
- //# sourceMappingURL=chunk-U2N6MCD5.cjs.map
1
+ 'use strict';var chunkVQCIOKJV_cjs=require('./chunk-VQCIOKJV.cjs');function i(e,t){let n;return /\.m?js$/i.test(e)?n="local-node":/\.py$/i.test(e)?n="local-python":n="local-process",{meta:"task-executor",howToRun:n,whatToRun:chunkVQCIOKJV_cjs.a({kind:"fs-path",value:e}),...t?{extra:t}:{}}}function s(e){return JSON.stringify(e)}function a(e){let t;try{t=JSON.parse(e);}catch{throw new Error(`parseExecutionRef: invalid JSON \u2014 ${e}`)}if(typeof t!="object"||t===null||typeof t.howToRun!="string"||typeof t.whatToRun!="string")throw new Error(`parseExecutionRef: missing required fields howToRun/whatToRun \u2014 ${e}`);return t}exports.a=i;exports.b=s;exports.c=a;//# sourceMappingURL=chunk-7JVHYHT2.cjs.map
2
+ //# sourceMappingURL=chunk-7JVHYHT2.cjs.map
@@ -0,0 +1,3 @@
1
+ import {b as b$1}from'./chunk-NNSBBO5R.js';import {a,d,x as x$1,t,u,n,w,v,k,b as b$2,c,h as h$1,i,j,o,s,r,q as q$1,p as p$2}from'./chunk-ZWVT24YW.js';import {a as a$1,b}from'./chunk-44L64VQ2.js';import {q,p as p$1,a as a$2,u as u$1}from'./chunk-VGT3TRQG.js';import {a as a$3}from'./chunk-JMDHDY6M.js';async function Ye(t,o,n){let s=await t.tryAcquire();if(!s)return false;try{await o();}finally{await s();}return await n?.(),true}function ct(t){return typeof t=="object"&&t!==null&&"then"in t&&typeof t.then=="function"}function ge(t,o){return ct(t)?t.then(o):o(t)}function Xe(t,o){let n={...t};for(let[s,d]of Object.entries(o))d!==null&&typeof d=="object"&&!Array.isArray(d)&&n[s]!==null&&typeof n[s]=="object"&&!Array.isArray(n[s])?n[s]=Xe(n[s],d):n[s]=d;return n}function pe(t,o,n){if(o.length===0)return t;let[s,...d]=o;if(d.length===0)return {...t,[s]:n};let g=t[s]!==null&&typeof t[s]=="object"&&!Array.isArray(t[s])?t[s]:{};return {...t,[s]:pe(g,d,n)}}function Ze(t){return {read:n=>t.read(n),get(n,s){return ge(t.read(n),d=>{if(d===null)return null;let g=d;for(let c of s.split(".").filter(Boolean)){if(g===null||typeof g!="object"||Array.isArray(g))return null;g=g[c]??null;}return g??null})},write:(n,s)=>t.write(n,s),delete:n=>t.delete(n),listKeys:n=>t.listKeys(n),shallowMerge(n,s){return ge(t.read(n),d=>t.write(n,{...d??{},...s}))},deepMerge(n,s){return ge(t.read(n),d=>t.write(n,Xe(d??{},s)))},patch(n,s,d){return ge(t.read(n),g=>{let c=s.split(".").filter(Boolean);return t.write(n,pe(g??{},c,d))})}}}function et(t){return Ze(t)}function tt(t,o){return {async readIndex(){return await t.read("_index")},writeIndex(n){return t.write("_index",n)},async readCard(n){return await t.read(n)},async writeCard(n,s){return await t.write(n,s),o(s)},removeCard(n){return t.delete(n)},async cardExists(n){return await t.read(n)!==null},defaultCardKey(n){return n}}}function rt(t,o){async function n(){return await t.readIndex()??{}}return {async readCard(s){let d=(await n())[s];return !d||!await t.cardExists(d.key)?null:await t.readCard(d.key)},async readCardKey(s){return (await n())[s]?.key??null},async readAllCards(){let s=[];for(let[d,g]of Object.entries(await n())){if(!await t.cardExists(g.key))continue;let c=await t.readCard(g.key);c?s.push(c):o?.(`[card-store] could not read card "${d}" at key "${g.key}"`);}return s},async readChecksumIndex(){let s={};for(let[d,g]of Object.entries(await n()))s[d]=g.checksum;return s},async changedSince(s){let d=await n(),g=[];for(let[c,w]of Object.entries(d))s[c]!==w.checksum&&g.push(c);for(let c of Object.keys(s))d[c]||g.push(c);return g},async validateUpsert(s,d){let g=await n(),c=g[s],w=Object.entries(g).find(([,v])=>v.key===d);return c&&c.key!==d?{ok:false,error:`Card id "${s}" is already mapped to key "${c.key}", cannot remap to "${d}"`}:w&&w[0]!==s?{ok:false,error:`Key "${d}" is already mapped to card id "${w[0]}", cannot remap to "${s}"`}:{ok:true}},async writeCard(s,d,g){let c=await n(),w=g??c[s]?.key??t.defaultCardKey(s),v=await t.writeCard(w,d);c[s]={key:w,checksum:v,updatedAt:new Date().toISOString()},await t.writeIndex(c);},async patchCard(s,d,g){let c=await n(),w=c[s];if(!w||!await t.cardExists(w.key))throw new Error(`card "${s}" not found`);let v=await t.readCard(w.key);if(!v||typeof v!="object"||Array.isArray(v))throw new Error(`card "${s}" is not patchable`);let B=String(d||"").split(".").filter(Boolean),te=pe(v,B,g),O=await t.writeCard(w.key,te);c[s]={key:w.key,checksum:O,updatedAt:new Date().toISOString()},await t.writeIndex(c);},async removeCard(s){let d=await n(),g=d[s];g&&(await t.removeCard(g.key),delete d[s],await t.writeIndex(d));},readIndex(){return n()}}}function Ct(t,o){return a(t,o)}function ht(t,o,n){return {blob:t,kv:o,journal:n}}function h(t){return t!==void 0?{status:"success",data:t}:{status:"success"}}function p(t){return {status:"fail",error:t}}function P(t){return {status:"error",error:t instanceof Error?t.message:String(t)}}function x(){return new Date().toISOString()}function lt(t){let o=new TextEncoder().encode(t),n=Array.from(o,s=>String.fromCharCode(s)).join("");return btoa(n).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function st(t){let o=t.replace(/-/g,"+").replace(/_/g,"/"),n=o+"=".repeat((4-o.length%4)%4),s=atob(n),d=Uint8Array.from(s,g=>g.charCodeAt(0));return new TextDecoder().decode(d)}function ye(t){try{let o=JSON.parse(st(t));return typeof o?.t=="string"?{taskName:o.t}:null}catch{return null}}function nt(t){return lt(JSON.stringify(t))}function ot(t){try{let o=JSON.parse(st(t));return typeof o?.cbk=="string"&&typeof o?.cid=="string"&&typeof o?.b=="string"&&typeof o?.d=="string"?o:null}catch{return null}}function mt(t){return j(t,o,()=>({_sources:{}}))}function ft(t,o){return h$1(t,o)}function gt(t){return k(t)}function pt(t,o){return i(t,o)}function yt(t,o,n,s$1,d,g){return async c=>{let w=[],v=await n.cardStore.readCard(c.nodeId);if(!v)return "task-initiate-failure";let B=v.id,te=v.card_data??{},O=v.source_defs??[],re=O.filter(m=>m.optionalForCompletionGating!==true),b=await n.cardRuntimeStore.readRuntime(B),_=false,$=async()=>{_&&(await n.cardRuntimeStore.writeRuntime(B,b),_=false);},T=m=>p$2(b._sources[m]),D=(m,f)=>{b._sources[m]=p$2(f),_=true;},se=c.taskState?.executionCount??0;if(b._lastExecutionCount!==se&&(b._sources={},b._lastExecutionCount=se,_=true),c.update){let m=c.update.outputFile;if(m){let f=T(m);if(c.update.failure){let R=c.update.rqt??f.lastRequestedToken??f.queueRequestedToken;R&&D(m,s(f,R));}else {let R=c.update.rqt;if(!f.lastCompletedToken||R>f.lastCompletedToken){let r$1=typeof c.update.deliveryToken=="string"?c.update.deliveryToken:void 0,e=r$1?await n.fetchedSourcesStore.commitSourceData(B,m,r$1):false;D(m,e?r(f,R):s(f,R));}}await $();}}let J={};for(let m of O){if(!m.outputFile)continue;let f=await n.fetchedSourcesStore.readSourceData(B,m.outputFile);f!==null&&(J[m.bindTo]=f);}let H={};for(let[m,f]of Object.entries(c.state??{}))if(f!==null&&typeof f=="object"&&!Array.isArray(f)){let R=f[m];H[m]=R!==void 0?R:f;}else H[m]=f;let L={id:B,card_data:{...te},requires:H,source_defs:O,compute:v.compute};L._sourcesData=J,v.compute&&a$3.runSync(L,{sourcesData:J}),(d??(()=>{}))(B,L.computed_values??{});let ne=a$3.enrichSourcesSync(Array.isArray(v.source_defs)?v.source_defs:void 0,{card_data:v.card_data,requires:H}),F={...v,source_defs:Array.isArray(ne)?ne.map(m=>({...m,boardDir:typeof m.boardDir=="string"&&m.boardDir?m.boardDir:t.value})):ne},M=x(),G=c.update?void 0:M,W=re.filter(m=>{let f=m.outputFile;if(typeof f!="string"||!f)return true;let R=T(f);G&&(R={...R,queueRequestedToken:G},D(f,R));let r=R.queueRequestedToken??R.lastRequestedToken??M;return q$1(R,r)==="dispatch"});if(await $(),W.length>0){let m=false,f=M;for(let R of W){let r=R.outputFile;if(typeof r!="string"||!r)continue;let e=T(r),u=e.queueRequestedToken??M;D(r,{...e,lastRequestedToken:u}),f=u,m=true;}return m&&await $(),m&&(w.push({taskKind:"source-fetch",payload:{boardRef:a$1(t),enrichedCard:F,callbackToken:c.callbackToken,rqt:f}}),await n.executionRequestStore.appendEntries(o,w)),"task-initiated"}if(re.some(m=>{let f=m.outputFile;if(typeof f!="string"||!f)return false;let R=T(f),r=R.queueRequestedToken??R.lastRequestedToken??M;return q$1(R,r)==="in-flight"}))return "task-initiated";let Re=v.provides??[],oe={};for(let{bindTo:m,ref:f}of Re)oe[m]=a$3.resolve(L,f);return (g??(()=>{}))(oe),O.filter(m=>{if(m.optionalForCompletionGating!==true)return false;let f=T(m.outputFile);return !f.lastRequestedToken||!f.lastCompletedToken?true:f.lastCompletedToken<=f.lastRequestedToken}).length>0&&w.push({taskKind:"source-fetch",payload:{boardRef:a$1(t),enrichedCard:F,callbackToken:c.callbackToken,rqt:M}}),s$1(c.nodeId,oe),w.length>0&&await n.executionRequestStore.appendEntries(o,w),"task-initiated"}}function _t(t$1,o,n$1={}){d(o.callbackTransport,"createAsyncBoardLiveCardsPublic");let s=o.callbackTransport,d$1=o.warn??(()=>{}),g=a$1(t$1),c$1=null,w$1=n$1.boardRuntimeStoreRef,v$1=n$1.scratchStoreRef,B=n$1.taskExecutorRef,te=n$1.chatHandlerFlow;function O(){if(!w$1)throw new Error(`Board at ${t$1.value} has no board runtime store configured. Pass boardRuntimeStoreRef at construction or init.`);return w$1}function re(r){if(r.length!==0)try{return Promise.resolve(o.publishBoardChangeNotifications?.(r)).catch(e=>{d$1(`[async-board-live-cards-public] publishBoardChangeNotifications failed: ${e instanceof Error?e.message:String(e)}`);})}catch(e){d$1(`[async-board-live-cards-public] publishBoardChangeNotifications failed: ${e instanceof Error?e.message:String(e)}`);return}}let b$3=()=>b$1(o.kvStorageForRef(O())),_=t$1.value,$=()=>b$2(a(()=>o.kvStorageForRef(O()),o.hashFn),"v1"),T=async()=>{let r=await b$3().readOutputsStoreRef();if(!r)throw new Error(`Board at ${t$1.value} has no outputs store configured.`);return gt(o.kvStorageForRef(r))},D=async()=>{let r=await b$3().readCardStoreRef();if(!r)throw new Error(`Board at ${t$1.value} has no card store configured.`);let e=o.kvStorageForRef(r);return rt(tt(et(e),o.hashFn),d$1)};async function se(){return !!(await $().readSnapshot(_)).values[n]}async function J(){let r=await $().readSnapshot(_);if(!r.values[n])throw new Error(`Board not initialized at ${t$1.value}`);return w(r.values)}async function H(r,e){let u=await $().commitSnapshot(_,{schemaVersion:"v1",expectedVersion:e,deleteKeys:[],shallowMerge:v(r)});if(!u.ok)throw new Error(`Snapshot commit failed (version mismatch): expected=${e??"null"} current=${u.currentVersion??"null"}`)}let L=()=>c(o.journalStorageForRef(O()));async function ne(){return B??await b$3().readTaskExecutorRef()}async function F(r){await L().appendEvent(r);}async function M(){let r=await b$3().readFetchedSourcesStoreRef();if(!r)throw new Error(`Board at ${t$1.value} has no fetched sources store configured. Run: init --fetched-sources-store-ref <b64-ref>`);return r}async function G(){return o.blobStorageForRef(await M())}async function W(){return ft(await G(),r=>o.resolveBlob(r))}async function ke(r){let e=(await G()).keyRef?.(r);if(!e)throw new Error("configured fetched-sources store does not support keyRef");let u=await Promise.resolve(e);return a$1(u)}async function Re(){let r=pt(o.kvStorageForRef(O()),async(i,l)=>{let S=i.payload,I=(S.enrichedCard??{}).id??S.cardId??"unknown";await F({type:"task-failed",taskName:I,error:l,timestamp:x()});}),e=mt(o.kvStorageForRef(O())),u=await G(),a=await W(),k=await D(),C=await T(),A=new Map,y=new Map,z=[],Q=[],V=[],U=new Map,Y=new Set,Se={async readRuntime(i){return A.get(i)??await e.readRuntime(i)},async writeRuntime(i,l){A.set(i,l),Ce[i]=l;}},at={async readSourceData(i,l){let S=`${i}/${l}`;return y.has(S)?y.get(S):await a.readSourceData(i,l)},ingestSourceDataStaged(i,l,S,E){return a.ingestSourceDataStaged(i,l,S,E)},async commitSourceData(i,l,S){let E=`${i}/.staged/${S}/${l}`,I=await u.read(E);if(I==null){let j=await Promise.resolve(u.keyRef?.(E));j&&(I=await o.resolveBlob(j));}if(I==null)return false;let K=`${i}/${l}`,Z=I.trim();try{y.set(K,JSON.parse(Z));}catch{y.set(K,Z);}return z.push({cardId:i,outputFile:l,deliveryToken:S}),true},async hasSource(i,l){let S=`${i}/${l}`;return y.has(S)||await a.hasSource(i,l)},async listSources(i){let l=await a.listSources(i),S=[...y.keys()].filter(E=>E.startsWith(`${i}/`)).map(E=>E.slice(`${i}/`.length));return [...new Set([...l,...S])]}},we=await J(),it=q(we.graph),Ce={...we.runtimeByCardId},{events:ut,newCursor:he}=await L().readEntriesAfterCursor(we.lastDrainedJournalId),ae=ut,ie=u$1(it,{handlers:{"card-handler":yt(t$1,he,{cardStore:k,cardRuntimeStore:Se,fetchedSourcesStore:at,executionRequestStore:r},(i,l)=>{ae.push({type:"task-completed",taskName:i,data:l,timestamp:x()});},(i,l)=>{Q.push({cardId:i,values:l});},i=>{V.push(i);})},onNodeRemoved:i=>{U.delete(i),A.delete(i),delete Ce[i],Y.add(i);}});for(;ae.length>0;){let i=ae;ae=[];for(let l of i)if(l.type==="task-restart"){let S=await k.readCard(l.taskName);S&&U.set(l.taskName,S);}ie.pushAll(i),await ie.waitForHandlers();}let Fe=ie.getState();await ie.dispose({wait:true}),await H({lastDrainedJournalId:he,graph:p$1(Fe),runtimeByCardId:Ce},(await $().readSnapshot(_)).version);for(let{cardId:i,values:l}of Q)await C.writeComputedValues(i,l);for(let i of V)await C.writeDataObjects(i);for(let[i,l]of A)await e.writeRuntime(i,l);for(let i of z)await a.commitSourceData(i.cardId,i.outputFile,i.deliveryToken);let qe=t(g,Fe);await C.writeStatusSnapshot(qe);let ee=[];for(let{cardId:i,values:l}of Q)ee.push({kind:"computed_values",cardId:i,values:l});for(let i of V)for(let[l,S]of Object.entries(i))ee.push({kind:"data_object",key:l,payload:S});for(let[i,l]of U)ee.push({kind:"card_refreshed",cardId:i,card:l});for(let i of Y)ee.push({kind:"card_removed",cardId:i});ee.push({kind:"status",status:qe}),await re(ee);let X=await ne();if(!X)return;let Te=o.supportsDirectSourceOutput?.(X)===true;await r.dispatchEntriesForJournalId(he,async i=>{if(i.taskKind!=="source-fetch"){d$1(`[async-process-accumulated-events] unknown taskKind "${i.taskKind}" \u2014 skipping`);return}let l=i.payload,S=l.enrichedCard?.id??"unknown",E=l.enrichedCard?.source_defs??[];if(X.howToRun==="queue-storage"&&Te){try{let I=await b$3().readQueueStoreRef();if(!I)throw new Error(`Board at ${t$1.value} has no queue store configured. Run: init --queue-store-ref <b64-ref>`);let K=o.queueStorageForRef(I,"task-executor"),Z=typeof X.extra?.boardId=="string"?X.extra.boardId:void 0,j=[];for(let N of E){if(!N.outputFile)continue;let ue=o.genId(),de=`${S}/.staged/${ue}/${N.outputFile}`,Oe=await Promise.resolve(u.keyRef?.(de));if(!Oe)continue;let Ee={ref:a$1(Oe),deliveryToken:ue,outputFile:N.outputFile,cardId:S},dt=nt({cbk:l.callbackToken,rg:t$1.value,br:a$1(t$1),cid:S,b:N.bindTo,d:N.outputFile,cs:void 0,rqt:l.rqt,dt:Ee.deliveryToken});j.push({...Z?{boardId:Z}:{},ref:X,args:{source_def:N,base_ref:a$1(t$1),callback:s.createCallback(dt),output:Ee}});}j.length>0&&await K.enqueueMany(j);}catch(I){await F({type:"task-failed",taskName:S,error:I instanceof Error?I.message:String(I),timestamp:x()});}return}for(let I of E){if(!I.outputFile)continue;let K;if(Te){let N=o.genId(),ue=`${S}/.staged/${N}/${I.outputFile}`,de=await Promise.resolve(u.keyRef?.(ue));de&&(K={ref:a$1(de),deliveryToken:N,outputFile:I.outputFile,cardId:S});}let Z=nt({cbk:l.callbackToken,rg:t$1.value,br:a$1(t$1),cid:S,b:I.bindTo,d:I.outputFile,cs:void 0,rqt:l.rqt,...K?{dt:K.deliveryToken}:{}}),j=await o.dispatchExecution(X,{source_def:I,base_ref:a$1(t$1),callback:s.createCallback(Z),...K?{output:K}:{}});j.dispatched||await F({type:"task-failed",taskName:S,error:j.error??"dispatch failed",timestamp:x()});}});}async function oe(){try{let r=async()=>{let u=await J(),{events:a}=await L().readEntriesAfterCursor(u.lastDrainedJournalId);a.length>0&&await m();},e=await Ye(o.lock,Re,r);return h({ran:e!==!1})}catch(r){return P(r)}}async function xe(){return c$1||(c$1=oe().finally(()=>{c$1=null;}),c$1)}async function m(){let r=await b$3().readQueueStoreRef();if(!r)throw new Error(`Board at ${t$1.value} has no queue store configured. Run: init --queue-store-ref <b64-ref>`);let e=o.queueStorageForRef(r,"process-accumulated");e.enqueueIfAbsent?await e.enqueueIfAbsent({boardRef:a$1(t$1)},`process-accumulated:${a$1(t$1)}`):await e.enqueue({boardRef:a$1(t$1)}),await o.requestProcessAccumulated?.();}async function f(){let r=await b$3().readQueueStoreRef();if(!r)throw new Error(`Board at ${t$1.value} has no queue store configured. Run: init --queue-store-ref <b64-ref>`);let e=o.queueStorageForRef(r,"process-accumulated");for(;;){let u=await e.lease({max:64,visibilityMs:1e3});if(u.length<=0)return;for(let a of u)await e.ack(a.id,a.leaseToken);if(u.length<64)return}}function R(){m();}return {async init(r){try{let e=r.params?.cardStoreRef;if(!e)return p("init requires params.cardStoreRef");if(w$1=r.params?.boardRuntimeStoreRef,!w$1)return p("init requires params.boardRuntimeStoreRef");let u$1=r.params?.outputsStoreRef;if(!u$1)return p("init requires params.outputsStoreRef");let a=r.params?.queueStoreRef;if(!a)return p("init requires params.queueStoreRef");let k=r.params?.fetchedSourcesStoreRef;if(!k)return p("init requires params.fetchedSourcesStoreRef");if(v$1=r.params?.scratchStoreRef,!v$1)return p("init requires params.scratchStoreRef");let C=r.params?.chatStoreRef;if(!C)return p("init requires params.chatStoreRef");let A=r.params?.artifactsStoreRef;if(!A)return p("init requires params.artifactsStoreRef");await se()||await H({lastDrainedJournalId:"",graph:p$1(a$2(u)),runtimeByCardId:{}},null);let y=b$3();return await y.writeBoardRuntimeStoreRef(w$1),await y.writeCardStoreRef(e),await y.writeOutputsStoreRef(u$1),await y.writeQueueStoreRef(a),await y.writeFetchedSourcesStoreRef(k),await y.writeChatStoreRef(C),await y.writeArtifactsStoreRef(A),await(await T()).writeStatusSnapshot(t(g,q((await J()).graph))),h()}catch(e){return P(e)}},async status(r){try{let e=await T(),u=await e.readStatusSnapshot();return u||(u=t(g,q((await J()).graph)),await e.writeStatusSnapshot(u)),h(u)}catch(e){return P(e)}},async getCardStoreRef(r){try{let e=await b$3().readCardStoreRef();return e?h({storeRef:e}):p(`Board at ${t$1.value} has no card store configured`)}catch(e){return P(e)}},async getBoardRuntimeStoreRef(r){try{return h({storeRef:w$1??null})}catch(e){return P(e)}},async getOutputsStoreRef(r){try{let e=await b$3().readOutputsStoreRef();return e?h({storeRef:e}):p(`Board at ${t$1.value} has no outputs store configured`)}catch(e){return P(e)}},async getScratchStoreRef(r){try{return h({storeRef:v$1??null})}catch(e){return P(e)}},async getChatStoreRef(r){try{return h({storeRef:await b$3().readChatStoreRef()})}catch(e){return P(e)}},async getArtifactsStoreRef(r){try{return h({storeRef:await b$3().readArtifactsStoreRef()})}catch(e){return P(e)}},async getFetchedSourcesStoreRef(r){try{return h({storeRef:await b$3().readFetchedSourcesStoreRef()})}catch(e){return P(e)}},async getConfig(r){try{let e=r.params?.key;if(!e)return p("getConfig requires params.key");let u=b$3(),a;switch(e){case "task-executor":a=B??null;break;case "chat-handler-flow":a=te??null;break;case "board-runtime-store-ref":a=await u.readBoardRuntimeStoreRef();break;case "card-store-ref":a=await u.readCardStoreRef();break;case "outputs-store-ref":a=await u.readOutputsStoreRef();break;case "scratch-store-ref":a=v$1??null;break;case "chat-store-ref":a=await u.readChatStoreRef();break;case "artifacts-store-ref":a=await u.readArtifactsStoreRef();break;case "fetched-sources-store-ref":a=await u.readFetchedSourcesStoreRef();break;default:return p(`getConfig: unknown key "${e}"`)}return h({value:a})}catch(e){return P(e)}},async getOutputsDataObject(r){try{let e=r.params?.key;return e?h(await(await T()).readDataObject(e)):p("getOutputsDataObject requires params.key")}catch(e){return P(e)}},async getAllOutputsDataObjects(r){try{return h(await(await T()).readAllDataObjects())}catch(e){return P(e)}},async getOutputsComputedValues(r){try{let e=r.params?.key;return e?h(await(await T()).readComputedValues(e)):p("getOutputsComputedValues requires params.key")}catch(e){return P(e)}},async getAllOutputsComputedValues(r){try{return h(await(await T()).readAllComputedValues())}catch(e){return P(e)}},async getOutputsFetchedSources(r){try{let e=r.params?.key;if(!e)return p("getOutputsFetchedSources requires params.key");let u=await(await W()).listSources(e),a={};for(let k of u)a[k]=await ke(`${e}/${k}`);return h(a)}catch(e){return P(e)}},async getAllOutputsFetchedSources(r){try{let e=await W(),u=await(await G()).listKeys(),a=new Set;for(let C of u){let A=C.indexOf("/");A>0&&!C.includes("/.staged/")&&a.add(C.slice(0,A));}let k={};for(let C of a){let A=await e.listSources(C);if(A.length!==0){k[C]={};for(let y of A)k[C][y]=await ke(`${C}/${y}`);}}return h(k)}catch(e){return P(e)}},async addCardFiles(r){try{let e=r.params?.cardId;if(!e)return p("addCardFiles requires params.cardId");let u=await D(),a=await u.readCard(e);if(!a)return p(`card "${e}" not found`);let k=r.body,C=Array.isArray(k)?k:k&&typeof k=="object"&&Array.isArray(k.files)?k.files:k!=null?[k]:null;if(!C||C.length===0)return p("addCardFiles requires a file metadata object, array, or body.files array");let A=a.card_data&&typeof a.card_data=="object"&&!Array.isArray(a.card_data)?a.card_data:{},y=Array.isArray(A.files)?A.files:[],z=[...y,...C],Q=C.map((U,Y)=>({idx:y.length+Y,entry:U}));await u.writeCard(e,{...a,card_data:{...A,files:z}});let V=await this.cardRefreshedNotify({params:{cardId:e}});return V.status!=="success"?V:h({cardId:e,files_added:Q,notified:!0})}catch(e){return P(e)}},async cardRefreshedNotify(r){try{let e=r.params?.cardId;if(!e)return p("cardRefreshedNotify requires params.cardId");let u=await(await D()).readCard(e);return u?(await re([{kind:"card_refreshed",cardId:e,card:u}]),h({cardId:e,notified:!0})):p(`Card "${e}" not found in board at ${t$1.value}`)}catch(e){return P(e)}},async removeCard(r){try{let e=r.params?.id;if(!e)return p("removeCard requires params.id");try{await o.kvStorage("card-upsert").delete(e);}catch{}return await F({type:"task-removal",taskName:e,timestamp:x()}),R(),h()}catch(e){return P(e)}},async retrigger(r){try{let e=r.params?.id;return e?(await F({type:"task-restart",taskName:e,timestamp:x()}),R(),h()):p("retrigger requires params.id")}catch(e){return P(e)}},async processAccumulatedEvents(r){return await f(),xe()},async upsertCard(r){try{let e=r.params?.cardId,u=r.params?.all,a=!!r.params?.restart;if(!e&&!u)return p("upsertCard requires --card-id <id> or --all");let k=await D(),C=u?(await k.readAllCards()).map(y=>y.id):[e];for(let y of C)if(!await k.readCard(y))return p(`Card "${y}" not found in board at ${t$1.value}`);let A=o.kvStorage("card-upsert");for(let y of C){let z=await k.readCard(y);if(!z)continue;let Q=x$1(z),V=o.hashFn(Q),U=await A.read(y),Y=U?.taskConfigHash!==V;if(!(!Y&&!a)){if(Y){let Se=U?.blobRef??await k.readCardKey(y)??y;await F({type:"task-upsert",taskName:y,taskConfig:Q,timestamp:x()}),await A.write(y,{blobRef:Se,taskConfigHash:V,updatedAt:x()});}a&&await F({type:"task-restart",taskName:y,timestamp:x()});}}return R(),h()}catch(e){return P(e)}},async taskFailed(r){try{let e=r.params?.token;if(!e)return p("taskFailed requires params.token");let u=r.params?.error??"unknown error",a=ye(e);return a?(await F({type:"task-failed",taskName:a.taskName,error:u,timestamp:x()}),R(),h()):p("Invalid callback token")}catch(e){return P(e)}},async taskProgress(r){try{let e=r.params?.token;if(!e)return p("taskProgress requires params.token");let u=(r.body??{}).update??{},a=ye(e);return a?(await F({type:"task-progress",taskName:a.taskName,update:u,timestamp:x()}),R(),h()):p("Invalid callback token")}catch(e){return P(e)}},async sourceDataFetched(r){try{let e=r.params?.token,u=r.params?.ref;if(!e)return p("sourceDataFetched requires params.token");if(!u)return p("sourceDataFetched requires params.ref");let a=ot(e);if(!a)return p("Invalid source token");let k=await W(),C=a.dt||o.genId();a.dt||await k.ingestSourceDataStaged(a.cid,a.d,b(u),C);let A=ye(a.cbk);return A?(await F({type:"task-progress",taskName:A.taskName,update:{bindTo:a.b,outputFile:a.d,fetchedAt:x(),deliveryToken:C,sourceChecksum:a.cs,rqt:a.rqt},timestamp:x()}),R(),h()):p("Invalid callback token embedded in source token")}catch(e){return P(e)}},async sourceDataFetchFailure(r){try{let e=r.params?.token,u=r.params?.reason??"unknown";if(!e)return p("sourceDataFetchFailure requires params.token");let a=ot(e);if(!a)return p("Invalid source token");let k=ye(a.cbk);return k?(await F({type:"task-progress",taskName:k.taskName,update:{bindTo:a.b,outputFile:a.d,failure:!0,reason:u,sourceChecksum:a.cs,rqt:a.rqt},timestamp:x()}),R(),h()):p("Invalid callback token embedded in source token")}catch(e){return P(e)}}}}
2
+ export{Ye as a,et as b,tt as c,rt as d,Ct as e,ht as f,_t as g};//# sourceMappingURL=chunk-7QQFDYBM.js.map
3
+ //# sourceMappingURL=chunk-7QQFDYBM.js.map
@@ -0,0 +1,2 @@
1
+ 'use strict';var chunkIXZG74EW_cjs=require('./chunk-IXZG74EW.cjs');function v(s,i){if(s?.status==="success")return Object.prototype.hasOwnProperty.call(s,"data")?s.data:void 0;throw s?.status==="fail"||s?.status==="error"?new Error(s.error||`${i} failed`):new Error(`${i} returned an unexpected response`)}function H(s,i){if(s?.status==="success"&&Object.prototype.hasOwnProperty.call(s,"data"))return s.data;throw s?.status==="success"?new Error(`${i} returned success without data`):s?.status==="fail"||s?.status==="error"?new Error(s.error||`${i} failed`):new Error(`${i} returned an unexpected response`)}function a(s){return s&&typeof s=="object"&&!Array.isArray(s)?s:{}}function b(s){return Array.isArray(s)?s:[]}function z(s,i){if(typeof i!="string"||i.length===0)return;let c=s,u=i;u.startsWith("fetched_sources.")&&(c=a(s).fetched_sources,u=u.slice(16));for(let f of u.split(".")){if(c==null||typeof c!="object")return;c=c[f];}return c}function V(s,i){let c=a(s.view),u=b(c.elements);return {layout:c.layout,features:c.features,elements:u.map((f,_)=>{let I=a(f),k=a(I.data),R=typeof I.visible=="string"?!!z(i,I.visible):true,M=typeof k.bind=="string"?k.bind:void 0,P=typeof k.maxRows=="number"?k.maxRows:void 0,B=M?z(i,M):void 0,F={id:typeof I.id=="string"&&I.id?I.id:`element-${_}`,kind:I.kind,label:I.label,visible:R};return B!==void 0&&(F.resolved=Array.isArray(B)&&typeof P=="number"?B.slice(0,P):B),F})}}function G(s,i){let c=typeof s.id=="string"&&s.id?s.id:"card",u=b(s.provides),f=u.length>0?u:[{bindTo:c,ref:"card_data"}],_={};for(let I of f){let k=a(I),R=typeof k.bindTo=="string"?k.bindTo:"",M=typeof k.ref=="string"?k.ref:"";if(!R||!M)continue;let P=z(i,M);P!==void 0&&(_[R]=P);}return _}function he(s){if(typeof s!="string"||!s.trim())return null;let i=/^(file uploaded|AI generated|AI geneterated):\s*.*?#(\d+)\s*$/i.exec(s.trim());if(!i)return null;let c=Number.parseInt(i[2],10);return !Number.isInteger(c)||c<0?null:c}function ke(s){return {"card-content":s}}function E(s){let i={...s};return delete i.__private,i}function D(s,i){return Object.prototype.hasOwnProperty.call(s,i)}function Re(s){return typeof structuredClone=="function"?structuredClone(s):JSON.parse(JSON.stringify(s))}function ve(s,i){let c=Re(s);if(!i||Object.keys(i).length===0)return c;function u(f,_,I){let k=String(_||"").split(".").filter(Boolean);if(!k.length)return;let R=f;for(let M=0;M<k.length-1;M+=1){let P=k[M];(!R[P]||typeof R[P]!="object")&&(R[P]={}),R=R[P];}R[k[k.length-1]]=I;}if(i.fieldValues!==void 0&&i.fieldValues!==null){let f=null,_=a(c.view),I=b(_.elements);for(let k of I){let R=a(a(k).data);if(typeof R.writeTo=="string"&&R.writeTo){f=R.writeTo;break}}return f?u(c,f,i.fieldValues):typeof i.fieldValues=="object"&&!Array.isArray(i.fieldValues)&&(c.card_data={...a(c.card_data),...i.fieldValues}),c}if(Array.isArray(i._stagedFiles)&&i._stagedFiles.length>0)return c;for(let[f,_]of Object.entries(i))f!=="_stagedFiles"&&(_!==null&&typeof _=="object"&&!Array.isArray(_)&&c[f]!==null&&typeof c[f]=="object"&&!Array.isArray(c[f])?c[f]={...c[f],..._}:c[f]=_);return c}function Q(s){return a(s.__private).visible_controlplane_only===true}async function T(s,i){let c=await U(s.get({params:{id:i}}),"cardStore.get"),u=Array.isArray(c?.cards)?c.cards:[];if(u.length===0)throw new Error(`Card "${i}" not found`);return u[0]}function Ae(s){let{board:i,nonCore:c,cardStore:u,chatStore:f,processAccumulated:_,sourceFetchDone:I,sourceFetchFailed:k,uploadCardFile:R,buildFileDownloadUrl:M,readFetchedSourceJsonByRef:P}=s;function B(e,r){if(typeof e=="function")return e;throw new Error(`${r} is not configured for this MCP facade`)}async function F(){let e=await U(u.get({}),"cardStore.get");return Array.isArray(e.cards)?e.cards.map(r=>a(r)):[]}function X(e){if(Array.isArray(e.bytes))return new Uint8Array(e.bytes.map(r=>Math.max(0,Math.min(255,Number(r)||0))));if(typeof e.text=="string")return new TextEncoder().encode(e.text);if(typeof e.base64=="string"){let r=String(e.base64).replace(/-/g,"+").replace(/_/g,"/"),t=r+"=".repeat((4-r.length%4)%4),n=atob(t);return Uint8Array.from(n,o=>o.charCodeAt(0))}throw new Error("file entry requires bytes, text, or base64")}async function Y(){let e=a(await U(c.describeTaskExecutorCapabilities({}),"describeTaskExecutorCapabilities"));return {version:e.version,commonSourceFields:a(e.commonSourceDefFields),sourceKinds:a(e.sourceKinds)}}async function Z(){let e=a(await U(i.status({}),"status")),r=a(e.summary),t=b(e.cards);return {meta:a(e.meta),summary:{card_count:typeof r.card_count=="number"?r.card_count:0,completed:typeof r.completed=="number"?r.completed:0,eligible:typeof r.eligible=="number"?r.eligible:0,pending:typeof r.pending=="number"?r.pending:0,blocked:typeof r.blocked=="number"?r.blocked:0,in_progress:typeof r.in_progress=="number"?r.in_progress:0,failed:typeof r.failed=="number"?r.failed:0,unresolved:typeof r.unresolved=="number"?r.unresolved:0},cards:t.map(n=>{let o=a(n);return {"card-id":typeof o.name=="string"?o.name:null,status:o.status??null,error:o.error??null,requires:b(o.requires),requires_satisfied:b(o.requires_satisfied),requires_missing:b(o.requires_missing),provides_declared:b(o.provides_declared),provides_runtime:b(o.provides_runtime)}})}}async function ee(e){let r=String(e.cardId||"").trim();if(!r)throw new Error("inspectCardDefinitionAndRuntime requires cardId");let t=a(await U(i.status({}),"status")),o=b(t.cards).map(a).find(p=>p.name===r);if(!o)throw new Error(`card "${r}" not found in board status`);let d=a(await T(u,r));if(Q(d))throw Object.assign(new Error(`card "${r}" not found`),{statusCode:404});let m=E(d),g=b(o.requires_satisfied).filter(p=>typeof p=="string"&&!!p),w=b(o.provides_runtime).filter(p=>typeof p=="string"&&!!p),h=Object.fromEntries(await Promise.all(g.map(async p=>[p,await U(i.getOutputsDataObject({params:{key:p}}),`getOutputsDataObject(${p})`)]))),A=Object.fromEntries(await Promise.all(w.map(async p=>[p,await U(i.getOutputsDataObject({params:{key:p}}),`getOutputsDataObject(${p})`)]))),C=a(await U(i.getOutputsComputedValues({params:{key:r}}),"getOutputsComputedValues")),l=await U(i.getOutputsFetchedSources({params:{key:r}}),"getOutputsFetchedSources"),S=b(d.source_defs).map(a),y={};for(let p of S)typeof p.bindTo=="string"&&typeof p.outputFile=="string"&&(y[p.outputFile]=p.bindTo);let x={};for(let[p,O]of Object.entries(l)){let q=y[p]??p;if(!P||typeof O!="string"){x[q]=null;continue}try{x[q]=P({cardId:r,ref:O});}catch{x[q]=null;}}let L={card_data:a(d.card_data),requires:h,fetched_sources:x,computed_values:C};return {cardId:r,card_status_in_board:o,card_definition_and_static_data:m,refs_for_fetched_source_files:l,runtime_data:{requires:h,provides:A,computed_values:C,rendered_view:V(d,L)}}}async function re(e){let r=String(e.cardId||"").trim();if(!r)throw new Error("inspectChatMessagesOnCards requires cardId");let t=typeof e.turnId=="string"?e.turnId:"",n=e.allTurns===true,o=typeof e.tailTurnsBeforeId=="string"?e.tailTurnsBeforeId:"",d=n?void 0:e.lastUserTurns??(t?void 0:1),m=e.tail,g={...d===void 0?{}:{tailTurns:d},...t?{turnId:t}:{},...n?{allTurns:true}:{},...o?{tailTurnsBeforeId:o}:{}},w=Object.keys(g).length>0?{params:{cardId:r},body:g}:{params:{cardId:r}},h=v(await f.readAll(w),"chatStore.readAll"),A=a(await T(u,r)),C=b(a(A.card_data).files).map((y,x)=>({idx:x,stored_name:a(y).stored_name})).filter(y=>typeof y.stored_name=="string"&&y.stored_name.length>0),S=(Array.isArray(h.records)?h.records:[]).map(y=>{let L=a(y.payload),p={...y},O=typeof y?.role=="string"?y.role:typeof L.role=="string"?String(L.role):"",q=typeof y?.text=="string"?y.text:typeof L.text=="string"?String(L.text):"";if(O==="system"){let N=he(q);if(N!==null&&C.some(j=>j.idx===N)){let j=`Retrieve using inspect-file-contents --card-id ${r} --file-idx ${N}`;p.retrieval_hint=j,Object.keys(L).length>0&&typeof y.role!="string"&&(p.payload={...L,retrieval_hint:j});}}return p});return {cardId:r,messages:typeof m=="number"&&m>=0?S.slice(-m):S}}async function te(e){let r=String(e.cardId||"").trim(),t=Number(e.fileIdx);if(!r)throw new Error("inspectFileContents requires cardId");if(!Number.isInteger(t)||t<0)throw new Error("inspectFileContents requires fileIdx to be a non-negative integer");let n=a(await T(u,r)),o=b(a(n.card_data).files).map(a);if(t>=o.length)throw new Error(`attachment index ${t} is out of range for card "${r}"`);let d=o[t],m=typeof d.stored_name=="string"?d.stored_name:null;return {cardId:r,fileIdx:t,downloadUrl:M({cardId:r,fileIdx:t,storedName:m}),...typeof d.name=="string"?{name:d.name}:{},...typeof d.stored_name=="string"?{stored_name:d.stored_name}:{},...typeof d.mime_type=="string"?{mime_type:d.mime_type}:{},...typeof d.size=="number"?{size:d.size}:{},...typeof d.uploaded_at=="string"?{uploaded_at:d.uploaded_at}:{}}}async function $(e){return await c.validateCardPreflight({body:ke(e.candidateCardContent)})}function ne(e){if(!e.mockRequires||typeof e.mockRequires!="object"||Array.isArray(e.mockRequires))throw new Error("preflightMaterializeCandidateCard requires mockRequires");if(!e.mockFetchedSources||typeof e.mockFetchedSources!="object"||Array.isArray(e.mockFetchedSources))throw new Error("preflightMaterializeCandidateCard requires mockFetchedSources");let r=c.evalCardCompute({body:{"card-content":e.candidateCardContent,"mock-requires":e.mockRequires,"mock-fetched-sources":e.mockFetchedSources}});if(r.status!=="success")return r;let t=a(H(r,"evalCardCompute")),n=a(e.candidateCardContent),o={card_data:a(n.card_data),requires:a(e.mockRequires),fetched_sources:a(e.mockFetchedSources),computed_values:a(t.computed_values)};return {status:"success",data:{cardId:typeof t.cardId=="string"?t.cardId:typeof n.id=="string"?n.id:"(unknown)",ok:t.ok===true,computed_values:a(t.computed_values),errors:b(t.errors).map(d=>{let m=a(d);return {bindTo:typeof m.bindTo=="string"?m.bindTo:"",error:typeof m.error=="string"?m.error:""}}),provides_outputs:G(n,o),rendered_view:V(n,o)}}}async function ae(e){return await c.probeSourcePreflight({params:{sourceIdx:e.sourceIdx},body:{"card-content":e.candidateCardContent,"mock-projections":e.mockProjections}})}async function oe(e){return await c.runSourcePreflight({params:{sourceIdx:e.sourceIdx},body:{"card-content":e.candidateCardContent,"mock-projections":e.mockProjections}})}async function se(e){let r=String(e.cardId||"").trim();if(!r)throw new Error("preflightRunSingleSourceInLiveCard requires cardId");if(!e.mockRequires||typeof e.mockRequires!="object"||Array.isArray(e.mockRequires))throw new Error("preflightRunSingleSourceInLiveCard requires mockRequires");let t=a(await T(u,r)),n=b(t.source_defs).filter(d=>!!d&&typeof d=="object"&&!Array.isArray(d)),o={};if(e.sourceIdx>=0&&e.sourceIdx<n.length){let d=n[e.sourceIdx],m=chunkIXZG74EW_cjs.a.enrichSourcesSync([d],{card_data:a(t.card_data),requires:e.mockRequires});Array.isArray(m)&&m.length>0&&(o=a(m[0]._projections));}return await c.runSourcePreflight({params:{sourceIdx:e.sourceIdx},body:{"card-content":t,"mock-requires":e.mockRequires,"mock-projections":o}})}async function ie(e){let r=a(await U(c.simulateCardCycle({body:{"card-content":e.candidateCardContent,"mock-requires":e.mockRequires}}),"simulateCardCycle")),t=a(e.candidateCardContent),n=a(r.validation),o=b(r.source_probes),d=b(r.projection_errors),m=a(r.fetched_sources),g=b(r.compute_errors),w=a(r.computed_values),h={card_data:a(t.card_data),requires:e.mockRequires,fetched_sources:m,computed_values:w},A=[];for(let C of b(n.issues))typeof C=="string"&&C&&A.push(C);for(let C of o){let l=a(C),S=typeof l.bindTo=="string"?l.bindTo:"source",y=typeof l.error=="string"?l.error:"";y&&A.push(`${S}: ${y}`);}for(let C of d){let l=a(C),S=typeof l.bindTo=="string"?l.bindTo:"source",y=typeof l.key=="string"?l.key:"projection",x=typeof l.error=="string"?l.error:"projection failed";A.push(`${S}.${y}: ${x}`);}for(let C of g){let l=a(C),S=typeof l.bindTo=="string"?l.bindTo:"compute",y=typeof l.error=="string"?l.error:"compute failed";A.push(`${S}: ${y}`);}return {status:"success",data:{cardId:typeof r.cardId=="string"?r.cardId:"(unknown)",ok:r.ok===true,issues:A,provides_outputs:G(t,h),rendered_view:V(t,h)}}}async function K(e){let r=String(e.cardId||"").trim();if(!r)throw new Error("manageReadCard requires cardId");let t=await U(u.get({params:{id:r}}),"cardStore.get"),n=Array.isArray(t.cards)?t.cards.map(a):[];if(n.some(Q))throw Object.assign(new Error(`Card "${r}" not found`),{statusCode:404});return n.map(o=>E(o))}async function W(e){let r=await Promise.all(b(e.files).map(async t=>{let n=a(t),o=String(n.file_name??n.fileName??n.name??"").trim(),d=String(n.content_type??n.contentType??"application/octet-stream");if(!o)throw new Error("file entry requires file_name");return await R({cardId:e.cardId,fileName:o,contentType:d,bytes:X(n),suppressChatRecordWrite:true})}));for(let[t,n]of r.entries()){let o=a(n.file),d=typeof n.file_idx=="number"&&Number.isInteger(n.file_idx)&&n.file_idx>=0?n.file_idx:t,m=e.role==="assistant"?`AI generated: ${String(o.name||"")} as ${String(o.stored_name||"")} #${d}`:`file uploaded: ${String(o.name||"")} as ${String(o.stored_name||"")} #${d}`;v(await f.append({params:{cardId:e.cardId},body:{role:"system",text:m,files:[],turn:e.turn}}),"chatStore.append(system attachment message)");}return r.map(t=>t.file)}async function de(e){let r=String(e.cardId||"").trim(),t=String(e.role||"user").trim()||"user",n=typeof e.turn=="string"?e.turn:"";if(!r)throw new Error("manageAddChatAttachment requires cardId");let o=await W({cardId:r,role:t,turn:n,files:e.files});return {status:"success",data:{cardId:r,turn:n,files:o}}}async function ce(e){let r=String(e.cardId||"").trim(),t=String(e.role||"").trim(),n=typeof e.text=="string"?e.text:"",o=typeof e.turn=="string"?e.turn:"";if(!r)throw new Error("manageAddChatEntryAndAnyAttachments requires cardId");if(!t)throw new Error("manageAddChatEntryAndAnyAttachments requires role");if(t==="assistant"&&o){let g=v(await f.readAll({params:{cardId:r},body:{turnId:o}}),"chatStore.readAll(existing turn messages)"),w=Array.isArray(g.records)?g.records.find(h=>h.role==="assistant"&&String(h.turn||"")===o):void 0;if(w)return {status:"success",data:{cardId:r,id:String(w.id),role:t,turn:o,files:Array.isArray(w.files)?w.files:[]}}}let d=await W({cardId:r,role:t,turn:o,files:e.files}),m=v(await f.append({params:{cardId:r},body:{role:t,text:n,files:d,turn:o}}),"chatStore.append");return {status:"success",data:{cardId:r,id:String(m.id),role:t,turn:o,files:d}}}async function ue(e){let r=String(e.cardId||"").trim(),t=a(e.patch);if(!r)throw new Error("managePatchCard requires cardId");let n=await K({cardId:r}),o=a(n[0]),m={...ve(o,t),...D(o,"meta")?{meta:o.meta}:{},...D(o,"__private")?{__private:o.__private}:{}},g=await u.set({body:m});v(g,"cardStore.set");let w;try{w=await i.upsertCard({params:{cardId:r,restart:!0}}),v(w,"upsertCard");}catch(A){try{await u.set({body:o});}catch{}throw A}let h=null;try{h=await i.cardRefreshedNotify({params:{cardId:r}}),v(h,"cardRefreshedNotify");}catch{h=null;}return {status:"success",data:{validation:null,card_saved:null,board_result:w,refresh_notify:h}}}async function le(e){let r=String(e.cardId||"").trim(),t=a(e.candidateCardContent),n=E(t);if(!r)throw new Error("manageUpsertCard requires cardId");if(typeof n.id!="string"||!n.id.trim())throw new Error("candidateCardContent.id must be a non-empty string");if(n.id!==r)throw new Error(`candidateCardContent.id must match cardId (${r})`);let o=await $({candidateCardContent:n}),d=a(o),m=a(d.data);if(d.status!=="success"||m.isValid!==true)return {status:"fail",step:"validate",validation:o};let g=null;try{g=await T(u,r);}catch{g=null;}let w=g?a(g):null,h={...n,...w&&D(w,"meta")?{meta:w.meta}:{},...w&&D(w,"__private")?{__private:w.__private}:{}},A=await u.set({body:h});v(A,"cardStore.set");let C;try{C=await i.upsertCard({params:{cardId:r,restart:!0}}),v(C,"upsertCard");}catch(S){try{g&&await u.set({body:g});}catch{}throw S}let l=null;try{l=await i.cardRefreshedNotify({params:{cardId:r}}),v(l,"cardRefreshedNotify");}catch{l=null;}return {status:"success",data:{validation:o,card_saved:null,board_result:C,refresh_notify:l}}}async function me(e){let r=String(e.cardId||"").trim();if(!r)throw new Error("manageRemoveCard requires cardId");let t=await i.removeCard({params:{id:r}});v(t,"removeCard");let n=await u.del({params:{id:r}});return v(n,"cardStore.del"),{status:"success",data:{board_result:t,store_result:n}}}async function pe(e){let r=String(e.cardId||"").trim();if(!r)throw new Error("adminReadCard requires cardId");let t=await U(u.get({params:{id:r}}),"cardStore.get");return Array.isArray(t.cards)?t.cards.map(n=>a(n)):[]}async function fe(e){let r=String(e.cardId||"").trim(),t=a(e.candidateCardContent),n=E(t);if(!r)throw new Error("adminUpsertCard requires cardId");if(typeof n.id!="string"||!n.id.trim())throw new Error("candidateCardContent.id must be a non-empty string");if(n.id!==r)throw new Error(`candidateCardContent.id must match cardId (${r})`);let o=await $({candidateCardContent:n}),d=a(o),m=a(d.data);if(d.status!=="success"||m.isValid!==true)return {status:"fail",step:"validate",validation:o};let g=null;try{g=await T(u,r);}catch{g=null;}let w=g?a(a(g).__private):{},h={...n,__private:{...w,visible_controlplane_only:true}},A=await u.set({body:h});v(A,"cardStore.set");let C;try{C=await i.upsertCard({params:{cardId:r,restart:!0}}),v(C,"upsertCard");}catch(S){try{g&&await u.set({body:g});}catch{}throw S}let l=null;try{l=await i.cardRefreshedNotify({params:{cardId:r}}),v(l,"cardRefreshedNotify");}catch{l=null;}return {status:"success",data:{validation:o,card_saved:null,board_result:C,refresh_notify:l}}}async function ge(e){let r=String(e.cardId||"").trim();if(!r)throw new Error("getChatProcessing requires cardId");let t=H(await f.isProcessing({params:{cardId:r}}),"chatStore.isProcessing");return {cardId:r,active:!!t.active}}async function we(e){let r=String(e.cardId||"").trim();if(!r)throw new Error("setChatProcessing requires cardId");if(typeof e.active!="boolean")throw new Error("setChatProcessing requires boolean active");return v(await f.setProcessing({params:{cardId:r},body:{active:e.active}}),"chatStore.setProcessing"),{cardId:r,active:e.active}}async function Ce(){let e=await B(_,"webhook.process-accumulated")();return e?.status==="fail"||e?.status==="error"?e:{status:"success",data:{runtime_result:Object.prototype.hasOwnProperty.call(e??{},"data")?e.data??null:null}}}async function ye(e){let r=String(e.token||"").trim(),t=String(e.ref||"").trim();if(!r)throw new Error("webhookSourceFetchDone requires token");if(!t)throw new Error("webhookSourceFetchDone requires ref");let n=await B(I,"webhook.source-fetch-done")({token:r,ref:t});return n?.status==="fail"||n?.status==="error"?n:{status:"success",data:{token:r,ref:t,runtime_result:Object.prototype.hasOwnProperty.call(n??{},"data")?n.data??null:null}}}async function be(e){let r=String(e.token||"").trim(),t=String(e.reason||"").trim();if(!r)throw new Error("webhookSourceFetchFailed requires token");if(!t)throw new Error("webhookSourceFetchFailed requires reason");let n=await B(k,"webhook.source-fetch-failed")({token:r,reason:t});return n?.status==="fail"||n?.status==="error"?n:{status:"success",data:{token:r,reason:t,runtime_result:Object.prototype.hasOwnProperty.call(n??{},"data")?n.data??null:null}}}return {listRuntimeCards:F,discoverSourceKinds:Y,inspectBoardRuntimeStatus:Z,inspectCardDefinitionAndRuntime:ee,inspectChatMessagesOnCards:re,inspectFileContents:te,preflightValidateCandidateCardDefinition:$,preflightMaterializeCandidateCard:ne,preflightProbeSingleSourceInCandidateCard:ae,preflightRunSingleSourceInCandidateCard:oe,preflightRunSingleSourceInLiveCard:se,preflightRunOneCycleWithCandidateCard:ie,manageReadCard:K,manageAddChatAttachment:de,manageAddChatEntryAndAnyAttachments:ce,managePatchCard:ue,manageUpsertCard:le,manageRemoveCard:me,adminReadCard:pe,adminUpsertCard:fe,getChatProcessing:ge,setChatProcessing:we,webhookProcessAccumulated:Ce,webhookSourceFetchDone:ye,webhookSourceFetchFailed:be}}async function U(s,i){return v(await s,i)}exports.a=Ae;//# sourceMappingURL=chunk-7QZ267XP.cjs.map
2
+ //# sourceMappingURL=chunk-7QZ267XP.cjs.map
@@ -0,0 +1,7 @@
1
+ import {c}from'./chunk-FOFGEABN.js';function D(h){let o=new Map,a=new Map,d=new Map,k=0,b=null;function p(e){let t=JSON.stringify(e);return k++,`id: ${k}
2
+ data: ${t}
3
+
4
+ `}function y(e){let t=e;try{t.flushHeaders?.();}catch{}try{t.flush?.();}catch{}try{t.socket?.setNoDelay?.(!0);}catch{}try{t.socket?.uncork?.();}catch{}}function I(e,t){let n=o.get(e);if(n&&!(t&&n.res!==t)){o.delete(e),C();try{h.onSseClientDisconnected?.(e);}catch{}try{n.res.end();}catch{}}}function P(e,t,n){let s=o.get(e);s&&I(e,s.res),o.set(e,{res:t,subscribedChatCardIds:n??new Set});}function f(e,t){let n=o.get(e);if(!n)return;let s=p(t);try{n.res.write(s),y(n.res);}catch{I(e,n.res);}}function c(){let e=new Set;for(let t of o.values())for(let n of t.subscribedChatCardIds)e.add(n);return Array.from(e)}async function l(e){let t=a.has(e)?a.get(e):null,{cursor:n}=await h.readChatAfter(e,t),s=await h.getChatProcessing(e),r=s!==(d.get(e)??false),w=n!==t;return w&&a.set(e,n),d.set(e,s),w||r}async function u(e,t){let n=await h.readChatRecords(e),s=Date.now();return {kind:"card_chats",cardId:e,sentAt:new Date(s).toISOString(),sentAtMs:s,messages:n.map(r=>({role:String(r.role||"system"),text:String(r.text||""),files:Array.isArray(r.files)?r.files:[],...typeof r.turn=="string"&&r.turn?{turn:r.turn}:{}})),receiving:t,processing:await h.getChatProcessing(e)}}async function i(e,t=true){let n={kind:"notification-batch",notifications:[await u(e,t)]};for(let[s,r]of o.entries())r.subscribedChatCardIds.has(e)&&f(s,n);}function C(){c().length>0||(b&&(clearInterval(b),b=null),a.clear(),d.clear());}function m(){if(b)return;let e=async()=>{let t=c();if(t.length===0){C();return}let n=new Set(t);for(let s of Array.from(a.keys()))n.has(s)||a.delete(s);for(let s of Array.from(d.keys()))n.has(s)||d.delete(s);for(let s of t)await l(s)&&await i(s,true);};e(),b=setInterval(()=>{e();},1e3);}async function v(e,t){let n=o.get(e);if(!n)return false;n.subscribedChatCardIds.add(t);let{cursor:s}=await h.readChatAfter(t,null);return a.set(t,s),d.set(t,await h.getChatProcessing(t)),m(),f(e,{kind:"notification-batch",notifications:[await u(t,true)]}),true}function R(e,t){let n=o.get(e);return n?(n.subscribedChatCardIds.delete(t),c().includes(t)||(a.delete(t),d.delete(t)),C(),true):false}function g(e){if(!e||typeof e!="object")return false;let t=e.kind;return t==="card_chats"||t==="chat_messages"}function S(e){if(!e||e.length===0)return;let t=[],n=new Set;for(let s of e)g(s)&&typeof s.cardId=="string"?n.add(String(s.cardId)):t.push(s);if(t.length>0){let s={kind:"notification-batch",notifications:t};for(let r of o.keys())f(r,s);}for(let s of n)i(s,true);}return {size:()=>o.size,has:e=>o.has(e),get:e=>o.get(e),buildFrame:p,flushTransport:y,register:P,disconnect:I,writeFrame:f,subscribeChat:v,unsubscribeChat:R,broadcastNotificationBatch:S,broadcastCardChats:i}}function A(h){let{sseHub:o,corsHeaders:a,json:d,buildPublishedRuntimePayload:k,onSseClientConnected:b,onChannelSubscribed:p,onChannelUnsubscribed:y}=h;function I(f,c,l,u,i){if(!o.has(c)){d(f,404,{error:`SSE client not connected: ${c}`});return}i?p?.(c,l,u):y?.(c,l,u),d(f,200,{ok:true,clientId:c,channelName:l,...u.cardId?{cardId:u.cardId}:{},subscribed:i});}async function P(f,c,l,u){let i=u?.oneShot===true,C=!i&&l?o.get(l):null,m=C?new Set(C.subscribedChatCardIds):new Set;c.writeHead(200,{...a,"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}),o.flushTransport(c);let v=await k(),R=o.buildFrame(v);if(c.write(R),i){c.end();return}if(!l)throw new Error("clientId is required for streaming SSE");o.register(l,c,m);try{b?.(l,S=>{o.writeFrame(l,S);});}catch{}let g=setInterval(()=>{try{c.write(`: keepalive
5
+
6
+ `);}catch{}},15e3);f.on("close",()=>{clearInterval(g),o.disconnect(l,c);});}return {handleChannelSubscription:I,handleSse:P}}function T(h){let{apiBasePath:o,json:a,readJsonBody:d,initBoardAndSetup:k,bootstrapBoard:b,boardContexts:p,publishPersistedStateSnapshot:y,upsertCardsFromSource:I,sseHub:P}=h,{handleSse:f,handleChannelSubscription:c$1}=A(h);async function l(u,i,C){let m=u.method||"GET",v=C,R=v.pathname;try{if(m==="GET"&&R===`${o}/sse`){let n=v.searchParams.has("one-shot");await k();let s=String(v.searchParams.get("clientId")||"").trim();if(!n&&!s)return a(i,400,{error:"clientId query param is required for SSE"}),!0;if(await f(u,i,s||void 0,{oneShot:n}),n)return !0;for(let r=0;r<p.length;r++)await y(p[r]),await I(p[r],r),await y(p[r]);return !0}let g=R.match(new RegExp(`^${c(o)}/cards/([^/]+)/chats/subscribe-sse$`));if(m==="POST"&&g){await b();let n=decodeURIComponent(g[1]),s=await d(u),r=typeof s?.clientId=="string"?s.clientId.trim():"";return r?await P.subscribeChat(r,n)?(a(i,200,{ok:!0,clientId:r,cardId:n,subscribed:!0}),!0):(a(i,404,{error:`SSE client not connected: ${r}`}),!0):(a(i,400,{error:"clientId is required"}),!0)}let S=R.match(new RegExp(`^${c(o)}/cards/([^/]+)/chats/unsubscribe-sse$`));if(m==="POST"&&S){await b();let n=decodeURIComponent(S[1]),s=await d(u),r=typeof s?.clientId=="string"?s.clientId.trim():"";return r?P.unsubscribeChat(r,n)?(a(i,200,{ok:!0,clientId:r,cardId:n,subscribed:!1}),!0):(a(i,404,{error:`SSE client not connected: ${r}`}),!0):(a(i,400,{error:"clientId is required"}),!0)}let e=R.match(new RegExp(`^${c(o)}/watch-channel/([^/]+)/(subscribe|unsubscribe)-sse$`));if(m==="POST"&&e){await b();let n=decodeURIComponent(e[1]),s=e[2]==="subscribe",r=await d(u),w=typeof r?.clientId=="string"?r.clientId.trim():"";return w?(c$1(i,w,n,{},s),!0):(a(i,400,{error:"clientId is required"}),!0)}let t=R.match(new RegExp(`^${c(o)}/cards/([^/]+)/watch-channel/([^/]+)/(subscribe|unsubscribe)-sse$`));if(m==="POST"&&t){await b();let n=decodeURIComponent(t[1]),s=decodeURIComponent(t[2]),r=t[3]==="subscribe",w=await d(u),H=typeof w?.clientId=="string"?w.clientId.trim():"";return H?(c$1(i,H,s,{cardId:n},r),!0):(a(i,400,{error:"clientId is required"}),!0)}return !1}catch(g){let S=g?.statusCode||500;return a(i,S,{error:String(g?.message||g)}),true}}return {handleWatchersRoutes:l,handleSse:f,handleChannelSubscription:c$1}}export{D as a,T as b};//# sourceMappingURL=chunk-ABAVFLDP.js.map
7
+ //# sourceMappingURL=chunk-ABAVFLDP.js.map
@@ -1,2 +1,2 @@
1
- import {a as a$1}from'./chunk-BQS3EIEK.js';function i(e,t){let n;return /\.m?js$/i.test(e)?n="local-node":/\.py$/i.test(e)?n="local-python":n="local-process",{meta:"task-executor",howToRun:n,whatToRun:a$1({kind:"fs-path",value:e}),...t?{extra:t}:{}}}function s(e){return JSON.stringify(e)}function a(e){let t;try{t=JSON.parse(e);}catch{throw new Error(`parseExecutionRef: invalid JSON \u2014 ${e}`)}if(typeof t!="object"||t===null||typeof t.howToRun!="string"||typeof t.whatToRun!="string")throw new Error(`parseExecutionRef: missing required fields howToRun/whatToRun \u2014 ${e}`);return t}export{i as a,s as b,a as c};//# sourceMappingURL=chunk-XQRNDX4Q.js.map
2
- //# sourceMappingURL=chunk-XQRNDX4Q.js.map
1
+ import {a as a$1}from'./chunk-44L64VQ2.js';function i(e,t){let n;return /\.m?js$/i.test(e)?n="local-node":/\.py$/i.test(e)?n="local-python":n="local-process",{meta:"task-executor",howToRun:n,whatToRun:a$1({kind:"fs-path",value:e}),...t?{extra:t}:{}}}function s(e){return JSON.stringify(e)}function a(e){let t;try{t=JSON.parse(e);}catch{throw new Error(`parseExecutionRef: invalid JSON \u2014 ${e}`)}if(typeof t!="object"||t===null||typeof t.howToRun!="string"||typeof t.whatToRun!="string")throw new Error(`parseExecutionRef: missing required fields howToRun/whatToRun \u2014 ${e}`);return t}export{i as a,s as b,a as c};//# sourceMappingURL=chunk-ANKA7HEJ.js.map
2
+ //# sourceMappingURL=chunk-ANKA7HEJ.js.map
@@ -1,2 +1,2 @@
1
- 'use strict';var chunkSFVO2LB2_cjs=require('./chunk-SFVO2LB2.cjs');function p(t){return typeof t.journalStorage=="function"}function s(t){return typeof t.whatToRun=="string"?t.whatToRun.startsWith("b64:")?chunkSFVO2LB2_cjs.b(t.whatToRun).value:t.whatToRun:t.whatToRun.value}function c(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function f(t){let a=t.reduce((r,u)=>r+u.length,0),o=new Uint8Array(a),n=0;for(let r of t)o.set(r,n),n+=r.length;return o}exports.a=p;exports.b=s;exports.c=c;exports.d=f;//# sourceMappingURL=chunk-KAWQPLIE.cjs.map
2
- //# sourceMappingURL=chunk-KAWQPLIE.cjs.map
1
+ 'use strict';var chunkVQCIOKJV_cjs=require('./chunk-VQCIOKJV.cjs');function p(t){return typeof t.journalStorage=="function"}function s(t){return typeof t.whatToRun=="string"?t.whatToRun.startsWith("b64:")?chunkVQCIOKJV_cjs.b(t.whatToRun).value:t.whatToRun:t.whatToRun.value}function c(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function f(t){let a=t.reduce((r,u)=>r+u.length,0),o=new Uint8Array(a),n=0;for(let r of t)o.set(r,n),n+=r.length;return o}exports.a=p;exports.b=s;exports.c=c;exports.d=f;//# sourceMappingURL=chunk-BQUQTOPB.cjs.map
2
+ //# sourceMappingURL=chunk-BQUQTOPB.cjs.map
@@ -0,0 +1,2 @@
1
+ 'use strict';var chunkBQUQTOPB_cjs=require('./chunk-BQUQTOPB.cjs'),chunkGPCMBPLK_cjs=require('./chunk-GPCMBPLK.cjs'),chunk37HDEW26_cjs=require('./chunk-37HDEW26.cjs');function l(e,r){return r?{...e,...r.pollIntervalMs!=null?{pollIntervalMs:r.pollIntervalMs}:{},...r.visibilityMs!=null?{visibilityMs:r.visibilityMs}:{},...r.concurrency!=null?{concurrency:r.concurrency}:{},...r.maxAttempts!=null?{maxAttempts:r.maxAttempts}:{}}:e}function f(e,r,u,s){return {id:e,async lease(o){return (await Promise.resolve(r.leaseRequests(o))).map(t=>({id:t.messageId,attempt:t.attempt,message:t.request,ack:()=>Promise.resolve(r.ackRequest(t.messageId,t.leaseToken)),nack:a=>Promise.resolve(r.nackRequest(t.messageId,t.leaseToken,a))}))},async handle(o){await u(o.args,o);},onError:s?(o,i)=>s(o,i.attempt,i.message):void 0}}function R(e,r,u,s){return {id:e,async lease(o){return (await Promise.resolve(r.lease(o))).map(t=>({id:t.id,attempt:t.attempt,message:t.body,ack:()=>Promise.resolve(r.ack(t.id,t.leaseToken)),nack:a=>Promise.resolve(r.nack(t.id,t.leaseToken,a))}))},async handle(){await u();},onError:s?(o,i)=>s(o,i.attempt):void 0}}function Q(e){let r=e.logger??{info(){},warn(){},error(){}},u=e.boardAdapter,s=e.runtime.queueLaneTuning??{},o=u.queueStorageForRef(e.queueStoreRef,"process-accumulated"),i=chunkBQUQTOPB_cjs.a(u)?chunk37HDEW26_cjs.a(u.queueStorageForRef(e.queueStoreRef,"chat-agent")):chunkGPCMBPLK_cjs.a(u.queueStorageForRef(e.queueStoreRef,"chat-agent")),t=[];if(t.push(l(R("process-accumulated",o,async()=>{let a=await e.runtime.__drainProcessAccumulatedLane();if(a.status!=="success")throw new Error(a.error||`__drainProcessAccumulatedLane returned ${a.status}`)},(a,n)=>{r.error(`[board-server] queued process-accumulated failed for ${e.boardId} (attempt ${n}): ${String(a&&a.message||a)}`);}),s.processAccumulated)),t.push(l(f("chat-agent",i,async(a,n)=>{await e.runtime.handleChatAgentRequest(n);},(a,n,c)=>{let p=typeof c.args?.cardId=="string"?c.args.cardId:"";r.error(`[board-server] queued chat-agent failed for ${e.boardId}${p?`/${p}`:""} (attempt ${n}): ${String(a&&a.message||a)}`);}),s.chatAgent)),e.executeTaskExecutorRequest){let a=chunkBQUQTOPB_cjs.a(u)?chunk37HDEW26_cjs.a(u.queueStorageForRef(e.queueStoreRef,"task-executor")):chunkGPCMBPLK_cjs.a(u.queueStorageForRef(e.queueStoreRef,"task-executor"));t.push(l(f("task-executor",a,e.executeTaskExecutorRequest,(n,c)=>{r.error(`[board-server] queued board-worker failed for ${e.boardId} (attempt ${c}): ${String(n&&n.message||n)}`);}),s.taskExecutor));}return chunkGPCMBPLK_cjs.b(t)}exports.a=Q;//# sourceMappingURL=chunk-ETW3BXHD.cjs.map
2
+ //# sourceMappingURL=chunk-ETW3BXHD.cjs.map
@@ -1,2 +1,2 @@
1
- import {b}from'./chunk-BQS3EIEK.js';function p(t){return typeof t.journalStorage=="function"}function s(t){return typeof t.whatToRun=="string"?t.whatToRun.startsWith("b64:")?b(t.whatToRun).value:t.whatToRun:t.whatToRun.value}function c(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function f(t){let a=t.reduce((r,u)=>r+u.length,0),o=new Uint8Array(a),n=0;for(let r of t)o.set(r,n),n+=r.length;return o}export{p as a,s as b,c,f as d};//# sourceMappingURL=chunk-SGV7PU4H.js.map
2
- //# sourceMappingURL=chunk-SGV7PU4H.js.map
1
+ import {b}from'./chunk-44L64VQ2.js';function p(t){return typeof t.journalStorage=="function"}function s(t){return typeof t.whatToRun=="string"?t.whatToRun.startsWith("b64:")?b(t.whatToRun).value:t.whatToRun:t.whatToRun.value}function c(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function f(t){let a=t.reduce((r,u)=>r+u.length,0),o=new Uint8Array(a),n=0;for(let r of t)o.set(r,n),n+=r.length;return o}export{p as a,s as b,c,f as d};//# sourceMappingURL=chunk-FOFGEABN.js.map
2
+ //# sourceMappingURL=chunk-FOFGEABN.js.map
@@ -0,0 +1,2 @@
1
+ 'use strict';function a(e){return {messageId:e.id,enqueuedAt:e.enqueuedAt,attempt:e.attempt,request:e.body}}function n(e){return {...a(e),leaseToken:e.leaseToken,leaseExpiresAt:e.leaseExpiresAt}}function u(e){return {...a(e),reason:e.reason}}function o(e){return {enqueueRequest(r){return e.enqueue(r).id},enqueueRequestIfAbsent:e.enqueueIfAbsent?(r,t)=>{let s=e.enqueueIfAbsent(r,t);return s?s.id:null}:void 0,leaseRequests(r){return e.lease(r).map(n)},ackRequest(r,t){return e.ack(r,t)},nackRequest(r,t,s){return e.nack(r,t,s)},peekActive(){return e.peekActive().map(a)},peekDeadLetter(){return e.peekDeadLetter().map(u)}}}function d(e){return {lanes:e}}exports.a=o;exports.b=d;//# sourceMappingURL=chunk-GPCMBPLK.cjs.map
2
+ //# sourceMappingURL=chunk-GPCMBPLK.cjs.map
@@ -0,0 +1,7 @@
1
+ 'use strict';var chunkBQUQTOPB_cjs=require('./chunk-BQUQTOPB.cjs');function D(h){let o=new Map,a=new Map,d=new Map,k=0,b=null;function p(e){let t=JSON.stringify(e);return k++,`id: ${k}
2
+ data: ${t}
3
+
4
+ `}function y(e){let t=e;try{t.flushHeaders?.();}catch{}try{t.flush?.();}catch{}try{t.socket?.setNoDelay?.(!0);}catch{}try{t.socket?.uncork?.();}catch{}}function I(e,t){let n=o.get(e);if(n&&!(t&&n.res!==t)){o.delete(e),C();try{h.onSseClientDisconnected?.(e);}catch{}try{n.res.end();}catch{}}}function P(e,t,n){let s=o.get(e);s&&I(e,s.res),o.set(e,{res:t,subscribedChatCardIds:n??new Set});}function f(e,t){let n=o.get(e);if(!n)return;let s=p(t);try{n.res.write(s),y(n.res);}catch{I(e,n.res);}}function c(){let e=new Set;for(let t of o.values())for(let n of t.subscribedChatCardIds)e.add(n);return Array.from(e)}async function l(e){let t=a.has(e)?a.get(e):null,{cursor:n}=await h.readChatAfter(e,t),s=await h.getChatProcessing(e),r=s!==(d.get(e)??false),w=n!==t;return w&&a.set(e,n),d.set(e,s),w||r}async function u(e,t){let n=await h.readChatRecords(e),s=Date.now();return {kind:"card_chats",cardId:e,sentAt:new Date(s).toISOString(),sentAtMs:s,messages:n.map(r=>({role:String(r.role||"system"),text:String(r.text||""),files:Array.isArray(r.files)?r.files:[],...typeof r.turn=="string"&&r.turn?{turn:r.turn}:{}})),receiving:t,processing:await h.getChatProcessing(e)}}async function i(e,t=true){let n={kind:"notification-batch",notifications:[await u(e,t)]};for(let[s,r]of o.entries())r.subscribedChatCardIds.has(e)&&f(s,n);}function C(){c().length>0||(b&&(clearInterval(b),b=null),a.clear(),d.clear());}function m(){if(b)return;let e=async()=>{let t=c();if(t.length===0){C();return}let n=new Set(t);for(let s of Array.from(a.keys()))n.has(s)||a.delete(s);for(let s of Array.from(d.keys()))n.has(s)||d.delete(s);for(let s of t)await l(s)&&await i(s,true);};e(),b=setInterval(()=>{e();},1e3);}async function v(e,t){let n=o.get(e);if(!n)return false;n.subscribedChatCardIds.add(t);let{cursor:s}=await h.readChatAfter(t,null);return a.set(t,s),d.set(t,await h.getChatProcessing(t)),m(),f(e,{kind:"notification-batch",notifications:[await u(t,true)]}),true}function R(e,t){let n=o.get(e);return n?(n.subscribedChatCardIds.delete(t),c().includes(t)||(a.delete(t),d.delete(t)),C(),true):false}function g(e){if(!e||typeof e!="object")return false;let t=e.kind;return t==="card_chats"||t==="chat_messages"}function S(e){if(!e||e.length===0)return;let t=[],n=new Set;for(let s of e)g(s)&&typeof s.cardId=="string"?n.add(String(s.cardId)):t.push(s);if(t.length>0){let s={kind:"notification-batch",notifications:t};for(let r of o.keys())f(r,s);}for(let s of n)i(s,true);}return {size:()=>o.size,has:e=>o.has(e),get:e=>o.get(e),buildFrame:p,flushTransport:y,register:P,disconnect:I,writeFrame:f,subscribeChat:v,unsubscribeChat:R,broadcastNotificationBatch:S,broadcastCardChats:i}}function A(h){let{sseHub:o,corsHeaders:a,json:d,buildPublishedRuntimePayload:k,onSseClientConnected:b,onChannelSubscribed:p,onChannelUnsubscribed:y}=h;function I(f,c,l,u,i){if(!o.has(c)){d(f,404,{error:`SSE client not connected: ${c}`});return}i?p?.(c,l,u):y?.(c,l,u),d(f,200,{ok:true,clientId:c,channelName:l,...u.cardId?{cardId:u.cardId}:{},subscribed:i});}async function P(f,c,l,u){let i=u?.oneShot===true,C=!i&&l?o.get(l):null,m=C?new Set(C.subscribedChatCardIds):new Set;c.writeHead(200,{...a,"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}),o.flushTransport(c);let v=await k(),R=o.buildFrame(v);if(c.write(R),i){c.end();return}if(!l)throw new Error("clientId is required for streaming SSE");o.register(l,c,m);try{b?.(l,S=>{o.writeFrame(l,S);});}catch{}let g=setInterval(()=>{try{c.write(`: keepalive
5
+
6
+ `);}catch{}},15e3);f.on("close",()=>{clearInterval(g),o.disconnect(l,c);});}return {handleChannelSubscription:I,handleSse:P}}function T(h){let{apiBasePath:o,json:a,readJsonBody:d,initBoardAndSetup:k,bootstrapBoard:b,boardContexts:p,publishPersistedStateSnapshot:y,upsertCardsFromSource:I,sseHub:P}=h,{handleSse:f,handleChannelSubscription:c}=A(h);async function l(u,i,C){let m=u.method||"GET",v=C,R=v.pathname;try{if(m==="GET"&&R===`${o}/sse`){let n=v.searchParams.has("one-shot");await k();let s=String(v.searchParams.get("clientId")||"").trim();if(!n&&!s)return a(i,400,{error:"clientId query param is required for SSE"}),!0;if(await f(u,i,s||void 0,{oneShot:n}),n)return !0;for(let r=0;r<p.length;r++)await y(p[r]),await I(p[r],r),await y(p[r]);return !0}let g=R.match(new RegExp(`^${chunkBQUQTOPB_cjs.c(o)}/cards/([^/]+)/chats/subscribe-sse$`));if(m==="POST"&&g){await b();let n=decodeURIComponent(g[1]),s=await d(u),r=typeof s?.clientId=="string"?s.clientId.trim():"";return r?await P.subscribeChat(r,n)?(a(i,200,{ok:!0,clientId:r,cardId:n,subscribed:!0}),!0):(a(i,404,{error:`SSE client not connected: ${r}`}),!0):(a(i,400,{error:"clientId is required"}),!0)}let S=R.match(new RegExp(`^${chunkBQUQTOPB_cjs.c(o)}/cards/([^/]+)/chats/unsubscribe-sse$`));if(m==="POST"&&S){await b();let n=decodeURIComponent(S[1]),s=await d(u),r=typeof s?.clientId=="string"?s.clientId.trim():"";return r?P.unsubscribeChat(r,n)?(a(i,200,{ok:!0,clientId:r,cardId:n,subscribed:!1}),!0):(a(i,404,{error:`SSE client not connected: ${r}`}),!0):(a(i,400,{error:"clientId is required"}),!0)}let e=R.match(new RegExp(`^${chunkBQUQTOPB_cjs.c(o)}/watch-channel/([^/]+)/(subscribe|unsubscribe)-sse$`));if(m==="POST"&&e){await b();let n=decodeURIComponent(e[1]),s=e[2]==="subscribe",r=await d(u),w=typeof r?.clientId=="string"?r.clientId.trim():"";return w?(c(i,w,n,{},s),!0):(a(i,400,{error:"clientId is required"}),!0)}let t=R.match(new RegExp(`^${chunkBQUQTOPB_cjs.c(o)}/cards/([^/]+)/watch-channel/([^/]+)/(subscribe|unsubscribe)-sse$`));if(m==="POST"&&t){await b();let n=decodeURIComponent(t[1]),s=decodeURIComponent(t[2]),r=t[3]==="subscribe",w=await d(u),H=typeof w?.clientId=="string"?w.clientId.trim():"";return H?(c(i,H,s,{cardId:n},r),!0):(a(i,400,{error:"clientId is required"}),!0)}return !1}catch(g){let S=g?.statusCode||500;return a(i,S,{error:String(g?.message||g)}),true}}return {handleWatchersRoutes:l,handleSse:f,handleChannelSubscription:c}}exports.a=D;exports.b=T;//# sourceMappingURL=chunk-H22NK6KH.cjs.map
7
+ //# sourceMappingURL=chunk-H22NK6KH.cjs.map