yaml-flow 8.6.1 → 8.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/browser/asset-integrity.json +3 -3
  2. package/examples/board/demo-shell-with-server.html +2 -2
  3. package/examples/board/doc.html +2 -2
  4. package/examples/board/server/board-server.js +544 -45
  5. package/examples/board/server-config.json +2 -1
  6. package/examples/board/test/server-http-test.js +12 -4
  7. package/examples/board-local/demo-shell-localstorage.html +3 -3
  8. package/lib/{artifacts-store-lib-CLOtsiav.d.cts → artifacts-store-lib-BR-Samty.d.cts} +1 -1
  9. package/lib/{artifacts-store-lib-C1rtrkxm.d.ts → artifacts-store-lib-DT7XlWUL.d.ts} +1 -1
  10. package/lib/artifacts-store-public.d.cts +3 -3
  11. package/lib/artifacts-store-public.d.ts +3 -3
  12. package/lib/board-live-cards-mcp.cjs +1 -1
  13. package/lib/board-live-cards-mcp.d.cts +56 -23
  14. package/lib/board-live-cards-mcp.d.ts +56 -23
  15. package/lib/board-live-cards-mcp.js +1 -1
  16. package/lib/board-live-cards-node.cjs +8 -8
  17. package/lib/board-live-cards-node.d.cts +39 -21
  18. package/lib/board-live-cards-node.d.ts +39 -21
  19. package/lib/board-live-cards-node.js +8 -8
  20. package/lib/{board-live-cards-public-CBVjm327.d.ts → board-live-cards-public-BMUIPOrc.d.ts} +67 -42
  21. package/lib/board-live-cards-public-async-DKZqbJVU.d.ts +256 -0
  22. package/lib/board-live-cards-public-async-dMWNbWq6.d.cts +256 -0
  23. package/lib/{board-live-cards-public-CPJy-aGW.d.cts → board-live-cards-public-wkNmBIRC.d.cts} +67 -42
  24. package/lib/board-live-cards-public.cjs +1 -1
  25. package/lib/board-live-cards-public.d.cts +2 -2
  26. package/lib/board-live-cards-public.d.ts +2 -2
  27. package/lib/board-live-cards-public.js +1 -1
  28. package/lib/board-live-cards-server-runtime.cjs +1 -1
  29. package/lib/board-live-cards-server-runtime.d.cts +7 -6
  30. package/lib/board-live-cards-server-runtime.d.ts +7 -6
  31. package/lib/board-live-cards-server-runtime.js +1 -1
  32. package/lib/board-worker-adapter.cjs +4 -3
  33. package/lib/board-worker-adapter.d.cts +24 -14
  34. package/lib/board-worker-adapter.d.ts +24 -14
  35. package/lib/board-worker-adapter.js +4 -3
  36. package/lib/card-store-public.d.cts +2 -2
  37. package/lib/card-store-public.d.ts +2 -2
  38. package/lib/{chat-storage-lib-CKylihjm.d.cts → chat-storage-lib-BIUbE-fM.d.cts} +1 -1
  39. package/lib/{chat-storage-lib-Bce-xx6l.d.ts → chat-storage-lib-BlG-sobS.d.ts} +1 -1
  40. package/lib/chat-store-public.d.cts +3 -3
  41. package/lib/chat-store-public.d.ts +3 -3
  42. package/lib/{chunk-CWREBRXS.js → chunk-BQS3EIEK.js} +3 -3
  43. package/lib/{chunk-LDAP75GN.js → chunk-CIAJNUR4.js} +2 -2
  44. package/lib/chunk-GJJMEAVN.cjs +2 -0
  45. package/lib/chunk-H5HBXPOI.cjs +3 -0
  46. package/lib/chunk-HEEDJEKM.js +2 -0
  47. package/lib/chunk-KQX6R4PV.cjs +8 -0
  48. package/lib/chunk-MLVTJASJ.js +2 -0
  49. package/lib/chunk-N6P2JW4W.js +3 -0
  50. package/lib/chunk-OEFTOO47.cjs +3 -0
  51. package/lib/chunk-OSWJKJLB.js +8 -0
  52. package/lib/chunk-PBCDDO4V.cjs +2 -0
  53. package/lib/{chunk-I4WH5U5D.cjs → chunk-PMUSJQSR.cjs} +2 -2
  54. package/lib/chunk-SCWHDI3I.js +2 -0
  55. package/lib/{chunk-UVE65IPR.cjs → chunk-SFVO2LB2.cjs} +3 -3
  56. package/lib/{chunk-5DB54ZX2.cjs → chunk-U2N6MCD5.cjs} +2 -2
  57. package/lib/chunk-VMW4Z6EF.js +3 -0
  58. package/lib/chunk-WOALA3V5.cjs +2 -0
  59. package/lib/{chunk-LBMEVV4U.js → chunk-XQRNDX4Q.js} +2 -2
  60. package/lib/cloud-storage.cjs +2 -0
  61. package/lib/cloud-storage.d.cts +177 -0
  62. package/lib/cloud-storage.d.ts +177 -0
  63. package/lib/cloud-storage.js +2 -0
  64. package/lib/execution-refs.cjs +1 -1
  65. package/lib/execution-refs.js +1 -1
  66. package/lib/index.cjs +2 -2
  67. package/lib/index.d.cts +1 -1
  68. package/lib/index.d.ts +1 -1
  69. package/lib/index.js +1 -1
  70. package/lib/{types-DRl0Hy_p.d.cts → queue-lane-registry-BPKWWgd4.d.cts} +66 -14
  71. package/lib/{types-BuK2UMxk.d.ts → queue-lane-registry-Be6c0ftj.d.ts} +66 -14
  72. package/lib/server-runtime/index.cjs +1 -1
  73. package/lib/server-runtime/index.d.cts +18 -7
  74. package/lib/server-runtime/index.d.ts +18 -7
  75. package/lib/server-runtime/index.js +1 -1
  76. package/lib/step-machine-public/index.cjs +1 -1
  77. package/lib/step-machine-public/index.d.cts +1 -1
  78. package/lib/step-machine-public/index.d.ts +1 -1
  79. package/lib/step-machine-public/index.js +1 -1
  80. package/lib/{storage-interface-Ct-C4tlz.d.cts → storage-interface-BFiD3kyB.d.cts} +11 -1
  81. package/lib/{storage-interface-Ct-C4tlz.d.ts → storage-interface-BFiD3kyB.d.ts} +11 -1
  82. package/lib/stores/index.cjs +1 -1
  83. package/lib/stores/index.d.cts +1 -1
  84. package/lib/stores/index.d.ts +1 -1
  85. package/lib/stores/index.js +1 -1
  86. package/lib/stores/kv.d.cts +1 -1
  87. package/lib/stores/kv.d.ts +1 -1
  88. package/package.json +6 -1
  89. package/lib/chunk-6APH25VI.js +0 -2
  90. package/lib/chunk-KNFFDVLD.cjs +0 -2
  91. package/lib/chunk-LVNQCE5X.cjs +0 -3
  92. package/lib/chunk-M7EQRS6W.js +0 -3
  93. package/lib/chunk-NJJ7WEDT.cjs +0 -2
  94. package/lib/chunk-P64UKI3L.cjs +0 -8
  95. package/lib/chunk-Q6VSL327.js +0 -8
  96. package/lib/chunk-VCCTAUIG.js +0 -2
@@ -1,12 +1,23 @@
1
- import { M as MultiBoardRuntimeOptions, a as MultiBoardRuntime, S as SingleBoardRuntimeOptions, b as SingleBoardRuntime } from '../types-DRl0Hy_p.cjs';
2
- export { B as BoardContextConfig, C as ChatHandlerFlowRunner, D as DescribeEnvelope, I as InvocationAdapter, N as NotificationTransport, R as RuntimeLogger, c as RuntimeRequest, d as RuntimeResponse } from '../types-DRl0Hy_p.cjs';
3
- export { B as BlobStorage, K as KVStorage, a as KindValueRef } from '../storage-interface-Ct-C4tlz.cjs';
4
- export { B as BoardChangeNotification, c as BoardLiveCardsPublic, d as BoardNonCorePlatformAdapter, e as BoardPlatformAdapter, a as CommandInput, C as CommandResult } from '../board-live-cards-public-CPJy-aGW.cjs';
5
- export { c as ChatStorage } from '../chat-storage-lib-CKylihjm.cjs';
1
+ import { S as SingleBoardRuntime, B as BoardRuntimePlatformAdapter, R as RuntimeLogger, Q as QueueLaneRegistry, M as MultiBoardRuntimeOptions, a as MultiBoardRuntime, b as SingleBoardRuntimeOptions } from '../queue-lane-registry-BPKWWgd4.cjs';
2
+ export { A as Awaitable, c as BoardContextConfig, d as BoardRuntimePublic, C as ChatHandlerFlowRunner, D as DescribeEnvelope, H as HostedBoardQueueLaneTuning, I as InvocationAdapter, N as NotificationTransport, e as QueueLaneRuntimeTuning, f as RuntimeRequest, g as RuntimeResponse } from '../queue-lane-registry-BPKWWgd4.cjs';
3
+ import { B as BoardWorkerRequest } from '../board-live-cards-public-wkNmBIRC.cjs';
4
+ export { c as BoardChangeNotification, d as BoardLiveCardsPublic, e as BoardNonCorePlatformAdapter, f as BoardPlatformAdapter, a as CommandInput, C as CommandResult } from '../board-live-cards-public-wkNmBIRC.cjs';
5
+ export { A as AsyncBoardLiveCardsPublic, a as AsyncBoardPlatformAdapter } from '../board-live-cards-public-async-dMWNbWq6.cjs';
6
+ export { B as BlobStorage, K as KVStorage, a as KindValueRef } from '../storage-interface-BFiD3kyB.cjs';
7
+ export { c as ChatStorage } from '../chat-storage-lib-BIUbE-fM.cjs';
6
8
  export { ExecutionRef } from '../execution-refs.cjs';
7
- import '../artifacts-store-lib-CLOtsiav.cjs';
9
+ import '../artifacts-store-lib-BR-Samty.cjs';
8
10
  import '../types-BBhqYGhE.cjs';
9
11
 
12
+ interface HostedBoardQueueLaneRegistryOptions {
13
+ boardId: string;
14
+ runtime: Pick<SingleBoardRuntime, 'processAccumulatedLane' | 'handleChatAgentRequest' | 'queueLaneTuning'>;
15
+ boardAdapter: BoardRuntimePlatformAdapter;
16
+ logger?: RuntimeLogger;
17
+ executeTaskExecutorRequest?: (args: Record<string, unknown>, request: BoardWorkerRequest) => Promise<void>;
18
+ }
19
+ declare function createHostedBoardQueueLaneRegistry(opts: HostedBoardQueueLaneRegistryOptions): QueueLaneRegistry;
20
+
10
21
  /**
11
22
  * server-runtime/index.ts
12
23
  *
@@ -30,4 +41,4 @@ import '../types-BBhqYGhE.cjs';
30
41
  declare function createSingleBoardServerRuntime(options: SingleBoardRuntimeOptions): SingleBoardRuntime;
31
42
  declare function createMultiBoardServerRuntime(options: MultiBoardRuntimeOptions): MultiBoardRuntime;
32
43
 
33
- export { MultiBoardRuntime, MultiBoardRuntimeOptions, SingleBoardRuntime, SingleBoardRuntimeOptions, createMultiBoardServerRuntime, createSingleBoardServerRuntime };
44
+ export { BoardRuntimePlatformAdapter, BoardWorkerRequest, type HostedBoardQueueLaneRegistryOptions, MultiBoardRuntime, MultiBoardRuntimeOptions, RuntimeLogger, SingleBoardRuntime, SingleBoardRuntimeOptions, createHostedBoardQueueLaneRegistry, createMultiBoardServerRuntime, createSingleBoardServerRuntime };
@@ -1,12 +1,23 @@
1
- import { M as MultiBoardRuntimeOptions, a as MultiBoardRuntime, S as SingleBoardRuntimeOptions, b as SingleBoardRuntime } from '../types-BuK2UMxk.js';
2
- export { B as BoardContextConfig, C as ChatHandlerFlowRunner, D as DescribeEnvelope, I as InvocationAdapter, N as NotificationTransport, R as RuntimeLogger, c as RuntimeRequest, d as RuntimeResponse } from '../types-BuK2UMxk.js';
3
- export { B as BlobStorage, K as KVStorage, a as KindValueRef } from '../storage-interface-Ct-C4tlz.js';
4
- export { B as BoardChangeNotification, c as BoardLiveCardsPublic, d as BoardNonCorePlatformAdapter, e as BoardPlatformAdapter, a as CommandInput, C as CommandResult } from '../board-live-cards-public-CBVjm327.js';
5
- export { c as ChatStorage } from '../chat-storage-lib-Bce-xx6l.js';
1
+ import { S as SingleBoardRuntime, B as BoardRuntimePlatformAdapter, R as RuntimeLogger, Q as QueueLaneRegistry, M as MultiBoardRuntimeOptions, a as MultiBoardRuntime, b as SingleBoardRuntimeOptions } from '../queue-lane-registry-Be6c0ftj.js';
2
+ export { A as Awaitable, c as BoardContextConfig, d as BoardRuntimePublic, C as ChatHandlerFlowRunner, D as DescribeEnvelope, H as HostedBoardQueueLaneTuning, I as InvocationAdapter, N as NotificationTransport, e as QueueLaneRuntimeTuning, f as RuntimeRequest, g as RuntimeResponse } from '../queue-lane-registry-Be6c0ftj.js';
3
+ import { B as BoardWorkerRequest } from '../board-live-cards-public-BMUIPOrc.js';
4
+ export { c as BoardChangeNotification, d as BoardLiveCardsPublic, e as BoardNonCorePlatformAdapter, f as BoardPlatformAdapter, a as CommandInput, C as CommandResult } from '../board-live-cards-public-BMUIPOrc.js';
5
+ export { A as AsyncBoardLiveCardsPublic, a as AsyncBoardPlatformAdapter } from '../board-live-cards-public-async-DKZqbJVU.js';
6
+ export { B as BlobStorage, K as KVStorage, a as KindValueRef } from '../storage-interface-BFiD3kyB.js';
7
+ export { c as ChatStorage } from '../chat-storage-lib-BlG-sobS.js';
6
8
  export { ExecutionRef } from '../execution-refs.js';
7
- import '../artifacts-store-lib-C1rtrkxm.js';
9
+ import '../artifacts-store-lib-DT7XlWUL.js';
8
10
  import '../types-BBhqYGhE.js';
9
11
 
12
+ interface HostedBoardQueueLaneRegistryOptions {
13
+ boardId: string;
14
+ runtime: Pick<SingleBoardRuntime, 'processAccumulatedLane' | 'handleChatAgentRequest' | 'queueLaneTuning'>;
15
+ boardAdapter: BoardRuntimePlatformAdapter;
16
+ logger?: RuntimeLogger;
17
+ executeTaskExecutorRequest?: (args: Record<string, unknown>, request: BoardWorkerRequest) => Promise<void>;
18
+ }
19
+ declare function createHostedBoardQueueLaneRegistry(opts: HostedBoardQueueLaneRegistryOptions): QueueLaneRegistry;
20
+
10
21
  /**
11
22
  * server-runtime/index.ts
12
23
  *
@@ -30,4 +41,4 @@ import '../types-BBhqYGhE.js';
30
41
  declare function createSingleBoardServerRuntime(options: SingleBoardRuntimeOptions): SingleBoardRuntime;
31
42
  declare function createMultiBoardServerRuntime(options: MultiBoardRuntimeOptions): MultiBoardRuntime;
32
43
 
33
- export { MultiBoardRuntime, MultiBoardRuntimeOptions, SingleBoardRuntime, SingleBoardRuntimeOptions, createMultiBoardServerRuntime, createSingleBoardServerRuntime };
44
+ export { BoardRuntimePlatformAdapter, BoardWorkerRequest, type HostedBoardQueueLaneRegistryOptions, MultiBoardRuntime, MultiBoardRuntimeOptions, RuntimeLogger, SingleBoardRuntime, SingleBoardRuntimeOptions, createHostedBoardQueueLaneRegistry, createMultiBoardServerRuntime, createSingleBoardServerRuntime };
@@ -1,2 +1,2 @@
1
- export{b as createMultiBoardServerRuntime,a as createSingleBoardServerRuntime}from'../chunk-Q6VSL327.js';import'../chunk-6APH25VI.js';import'../chunk-M7EQRS6W.js';import'../chunk-LBMEVV4U.js';import'../chunk-CWREBRXS.js';import'../chunk-VGT3TRQG.js';import'../chunk-WDPOGXTY.js';import'../chunk-VCCTAUIG.js';import'../chunk-JMDHDY6M.js';import'../chunk-VLBB3D6B.js';import'../chunk-KBELAKIY.js';import'../chunk-76ON3V7R.js';import'../chunk-MNEOJWPS.js';import'../chunk-FW4363Y4.js';//# sourceMappingURL=index.js.map
1
+ export{a as createHostedBoardQueueLaneRegistry,c as createMultiBoardServerRuntime,b as createSingleBoardServerRuntime}from'../chunk-OSWJKJLB.js';import'../chunk-MLVTJASJ.js';import'../chunk-VMW4Z6EF.js';import'../chunk-HEEDJEKM.js';import'../chunk-N6P2JW4W.js';import'../chunk-XQRNDX4Q.js';import'../chunk-BQS3EIEK.js';import'../chunk-VGT3TRQG.js';import'../chunk-WDPOGXTY.js';import'../chunk-SCWHDI3I.js';import'../chunk-JMDHDY6M.js';import'../chunk-VLBB3D6B.js';import'../chunk-MNEOJWPS.js';import'../chunk-KBELAKIY.js';import'../chunk-76ON3V7R.js';import'../chunk-FW4363Y4.js';//# sourceMappingURL=index.js.map
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- 'use strict';var chunkI4WH5U5D_cjs=require('../chunk-I4WH5U5D.cjs'),chunkKHJABJ45_cjs=require('../chunk-KHJABJ45.cjs'),chunkUVE65IPR_cjs=require('../chunk-UVE65IPR.cjs'),chunkQ6H7NINN_cjs=require('../chunk-Q6H7NINN.cjs'),chunkH5KD3JPY_cjs=require('../chunk-H5KD3JPY.cjs');require('../chunk-UJ7ZTV4J.cjs'),require('../chunk-GNFE24S7.cjs');var module$1=require('module'),url=require('url'),path=require('path'),fs=require('fs');var _documentCurrentScript=typeof document!=='undefined'?document.currentScript:null;var C=path.dirname(url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.cjs', document.baseURI).href)))),K=module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.cjs', document.baseURI).href)));function L(){let r=path.resolve(C,"./jsonata-sync.cjs");return fs.existsSync(r)?r:path.resolve(C,"../card-compute/jsonata-sync.cjs")}var h=K(L());function T(r,e){if(!r||typeof r!="object")throw new Error(`[step-machine-public] Step "${e}" returned a non-object result.`);let t=r,n=t.result??t.status;if(typeof n=="string"&&n.trim().length>0){let o=t.data&&typeof t.data=="object"&&!Array.isArray(t.data)?{...t.data}:{},a=typeof t.error=="string"?t.error:void 0;return a&&!("error"in o)&&(o.error=a),{result:n,data:o,...a?{error:a}:{}}}return {result:"success",data:{...t}}}function $(r,e){if(!e||e.length===0)return r;let t={};for(let n of e)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n]);return t}function x(r,e){return async(t,n)=>{let o=await r(t,n),a=T(o,n?.stepName??"unknown");return {result:a.result,data:$(a.data,e),...a.error?{error:a.error}:{}}}}function M(r,e,t){if(!e||e.length===0)return null;for(let n of e)try{if(!h(n).evaluate(r))return {result:"failure",data:{error:`[${t}] input validation failed: ${n}`}}}catch(o){let a=o instanceof Error?o.message:String(o);return {result:"failure",data:{error:`[${t}] input validation error on "${n}": ${a}`}}}return null}function F(r,e,t){return !e||e.length===0?r:async(n,o)=>{let a=M(n,e,t);return a||r(n,o)}}function A(r){return !!r&&typeof r=="object"&&r.type==="compute-jsonata"&&Array.isArray(r.expr)&&r.expr.length>0}function O(r){if(!r||typeof r!="object")return false;let e=r;if(e.type!=="ref"||typeof e.howToRun!="string")return false;if(typeof e.whatToRun=="string")return true;if(e.whatToRun&&typeof e.whatToRun=="object"){let t=e.whatToRun;return typeof t.kind=="string"&&typeof t.value=="string"}return false}function U(r){if(typeof r=="string"){let e=r.indexOf("=");if(e<1)throw new Error(`[step-machine-public] Invalid compute expression (missing "="): "${r}"`);return {bindTo:r.slice(0,e).trim(),expr:r.slice(e+1).trim()}}if(r&&typeof r=="object"&&typeof r.bindTo=="string"&&typeof r.expr=="string")return r;throw new Error(`[step-machine-public] Invalid compute step: ${JSON.stringify(r)}`)}function G(r,e,t){let n=e.split("."),o=r;for(let a=0;a<n.length-1;a++){let s=n[a];(o[s]==null||typeof o[s]!="object")&&(o[s]={}),o=o[s];}o[n[n.length-1]]=t;}function I(r,e,t){let n=r.expr.map(U);return async o=>{let a=o&&typeof o=="object"&&!Array.isArray(o)?{...o}:{},s={},l={expects_data:a,data:s,...t?{config:t}:{}},p,i;for(let u of n)try{let c=h(u.expr).evaluate(l);if(u.bindTo==="result")p=c!=null?String(c):"success";else if(u.bindTo==="error")i=c!=null?String(c):void 0;else if(u.bindTo.startsWith("data."))G(s,u.bindTo.slice(5),c);else return {result:"failure",data:{},error:`[${e}] invalid bindTo "${u.bindTo}": must be "result", "error", or start with "data."`}}catch(c){let d=c instanceof Error?c.message:String(c);return {result:"failure",data:{},error:`[${e}] compute "${u.bindTo}" failed: ${d}`}}return p===void 0?{result:"failure",data:{},error:`[${e}] compute-jsonata: no "result" binding declared \u2014 add '- result = "success"' to expr`}:i?{result:p,data:s,error:i}:{result:p,data:s}}}function E(r,e,t,n){let{type:o,...a}=r,s={...a,whatToRun:typeof a.whatToRun=="object"?chunkUVE65IPR_cjs.a(a.whatToRun):a.whatToRun};return async l=>{let p=l&&typeof l=="object"&&!Array.isArray(l)?{...l}:{};n&&(p.config=n);try{let i=await t(s,p);if(!r.outputTransforms)return i;if(i&&i.result!=="success"){let u=i.data&&typeof i.data.error=="string"?String(i.data.error):void 0;return u&&!i.error?{...i,error:u}:i}try{return chunkI4WH5U5D_cjs.b(r.outputTransforms,i,e)}catch(u){let c=u instanceof Error?u.message:String(u);return {result:"failure",data:{},error:c}}}catch(i){let u=i instanceof Error?i.message:String(i);return {result:"failure",data:{error:`[step-machine-public] step "${e}" invoke threw: ${u}`}}}}}function z(){return async r=>({result:"success",data:r&&typeof r=="object"&&!Array.isArray(r)?r:{}})}function Q(r,e,t){return async(n,o)=>{let a=n?.[e.items];if(!Array.isArray(a))return {result:"failure",data:{},error:`[${t}] forEach: "${e.items}" is not an array (got ${typeof a})`};let s=a,l=e.collectAs??`${e.items}_results`;if(s.length===0)return {result:"success",data:{[l]:[]}};let{[e.items]:p,...i}=n,u=Math.max(1,e.concurrency??1),c=new Array(s.length),d=0,w=0,S=0;return await new Promise(g=>{function f(){for(;d<u&&w<s.length;){let y=w++;d++;let _={...i,[e.as]:s[y]};r(_,o).then(m=>{c[y]=m;}).catch(m=>{let P=m instanceof Error?m.message:String(m);c[y]={result:"failure",data:{},error:P};}).finally(()=>{d--,c[y]?.result==="failure"&&S++,w>=s.length&&d===0?g():f();});}d===0&&w>=s.length&&g();}f();}),S>0?{result:"failure",data:{errors:c.filter(f=>f.result==="failure").map(f=>f.error)},error:`[${t}] forEach: ${S}/${s.length} items failed`}:{result:"success",data:{[l]:c.map(g=>g.data)}}}}function J(r,e,t){let n=Array.isArray(e?.produces_data)?e?.produces_data:void 0,o=Array.isArray(e?.input_validations)?e?.input_validations:void 0,a=e?.config??void 0,s=e?.handler,l;return A(s)?l=I(s,r,a):O(s)?l=E(s,r,t.invoke,a):l=z(),e?.forEach&&(l=Q(l,e.forEach,r)),F(x(l,n),o,r)}function H(r,e){let t={};for(let[n,o]of Object.entries(r.steps??{}))t[n]=J(n,o,e);return t}function X(r){let e=r.storeFactory||(()=>new chunkH5KD3JPY_cjs.a);return {async run(t,n){try{let o=H(t,{invoke:r.invokeRef}),s=await chunkQ6H7NINN_cjs.g(t,o,{store:e()}).run(n);return s.status!=="completed"?{dispatched:!1,error:s.error?.message||s.status}:{dispatched:!0}}catch(o){return {dispatched:false,error:o instanceof Error?o.message:String(o)}}}}}Object.defineProperty(exports,"KVStorageStore",{enumerable:true,get:function(){return chunkKHJABJ45_cjs.a}});Object.defineProperty(exports,"createStepMachine",{enumerable:true,get:function(){return chunkQ6H7NINN_cjs.g}});Object.defineProperty(exports,"loadStepFlow",{enumerable:true,get:function(){return chunkQ6H7NINN_cjs.j}});Object.defineProperty(exports,"MemoryStore",{enumerable:true,get:function(){return chunkH5KD3JPY_cjs.a}});exports.buildStepHandlersForFlow=H;exports.createComputeJsonataHandler=I;exports.createPassthroughHandler=z;exports.createRefStepHandler=E;exports.createStepMachineChatFlowRunner=X;exports.filterProducedData=$;exports.isComputeJsonataSpec=A;exports.isRefSpec=O;exports.jsonata=h;exports.normalizeHandlerResult=T;exports.resolveStepHandler=J;exports.runInputValidations=M;exports.wrapWithInputValidations=F;exports.wrapWithOutputFiltering=x;//# sourceMappingURL=index.cjs.map
1
+ 'use strict';var chunkPMUSJQSR_cjs=require('../chunk-PMUSJQSR.cjs'),chunkQ6H7NINN_cjs=require('../chunk-Q6H7NINN.cjs'),chunkH5KD3JPY_cjs=require('../chunk-H5KD3JPY.cjs'),chunkKHJABJ45_cjs=require('../chunk-KHJABJ45.cjs'),chunkSFVO2LB2_cjs=require('../chunk-SFVO2LB2.cjs');require('../chunk-UJ7ZTV4J.cjs'),require('../chunk-GNFE24S7.cjs');var module$1=require('module'),url=require('url'),path=require('path'),fs=require('fs');var _documentCurrentScript=typeof document!=='undefined'?document.currentScript:null;var C=path.dirname(url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.cjs', document.baseURI).href)))),K=module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.cjs', document.baseURI).href)));function L(){let r=path.resolve(C,"./jsonata-sync.cjs");return fs.existsSync(r)?r:path.resolve(C,"../card-compute/jsonata-sync.cjs")}var h=K(L());function T(r,e){if(!r||typeof r!="object")throw new Error(`[step-machine-public] Step "${e}" returned a non-object result.`);let t=r,n=t.result??t.status;if(typeof n=="string"&&n.trim().length>0){let o=t.data&&typeof t.data=="object"&&!Array.isArray(t.data)?{...t.data}:{},a=typeof t.error=="string"?t.error:void 0;return a&&!("error"in o)&&(o.error=a),{result:n,data:o,...a?{error:a}:{}}}return {result:"success",data:{...t}}}function $(r,e){if(!e||e.length===0)return r;let t={};for(let n of e)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n]);return t}function x(r,e){return async(t,n)=>{let o=await r(t,n),a=T(o,n?.stepName??"unknown");return {result:a.result,data:$(a.data,e),...a.error?{error:a.error}:{}}}}function M(r,e,t){if(!e||e.length===0)return null;for(let n of e)try{if(!h(n).evaluate(r))return {result:"failure",data:{error:`[${t}] input validation failed: ${n}`}}}catch(o){let a=o instanceof Error?o.message:String(o);return {result:"failure",data:{error:`[${t}] input validation error on "${n}": ${a}`}}}return null}function F(r,e,t){return !e||e.length===0?r:async(n,o)=>{let a=M(n,e,t);return a||r(n,o)}}function A(r){return !!r&&typeof r=="object"&&r.type==="compute-jsonata"&&Array.isArray(r.expr)&&r.expr.length>0}function O(r){if(!r||typeof r!="object")return false;let e=r;if(e.type!=="ref"||typeof e.howToRun!="string")return false;if(typeof e.whatToRun=="string")return true;if(e.whatToRun&&typeof e.whatToRun=="object"){let t=e.whatToRun;return typeof t.kind=="string"&&typeof t.value=="string"}return false}function U(r){if(typeof r=="string"){let e=r.indexOf("=");if(e<1)throw new Error(`[step-machine-public] Invalid compute expression (missing "="): "${r}"`);return {bindTo:r.slice(0,e).trim(),expr:r.slice(e+1).trim()}}if(r&&typeof r=="object"&&typeof r.bindTo=="string"&&typeof r.expr=="string")return r;throw new Error(`[step-machine-public] Invalid compute step: ${JSON.stringify(r)}`)}function G(r,e,t){let n=e.split("."),o=r;for(let a=0;a<n.length-1;a++){let s=n[a];(o[s]==null||typeof o[s]!="object")&&(o[s]={}),o=o[s];}o[n[n.length-1]]=t;}function I(r,e,t){let n=r.expr.map(U);return async o=>{let a=o&&typeof o=="object"&&!Array.isArray(o)?{...o}:{},s={},l={expects_data:a,data:s,...t?{config:t}:{}},p,i;for(let u of n)try{let c=h(u.expr).evaluate(l);if(u.bindTo==="result")p=c!=null?String(c):"success";else if(u.bindTo==="error")i=c!=null?String(c):void 0;else if(u.bindTo.startsWith("data."))G(s,u.bindTo.slice(5),c);else return {result:"failure",data:{},error:`[${e}] invalid bindTo "${u.bindTo}": must be "result", "error", or start with "data."`}}catch(c){let d=c instanceof Error?c.message:String(c);return {result:"failure",data:{},error:`[${e}] compute "${u.bindTo}" failed: ${d}`}}return p===void 0?{result:"failure",data:{},error:`[${e}] compute-jsonata: no "result" binding declared \u2014 add '- result = "success"' to expr`}:i?{result:p,data:s,error:i}:{result:p,data:s}}}function E(r,e,t,n){let{type:o,...a}=r,s={...a,whatToRun:typeof a.whatToRun=="object"?chunkSFVO2LB2_cjs.a(a.whatToRun):a.whatToRun};return async l=>{let p=l&&typeof l=="object"&&!Array.isArray(l)?{...l}:{};n&&(p.config=n);try{let i=await t(s,p);if(!r.outputTransforms)return i;if(i&&i.result!=="success"){let u=i.data&&typeof i.data.error=="string"?String(i.data.error):void 0;return u&&!i.error?{...i,error:u}:i}try{return chunkPMUSJQSR_cjs.b(r.outputTransforms,i,e)}catch(u){let c=u instanceof Error?u.message:String(u);return {result:"failure",data:{},error:c}}}catch(i){let u=i instanceof Error?i.message:String(i);return {result:"failure",data:{error:`[step-machine-public] step "${e}" invoke threw: ${u}`}}}}}function z(){return async r=>({result:"success",data:r&&typeof r=="object"&&!Array.isArray(r)?r:{}})}function Q(r,e,t){return async(n,o)=>{let a=n?.[e.items];if(!Array.isArray(a))return {result:"failure",data:{},error:`[${t}] forEach: "${e.items}" is not an array (got ${typeof a})`};let s=a,l=e.collectAs??`${e.items}_results`;if(s.length===0)return {result:"success",data:{[l]:[]}};let{[e.items]:p,...i}=n,u=Math.max(1,e.concurrency??1),c=new Array(s.length),d=0,w=0,S=0;return await new Promise(g=>{function f(){for(;d<u&&w<s.length;){let y=w++;d++;let _={...i,[e.as]:s[y]};r(_,o).then(m=>{c[y]=m;}).catch(m=>{let P=m instanceof Error?m.message:String(m);c[y]={result:"failure",data:{},error:P};}).finally(()=>{d--,c[y]?.result==="failure"&&S++,w>=s.length&&d===0?g():f();});}d===0&&w>=s.length&&g();}f();}),S>0?{result:"failure",data:{errors:c.filter(f=>f.result==="failure").map(f=>f.error)},error:`[${t}] forEach: ${S}/${s.length} items failed`}:{result:"success",data:{[l]:c.map(g=>g.data)}}}}function J(r,e,t){let n=Array.isArray(e?.produces_data)?e?.produces_data:void 0,o=Array.isArray(e?.input_validations)?e?.input_validations:void 0,a=e?.config??void 0,s=e?.handler,l;return A(s)?l=I(s,r,a):O(s)?l=E(s,r,t.invoke,a):l=z(),e?.forEach&&(l=Q(l,e.forEach,r)),F(x(l,n),o,r)}function H(r,e){let t={};for(let[n,o]of Object.entries(r.steps??{}))t[n]=J(n,o,e);return t}function X(r){let e=r.storeFactory||(()=>new chunkH5KD3JPY_cjs.a);return {async run(t,n){try{let o=H(t,{invoke:r.invokeRef}),s=await chunkQ6H7NINN_cjs.g(t,o,{store:e()}).run(n);return s.status!=="completed"?{dispatched:!1,error:s.error?.message||s.status}:{dispatched:!0}}catch(o){return {dispatched:false,error:o instanceof Error?o.message:String(o)}}}}}Object.defineProperty(exports,"createStepMachine",{enumerable:true,get:function(){return chunkQ6H7NINN_cjs.g}});Object.defineProperty(exports,"loadStepFlow",{enumerable:true,get:function(){return chunkQ6H7NINN_cjs.j}});Object.defineProperty(exports,"MemoryStore",{enumerable:true,get:function(){return chunkH5KD3JPY_cjs.a}});Object.defineProperty(exports,"KVStorageStore",{enumerable:true,get:function(){return chunkKHJABJ45_cjs.a}});exports.buildStepHandlersForFlow=H;exports.createComputeJsonataHandler=I;exports.createPassthroughHandler=z;exports.createRefStepHandler=E;exports.createStepMachineChatFlowRunner=X;exports.filterProducedData=$;exports.isComputeJsonataSpec=A;exports.isRefSpec=O;exports.jsonata=h;exports.normalizeHandlerResult=T;exports.resolveStepHandler=J;exports.runInputValidations=M;exports.wrapWithInputValidations=F;exports.wrapWithOutputFiltering=x;//# sourceMappingURL=index.cjs.map
2
2
  //# sourceMappingURL=index.cjs.map
@@ -3,7 +3,7 @@ import { l as StepMachineStore } from '../types-DjlwALZC.cjs';
3
3
  export { MemoryStore } from '../stores/memory.cjs';
4
4
  export { KVStorageStore } from '../stores/kv.cjs';
5
5
  import { ExecutionRef } from '../execution-refs.cjs';
6
- import '../storage-interface-Ct-C4tlz.cjs';
6
+ import '../storage-interface-BFiD3kyB.cjs';
7
7
 
8
8
  /**
9
9
  * The single normalized shape the engine consumes.
@@ -3,7 +3,7 @@ import { l as StepMachineStore } from '../types-DjlwALZC.js';
3
3
  export { MemoryStore } from '../stores/memory.js';
4
4
  export { KVStorageStore } from '../stores/kv.js';
5
5
  import { ExecutionRef } from '../execution-refs.js';
6
- import '../storage-interface-Ct-C4tlz.js';
6
+ import '../storage-interface-BFiD3kyB.js';
7
7
 
8
8
  /**
9
9
  * The single normalized shape the engine consumes.
@@ -1,2 +1,2 @@
1
- import {b}from'../chunk-LDAP75GN.js';export{a as KVStorageStore}from'../chunk-FZ2SBU5M.js';import {a}from'../chunk-CWREBRXS.js';import {g}from'../chunk-QWBNDVUA.js';export{g as createStepMachine,j as loadStepFlow}from'../chunk-QWBNDVUA.js';import {a as a$1}from'../chunk-JM5EKT57.js';export{a as MemoryStore}from'../chunk-JM5EKT57.js';import'../chunk-MNEOJWPS.js';import'../chunk-FW4363Y4.js';import {createRequire}from'module';import {fileURLToPath}from'url';import {dirname,resolve}from'path';import {existsSync}from'fs';var C=dirname(fileURLToPath(import.meta.url)),K=createRequire(import.meta.url);function L(){let r=resolve(C,"./jsonata-sync.cjs");return existsSync(r)?r:resolve(C,"../card-compute/jsonata-sync.cjs")}var h=K(L());function T(r,e){if(!r||typeof r!="object")throw new Error(`[step-machine-public] Step "${e}" returned a non-object result.`);let t=r,n=t.result??t.status;if(typeof n=="string"&&n.trim().length>0){let o=t.data&&typeof t.data=="object"&&!Array.isArray(t.data)?{...t.data}:{},a=typeof t.error=="string"?t.error:void 0;return a&&!("error"in o)&&(o.error=a),{result:n,data:o,...a?{error:a}:{}}}return {result:"success",data:{...t}}}function $(r,e){if(!e||e.length===0)return r;let t={};for(let n of e)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n]);return t}function x(r,e){return async(t,n)=>{let o=await r(t,n),a=T(o,n?.stepName??"unknown");return {result:a.result,data:$(a.data,e),...a.error?{error:a.error}:{}}}}function M(r,e,t){if(!e||e.length===0)return null;for(let n of e)try{if(!h(n).evaluate(r))return {result:"failure",data:{error:`[${t}] input validation failed: ${n}`}}}catch(o){let a=o instanceof Error?o.message:String(o);return {result:"failure",data:{error:`[${t}] input validation error on "${n}": ${a}`}}}return null}function F(r,e,t){return !e||e.length===0?r:async(n,o)=>{let a=M(n,e,t);return a||r(n,o)}}function A(r){return !!r&&typeof r=="object"&&r.type==="compute-jsonata"&&Array.isArray(r.expr)&&r.expr.length>0}function O(r){if(!r||typeof r!="object")return false;let e=r;if(e.type!=="ref"||typeof e.howToRun!="string")return false;if(typeof e.whatToRun=="string")return true;if(e.whatToRun&&typeof e.whatToRun=="object"){let t=e.whatToRun;return typeof t.kind=="string"&&typeof t.value=="string"}return false}function U(r){if(typeof r=="string"){let e=r.indexOf("=");if(e<1)throw new Error(`[step-machine-public] Invalid compute expression (missing "="): "${r}"`);return {bindTo:r.slice(0,e).trim(),expr:r.slice(e+1).trim()}}if(r&&typeof r=="object"&&typeof r.bindTo=="string"&&typeof r.expr=="string")return r;throw new Error(`[step-machine-public] Invalid compute step: ${JSON.stringify(r)}`)}function G(r,e,t){let n=e.split("."),o=r;for(let a=0;a<n.length-1;a++){let s=n[a];(o[s]==null||typeof o[s]!="object")&&(o[s]={}),o=o[s];}o[n[n.length-1]]=t;}function I(r,e,t){let n=r.expr.map(U);return async o=>{let a=o&&typeof o=="object"&&!Array.isArray(o)?{...o}:{},s={},l={expects_data:a,data:s,...t?{config:t}:{}},p,i;for(let u of n)try{let c=h(u.expr).evaluate(l);if(u.bindTo==="result")p=c!=null?String(c):"success";else if(u.bindTo==="error")i=c!=null?String(c):void 0;else if(u.bindTo.startsWith("data."))G(s,u.bindTo.slice(5),c);else return {result:"failure",data:{},error:`[${e}] invalid bindTo "${u.bindTo}": must be "result", "error", or start with "data."`}}catch(c){let d=c instanceof Error?c.message:String(c);return {result:"failure",data:{},error:`[${e}] compute "${u.bindTo}" failed: ${d}`}}return p===void 0?{result:"failure",data:{},error:`[${e}] compute-jsonata: no "result" binding declared \u2014 add '- result = "success"' to expr`}:i?{result:p,data:s,error:i}:{result:p,data:s}}}function E(r,e,t,n){let{type:o,...a$1}=r,s={...a$1,whatToRun:typeof a$1.whatToRun=="object"?a(a$1.whatToRun):a$1.whatToRun};return async l=>{let p=l&&typeof l=="object"&&!Array.isArray(l)?{...l}:{};n&&(p.config=n);try{let i=await t(s,p);if(!r.outputTransforms)return i;if(i&&i.result!=="success"){let u=i.data&&typeof i.data.error=="string"?String(i.data.error):void 0;return u&&!i.error?{...i,error:u}:i}try{return b(r.outputTransforms,i,e)}catch(u){let c=u instanceof Error?u.message:String(u);return {result:"failure",data:{},error:c}}}catch(i){let u=i instanceof Error?i.message:String(i);return {result:"failure",data:{error:`[step-machine-public] step "${e}" invoke threw: ${u}`}}}}}function z(){return async r=>({result:"success",data:r&&typeof r=="object"&&!Array.isArray(r)?r:{}})}function Q(r,e,t){return async(n,o)=>{let a=n?.[e.items];if(!Array.isArray(a))return {result:"failure",data:{},error:`[${t}] forEach: "${e.items}" is not an array (got ${typeof a})`};let s=a,l=e.collectAs??`${e.items}_results`;if(s.length===0)return {result:"success",data:{[l]:[]}};let{[e.items]:p,...i}=n,u=Math.max(1,e.concurrency??1),c=new Array(s.length),d=0,w=0,S=0;return await new Promise(g=>{function f(){for(;d<u&&w<s.length;){let y=w++;d++;let _={...i,[e.as]:s[y]};r(_,o).then(m=>{c[y]=m;}).catch(m=>{let P=m instanceof Error?m.message:String(m);c[y]={result:"failure",data:{},error:P};}).finally(()=>{d--,c[y]?.result==="failure"&&S++,w>=s.length&&d===0?g():f();});}d===0&&w>=s.length&&g();}f();}),S>0?{result:"failure",data:{errors:c.filter(f=>f.result==="failure").map(f=>f.error)},error:`[${t}] forEach: ${S}/${s.length} items failed`}:{result:"success",data:{[l]:c.map(g=>g.data)}}}}function J(r,e,t){let n=Array.isArray(e?.produces_data)?e?.produces_data:void 0,o=Array.isArray(e?.input_validations)?e?.input_validations:void 0,a=e?.config??void 0,s=e?.handler,l;return A(s)?l=I(s,r,a):O(s)?l=E(s,r,t.invoke,a):l=z(),e?.forEach&&(l=Q(l,e.forEach,r)),F(x(l,n),o,r)}function H(r,e){let t={};for(let[n,o]of Object.entries(r.steps??{}))t[n]=J(n,o,e);return t}function X(r){let e=r.storeFactory||(()=>new a$1);return {async run(t,n){try{let o=H(t,{invoke:r.invokeRef}),s=await g(t,o,{store:e()}).run(n);return s.status!=="completed"?{dispatched:!1,error:s.error?.message||s.status}:{dispatched:!0}}catch(o){return {dispatched:false,error:o instanceof Error?o.message:String(o)}}}}}export{H as buildStepHandlersForFlow,I as createComputeJsonataHandler,z as createPassthroughHandler,E as createRefStepHandler,X as createStepMachineChatFlowRunner,$ as filterProducedData,A as isComputeJsonataSpec,O as isRefSpec,h as jsonata,T as normalizeHandlerResult,J as resolveStepHandler,M as runInputValidations,F as wrapWithInputValidations,x as wrapWithOutputFiltering};//# sourceMappingURL=index.js.map
1
+ import {b}from'../chunk-CIAJNUR4.js';import {g}from'../chunk-QWBNDVUA.js';export{g as createStepMachine,j as loadStepFlow}from'../chunk-QWBNDVUA.js';import {a as a$1}from'../chunk-JM5EKT57.js';export{a as MemoryStore}from'../chunk-JM5EKT57.js';export{a as KVStorageStore}from'../chunk-FZ2SBU5M.js';import {a}from'../chunk-BQS3EIEK.js';import'../chunk-MNEOJWPS.js';import'../chunk-FW4363Y4.js';import {createRequire}from'module';import {fileURLToPath}from'url';import {dirname,resolve}from'path';import {existsSync}from'fs';var C=dirname(fileURLToPath(import.meta.url)),K=createRequire(import.meta.url);function L(){let r=resolve(C,"./jsonata-sync.cjs");return existsSync(r)?r:resolve(C,"../card-compute/jsonata-sync.cjs")}var h=K(L());function T(r,e){if(!r||typeof r!="object")throw new Error(`[step-machine-public] Step "${e}" returned a non-object result.`);let t=r,n=t.result??t.status;if(typeof n=="string"&&n.trim().length>0){let o=t.data&&typeof t.data=="object"&&!Array.isArray(t.data)?{...t.data}:{},a=typeof t.error=="string"?t.error:void 0;return a&&!("error"in o)&&(o.error=a),{result:n,data:o,...a?{error:a}:{}}}return {result:"success",data:{...t}}}function $(r,e){if(!e||e.length===0)return r;let t={};for(let n of e)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n]);return t}function x(r,e){return async(t,n)=>{let o=await r(t,n),a=T(o,n?.stepName??"unknown");return {result:a.result,data:$(a.data,e),...a.error?{error:a.error}:{}}}}function M(r,e,t){if(!e||e.length===0)return null;for(let n of e)try{if(!h(n).evaluate(r))return {result:"failure",data:{error:`[${t}] input validation failed: ${n}`}}}catch(o){let a=o instanceof Error?o.message:String(o);return {result:"failure",data:{error:`[${t}] input validation error on "${n}": ${a}`}}}return null}function F(r,e,t){return !e||e.length===0?r:async(n,o)=>{let a=M(n,e,t);return a||r(n,o)}}function A(r){return !!r&&typeof r=="object"&&r.type==="compute-jsonata"&&Array.isArray(r.expr)&&r.expr.length>0}function O(r){if(!r||typeof r!="object")return false;let e=r;if(e.type!=="ref"||typeof e.howToRun!="string")return false;if(typeof e.whatToRun=="string")return true;if(e.whatToRun&&typeof e.whatToRun=="object"){let t=e.whatToRun;return typeof t.kind=="string"&&typeof t.value=="string"}return false}function U(r){if(typeof r=="string"){let e=r.indexOf("=");if(e<1)throw new Error(`[step-machine-public] Invalid compute expression (missing "="): "${r}"`);return {bindTo:r.slice(0,e).trim(),expr:r.slice(e+1).trim()}}if(r&&typeof r=="object"&&typeof r.bindTo=="string"&&typeof r.expr=="string")return r;throw new Error(`[step-machine-public] Invalid compute step: ${JSON.stringify(r)}`)}function G(r,e,t){let n=e.split("."),o=r;for(let a=0;a<n.length-1;a++){let s=n[a];(o[s]==null||typeof o[s]!="object")&&(o[s]={}),o=o[s];}o[n[n.length-1]]=t;}function I(r,e,t){let n=r.expr.map(U);return async o=>{let a=o&&typeof o=="object"&&!Array.isArray(o)?{...o}:{},s={},l={expects_data:a,data:s,...t?{config:t}:{}},p,i;for(let u of n)try{let c=h(u.expr).evaluate(l);if(u.bindTo==="result")p=c!=null?String(c):"success";else if(u.bindTo==="error")i=c!=null?String(c):void 0;else if(u.bindTo.startsWith("data."))G(s,u.bindTo.slice(5),c);else return {result:"failure",data:{},error:`[${e}] invalid bindTo "${u.bindTo}": must be "result", "error", or start with "data."`}}catch(c){let d=c instanceof Error?c.message:String(c);return {result:"failure",data:{},error:`[${e}] compute "${u.bindTo}" failed: ${d}`}}return p===void 0?{result:"failure",data:{},error:`[${e}] compute-jsonata: no "result" binding declared \u2014 add '- result = "success"' to expr`}:i?{result:p,data:s,error:i}:{result:p,data:s}}}function E(r,e,t,n){let{type:o,...a$1}=r,s={...a$1,whatToRun:typeof a$1.whatToRun=="object"?a(a$1.whatToRun):a$1.whatToRun};return async l=>{let p=l&&typeof l=="object"&&!Array.isArray(l)?{...l}:{};n&&(p.config=n);try{let i=await t(s,p);if(!r.outputTransforms)return i;if(i&&i.result!=="success"){let u=i.data&&typeof i.data.error=="string"?String(i.data.error):void 0;return u&&!i.error?{...i,error:u}:i}try{return b(r.outputTransforms,i,e)}catch(u){let c=u instanceof Error?u.message:String(u);return {result:"failure",data:{},error:c}}}catch(i){let u=i instanceof Error?i.message:String(i);return {result:"failure",data:{error:`[step-machine-public] step "${e}" invoke threw: ${u}`}}}}}function z(){return async r=>({result:"success",data:r&&typeof r=="object"&&!Array.isArray(r)?r:{}})}function Q(r,e,t){return async(n,o)=>{let a=n?.[e.items];if(!Array.isArray(a))return {result:"failure",data:{},error:`[${t}] forEach: "${e.items}" is not an array (got ${typeof a})`};let s=a,l=e.collectAs??`${e.items}_results`;if(s.length===0)return {result:"success",data:{[l]:[]}};let{[e.items]:p,...i}=n,u=Math.max(1,e.concurrency??1),c=new Array(s.length),d=0,w=0,S=0;return await new Promise(g=>{function f(){for(;d<u&&w<s.length;){let y=w++;d++;let _={...i,[e.as]:s[y]};r(_,o).then(m=>{c[y]=m;}).catch(m=>{let P=m instanceof Error?m.message:String(m);c[y]={result:"failure",data:{},error:P};}).finally(()=>{d--,c[y]?.result==="failure"&&S++,w>=s.length&&d===0?g():f();});}d===0&&w>=s.length&&g();}f();}),S>0?{result:"failure",data:{errors:c.filter(f=>f.result==="failure").map(f=>f.error)},error:`[${t}] forEach: ${S}/${s.length} items failed`}:{result:"success",data:{[l]:c.map(g=>g.data)}}}}function J(r,e,t){let n=Array.isArray(e?.produces_data)?e?.produces_data:void 0,o=Array.isArray(e?.input_validations)?e?.input_validations:void 0,a=e?.config??void 0,s=e?.handler,l;return A(s)?l=I(s,r,a):O(s)?l=E(s,r,t.invoke,a):l=z(),e?.forEach&&(l=Q(l,e.forEach,r)),F(x(l,n),o,r)}function H(r,e){let t={};for(let[n,o]of Object.entries(r.steps??{}))t[n]=J(n,o,e);return t}function X(r){let e=r.storeFactory||(()=>new a$1);return {async run(t,n){try{let o=H(t,{invoke:r.invokeRef}),s=await g(t,o,{store:e()}).run(n);return s.status!=="completed"?{dispatched:!1,error:s.error?.message||s.status}:{dispatched:!0}}catch(o){return {dispatched:false,error:o instanceof Error?o.message:String(o)}}}}}export{H as buildStepHandlersForFlow,I as createComputeJsonataHandler,z as createPassthroughHandler,E as createRefStepHandler,X as createStepMachineChatFlowRunner,$ as filterProducedData,A as isComputeJsonataSpec,O as isRefSpec,h as jsonata,T as normalizeHandlerResult,J as resolveStepHandler,M as runInputValidations,F as wrapWithInputValidations,x as wrapWithOutputFiltering};//# sourceMappingURL=index.js.map
2
2
  //# sourceMappingURL=index.js.map
@@ -103,6 +103,16 @@ interface QueueDeadLetterMessage<T = unknown> extends QueueMessage<T> {
103
103
  }
104
104
  interface QueueStorage {
105
105
  enqueue<T>(body: T): QueueMessage<T>;
106
+ /**
107
+ * Enqueue only if no active or leased message with the same dedupKey exists.
108
+ * Returns the new message, or null if a pending message with that key is
109
+ * already present. Dedup is released on ack or on dead-letter; nack-retry
110
+ * preserves the dedup key (the original message is still pending).
111
+ *
112
+ * Optional: adapters that cannot cheaply dedup (e.g. Azure Storage Queue)
113
+ * may leave this unimplemented; callers should fall back to `enqueue`.
114
+ */
115
+ enqueueIfAbsent?<T>(body: T, dedupKey: string): QueueMessage<T> | null;
106
116
  lease<T>(opts?: {
107
117
  max?: number;
108
118
  visibilityMs?: number;
@@ -172,4 +182,4 @@ interface AtomicRelayLock {
172
182
  tryAcquire(): (() => void) | null;
173
183
  }
174
184
 
175
- export { type ArchiveFactory as A, type BlobStorage as B, type JournalStorage as J, type KVStorage as K, type QueueStorage as Q, type ScratchStorage as S, type KindValueRef as a, type AtomicRelayLock as b, parseRef as p, serializeRef as s };
185
+ export { type ArchiveFactory as A, type BlobStorage as B, type JournalStorage as J, type KVStorage as K, type QueueMessage as Q, type ScratchStorage as S, type KindValueRef as a, type BlobStat as b, type JournalEntry as c, type JournalReadResult as d, type QueueLeasedMessage as e, type QueueDeadLetterMessage as f, type QueueStorage as g, type AtomicRelayLock as h, parseRef as p, serializeRef as s };
@@ -103,6 +103,16 @@ interface QueueDeadLetterMessage<T = unknown> extends QueueMessage<T> {
103
103
  }
104
104
  interface QueueStorage {
105
105
  enqueue<T>(body: T): QueueMessage<T>;
106
+ /**
107
+ * Enqueue only if no active or leased message with the same dedupKey exists.
108
+ * Returns the new message, or null if a pending message with that key is
109
+ * already present. Dedup is released on ack or on dead-letter; nack-retry
110
+ * preserves the dedup key (the original message is still pending).
111
+ *
112
+ * Optional: adapters that cannot cheaply dedup (e.g. Azure Storage Queue)
113
+ * may leave this unimplemented; callers should fall back to `enqueue`.
114
+ */
115
+ enqueueIfAbsent?<T>(body: T, dedupKey: string): QueueMessage<T> | null;
106
116
  lease<T>(opts?: {
107
117
  max?: number;
108
118
  visibilityMs?: number;
@@ -172,4 +182,4 @@ interface AtomicRelayLock {
172
182
  tryAcquire(): (() => void) | null;
173
183
  }
174
184
 
175
- export { type ArchiveFactory as A, type BlobStorage as B, type JournalStorage as J, type KVStorage as K, type QueueStorage as Q, type ScratchStorage as S, type KindValueRef as a, type AtomicRelayLock as b, parseRef as p, serializeRef as s };
185
+ export { type ArchiveFactory as A, type BlobStorage as B, type JournalStorage as J, type KVStorage as K, type QueueMessage as Q, type ScratchStorage as S, type KindValueRef as a, type BlobStat as b, type JournalEntry as c, type JournalReadResult as d, type QueueLeasedMessage as e, type QueueDeadLetterMessage as f, type QueueStorage as g, type AtomicRelayLock as h, parseRef as p, serializeRef as s };
@@ -1,2 +1,2 @@
1
- 'use strict';var chunkKHJABJ45_cjs=require('../chunk-KHJABJ45.cjs'),chunkH5KD3JPY_cjs=require('../chunk-H5KD3JPY.cjs');require('../chunk-GNFE24S7.cjs');Object.defineProperty(exports,"KVStorageStore",{enumerable:true,get:function(){return chunkKHJABJ45_cjs.a}});Object.defineProperty(exports,"MemoryStore",{enumerable:true,get:function(){return chunkH5KD3JPY_cjs.a}});//# sourceMappingURL=index.cjs.map
1
+ 'use strict';var chunkH5KD3JPY_cjs=require('../chunk-H5KD3JPY.cjs'),chunkKHJABJ45_cjs=require('../chunk-KHJABJ45.cjs');require('../chunk-GNFE24S7.cjs');Object.defineProperty(exports,"MemoryStore",{enumerable:true,get:function(){return chunkH5KD3JPY_cjs.a}});Object.defineProperty(exports,"KVStorageStore",{enumerable:true,get:function(){return chunkKHJABJ45_cjs.a}});//# sourceMappingURL=index.cjs.map
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1,4 +1,4 @@
1
1
  export { MemoryStore } from './memory.cjs';
2
2
  export { KVStorageStore } from './kv.cjs';
3
3
  import '../types-DjlwALZC.cjs';
4
- import '../storage-interface-Ct-C4tlz.cjs';
4
+ import '../storage-interface-BFiD3kyB.cjs';
@@ -1,4 +1,4 @@
1
1
  export { MemoryStore } from './memory.js';
2
2
  export { KVStorageStore } from './kv.js';
3
3
  import '../types-DjlwALZC.js';
4
- import '../storage-interface-Ct-C4tlz.js';
4
+ import '../storage-interface-BFiD3kyB.js';
@@ -1,2 +1,2 @@
1
- export{a as KVStorageStore}from'../chunk-FZ2SBU5M.js';export{a as MemoryStore}from'../chunk-JM5EKT57.js';import'../chunk-FW4363Y4.js';//# sourceMappingURL=index.js.map
1
+ export{a as MemoryStore}from'../chunk-JM5EKT57.js';export{a as KVStorageStore}from'../chunk-FZ2SBU5M.js';import'../chunk-FW4363Y4.js';//# sourceMappingURL=index.js.map
2
2
  //# sourceMappingURL=index.js.map
@@ -1,5 +1,5 @@
1
1
  import { l as StepMachineStore, k as StepMachineState } from '../types-DjlwALZC.cjs';
2
- import { K as KVStorage } from '../storage-interface-Ct-C4tlz.cjs';
2
+ import { K as KVStorage } from '../storage-interface-BFiD3kyB.cjs';
3
3
 
4
4
  /**
5
5
  * yaml-flow - KVStorageStore
@@ -1,5 +1,5 @@
1
1
  import { l as StepMachineStore, k as StepMachineState } from '../types-DjlwALZC.js';
2
- import { K as KVStorage } from '../storage-interface-Ct-C4tlz.js';
2
+ import { K as KVStorage } from '../storage-interface-BFiD3kyB.js';
3
3
 
4
4
  /**
5
5
  * yaml-flow - KVStorageStore
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "yaml-flow",
3
- "version": "8.6.1",
3
+ "version": "8.6.2",
4
4
  "description": "Unified workflow engine: step-machine (sequential) + event-graph (stateless DAG) with pluggable storage",
5
5
  "author": "",
6
6
  "license": "MIT",
@@ -14,6 +14,11 @@
14
14
  "import": "./lib/board-live-cards-public.js",
15
15
  "require": "./lib/board-live-cards-public.cjs"
16
16
  },
17
+ "./cloud-storage": {
18
+ "types": "./lib/cloud-storage.d.ts",
19
+ "import": "./lib/cloud-storage.js",
20
+ "require": "./lib/cloud-storage.cjs"
21
+ },
17
22
  "./board-live-cards-public": {
18
23
  "types": "./lib/board-live-cards-public.d.ts",
19
24
  "import": "./lib/board-live-cards-public.js",
@@ -1,2 +0,0 @@
1
- function p(e){return String(e).replace(/[^a-zA-Z0-9_-]/g,"_")}function m(e){let n=e.payload??{};return {id:e.id,role:typeof n.role=="string"?n.role:"system",text:typeof n.text=="string"?n.text:"",files:Array.isArray(n.files)?n.files:[],turn:typeof n.turn=="string"?n.turn:"",updated_at:typeof n.updated_at=="string"?n.updated_at:""}}function R(e,n){let a=t=>`chats/${p(t)}/processing`,r=t=>`chats/${p(t)}/config`;return {append(t,i,o,u=[],s=""){return e(t).append({role:i,text:o,files:u,turn:s,updated_at:new Date().toISOString()}).id},readAll(t){return e(t).readAll().map(m)},readAfter(t,i){let o=e(t).readAfter(i);return {records:o.entries.map(m),cursor:o.newCursor}},clear(t){e(t).clear?.();},setProcessing(t,i){i?n.write(a(t),true):n.delete(a(t));},isProcessing(t){return n.read(a(t))===true},getConfig(t){return n.read(r(t))??{}},setConfig(t,i){let o=n.read(r(t))??{};n.write(r(t),{...o,...i});}}}function S(){let e=globalThis.crypto;return typeof e?.randomUUID=="function"?String(e.randomUUID()):`id-${Date.now()}-${Math.random().toString(36).slice(2)}`}function $(){let e=new Map,n=new Map;function a(r){return e.has(r)||e.set(r,[]),e.get(r)}return {append(r,t,i,o=[],u=""){let s={id:S(),role:t,text:i,files:o,turn:u,updated_at:new Date().toISOString()};return a(r).push(s),s.id},readAll(r){return a(r).slice()},readAfter(r,t){let i=a(r);if(!t)return {records:i.slice(),cursor:i.length>0?i[i.length-1].id:null};let o=i.findIndex(s=>s.id===t),u=o===-1?i.slice():i.slice(o+1);return {records:u,cursor:u.length>0?u[u.length-1].id:t}},clear(r){e.set(r,[]);},setProcessing(r,t){t?n.set(`p:${r}`,true):n.delete(`p:${r}`);},isProcessing(r){return n.get(`p:${r}`)===true},getConfig(r){return n.get(`c:${r}`)??{}},setConfig(r,t){let i=n.get(`c:${r}`)??{};n.set(`c:${r}`,{...i,...t});}}}function y(){return new Date().toISOString()}function x(e){return new TextEncoder().encode(e).byteLength}function A(e){return e?{key:e.key,size:e.size,updatedAt:e.updatedAt,contentType:e.contentType}:null}function w(e){let n=String(e||"").match(/^(\d+)[-_]/);return n?parseInt(n[1],10):0}function I(e){let n=String(e||"").trim();if(!n)return "upload.bin";let a=Math.max(n.lastIndexOf("/"),n.lastIndexOf("\\"));return (a>=0?n.slice(a+1):n)||"upload.bin"}function k(e){return String(e||"").toLowerCase().replace(/\s+/g,"_").replace(/[^a-z0-9_-]/g,"_").replace(/_+/g,"_").replace(/^_+|_+$/g,"")||"file"}function z(e){if(!e||e===".")return "";let n=String(e).replace(/^\./,"").toLowerCase().replace(/[^a-z0-9]/g,"");return n?`.${n}`:""}function F(e){let n=I(e),a=n.lastIndexOf(".");return a<=0||a===n.length-1?{stem:n,ext:""}:{stem:n.slice(0,a),ext:n.slice(a)}}function M(e){let n=e.lastIndexOf("/");return n>=0?e.slice(n+1):e}function L(e){function n(a){let r=e.stat?A(e.stat(a)):null;if(r)return r;if(!e.exists(a))return null;let t=e.read(a);return t===null?{key:a}:{key:a,size:x(t)}}return {exists(a){return e.exists(a)},putText(a,r,t="text/plain; charset=utf-8"){e.write(a,r);let i=n(a)??{key:a};return i.contentType=t,i.updatedAt=i.updatedAt??y(),i.size=i.size??x(r),i},putBytes(a,r,t="application/octet-stream"){if(e.writeBytes)e.writeBytes(a,r);else {let o=JSON.stringify({__kind:"bytes-array",data:[...r]});e.write(a,o);}let i=n(a)??{key:a};return i.contentType=t,i.updatedAt=i.updatedAt??y(),i.size=i.size??r.byteLength,i},getText(a){let r=e.read(a);if(r===null){if(!e.readBytes)return null;let t=e.readBytes(a);return t===null?null:Buffer.from(t).toString("utf-8")}try{let t=JSON.parse(r);if(t&&t.__kind==="bytes-array"&&Array.isArray(t.data))return new TextDecoder("utf-8").decode(new Uint8Array(t.data))}catch{}return r},getBytes(a){if(e.readBytes){let t=e.readBytes(a);if(t!==null)return t}let r=e.read(a);if(r===null)return null;try{let t=JSON.parse(r);if(t&&t.__kind==="bytes-array"&&Array.isArray(t.data))return new Uint8Array(t.data)}catch{}return new TextEncoder().encode(r)},head:n,list(a=""){return e.listKeys(a).map(r=>n(r)??{key:r}).sort((r,t)=>r.key.localeCompare(t.key))},remove(a){e.remove(a);}}}function b(e){function n(t,i){let o=0,u=[];Array.isArray(i)&&u.push(...i);for(let s of e.list(`${t}/`))u.push(M(s.key));for(let s of u){let l=w(s);Number.isFinite(l)&&l>o&&(o=l);}return o+1}function a(t,i,o){let u=Number(o?.maxLen||32),{stem:s,ext:l}=F(t),h=z(l),C=k(s),d=`${String(i).padStart(3,"0")}-`,g=h,f=u-d.length-g.length;f<1&&(g="",f=u-d.length);let _=C.slice(0,Math.max(1,f)),c=`${d}${_}${g}`;return c.length>u&&(c=c.slice(0,u).replace(/\.$/,"")),c}function r(t,i,o){let u=n(t,o?.seedNames),s=a(i,u,{maxLen:o?.maxLen});for(;e.exists(`${t}/${s}`);)u+=1,s=a(i,u,{maxLen:o?.maxLen});return s}return {nextSerial:n,buildStoredName:a,allocateStoredName:r}}function N(){function e(t,i){if(!Array.isArray(t))return [];let o=[];for(let u of t){if(!u||typeof u!="object")continue;let s=u;typeof s.stored_name=="string"&&o.push({name:typeof s.name=="string"?s.name:s.stored_name,stored_name:s.stored_name,size:typeof s.size=="number"&&Number.isFinite(s.size)?s.size:null,mime_type:typeof s.mime_type=="string"?s.mime_type:null,uploaded_at:typeof s.uploaded_at=="string"?s.uploaded_at:i||null,chat:s.chat===true});}return o}function n(t){return !t||typeof t!="object"?[]:e(t.files,void 0)}function a(t,i){let o=n(t);if(i.length===0)return t.files=o,o;let u=new Set(o.map(s=>s.stored_name));for(let s of i)u.has(s.stored_name)||(o.push(s),u.add(s.stored_name));return t.files=o,o}function r(t,i,o){let u=n(t);if(!Number.isInteger(i)||i<0||i>=u.length)return {ok:false,reason:"index_out_of_range"};let s=u[i];return !s||!s.stored_name?{ok:false,reason:"missing_stored_name"}:o&&o!==s.stored_name?{ok:false,reason:"stale_reference"}:{ok:true,file:s}}return {read:n,normalizeIncoming:e,merge:a,resolve:r}}export{R as a,$ as b,L as c,b as d,N as e};//# sourceMappingURL=chunk-6APH25VI.js.map
2
- //# sourceMappingURL=chunk-6APH25VI.js.map
@@ -1,2 +0,0 @@
1
- 'use strict';var chunkIXZG74EW_cjs=require('./chunk-IXZG74EW.cjs');function w(o,i){if(o?.status==="success")return Object.prototype.hasOwnProperty.call(o,"data")?o.data:void 0;throw o?.status==="fail"||o?.status==="error"?new Error(o.error||`${i} failed`):new Error(`${i} returned an unexpected response`)}function z(o,i){if(o?.status==="success"&&Object.prototype.hasOwnProperty.call(o,"data"))return o.data;throw o?.status==="success"?new Error(`${i} returned success without data`):o?.status==="fail"||o?.status==="error"?new Error(o.error||`${i} failed`):new Error(`${i} returned an unexpected response`)}function t(o){return o&&typeof o=="object"&&!Array.isArray(o)?o:{}}function b(o){return Array.isArray(o)?o:[]}function N(o,i){if(typeof i!="string"||i.length===0)return;let u=o,m=i;m.startsWith("fetched_sources.")&&(u=t(o).fetched_sources,m=m.slice(16));for(let k of m.split(".")){if(u==null||typeof u!="object")return;u=u[k];}return u}function $(o,i){let u=t(o.view),m=b(u.elements);return {layout:u.layout,features:u.features,elements:m.map((k,x)=>{let v=t(k),I=t(v.data),B=typeof v.visible=="string"?!!N(i,v.visible):true,U=typeof I.bind=="string"?I.bind:void 0,M=typeof I.maxRows=="number"?I.maxRows:void 0,P=U?N(i,U):void 0,q={id:typeof v.id=="string"&&v.id?v.id:`element-${x}`,kind:v.kind,label:v.label,visible:B};return P!==void 0&&(q.resolved=Array.isArray(P)&&typeof M=="number"?P.slice(0,M):P),q})}}function K(o,i){let u=typeof o.id=="string"&&o.id?o.id:"card",m=b(o.provides),k=m.length>0?m:[{bindTo:u,ref:"card_data"}],x={};for(let v of k){let I=t(v),B=typeof I.bindTo=="string"?I.bindTo:"",U=typeof I.ref=="string"?I.ref:"";if(!B||!U)continue;let M=N(i,U);M!==void 0&&(x[B]=M);}return x}function ie(o){if(typeof o!="string"||!o.trim())return null;let i=/^(file uploaded|AI generated|AI geneterated):\s*.*?#(\d+)\s*$/i.exec(o.trim());if(!i)return null;let u=Number.parseInt(i[2],10);return !Number.isInteger(u)||u<0?null:u}function ce(o){return {"card-content":o}}function O(o){let{meta:i,...u}=o;return u}function ue(o,i){return Object.prototype.hasOwnProperty.call(o,i)}function W(o){return t(o.meta).__visible_controlplane_only===true}function L(o,i){let u=w(o.get({params:{id:i}}),"cardStore.get"),m=Array.isArray(u?.cards)?u.cards:[];if(m.length===0)throw new Error(`Card "${i}" not found`);return m[0]}function me(o){let{board:i,nonCore:u,cardStore:m,chatStore:k,uploadCardFile:x,buildFileDownloadUrl:v,readFetchedSourceJsonByRef:I}=o;function B(r){if(Array.isArray(r.bytes))return new Uint8Array(r.bytes.map(e=>Math.max(0,Math.min(255,Number(e)||0))));if(typeof r.text=="string")return new TextEncoder().encode(r.text);if(typeof r.base64=="string"){let e=String(r.base64).replace(/-/g,"+").replace(/_/g,"/"),n=e+"=".repeat((4-e.length%4)%4),s=atob(n);return Uint8Array.from(s,a=>a.charCodeAt(0))}throw new Error("file entry requires bytes, text, or base64")}async function U(){let r=t(await J(u.describeTaskExecutorCapabilities({}),"describeTaskExecutorCapabilities"));return {version:r.version,commonSourceFields:t(r.commonSourceDefFields),sourceKinds:t(r.sourceKinds)}}function M(){let r=t(w(i.status({}),"status")),e=t(r.summary),n=b(r.cards);return {meta:t(r.meta),summary:{card_count:typeof e.card_count=="number"?e.card_count:0,completed:typeof e.completed=="number"?e.completed:0,eligible:typeof e.eligible=="number"?e.eligible:0,pending:typeof e.pending=="number"?e.pending:0,blocked:typeof e.blocked=="number"?e.blocked:0,in_progress:typeof e.in_progress=="number"?e.in_progress:0,failed:typeof e.failed=="number"?e.failed:0,unresolved:typeof e.unresolved=="number"?e.unresolved:0},cards:n.map(s=>{let a=t(s);return {"card-id":typeof a.name=="string"?a.name:null,status:a.status??null,error:a.error??null,requires:b(a.requires),requires_satisfied:b(a.requires_satisfied),requires_missing:b(a.requires_missing),provides_declared:b(a.provides_declared),provides_runtime:b(a.provides_runtime)}})}}function P(r){let e=String(r.cardId||"").trim();if(!e)throw new Error("inspectCardDefinitionAndRuntime requires cardId");let n=t(w(i.status({}),"status")),a=b(n.cards).map(t).find(p=>p.name===e);if(!a)throw new Error(`card "${e}" not found in board status`);let d=t(L(m,e));if(W(d))throw Object.assign(new Error(`card "${e}" not found`),{statusCode:404});let f=O(d),c=b(a.requires_satisfied).filter(p=>typeof p=="string"&&!!p),g=b(a.provides_runtime).filter(p=>typeof p=="string"&&!!p),R=Object.fromEntries(c.map(p=>[p,w(i.getOutputsDataObject({params:{key:p}}),`getOutputsDataObject(${p})`)])),h=Object.fromEntries(g.map(p=>[p,w(i.getOutputsDataObject({params:{key:p}}),`getOutputsDataObject(${p})`)])),C=t(w(i.getOutputsComputedValues({params:{key:e}}),"getOutputsComputedValues")),l=w(i.getOutputsFetchedSources({params:{key:e}}),"getOutputsFetchedSources"),_=b(d.source_defs).map(t),y={};for(let p of _)typeof p.bindTo=="string"&&typeof p.outputFile=="string"&&(y[p.outputFile]=p.bindTo);let S={};for(let[p,j]of Object.entries(l)){let T=y[p]??p;if(!I||typeof j!="string"){S[T]=null;continue}try{S[T]=I({cardId:e,ref:j});}catch{S[T]=null;}}let A={card_data:t(d.card_data),requires:R,fetched_sources:S,computed_values:C};return {cardId:e,card_status_in_board:a,card_definition_and_static_data:f,refs_for_fetched_source_files:l,runtime_data:{requires:R,provides:h,computed_values:C,rendered_view:$(d,A)}}}function q(r){let e=String(r.cardId||"").trim();if(!e)throw new Error("inspectChatMessagesOnCards requires cardId");let n=typeof r.turnId=="string"?r.turnId:"",s=r.allTurns===true,a=typeof r.tailTurnsBeforeId=="string"?r.tailTurnsBeforeId:"",d=s?void 0:r.lastUserTurns??(n?void 0:1),f=r.tail,c={...d===void 0?{}:{tailTurns:d},...n?{turnId:n}:{},...s?{allTurns:true}:{},...a?{tailTurnsBeforeId:a}:{}},g=Object.keys(c).length>0?{params:{cardId:e},body:c}:{params:{cardId:e}},R=w(k.readAll(g),"chatStore.readAll"),h=t(L(m,e)),C=b(t(h.card_data).files).map((y,S)=>({idx:S,stored_name:t(y).stored_name})).filter(y=>typeof y.stored_name=="string"&&y.stored_name.length>0),_=(Array.isArray(R.records)?R.records:[]).map(y=>{let A=t(y.payload),p={...y},j=typeof y?.role=="string"?y.role:typeof A.role=="string"?String(A.role):"",T=typeof y?.text=="string"?y.text:typeof A.text=="string"?String(A.text):"";if(j==="system"){let D=ie(T);if(D!==null&&C.some(E=>E.idx===D)){let E=`Retrieve using inspect-file-contents --card-id ${e} --file-idx ${D}`;p.retrieval_hint=E,Object.keys(A).length>0&&typeof y.role!="string"&&(p.payload={...A,retrieval_hint:E});}}return p});return {cardId:e,messages:typeof f=="number"&&f>=0?_.slice(-f):_}}function H(r){let e=String(r.cardId||"").trim(),n=Number(r.fileIdx);if(!e)throw new Error("inspectFileContents requires cardId");if(!Number.isInteger(n)||n<0)throw new Error("inspectFileContents requires fileIdx to be a non-negative integer");let s=t(L(m,e)),a=b(t(s.card_data).files).map(t);if(n>=a.length)throw new Error(`attachment index ${n} is out of range for card "${e}"`);let d=a[n],f=typeof d.stored_name=="string"?d.stored_name:null;return {cardId:e,fileIdx:n,downloadUrl:v({cardId:e,fileIdx:n,storedName:f}),...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 F(r){return await u.validateCardPreflight({body:ce(r.candidateCardContent)})}function G(r){if(!r.mockRequires||typeof r.mockRequires!="object"||Array.isArray(r.mockRequires))throw new Error("preflightMaterializeCandidateCard requires mockRequires");if(!r.mockFetchedSources||typeof r.mockFetchedSources!="object"||Array.isArray(r.mockFetchedSources))throw new Error("preflightMaterializeCandidateCard requires mockFetchedSources");let e=u.evalCardCompute({body:{"card-content":r.candidateCardContent,"mock-requires":r.mockRequires,"mock-fetched-sources":r.mockFetchedSources}});if(e.status!=="success")return e;let n=t(z(e,"evalCardCompute")),s=t(r.candidateCardContent),a={card_data:t(s.card_data),requires:t(r.mockRequires),fetched_sources:t(r.mockFetchedSources),computed_values:t(n.computed_values)};return {status:"success",data:{cardId:typeof n.cardId=="string"?n.cardId:typeof s.id=="string"?s.id:"(unknown)",ok:n.ok===true,computed_values:t(n.computed_values),errors:b(n.errors).map(d=>{let f=t(d);return {bindTo:typeof f.bindTo=="string"?f.bindTo:"",error:typeof f.error=="string"?f.error:""}}),provides_outputs:K(s,a),rendered_view:$(s,a)}}}async function Q(r){return await u.probeSourcePreflight({params:{sourceIdx:r.sourceIdx},body:{"card-content":r.candidateCardContent,"mock-projections":r.mockProjections}})}async function X(r){return await u.runSourcePreflight({params:{sourceIdx:r.sourceIdx},body:{"card-content":r.candidateCardContent,"mock-projections":r.mockProjections}})}async function Y(r){let e=String(r.cardId||"").trim();if(!e)throw new Error("preflightRunSingleSourceInLiveCard requires cardId");if(!r.mockRequires||typeof r.mockRequires!="object"||Array.isArray(r.mockRequires))throw new Error("preflightRunSingleSourceInLiveCard requires mockRequires");let n=t(L(m,e)),s=b(n.source_defs).filter(d=>!!d&&typeof d=="object"&&!Array.isArray(d)),a={};if(r.sourceIdx>=0&&r.sourceIdx<s.length){let d=s[r.sourceIdx],f=chunkIXZG74EW_cjs.a.enrichSourcesSync([d],{card_data:t(n.card_data),requires:r.mockRequires});Array.isArray(f)&&f.length>0&&(a=t(f[0]._projections));}return await u.runSourcePreflight({params:{sourceIdx:r.sourceIdx},body:{"card-content":n,"mock-requires":r.mockRequires,"mock-projections":a}})}async function Z(r){let e=t(await J(u.simulateCardCycle({body:{"card-content":r.candidateCardContent,"mock-requires":r.mockRequires}}),"simulateCardCycle")),n=t(r.candidateCardContent),s=t(e.validation),a=b(e.source_probes),d=b(e.projection_errors),f=t(e.fetched_sources),c=b(e.compute_errors),g=t(e.computed_values),R={card_data:t(n.card_data),requires:r.mockRequires,fetched_sources:f,computed_values:g},h=[];for(let C of b(s.issues))typeof C=="string"&&C&&h.push(C);for(let C of a){let l=t(C),_=typeof l.bindTo=="string"?l.bindTo:"source",y=typeof l.error=="string"?l.error:"";y&&h.push(`${_}: ${y}`);}for(let C of d){let l=t(C),_=typeof l.bindTo=="string"?l.bindTo:"source",y=typeof l.key=="string"?l.key:"projection",S=typeof l.error=="string"?l.error:"projection failed";h.push(`${_}.${y}: ${S}`);}for(let C of c){let l=t(C),_=typeof l.bindTo=="string"?l.bindTo:"compute",y=typeof l.error=="string"?l.error:"compute failed";h.push(`${_}: ${y}`);}return {status:"success",data:{cardId:typeof e.cardId=="string"?e.cardId:"(unknown)",ok:e.ok===true,issues:h,provides_outputs:K(n,R),rendered_view:$(n,R)}}}function ee(r){let e=String(r.cardId||"").trim();if(!e)throw new Error("manageReadCard requires cardId");let n=w(m.get({params:{id:e}}),"cardStore.get"),s=Array.isArray(n.cards)?n.cards.map(t):[];if(s.some(W))throw Object.assign(new Error(`Card "${e}" not found`),{statusCode:404});return s.map(a=>O(a))}function re(r){let e=String(r.cardId||"").trim(),n=String(r.role||"").trim(),s=typeof r.text=="string"?r.text:"",a=typeof r.turn=="string"?r.turn:"";if(!e)throw new Error("manageAddChatEntryAndAnyAttachments requires cardId");if(!n)throw new Error("manageAddChatEntryAndAnyAttachments requires role");if(n==="assistant"&&a){let c=w(k.readAll({params:{cardId:e},body:{turnId:a}}),"chatStore.readAll(existing turn messages)"),g=Array.isArray(c.records)?c.records.find(R=>R.role==="assistant"&&String(R.turn||"")===a):void 0;if(g)return {status:"success",data:{cardId:e,id:String(g.id),role:n,turn:a,files:Array.isArray(g.files)?g.files:[]}}}let d=b(r.files).map(c=>{let g=t(c),R=String(g.file_name??g.fileName??g.name??"").trim(),h=String(g.content_type??g.contentType??"application/octet-stream");if(!R)throw new Error("file entry requires file_name");return x({cardId:e,fileName:R,contentType:h,bytes:B(g)}).file});d.forEach((c,g)=>{let R=n==="assistant"?`AI generated: ${String(c.name||"")} as ${String(c.stored_name||"")} #${g}`:`file uploaded: ${String(c.name||"")} as ${String(c.stored_name||"")} #${g}`;w(k.append({params:{cardId:e},body:{role:"system",text:R,files:[],turn:a}}),"chatStore.append(system attachment message)");});let f=w(k.append({params:{cardId:e},body:{role:n,text:s,files:d,turn:a}}),"chatStore.append");return {status:"success",data:{cardId:e,id:String(f.id),role:n,turn:a,files:d}}}async function te(r){let e=String(r.cardId||"").trim(),n=t(r.candidateCardContent),s=O(n);if(!e)throw new Error("manageUpsertCard requires cardId");if(typeof s.id!="string"||!s.id.trim())throw new Error("candidateCardContent.id must be a non-empty string");if(s.id!==e)throw new Error(`candidateCardContent.id must match cardId (${e})`);let a=await F({candidateCardContent:s}),d=t(a),f=t(d.data);if(d.status!=="success"||f.isValid!==true)return {status:"fail",step:"validate",validation:a};let c=null;try{c=L(m,e);}catch{c=null;}let g=c&&ue(t(c),"meta")?{...s,meta:t(c).meta}:s,R=m.set({body:g});w(R,"cardStore.set");let h;try{h=i.upsertCard({params:{cardId:e,restart:!0}}),w(h,"upsertCard");}catch(l){try{c&&m.set({body:c});}catch{}throw l}let C=null;try{C=i.cardRefreshedNotify({params:{cardId:e}}),w(C,"cardRefreshedNotify");}catch{C=null;}return {status:"success",data:{validation:a,card_saved:null,board_result:h,refresh_notify:C}}}function ne(r){let e=String(r.cardId||"").trim();if(!e)throw new Error("manageRemoveCard requires cardId");let n=i.removeCard({params:{id:e}});w(n,"removeCard");let s=m.del({params:{id:e}});return w(s,"cardStore.del"),{status:"success",data:{board_result:n,store_result:s}}}function oe(r){let e=String(r.cardId||"").trim();if(!e)throw new Error("adminReadCard requires cardId");let n=w(m.get({params:{id:e}}),"cardStore.get");return Array.isArray(n.cards)?n.cards.map(s=>t(s)):[]}async function ae(r){let e=String(r.cardId||"").trim(),n=t(r.candidateCardContent),s=O(n);if(!e)throw new Error("adminUpsertCard requires cardId");if(typeof s.id!="string"||!s.id.trim())throw new Error("candidateCardContent.id must be a non-empty string");if(s.id!==e)throw new Error(`candidateCardContent.id must match cardId (${e})`);let a=await F({candidateCardContent:s}),d=t(a),f=t(d.data);if(d.status!=="success"||f.isValid!==true)return {status:"fail",step:"validate",validation:a};let c=null;try{c=L(m,e);}catch{c=null;}let g=c?t(t(c).meta):{},R={...s,meta:{...g,__visible_controlplane_only:true}},h=m.set({body:R});w(h,"cardStore.set");let C;try{C=i.upsertCard({params:{cardId:e,restart:!0}}),w(C,"upsertCard");}catch(_){try{c&&m.set({body:c});}catch{}throw _}let l=null;try{l=i.cardRefreshedNotify({params:{cardId:e}}),w(l,"cardRefreshedNotify");}catch{l=null;}return {status:"success",data:{validation:a,card_saved:null,board_result:C,refresh_notify:l}}}function se(r){let e=String(r.cardId||"").trim();if(!e)throw new Error("getChatProcessing requires cardId");let n=z(k.isProcessing({params:{cardId:e}}),"chatStore.isProcessing");return {cardId:e,active:!!n.active}}function de(r){let e=String(r.cardId||"").trim();if(!e)throw new Error("setChatProcessing requires cardId");if(typeof r.active!="boolean")throw new Error("setChatProcessing requires boolean active");return w(k.setProcessing({params:{cardId:e},body:{active:r.active}}),"chatStore.setProcessing"),{cardId:e,active:r.active}}return {discoverSourceKinds:U,inspectBoardRuntimeStatus:M,inspectCardDefinitionAndRuntime:P,inspectChatMessagesOnCards:q,inspectFileContents:H,preflightValidateCandidateCardDefinition:F,preflightMaterializeCandidateCard:G,preflightProbeSingleSourceInCandidateCard:Q,preflightRunSingleSourceInCandidateCard:X,preflightRunSingleSourceInLiveCard:Y,preflightRunOneCycleWithCandidateCard:Z,manageReadCard:ee,manageAddChatEntryAndAnyAttachments:re,manageUpsertCard:te,manageRemoveCard:ne,adminReadCard:oe,adminUpsertCard:ae,getChatProcessing:se,setChatProcessing:de}}async function J(o,i){return w(await o,i)}exports.a=me;//# sourceMappingURL=chunk-KNFFDVLD.cjs.map
2
- //# sourceMappingURL=chunk-KNFFDVLD.cjs.map
@@ -1,3 +0,0 @@
1
- 'use strict';var chunk5DB54ZX2_cjs=require('./chunk-5DB54ZX2.cjs'),chunkUVE65IPR_cjs=require('./chunk-UVE65IPR.cjs'),chunkG4XXRHL2_cjs=require('./chunk-G4XXRHL2.cjs'),chunkIXZG74EW_cjs=require('./chunk-IXZG74EW.cjs'),chunkYMEIPKLW_cjs=require('./chunk-YMEIPKLW.cjs');function _e(t,r){function n(){return t.readIndex()??{}}function c(l,m,g){let f=String(m||"").split(".").filter(Boolean);if(f.length===0)return g&&typeof g=="object"&&!Array.isArray(g)?g:{value:g};let I={...l},A=I;for(let j=0;j<f.length-1;j++){let B=f[j],K=A[B],Y=K&&typeof K=="object"&&!Array.isArray(K)?{...K}:{};A[B]=Y,A=Y;}return A[f[f.length-1]]=g,I}return {readCard(l){let m=n()[l];return !m||!t.cardExists(m.key)?null:t.readCard(m.key)},readCardKey(l){return n()[l]?.key??null},readAllCards(){let l=[];for(let[m,g]of Object.entries(n())){if(!t.cardExists(g.key))continue;let f=t.readCard(g.key);f?l.push(f):r?.(`[card-store] could not read card "${m}" at key "${g.key}"`);}return l},readChecksumIndex(){let l={};for(let[m,g]of Object.entries(n()))l[m]=g.checksum;return l},changedSince(l){let m=n(),g=[];for(let[f,I]of Object.entries(m))l[f]!==I.checksum&&g.push(f);for(let f of Object.keys(l))m[f]||g.push(f);return g},validateUpsert(l,m){let g=n(),f=g[l],I=Object.entries(g).find(([,A])=>A.key===m);return f&&f.key!==m?{ok:false,error:`Card id "${l}" is already mapped to key "${f.key}", cannot remap to "${m}"`}:I&&I[0]!==l?{ok:false,error:`Key "${m}" is already mapped to card id "${I[0]}", cannot remap to "${l}"`}:{ok:true}},writeCard(l,m,g){let f=n(),I=g??f[l]?.key??t.defaultCardKey(l),A=t.writeCard(I,m);f[l]={key:I,checksum:A,updatedAt:new Date().toISOString()},t.writeIndex(f);},patchCard(l,m,g){let f=n(),I=f[l];if(!I||!t.cardExists(I.key))throw new Error(`card "${l}" not found`);let A=t.readCard(I.key);if(!A||typeof A!="object"||Array.isArray(A))throw new Error(`card "${l}" is not patchable`);let j=c(A,m,g),B=t.writeCard(I.key,j);f[l]={key:I.key,checksum:B,updatedAt:new Date().toISOString()},t.writeIndex(f);},removeCard(l){let m=n(),g=m[l];g&&(t.removeCard(g.key),delete m[l],t.writeIndex(m));},readIndex(){return n()}}}function be(t,r){return {readSourceData(n,c){let l=t.read(`${n}/${c}`);if(l==null)return null;let m=l.trim();if(!m)return null;try{return JSON.parse(m)}catch{return m}},ingestSourceDataStaged(n,c,l,m){let g=r(l);t.write(`${n}/.staged/${m}/${c}`,g);},commitSourceData(n,c,l){let m=`${n}/.staged/${l}/${c}`,g=t.read(m);return g==null?false:(t.write(`${n}/${c}`,g),t.remove(m),true)},hasSource(n,c){return t.exists(`${n}/${c}`)},listSources(n){return t.listKeys(`${n}/`).filter(c=>!c.includes("/.staged/")).map(c=>c.slice(`${n}/`.length))}}}function ze(t){function r(n){let c=t.readAllEntries();if(!n)return c;let l=c.findIndex(m=>m.id===n);return l===-1?c:c.slice(l+1)}return {readEntriesAfterCursor(n){let c=r(n);return c.length===0?{events:[],newCursor:n}:{events:c.map(l=>l.event),newCursor:c[c.length-1].id}},pendingCount(n){return r(n).length},appendEvent(n){t.appendEntry({id:t.generateId(),event:n});}}}function Qe(t,r){return {appendEntries(n,c){if(!n||c.length===0)return;let l=t.read(n)??[];t.write(n,[...l,...c]);},dispatchEntriesForJournalId(n,c){if(!n)return;let l=t.read(n);if(!(!l||l.length===0)){for(let m of l)try{c(m);}catch(g){let f=g instanceof Error?g.message:String(g);try{r(m,f);}catch{}}t.delete(n);}}}}var ve="v1",ce="board/graph",Ze="board/lastJournalProcessedId";function Ue(t){return `cards/${t}/runtime`}function et(t){return {readRuntime(r){return t.read(Ue(r))??{_sources:{}}},writeRuntime(r,n){t.write(Ue(r),n);}}}function ht(t,r){let n={...t};for(let c of r.deleteKeys)delete n[c];return {...n,...r.shallowMerge}}function tt(t){return {readSnapshot(r){return t.readValues(r)},commitSnapshot(r,n){if(n.schemaVersion!==ve)throw new Error(`Unsupported snapshot schema version: ${n.schemaVersion}`);let c=t.readValues(r);if(c.version!==n.expectedVersion)return {ok:false,reason:"version-mismatch",currentVersion:c.version};let l=ht(c.values,n);return {ok:true,newVersion:t.writeValues(r,l,n.deleteKeys)}}}}function Oe(t){function r(n){let c=t.read(n);return c==null?null:typeof c=="string"?c:JSON.stringify(c)}return {readTaskExecutorRef(){let n=r("task-executor");if(n?.trim())return chunk5DB54ZX2_cjs.c(n.trim())},writeTaskExecutorRef(n){t.write("task-executor",chunk5DB54ZX2_cjs.b(n));},readChatHandlerFlow(){return t.read("chat-handler-flow")},writeChatHandlerFlow(n){t.write("chat-handler-flow",n);},readCardStoreRef(){return r("card-store-ref")},writeCardStoreRef(n){t.write("card-store-ref",n);},readOutputsStoreRef(){return r("outputs-store-ref")},writeOutputsStoreRef(n){t.write("outputs-store-ref",n);},readScratchStoreRef(){return r("scratch-store-ref")},writeScratchStoreRef(n){t.write("scratch-store-ref",n);},readArchiveStoreRef(){return r("archive-store-ref")},writeArchiveStoreRef(n){t.write("archive-store-ref",n);},readChatStoreRef(){return r("chat-store-ref")},writeChatStoreRef(n){t.write("chat-store-ref",n);},readArtifactsStoreRef(){return r("artifacts-store-ref")},writeArtifactsStoreRef(n){t.write("artifacts-store-ref",n);}}}function rt(t){return {writeComputedValues(r,n){t.write(`cards/${r}/computed_values`,n);},readComputedValues(r){return t.read(`cards/${r}/computed_values`)},readAllComputedValues(){let r={};for(let n of t.listKeys("cards/")){let c=n.match(/^cards\/([^/]+)\/computed_values$/);c&&(r[c[1]]=t.read(n));}return r},writeDataObjects(r){for(let[n,c]of Object.entries(r))n&&t.write(`data-objects/${n}`,c);},readDataObject(r){return t.read(`data-objects/${r}`)},readAllDataObjects(){let r={};for(let n of t.listKeys("data-objects/"))r[n.slice(13)]=t.read(n);return r},writeStatusSnapshot(r){t.write("status",r);},readStatusSnapshot(){return t.read("status")}}}function We(t){return t?{lastRequestedToken:t.lastRequestedToken,lastCompletedToken:t.lastCompletedToken,lastCompletionStatus:t.lastCompletionStatus??(t.lastCompletedToken?"success":"not-started"),queueRequestedToken:t.queueRequestedToken}:{lastCompletionStatus:"not-started"}}function Rt(t){return t?.lastRequestedToken?t.lastCompletedToken!==t.lastRequestedToken:false}function Xe(t,r){return t?.lastRequestedToken?Rt(t)?"in-flight":!t.lastCompletedToken||t.lastCompletedToken<r?"dispatch":"idle":"dispatch"}function kt(t,r){return {...t,lastCompletedToken:r,lastCompletionStatus:"success"}}function Ye(t,r){return {...t,lastCompletedToken:r,lastCompletionStatus:"failure"}}function we(t,r){let n=r.state.tasks,c=r.config.tasks,l=Object.keys(n),m=chunkG4XXRHL2_cjs.r(r),g={completed:0,failed:0,in_progress:0,pending:0,blocked:0,unresolved:0},f=new Map;for(let y of m.pending)f.set(y.taskName,y.waitingOn);for(let y of m.unresolved)f.set(y.taskName,y.missingTokens);for(let y of m.blocked)f.set(y.taskName,y.failedTokens);let I=new Map;for(let[y,a]of Object.entries(c))for(let o of a.requires??[]){let u=I.get(o)??[];u.push(y),I.set(o,u);}let A=l.sort().map(y=>{let a=n[y],o=c[y]??{requires:[],provides:[]};a.status==="completed"?g.completed+=1:a.status==="failed"?g.failed+=1:a.status==="in-progress"&&(g.in_progress+=1);let u=o.requires??[],h=o.provides??[],b=Object.keys(a.data??{}).sort(),E=u.filter(L=>r.state.availableOutputs.includes(L)),_=u.filter(L=>!r.state.availableOutputs.includes(L)),V=f.get(y)??_,F=new Set;for(let L of h)for(let J of I.get(L)??[])J!==y&&F.add(J);let D=a.failedAt,$=a.error?{message:a.error,code:"TASK_FAILED",at:D,source:"task-runtime"}:void 0;return {name:y,status:a.status,error:$,requires:u,requires_satisfied:E,requires_missing:_,provides_declared:h,provides_runtime:b,blocked_by:V,unblocks:Array.from(F).sort(),runtime:{attempt_count:a.executionCount??0,restart_count:a.retryCount??0,in_progress_since:a.status==="in-progress"?a.startedAt??null:null,last_transition_at:a.lastUpdated??null,last_completed_at:a.completedAt??null,last_restarted_at:a.startedAt??null,status_age_ms:a.lastUpdated?0:null}}});g.pending=m.pending.length,g.blocked=m.blocked.length,g.unresolved=m.unresolved.length;let j=A.map(y=>({name:y.name,fanOut:y.unblocks.length})).sort((y,a)=>a.fanOut-y.fanOut||y.name.localeCompare(a.name)),B=j.length>0?j[0]:{name:null,fanOut:0},K=new Set;for(let y of Object.values(c))for(let a of y.requires??[])K.add(a);let Y=0;for(let[y,a]of Object.entries(c)){let o=(a.requires??[]).length===0,h=(a.provides??[]).some(b=>(I.get(b)??[]).some(E=>E!==y));o&&!h&&(Y+=1);}return {schema_version:"v1",meta:{board:{path:t}},summary:{card_count:l.length,completed:g.completed,eligible:m.eligible.length,pending:g.pending,blocked:g.blocked,unresolved:g.unresolved,failed:g.failed,in_progress:g.in_progress,orphan_cards:Y,topology:{edge_count:Array.from(K).length,max_fan_out_card:B.name,max_fan_out:B.fanOut}},cards:A}}function St(){return new Date().toISOString()}function nt(t,r,n,c,l,m,g){return async f=>{let I=[],A=n.cardStore.readCard(f.nodeId);if(!A)return "task-initiate-failure";let j=A.id,B=A.card_data??{},K=A.source_defs??[],Y=K.filter(S=>S.optionalForCompletionGating!==true),y=n.cardRuntimeStore.readRuntime(j),a=false,o=()=>{a&&(n.cardRuntimeStore.writeRuntime(j,y),a=false);},u=S=>We(y._sources[S]),h=(S,C)=>{y._sources[S]=We(C),a=true;},b=f.taskState?.executionCount??0;if(y._lastExecutionCount!==b&&(y._sources={},y._lastExecutionCount=b,a=true),f.update){let S=f.update,C=S.outputFile;if(C){let v=u(C);if(S.failure){let P=S.rqt??v.lastRequestedToken??v.queueRequestedToken;P&&h(C,Ye(v,P));}else {let P=S.rqt;if(!v.lastCompletedToken||P>v.lastCompletedToken){let M=typeof S.deliveryToken=="string"?S.deliveryToken:void 0,z=false;M&&(z=n.fetchedSourcesStore.commitSourceData(j,C,M)),z?h(C,kt(v,P)):h(C,Ye(v,P));}}o();}}let _={};for(let S of K)if(S.outputFile){let C=n.fetchedSourcesStore.readSourceData(j,S.outputFile);C!==null&&(_[S.bindTo]=C);}let V={};for(let[S,C]of Object.entries(f.state??{}))if(C!==null&&typeof C=="object"&&!Array.isArray(C)){let v=C[S];V[S]=v!==void 0?v:C;}else V[S]=C;let F={id:j,card_data:{...B},requires:V,source_defs:K,compute:A.compute};F._sourcesData=_,A.compute&&chunkIXZG74EW_cjs.a.runSync(F,{sourcesData:_}),(m??n.outputStore.writeComputedValues.bind(n.outputStore))(j,F.computed_values??{});let D={...A},$=chunkIXZG74EW_cjs.a.enrichSourcesSync(Array.isArray(A.source_defs)?A.source_defs:void 0,{card_data:A.card_data,requires:V}),L=t.value;D.source_defs=Array.isArray($)?$.map(S=>({...S,boardDir:typeof S.boardDir=="string"&&S.boardDir?S.boardDir:L})):$;let J=St(),te=f.update?void 0:J,re=Y.filter(S=>{let C=S.outputFile;if(typeof C!="string"||!C)return true;let v=u(C);te&&(v={...v,queueRequestedToken:te},h(C,v));let P=v.queueRequestedToken??v.lastRequestedToken??J,M=Xe(v,P);return M==="in-flight"?false:M==="dispatch"});if(o(),re.length>0){let S=false,C=J;for(let v of re){let P=v.outputFile;if(typeof P!="string"||!P)continue;let M=u(P),z=M.queueRequestedToken??J;h(P,{...M,lastRequestedToken:z}),C=z,S=true;}return S&&o(),S&&(I.push({taskKind:"source-fetch",payload:{boardRef:chunkUVE65IPR_cjs.a(t),enrichedCard:D,callbackToken:f.callbackToken,rqt:C}}),n.executionRequestStore.appendEntries(r,I)),"task-initiated"}if(Y.some(S=>{let C=S.outputFile;if(typeof C!="string"||!C)return false;let v=u(C),P=v.queueRequestedToken??v.lastRequestedToken??J;return Xe(v,P)==="in-flight"}))return "task-initiated";let ne=A.provides??[],oe={};for(let{bindTo:S,ref:C}of ne)oe[S]=chunkIXZG74EW_cjs.a.resolve(F,C);return (g??n.outputStore.writeDataObjects.bind(n.outputStore))(oe),K.filter(S=>{if(S.optionalForCompletionGating!==true)return false;let C=u(S.outputFile);return !C.lastRequestedToken||!C.lastCompletedToken?true:C.lastCompletedToken<=C.lastRequestedToken}).length>0&&I.push({taskKind:"source-fetch",payload:{boardRef:chunkUVE65IPR_cjs.a(t),enrichedCard:D,callbackToken:f.callbackToken,rqt:J}}),c(f.nodeId,oe),I.length>0&&n.executionRequestStore.appendEntries(r,I),"task-initiated"}}var Fe={settings:{completion:"manual",refreshStrategy:"data-changed"},tasks:{}};function ot(t){return {[ce]:t.graph,[Ze]:t.lastDrainedJournalId}}function st(t){let r=t[ce],n=t[Ze];if(!r||typeof r!="object")throw new Error(`State snapshot is missing required key: ${ce}`);return {graph:r,lastDrainedJournalId:typeof n=="string"?n:""}}function at(t){let r=t.requires,n=t.provides?.map(c=>c.bindTo)??[];return {requires:r&&r.length>0?r:void 0,provides:n,taskHandlers:["card-handler"],description:t.meta?.title??t.id}}function x(t){return t!==void 0?{status:"success",data:t}:{status:"success"}}function k(t){return {status:"fail",error:t}}function T(t){return {status:"error",error:t instanceof Error?t.message:String(t)}}function yt(t){let r=new TextEncoder().encode(t),n=Array.from(r,c=>String.fromCharCode(c)).join("");return btoa(n).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function ut(t){let r=t.replace(/-/g,"+").replace(/_/g,"/"),n=r+"=".repeat((4-r.length%4)%4),c=atob(n),l=Uint8Array.from(c,m=>m.charCodeAt(0));return new TextDecoder().decode(l)}function xe(t){try{let r=JSON.parse(ut(t));return typeof r?.t=="string"?{taskName:r.t}:null}catch{return null}}function bt(t){return yt(JSON.stringify(t))}function it(t){try{let r=JSON.parse(ut(t));return typeof r?.cbk=="string"&&typeof r?.cid=="string"&&typeof r?.b=="string"&&typeof r?.d=="string"?r:null}catch{return null}}function H(){return new Date().toISOString()}function Vt(t,r){let n=r.onWarn??(()=>{}),c=chunkUVE65IPR_cjs.a(t);function l(s){if(s.length!==0)try{let e=r.publishBoardChangeNotifications?.(s);e&&typeof e.catch=="function"&&e.catch(i=>n(`[board-live-cards-public] publishBoardChangeNotifications failed: ${i instanceof Error?i.message:String(i)}`));}catch(e){n(`[board-live-cards-public] publishBoardChangeNotifications failed: ${e instanceof Error?e.message:String(e)}`);}}function m(){let s=f().readCardStoreRef();if(!s)throw new Error(`Board at ${t.value} has no card store configured. Run: init --base-ref <ref> --store-ref <b64-ref>`);let e=r.kvStorageForRef(s);return {readIndex(){return e.read("_index")},writeIndex(i){e.write("_index",i);},readCard(i){return e.read(i)},writeCard(i,p){return e.write(i,p),r.hashFn(p)},removeCard(i){e.delete(i);},cardExists(i){return e.read(i)!==null},defaultCardKey(i){return i}}}let g={readValues(s){let e=r.kvStorage("state-snapshot"),i=e.listKeys().sort();if(i.length===0)return {version:null,values:{}};let p={};for(let w of i)p[w]=e.read(w);return {version:r.hashFn(p),values:p}},writeValues(s,e,i){let p=r.kvStorage("state-snapshot");for(let w of i)p.delete(w);for(let[w,O]of Object.entries(e))p.write(w,O);return r.hashFn(e)}},f=()=>Oe(r.kvStorage("config")),I=()=>tt(g),A=()=>ze(r.journalAdapter()),j=()=>_e(m(),n),B=()=>{let s=f().readOutputsStoreRef();if(!s)throw new Error(`Board at ${t.value} has no outputs store configured. Run: init --outputs-store-ref <b64-ref>`);return rt(r.kvStorageForRef(s))},K=()=>{let s=f().readArchiveStoreRef();return s?r.archiveFactoryForRef(s):r.archiveFactory()};function Y(){return !!I().readSnapshot(t.value).values[ce]}function y(){let s=I().readSnapshot(t.value);if(!s.values[ce])throw new Error(`Board not initialized at ${t.value}`);return st(s.values)}function a(s,e){let i=I().commitSnapshot(t.value,{schemaVersion:ve,expectedVersion:e,commitId:r.genId(),committedAt:H(),deleteKeys:[],shallowMerge:ot(s)});if(!i.ok)throw new Error(`Snapshot commit failed (version mismatch): expected=${e??"null"} current=${i.currentVersion??"null"}`)}function o(s){A().appendEvent(s);}async function u(){let s=(d,R)=>{let q=d.payload,X=(q?.enrichedCard??{}).id??q?.cardId??"unknown";o({type:"task-failed",taskName:X,error:R,timestamp:H()});},e=Qe(r.kvStorage("execution-requests"),s),i=et(r.kvStorage("card-runtime")),p=be(r.blobStorage("sources"),d=>r.resolveBlob(d)),w=new Map,O={readRuntime(d){return w.get(d)??i.readRuntime(d)},writeRuntime(d,R){w.set(d,R);}},U=[],N=new Map,W={readSourceData(d,R){let q=`${d}/${R}`;return N.has(q)?N.get(q):p.readSourceData(d,R)},ingestSourceDataStaged(d,R,q,ie){p.ingestSourceDataStaged(d,R,q,ie);},commitSourceData(d,R,q){let ie=`${d}/.staged/${q}/${R}`,ue=r.blobStorage("sources").read(ie);if(ue==null)return false;let Se=`${d}/${R}`,ee=ue.trim();try{N.set(Se,JSON.parse(ee));}catch{N.set(Se,ee);}return U.push({cardId:d,outputFile:R,deliveryToken:q}),true},hasSource(d,R){let q=`${d}/${R}`;return N.has(q)?true:p.hasSource(d,R)},listSources(d){let R=p.listSources(d),q=new Set;for(let X of N.keys())X.startsWith(`${d}/`)&&q.add(X.slice(`${d}/`.length));let ie=new Set([...R,...q]);return Array.from(ie)}},G={cardStore:j(),cardRuntimeStore:O,fetchedSourcesStore:W,outputStore:B(),executionRequestStore:e},se=y(),fe=chunkG4XXRHL2_cjs.q(se.graph),{events:me,newCursor:ge}=A().readEntriesAfterCursor(se.lastDrainedJournalId),ae=[],he=[],Ie=[],Ee=new Map,je=new Set,mt=(d,R)=>{ae.push({type:"task-completed",taskName:d,data:R,timestamp:H()});try{K().stream("exec-history").append({taskName:d,status:"completed",completedAt:H()});}catch{}},Ve=(d,R)=>{o({type:"task-failed",taskName:d,error:R,timestamp:H()});try{K().stream("exec-history").append({taskName:d,status:"failed",error:R,completedAt:H()});}catch{}},Re=chunkG4XXRHL2_cjs.u(fe,{handlers:{"card-handler":nt(t,ge,G,mt,Ve,(d,R)=>{he.push({cardId:d,values:R});},d=>{Ie.push(d);})},onNodeRemoved:d=>{Ee.delete(d),w.delete(d),je.add(d);}});for(ae=me;ae.length>0;){let d=ae;ae=[];for(let R of d)if(R.type==="task-restart"){let q=G.cardStore.readCard(R.taskName);q&&Ee.set(R.taskName,q);}Re.pushAll(d),await Re.waitForHandlers();}let Ne=Re.getState();await Re.dispose({wait:true});let gt=I().readSnapshot(t.value).version;a({lastDrainedJournalId:ge,graph:chunkG4XXRHL2_cjs.p(Ne)},gt);for(let{cardId:d,values:R}of he)G.outputStore.writeComputedValues(d,R);for(let d of Ie)G.outputStore.writeDataObjects(d);for(let[d,R]of w)i.writeRuntime(d,R);for(let{cardId:d,outputFile:R,deliveryToken:q}of U)p.commitSourceData(d,R,q);let ke;try{ke=we(c,Ne),G.outputStore.writeStatusSnapshot(ke);}catch(d){n(`[board-live-cards-public] status publish failed: ${d instanceof Error?d.message:String(d)}`);}let pe=[];for(let{cardId:d,values:R}of he)pe.push({kind:"computed_values",cardId:d,values:R});for(let d of Ie)for(let[R,q]of Object.entries(d))R&&pe.push({kind:"data_object",key:R,payload:q});for(let[d,R]of Ee)pe.push({kind:"card_refreshed",cardId:d,card:R});for(let d of je)pe.push({kind:"card_removed",cardId:d});ke!==void 0&&pe.push({kind:"status",status:ke}),l(pe);let $e=f().readTaskExecutorRef()??{howToRun:"built-in",whatToRun:chunkUVE65IPR_cjs.a({kind:"built-in",value:"source-cli-task-executor"})},pt=r.supportsDirectSourceOutput?.($e)===true;e.dispatchEntriesForJournalId(ge,d=>{if(d.taskKind!=="source-fetch"){n(`[process-accumulated-events] unknown taskKind "${d.taskKind}" \u2014 skipping`);return}let R=d.payload,q=R.enrichedCard?.id??"unknown",ie=R.enrichedCard?.source_defs??[];for(let X of ie){if(!X.outputFile){n(`[dispatch] source "${X.bindTo}" has no outputFile \u2014 skipping`);continue}let ue;if(pt){let ee=r.genId(),Ct=`${q}/.staged/${ee}/${X.outputFile}`,Be=r.blobStorage("sources").keyRef?.(Ct);Be?ue={ref:chunkUVE65IPR_cjs.a(Be),deliveryToken:ee,outputFile:X.outputFile,cardId:q}:n("[dispatch] hosted board-worker requested but sources BlobStorage cannot produce portable refs; falling back to scratch protocol");}let Se=bt({cbk:R.callbackToken,rg:t.value,br:chunkUVE65IPR_cjs.a(t),cid:q,b:X.bindTo,d:X.outputFile,cs:void 0,rqt:R.rqt,...ue?{dt:ue.deliveryToken}:{}});r.dispatchExecution($e,{source_def:X,base_ref:chunkUVE65IPR_cjs.a(t),callback:{token:Se,via:r.selfRef},...ue?{output:ue}:{}}).catch(ee=>Ve(q,ee instanceof Error?ee.message:String(ee)));}});}async function h(){try{let s=()=>{let i=y(),{events:p}=A().readEntriesAfterCursor(i.lastDrainedJournalId);p.length<=0||(h(),r.requestProcessAccumulated?.());},e=await chunkUVE65IPR_cjs.c(r.lock,u,s);return x({ran:e!==!1})}catch(s){return T(s)}}function b(){h(),r.requestProcessAccumulated?.();}function E(s){try{let e=s.params?.cardStoreRef;if(!e)return k("init requires params.cardStoreRef \u2014 create a card store with card-store-cli and pass its ref here");if(!Y()){let G=chunkG4XXRHL2_cjs.a(Fe);a({lastDrainedJournalId:"",graph:chunkG4XXRHL2_cjs.p(G)},null);}let i=s.params?.outputsStoreRef;if(!i)return k("init requires params.outputsStoreRef \u2014 pass the outputs store ref here");let p=s.params?.scratchStoreRef,w=s.params?.archiveStoreRef,O=s.params?.chatStoreRef,U=s.params?.artifactsStoreRef,N=f();N.writeCardStoreRef(e),N.writeOutputsStoreRef(i),p&&N.writeScratchStoreRef(p),w&&N.writeArchiveStoreRef(w),O&&N.writeChatStoreRef(O),U&&N.writeArtifactsStoreRef(U);let W=s.body??{};W["task-executor-ref"]&&N.writeTaskExecutorRef(W["task-executor-ref"]),Object.prototype.hasOwnProperty.call(W,"chat-handler-flow")&&N.writeChatHandlerFlow(W["chat-handler-flow"]);try{B().writeStatusSnapshot(we(c,chunkG4XXRHL2_cjs.q(y().graph)));}catch{}return x()}catch(e){return T(e)}}function _(s){try{let e=B().readStatusSnapshot();if(!e){e=we(c,chunkG4XXRHL2_cjs.q(y().graph));try{B().writeStatusSnapshot(e);}catch{}}return x(e)}catch(e){return T(e)}}function V(s){try{let e=s.params?.id;if(!e)return k("removeCard requires params.id");try{r.kvStorage("card-upsert").delete(e);}catch{}return o({type:"task-removal",taskName:e,timestamp:H()}),b(),x()}catch(e){return T(e)}}function F(s){try{let e=s.params?.cardId;if(!e)return k("addCardFiles requires params.cardId");let i=chunkYMEIPKLW_cjs.a(j()).appendFiles({params:{id:e},body:s.body});if(i.status!=="success")return i;let p=D({params:{cardId:e}});return p.status!=="success"?p:x({cardId:e,files_added:i.data.files_added,notified:!0})}catch(e){return T(e)}}function D(s){try{let e=s.params?.cardId;if(!e)return k("cardRefreshedNotify requires params.cardId");let i=j().readCard(e);return i?(l([{kind:"card_refreshed",cardId:e,card:i}]),x({cardId:e,notified:!0})):k(`Card "${e}" not found in board at ${t.value}`)}catch(e){return T(e)}}function $(s){try{let e=s.params?.id;return e?(o({type:"task-restart",taskName:e,timestamp:H()}),b(),x()):k("retrigger requires params.id")}catch(e){return T(e)}}async function L(s){return h()}function J(s){try{let e=s.params?.cardId,i=s.params?.all,p=!!s.params?.restart;if(!e&&!i)return k("upsertCard requires --card-id <id> or --all");let w=i?j().readAllCards().map(O=>O.id):[e];for(let O of w)if(!j().readCard(O))return k(`Card "${O}" not found in board at ${t.value}`);for(let O of w){let U=j().readCard(O),N=at(U),W=r.hashFn(N),G=r.kvStorage("card-upsert"),se=G.read(O),fe=se?.taskConfigHash!==W;if(!(!fe&&!p)){if(fe){let me=se?.blobRef??j().readCardKey(O)??O;o({type:"task-upsert",taskName:O,taskConfig:N,timestamp:H()}),G.write(O,{blobRef:me,taskConfigHash:W,updatedAt:H()});}p&&o({type:"task-restart",taskName:O,timestamp:H()});}}return b(),x()}catch(e){return T(e)}}function te(s){try{let e=s.params?.token;if(!e)return k("taskFailed requires params.token");let i=s.params?.error??"unknown error",p=xe(e);if(!p)return k("Invalid callback token");o({type:"task-failed",taskName:p.taskName,error:i,timestamp:H()});try{K().stream("exec-history").append({taskName:p.taskName,status:"failed",error:i,completedAt:H()});}catch{}return b(),x()}catch(e){return T(e)}}function re(s){try{let e=s.params?.token;if(!e)return k("taskProgress requires params.token");let p=(s.body??{}).update??{},w=xe(e);return w?(o({type:"task-progress",taskName:w.taskName,update:p,timestamp:H()}),b(),x()):k("Invalid callback token")}catch(e){return T(e)}}function Ce(s){try{let e=s.params?.token,i=s.params?.ref;if(!e)return k("sourceDataFetched requires params.token");if(!i)return k("sourceDataFetched requires params.ref");let p=it(e);if(!p)return k("Invalid source token");let{cbk:w,cid:O,b:U,d:N,cs:W,rqt:G,dt:se}=p,fe=be(r.blobStorage("sources"),he=>r.resolveBlob(he)),me=se||r.genId();se||fe.ingestSourceDataStaged(O,N,chunkUVE65IPR_cjs.b(i),me);let ge=xe(w);if(!ge)return k("Invalid callback token embedded in source token");let ae=H();return o({type:"task-progress",taskName:ge.taskName,update:{bindTo:U,outputFile:N,fetchedAt:ae,deliveryToken:me,sourceChecksum:W,rqt:G},timestamp:ae}),b(),x()}catch(e){return T(e)}}function ne(s){try{let e=s.params?.token,i=s.params?.reason??"unknown";if(!e)return k("sourceDataFetchFailure requires params.token");let p=it(e);if(!p)return k("Invalid source token");let{cbk:w,b:O,d:U,cs:N,rqt:W}=p,G=xe(w);return G?(o({type:"task-progress",taskName:G.taskName,update:{bindTo:O,outputFile:U,failure:!0,reason:i,sourceChecksum:N,rqt:W},timestamp:H()}),b(),x()):k("Invalid callback token embedded in source token")}catch(e){return T(e)}}function oe(s){try{let e=f().readCardStoreRef();return e?x({storeRef:e}):k(`Board at ${t.value} has no card store configured`)}catch(e){return T(e)}}function le(s){try{let e=f().readOutputsStoreRef();return e?x({storeRef:e}):k(`Board at ${t.value} has no outputs store configured`)}catch(e){return T(e)}}function S(s){try{let e=f().readScratchStoreRef();return x({storeRef:e})}catch(e){return T(e)}}function C(s){try{let e=f().readArchiveStoreRef();return x({storeRef:e})}catch(e){return T(e)}}function v(s){try{let e=f().readChatStoreRef();return x({storeRef:e})}catch(e){return T(e)}}function P(s){try{let e=f().readArtifactsStoreRef();return x({storeRef:e})}catch(e){return T(e)}}function M(s){try{let e=s.params?.key;if(!e)return k("getConfig requires params.key");let i=f(),p;switch(e){case "task-executor":p=i.readTaskExecutorRef()??null;break;case "chat-handler-flow":p=i.readChatHandlerFlow()??null;break;case "card-store-ref":p=i.readCardStoreRef();break;case "outputs-store-ref":p=i.readOutputsStoreRef();break;case "scratch-store-ref":p=i.readScratchStoreRef();break;case "archive-store-ref":p=i.readArchiveStoreRef();break;case "chat-store-ref":p=i.readChatStoreRef();break;case "artifacts-store-ref":p=i.readArtifactsStoreRef();break;default:return k(`getConfig: unknown key "${e}"`)}return x({value:p})}catch(e){return T(e)}}function z(s){try{let e=s.params?.key;if(!e)return k("getOutputsDataObject requires params.key");let i=B().readDataObject(e);return x(i)}catch(e){return T(e)}}function Z(s){try{return x(B().readAllDataObjects())}catch(e){return T(e)}}function dt(s){try{let e=s.params?.key;if(!e)return k("getOutputsComputedValues requires params.key");let i=B().readComputedValues(e);return x(i)}catch(e){return T(e)}}function ct(s){try{return x(B().readAllComputedValues())}catch(e){return T(e)}}function qe(){return be(r.blobStorage("sources"),s=>r.resolveBlob(s))}function Pe(s){let e=r.blobStorage("sources").keyRef?.(s);return e?chunkUVE65IPR_cjs.a(e):s}function lt(s){try{let e=s.params?.key;if(!e)return k("getOutputsFetchedSources requires params.key");let i=qe().listSources(e),p={};for(let w of i)p[w]=Pe(`${e}/${w}`);return x(p)}catch(e){return T(e)}}function ft(s){try{let e=qe(),i=new Set;for(let w of r.blobStorage("sources").listKeys()){let O=w.indexOf("/");O>0&&!w.includes("/.staged/")&&i.add(w.slice(0,O));}let p={};for(let w of i){let O=e.listSources(w);if(O.length>0){p[w]={};for(let U of O)p[w][U]=Pe(`${w}/${U}`);}}return x(p)}catch(e){return T(e)}}return {init:E,status:_,getCardStoreRef:oe,getOutputsStoreRef:le,getScratchStoreRef:S,getArchiveStoreRef:C,getChatStoreRef:v,getArtifactsStoreRef:P,getConfig:M,getOutputsDataObject:z,getAllOutputsDataObjects:Z,getOutputsComputedValues:dt,getAllOutputsComputedValues:ct,getOutputsFetchedSources:lt,getAllOutputsFetchedSources:ft,removeCard:V,addCardFiles:F,cardRefreshedNotify:D,retrigger:$,processAccumulatedEvents:L,upsertCard:J,taskFailed:te,taskProgress:re,sourceDataFetched:Ce,sourceDataFetchFailure:ne}}function Nt(t,r){let n=()=>Oe(r.kvStorage("config"));function c(){let a=n().readCardStoreRef();if(!a)throw new Error(`Board at ${t.value} has no card store configured. Run: init --base-ref <ref> --store-ref <b64-ref>`);let o=r.kvStorageForRef(a);return {readIndex(){return o.read("_index")},writeIndex(u){o.write("_index",u);},readCard(u){return o.read(u)},writeCard(u,h){return o.write(u,h),r.hashFn(h)},removeCard(u){o.delete(u);},cardExists(u){return o.read(u)!==null},defaultCardKey(u){return u}}}let l=()=>_e(c(),r.onWarn??(()=>{}));async function m(a,o){let u=r.validateSchema(o),h=[],b=n().readTaskExecutorRef();if(b&&Array.isArray(o.source_defs))for(let _ of o.source_defs){let V=typeof _.bindTo=="string"?_.bindTo:"(unknown)";try{let F;try{F=await r.invokeExecutor(b,"validate-source-def",{timeout:r.executorTimeouts?.validationMs??1e4,input:JSON.stringify(_)});}catch($){let L=$;if(F=typeof L?.stdout=="string"?L.stdout:"",!F.trim()){h.push(`source "${V}": executor validate-source-def failed \u2014 ${$ instanceof Error?$.message:String($)}`);continue}}let D=JSON.parse(F.trim());if(!D.ok&&Array.isArray(D.errors))for(let $ of D.errors)h.push(`source "${V}": ${$}`);}catch(F){h.push(`source "${V}": executor validate-source-def failed \u2014 ${F instanceof Error?F.message:String(F)}`);}}let E=[...u.errors,...h];return x({cardId:a,isValid:E.length===0,issues:E})}function g(a,o){let u=a.params?.sourceIdx,h=a.params?.outRef;if(u===void 0)return k(`${o} requires params.sourceIdx`);if(!a.body||typeof a.body!="object"||Array.isArray(a.body))return k(`${o} requires card JSON object in body`);let b=a.body,E=b["card-content"]??b,_=b["mock-projections"]??{},V=E.source_defs??[];if(u<0||u>=V.length)return k(`sourceIdx ${u} out of range (card has ${V.length} source(s))`);let F=V[u],D=typeof F.bindTo=="string"?F.bindTo:"source";return {src:F,bindTo:D,outRef:h,mockProjections:_}}async function f(a){try{if(!a.body||typeof a.body!="object"||Array.isArray(a.body))return k("validateCardPreflight requires card JSON object in body");let o=a.body,u=o["card-content"]??o,h=typeof u.id=="string"?u.id:"(unknown)";return await m(h,u)}catch(o){return T(o)}}async function I(a){try{let o=g(a,"probeSourcePreflight");if("status"in o)return o;let u=n().readTaskExecutorRef();if(!u)return k("No task-executor registered for this board");try{let h={...o.src,_projections:o.mockProjections},b=await r.invokeExecutor(u,"probe-source-preflight",{timeout:o.src.timeout??r.executorTimeouts?.preflightMs??6e4,input:JSON.stringify(h)}),E=JSON.parse(b.trim());return E.ok?x({bindTo:o.bindTo,reachable:E.reachable,latencyMs:E.latencyMs,note:E.note}):k(E.error??"Preflight probe failed")}catch{return k("Executor does not support probe-source-preflight")}}catch(o){return T(o)}}async function A(a){try{let o=g(a,"runSourcePreflight");if("status"in o)return o;let u=n().readTaskExecutorRef();if(!u)return k("No task-executor registered for this board");try{let h={...o.src,_projections:o.mockProjections},b=await r.invokeExecutor(u,"run-source-preflight",{timeout:o.src.timeout??r.executorTimeouts?.probeMs??6e4,input:JSON.stringify(h)}),E=JSON.parse(b.trim());if(!E.ok)return x({bindTo:o.bindTo,ok:!1,result:null,issues:[E.error??"Preflight run failed"]});if(o.outRef){let _=chunkUVE65IPR_cjs.b(o.outRef);r.absoluteBlob.write(_.value,JSON.stringify(E.resultValue,null,2));}return x({bindTo:typeof E.bindTo=="string"?E.bindTo:o.bindTo,ok:!0,result:E.resultValue??null,issues:[]})}catch(h){let b=h instanceof Error?h.message:String(h);return x({bindTo:o.bindTo,ok:!1,result:null,issues:[b]})}}catch(o){return T(o)}}async function j(a){try{let o=n().readTaskExecutorRef();if(!o)return k("No task-executor registered for this board");let u=await r.invokeExecutor(o,"describe-capabilities",{timeout:r.executorTimeouts?.describeMs??1e4});return x(JSON.parse(u.trim()))}catch(o){return T(o)}}function B(a){try{let o=a.body;if(!o||!Array.isArray(o.ops))return k("updatesInCardStore requires body.ops array");let u=o.ops,h=l();for(let b of u){let E=b.op,_=b.id;if(!_)return k('op is missing "id"');if(E==="update"){let V=b["card-content"];if(!V)return k(`update op for "${_}" is missing "card-content"`);h.writeCard(_,V);}else return k(`Unknown op type: "${E??"(none)"}"`)}return x()}catch(o){return T(o)}}function K(a){try{let o=a.body;if(!o||!Array.isArray(o.ids))return k("readFromCardStore requires body.ids array");let u=o.ids,h=l(),b=u.map(E=>({id:E,"card-content":h.readCard(E)}));return x({cards:b})}catch(o){return T(o)}}function Y(a){try{if(!a.body||typeof a.body!="object"||Array.isArray(a.body))return k("evalCardCompute requires a JSON object in body");let o=a.body,u=o["card-content"]??o,h=typeof u.id=="string"?u.id:"(unknown)",b=o["mock-fetched-sources"]??{},E=o["mock-requires"]??{},_=u.compute;if(!_||!Array.isArray(_)||_.length===0)return x({cardId:h,ok:!0,computed_values:{},errors:[]});let V={id:h,card_data:u.card_data??{},requires:E,source_defs:u.source_defs,compute:_},F=chunkIXZG74EW_cjs.a.runSync(V,{sourcesData:b}),D=F.node.computed_values??{},$=F.errors??[];return x({cardId:h,ok:$.length===0,computed_values:D,errors:$})}catch(o){return T(o)}}async function y(a){try{if(!a.body||typeof a.body!="object"||Array.isArray(a.body))return k("simulateCardCycle requires a JSON object in body");let o=a.body,u=o["card-content"]??o,h=typeof u.id=="string"?u.id:"(unknown)",b=o["mock-fetched-sources"]??{},E=o["mock-requires"]??{},_=await m(h,u),V=_.status==="success"?{isValid:_.data.isValid,issues:_.data.issues}:{isValid:!1,issues:[_.status==="fail"?_.error:"internal error"]},F=u.source_defs??[],D=u.card_data??{},$=[],L=[];if(F.length>0){$=chunkIXZG74EW_cjs.a.enrichSourcesSync(F,{card_data:D,requires:E});for(let C of $){let v=C.projections,P=C._projections;if(v&&P){for(let M of Object.keys(v))if(P[M]===void 0){let z=typeof C.bindTo=="string"?C.bindTo:"(unknown)";L.push({bindTo:z,key:M,error:`Projection "${M}" resolved to undefined`});}}}}let J=[],te={...b},re=o["task-executor-ref"],Ce=(re?.howToRun&&re?.whatToRun?re:void 0)??n().readTaskExecutorRef();for(let C=0;C<$.length;C++){let v=$[C],P=typeof v.bindTo=="string"?v.bindTo:`source_${C}`;if(!Ce){J.push({bindTo:P,skipped:!0,error:"No task executor configured"});continue}try{let M={...v},z=await r.invokeExecutor(Ce,"run-source-preflight",{timeout:v.timeout??r.executorTimeouts?.preflightMs??6e4,input:JSON.stringify(M)}),Z=JSON.parse(z.trim());Z.ok&&!Object.prototype.hasOwnProperty.call(b,P)&&Object.prototype.hasOwnProperty.call(Z,"resultValue")&&(te[P]=Z.resultValue),J.push({bindTo:P,reachable:Z.reachable,latencyMs:Z.latencyMs,error:Z.ok?void 0:Z.error});}catch{J.push({bindTo:P,skipped:!0,error:"Executor does not support run-source-preflight"});}}let ne=u.compute,oe={},le=[];if(ne&&Array.isArray(ne)&&ne.length>0){let C={id:h,card_data:D,requires:E,source_defs:u.source_defs,compute:ne},v=chunkIXZG74EW_cjs.a.runSync(C,{sourcesData:te});oe=v.node.computed_values??{},le=v.errors??[];}let S=V.isValid&&L.length===0&&le.length===0&&J.every(C=>C.reachable!==!1);return x({cardId:h,ok:S,validation:V,source_probes:J,projection_errors:L,fetched_sources:te,computed_values:oe,compute_errors:le})}catch(o){return T(o)}}return {validateCardPreflight:f,probeSourcePreflight:I,runSourcePreflight:A,evalCardCompute:Y,simulateCardCycle:y,describeTaskExecutorCapabilities:j,updatesInCardStore:B,readFromCardStore:K}}
2
- exports.a=_e;exports.b=ve;exports.c=ce;exports.d=Fe;exports.e=Vt;exports.f=Nt;//# sourceMappingURL=chunk-LVNQCE5X.cjs.map
3
- //# sourceMappingURL=chunk-LVNQCE5X.cjs.map
@@ -1,3 +0,0 @@
1
- import {b as b$1,c as c$1}from'./chunk-LBMEVV4U.js';import {a,b,c}from'./chunk-CWREBRXS.js';import {a as a$1,p,q,r,u}from'./chunk-VGT3TRQG.js';import {a as a$3}from'./chunk-JMDHDY6M.js';import {a as a$2}from'./chunk-KBELAKIY.js';function _e(t,r){function n(){return t.readIndex()??{}}function c(l,m,g){let f=String(m||"").split(".").filter(Boolean);if(f.length===0)return g&&typeof g=="object"&&!Array.isArray(g)?g:{value:g};let I={...l},A=I;for(let j=0;j<f.length-1;j++){let B=f[j],K=A[B],Y=K&&typeof K=="object"&&!Array.isArray(K)?{...K}:{};A[B]=Y,A=Y;}return A[f[f.length-1]]=g,I}return {readCard(l){let m=n()[l];return !m||!t.cardExists(m.key)?null:t.readCard(m.key)},readCardKey(l){return n()[l]?.key??null},readAllCards(){let l=[];for(let[m,g]of Object.entries(n())){if(!t.cardExists(g.key))continue;let f=t.readCard(g.key);f?l.push(f):r?.(`[card-store] could not read card "${m}" at key "${g.key}"`);}return l},readChecksumIndex(){let l={};for(let[m,g]of Object.entries(n()))l[m]=g.checksum;return l},changedSince(l){let m=n(),g=[];for(let[f,I]of Object.entries(m))l[f]!==I.checksum&&g.push(f);for(let f of Object.keys(l))m[f]||g.push(f);return g},validateUpsert(l,m){let g=n(),f=g[l],I=Object.entries(g).find(([,A])=>A.key===m);return f&&f.key!==m?{ok:false,error:`Card id "${l}" is already mapped to key "${f.key}", cannot remap to "${m}"`}:I&&I[0]!==l?{ok:false,error:`Key "${m}" is already mapped to card id "${I[0]}", cannot remap to "${l}"`}:{ok:true}},writeCard(l,m,g){let f=n(),I=g??f[l]?.key??t.defaultCardKey(l),A=t.writeCard(I,m);f[l]={key:I,checksum:A,updatedAt:new Date().toISOString()},t.writeIndex(f);},patchCard(l,m,g){let f=n(),I=f[l];if(!I||!t.cardExists(I.key))throw new Error(`card "${l}" not found`);let A=t.readCard(I.key);if(!A||typeof A!="object"||Array.isArray(A))throw new Error(`card "${l}" is not patchable`);let j=c(A,m,g),B=t.writeCard(I.key,j);f[l]={key:I.key,checksum:B,updatedAt:new Date().toISOString()},t.writeIndex(f);},removeCard(l){let m=n(),g=m[l];g&&(t.removeCard(g.key),delete m[l],t.writeIndex(m));},readIndex(){return n()}}}function be(t,r){return {readSourceData(n,c){let l=t.read(`${n}/${c}`);if(l==null)return null;let m=l.trim();if(!m)return null;try{return JSON.parse(m)}catch{return m}},ingestSourceDataStaged(n,c,l,m){let g=r(l);t.write(`${n}/.staged/${m}/${c}`,g);},commitSourceData(n,c,l){let m=`${n}/.staged/${l}/${c}`,g=t.read(m);return g==null?false:(t.write(`${n}/${c}`,g),t.remove(m),true)},hasSource(n,c){return t.exists(`${n}/${c}`)},listSources(n){return t.listKeys(`${n}/`).filter(c=>!c.includes("/.staged/")).map(c=>c.slice(`${n}/`.length))}}}function ze(t){function r(n){let c=t.readAllEntries();if(!n)return c;let l=c.findIndex(m=>m.id===n);return l===-1?c:c.slice(l+1)}return {readEntriesAfterCursor(n){let c=r(n);return c.length===0?{events:[],newCursor:n}:{events:c.map(l=>l.event),newCursor:c[c.length-1].id}},pendingCount(n){return r(n).length},appendEvent(n){t.appendEntry({id:t.generateId(),event:n});}}}function Qe(t,r){return {appendEntries(n,c){if(!n||c.length===0)return;let l=t.read(n)??[];t.write(n,[...l,...c]);},dispatchEntriesForJournalId(n,c){if(!n)return;let l=t.read(n);if(!(!l||l.length===0)){for(let m of l)try{c(m);}catch(g){let f=g instanceof Error?g.message:String(g);try{r(m,f);}catch{}}t.delete(n);}}}}var ve="v1",ce="board/graph",Ze="board/lastJournalProcessedId";function Ue(t){return `cards/${t}/runtime`}function et(t){return {readRuntime(r){return t.read(Ue(r))??{_sources:{}}},writeRuntime(r,n){t.write(Ue(r),n);}}}function ht(t,r){let n={...t};for(let c of r.deleteKeys)delete n[c];return {...n,...r.shallowMerge}}function tt(t){return {readSnapshot(r){return t.readValues(r)},commitSnapshot(r,n){if(n.schemaVersion!==ve)throw new Error(`Unsupported snapshot schema version: ${n.schemaVersion}`);let c=t.readValues(r);if(c.version!==n.expectedVersion)return {ok:false,reason:"version-mismatch",currentVersion:c.version};let l=ht(c.values,n);return {ok:true,newVersion:t.writeValues(r,l,n.deleteKeys)}}}}function Oe(t){function r(n){let c=t.read(n);return c==null?null:typeof c=="string"?c:JSON.stringify(c)}return {readTaskExecutorRef(){let n=r("task-executor");if(n?.trim())return c$1(n.trim())},writeTaskExecutorRef(n){t.write("task-executor",b$1(n));},readChatHandlerFlow(){return t.read("chat-handler-flow")},writeChatHandlerFlow(n){t.write("chat-handler-flow",n);},readCardStoreRef(){return r("card-store-ref")},writeCardStoreRef(n){t.write("card-store-ref",n);},readOutputsStoreRef(){return r("outputs-store-ref")},writeOutputsStoreRef(n){t.write("outputs-store-ref",n);},readScratchStoreRef(){return r("scratch-store-ref")},writeScratchStoreRef(n){t.write("scratch-store-ref",n);},readArchiveStoreRef(){return r("archive-store-ref")},writeArchiveStoreRef(n){t.write("archive-store-ref",n);},readChatStoreRef(){return r("chat-store-ref")},writeChatStoreRef(n){t.write("chat-store-ref",n);},readArtifactsStoreRef(){return r("artifacts-store-ref")},writeArtifactsStoreRef(n){t.write("artifacts-store-ref",n);}}}function rt(t){return {writeComputedValues(r,n){t.write(`cards/${r}/computed_values`,n);},readComputedValues(r){return t.read(`cards/${r}/computed_values`)},readAllComputedValues(){let r={};for(let n of t.listKeys("cards/")){let c=n.match(/^cards\/([^/]+)\/computed_values$/);c&&(r[c[1]]=t.read(n));}return r},writeDataObjects(r){for(let[n,c]of Object.entries(r))n&&t.write(`data-objects/${n}`,c);},readDataObject(r){return t.read(`data-objects/${r}`)},readAllDataObjects(){let r={};for(let n of t.listKeys("data-objects/"))r[n.slice(13)]=t.read(n);return r},writeStatusSnapshot(r){t.write("status",r);},readStatusSnapshot(){return t.read("status")}}}function We(t){return t?{lastRequestedToken:t.lastRequestedToken,lastCompletedToken:t.lastCompletedToken,lastCompletionStatus:t.lastCompletionStatus??(t.lastCompletedToken?"success":"not-started"),queueRequestedToken:t.queueRequestedToken}:{lastCompletionStatus:"not-started"}}function Rt(t){return t?.lastRequestedToken?t.lastCompletedToken!==t.lastRequestedToken:false}function Xe(t,r){return t?.lastRequestedToken?Rt(t)?"in-flight":!t.lastCompletedToken||t.lastCompletedToken<r?"dispatch":"idle":"dispatch"}function kt(t,r){return {...t,lastCompletedToken:r,lastCompletionStatus:"success"}}function Ye(t,r){return {...t,lastCompletedToken:r,lastCompletionStatus:"failure"}}function we(t,r$1){let n=r$1.state.tasks,c=r$1.config.tasks,l=Object.keys(n),m=r(r$1),g={completed:0,failed:0,in_progress:0,pending:0,blocked:0,unresolved:0},f=new Map;for(let y of m.pending)f.set(y.taskName,y.waitingOn);for(let y of m.unresolved)f.set(y.taskName,y.missingTokens);for(let y of m.blocked)f.set(y.taskName,y.failedTokens);let I=new Map;for(let[y,a]of Object.entries(c))for(let o of a.requires??[]){let u=I.get(o)??[];u.push(y),I.set(o,u);}let A=l.sort().map(y=>{let a=n[y],o=c[y]??{requires:[],provides:[]};a.status==="completed"?g.completed+=1:a.status==="failed"?g.failed+=1:a.status==="in-progress"&&(g.in_progress+=1);let u=o.requires??[],h=o.provides??[],b=Object.keys(a.data??{}).sort(),E=u.filter(L=>r$1.state.availableOutputs.includes(L)),_=u.filter(L=>!r$1.state.availableOutputs.includes(L)),V=f.get(y)??_,F=new Set;for(let L of h)for(let J of I.get(L)??[])J!==y&&F.add(J);let D=a.failedAt,$=a.error?{message:a.error,code:"TASK_FAILED",at:D,source:"task-runtime"}:void 0;return {name:y,status:a.status,error:$,requires:u,requires_satisfied:E,requires_missing:_,provides_declared:h,provides_runtime:b,blocked_by:V,unblocks:Array.from(F).sort(),runtime:{attempt_count:a.executionCount??0,restart_count:a.retryCount??0,in_progress_since:a.status==="in-progress"?a.startedAt??null:null,last_transition_at:a.lastUpdated??null,last_completed_at:a.completedAt??null,last_restarted_at:a.startedAt??null,status_age_ms:a.lastUpdated?0:null}}});g.pending=m.pending.length,g.blocked=m.blocked.length,g.unresolved=m.unresolved.length;let j=A.map(y=>({name:y.name,fanOut:y.unblocks.length})).sort((y,a)=>a.fanOut-y.fanOut||y.name.localeCompare(a.name)),B=j.length>0?j[0]:{name:null,fanOut:0},K=new Set;for(let y of Object.values(c))for(let a of y.requires??[])K.add(a);let Y=0;for(let[y,a]of Object.entries(c)){let o=(a.requires??[]).length===0,h=(a.provides??[]).some(b=>(I.get(b)??[]).some(E=>E!==y));o&&!h&&(Y+=1);}return {schema_version:"v1",meta:{board:{path:t}},summary:{card_count:l.length,completed:g.completed,eligible:m.eligible.length,pending:g.pending,blocked:g.blocked,unresolved:g.unresolved,failed:g.failed,in_progress:g.in_progress,orphan_cards:Y,topology:{edge_count:Array.from(K).length,max_fan_out_card:B.name,max_fan_out:B.fanOut}},cards:A}}function St(){return new Date().toISOString()}function nt(t,r,n,c,l,m,g){return async f=>{let I=[],A=n.cardStore.readCard(f.nodeId);if(!A)return "task-initiate-failure";let j=A.id,B=A.card_data??{},K=A.source_defs??[],Y=K.filter(S=>S.optionalForCompletionGating!==true),y=n.cardRuntimeStore.readRuntime(j),a$1=false,o=()=>{a$1&&(n.cardRuntimeStore.writeRuntime(j,y),a$1=false);},u=S=>We(y._sources[S]),h=(S,C)=>{y._sources[S]=We(C),a$1=true;},b=f.taskState?.executionCount??0;if(y._lastExecutionCount!==b&&(y._sources={},y._lastExecutionCount=b,a$1=true),f.update){let S=f.update,C=S.outputFile;if(C){let v=u(C);if(S.failure){let P=S.rqt??v.lastRequestedToken??v.queueRequestedToken;P&&h(C,Ye(v,P));}else {let P=S.rqt;if(!v.lastCompletedToken||P>v.lastCompletedToken){let M=typeof S.deliveryToken=="string"?S.deliveryToken:void 0,z=false;M&&(z=n.fetchedSourcesStore.commitSourceData(j,C,M)),z?h(C,kt(v,P)):h(C,Ye(v,P));}}o();}}let _={};for(let S of K)if(S.outputFile){let C=n.fetchedSourcesStore.readSourceData(j,S.outputFile);C!==null&&(_[S.bindTo]=C);}let V={};for(let[S,C]of Object.entries(f.state??{}))if(C!==null&&typeof C=="object"&&!Array.isArray(C)){let v=C[S];V[S]=v!==void 0?v:C;}else V[S]=C;let F={id:j,card_data:{...B},requires:V,source_defs:K,compute:A.compute};F._sourcesData=_,A.compute&&a$3.runSync(F,{sourcesData:_}),(m??n.outputStore.writeComputedValues.bind(n.outputStore))(j,F.computed_values??{});let D={...A},$=a$3.enrichSourcesSync(Array.isArray(A.source_defs)?A.source_defs:void 0,{card_data:A.card_data,requires:V}),L=t.value;D.source_defs=Array.isArray($)?$.map(S=>({...S,boardDir:typeof S.boardDir=="string"&&S.boardDir?S.boardDir:L})):$;let J=St(),te=f.update?void 0:J,re=Y.filter(S=>{let C=S.outputFile;if(typeof C!="string"||!C)return true;let v=u(C);te&&(v={...v,queueRequestedToken:te},h(C,v));let P=v.queueRequestedToken??v.lastRequestedToken??J,M=Xe(v,P);return M==="in-flight"?false:M==="dispatch"});if(o(),re.length>0){let S=false,C=J;for(let v of re){let P=v.outputFile;if(typeof P!="string"||!P)continue;let M=u(P),z=M.queueRequestedToken??J;h(P,{...M,lastRequestedToken:z}),C=z,S=true;}return S&&o(),S&&(I.push({taskKind:"source-fetch",payload:{boardRef:a(t),enrichedCard:D,callbackToken:f.callbackToken,rqt:C}}),n.executionRequestStore.appendEntries(r,I)),"task-initiated"}if(Y.some(S=>{let C=S.outputFile;if(typeof C!="string"||!C)return false;let v=u(C),P=v.queueRequestedToken??v.lastRequestedToken??J;return Xe(v,P)==="in-flight"}))return "task-initiated";let ne=A.provides??[],oe={};for(let{bindTo:S,ref:C}of ne)oe[S]=a$3.resolve(F,C);return (g??n.outputStore.writeDataObjects.bind(n.outputStore))(oe),K.filter(S=>{if(S.optionalForCompletionGating!==true)return false;let C=u(S.outputFile);return !C.lastRequestedToken||!C.lastCompletedToken?true:C.lastCompletedToken<=C.lastRequestedToken}).length>0&&I.push({taskKind:"source-fetch",payload:{boardRef:a(t),enrichedCard:D,callbackToken:f.callbackToken,rqt:J}}),c(f.nodeId,oe),I.length>0&&n.executionRequestStore.appendEntries(r,I),"task-initiated"}}var Fe={settings:{completion:"manual",refreshStrategy:"data-changed"},tasks:{}};function ot(t){return {[ce]:t.graph,[Ze]:t.lastDrainedJournalId}}function st(t){let r=t[ce],n=t[Ze];if(!r||typeof r!="object")throw new Error(`State snapshot is missing required key: ${ce}`);return {graph:r,lastDrainedJournalId:typeof n=="string"?n:""}}function at(t){let r=t.requires,n=t.provides?.map(c=>c.bindTo)??[];return {requires:r&&r.length>0?r:void 0,provides:n,taskHandlers:["card-handler"],description:t.meta?.title??t.id}}function x(t){return t!==void 0?{status:"success",data:t}:{status:"success"}}function k(t){return {status:"fail",error:t}}function T(t){return {status:"error",error:t instanceof Error?t.message:String(t)}}function yt(t){let r=new TextEncoder().encode(t),n=Array.from(r,c=>String.fromCharCode(c)).join("");return btoa(n).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function ut(t){let r=t.replace(/-/g,"+").replace(/_/g,"/"),n=r+"=".repeat((4-r.length%4)%4),c=atob(n),l=Uint8Array.from(c,m=>m.charCodeAt(0));return new TextDecoder().decode(l)}function xe(t){try{let r=JSON.parse(ut(t));return typeof r?.t=="string"?{taskName:r.t}:null}catch{return null}}function bt(t){return yt(JSON.stringify(t))}function it(t){try{let r=JSON.parse(ut(t));return typeof r?.cbk=="string"&&typeof r?.cid=="string"&&typeof r?.b=="string"&&typeof r?.d=="string"?r:null}catch{return null}}function H(){return new Date().toISOString()}function Vt(t,r){let n=r.onWarn??(()=>{}),c$1=a(t);function l(s){if(s.length!==0)try{let e=r.publishBoardChangeNotifications?.(s);e&&typeof e.catch=="function"&&e.catch(i=>n(`[board-live-cards-public] publishBoardChangeNotifications failed: ${i instanceof Error?i.message:String(i)}`));}catch(e){n(`[board-live-cards-public] publishBoardChangeNotifications failed: ${e instanceof Error?e.message:String(e)}`);}}function m(){let s=f().readCardStoreRef();if(!s)throw new Error(`Board at ${t.value} has no card store configured. Run: init --base-ref <ref> --store-ref <b64-ref>`);let e=r.kvStorageForRef(s);return {readIndex(){return e.read("_index")},writeIndex(i){e.write("_index",i);},readCard(i){return e.read(i)},writeCard(i,p){return e.write(i,p),r.hashFn(p)},removeCard(i){e.delete(i);},cardExists(i){return e.read(i)!==null},defaultCardKey(i){return i}}}let g={readValues(s){let e=r.kvStorage("state-snapshot"),i=e.listKeys().sort();if(i.length===0)return {version:null,values:{}};let p={};for(let w of i)p[w]=e.read(w);return {version:r.hashFn(p),values:p}},writeValues(s,e,i){let p=r.kvStorage("state-snapshot");for(let w of i)p.delete(w);for(let[w,O]of Object.entries(e))p.write(w,O);return r.hashFn(e)}},f=()=>Oe(r.kvStorage("config")),I=()=>tt(g),A=()=>ze(r.journalAdapter()),j=()=>_e(m(),n),B=()=>{let s=f().readOutputsStoreRef();if(!s)throw new Error(`Board at ${t.value} has no outputs store configured. Run: init --outputs-store-ref <b64-ref>`);return rt(r.kvStorageForRef(s))},K=()=>{let s=f().readArchiveStoreRef();return s?r.archiveFactoryForRef(s):r.archiveFactory()};function Y(){return !!I().readSnapshot(t.value).values[ce]}function y(){let s=I().readSnapshot(t.value);if(!s.values[ce])throw new Error(`Board not initialized at ${t.value}`);return st(s.values)}function a$3(s,e){let i=I().commitSnapshot(t.value,{schemaVersion:ve,expectedVersion:e,commitId:r.genId(),committedAt:H(),deleteKeys:[],shallowMerge:ot(s)});if(!i.ok)throw new Error(`Snapshot commit failed (version mismatch): expected=${e??"null"} current=${i.currentVersion??"null"}`)}function o(s){A().appendEvent(s);}async function u$1(){let s=(d,R)=>{let q=d.payload,X=(q?.enrichedCard??{}).id??q?.cardId??"unknown";o({type:"task-failed",taskName:X,error:R,timestamp:H()});},e=Qe(r.kvStorage("execution-requests"),s),i=et(r.kvStorage("card-runtime")),p$1=be(r.blobStorage("sources"),d=>r.resolveBlob(d)),w=new Map,O={readRuntime(d){return w.get(d)??i.readRuntime(d)},writeRuntime(d,R){w.set(d,R);}},U=[],N=new Map,W={readSourceData(d,R){let q=`${d}/${R}`;return N.has(q)?N.get(q):p$1.readSourceData(d,R)},ingestSourceDataStaged(d,R,q,ie){p$1.ingestSourceDataStaged(d,R,q,ie);},commitSourceData(d,R,q){let ie=`${d}/.staged/${q}/${R}`,ue=r.blobStorage("sources").read(ie);if(ue==null)return false;let Se=`${d}/${R}`,ee=ue.trim();try{N.set(Se,JSON.parse(ee));}catch{N.set(Se,ee);}return U.push({cardId:d,outputFile:R,deliveryToken:q}),true},hasSource(d,R){let q=`${d}/${R}`;return N.has(q)?true:p$1.hasSource(d,R)},listSources(d){let R=p$1.listSources(d),q=new Set;for(let X of N.keys())X.startsWith(`${d}/`)&&q.add(X.slice(`${d}/`.length));let ie=new Set([...R,...q]);return Array.from(ie)}},G={cardStore:j(),cardRuntimeStore:O,fetchedSourcesStore:W,outputStore:B(),executionRequestStore:e},se=y(),fe=q(se.graph),{events:me,newCursor:ge}=A().readEntriesAfterCursor(se.lastDrainedJournalId),ae=[],he=[],Ie=[],Ee=new Map,je=new Set,mt=(d,R)=>{ae.push({type:"task-completed",taskName:d,data:R,timestamp:H()});try{K().stream("exec-history").append({taskName:d,status:"completed",completedAt:H()});}catch{}},Ve=(d,R)=>{o({type:"task-failed",taskName:d,error:R,timestamp:H()});try{K().stream("exec-history").append({taskName:d,status:"failed",error:R,completedAt:H()});}catch{}},Re=u(fe,{handlers:{"card-handler":nt(t,ge,G,mt,Ve,(d,R)=>{he.push({cardId:d,values:R});},d=>{Ie.push(d);})},onNodeRemoved:d=>{Ee.delete(d),w.delete(d),je.add(d);}});for(ae=me;ae.length>0;){let d=ae;ae=[];for(let R of d)if(R.type==="task-restart"){let q=G.cardStore.readCard(R.taskName);q&&Ee.set(R.taskName,q);}Re.pushAll(d),await Re.waitForHandlers();}let Ne=Re.getState();await Re.dispose({wait:true});let gt=I().readSnapshot(t.value).version;a$3({lastDrainedJournalId:ge,graph:p(Ne)},gt);for(let{cardId:d,values:R}of he)G.outputStore.writeComputedValues(d,R);for(let d of Ie)G.outputStore.writeDataObjects(d);for(let[d,R]of w)i.writeRuntime(d,R);for(let{cardId:d,outputFile:R,deliveryToken:q}of U)p$1.commitSourceData(d,R,q);let ke;try{ke=we(c$1,Ne),G.outputStore.writeStatusSnapshot(ke);}catch(d){n(`[board-live-cards-public] status publish failed: ${d instanceof Error?d.message:String(d)}`);}let pe=[];for(let{cardId:d,values:R}of he)pe.push({kind:"computed_values",cardId:d,values:R});for(let d of Ie)for(let[R,q]of Object.entries(d))R&&pe.push({kind:"data_object",key:R,payload:q});for(let[d,R]of Ee)pe.push({kind:"card_refreshed",cardId:d,card:R});for(let d of je)pe.push({kind:"card_removed",cardId:d});ke!==void 0&&pe.push({kind:"status",status:ke}),l(pe);let $e=f().readTaskExecutorRef()??{howToRun:"built-in",whatToRun:a({kind:"built-in",value:"source-cli-task-executor"})},pt=r.supportsDirectSourceOutput?.($e)===true;e.dispatchEntriesForJournalId(ge,d=>{if(d.taskKind!=="source-fetch"){n(`[process-accumulated-events] unknown taskKind "${d.taskKind}" \u2014 skipping`);return}let R=d.payload,q=R.enrichedCard?.id??"unknown",ie=R.enrichedCard?.source_defs??[];for(let X of ie){if(!X.outputFile){n(`[dispatch] source "${X.bindTo}" has no outputFile \u2014 skipping`);continue}let ue;if(pt){let ee=r.genId(),Ct=`${q}/.staged/${ee}/${X.outputFile}`,Be=r.blobStorage("sources").keyRef?.(Ct);Be?ue={ref:a(Be),deliveryToken:ee,outputFile:X.outputFile,cardId:q}:n("[dispatch] hosted board-worker requested but sources BlobStorage cannot produce portable refs; falling back to scratch protocol");}let Se=bt({cbk:R.callbackToken,rg:t.value,br:a(t),cid:q,b:X.bindTo,d:X.outputFile,cs:void 0,rqt:R.rqt,...ue?{dt:ue.deliveryToken}:{}});r.dispatchExecution($e,{source_def:X,base_ref:a(t),callback:{token:Se,via:r.selfRef},...ue?{output:ue}:{}}).catch(ee=>Ve(q,ee instanceof Error?ee.message:String(ee)));}});}async function h(){try{let s=()=>{let i=y(),{events:p}=A().readEntriesAfterCursor(i.lastDrainedJournalId);p.length<=0||(h(),r.requestProcessAccumulated?.());},e=await c(r.lock,u$1,s);return x({ran:e!==!1})}catch(s){return T(s)}}function b$1(){h(),r.requestProcessAccumulated?.();}function E(s){try{let e=s.params?.cardStoreRef;if(!e)return k("init requires params.cardStoreRef \u2014 create a card store with card-store-cli and pass its ref here");if(!Y()){let G=a$1(Fe);a$3({lastDrainedJournalId:"",graph:p(G)},null);}let i=s.params?.outputsStoreRef;if(!i)return k("init requires params.outputsStoreRef \u2014 pass the outputs store ref here");let p$1=s.params?.scratchStoreRef,w=s.params?.archiveStoreRef,O=s.params?.chatStoreRef,U=s.params?.artifactsStoreRef,N=f();N.writeCardStoreRef(e),N.writeOutputsStoreRef(i),p$1&&N.writeScratchStoreRef(p$1),w&&N.writeArchiveStoreRef(w),O&&N.writeChatStoreRef(O),U&&N.writeArtifactsStoreRef(U);let W=s.body??{};W["task-executor-ref"]&&N.writeTaskExecutorRef(W["task-executor-ref"]),Object.prototype.hasOwnProperty.call(W,"chat-handler-flow")&&N.writeChatHandlerFlow(W["chat-handler-flow"]);try{B().writeStatusSnapshot(we(c$1,q(y().graph)));}catch{}return x()}catch(e){return T(e)}}function _(s){try{let e=B().readStatusSnapshot();if(!e){e=we(c$1,q(y().graph));try{B().writeStatusSnapshot(e);}catch{}}return x(e)}catch(e){return T(e)}}function V(s){try{let e=s.params?.id;if(!e)return k("removeCard requires params.id");try{r.kvStorage("card-upsert").delete(e);}catch{}return o({type:"task-removal",taskName:e,timestamp:H()}),b$1(),x()}catch(e){return T(e)}}function F(s){try{let e=s.params?.cardId;if(!e)return k("addCardFiles requires params.cardId");let i=a$2(j()).appendFiles({params:{id:e},body:s.body});if(i.status!=="success")return i;let p=D({params:{cardId:e}});return p.status!=="success"?p:x({cardId:e,files_added:i.data.files_added,notified:!0})}catch(e){return T(e)}}function D(s){try{let e=s.params?.cardId;if(!e)return k("cardRefreshedNotify requires params.cardId");let i=j().readCard(e);return i?(l([{kind:"card_refreshed",cardId:e,card:i}]),x({cardId:e,notified:!0})):k(`Card "${e}" not found in board at ${t.value}`)}catch(e){return T(e)}}function $(s){try{let e=s.params?.id;return e?(o({type:"task-restart",taskName:e,timestamp:H()}),b$1(),x()):k("retrigger requires params.id")}catch(e){return T(e)}}async function L(s){return h()}function J(s){try{let e=s.params?.cardId,i=s.params?.all,p=!!s.params?.restart;if(!e&&!i)return k("upsertCard requires --card-id <id> or --all");let w=i?j().readAllCards().map(O=>O.id):[e];for(let O of w)if(!j().readCard(O))return k(`Card "${O}" not found in board at ${t.value}`);for(let O of w){let U=j().readCard(O),N=at(U),W=r.hashFn(N),G=r.kvStorage("card-upsert"),se=G.read(O),fe=se?.taskConfigHash!==W;if(!(!fe&&!p)){if(fe){let me=se?.blobRef??j().readCardKey(O)??O;o({type:"task-upsert",taskName:O,taskConfig:N,timestamp:H()}),G.write(O,{blobRef:me,taskConfigHash:W,updatedAt:H()});}p&&o({type:"task-restart",taskName:O,timestamp:H()});}}return b$1(),x()}catch(e){return T(e)}}function te(s){try{let e=s.params?.token;if(!e)return k("taskFailed requires params.token");let i=s.params?.error??"unknown error",p=xe(e);if(!p)return k("Invalid callback token");o({type:"task-failed",taskName:p.taskName,error:i,timestamp:H()});try{K().stream("exec-history").append({taskName:p.taskName,status:"failed",error:i,completedAt:H()});}catch{}return b$1(),x()}catch(e){return T(e)}}function re(s){try{let e=s.params?.token;if(!e)return k("taskProgress requires params.token");let p=(s.body??{}).update??{},w=xe(e);return w?(o({type:"task-progress",taskName:w.taskName,update:p,timestamp:H()}),b$1(),x()):k("Invalid callback token")}catch(e){return T(e)}}function Ce(s){try{let e=s.params?.token,i=s.params?.ref;if(!e)return k("sourceDataFetched requires params.token");if(!i)return k("sourceDataFetched requires params.ref");let p=it(e);if(!p)return k("Invalid source token");let{cbk:w,cid:O,b:U,d:N,cs:W,rqt:G,dt:se}=p,fe=be(r.blobStorage("sources"),he=>r.resolveBlob(he)),me=se||r.genId();se||fe.ingestSourceDataStaged(O,N,b(i),me);let ge=xe(w);if(!ge)return k("Invalid callback token embedded in source token");let ae=H();return o({type:"task-progress",taskName:ge.taskName,update:{bindTo:U,outputFile:N,fetchedAt:ae,deliveryToken:me,sourceChecksum:W,rqt:G},timestamp:ae}),b$1(),x()}catch(e){return T(e)}}function ne(s){try{let e=s.params?.token,i=s.params?.reason??"unknown";if(!e)return k("sourceDataFetchFailure requires params.token");let p=it(e);if(!p)return k("Invalid source token");let{cbk:w,b:O,d:U,cs:N,rqt:W}=p,G=xe(w);return G?(o({type:"task-progress",taskName:G.taskName,update:{bindTo:O,outputFile:U,failure:!0,reason:i,sourceChecksum:N,rqt:W},timestamp:H()}),b$1(),x()):k("Invalid callback token embedded in source token")}catch(e){return T(e)}}function oe(s){try{let e=f().readCardStoreRef();return e?x({storeRef:e}):k(`Board at ${t.value} has no card store configured`)}catch(e){return T(e)}}function le(s){try{let e=f().readOutputsStoreRef();return e?x({storeRef:e}):k(`Board at ${t.value} has no outputs store configured`)}catch(e){return T(e)}}function S(s){try{let e=f().readScratchStoreRef();return x({storeRef:e})}catch(e){return T(e)}}function C(s){try{let e=f().readArchiveStoreRef();return x({storeRef:e})}catch(e){return T(e)}}function v(s){try{let e=f().readChatStoreRef();return x({storeRef:e})}catch(e){return T(e)}}function P(s){try{let e=f().readArtifactsStoreRef();return x({storeRef:e})}catch(e){return T(e)}}function M(s){try{let e=s.params?.key;if(!e)return k("getConfig requires params.key");let i=f(),p;switch(e){case "task-executor":p=i.readTaskExecutorRef()??null;break;case "chat-handler-flow":p=i.readChatHandlerFlow()??null;break;case "card-store-ref":p=i.readCardStoreRef();break;case "outputs-store-ref":p=i.readOutputsStoreRef();break;case "scratch-store-ref":p=i.readScratchStoreRef();break;case "archive-store-ref":p=i.readArchiveStoreRef();break;case "chat-store-ref":p=i.readChatStoreRef();break;case "artifacts-store-ref":p=i.readArtifactsStoreRef();break;default:return k(`getConfig: unknown key "${e}"`)}return x({value:p})}catch(e){return T(e)}}function z(s){try{let e=s.params?.key;if(!e)return k("getOutputsDataObject requires params.key");let i=B().readDataObject(e);return x(i)}catch(e){return T(e)}}function Z(s){try{return x(B().readAllDataObjects())}catch(e){return T(e)}}function dt(s){try{let e=s.params?.key;if(!e)return k("getOutputsComputedValues requires params.key");let i=B().readComputedValues(e);return x(i)}catch(e){return T(e)}}function ct(s){try{return x(B().readAllComputedValues())}catch(e){return T(e)}}function qe(){return be(r.blobStorage("sources"),s=>r.resolveBlob(s))}function Pe(s){let e=r.blobStorage("sources").keyRef?.(s);return e?a(e):s}function lt(s){try{let e=s.params?.key;if(!e)return k("getOutputsFetchedSources requires params.key");let i=qe().listSources(e),p={};for(let w of i)p[w]=Pe(`${e}/${w}`);return x(p)}catch(e){return T(e)}}function ft(s){try{let e=qe(),i=new Set;for(let w of r.blobStorage("sources").listKeys()){let O=w.indexOf("/");O>0&&!w.includes("/.staged/")&&i.add(w.slice(0,O));}let p={};for(let w of i){let O=e.listSources(w);if(O.length>0){p[w]={};for(let U of O)p[w][U]=Pe(`${w}/${U}`);}}return x(p)}catch(e){return T(e)}}return {init:E,status:_,getCardStoreRef:oe,getOutputsStoreRef:le,getScratchStoreRef:S,getArchiveStoreRef:C,getChatStoreRef:v,getArtifactsStoreRef:P,getConfig:M,getOutputsDataObject:z,getAllOutputsDataObjects:Z,getOutputsComputedValues:dt,getAllOutputsComputedValues:ct,getOutputsFetchedSources:lt,getAllOutputsFetchedSources:ft,removeCard:V,addCardFiles:F,cardRefreshedNotify:D,retrigger:$,processAccumulatedEvents:L,upsertCard:J,taskFailed:te,taskProgress:re,sourceDataFetched:Ce,sourceDataFetchFailure:ne}}function Nt(t,r){let n=()=>Oe(r.kvStorage("config"));function c(){let a=n().readCardStoreRef();if(!a)throw new Error(`Board at ${t.value} has no card store configured. Run: init --base-ref <ref> --store-ref <b64-ref>`);let o=r.kvStorageForRef(a);return {readIndex(){return o.read("_index")},writeIndex(u){o.write("_index",u);},readCard(u){return o.read(u)},writeCard(u,h){return o.write(u,h),r.hashFn(h)},removeCard(u){o.delete(u);},cardExists(u){return o.read(u)!==null},defaultCardKey(u){return u}}}let l=()=>_e(c(),r.onWarn??(()=>{}));async function m(a,o){let u=r.validateSchema(o),h=[],b=n().readTaskExecutorRef();if(b&&Array.isArray(o.source_defs))for(let _ of o.source_defs){let V=typeof _.bindTo=="string"?_.bindTo:"(unknown)";try{let F;try{F=await r.invokeExecutor(b,"validate-source-def",{timeout:r.executorTimeouts?.validationMs??1e4,input:JSON.stringify(_)});}catch($){let L=$;if(F=typeof L?.stdout=="string"?L.stdout:"",!F.trim()){h.push(`source "${V}": executor validate-source-def failed \u2014 ${$ instanceof Error?$.message:String($)}`);continue}}let D=JSON.parse(F.trim());if(!D.ok&&Array.isArray(D.errors))for(let $ of D.errors)h.push(`source "${V}": ${$}`);}catch(F){h.push(`source "${V}": executor validate-source-def failed \u2014 ${F instanceof Error?F.message:String(F)}`);}}let E=[...u.errors,...h];return x({cardId:a,isValid:E.length===0,issues:E})}function g(a,o){let u=a.params?.sourceIdx,h=a.params?.outRef;if(u===void 0)return k(`${o} requires params.sourceIdx`);if(!a.body||typeof a.body!="object"||Array.isArray(a.body))return k(`${o} requires card JSON object in body`);let b=a.body,E=b["card-content"]??b,_=b["mock-projections"]??{},V=E.source_defs??[];if(u<0||u>=V.length)return k(`sourceIdx ${u} out of range (card has ${V.length} source(s))`);let F=V[u],D=typeof F.bindTo=="string"?F.bindTo:"source";return {src:F,bindTo:D,outRef:h,mockProjections:_}}async function f(a){try{if(!a.body||typeof a.body!="object"||Array.isArray(a.body))return k("validateCardPreflight requires card JSON object in body");let o=a.body,u=o["card-content"]??o,h=typeof u.id=="string"?u.id:"(unknown)";return await m(h,u)}catch(o){return T(o)}}async function I(a){try{let o=g(a,"probeSourcePreflight");if("status"in o)return o;let u=n().readTaskExecutorRef();if(!u)return k("No task-executor registered for this board");try{let h={...o.src,_projections:o.mockProjections},b=await r.invokeExecutor(u,"probe-source-preflight",{timeout:o.src.timeout??r.executorTimeouts?.preflightMs??6e4,input:JSON.stringify(h)}),E=JSON.parse(b.trim());return E.ok?x({bindTo:o.bindTo,reachable:E.reachable,latencyMs:E.latencyMs,note:E.note}):k(E.error??"Preflight probe failed")}catch{return k("Executor does not support probe-source-preflight")}}catch(o){return T(o)}}async function A(a){try{let o=g(a,"runSourcePreflight");if("status"in o)return o;let u=n().readTaskExecutorRef();if(!u)return k("No task-executor registered for this board");try{let h={...o.src,_projections:o.mockProjections},b$1=await r.invokeExecutor(u,"run-source-preflight",{timeout:o.src.timeout??r.executorTimeouts?.probeMs??6e4,input:JSON.stringify(h)}),E=JSON.parse(b$1.trim());if(!E.ok)return x({bindTo:o.bindTo,ok:!1,result:null,issues:[E.error??"Preflight run failed"]});if(o.outRef){let _=b(o.outRef);r.absoluteBlob.write(_.value,JSON.stringify(E.resultValue,null,2));}return x({bindTo:typeof E.bindTo=="string"?E.bindTo:o.bindTo,ok:!0,result:E.resultValue??null,issues:[]})}catch(h){let b=h instanceof Error?h.message:String(h);return x({bindTo:o.bindTo,ok:!1,result:null,issues:[b]})}}catch(o){return T(o)}}async function j(a){try{let o=n().readTaskExecutorRef();if(!o)return k("No task-executor registered for this board");let u=await r.invokeExecutor(o,"describe-capabilities",{timeout:r.executorTimeouts?.describeMs??1e4});return x(JSON.parse(u.trim()))}catch(o){return T(o)}}function B(a){try{let o=a.body;if(!o||!Array.isArray(o.ops))return k("updatesInCardStore requires body.ops array");let u=o.ops,h=l();for(let b of u){let E=b.op,_=b.id;if(!_)return k('op is missing "id"');if(E==="update"){let V=b["card-content"];if(!V)return k(`update op for "${_}" is missing "card-content"`);h.writeCard(_,V);}else return k(`Unknown op type: "${E??"(none)"}"`)}return x()}catch(o){return T(o)}}function K(a){try{let o=a.body;if(!o||!Array.isArray(o.ids))return k("readFromCardStore requires body.ids array");let u=o.ids,h=l(),b=u.map(E=>({id:E,"card-content":h.readCard(E)}));return x({cards:b})}catch(o){return T(o)}}function Y(a){try{if(!a.body||typeof a.body!="object"||Array.isArray(a.body))return k("evalCardCompute requires a JSON object in body");let o=a.body,u=o["card-content"]??o,h=typeof u.id=="string"?u.id:"(unknown)",b=o["mock-fetched-sources"]??{},E=o["mock-requires"]??{},_=u.compute;if(!_||!Array.isArray(_)||_.length===0)return x({cardId:h,ok:!0,computed_values:{},errors:[]});let V={id:h,card_data:u.card_data??{},requires:E,source_defs:u.source_defs,compute:_},F=a$3.runSync(V,{sourcesData:b}),D=F.node.computed_values??{},$=F.errors??[];return x({cardId:h,ok:$.length===0,computed_values:D,errors:$})}catch(o){return T(o)}}async function y(a){try{if(!a.body||typeof a.body!="object"||Array.isArray(a.body))return k("simulateCardCycle requires a JSON object in body");let o=a.body,u=o["card-content"]??o,h=typeof u.id=="string"?u.id:"(unknown)",b=o["mock-fetched-sources"]??{},E=o["mock-requires"]??{},_=await m(h,u),V=_.status==="success"?{isValid:_.data.isValid,issues:_.data.issues}:{isValid:!1,issues:[_.status==="fail"?_.error:"internal error"]},F=u.source_defs??[],D=u.card_data??{},$=[],L=[];if(F.length>0){$=a$3.enrichSourcesSync(F,{card_data:D,requires:E});for(let C of $){let v=C.projections,P=C._projections;if(v&&P){for(let M of Object.keys(v))if(P[M]===void 0){let z=typeof C.bindTo=="string"?C.bindTo:"(unknown)";L.push({bindTo:z,key:M,error:`Projection "${M}" resolved to undefined`});}}}}let J=[],te={...b},re=o["task-executor-ref"],Ce=(re?.howToRun&&re?.whatToRun?re:void 0)??n().readTaskExecutorRef();for(let C=0;C<$.length;C++){let v=$[C],P=typeof v.bindTo=="string"?v.bindTo:`source_${C}`;if(!Ce){J.push({bindTo:P,skipped:!0,error:"No task executor configured"});continue}try{let M={...v},z=await r.invokeExecutor(Ce,"run-source-preflight",{timeout:v.timeout??r.executorTimeouts?.preflightMs??6e4,input:JSON.stringify(M)}),Z=JSON.parse(z.trim());Z.ok&&!Object.prototype.hasOwnProperty.call(b,P)&&Object.prototype.hasOwnProperty.call(Z,"resultValue")&&(te[P]=Z.resultValue),J.push({bindTo:P,reachable:Z.reachable,latencyMs:Z.latencyMs,error:Z.ok?void 0:Z.error});}catch{J.push({bindTo:P,skipped:!0,error:"Executor does not support run-source-preflight"});}}let ne=u.compute,oe={},le=[];if(ne&&Array.isArray(ne)&&ne.length>0){let C={id:h,card_data:D,requires:E,source_defs:u.source_defs,compute:ne},v=a$3.runSync(C,{sourcesData:te});oe=v.node.computed_values??{},le=v.errors??[];}let S=V.isValid&&L.length===0&&le.length===0&&J.every(C=>C.reachable!==!1);return x({cardId:h,ok:S,validation:V,source_probes:J,projection_errors:L,fetched_sources:te,computed_values:oe,compute_errors:le})}catch(o){return T(o)}}return {validateCardPreflight:f,probeSourcePreflight:I,runSourcePreflight:A,evalCardCompute:Y,simulateCardCycle:y,describeTaskExecutorCapabilities:j,updatesInCardStore:B,readFromCardStore:K}}
2
- export{_e as a,ve as b,ce as c,Fe as d,Vt as e,Nt as f};//# sourceMappingURL=chunk-M7EQRS6W.js.map
3
- //# sourceMappingURL=chunk-M7EQRS6W.js.map
@@ -1,2 +0,0 @@
1
- 'use strict';function p(e){return String(e).replace(/[^a-zA-Z0-9_-]/g,"_")}function m(e){let n=e.payload??{};return {id:e.id,role:typeof n.role=="string"?n.role:"system",text:typeof n.text=="string"?n.text:"",files:Array.isArray(n.files)?n.files:[],turn:typeof n.turn=="string"?n.turn:"",updated_at:typeof n.updated_at=="string"?n.updated_at:""}}function R(e,n){let a=t=>`chats/${p(t)}/processing`,r=t=>`chats/${p(t)}/config`;return {append(t,i,o,u=[],s=""){return e(t).append({role:i,text:o,files:u,turn:s,updated_at:new Date().toISOString()}).id},readAll(t){return e(t).readAll().map(m)},readAfter(t,i){let o=e(t).readAfter(i);return {records:o.entries.map(m),cursor:o.newCursor}},clear(t){e(t).clear?.();},setProcessing(t,i){i?n.write(a(t),true):n.delete(a(t));},isProcessing(t){return n.read(a(t))===true},getConfig(t){return n.read(r(t))??{}},setConfig(t,i){let o=n.read(r(t))??{};n.write(r(t),{...o,...i});}}}function S(){let e=globalThis.crypto;return typeof e?.randomUUID=="function"?String(e.randomUUID()):`id-${Date.now()}-${Math.random().toString(36).slice(2)}`}function $(){let e=new Map,n=new Map;function a(r){return e.has(r)||e.set(r,[]),e.get(r)}return {append(r,t,i,o=[],u=""){let s={id:S(),role:t,text:i,files:o,turn:u,updated_at:new Date().toISOString()};return a(r).push(s),s.id},readAll(r){return a(r).slice()},readAfter(r,t){let i=a(r);if(!t)return {records:i.slice(),cursor:i.length>0?i[i.length-1].id:null};let o=i.findIndex(s=>s.id===t),u=o===-1?i.slice():i.slice(o+1);return {records:u,cursor:u.length>0?u[u.length-1].id:t}},clear(r){e.set(r,[]);},setProcessing(r,t){t?n.set(`p:${r}`,true):n.delete(`p:${r}`);},isProcessing(r){return n.get(`p:${r}`)===true},getConfig(r){return n.get(`c:${r}`)??{}},setConfig(r,t){let i=n.get(`c:${r}`)??{};n.set(`c:${r}`,{...i,...t});}}}function y(){return new Date().toISOString()}function x(e){return new TextEncoder().encode(e).byteLength}function A(e){return e?{key:e.key,size:e.size,updatedAt:e.updatedAt,contentType:e.contentType}:null}function w(e){let n=String(e||"").match(/^(\d+)[-_]/);return n?parseInt(n[1],10):0}function I(e){let n=String(e||"").trim();if(!n)return "upload.bin";let a=Math.max(n.lastIndexOf("/"),n.lastIndexOf("\\"));return (a>=0?n.slice(a+1):n)||"upload.bin"}function k(e){return String(e||"").toLowerCase().replace(/\s+/g,"_").replace(/[^a-z0-9_-]/g,"_").replace(/_+/g,"_").replace(/^_+|_+$/g,"")||"file"}function z(e){if(!e||e===".")return "";let n=String(e).replace(/^\./,"").toLowerCase().replace(/[^a-z0-9]/g,"");return n?`.${n}`:""}function F(e){let n=I(e),a=n.lastIndexOf(".");return a<=0||a===n.length-1?{stem:n,ext:""}:{stem:n.slice(0,a),ext:n.slice(a)}}function M(e){let n=e.lastIndexOf("/");return n>=0?e.slice(n+1):e}function L(e){function n(a){let r=e.stat?A(e.stat(a)):null;if(r)return r;if(!e.exists(a))return null;let t=e.read(a);return t===null?{key:a}:{key:a,size:x(t)}}return {exists(a){return e.exists(a)},putText(a,r,t="text/plain; charset=utf-8"){e.write(a,r);let i=n(a)??{key:a};return i.contentType=t,i.updatedAt=i.updatedAt??y(),i.size=i.size??x(r),i},putBytes(a,r,t="application/octet-stream"){if(e.writeBytes)e.writeBytes(a,r);else {let o=JSON.stringify({__kind:"bytes-array",data:[...r]});e.write(a,o);}let i=n(a)??{key:a};return i.contentType=t,i.updatedAt=i.updatedAt??y(),i.size=i.size??r.byteLength,i},getText(a){let r=e.read(a);if(r===null){if(!e.readBytes)return null;let t=e.readBytes(a);return t===null?null:Buffer.from(t).toString("utf-8")}try{let t=JSON.parse(r);if(t&&t.__kind==="bytes-array"&&Array.isArray(t.data))return new TextDecoder("utf-8").decode(new Uint8Array(t.data))}catch{}return r},getBytes(a){if(e.readBytes){let t=e.readBytes(a);if(t!==null)return t}let r=e.read(a);if(r===null)return null;try{let t=JSON.parse(r);if(t&&t.__kind==="bytes-array"&&Array.isArray(t.data))return new Uint8Array(t.data)}catch{}return new TextEncoder().encode(r)},head:n,list(a=""){return e.listKeys(a).map(r=>n(r)??{key:r}).sort((r,t)=>r.key.localeCompare(t.key))},remove(a){e.remove(a);}}}function b(e){function n(t,i){let o=0,u=[];Array.isArray(i)&&u.push(...i);for(let s of e.list(`${t}/`))u.push(M(s.key));for(let s of u){let l=w(s);Number.isFinite(l)&&l>o&&(o=l);}return o+1}function a(t,i,o){let u=Number(o?.maxLen||32),{stem:s,ext:l}=F(t),h=z(l),C=k(s),d=`${String(i).padStart(3,"0")}-`,g=h,f=u-d.length-g.length;f<1&&(g="",f=u-d.length);let _=C.slice(0,Math.max(1,f)),c=`${d}${_}${g}`;return c.length>u&&(c=c.slice(0,u).replace(/\.$/,"")),c}function r(t,i,o){let u=n(t,o?.seedNames),s=a(i,u,{maxLen:o?.maxLen});for(;e.exists(`${t}/${s}`);)u+=1,s=a(i,u,{maxLen:o?.maxLen});return s}return {nextSerial:n,buildStoredName:a,allocateStoredName:r}}function N(){function e(t,i){if(!Array.isArray(t))return [];let o=[];for(let u of t){if(!u||typeof u!="object")continue;let s=u;typeof s.stored_name=="string"&&o.push({name:typeof s.name=="string"?s.name:s.stored_name,stored_name:s.stored_name,size:typeof s.size=="number"&&Number.isFinite(s.size)?s.size:null,mime_type:typeof s.mime_type=="string"?s.mime_type:null,uploaded_at:typeof s.uploaded_at=="string"?s.uploaded_at:i||null,chat:s.chat===true});}return o}function n(t){return !t||typeof t!="object"?[]:e(t.files,void 0)}function a(t,i){let o=n(t);if(i.length===0)return t.files=o,o;let u=new Set(o.map(s=>s.stored_name));for(let s of i)u.has(s.stored_name)||(o.push(s),u.add(s.stored_name));return t.files=o,o}function r(t,i,o){let u=n(t);if(!Number.isInteger(i)||i<0||i>=u.length)return {ok:false,reason:"index_out_of_range"};let s=u[i];return !s||!s.stored_name?{ok:false,reason:"missing_stored_name"}:o&&o!==s.stored_name?{ok:false,reason:"stale_reference"}:{ok:true,file:s}}return {read:n,normalizeIncoming:e,merge:a,resolve:r}}exports.a=R;exports.b=$;exports.c=L;exports.d=b;exports.e=N;//# sourceMappingURL=chunk-NJJ7WEDT.cjs.map
2
- //# sourceMappingURL=chunk-NJJ7WEDT.cjs.map