yaml-flow 8.11.2 → 8.11.4
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.
- package/browser/adapters/firestore-storage.js +2 -2
- package/browser/adapters/localstorage-storage.js +3 -3
- package/browser/asset-integrity.json +5 -5
- package/browser/server-runtime-controlface.js +5 -5
- package/examples/board/test/server-http-test-browser.ts +9 -1
- package/examples/board/test/server-http-test.js +15 -19
- package/lib/board-live-cards-node.cjs +2 -2
- package/lib/board-live-cards-node.d.cts +2 -2
- package/lib/board-live-cards-node.d.ts +2 -2
- package/lib/board-live-cards-node.js +2 -2
- package/lib/board-live-cards-public.cjs +1 -1
- package/lib/board-live-cards-public.js +1 -1
- package/lib/board-live-cards-server-runtime.cjs +1 -1
- package/lib/board-live-cards-server-runtime.d.cts +1 -1
- package/lib/board-live-cards-server-runtime.d.ts +1 -1
- package/lib/board-live-cards-server-runtime.js +1 -1
- package/lib/board-livegraph-runtime/index.cjs +1 -1
- package/lib/board-livegraph-runtime/index.d.cts +1 -0
- package/lib/board-livegraph-runtime/index.d.ts +1 -0
- package/lib/board-livegraph-runtime/index.js +1 -1
- package/lib/chunk-37JSBRZO.js +2 -0
- package/lib/{chunk-ZCU5O2LR.js → chunk-4BEQXKRF.js} +2 -2
- package/lib/chunk-5VTIOM2U.js +3 -0
- package/lib/chunk-BAG7MHZP.cjs +3 -0
- package/lib/chunk-EZOXABJ2.js +3 -0
- package/lib/chunk-HVLWVMG6.cjs +3 -0
- package/lib/chunk-LRO5AL75.cjs +2 -0
- package/lib/chunk-MQAVZUXB.cjs +3 -0
- package/lib/chunk-WHKT5HN4.js +3 -0
- package/lib/{chunk-FFHG3CFU.cjs → chunk-Z26U6RSG.cjs} +2 -2
- package/lib/cloud-storage.cjs +1 -1
- package/lib/cloud-storage.js +1 -1
- package/lib/firestore-storage/index.cjs +1 -1
- package/lib/firestore-storage/index.js +1 -1
- package/lib/index.cjs +2 -2
- package/lib/index.js +1 -1
- package/lib/localstorage-storage/index.cjs +1 -1
- package/lib/localstorage-storage/index.js +1 -1
- package/lib/server-jobs-queue-runner/index.d.cts +1 -1
- package/lib/server-jobs-queue-runner/index.d.ts +1 -1
- package/lib/server-runtime/index.cjs +1 -1
- package/lib/server-runtime/index.d.cts +2 -2
- package/lib/server-runtime/index.d.ts +2 -2
- package/lib/server-runtime/index.js +1 -1
- package/lib/server-runtime-agentface/index.d.cts +1 -1
- package/lib/server-runtime-agentface/index.d.ts +1 -1
- package/lib/server-runtime-controlface/index.cjs +1 -1
- package/lib/server-runtime-controlface/index.d.cts +1 -1
- package/lib/server-runtime-controlface/index.d.ts +1 -1
- package/lib/server-runtime-controlface/index.js +1 -1
- package/lib/server-runtime-core/index.cjs +1 -1
- package/lib/server-runtime-core/index.d.cts +7 -4
- package/lib/server-runtime-core/index.d.ts +7 -4
- package/lib/server-runtime-core/index.js +1 -1
- package/lib/server-runtime-watchers/index.d.cts +3 -3
- package/lib/server-runtime-watchers/index.d.ts +3 -3
- package/lib/server-runtime-webhooks/index.d.cts +1 -1
- package/lib/server-runtime-webhooks/index.d.ts +1 -1
- package/lib/{sse-hub-D_94fV87.d.ts → sse-hub-D_QHswxL.d.ts} +1 -1
- package/lib/{sse-hub-BRBvymHR.d.cts → sse-hub-XO6crN9o.d.cts} +1 -1
- package/lib/{types-BsqzUZNl.d.ts → types-B8Yieskx.d.ts} +2 -0
- package/lib/{types-DxhB6Toz.d.cts → types-gTf9pAyC.d.cts} +2 -0
- package/package.json +1 -1
- package/lib/chunk-42ZOYXEV.cjs +0 -3
- package/lib/chunk-AHW6EMUO.js +0 -3
- package/lib/chunk-CZ6ZFWFT.js +0 -2
- package/lib/chunk-EYBDAEVO.cjs +0 -3
- package/lib/chunk-HFI2NAZJ.js +0 -3
- package/lib/chunk-LDVJPFIW.js +0 -3
- package/lib/chunk-NMOUBZXX.cjs +0 -2
- package/lib/chunk-ZOZ7ZDGA.cjs +0 -3
package/lib/chunk-42ZOYXEV.cjs
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
'use strict';var chunkLFVMX23W_cjs=require('./chunk-LFVMX23W.cjs'),chunkNM6O35RY_cjs=require('./chunk-NM6O35RY.cjs'),chunkNBJTYAYN_cjs=require('./chunk-NBJTYAYN.cjs'),chunkNMOUBZXX_cjs=require('./chunk-NMOUBZXX.cjs'),chunkBQUQTOPB_cjs=require('./chunk-BQUQTOPB.cjs'),chunkGPCMBPLK_cjs=require('./chunk-GPCMBPLK.cjs'),chunk7FGPOGRV_cjs=require('./chunk-7FGPOGRV.cjs'),chunkLPXVVMQT_cjs=require('./chunk-LPXVVMQT.cjs'),chunk272IYUKT_cjs=require('./chunk-272IYUKT.cjs'),chunkZOZ7ZDGA_cjs=require('./chunk-ZOZ7ZDGA.cjs'),chunkWRMOGPRG_cjs=require('./chunk-WRMOGPRG.cjs'),chunkEYBDAEVO_cjs=require('./chunk-EYBDAEVO.cjs'),chunk5XLFPPTY_cjs=require('./chunk-5XLFPPTY.cjs'),chunkSDJ3747Q_cjs=require('./chunk-SDJ3747Q.cjs'),chunkOF4FPYNI_cjs=require('./chunk-OF4FPYNI.cjs'),chunk2RIHC5TZ_cjs=require('./chunk-2RIHC5TZ.cjs');function ie(R){let{apiBasePath:w,json:b,readJsonBody:$,bootstrapBoard:A,createMcpControlplaneToolRegistry:x,retriggerCard:D,applyCardAction:N,resolveChatHandlerTarget:E,sendCardFileDownloadResponse:q}=R;async function j(T,S,W){let H=T.method||"GET",J=W,f=J.pathname;try{if(H==="POST"&&f===`${w}/mcp-actions`){await A();let p=Date.now(),y=new Date(p).toISOString(),O=await $(T),l=typeof O.tool=="string"?O.tool.trim():"",B=O.args&&typeof O.args=="object"&&!Array.isArray(O.args)?O.args:{};if(!l)return b(S,400,{error:"tool is required"}),!0;let k=chunkLPXVVMQT_cjs.a(B,"card_id");if(!k)return b(S,400,{error:"MCP action requires card_id"}),!0;if(l==="retrigger-card"||l==="retrigger"){await D(k);let F=Date.now();return b(S,200,{status:"success",data:{ok:!0,cardId:k,actionType:l,requestReceivedAt:y,requestReceivedAtMs:p,responseSentAt:new Date(F).toISOString(),responseSentAtMs:F,responseStatus:200}}),!0}let P=chunkLPXVVMQT_cjs.c(B,"payload");if(l==="chat-send"&&!await E(k)){let F=Date.now();return b(S,409,{error:`chat handler is not configured for card: ${k}`,requestReceivedAt:y,requestReceivedAtMs:p,responseSentAt:new Date(F).toISOString(),responseSentAtMs:F,responseStatus:409}),!0}if(l==="chat-send"){let F=typeof P["turn-id"]=="string"?P["turn-id"]:typeof P.turnId=="string"?P.turnId:typeof P.turn=="string"?P.turn:"";if(!F||!String(F).trim()){let L=Date.now();return b(S,400,{error:`chat-send requires a non-empty 'turn-id' (or 'turnId'/'turn') in payload for card: ${k}`,requestReceivedAt:y,requestReceivedAtMs:p,responseSentAt:new Date(L).toISOString(),responseSentAtMs:L,responseStatus:400}),!0}}await N(k,l,P);let I=Date.now();return b(S,200,{status:"success",data:{ok:!0,cardId:k,actionType:l,requestReceivedAt:y,requestReceivedAtMs:p,responseSentAt:new Date(I).toISOString(),responseSentAtMs:I,responseStatus:200}}),!0}if(H==="POST"&&f===`${w}/mcp-controlplane`){await A();let p=await $(T),y=typeof p.tool=="string"?p.tool.trim():"",O=p.args&&typeof p.args=="object"&&!Array.isArray(p.args)?p.args:{};if(!y)return b(S,400,{error:"tool is required"}),!0;try{let l=await chunk272IYUKT_cjs.a(y,O,x());if(l&&typeof l=="object"&&!Array.isArray(l)){let B=l;if(B.status==="fail")return b(S,400,{error:chunk272IYUKT_cjs.b(l,"Request failed")}),!0;if(B.status==="error")return b(S,500,{error:chunk272IYUKT_cjs.b(l,"Internal error")}),!0}b(S,200,l);}catch(l){let B=typeof l?.statusCode=="number"?Number(l.statusCode):500,k=l instanceof Error?l.message:String(l);b(S,B,{error:k});}return !0}let g=f.match(new RegExp(`^${chunkBQUQTOPB_cjs.c(w)}/cards/([^/]+)/retrigger$`));if(H==="POST"&&g){await A();let p=decodeURIComponent(g[1]);return await D(p),b(S,200,{ok:!0}),!0}let d=f.match(new RegExp(`^${chunkBQUQTOPB_cjs.c(w)}/cards/([^/]+)/actions$`));if(H==="POST"&&d){await A();let p=decodeURIComponent(d[1]),y=Date.now(),O=new Date(y).toISOString(),l=await $(T),B=l?.actionType;if(B==="chat-send"&&!await E(p)){let P=Date.now();return b(S,409,{error:`chat handler is not configured for card: ${p}`,requestReceivedAt:O,requestReceivedAtMs:y,responseSentAt:new Date(P).toISOString(),responseSentAtMs:P,responseStatus:409}),!0}if(B==="chat-send"){let P=l?.payload??{},I=typeof P["turn-id"]=="string"?P["turn-id"]:typeof P.turnId=="string"?P.turnId:typeof P.turn=="string"?P.turn:"";if(!I||!String(I).trim()){let F=Date.now();return b(S,400,{error:`chat-send requires a non-empty 'turn-id' (or 'turnId'/'turn') in payload for card: ${p}`,requestReceivedAt:O,requestReceivedAtMs:y,responseSentAt:new Date(F).toISOString(),responseSentAtMs:F,responseStatus:400}),!0}}await N(p,B,l?.payload);let k=Date.now();return b(S,200,{ok:!0,requestReceivedAt:O,requestReceivedAtMs:y,responseSentAt:new Date(k).toISOString(),responseSentAtMs:k,responseStatus:200}),!0}let v=f.match(new RegExp(`^${chunkBQUQTOPB_cjs.c(w)}/cards/([^/]+)/files/(\\d+)$`));if(H==="GET"&&v){let p=decodeURIComponent(v[1]),y=parseInt(v[2],10),O=J.searchParams.get("sn");return await q(S,p,y,O),!0}return !1}catch(g){let d=g?.statusCode||500;return b(S,d,{error:String(g?.message||g)}),true}}return {handleRuntimeApi:j}}var ze=3e4;function Ke(R){let w=R.socket?.remoteAddress??"";return w==="127.0.0.1"||w==="::1"||w==="::ffff:127.0.0.1"}function ce(R){let{apiBasePath:w,emitNotifications:b,readJsonBody:$,json:A}=R,x=`${w}/notify-q`;async function D(N,E,q){if(q.pathname!==x)return false;if((N.method??"").toUpperCase()!=="POST")return A(E,405,{status:"error",error:"Method not allowed"}),true;if(!Ke(N))return A(E,403,{status:"error",error:"Forbidden"}),true;let j;try{j=await $(N);}catch{return A(E,400,{status:"error",error:"Invalid JSON body"}),true}if(!j||typeof j!="object"||!Array.isArray(j.notifications))return A(E,400,{status:"error",error:"body.notifications must be an array"}),true;let T=j.notifications,{accepted:S,rejected:W}=chunkNMOUBZXX_cjs.b(T,Date.now(),ze);return S.length>0&&b(S),A(E,200,{status:"success",data:{accepted:S.length,rejected:W}}),true}return {handleNotifyRoute:D}}var de={"Access-Control-Allow-Origin":"*","Access-Control-Allow-Headers":"content-type,x-file-name","Access-Control-Allow-Methods":"GET,POST,PATCH,OPTIONS"},ue="chat-handler-flow-queue",ot="__probe__echo__probe__";function jr(R){let w=String(R.apiBasePath||"/api/board").replace(/\/$/,""),b={...de,...R.corsHeaders||{}},$=R.queueLaneTuning??{},A=R.boardId||"",x=R.logger||{info:console.log,warn:console.warn,error:console.error},D=R.invocationAdapter,N=R.chatFlowRunner||null,E=R.notificationTransport||null,q=R.serverUrl||null,j=R.executionExtra||{},T=R.onSseClientConnected,S=R.onSseClientDisconnected,W=R.onChannelSubscribed,H=R.onChannelUnsubscribed,J=chunkLFVMX23W_cjs.a({buildChatOneShotBatch:async(t,e)=>await tt.buildSseOneShotBatch({params:{cardId:t},body:{receiving:e}}),onSseClientDisconnected:S}),f=chunkLFVMX23W_cjs.a({buildChatOneShotBatch:async()=>({status:"success",data:{kind:"notification-batch",category:"batch",notifications:[]}})});function g(t){function e(a){return {...a,queueStorageForRef(u,C){return chunkSDJ3747Q_cjs.a(a.queueStorageForRef(u,C),{lane:C,emitNotification:i})}}}function r(a){return {...a,queueStorageForRef(u,C){return chunkZOZ7ZDGA_cjs.h(a.queueStorageForRef(u,C),{lane:C,emitNotification:i})}}}function n(a){return {async get(u){return a.get(u)},async set(u){return a.set(u)},async del(u){return a.del(u)},async patch(u){return a.patch(u)},async appendFiles(u){return a.appendFiles(u)}}}function o(a){return {async get(u){return await a.get(u)},async set(u){return await a.set(u)},async del(u){return await a.del(u)},async patch(u){return await a.patch(u)},async appendFiles(u){return await a.appendFiles(u)}}}let s=null;function i(a){if(a.kind==="notification-batch"){V(a.notifications,s??void 0);return}V([a],s??void 0);}let c=chunkBQUQTOPB_cjs.a(t.boardAdapter)?r(t.boardAdapter):e(t.boardAdapter),M=t.nonCoreAdapter??(!chunkBQUQTOPB_cjs.a(c)&&l(c)?c:null),h=chunkBQUQTOPB_cjs.a(c)?chunkZOZ7ZDGA_cjs.i(t.baseRef,c,{boardRuntimeStoreRef:t.boardRuntimeStoreRef,scratchStoreRef:t.scratchStoreRef,taskExecutorRef:t.taskExecutorRef,chatHandlerFlow:t.chatHandlerFlow,emitNotification:i}):chunkEYBDAEVO_cjs.y(t.baseRef,c,{boardRuntimeStoreRef:t.boardRuntimeStoreRef,scratchStoreRef:t.scratchStoreRef,taskExecutorRef:t.taskExecutorRef,chatHandlerFlow:t.chatHandlerFlow,emitNotification:i}),_=t.nonCore??(M?chunkEYBDAEVO_cjs.z(t.baseRef,M,{boardRuntimeStoreRef:t.boardRuntimeStoreRef,taskExecutorRef:t.taskExecutorRef}):null),Ue=c.chatStorageForRef(t.chatStoreRef),dt,We=chunkBQUQTOPB_cjs.a(c)?(()=>{let a=chunkZOZ7ZDGA_cjs.d(chunkZOZ7ZDGA_cjs.c(chunkZOZ7ZDGA_cjs.b(c.kvStorageForRef(t.cardStoreRef)),c.hashFn),x.warn),u=chunkZOZ7ZDGA_cjs.g(a,{emitNotification:i}),C=o(u);return dt={get(m){return C.get(m)},set(m){return C.set(m)}},C})():(()=>{let a=c.kvStorageForRef(t.cardStoreRef),C=chunk5XLFPPTY_cjs.a(chunkEYBDAEVO_cjs.l({readIndex:()=>a.read("_index"),writeIndex:m=>a.write("_index",m),readCard:m=>a.read(m),writeCard:(m,ft)=>(a.write(m,ft),m),removeCard:m=>{a.delete(m);},cardExists:m=>a.read(m)!==null,defaultCardKey:m=>m},x.warn),{emitNotification:i});return dt=C,n(C)})(),lt;if(chunkBQUQTOPB_cjs.a(c)){let a=c.blobStorageForRef(t.artifactsStoreRef);lt={async putBytes(u,C){if(a.writeBytes){await a.writeBytes(u,C);return}let m=JSON.stringify({__kind:"bytes-array",data:[...C]});await a.write(u,m);},async getBytes(u){if(a.readBytes){let m=await a.readBytes(u);if(m!==null)return m}let C=await a.read(u);if(C===null)return null;try{let m=JSON.parse(C);if(m&&m.__kind==="bytes-array"&&Array.isArray(m.data))return new Uint8Array(m.data)}catch{}return new TextEncoder().encode(C)},async listKeys(u){return await a.listKeys(u)}};}else {let a=c.blobStorageForRef(t.artifactsStoreRef),u=chunkNBJTYAYN_cjs.a(a);lt={putBytes(C,m,ft){u.putBytes(C,m,ft);},getBytes(C){return u.getBytes(C)},listKeys(C){return u.list(C).map(m=>m.key)}};}let Je={async init(a){return h.init(a)},async status(a){return h.status(a)},async getConfig(a){return h.getConfig(a)},async getAllOutputsDataObjects(a){return h.getAllOutputsDataObjects(a)},async getAllOutputsComputedValues(a){return h.getAllOutputsComputedValues(a)},async getOutputsFetchedSources(a){return h.getOutputsFetchedSources(a)},async buildSseOneShotPayload(a){return h.buildSseOneShotPayload(a)},async upsertCard(a){return h.upsertCard(a)},async removeCard(a){return h.removeCard(a)},async sourceDataFetched(a){return h.sourceDataFetched(a)},async sourceDataFetchFailure(a){return h.sourceDataFetchFailure(a)}};return s={label:t.label,board:h,nonCore:_,publicCardStore:dt,boardOps:Je,cardStoreOps:We,get filesArtifacts(){return lt},get chatStorage(){return Ue},boardAdapter:c,boardRuntimeStoreRef:t.boardRuntimeStoreRef,cardStoreRef:t.cardStoreRef,outputsStoreRef:t.outputsStoreRef,artifactsStoreRef:t.artifactsStoreRef,fetchedSourcesStoreRef:t.fetchedSourcesStoreRef,queueStoreRef:t.queueStoreRef,chatStoreRef:t.chatStoreRef,scratchStoreRef:t.scratchStoreRef,notifyRef:t.notifyRef,taskExecutorRef:t.taskExecutorRef,chatHandlerRef:t.chatHandlerRef,chatHandlerFlow:t.chatHandlerFlow,inferenceAdapterRef:t.inferenceAdapterRef,notification:chunkNMOUBZXX_cjs.c(),notificationTeardown:null,initialized:false,cardsBootstrapped:false},s}let d=R.boards.map(g),v=new Map;function p(t){return v.get(t)??0}function y(t){return t.queueStoreRef}function O(t,e){if(chunkBQUQTOPB_cjs.a(t.boardAdapter)){let n=t.boardAdapter.queueStorageForRef(y(t),e);return chunkWRMOGPRG_cjs.a(n)}let r=t.boardAdapter.queueStorageForRef(y(t),e);return chunkGPCMBPLK_cjs.a(r)}function l(t){let e=t;return typeof e.invokeExecutor=="function"&&typeof e.validateSchema=="function"}function B(t){let e=d[p(t)];return {files:e?e.filesArtifacts:null}}function k(){return chunkNBJTYAYN_cjs.c()}function P(t){return String(t||"").replace(/[^a-zA-Z0-9_-]/g,"_")||"unknown-card"}function I(t){return "cardId"in t&&typeof t.cardId=="string"?z(t.cardId)??void 0:d[0]??void 0}function F(t){for(let e of t){let r=I(e);if(r)return r}return d[0]??void 0}function L(t,e={}){if(!t||t.length===0)return;let r=chunk2RIHC5TZ_cjs.e(t),n={kind:"notification-batch",category:"batch",notifications:r},o=e.ctx??F(r);if(e.appendState!==false&&o&&chunkNMOUBZXX_cjs.e(o.notification,n),e.broadcastSse!==false){let s=r.filter(c=>c.kind==="message_enqueued"),i=r.filter(c=>c.kind!=="message_enqueued");i.length>0&&J.broadcastNotificationBatch(i),s.length>0&&f.broadcastNotificationBatch(s);}if(!(e.mirrorExternal===false||!o?.boardAdapter.publishBoardChangeNotifications))try{let s=r.filter(i=>i.category==="board-output"||i.category==="card-store");s.length>0&&o.boardAdapter.publishBoardChangeNotifications(s);}catch{}}function V(t,e){L(t,{ctx:e,appendState:true,broadcastSse:true,mirrorExternal:true});}async function le(t){if(!t||t.notificationTeardown||!E||!t.notifyRef)return;let e=await E.subscribe(t.notifyRef,r=>{let n=chunkNMOUBZXX_cjs.a(r);L(n,{ctx:t,appendState:true,broadcastSse:true,mirrorExternal:false});});t.notificationTeardown=e;}async function fe(t){if(!t||t.initialized)return;let e={boardRuntimeStoreRef:t.boardRuntimeStoreRef,cardStoreRef:t.cardStoreRef,outputsStoreRef:t.outputsStoreRef,fetchedSourcesStoreRef:t.fetchedSourcesStoreRef,artifactsStoreRef:t.artifactsStoreRef,queueStoreRef:t.queueStoreRef,chatStoreRef:t.chatStoreRef,scratchStoreRef:t.scratchStoreRef},r={};t.taskExecutorRef&&(r["task-executor-ref"]=t.taskExecutorRef),t.chatHandlerFlow!==void 0&&(r["chat-handler-flow"]=t.chatHandlerFlow);let n=await t.boardOps.init({params:e,body:r});if(n.status!=="success")throw Object.assign(new Error(n.error||`init failed for ${t.label}`),{statusCode:500});if(await le(t),!t.chatHandlerFlow&&t.chatHandlerRef&&D.describe)try{let o=await D.describe(t.chatHandlerRef);o&&o.kind!=="chat-handler"?x.warn(`[init] chat-handler describe returned kind="${o.kind}", expected "chat-handler" for ${t.label}`):o&&x.info(`[init] chat-handler validated: ${o.name} (protocol ${o.protocolVersion}) for ${t.label}`);}catch(o){x.warn(`[init] chat-handler describe failed for ${t.label}: ${o?.message||String(o)}`);}t.initialized=true;}async function ct(t){let e=[],r=await t.boardOps.status({});r.status==="success"&&r.data!=null&&chunkNMOUBZXX_cjs.d(r.data)&&e.push({kind:"status",status:r.data});let n=await t.boardOps.getAllOutputsDataObjects({});if(n.status==="success"&&n.data!=null)for(let[s,i]of Object.entries(n.data))s&&e.push({kind:"data_object",key:s,payload:i});let o=await t.boardOps.getAllOutputsComputedValues({});if(o.status==="success"&&o.data!=null)for(let[s,i]of Object.entries(o.data))s&&i&&typeof i=="object"&&!Array.isArray(i)&&e.push({kind:"computed_values",cardId:s,values:i});e.length>0&&L(e,{ctx:t,appendState:true,broadcastSse:true,mirrorExternal:false});}async function gt(t,e){if(!t||t.cardsBootstrapped)return;let r=await t.cardStoreOps.get({}),n=r.status==="success"&&Array.isArray(r.data?.cards)?r.data.cards:[];for(let o of n)typeof o.id=="string"&&(v.set(o.id,e),await t.boardOps.upsertCard({params:{cardId:o.id}}));t.cardsBootstrapped=true;}async function G(){for(let t of d)await fe(t);}async function at(){await G();for(let t=0;t<d.length;t++)await ct(d[t]),await gt(d[t],t),await ct(d[t]);}async function Rt(t=false){t||await G();for(let e of d){let r=await e.board.processAccumulatedEvents({});if(r.status!=="success")return r}return {status:"success"}}function z(t){return d[p(t)]??null}async function X(t){let e=z(t);if(!e)return null;let r=await e.cardStoreOps.get({params:{id:t}});if(r.status!=="success")return null;let n=Array.isArray(r.data?.cards)?r.data.cards:[];return n.length>0?n[0]:null}async function pe(){let t=async r=>{if(!r)return [];let n=await r.cardStoreOps.get({});return n.status!=="success"||!Array.isArray(n.data?.cards)?[]:n.data.cards},e=[];for(let r of d)e.push(...await t(r));return e}function yt(){return d[0]??null}function me(t){return z(t)??yt()}function U(t){let e=me(t);if(!e)throw Object.assign(new Error(`Board context is unavailable for chat operations: ${t}`),{statusCode:404});return e.chatStorage}async function ge(t){return await U(t).isProcessing(t)}async function Y(t,e){let r=await tt.setProcessing({params:{cardId:t},body:{active:e}});if(r.status!=="success")throw Object.assign(new Error(r.error||`Failed to set chat processing for card: ${t}`),{statusCode:500})}let tt=chunkOF4FPYNI_cjs.a({append(t,e,r,n,o){return U(t).append(t,e,r,n,o)},readAll(t){return U(t).readAll(t)},readAfter(t,e){return U(t).readAfter(t,e)},clear(t){return U(t).clear(t)},setProcessing(t,e){return U(t).setProcessing(t,e)},isProcessing(t){return U(t).isProcessing(t)},getConfig(t){return U(t).getConfig(t)},setConfig(t,e){return U(t).setConfig(t,e)}},{emitNotification(t){if(t.kind==="notification-batch"){V(t.notifications);return}V([t]);}}),ht=chunkNMOUBZXX_cjs.p({boardContexts:d,cardOwnerIndex:v,cardContextForCard:t=>z(t),readStatusSnapshot:()=>be(),readDataObjectsByToken:()=>Ce(),readCardRuntimeArtifacts:()=>Se(),readCardFromStore:t=>X(t),readCardDefinitions:()=>pe(),processAccumulatedLaneInternal:t=>Rt(t),reportSourceFetched:(t,e)=>Bt(t,{ref:e}),reportSourceFetchFailure:(t,e)=>kt(t,{reason:e}),uploadCardFile:(t,e,r,n,o)=>St(t,e,r,n,o),chatStorePublic:tt,serverUrl:q,apiBasePath:w}),Re=ht.mcpCardStoreFacade,st=ht.createMcpFacade,ye=chunkNMOUBZXX_cjs.j({boardId:A,bootstrapBoard:()=>at(),sseHub:J,onChannelSubscribed:W,onChannelUnsubscribed:H,getMcpFacade:()=>st(),getMcpCardStoreFacade:()=>Re()});function he(t){return chunkNMOUBZXX_cjs.m(t)}function we(){return chunkNMOUBZXX_cjs.n(st())}function wt(){return chunkNMOUBZXX_cjs.o({boardId:A,uploadCardFile:St,getMcpFacade:()=>st(),controlplane:ye})}let it=chunkNMOUBZXX_cjs.k({boardId:A,boardContexts:d,readChatRecords:t=>Fe(t),getChatProcessing:t=>ge(t)}),be=it.readStatusSnapshot,Se=it.readCardRuntimeArtifacts,Ce=it.readDataObjectsByToken,ut=it.buildPublishedRuntimePayload;async function bt(t,e,r){let n=r?.syncBoard!==false,o=r?.restartOnlyIfChanged===true,s=z(t);if(!s)throw Object.assign(new Error(`Card not found: ${t}`),{statusCode:404});let i=await X(t);if(!i)throw Object.assign(new Error(`Card not found: ${t}`),{statusCode:404});let c=o?JSON.stringify(i):null,M=e(i)||i;if(o&&JSON.stringify(M)===c)return;let h=await s.cardStoreOps.set({body:M});if(h.status!=="success")throw Object.assign(new Error(h.error||`Failed to persist card: ${t}`),{statusCode:500});if(n){let _=await s.boardOps.upsertCard({params:{cardId:t,restart:true}});if(_.status!=="success")throw Object.assign(new Error(_.error||`Failed to upsert card: ${t}`),{statusCode:500})}}async function Ae(t,e){await bt(t,e,{syncBoard:true});}async function Be(t,e){await bt(t,e,{syncBoard:false});}async function ke(t){let e=z(t);if(!e)throw Object.assign(new Error(`Card not found: ${t}`),{statusCode:404});if(!await X(t))throw Object.assign(new Error(`Card not found: ${t}`),{statusCode:404});let n=await e.boardOps.upsertCard({params:{cardId:t,restart:true}});if(n.status!=="success")throw Object.assign(new Error(n.error||`Failed to retrigger card: ${t}`),{statusCode:500})}async function Pe(t){let e=await tt.clear({params:{cardId:t}});if(e.status!=="success")throw Object.assign(new Error(e.error||`Failed to clear chat records for card: ${t}`),{statusCode:500});try{await Y(t,!1);}catch{}}async function Oe(t,e,r,n,o=""){let s=typeof r=="string"?r.trim():"",i=await tt.append({params:{cardId:t},body:{role:e||"system",text:s,files:n,turn:o}});if(i.status!=="success")throw Object.assign(new Error(i.error||`Failed to append chat record for card: ${t}`),{statusCode:500});return String(i.data?.id||"")}async function Fe(t){return await U(t).readAll(t)}let St=chunkNMOUBZXX_cjs.l({safeCardId:t=>P(t),artifactsStores:t=>B(t),cardFileMetadataStore:()=>k(),readCardFromStore:t=>X(t),updateCardLocalOnly:(t,e)=>Be(t,e),writeChatRecord:(t,e,r,n,o)=>Oe(t,e,r,n,o)}).uploadCardFile;async function Ct(t){let e=z(t);if(!e)return null;let r=await e.boardOps.getConfig({params:{key:"chat-handler-flow"}}),o=(r.status==="success"?r.data?.value:null)??e.chatHandlerFlow??null,s=e.chatHandlerRef;return o==null&&(!s||typeof s!="object")?null:{ctx:e,handlerFlow:o,handlerRef:s}}function ve(t){let e=typeof t=="string"?t.trim():"";if(e.length<ot.length*2||!e.startsWith(ot)||!e.endsWith(ot))return null;let r=e.slice(ot.length,e.length-ot.length).trim(),n=/^([A-Za-z0-9_-]+)__(.*)$/s.exec(r);return n?{assistant:n[1].trim().toLowerCase(),text:n[2].trim()}:{assistant:"echo",text:r}}async function xe(t,e,r=false,n="",o=""){try{let s=await Ct(t);if(!s){try{await Y(t,!1);}catch{}return}let{ctx:i,handlerFlow:c,handlerRef:M}=s;if(!r)try{await Y(t,!0);}catch{}let h={boardId:A,cardId:String(t),lastChatEntryId:e,...n?{turnId:n}:{},...typeof o=="string"&&o.trim()?{probe:o.trim()}:{},...j,...q?{serverUrl:q}:{}},_=c!=null?{meta:"chat-handler-flow",howToRun:"built-in",whatToRun:{kind:"built-in",value:ue}}:M;chunkBQUQTOPB_cjs.a(i.boardAdapter)?await O(i,"chat-agent").enqueueRequest({boardId:A,ref:_,args:c!=null?{...h,__chatHandlerFlow:c}:h}):O(i,"chat-agent").enqueueRequest({boardId:A,ref:_,args:c!=null?{...h,__chatHandlerFlow:c}:h}),await Promise.resolve(i.boardAdapter.requestProcessAccumulated?.());}catch(s){try{await Y(t,!1);}catch{}x.warn(`[chat-handler] queue failed for card "${t}": ${s instanceof Error?s.message:String(s)}`);}}async function Te(t,e,r){if(e.howToRun==="built-in"&&chunkBQUQTOPB_cjs.b(e)===ue){let n=N,o=r.__chatHandlerFlow,s={...r};return delete s.__chatHandlerFlow,n?n.run(o,s,{boardId:A,cardId:String(s.cardId||""),label:t.label,logger:x,serverUrl:q,executionExtra:j}):{dispatched:false,error:"chat-handler-flow configured but no chatFlowRunner was provided"}}return D.invoke(e,r)}async function Ne(t,e=false){e||await G();let r=typeof t.args?.cardId=="string"?t.args.cardId:"",n=r?z(r):yt();if(!n)throw new Error(r?`Board context is unavailable for chat-agent request: ${r}`:"Board context is unavailable for chat-agent request");let o=await Te(n,t.ref,t.args);if(!o.dispatched){if(r)try{await Y(r,!1);}catch{}throw new Error(o.error||`chat-agent dispatch failed for card "${r||"unknown"}"`)}}async function Ee(t,e,r){if(e==="chat-send"){let o=r&&typeof r["turn-id"]=="string"?r["turn-id"]:r&&typeof r.turnId=="string"?r.turnId:r&&typeof r.turn=="string"?r.turn:"";if(r&&"files"in r&&r.files!==void 0&&r.files!==null)throw Object.assign(new Error('chat-send does not accept a "files" parameter; upload attachments via manage.add-chat-attachment first'),{statusCode:400});let s=wt(),i=ve(r?.text),c=i?i.text:r?.text,M=await chunk272IYUKT_cjs.a("manage.add-chat-entry-and-any-attachments",{board_id:A,card_id:t,role:"user",text:c,turn_id:o,files:[]},s);if(M?.status!=="success")throw new Error(chunk272IYUKT_cjs.b(M,`chat-send append failed for card ${t}`));let h=M?.data?.id;if(typeof h!="string"||!h)throw new Error(`chat-send did not return an append id for card ${t}`);let _=await chunk272IYUKT_cjs.a("setstate.chat-processing-started",{board_id:A,card_id:t},s);if(_?.status!=="success")throw new Error(chunk272IYUKT_cjs.b(_,`chat-send processing update failed for card ${t}`));xe(t,h,true,o,i?.assistant||"");return}await Ae(t,o=>{let s=new Date().toISOString(),i=o.card_data&&typeof o.card_data=="object"?o.card_data:{};if(o.card_data=i,e==="file-upload"){let c=k().normalizeIncoming(r?.files,s);return c.length>0&&k().merge(i,c),o}if(e==="action"){let c=r&&typeof r.buttonId=="string"?r.buttonId:"";if(!c)return o;i.lastAction={buttonId:c,at:s},i.lastActionText=`${c} @ ${s}`;}return o});}function et(t,e,r){let n=JSON.stringify(r),o=typeof Buffer<"u"?Buffer.byteLength(n):new TextEncoder().encode(n).length;t.writeHead(e,{...b,"Content-Type":"application/json; charset=utf-8","Content-Length":o}),t.end(n);}async function At(t,e,r){let n=await X(t);if(!n)throw Object.assign(new Error("Card not found"),{statusCode:404});let o=k().resolve(n.card_data,e,r);if(!o.ok&&o.reason==="stale_reference")throw Object.assign(new Error("File reference is stale. Refresh and try again."),{statusCode:409});if(!o.ok)throw Object.assign(new Error("File not found"),{statusCode:404});let s=o.file,i=P(t),c=B(t),M=String(s.stored_name||""),h=`${i}/${M}`,_=c.files?await c.files.getBytes(h):null;if(!_)throw Object.assign(new Error("File not found"),{statusCode:404});return {fileRecord:s,bytes:_}}async function je(t,e,r,n){let{fileRecord:o,bytes:s}=await At(e,r,n),i=String(o.name||o.stored_name||"download.bin"),c=String(o.mime_type||"application/octet-stream");t.writeHead(200,{"Content-Type":c,"Content-Disposition":`attachment; filename="${i}"`,"Content-Length":s.length}),t.end(s);}function Me(t){let e=String(t||"").toLowerCase();return e.startsWith("text/")||e.includes("json")||e.includes("xml")||e.includes("javascript")||e.includes("typescript")||e.includes("yaml")||e.includes("csv")}function _e(t,e,r){let n=t.split(/\r?\n/);return (e==="head"?n.slice(0,r):n.slice(-r)).join(`
|
|
2
|
-
`)}async function rt(t){let e=[];for await(let n of t)e.push(n);let r=typeof Buffer<"u"?Buffer.concat(e).toString("utf-8").trim():new TextDecoder().decode(chunkBQUQTOPB_cjs.d(e)).trim();return r?JSON.parse(r):{}}async function Bt(t,e){let r=typeof e.ref=="string"?e.ref.trim():"";if(!r)return {status:"fail",error:"board-worker success callback requires body.ref"};let n=d[0];return n?n.boardOps.sourceDataFetched({params:{token:t,ref:r}}):{status:"fail",error:"no board context"}}async function kt(t,e){let r=typeof e.reason=="string"&&e.reason.trim()?e.reason:"unknown",n=d[0];return n?n.boardOps.sourceDataFetchFailure({params:{token:t,reason:r}}):{status:"fail",error:"no board context"}}let De=chunkLFVMX23W_cjs.b({sseHub:J,queueSseHub:f,corsHeaders:b,json:et,buildPublishedRuntimePayload:()=>ut(),onSseClientConnected:T,onChannelSubscribed:W,onChannelUnsubscribed:H,apiBasePath:w,readJsonBody:t=>rt(t),initBoardAndSetup:()=>G(),bootstrapBoard:()=>at(),boardContexts:d,publishPersistedStateSnapshot:t=>ct(t),upsertCardsFromSource:(t,e)=>gt(t,e)}).handleWatchersRoutes,qe=chunk7FGPOGRV_cjs.a({apiBasePath:w,json:et,readJsonBody:t=>rt(t),bootstrapBoard:()=>at(),createMcpFacade:()=>st(),createMcpToolRegistry:t=>he(t),resolveCardFileDownloadPayload:(t,e,r)=>At(t,e,r),isLikelyTextMimeType:t=>Me(t),sliceTextByLines:(t,e,r)=>_e(t,e,r)}).handleAgentfaceApi,Ie=chunkNM6O35RY_cjs.a({apiBasePath:w,json:et,readJsonBody:t=>rt(t),initBoardAndSetup:()=>G(),createMcpWebhookToolRegistry:()=>we()}).handleWebhooksApi,$e=ie({apiBasePath:w,json:et,readJsonBody:t=>rt(t),bootstrapBoard:()=>at(),createMcpControlplaneToolRegistry:()=>wt(),retriggerCard:t=>ke(t),applyCardAction:(t,e,r)=>Ee(t,e,r),resolveChatHandlerTarget:t=>Ct(t),sendCardFileDownloadResponse:(t,e,r,n)=>je(t,e,r,n)}).handleRuntimeApi,He=ce({apiBasePath:w,emitNotifications:t=>V(t),readJsonBody:t=>rt(t),json:(t,e,r)=>et(t,e,r)}).handleNotifyRoute;async function Le(t,e,r){return !!(await qe(t,e,r)||await Ie(t,e,r)||await De(t,e,r)||await He(t,e,r)||await $e(t,e,r))}return {get apiBasePath(){return w},get corsHeaders(){return b},get queueLaneTuning(){return $},handleRuntimeApi:Le,emitNotification(t){if(t.kind==="notification-batch"){V(t.notifications);return}V([t]);},buildPublishedRuntimePayload:ut,__drainProcessAccumulatedLane:Rt,handleChatAgentRequest:Ne,clearChatRecords:Pe,reportSourceFetched(t,e){return Bt(t,{ref:e})},reportSourceFetchFailure(t,e){return kt(t,{reason:e})},get cardStore(){return d[0]?.publicCardStore??{get(){return Promise.resolve({status:"fail",error:"no board context"})},set(){return Promise.resolve({status:"fail",error:"no board context"})}}}}}function Mr(R){let w=String(R.apiBasePath||"/api/boards").replace(/\/$/,""),b={...de,...R.corsHeaders||{}},$=R.serverMetaStore,A=R.boardRuntimeFactory,x=new Map,D="boards-config.json";function N(){let f=$.getText(D);if(!f)return {boards:[{id:"default",label:"Default Board"}]};try{return JSON.parse(f)}catch{return {boards:[{id:"default",label:"Default Board"}]}}}function E(f){$.putText(D,JSON.stringify(f,null,2));}function q(f){let g=String(f||"").replace(/[^a-zA-Z0-9_-]/g,"_").replace(/^_+|_+$/g,"");return g.length>0&&g.length<=64?g:null}function j(f){if(x.has(f))return x.get(f);let d=N().boards.find(p=>p.id===f)||{},v=A(f,d);return x.set(f,v),v}function T(f,g,d){let v=JSON.stringify(d),p=typeof Buffer<"u"?Buffer.byteLength(v):new TextEncoder().encode(v).length;f.writeHead(g,{...b,"Content-Type":"application/json; charset=utf-8","Content-Length":p}),f.end(v);}async function S(f,g,d){let v=f.method||"GET",p=d.pathname;if(v==="GET"&&p===w)return T(g,200,{ok:true,boards:N().boards}),true;if(v==="POST"&&p===w){let y=[];for await(let F of f)y.push(F);let O=typeof Buffer<"u"?Buffer.concat(y).toString("utf-8").trim():new TextDecoder().decode(chunkBQUQTOPB_cjs.d(y)).trim(),l={};try{l=O?JSON.parse(O):{};}catch{l={};}let B=q(l.id);if(!B)return T(g,400,{error:"board id must be 1-64 alphanumeric/dash/underscore characters"}),true;let k=N();if(k.boards.some(F=>F.id===B))return T(g,409,{error:`Board "${B}" is already registered`}),true;let P=typeof l.label=="string"&&l.label.trim()?l.label.trim():B,I={id:B,label:P};for(let[F,L]of Object.entries(l))F==="id"||F==="label"||L!=null&&(I[F]=L);return k.boards.push(I),E(k),T(g,200,{ok:true,board:I}),true}return false}async function W(f,g,d){let p=d.pathname.match(new RegExp(`^${chunkBQUQTOPB_cjs.c(w)}/([^/]+)(/|$)`));if(!p)return false;let y=q(decodeURIComponent(p[1]));return y?N().boards.some(B=>B.id===y)?!!await j(y).handleRuntimeApi(f,g,d):(T(g,404,{error:`Board "${y}" not registered. POST ${w} with {id} to register it first.`}),true):(T(g,400,{error:"Invalid board id"}),true)}async function H(f,g,d){return !!(await S(f,g,d)||await W(f,g,d))}function J(f){if(!N().boards.some(d=>d.id===f))throw Object.assign(new Error(`Board "${f}" not registered`),{statusCode:404});return {service:j(f)}}return {get apiBasePath(){return w},get corsHeaders(){return b},handleApi:H,requireBoardService:J}}exports.a=jr;exports.b=Mr;//# sourceMappingURL=chunk-42ZOYXEV.cjs.map
|
|
3
|
-
//# sourceMappingURL=chunk-42ZOYXEV.cjs.map
|
package/lib/chunk-AHW6EMUO.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import {b as b$1,c as c$1}from'./chunk-ANKA7HEJ.js';import {a,b,c}from'./chunk-44L64VQ2.js';import {r,a as a$1,p,q,u}from'./chunk-VGT3TRQG.js';import {a as a$3}from'./chunk-ATOQP3BD.js';import {a as a$2}from'./chunk-7QNEV5S3.js';import {e,f}from'./chunk-UGB7PC4P.js';function ft(e){return typeof e=="string"&&e.trim().length>0}function mt(e,t){if(!e||typeof e!="object")throw new Error(`${t}: adapter.selfRef is required`);if(!ft(e.howToRun))throw new Error(`${t}: adapter.selfRef.howToRun is required`);if(!ft(e.whatToRun))throw new Error(`${t}: adapter.selfRef.whatToRun is required`)}function pt(e,t){if(!e||typeof e!="object")throw new Error(`${t}: adapter.callbackTransport is required`);if(typeof e.createCallback!="function")throw new Error(`${t}: adapter.callbackTransport.createCallback is required`)}function tr(e,t="callbackTransport"){return {createCallback(n){let a=e();return mt(a,t),{token:n,via:a}}}}function $e(e){return tr(()=>e,"createStaticExecutionRefCallbackTransport")}function kr(e){return $e({meta:"board-live-cards",howToRun:"http:post",whatToRun:a({kind:"http-url",value:String(e||"").trim()})})}function Rr(e){return $e({meta:"board-live-cards",howToRun:"in-process-loop",whatToRun:a({kind:"in-process-loop",value:String(e||"").trim()})})}function hr(e){let t=typeof e=="string"?{notifyChannel:e}:e??{},n={};return t.notifyChannel&&(n.notifyChannel=t.notifyChannel),t.boardRuntimeStoreRef&&(n.boardRuntimeStoreRef=t.boardRuntimeStoreRef),t.queueStoreRef&&(n.queueStoreRef=t.queueStoreRef),$e({meta:"board-live-cards",howToRun:"built-in",whatToRun:a({kind:"built-in",value:"board-live-cards"}),...Object.keys(n).length>0?{extra:n}:{}})}function Ie(e){return typeof e=="object"&&e!==null&&"then"in e&&typeof e.then=="function"}function Je(e,t){return Ie(e)?e.then(t):t(e)}function St(e,t){let n={...e};for(let a of t.deleteKeys)delete n[a];return {...n,...t.shallowMerge}}function Cr(e,t){return {readValues(a){let s=e(a);return Je(s.listKeys(),d=>{let u=[...d].sort();if(u.length===0)return {version:null,values:{}};let l={},h=null;for(let y of u){let V=s.read(y);Ie(V)?h=(h??Promise.resolve()).then(async()=>{l[y]=await V;}):l[y]=V;}return h?h.then(()=>({version:t(l),values:l})):{version:t(l),values:l}})},writeValues(a,s,d){let u=e(a),l=null;for(let h of d){let y=u.delete(h);Ie(y)&&(l=(l??Promise.resolve()).then(()=>y).then(()=>{}));}for(let[h,y]of Object.entries(s)){let V=u.write(h,y);Ie(V)&&(l=(l??Promise.resolve()).then(()=>V).then(()=>{}));}return l?l.then(()=>t(s)):t(s)}}}function kt(e,t){return {readSnapshot(n){return e.readValues(n)},commitSnapshot(n,a){if(a.schemaVersion!==t)throw new Error(`Unsupported snapshot schema version: ${a.schemaVersion}`);return Je(e.readValues(n),s=>{if(s.version!==a.expectedVersion)return {ok:false,reason:"version-mismatch",currentVersion:s.version};let d=St(s.values,a);return Je(e.writeValues(n,d,a.deleteKeys),u=>({ok:true,newVersion:u}))})}}}function gt(e,t){if(!t)return e;let n=e.findIndex(a=>a.id===t);return n===-1?e:e.slice(n+1)}function Rt(e){return {readEntriesAfterCursor(t){let n=gt(e.readAllEntries(),t);return n.length===0?{events:[],newCursor:t}:{events:n.map(a=>a.event),newCursor:n[n.length-1].id}},pendingCount(t){return gt(e.readAllEntries(),t).length},appendEvent(t){e.appendEntry({id:e.generateId(),event:t});}}}function br(e){return {appendEvent(t){return e.append(t).then(()=>{})},async readEntriesAfterCursor(t){let n=await e.readAfter(t||null);return {events:n.entries.map(a=>a.payload),newCursor:n.newCursor??t}}}}function _e(e){return typeof e=="object"&&e!==null&&"then"in e&&typeof e.then=="function"}function de(e,t){return _e(e)?e.then(t):t(e)}function Me(e,t){let n=null;for(let a of e){if(n){n=n.then(()=>t(a)).then(()=>{});continue}let s=t(a);_e(s)&&(n=Promise.resolve(s).then(()=>{}));}return n??void 0}function rr(e){if(e==null)return null;let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{return t}}function nr(e,t){let n=e.match(t);return n?n[1]:null}function ht(e,t,n){let a={},s=Me(e,d=>{let u=n(d);if(u)return de(t(d),l=>{a[u]=l;})});return _e(s)?s.then(()=>a):a}function yt(e,t){return {readSourceData(n,a){return de(e.read(`${n}/${a}`),rr)},ingestSourceDataStaged(n,a,s,d){return de(t(s),u=>e.write(`${n}/.staged/${d}/${a}`,u))},commitSourceData(n,a,s){let d=`${n}/.staged/${s}/${a}`,u=`${n}/${a}`;return e.renameKey(d,u)},hasSource(n,a){return e.exists(`${n}/${a}`)},listSources(n){return de(e.listKeys(`${n}/`),a=>a.filter(s=>!s.includes("/.staged/")).map(s=>s.slice(`${n}/`.length)))}}}function or(e,t){let n=(a,s)=>{try{let d=s(a);return _e(d)?d.catch(u=>t(a,u instanceof Error?u.message:String(u))):void 0}catch(d){try{return t(a,d instanceof Error?d.message:String(d))}catch{return}}};return {appendEntries(a,s){if(!(!a||s.length===0))return de(e.read(a),d=>e.write(a,[...d??[],...s]))},dispatchEntriesForJournalId(a,s){if(a)return de(e.read(a),d=>{let u=d;if(!(!u||u.length===0))return de(Me(u,l=>n(l,s)),()=>e.delete(a))})}}}function sr(e,t,n){return {readRuntime(a){return de(e.read(t(a)),s=>s??n())},writeRuntime(a,s){return e.write(t(a),s)}}}function Ct(e){return {writeComputedValues(t,n){return e.write(`cards/${t}/computed_values`,n)},readComputedValues(t){return e.read(`cards/${t}/computed_values`)},readAllComputedValues(){return de(e.listKeys("cards/"),t=>ht(t,n=>e.read(n),n=>nr(n,/^cards\/([^/]+)\/computed_values$/)))},writeDataObjects(t){return Me(Object.entries(t),([n,a])=>{if(n)return a===void 0?e.delete(`data-objects/${n}`):e.write(`data-objects/${n}`,a)})},readDataObject(t){return e.read(`data-objects/${t}`)},readAllDataObjects(){return de(e.listKeys("data-objects/"),t=>ht(t,n=>e.read(n),n=>n.slice(13)))},writeStatusSnapshot(t){return e.write("status",t)},readStatusSnapshot(){return e.read("status")}}}function He(e,t){function n(){return e.readIndex()??{}}function a(s,d,u){let l=String(d||"").split(".").filter(Boolean);if(l.length===0)return u&&typeof u=="object"&&!Array.isArray(u)?u:{value:u};let h={...s},y=h;for(let V=0;V<l.length-1;V++){let z=l[V],Y=y[z],ee=Y&&typeof Y=="object"&&!Array.isArray(Y)?{...Y}:{};y[z]=ee,y=ee;}return y[l[l.length-1]]=u,h}return {readCard(s){let d=n()[s];return !d||!e.cardExists(d.key)?null:e.readCard(d.key)},readCardKey(s){return n()[s]?.key??null},readAllCards(){let s=[];for(let[d,u]of Object.entries(n())){if(!e.cardExists(u.key))continue;let l=e.readCard(u.key);l?s.push(l):t?.(`[card-store] could not read card "${d}" at key "${u.key}"`);}return s},readChecksumIndex(){let s={};for(let[d,u]of Object.entries(n()))s[d]=u.checksum;return s},changedSince(s){let d=n(),u=[];for(let[l,h]of Object.entries(d))s[l]!==h.checksum&&u.push(l);for(let l of Object.keys(s))d[l]||u.push(l);return u},validateUpsert(s,d){let u=n(),l=u[s],h=Object.entries(u).find(([,y])=>y.key===d);return l&&l.key!==d?{ok:false,error:`Card id "${s}" is already mapped to key "${l.key}", cannot remap to "${d}"`}:h&&h[0]!==s?{ok:false,error:`Key "${d}" is already mapped to card id "${h[0]}", cannot remap to "${s}"`}:{ok:true}},writeCard(s,d,u){let l=n(),h=u??l[s]?.key??e.defaultCardKey(s),y=e.writeCard(h,d);l[s]={key:h,checksum:y,updatedAt:new Date().toISOString()},e.writeIndex(l);},patchCard(s,d,u){let l=n(),h=l[s];if(!h||!e.cardExists(h.key))throw new Error(`card "${s}" not found`);let y=e.readCard(h.key);if(!y||typeof y!="object"||Array.isArray(y))throw new Error(`card "${s}" is not patchable`);let V=a(y,d,u),z=e.writeCard(h.key,V);l[s]={key:h.key,checksum:z,updatedAt:new Date().toISOString()},e.writeIndex(l);},removeCard(s){let d=n(),u=d[s];u&&(e.removeCard(u.key),delete d[s],e.writeIndex(d));},readIndex(){return n()}}}function Fe(e,t){return yt(e,t)}function xt(e){return Rt(e)}var Oe="v1",he="board/graph",Et="board/lastJournalProcessedId";function Fr(e){return `cards/${e}/runtime`}function Tt(e){return kt(e,Oe)}function Be(e){function t(n){let a=e.read(n);return a==null?null:typeof a=="string"?a:JSON.stringify(a)}return {readTaskExecutorRef(){let n=t("task-executor");if(n?.trim())return c$1(n.trim())},writeTaskExecutorRef(n){e.write("task-executor",b$1(n));},readChatHandlerFlow(){return e.read("chat-handler-flow")},writeChatHandlerFlow(n){e.write("chat-handler-flow",n);},readBoardRuntimeStoreRef(){return t("board-runtime-store-ref")},writeBoardRuntimeStoreRef(n){e.write("board-runtime-store-ref",n);},readCardStoreRef(){return t("card-store-ref")},writeCardStoreRef(n){e.write("card-store-ref",n);},readOutputsStoreRef(){return t("outputs-store-ref")},writeOutputsStoreRef(n){e.write("outputs-store-ref",n);},readQueueStoreRef(){return t("queue-store-ref")},writeQueueStoreRef(n){e.write("queue-store-ref",n);},readScratchStoreRef(){return t("scratch-store-ref")},writeScratchStoreRef(n){e.write("scratch-store-ref",n);},readChatStoreRef(){return t("chat-store-ref")},writeChatStoreRef(n){e.write("chat-store-ref",n);},readArtifactsStoreRef(){return t("artifacts-store-ref")},writeArtifactsStoreRef(n){e.write("artifacts-store-ref",n);},readFetchedSourcesStoreRef(){return t("fetched-sources-store-ref")},writeFetchedSourcesStoreRef(n){e.write("fetched-sources-store-ref",n);}}}function At(e){return Ct(e)}function bt(e){return e?{lastRequestedToken:e.lastRequestedToken,lastCompletedToken:e.lastCompletedToken,lastCompletionStatus:e.lastCompletionStatus??(e.lastCompletedToken?"success":"not-started"),queueRequestedToken:e.queueRequestedToken}:{lastCompletionStatus:"not-started"}}function ar(e){return e?.lastRequestedToken?e.lastCompletedToken!==e.lastRequestedToken:false}function wt(e,t){return e?.lastRequestedToken?ar(e)?"in-flight":!e.lastCompletedToken||e.lastCompletedToken<t?"dispatch":"idle":"dispatch"}function ir(e,t){return {...e,lastCompletedToken:t,lastCompletionStatus:"success"}}function vt(e,t){return {...e,lastCompletedToken:t,lastCompletionStatus:"failure"}}function Pe(e,t){let n=t.state.tasks,a=t.config.tasks,s=Object.keys(n),d=r(t),u={completed:0,failed:0,in_progress:0,pending:0,blocked:0,unresolved:0},l=new Map;for(let T of d.pending)l.set(T.taskName,T.waitingOn);for(let T of d.unresolved)l.set(T.taskName,T.missingTokens);for(let T of d.blocked)l.set(T.taskName,T.failedTokens);let h=new Map;for(let[T,S]of Object.entries(a))for(let G of S.requires??[]){let U=h.get(G)??[];U.push(T),h.set(G,U);}let y=s.sort().map(T=>{let S=n[T],G=a[T]??{requires:[],provides:[]};S.status==="completed"?u.completed+=1:S.status==="failed"?u.failed+=1:S.status==="in-progress"&&(u.in_progress+=1);let U=G.requires??[],g=G.provides??[],i=Object.keys(S.data??{}).sort(),p=U.filter(B=>t.state.availableOutputs.includes(B)),b=U.filter(B=>!t.state.availableOutputs.includes(B)),I=l.get(T)??b,w=new Set;for(let B of g)for(let D of h.get(B)??[])D!==T&&w.add(D);let x=S.failedAt,K=S.error?{message:S.error,code:"TASK_FAILED",at:x,source:"task-runtime"}:void 0;return {name:T,status:S.status,error:K,requires:U,requires_satisfied:p,requires_missing:b,provides_declared:g,provides_runtime:i,blocked_by:I,unblocks:Array.from(w).sort(),runtime:{attempt_count:S.executionCount??0,restart_count:S.retryCount??0,in_progress_since:S.status==="in-progress"?S.startedAt??null:null,last_transition_at:S.lastUpdated??null,last_completed_at:S.completedAt??null,last_restarted_at:S.startedAt??null,status_age_ms:S.lastUpdated?0:null}}});u.pending=d.pending.length,u.blocked=d.blocked.length,u.unresolved=d.unresolved.length;let V=y.map(T=>({name:T.name,fanOut:T.unblocks.length})).sort((T,S)=>S.fanOut-T.fanOut||T.name.localeCompare(S.name)),z=V.length>0?V[0]:{name:null,fanOut:0},Y=new Set;for(let T of Object.values(a))for(let S of T.requires??[])Y.add(S);let ee=0;for(let[T,S]of Object.entries(a)){let G=(S.requires??[]).length===0,g=(S.provides??[]).some(i=>(h.get(i)??[]).some(p=>p!==T));G&&!g&&(ee+=1);}return {schema_version:"v1",meta:{board:{path:e}},summary:{card_count:s.length,completed:u.completed,eligible:d.eligible.length,pending:u.pending,blocked:u.blocked,unresolved:u.unresolved,failed:u.failed,in_progress:u.in_progress,orphan_cards:ee,topology:{edge_count:Array.from(Y).length,max_fan_out_card:z.name,max_fan_out:z.fanOut}},cards:y}}function ur(){return new Date().toISOString()}function It(e,t,n,a$1,s,d,u){return async l=>{let h=[],y=n.cardStore.readCard(l.nodeId);if(!y)return "task-initiate-failure";let V=y.id,z=y.card_data??{},Y=y.source_defs??[],ee=Y,T=n.cardRuntimeStore.readRuntime(V),S=false,G=()=>{S&&(n.cardRuntimeStore.writeRuntime(V,T),S=false);},U=E=>bt(T._sources[E]),g=(E,v)=>{T._sources[E]=bt(v),S=true;},i=l.taskState?.executionCount??0;if(T._lastExecutionCount!==i&&(T._sources={},T._lastExecutionCount=i,S=true),l.update){let E=l.update,v=E.outputFile;if(v){let P=U(v);if(E.failure){let L=E.rqt??P.lastRequestedToken??P.queueRequestedToken;L&&g(v,vt(P,L));}else {let L=E.rqt;if(!P.lastCompletedToken||L>P.lastCompletedToken){let te=typeof E.deliveryToken=="string"?E.deliveryToken:void 0,j=false;te&&(j=n.fetchedSourcesStore.commitSourceData(V,v,te)),j?g(v,ir(P,L)):g(v,vt(P,L));}}G();}}let b={};for(let E of Y)if(E.outputFile){let v=n.fetchedSourcesStore.readSourceData(V,E.outputFile);v!==null&&(b[E.bindTo]=v);}let I={};for(let[E,v]of Object.entries(l.state??{}))if(v!==null&&typeof v=="object"&&!Array.isArray(v)){let P=v[E];I[E]=P!==void 0?P:v;}else I[E]=v;let w={id:V,card_data:{...z},requires:I,source_defs:Y,compute:y.compute};w._sourcesData=b,y.compute&&a$3.runSync(w,{sourcesData:b}),(d??n.outputStore.writeComputedValues.bind(n.outputStore))(V,w.computed_values??{});let x={...y},K=a$3.enrichSourcesSync(Array.isArray(y.source_defs)?y.source_defs:void 0,{card_data:y.card_data,requires:I}),B=e.value;x.source_defs=Array.isArray(K)?K.map(E=>({...E,boardDir:typeof E.boardDir=="string"&&E.boardDir?E.boardDir:B})):K;let D=ur(),H=l.update?void 0:D,ne=ee.filter(E=>{let v=E.outputFile;if(typeof v!="string"||!v)return true;let P=U(v);H&&(P={...P,queueRequestedToken:H},g(v,P));let L=P.queueRequestedToken??P.lastRequestedToken??D,te=wt(P,L);return te==="in-flight"?false:te==="dispatch"});if(G(),ne.length>0){let E=false,v=D;for(let P of ne){let L=P.outputFile;if(typeof L!="string"||!L)continue;let te=U(L),j=te.queueRequestedToken??D;g(L,{...te,lastRequestedToken:j}),v=j,E=true;}return E&&G(),E&&(h.push({taskKind:"source-fetch",payload:{boardRef:a(e),enrichedCard:x,callbackToken:l.callbackToken,rqt:v}}),n.executionRequestStore.appendEntries(t,h)),"task-initiated"}if(ee.some(E=>{let v=E.outputFile;if(typeof v!="string"||!v)return false;let P=U(v),L=P.queueRequestedToken??P.lastRequestedToken??D;return wt(P,L)==="in-flight"}))return "task-initiated";let pe=y.provides??[],ae={};for(let{bindTo:E,ref:v}of pe)ae[E]=a$3.resolve(w,v);return (u??n.outputStore.writeDataObjects.bind(n.outputStore))(ae),a$1(l.nodeId,ae),h.length>0&&n.executionRequestStore.appendEntries(t,h),"task-initiated"}}var Ge={settings:{completion:"manual",refreshStrategy:"data-changed"},tasks:{}};function _t(e){return {[he]:e.graph,[Et]:e.lastDrainedJournalId,board:{runtimeByCardId:e.runtimeByCardId}}}function Ft(e){let t=e[he],n=e[Et],s=e.board?.runtimeByCardId;if(!t||typeof t!="object")throw new Error(`State snapshot is missing required key: ${he}`);return {graph:t,lastDrainedJournalId:typeof n=="string"?n:"",runtimeByCardId:s&&typeof s=="object"?s:{}}}function Ot(e){let t=e.requires;return {provides:e.provides?.map(a=>a.bindTo)??[],taskHandlers:["card-handler"],description:e.meta?.title??e.id,...t&&t.length>0?{requires:t}:{}}}function A(e){return e!==void 0?{status:"success",data:e}:{status:"success"}}function R(e){return {status:"fail",error:e}}function F(e){return {status:"error",error:e instanceof Error?e.message:String(e)}}var Bt="sys_keys_board_state";function dr(e){let t=new TextEncoder().encode(e),n=Array.from(t,a=>String.fromCharCode(a)).join("");return btoa(n).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function Vt(e){let t=e.replace(/-/g,"+").replace(/_/g,"/"),n=t+"=".repeat((4-t.length%4)%4),a=atob(n),s=Uint8Array.from(a,d=>d.charCodeAt(0));return new TextDecoder().decode(s)}function qe(e){try{let t=JSON.parse(Vt(e));return typeof t?.t=="string"?{taskName:t.t}:null}catch{return null}}function Pt(e){return dr(JSON.stringify(e))}function qt(e){try{let t=JSON.parse(Vt(e));return typeof t?.cbk=="string"&&typeof t?.cid=="string"&&typeof t?.b=="string"&&typeof t?.d=="string"?t:null}catch{return null}}function Z(){return new Date().toISOString()}function cr(e){let t=new Map;return {appendEntries(n,a){if(!n||a.length===0)return;let s=t.get(n)??[];t.set(n,[...s,...a]);},dispatchEntriesForJournalId(n,a){if(!n)return;let s=t.get(n);if(!(!s||s.length===0)){for(let d of s)try{a(d);}catch(u){try{e(d,u instanceof Error?u.message:String(u));}catch{}}t.delete(n);}}}}function Lr(e$1,t,n={}){pt(t.callbackTransport,"createBoardLiveCardsPublic");let a$3=t.callbackTransport,s=t.onWarn??(()=>{}),d=a(e$1),u$1=n.boardRuntimeStoreRef,l=n.scratchStoreRef,h=n.taskExecutorRef,y=n.chatHandlerFlow,V=n.emitNotification??(o=>{if(!t.publishBoardChangeNotifications)return;let r=o.kind==="notification-batch"?o.notifications:[o];return t.publishBoardChangeNotifications(r)});function z(){if(!u$1)throw new Error(`Board at ${e$1.value} has no board runtime store configured. Pass boardRuntimeStoreRef at construction or init.`);return u$1}function Y(o){if(o.length!==0)try{let r=e(o),c=f({kind:"notification-batch",notifications:r}),f$1=V(c);f$1&&typeof f$1.catch=="function"&&f$1.catch(C=>s(`[board-live-cards-public] emitNotification failed: ${C instanceof Error?C.message:String(C)}`));}catch(r){s(`[board-live-cards-public] emitNotification failed: ${r instanceof Error?r.message:String(r)}`);}}function ee(){let o=S().readCardStoreRef();if(!o)throw new Error(`Board at ${e$1.value} has no card store configured. Run: init --base-ref <ref> --store-ref <b64-ref>`);let r=t.kvStorageForRef(o);return {readIndex(){return r.read("_index")},writeIndex(c){r.write("_index",c);},readCard(c){return r.read(c)},writeCard(c,f){return r.write(c,f),t.hashFn(f)},removeCard(c){r.delete(c);},cardExists(c){return r.read(c)!==null},defaultCardKey(c){return c}}}let T={readValues(o){let r=t.kvStorageForRef(z()),c=r.listKeys().sort();if(c.length===0)return {version:null,values:{}};let f={};for(let C of c)f[C]=r.read(C);return {version:t.hashFn(f),values:f}},writeValues(o,r,c){let f=t.kvStorageForRef(z());for(let C of c)f.delete(C);for(let[C,_]of Object.entries(r))f.write(C,_);return t.hashFn(r)}},S=()=>Be(t.kvStorageForRef(z())),G=()=>Tt(T),U=()=>xt(t.journalAdapterForRef(z())),g=()=>He(ee(),s),i=()=>{let o=S().readOutputsStoreRef();if(!o)throw new Error(`Board at ${e$1.value} has no outputs store configured. Run: init --outputs-store-ref <b64-ref>`);return At(t.kvStorageForRef(o))};function p$1(){return h??S().readTaskExecutorRef()}function b$1(){return !!G().readSnapshot(e$1.value).values[he]}function I(){let o=G().readSnapshot(e$1.value);if(!o.values[he])throw new Error(`Board not initialized at ${e$1.value}`);return Ft(o.values)}function w(o,r){let c=G().commitSnapshot(e$1.value,{schemaVersion:Oe,expectedVersion:r,commitId:t.genId(),committedAt:Z(),deleteKeys:[],shallowMerge:_t(o)});if(!c.ok)throw new Error(`Snapshot commit failed (version mismatch): expected=${r??"null"} current=${c.currentVersion??"null"}`)}function x(o){U().appendEvent(o);}async function K(){let r=cr((m,k)=>{let O=m.payload,N=(O?.enrichedCard??{}).id??O?.cardId??"unknown";x({type:"task-failed",taskName:N,error:k,timestamp:Z()});}),c=I(),f=q(c.graph),{events:C,newCursor:_}=U().readEntriesAfterCursor(c.lastDrainedJournalId),$=j(),q$1=Fe($,m=>t.resolveBlob(m)),J={...c.runtimeByCardId},W=new Map,Se={readRuntime(m){return W.get(m)??J[m]??{_sources:{}}},writeRuntime(m,k){W.set(m,k),J[m]=k;}},ke=[],oe=new Map,we={readSourceData(m,k){let O=`${m}/${k}`;return oe.has(O)?oe.get(O):q$1.readSourceData(m,k)},ingestSourceDataStaged(m,k,O,ue){q$1.ingestSourceDataStaged(m,k,O,ue);},commitSourceData(m,k,O){let ue=`${m}/.staged/${O}/${k}`,N=$.read(ue);if(N==null){let Q=$.keyRef?.(ue);Q&&(N=t.resolveBlob(Q));}if(N==null)return false;let se=`${m}/${k}`,fe=N.trim();try{oe.set(se,JSON.parse(fe));}catch{oe.set(se,fe);}return ke.push({cardId:m,outputFile:k,deliveryToken:O}),true},hasSource(m,k){let O=`${m}/${k}`;return oe.has(O)?true:q$1.hasSource(m,k)},listSources(m){let k=q$1.listSources(m),O=new Set;for(let N of oe.keys())N.startsWith(`${m}/`)&&O.add(N.slice(`${m}/`.length));let ue=new Set([...k,...O]);return Array.from(ue)}},le={cardStore:g(),cardRuntimeStore:Se,fetchedSourcesStore:we,outputStore:i(),executionRequestStore:r},Re=[],Ve=[],je=[],Ke=new Map,We=new Set,Wt=(m,k)=>{Re.push({type:"task-completed",taskName:m,data:k,timestamp:Z()});},Ne=(m,k)=>{x({type:"task-failed",taskName:m,error:k,timestamp:Z()});},ve=u(f,{handlers:{"card-handler":It(e$1,_,le,Wt,Ne,(m,k)=>{Ve.push({cardId:m,values:k});},m=>{je.push(m);})},onNodeRemoved:m=>{Ke.delete(m),W.delete(m),delete J[m],We.add(m);}});for(Re=C;Re.length>0;){let m=Re;Re=[];for(let k of m)if(k.type==="task-restart"){let O=le.cardStore.readCard(k.taskName);O&&Ke.set(k.taskName,O);}ve.pushAll(m),await ve.waitForHandlers();}let Ze=ve.getState();await ve.dispose({wait:true});let Zt=G().readSnapshot(e$1.value).version;w({lastDrainedJournalId:_,graph:p(Ze),runtimeByCardId:J},Zt);for(let{cardId:m,values:k}of Ve)le.outputStore.writeComputedValues(m,k);for(let m of je)le.outputStore.writeDataObjects(m);for(let{cardId:m,outputFile:k,deliveryToken:O}of ke)q$1.commitSourceData(m,k,O);let xe;try{xe=Pe(d,Ze),le.outputStore.writeStatusSnapshot(xe);}catch(m){s(`[board-live-cards-public] status publish failed: ${m instanceof Error?m.message:String(m)}`);}let ye=[];for(let{cardId:m,values:k}of Ve)ye.push({kind:"computed_values",cardId:m,values:k});for(let m of je)for(let[k,O]of Object.entries(m))k&&ye.push({kind:"data_object",key:k,payload:O});for(let[m,k]of Ke)ye.push({kind:"card_refreshed",cardId:m,card:k});for(let m of We)ye.push({kind:"card_removed",cardId:m});xe!==void 0&&ye.push({kind:"status",status:xe}),Y(ye);let Ce=p$1()??{howToRun:"built-in",whatToRun:a({kind:"built-in",value:"source-cli-task-executor"})},et=t.supportsDirectSourceOutput?.(Ce)===true;r.dispatchEntriesForJournalId(_,m=>{if(m.taskKind!=="source-fetch"){s(`[process-accumulated-events] unknown taskKind "${m.taskKind}" \u2014 skipping`);return}let k=m.payload,O=k.enrichedCard?.id??"unknown",ue=k.enrichedCard?.source_defs??[];if(Ce.howToRun==="queue-storage"&&et){try{let N=t.queueStorageForRef(B(),"task-executor"),se=typeof Ce.extra?.boardId=="string"?Ce.extra.boardId:void 0,fe=[];for(let Q of ue){if(!Q.outputFile){s(`[dispatch] source "${Q.bindTo}" has no outputFile \u2014 skipping`);continue}let Ee=t.genId(),Te=`${O}/.staged/${Ee}/${Q.outputFile}`,tt=$.keyRef?.(Te);if(!tt)continue;let rt={ref:a(tt),deliveryToken:Ee,outputFile:Q.outputFile,cardId:O},er=Pt({cbk:k.callbackToken,rg:e$1.value,br:a(e$1),cid:O,b:Q.bindTo,d:Q.outputFile,cs:void 0,rqt:k.rqt,dt:rt.deliveryToken});fe.push({...se?{boardId:se}:{},ref:Ce,args:{source_def:Q,base_ref:a(e$1),callback:a$3.createCallback(er),output:rt}});}fe.length>0&&N.enqueueMany(fe);}catch(N){Ne(O,N instanceof Error?N.message:String(N));}return}for(let N of ue){if(!N.outputFile){s(`[dispatch] source "${N.bindTo}" has no outputFile \u2014 skipping`);continue}let se;if(et){let Q=t.genId(),Ee=`${O}/.staged/${Q}/${N.outputFile}`,Te=$.keyRef?.(Ee);Te&&(se={ref:a(Te),deliveryToken:Q,outputFile:N.outputFile,cardId:O});}let fe=Pt({cbk:k.callbackToken,rg:e$1.value,br:a(e$1),cid:O,b:N.bindTo,d:N.outputFile,cs:void 0,rqt:k.rqt,...se?{dt:se.deliveryToken}:{}});t.dispatchExecution(Ce,{source_def:N,base_ref:a(e$1),callback:a$3.createCallback(fe),...se?{output:se}:{}}).catch(Q=>Ne(O,Q instanceof Error?Q.message:String(Q)));}});}function B(){let o=S().readQueueStoreRef();if(!o)throw new Error(`Board at ${e$1.value} has no queue store configured. Run: init --queue-store-ref <b64-ref>`);return o}function D(){let o=t.queueStorageForRef(B(),"process-accumulated");o.enqueueIfAbsent?o.enqueueIfAbsent({boardRef:a(e$1)},`process-accumulated:${a(e$1)}`):o.enqueue({boardRef:a(e$1)}),t.requestProcessAccumulated?.();}function H(){let o=t.queueStorageForRef(B(),"process-accumulated");for(;;){let r=o.lease({max:64,visibilityMs:1e3});if(r.length<=0)return;for(let c of r)o.ack(c.id,c.leaseToken);if(r.length<64)return}}async function ne(){try{let o=()=>{let c=I(),{events:f}=U().readEntriesAfterCursor(c.lastDrainedJournalId);f.length<=0||D();},r=await c(t.lock,K,o);return A({ran:r!==!1})}catch(o){return F(o)}}function X(){D();}function pe(o){try{let r=o.params?.cardStoreRef;if(!r)return R("init requires params.cardStoreRef \u2014 create a card store with card-store-cli and pass its ref here");if(u$1=o.params?.boardRuntimeStoreRef,!u$1)return R("init requires params.boardRuntimeStoreRef \u2014 pass the board runtime store ref here");if(!b$1()){let J=a$1(Ge);w({lastDrainedJournalId:"",graph:p(J),runtimeByCardId:{}},null);}let c=o.params?.outputsStoreRef;if(!c)return R("init requires params.outputsStoreRef \u2014 pass the outputs store ref here");let f=o.params?.queueStoreRef;if(!f)return R("init requires params.queueStoreRef \u2014 pass the queue store ref here");let C=o.params?.fetchedSourcesStoreRef;if(!C)return R("init requires params.fetchedSourcesStoreRef \u2014 pass the fetched sources store ref here");l=o.params?.scratchStoreRef;let _=o.params?.chatStoreRef;if(!_)return R("init requires params.chatStoreRef \u2014 pass the chat store ref here");let $=o.params?.artifactsStoreRef;if(!$)return R("init requires params.artifactsStoreRef \u2014 pass the artifacts store ref here");let q$1=S();q$1.writeBoardRuntimeStoreRef(u$1),q$1.writeCardStoreRef(r),q$1.writeOutputsStoreRef(c),q$1.writeQueueStoreRef(f),q$1.writeFetchedSourcesStoreRef(C),q$1.writeChatStoreRef(_),q$1.writeArtifactsStoreRef($);try{i().writeStatusSnapshot(Pe(d,q(I().graph)));}catch{}return A()}catch(r){return F(r)}}function ae(o){try{let r=i().readStatusSnapshot();if(!r){r=Pe(d,q(I().graph));try{i().writeStatusSnapshot(r);}catch{}}return A(r)}catch(r){return F(r)}}function E(o){try{let r=o.params?.id;if(!r)return R("removeCard requires params.id");try{t.kvStorage("card-upsert").delete(r);}catch{}return x({type:"task-removal",taskName:r,timestamp:Z()}),X(),A()}catch(r){return F(r)}}function v(o){try{let r=o.params?.cardId;if(!r)return R("addCardFiles requires params.cardId");let c=a$2(g(),{emitNotification:V}).appendFiles({params:{id:r},body:o.body});return c.status!=="success"?c:A({cardId:r,files_added:c.data.files_added,notified:!0})}catch(r){return F(r)}}function P(o){try{let r=o.params?.id;return r?(x({type:"task-restart",taskName:r,timestamp:Z()}),X(),A()):R("retrigger requires params.id")}catch(r){return F(r)}}async function L(o){return H(),ne()}function te(){let o=S().readFetchedSourcesStoreRef();if(!o)throw new Error(`Board at ${e$1.value} has no fetched sources store configured. Run: init --fetched-sources-store-ref <b64-ref>`);return o}function j(){return t.blobStorageForRef(te())}function re(o){try{let r=o.params?.cardId,c=o.params?.all,f=!!o.params?.restart;if(!r&&!c)return R("upsertCard requires --card-id <id> or --all");let C=c?g().readAllCards().map(_=>_.id):[r];for(let _ of C)if(!g().readCard(_))return R(`Card "${_}" not found in board at ${e$1.value}`);for(let _ of C){let $=g().readCard(_),q=Ot($),J=t.hashFn(q),W=t.kvStorage("card-upsert"),Se=W.read(_),ke=Se?.taskConfigHash!==J;if(!(!ke&&!f)){if(ke){let oe=Se?.blobRef??g().readCardKey(_)??_;x({type:"task-upsert",taskName:_,taskConfig:q,timestamp:Z()}),W.write(_,{blobRef:oe,taskConfigHash:J,updatedAt:Z()});}f&&x({type:"task-restart",taskName:_,timestamp:Z()});}}return X(),A()}catch(r){return F(r)}}function ie(o){try{let r=o.params?.token;if(!r)return R("taskFailed requires params.token");let c=o.params?.error??"unknown error",f=qe(r);return f?(x({type:"task-failed",taskName:f.taskName,error:c,timestamp:Z()}),X(),A()):R("Invalid callback token")}catch(r){return F(r)}}function ge(o){try{let r=o.params?.token;if(!r)return R("taskProgress requires params.token");let f=(o.body??{}).update??{},C=qe(r);return C?(x({type:"task-progress",taskName:C.taskName,update:f,timestamp:Z()}),X(),A()):R("Invalid callback token")}catch(r){return F(r)}}function be(o){try{let r=o.params?.token,c=o.params?.ref;if(!r)return R("sourceDataFetched requires params.token");if(!c)return R("sourceDataFetched requires params.ref");let f=qt(r);if(!f)return R("Invalid source token");let{cbk:C,cid:_,b:$,d:q,cs:J,rqt:W,dt:Se}=f,ke=Fe(j(),Re=>t.resolveBlob(Re)),oe=Se||t.genId();Se||ke.ingestSourceDataStaged(_,q,b(c),oe);let we=qe(C);if(!we)return R("Invalid callback token embedded in source token");let le=Z();return x({type:"task-progress",taskName:we.taskName,update:{bindTo:$,outputFile:q,fetchedAt:le,deliveryToken:oe,sourceChecksum:J,rqt:W},timestamp:le}),X(),A()}catch(r){return F(r)}}function ce(o){try{let r=o.params?.token,c=o.params?.reason??"unknown";if(!r)return R("sourceDataFetchFailure requires params.token");let f=qt(r);if(!f)return R("Invalid source token");let{cbk:C,b:_,d:$,cs:q,rqt:J}=f,W=qe(C);return W?(x({type:"task-progress",taskName:W.taskName,update:{bindTo:_,outputFile:$,failure:!0,reason:c,sourceChecksum:q,rqt:J},timestamp:Z()}),X(),A()):R("Invalid callback token embedded in source token")}catch(r){return F(r)}}function jt(o){try{let r=S().readCardStoreRef();return r?A({storeRef:r}):R(`Board at ${e$1.value} has no card store configured`)}catch(r){return F(r)}}function Kt(o){try{return A({storeRef:u$1??null})}catch(r){return F(r)}}function Nt(o){try{let r=S().readOutputsStoreRef();return r?A({storeRef:r}):R(`Board at ${e$1.value} has no outputs store configured`)}catch(r){return F(r)}}function Dt(o){try{return A({storeRef:l??null})}catch(r){return F(r)}}function Lt(o){try{let r=S().readChatStoreRef();return A({storeRef:r})}catch(r){return F(r)}}function $t(o){try{let r=S().readArtifactsStoreRef();return A({storeRef:r})}catch(r){return F(r)}}function Jt(o){try{let r=S().readFetchedSourcesStoreRef();return A({storeRef:r})}catch(r){return F(r)}}function Mt(o){try{let r=o.params?.key;if(!r)return R("getConfig requires params.key");let c=S(),f;switch(r){case "task-executor":f=h??null;break;case "chat-handler-flow":f=y??null;break;case "board-runtime-store-ref":f=c.readBoardRuntimeStoreRef();break;case "card-store-ref":f=c.readCardStoreRef();break;case "outputs-store-ref":f=c.readOutputsStoreRef();break;case "scratch-store-ref":f=l??null;break;case "chat-store-ref":f=c.readChatStoreRef();break;case "artifacts-store-ref":f=c.readArtifactsStoreRef();break;case "fetched-sources-store-ref":f=c.readFetchedSourcesStoreRef();break;default:return R(`getConfig: unknown key "${r}"`)}return A({value:f})}catch(r){return F(r)}}function Ht(o){try{let r=o.params?.key;if(!r)return R("getOutputsDataObject requires params.key");let c=Ue()[r]??null;return A(c)}catch(r){return F(r)}}function Gt(o){if(!o||typeof o!="object"||Array.isArray(o))return false;let r=o.__private;return !!r&&typeof r=="object"&&!Array.isArray(r)&&r.visible_controlplane_only===true}function Ut(o){let r=[...new Set(g().readAllCards().filter(f=>!Gt(f)).map(f=>f.id).filter(f=>typeof f=="string"&&f.length>0))].sort(),c=[...new Set(Object.keys(o).filter(f=>f&&f!==Bt))].sort();return {card_ids:r,data_object_keys:c}}function Ue(){let o=i().readAllDataObjects();return {...o,[Bt]:Ut(o)}}function Qe(o){try{return A(Ue())}catch(r){return F(r)}}function Qt(o){try{let r=o.params?.key;if(!r)return R("getOutputsComputedValues requires params.key");let c=i().readComputedValues(r);return A(c)}catch(r){return F(r)}}function ze(o){try{return A(i().readAllComputedValues())}catch(r){return F(r)}}function Ye(){return Fe(j(),o=>t.resolveBlob(o))}function Xe(o){let r=j().keyRef?.(o);if(!r)throw new Error("configured fetched-sources store does not support keyRef");return a(r)}function zt(o){try{let r=o.params?.key;if(!r)return R("getOutputsFetchedSources requires params.key");let c=Ye().listSources(r),f={};for(let C of c)f[C]=Xe(`${r}/${C}`);return A(f)}catch(r){return F(r)}}function Yt(o){try{let r=Ye(),c=new Set;for(let C of j().listKeys()){let _=C.indexOf("/");_>0&&!C.includes("/.staged/")&&c.add(C.slice(0,_));}let f={};for(let C of c){let _=r.listSources(C);if(_.length>0){f[C]={};for(let $ of _)f[C][$]=Xe(`${C}/${$}`);}}return A(f)}catch(r){return F(r)}}function Xt(o){try{let r=g().readAllCards(),c=ae({});if(c.status!=="success")return c;let f=Qe({});if(f.status!=="success")return f;let C=ze({});if(C.status!=="success")return C;let _=C.data,$={};for(let q of r){let J=typeof q?.id=="string"?q.id:null;if(!J)continue;let W=q.card_data&&typeof q.card_data=="object"&&!Array.isArray(q.card_data)?q.card_data:{};$[J]={schema_version:"v1",card_id:J,card_data:{...W},computed_values:_[J]&&typeof _[J]=="object"?_[J]:{}};}return A({cardDefinitions:r,statusSnapshot:c.data,dataObjectsByToken:f.data,cardRuntimeById:$})}catch(r){return F(r)}}return {init:pe,status:ae,getBoardRuntimeStoreRef:Kt,getCardStoreRef:jt,getOutputsStoreRef:Nt,getScratchStoreRef:Dt,getChatStoreRef:Lt,getArtifactsStoreRef:$t,getFetchedSourcesStoreRef:Jt,getConfig:Mt,getOutputsDataObject:Ht,getAllOutputsDataObjects:Qe,getOutputsComputedValues:Qt,getAllOutputsComputedValues:ze,getOutputsFetchedSources:zt,getAllOutputsFetchedSources:Yt,buildSseOneShotPayload:Xt,removeCard:E,addCardFiles:v,retrigger:P,processAccumulatedEvents:L,upsertCard:re,taskFailed:ie,taskProgress:ge,sourceDataFetched:be,sourceDataFetchFailure:ce}}function $r(e,t,n){let a=n?.taskExecutorRef,s=()=>{if(n){if(!n.boardRuntimeStoreRef)throw new Error(`Board at ${e.value} requires boardRuntimeStoreRef for non-core runtime operations.`);return Be(t.kvStorageForRef(n.boardRuntimeStoreRef))}return Be(t.kvStorage("config"))};function d(){let g=s().readCardStoreRef();if(!g)throw new Error(`Board at ${e.value} has no card store configured. Run: init --base-ref <ref> --store-ref <b64-ref>`);let i=t.kvStorageForRef(g);return {readIndex(){return i.read("_index")},writeIndex(p){i.write("_index",p);},readCard(p){return i.read(p)},writeCard(p,b){return i.write(p,b),t.hashFn(b)},removeCard(p){i.delete(p);},cardExists(p){return i.read(p)!==null},defaultCardKey(p){return p}}}let u=()=>He(d(),t.onWarn??(()=>{}));function l(){return a??s().readTaskExecutorRef()}async function h(g,i){let p=t.validateSchema(i),b=[],I=l();if(I&&Array.isArray(i.source_defs))for(let x of i.source_defs){let K=typeof x.bindTo=="string"?x.bindTo:"(unknown)";try{let B;try{B=await t.invokeExecutor(I,"validate-source-def",{timeout:t.executorTimeouts?.validationMs??1e4,input:JSON.stringify(x)});}catch(H){let ne=H;if(B=typeof ne?.stdout=="string"?ne.stdout:"",!B.trim()){b.push(`source "${K}": executor validate-source-def failed \u2014 ${H instanceof Error?H.message:String(H)}`);continue}}let D=JSON.parse(B.trim());if(!D.ok&&Array.isArray(D.errors))for(let H of D.errors)b.push(`source "${K}": ${H}`);}catch(B){b.push(`source "${K}": executor validate-source-def failed \u2014 ${B instanceof Error?B.message:String(B)}`);}}let w=[...p.errors,...b];return A({cardId:g,isValid:w.length===0,issues:w})}function y(g,i){let p=g.params?.sourceIdx,b=g.params?.outRef;if(p===void 0)return R(`${i} requires params.sourceIdx`);if(!g.body||typeof g.body!="object"||Array.isArray(g.body))return R(`${i} requires card JSON object in body`);let I=g.body,w=I["card-content"]??I,x=I["mock-projections"]??{},K=w.source_defs??[];if(p<0||p>=K.length)return R(`sourceIdx ${p} out of range (card has ${K.length} source(s))`);let B=K[p],D=typeof B.bindTo=="string"?B.bindTo:"source";return {src:B,bindTo:D,outRef:b,mockProjections:x}}async function V(g){try{if(!g.body||typeof g.body!="object"||Array.isArray(g.body))return R("validateCardPreflight requires card JSON object in body");let i=g.body,p=i["card-content"]??i,b=typeof p.id=="string"?p.id:"(unknown)";return await h(b,p)}catch(i){return F(i)}}async function z(g){try{let i=y(g,"probeSourcePreflight");if("status"in i)return i;let p=l();if(!p)return R("No task-executor registered for this board");try{let b={...i.src,_projections:i.mockProjections},I=await t.invokeExecutor(p,"probe-source-preflight",{timeout:i.src.timeout??t.executorTimeouts?.preflightMs??6e4,input:JSON.stringify(b)}),w=JSON.parse(I.trim());return w.ok?A({bindTo:i.bindTo,reachable:w.reachable,latencyMs:w.latencyMs,note:w.note}):R(w.error??"Preflight probe failed")}catch{return R("Executor does not support probe-source-preflight")}}catch(i){return F(i)}}async function Y(g){try{let i=y(g,"runSourcePreflight");if("status"in i)return i;let p=l();if(!p)return R("No task-executor registered for this board");try{let b$1={...i.src,_projections:i.mockProjections},I=await t.invokeExecutor(p,"run-source-preflight",{timeout:i.src.timeout??t.executorTimeouts?.probeMs??6e4,input:JSON.stringify(b$1)}),w=JSON.parse(I.trim());if(!w.ok)return A({bindTo:i.bindTo,ok:!1,result:null,issues:[w.error??"Preflight run failed"]});if(i.outRef){let x=b(i.outRef);t.absoluteBlob.write(x.value,JSON.stringify(w.resultValue,null,2));}return A({bindTo:typeof w.bindTo=="string"?w.bindTo:i.bindTo,ok:!0,result:w.resultValue??null,issues:[]})}catch(b){let I=b instanceof Error?b.message:String(b);return A({bindTo:i.bindTo,ok:!1,result:null,issues:[I]})}}catch(i){return F(i)}}async function ee(g){try{let i=l();if(!i)return R("No task-executor registered for this board");let p=await t.invokeExecutor(i,"describe-capabilities",{timeout:t.executorTimeouts?.describeMs??1e4});return A(JSON.parse(p.trim()))}catch(i){return F(i)}}function T(g){try{let i=g.body;if(!i||!Array.isArray(i.ops))return R("updatesInCardStore requires body.ops array");let p=i.ops,b=u();for(let I of p){let w=I.op,x=I.id;if(!x)return R('op is missing "id"');if(w==="update"){let K=I["card-content"];if(!K)return R(`update op for "${x}" is missing "card-content"`);b.writeCard(x,K);}else return R(`Unknown op type: "${w??"(none)"}"`)}return A()}catch(i){return F(i)}}function S(g){try{let i=g.body;if(!i||!Array.isArray(i.ids))return R("readFromCardStore requires body.ids array");let p=i.ids,b=u(),I=p.map(w=>({id:w,"card-content":b.readCard(w)}));return A({cards:I})}catch(i){return F(i)}}function G(g){try{if(!g.body||typeof g.body!="object"||Array.isArray(g.body))return R("evalCardCompute requires a JSON object in body");let i=g.body,p=i["card-content"]??i,b=typeof p.id=="string"?p.id:"(unknown)",I=i["mock-fetched-sources"]??{},w=i["mock-requires"]??{},x=p.compute;if(!x||!Array.isArray(x)||x.length===0)return A({cardId:b,ok:!0,computed_values:{},errors:[]});let K={id:b,card_data:p.card_data??{},requires:w,source_defs:p.source_defs,compute:x},B=a$3.runSync(K,{sourcesData:I}),D=B.node.computed_values??{},H=B.errors??[];return A({cardId:b,ok:H.length===0,computed_values:D,errors:H})}catch(i){return F(i)}}async function U(g){try{if(!g.body||typeof g.body!="object"||Array.isArray(g.body))return R("simulateCardCycle requires a JSON object in body");let i=g.body,p=i["card-content"]??i,b=typeof p.id=="string"?p.id:"(unknown)",I=i["mock-fetched-sources"]??{},w=i["mock-requires"]??{},x=await h(b,p),K=x.status==="success"?{isValid:x.data.isValid,issues:x.data.issues}:{isValid:!1,issues:[x.status==="fail"?x.error:"internal error"]},B=p.source_defs??[],D=p.card_data??{},H=[],ne=[];if(B.length>0){H=a$3.enrichSourcesSync(B,{card_data:D,requires:w});for(let j of H){let re=j.projections,ie=j._projections;if(re&&ie){for(let ge of Object.keys(re))if(ie[ge]===void 0){let be=typeof j.bindTo=="string"?j.bindTo:"(unknown)";ne.push({bindTo:be,key:ge,error:`Projection "${ge}" resolved to undefined`});}}}}let X=[],pe={...I},ae=i["task-executor-ref"],E=(ae?.howToRun&&ae?.whatToRun?ae:void 0)??l();for(let j=0;j<H.length;j++){let re=H[j],ie=typeof re.bindTo=="string"?re.bindTo:`source_${j}`;if(!E){X.push({bindTo:ie,skipped:!0,error:"No task executor configured"});continue}try{let ge={...re},be=await t.invokeExecutor(E,"run-source-preflight",{timeout:re.timeout??t.executorTimeouts?.preflightMs??6e4,input:JSON.stringify(ge)}),ce=JSON.parse(be.trim());ce.ok&&!Object.prototype.hasOwnProperty.call(I,ie)&&Object.prototype.hasOwnProperty.call(ce,"resultValue")&&(pe[ie]=ce.resultValue),X.push({bindTo:ie,reachable:ce.reachable,latencyMs:ce.latencyMs,error:ce.ok?void 0:ce.error});}catch{X.push({bindTo:ie,skipped:!0,error:"Executor does not support run-source-preflight"});}}let v=p.compute,P={},L=[];if(v&&Array.isArray(v)&&v.length>0){let j={id:b,card_data:D,requires:w,source_defs:p.source_defs,compute:v},re=a$3.runSync(j,{sourcesData:pe});P=re.node.computed_values??{},L=re.errors??[];}let te=K.isValid&&ne.length===0&&L.length===0&&X.every(j=>j.reachable!==!1);return A({cardId:b,ok:te,validation:K,source_probes:X,projection_errors:ne,fetched_sources:pe,computed_values:P,compute_errors:L})}catch(i){return F(i)}}return {validateCardPreflight:V,probeSourcePreflight:z,runSourcePreflight:Y,evalCardCompute:G,simulateCardCycle:U,describeTaskExecutorCapabilities:ee,updatesInCardStore:T,readFromCardStore:S}}
|
|
2
|
-
export{Cr as a,kt as b,br as c,pt as d,kr as e,Rr as f,hr as g,yt as h,or as i,sr as j,Ct as k,He as l,Oe as m,he as n,Fr as o,bt as p,wt as q,ir as r,vt as s,Pe as t,Ge as u,_t as v,Ft as w,Ot as x,Lr as y,$r as z};//# sourceMappingURL=chunk-AHW6EMUO.js.map
|
|
3
|
-
//# sourceMappingURL=chunk-AHW6EMUO.js.map
|
package/lib/chunk-CZ6ZFWFT.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import {a as a$1}from'./chunk-FOFGEABN.js';import {a,c,d,e,b,f}from'./chunk-O7NOHKVR.js';import {b as b$1}from'./chunk-44L64VQ2.js';import {a as a$2}from'./chunk-6M3RIGUH.js';function v(a){if(!a||typeof a!="object")return false;let e=a;return typeof e.kind=="string"&&e.kind.length>0}function J(a){if(!a||typeof a!="object")return [];let e=a;return e.kind==="notification-batch"?Array.isArray(e.notifications)?e.notifications.filter(v):[]:v(a)?[a]:[]}function X(a,e,i){let u=0;return {accepted:a.filter(R=>{if(!v(R))return u++,false;let _=R;return typeof _.sentAtMs=="number"&&e-_.sentAtMs>i?(u++,false):true}),rejected:u}}function Q(){return {status:null,computedValues:{},dataObjects:{},cards:{}}}function z(a){if(!a||typeof a!="object")return false;let e=a.summary;return !e||typeof e!="object"?false:Number(e.card_count||0)>0}function W(a){if(!a||typeof a!="object")return false;let e=a;return e.kind==="notification-batch"&&Array.isArray(e.notifications)}function V(a,e){if(e.kind==="status"){z(e.status)&&(a.status=e.status);return}if(e.kind==="computed_values"){a.computedValues[e.cardId]=e.values;return}if(e.kind==="data_object"){a.dataObjects[e.key]=e.payload;return}if(e.kind==="card_refreshed"){a.cards[e.cardId]=e.card;return}e.kind==="card_removed"&&(delete a.cards[e.cardId],delete a.computedValues[e.cardId]);}function Y(a,e){if(W(e)){for(let i of e.notifications)v(i)&&V(a,i);return}v(e)&&V(a,e);}function j(a,e){if(a?.status==="success")return Object.prototype.hasOwnProperty.call(a,"data")?a.data:void 0;throw a?.status==="fail"||a?.status==="error"?Object.assign(new Error(a.error||`${e} failed`),{statusCode:400}):Object.assign(new Error(`${e} returned an unexpected response`),{statusCode:500})}async function N(a,e){return j(await a,e)}function q(a$1){let e=a(a$1,"key");if(!e)throw Object.assign(new Error("MCP tool requires key"),{statusCode:400});let i=e.split(".");if(!(i.length>=2&&i.every(f=>/^[A-Za-z_][A-Za-z0-9_]*$/.test(f))))throw Object.assign(new Error("MCP tool requires a card private key with at least two identifier segments (e.g. chat.foundry_thread_id)"),{statusCode:400});return e}function E(a,e){let i=a.__private;for(let u of e.split(".")){if(!i||typeof i!="object"||Array.isArray(i)||!Object.prototype.hasOwnProperty.call(i,u))return {exists:false,value:null};i=i[u];}return {exists:true,value:i}}function oe(a$1){let{boardId:e,bootstrapBoard:i,sseHub:u,onChannelSubscribed:f,onChannelUnsubscribed:R,getMcpFacade:_,getMcpCardStoreFacade:r}=a$1;function g(s){let d=a(s,"board_id");if(!d)throw Object.assign(new Error("MCP tool requires board_id"),{statusCode:400});if(d!==e)throw Object.assign(new Error(`Unknown board_id: ${d}`),{statusCode:400})}function b(s){let d=a(s,"client_id");if(!d)throw Object.assign(new Error("MCP tool requires client_id"),{statusCode:400});return d}function y(s){g(s);let d=b(s),n=a(s,"channel_name"),t=a(s,"card_id")||void 0;if(!n)throw Object.assign(new Error("MCP tool requires channel_name"),{statusCode:400});return {clientId:d,channelName:n,...t?{cardId:t}:{}}}function c(s){g(s);let d=a(s,"card_id");if(!d)throw Object.assign(new Error("MCP tool requires card_id"),{statusCode:400});return {cardId:d}}async function C(s){await i();let{cardId:d}=c(s),n=b(s);if(!await u.subscribeChat(n,d))throw Object.assign(new Error(`SSE client not connected: ${n}`),{statusCode:404});return {status:"success",data:{boardId:e,cardId:d,clientId:n,subscribed:true}}}async function m(s){await i();let{cardId:d}=c(s),n=b(s);if(!u.unsubscribeChat(n,d))throw Object.assign(new Error(`SSE client not connected: ${n}`),{statusCode:404});return {status:"success",data:{boardId:e,cardId:d,clientId:n,subscribed:false}}}async function w(s,d){await i();let{clientId:n,channelName:t,cardId:o}=y(s);if(!u.has(n))throw Object.assign(new Error(`SSE client not connected: ${n}`),{statusCode:404});return d?(u.subscribeChannel(n,t,o),f?.(n,t,o?{cardId:o}:{})):(u.unsubscribeChannel(n,t,o),R?.(n,t,o?{cardId:o}:{})),{status:"success",data:{boardId:e,clientId:n,channelName:t,subscribed:d,...o?{cardId:o}:{}}}}async function S(s,d){let{cardId:n}=c(s);return await _().setChatProcessing({cardId:n,active:d}),{status:"success",data:{boardId:e,cardId:n,active:d}}}async function l(s){let{cardId:d}=c(s),n=await _().getChatProcessing({cardId:d});return {status:"success",data:{boardId:e,cardId:d,active:n.active}}}async function h(s){let{cardId:d}=c(s),n=q(s);if(!Object.prototype.hasOwnProperty.call(s,"value"))throw Object.assign(new Error("MCP tool requires value"),{statusCode:400});if(n.split(".").includes("visible_controlplane_only")){let t=await N(r().get({params:{id:d}}),"cardStore.get"),o=Array.isArray(t.cards)&&t.cards.length>0&&typeof t.cards[0]=="object"&&!Array.isArray(t.cards[0])?t.cards[0]:null,k=o?E(o,"visible_controlplane_only").value:void 0;if(s.value!==k)throw Object.assign(new Error("MCP tool cannot change the reserved private flag visible_controlplane_only"),{statusCode:403});return {status:"success",data:{boardId:e,cardId:d,key:n}}}return j(await r().patch({params:{id:d,path:`__private.${n}`},body:{value:s.value}}),"cardStore.patch"),{status:"success",data:{boardId:e,cardId:d,key:n}}}async function I(s){let{cardId:d}=c(s),n=q(s),t=await N(r().get({params:{id:d}}),"cardStore.get"),o=Array.isArray(t.cards)&&t.cards.length>0&&t.cards[0]&&typeof t.cards[0]=="object"&&!Array.isArray(t.cards[0])?t.cards[0]:null;if(!o)throw Object.assign(new Error(`Card "${d}" not found`),{statusCode:404});let k=E(o,n);return {status:"success",data:{boardId:e,cardId:d,key:n,exists:k.exists,value:k.value}}}return {requireCardArgs:c,subscribeChat:C,unsubscribeChat:m,watchChannel:w,setChatProcessing:S,getChatProcessing:l,setCardMeta:h,getCardMeta:I}}function ie(a){let{boardId:e,boardContexts:i,readChatRecords:u,getChatProcessing:f}=a;function R(c){if(c.length===0)return null;if(c.length===1)return c[0];let C=[],m=["completed","eligible","pending","blocked","unresolved","failed","in_progress","orphan_cards"],w={};for(let l of m)w[l]=0;for(let l of c){let h=l,I=Array.isArray(h.cards)?h.cards:[];C.push(...I);for(let s of m)w[s]+=Number(h?.summary?.[s]||0);}let S=c[0];return {...S,cards:C,summary:{...S.summary||{},card_count:C.length,...w}}}async function _(){let c=[];for(let C of i)try{let m=await C.boardOps.buildSseOneShotPayload({});m.status==="success"&&m.data&&c.push(m.data);}catch{}return c}async function r(){let C=(await _()).map(m=>m.statusSnapshot).filter(Boolean);if(C.length===0){let m=i.map(w=>w.notification.status).filter(Boolean);return R(m)}return R(C)}async function g(){let c={},C=await _();for(let m of C)Object.assign(c,m.cardRuntimeById||{});if(Object.keys(c).length>0)return c;for(let m of i)for(let[w,S]of Object.entries(m.notification.computedValues)){let l=m.notification.cards[w];c[w]={schema_version:"v1",card_id:w,card_data:l?.card_data??{},computed_values:S??{}};}return c}async function b(){let c={},C=await _();for(let m of C)Object.assign(c,m.dataObjectsByToken||{});if(Object.keys(c).length===0)for(let m of i)Object.assign(c,m.notification.dataObjects||{});return c}async function y(){let c=await _(),C=c.flatMap(l=>Array.isArray(l.cardDefinitions)?l.cardDefinitions:[]),m={},w={};for(let l of c)Object.assign(m,l.dataObjectsByToken||{}),Object.assign(w,l.cardRuntimeById||{});let S={};for(let l of C){if(!l?.id)continue;let h=l.id;try{let I=await u(h),s=await f(h);(I.length>0||s)&&(S[h]={messages:I.map(d=>({role:String(d.role||"system"),text:String(d.text||""),files:Array.isArray(d.files)?d.files:[]})),receiving:!1,processing:s});}catch{}}return {boardId:e,cardDefinitions:C,statusSnapshot:await r(),dataObjectsByToken:m,cardRuntimeById:w,cardChatsByCardId:S}}return {readStatusSnapshot:r,readCardRuntimeArtifacts:g,readDataObjectsByToken:b,buildPublishedRuntimePayload:y}}function K(a){let e=String(a||"").trim();if(!e)return "upload.bin";let i=Math.max(e.lastIndexOf("/"),e.lastIndexOf("\\"));return (i>=0?e.slice(i+1):e)||"upload.bin"}function ce(a){let{safeCardId:e,artifactsStores:i,cardFileMetadataStore:u,readCardFromStore:f,updateCardLocalOnly:R,writeChatRecord:_}=a;async function r(y){let c=[];try{let C=await f(y);if(!C)return c;let m=u().read(C.card_data&&typeof C.card_data=="object"?C.card_data:null);for(let w of m)c.push(String(w.stored_name??""));}catch{}return c}async function g(y,c,C,m){let w=e(y),S=i(y),l=K(c),h=await r(y),s=`${String(h.length+1).padStart(3,"0")}-${l}`.slice(-36);if(!S.files)throw Object.assign(new Error(`artifactsStoreRef is not configured for card uploads: ${y}`),{statusCode:500});return await S.files.putBytes(`${w}/${s}`,new Uint8Array(m),C||"application/octet-stream"),{name:l,stored_name:s,size:m.length,mime_type:C||"application/octet-stream",uploaded_at:new Date().toISOString()}}async function b(y,c,C,m,w){if(!m.length)throw Object.assign(new Error("Empty upload body"),{statusCode:400});let S=w?.inChat===true,l=await g(y,c,C,m),h=null;if(await R(y,I=>{let s=new Date().toISOString(),d=I.card_data&&typeof I.card_data=="object"?I.card_data:{};I.card_data=d;let n=u().normalizeIncoming([{name:l.name,stored_name:l.stored_name,size:l.size,mime_type:l.mime_type,uploaded_at:l.uploaded_at||s,chat:S}],s);return h=u().merge(d,n).findIndex(o=>o.stored_name===l.stored_name),I}),S&&w?.suppressChatRecordWrite!==true){let I=typeof h=="number"&&h>=0?` #${h}`:"";await _(y,"system",`file uploaded: ${l.name} as ${l.stored_name}${I}`,[],w?.turnId??"");}return {ok:true,file:{...l,...typeof h=="number"&&h>=0?{file_idx:h}:{},chat:S},...typeof h=="number"&&h>=0?{file_idx:h}:{}}}return {uploadCardFile:b,readCardStoredFileNames:r}}function pe(a$1){return {"discover.source-kinds":()=>a$1.discoverSourceKinds(),"inspect.board-runtime-status":()=>a$1.inspectBoardRuntimeStatus(),"inspect.card-definition-and-runtime":e=>a$1.inspectCardDefinitionAndRuntime({cardId:a(e,"card_id")}),"inspect.chat-messages-on-cards":e=>{let i=b(e,"tail_turns"),u=b(e,"tail"),f=a(e,"turn_id"),R=e.all_turns===true,_=a(e,"tail_turns_before_id");return a$1.inspectChatMessagesOnCards({cardId:a(e,"card_id"),...i!==void 0?{lastUserTurns:i}:{},...u!==void 0?{tail:u}:{},...f?{turnId:f}:{},...R?{allTurns:true}:{},..._?{tailTurnsBeforeId:_}:{}})},"inspect.file-contents":e=>a$1.inspectFileContents({cardId:a(e,"card_id"),fileIdx:Number(b(e,"file_idx"))}),"preflight.validate-candidate-card-definition":e=>a$1.preflightValidateCandidateCardDefinition({candidateCardContent:d(e,"candidate_card_content","candidate_card_content")}),"preflight.materialize-candidate-card":e=>a$1.preflightMaterializeCandidateCard({candidateCardContent:d(e,"candidate_card_content","candidate_card_content"),mockRequires:d(e,"mock_requires","mock_requires"),mockFetchedSources:d(e,"mock_fetched_sources","mock_fetched_sources")}),"preflight.probe-single-source-in-candidate-card":e$1=>a$1.preflightProbeSingleSourceInCandidateCard({candidateCardContent:d(e$1,"candidate_card_content","candidate_card_content"),mockProjections:c(e$1,"mock_projections"),sourceIdx:e(e$1,"source_idx","source_idx")}),"preflight.run-single-source-in-candidate-card":e$1=>a$1.preflightRunSingleSourceInCandidateCard({candidateCardContent:d(e$1,"candidate_card_content","candidate_card_content"),mockProjections:c(e$1,"mock_projections"),sourceIdx:e(e$1,"source_idx","source_idx")}),"preflight.run-single-source-in-live-card":e$1=>a$1.preflightRunSingleSourceInLiveCard({cardId:a(e$1,"card_id"),sourceIdx:e(e$1,"source_idx","source_idx"),mockRequires:d(e$1,"mock_requires","mock_requires")}),"preflight.run-one-cycle-with-candidate-card":e=>a$1.preflightRunOneCycleWithCandidateCard({candidateCardContent:d(e,"candidate_card_content","candidate_card_content"),mockRequires:c(e,"mock_requires")}),"manage.read-card":e=>a$1.manageReadCard({cardId:a(e,"card_id")}),"stage-ai-response-and-any-attachments":e=>{let i=a(e,"turn_id");if(!i)throw Object.assign(new Error("stage-ai-response-and-any-attachments requires a non-empty turn_id"),{statusCode:400});return a$1.manageAddChatEntryAndAnyAttachments({cardId:a(e,"card_id"),role:"assistant",...typeof e.text=="string"?{text:e.text}:{},...i?{turn:i}:{},...Array.isArray(e.files)?{files:e.files}:{}})},"stage-ai-failure-message":e=>{let i=a(e,"turn_id"),u=a(e,"failure");if(!i)throw Object.assign(new Error("stage-ai-failure-message requires a non-empty turn_id"),{statusCode:400});if(!u)throw Object.assign(new Error("stage-ai-failure-message requires a non-empty failure"),{statusCode:400});return a$1.manageAddChatEntryAndAnyAttachments({cardId:a(e,"card_id"),role:"system",text:u,turn:i})},"manage.upsert-card":e=>a$1.manageUpsertCard({cardId:a(e,"card_id"),candidateCardContent:c(e,"candidate_card_content")}),"manage.remove-card":e=>a$1.manageRemoveCard({cardId:a(e,"card_id")})}}function me(a$1){return {"webhook.process-accumulated":()=>a$1.webhookProcessAccumulated(),"webhook.source-fetch-done":e=>a$1.webhookSourceFetchDone({token:a(e,"token"),ref:a(e,"ref")}),"webhook.source-fetch-failed":e=>a$1.webhookSourceFetchFailed({token:a(e,"token"),reason:a(e,"reason")})}}function fe(a$1){let{boardId:e,uploadCardFile:i,getMcpFacade:u,controlplane:f$1}=a$1;function R(r,g){let b=a(r,"board_id");if(!b)throw Object.assign(new Error(`${g} requires board_id`),{statusCode:400});if(b!==e)throw Object.assign(new Error(`Unknown board_id: ${b}`),{statusCode:400})}function _(r,g){let{cardId:b}=f$1.requireCardArgs(r),y=a(r,"turn_id");return R(r,g),u().manageAddChatAttachment({cardId:b,role:a(r,"role")||"user",...y?{turn:y}:{},files:[{file_name:a(r,"file_name"),content_type:a(r,"content_type")||"application/octet-stream",...typeof r.text=="string"?{text:r.text}:{},...typeof r.base64=="string"?{base64:r.base64}:{},...Array.isArray(r.bytes)?{bytes:r.bytes}:{}}]})}return {"list-runtime-cards":r=>(R(r,"list-runtime-cards"),u().listRuntimeCards()),"sse.subscribe-chat":r=>f$1.subscribeChat(r),"sse.unsubscribe-chat":r=>f$1.unsubscribeChat(r),"sse.watch-channel":r=>f$1.watchChannel(r,true),"sse.unwatch-channel":r=>f$1.watchChannel(r,false),"getstate.is-chat-processing":r=>f$1.getChatProcessing(r),"setstate.chat-processing-started":r=>f$1.setChatProcessing(r,true),"setstate.chat-processing-done":r=>f$1.setChatProcessing(r,false),"getstate.card-private":r=>f$1.getCardMeta(r),"setstate.card-private":r=>f$1.setCardMeta(r),"manage.upload-card-file":r=>{let g=a(r,"card_id"),b=a(r,"file_name"),y=a(r,"content_type")||"application/octet-stream",c=f(r);if(R(r,"manage.upload-card-file"),!g)throw Object.assign(new Error("manage.upload-card-file requires card_id"),{statusCode:400});if(!b)throw Object.assign(new Error("manage.upload-card-file requires file_name"),{statusCode:400});if(!c)throw Object.assign(new Error("manage.upload-card-file requires args.bytes, args.text, or args.base64"),{statusCode:400});return i(g,b,y,c,{inChat:false})},"manage.add-chat-attachment":r=>_(r,"manage.add-chat-attachment"),"manage.add-chat-attachement":r=>_(r,"manage.add-chat-attachement"),"manage.add-chat-entry-and-any-attachments":r=>{let{cardId:g}=f$1.requireCardArgs(r),b=a(r,"role")||"user",y=a(r,"turn_id");return R(r,"manage.add-chat-entry-and-any-attachments"),u().manageAddChatEntryAndAnyAttachments({cardId:g,role:b,...typeof r.text=="string"?{text:r.text}:{},...y?{turn:y}:{},...Array.isArray(r.files)?{files:r.files}:{}})},"manage.patch-card":r=>{let{cardId:g}=f$1.requireCardArgs(r);return R(r,"manage.patch-card"),u().managePatchCard({cardId:g,patch:c(r,"patch")},{allowControlplaneOnlyCards:true})},"manage.upsert-card":r=>{let{cardId:g}=f$1.requireCardArgs(r);return R(r,"manage.upsert-card"),u().manageUpsertCard({cardId:g,candidateCardContent:c(r,"candidate_card_content")},{allowControlplaneOnlyCards:true})},"manage.remove-card":r=>{let{cardId:g}=f$1.requireCardArgs(r);return R(r,"manage.remove-card"),u().manageRemoveCard({cardId:g},{allowControlplaneOnlyCards:true})},"manage.admin-read-card":async r=>{let{cardId:g}=f$1.requireCardArgs(r);return {status:"success",data:{cards:await u().adminReadCard({cardId:g})}}},"manage.admin-upsert-card":r=>{let g=a(r,"board_id"),b=a(r,"card_id");if(!g)throw Object.assign(new Error("manage.admin-upsert-card requires board_id"),{statusCode:400});if(!b)throw Object.assign(new Error("manage.admin-upsert-card requires card_id"),{statusCode:400});if(g!==e)throw Object.assign(new Error(`Unknown board_id: ${g}`),{statusCode:400});return u().adminUpsertCard({cardId:b,candidateCardContent:c(r,"candidate_card_content")})}}}function ye(a){let{boardContexts:e,cardOwnerIndex:i,cardContextForCard:u,readStatusSnapshot:f,readDataObjectsByToken:R,readCardRuntimeArtifacts:_,readCardFromStore:r,readCardDefinitions:g,processAccumulatedLaneInternal:b,reportSourceFetched:y,reportSourceFetchFailure:c,uploadCardFile:C,chatStorePublic:m,serverUrl:w,apiBasePath:S}=a;function l(){return e[0]??null}function h(){return {async status(){let n=await f();return n==null?{status:"fail",error:"Board status is unavailable"}:{status:"success",data:n}},async getOutputsDataObject(n){let t=n?.params?.key;return t?{status:"success",data:(await R())[t]}:{status:"fail",error:"getOutputsDataObject requires params.key"}},async getOutputsComputedValues(n){let t=n?.params?.key;return t?{status:"success",data:(await _())[t]?.computed_values}:{status:"fail",error:"getOutputsComputedValues requires params.key"}},async getOutputsFetchedSources(n){let t=n?.params?.key;if(!t)return {status:"fail",error:"getOutputsFetchedSources requires params.key"};let o=u(t)??l();return o?o.boardOps.getOutputsFetchedSources({params:{key:t}}):{status:"fail",error:"Board context is unavailable"}},async removeCard(n){let t=n?.params?.id;if(!t)return {status:"fail",error:"removeCard requires params.id"};let o=u(t)??l();return o?o.boardOps.removeCard({params:{id:t}}):{status:"fail",error:"Board context is unavailable"}},async upsertCard(n){let t=n?.params?.cardId;if(!t)return {status:"fail",error:"upsertCard requires params.cardId"};let o=u(t)??l();if(!o)return {status:"fail",error:"Board context is unavailable"};let k=await o.boardOps.upsertCard({params:{cardId:t,restart:n.params.restart===true}});if(k.status!=="success")return k;if(a$1(o.boardAdapter)){let P=await b(true);if(P.status!=="success")return P}return k}}}function I(){let n=()=>{let t=l();if(!t?.nonCore)throw new Error("Board non-core adapter is not configured for MCP preflight/discovery tools");return t.nonCore};return {describeTaskExecutorCapabilities(t){return n().describeTaskExecutorCapabilities(t)},validateCardPreflight(t){return n().validateCardPreflight(t)},evalCardCompute(t){return n().evalCardCompute(t)},probeSourcePreflight(t){return n().probeSourcePreflight(t)},runSourcePreflight(t){return n().runSourcePreflight(t)},simulateCardCycle(t){return n().simulateCardCycle(t)}}}function s(){return {async get(n){let t=typeof n.params?.id=="string"?n.params.id:void 0;if(t){let o=await r(t);return o?{status:"success",data:{cards:[o]}}:{status:"success",data:{cards:[]}}}return {status:"success",data:{cards:await g()}}},async set(n){let t=n.body;if(t==null)return {status:"fail",error:"set requires a body (card object or array of cards)"};let o=Array.isArray(t)?t:[t];for(let k of o){let P=k,A=typeof P.id=="string"?P.id:"";if(!A)return {status:"fail",error:"each card must have a string `id` field"};let D=i.get(A)??0,L=e[D]??l();if(!L)return {status:"fail",error:"Board context is unavailable"};let T=await L.cardStoreOps.set({body:P});if(T.status!=="success")return T;i.set(A,D);}return {status:"success",data:{count:o.length}}},async del(n){let t=[n.params?.id,...n.body?.ids??[]].filter(o=>typeof o=="string"&&!!o);if(t.length===0)return {status:"fail",error:"del requires body.ids (string[]) or params.id"};for(let o of t){let k=u(o)??l();if(!k)return {status:"fail",error:"Board context is unavailable"};let P=await k.cardStoreOps.del({params:{id:o}});if(P.status!=="success")return P;i.delete(o);}return {status:"success",data:{count:t.length}}},async patch(n){let t=typeof n.params?.id=="string"?n.params.id:void 0,o=typeof n.params?.path=="string"?n.params.path:void 0;if(!t||!o)return {status:"fail",error:"patch requires params.id and params.path"};let k=u(t)??l();return k?k.cardStoreOps.patch(n):{status:"fail",error:"Board context is unavailable"}},async appendFiles(n){let t=typeof n.params?.id=="string"?n.params.id:void 0;if(!t)return {status:"fail",error:"appendFiles requires params.id"};let o=u(t)??l();return o?o.cardStoreOps.appendFiles(n):{status:"fail",error:"Board context is unavailable"}}}}function d(){return a$2({board:h(),nonCore:I(),cardStore:s(),chatStore:m,processAccumulated:()=>b(true),sourceFetchDone:({token:n,ref:t})=>y(n,t),sourceFetchFailed:({token:n,reason:t})=>c(n,t),uploadCardFile({cardId:n,fileName:t,contentType:o,bytes:k,suppressChatRecordWrite:P}){return C(n,t,o,k,{inChat:true,...P===true?{suppressChatRecordWrite:true}:{}})},buildFileDownloadUrl({cardId:n,fileIdx:t,storedName:o}){let k=`${w||""}${S}/cards/${encodeURIComponent(n)}/files/${t}`;return o?`${k}?sn=${encodeURIComponent(o)}`:k},readFetchedSourceJsonByRef({cardId:n,ref:t}){let o=u(n)??l();if(!o||a$1(o.boardAdapter))return null;let A=o.boardAdapter.resolveBlob(b$1(t)).trim();return A?JSON.parse(A):null}})}return {mcpBoardFacade:h,mcpNonCoreFacade:I,mcpCardStoreFacade:s,createMcpFacade:d}}export{J as a,X as b,Q as c,z as d,Y as e,j as f,N as g,q as h,E as i,oe as j,ie as k,ce as l,pe as m,me as n,fe as o,ye as p};//# sourceMappingURL=chunk-CZ6ZFWFT.js.map
|
|
2
|
-
//# sourceMappingURL=chunk-CZ6ZFWFT.js.map
|
package/lib/chunk-EYBDAEVO.cjs
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
'use strict';var chunk7JVHYHT2_cjs=require('./chunk-7JVHYHT2.cjs'),chunkVQCIOKJV_cjs=require('./chunk-VQCIOKJV.cjs'),chunkG4XXRHL2_cjs=require('./chunk-G4XXRHL2.cjs'),chunkQBEQL4TL_cjs=require('./chunk-QBEQL4TL.cjs'),chunk5XLFPPTY_cjs=require('./chunk-5XLFPPTY.cjs'),chunk2RIHC5TZ_cjs=require('./chunk-2RIHC5TZ.cjs');function ft(e){return typeof e=="string"&&e.trim().length>0}function mt(e,t){if(!e||typeof e!="object")throw new Error(`${t}: adapter.selfRef is required`);if(!ft(e.howToRun))throw new Error(`${t}: adapter.selfRef.howToRun is required`);if(!ft(e.whatToRun))throw new Error(`${t}: adapter.selfRef.whatToRun is required`)}function pt(e,t){if(!e||typeof e!="object")throw new Error(`${t}: adapter.callbackTransport is required`);if(typeof e.createCallback!="function")throw new Error(`${t}: adapter.callbackTransport.createCallback is required`)}function tr(e,t="callbackTransport"){return {createCallback(n){let a=e();return mt(a,t),{token:n,via:a}}}}function $e(e){return tr(()=>e,"createStaticExecutionRefCallbackTransport")}function kr(e){return $e({meta:"board-live-cards",howToRun:"http:post",whatToRun:chunkVQCIOKJV_cjs.a({kind:"http-url",value:String(e||"").trim()})})}function Rr(e){return $e({meta:"board-live-cards",howToRun:"in-process-loop",whatToRun:chunkVQCIOKJV_cjs.a({kind:"in-process-loop",value:String(e||"").trim()})})}function hr(e){let t=typeof e=="string"?{notifyChannel:e}:e??{},n={};return t.notifyChannel&&(n.notifyChannel=t.notifyChannel),t.boardRuntimeStoreRef&&(n.boardRuntimeStoreRef=t.boardRuntimeStoreRef),t.queueStoreRef&&(n.queueStoreRef=t.queueStoreRef),$e({meta:"board-live-cards",howToRun:"built-in",whatToRun:chunkVQCIOKJV_cjs.a({kind:"built-in",value:"board-live-cards"}),...Object.keys(n).length>0?{extra:n}:{}})}function Ie(e){return typeof e=="object"&&e!==null&&"then"in e&&typeof e.then=="function"}function Je(e,t){return Ie(e)?e.then(t):t(e)}function St(e,t){let n={...e};for(let a of t.deleteKeys)delete n[a];return {...n,...t.shallowMerge}}function Cr(e,t){return {readValues(a){let s=e(a);return Je(s.listKeys(),d=>{let u=[...d].sort();if(u.length===0)return {version:null,values:{}};let l={},h=null;for(let y of u){let V=s.read(y);Ie(V)?h=(h??Promise.resolve()).then(async()=>{l[y]=await V;}):l[y]=V;}return h?h.then(()=>({version:t(l),values:l})):{version:t(l),values:l}})},writeValues(a,s,d){let u=e(a),l=null;for(let h of d){let y=u.delete(h);Ie(y)&&(l=(l??Promise.resolve()).then(()=>y).then(()=>{}));}for(let[h,y]of Object.entries(s)){let V=u.write(h,y);Ie(V)&&(l=(l??Promise.resolve()).then(()=>V).then(()=>{}));}return l?l.then(()=>t(s)):t(s)}}}function kt(e,t){return {readSnapshot(n){return e.readValues(n)},commitSnapshot(n,a){if(a.schemaVersion!==t)throw new Error(`Unsupported snapshot schema version: ${a.schemaVersion}`);return Je(e.readValues(n),s=>{if(s.version!==a.expectedVersion)return {ok:false,reason:"version-mismatch",currentVersion:s.version};let d=St(s.values,a);return Je(e.writeValues(n,d,a.deleteKeys),u=>({ok:true,newVersion:u}))})}}}function gt(e,t){if(!t)return e;let n=e.findIndex(a=>a.id===t);return n===-1?e:e.slice(n+1)}function Rt(e){return {readEntriesAfterCursor(t){let n=gt(e.readAllEntries(),t);return n.length===0?{events:[],newCursor:t}:{events:n.map(a=>a.event),newCursor:n[n.length-1].id}},pendingCount(t){return gt(e.readAllEntries(),t).length},appendEvent(t){e.appendEntry({id:e.generateId(),event:t});}}}function br(e){return {appendEvent(t){return e.append(t).then(()=>{})},async readEntriesAfterCursor(t){let n=await e.readAfter(t||null);return {events:n.entries.map(a=>a.payload),newCursor:n.newCursor??t}}}}function _e(e){return typeof e=="object"&&e!==null&&"then"in e&&typeof e.then=="function"}function de(e,t){return _e(e)?e.then(t):t(e)}function Me(e,t){let n=null;for(let a of e){if(n){n=n.then(()=>t(a)).then(()=>{});continue}let s=t(a);_e(s)&&(n=Promise.resolve(s).then(()=>{}));}return n??void 0}function rr(e){if(e==null)return null;let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{return t}}function nr(e,t){let n=e.match(t);return n?n[1]:null}function ht(e,t,n){let a={},s=Me(e,d=>{let u=n(d);if(u)return de(t(d),l=>{a[u]=l;})});return _e(s)?s.then(()=>a):a}function yt(e,t){return {readSourceData(n,a){return de(e.read(`${n}/${a}`),rr)},ingestSourceDataStaged(n,a,s,d){return de(t(s),u=>e.write(`${n}/.staged/${d}/${a}`,u))},commitSourceData(n,a,s){let d=`${n}/.staged/${s}/${a}`,u=`${n}/${a}`;return e.renameKey(d,u)},hasSource(n,a){return e.exists(`${n}/${a}`)},listSources(n){return de(e.listKeys(`${n}/`),a=>a.filter(s=>!s.includes("/.staged/")).map(s=>s.slice(`${n}/`.length)))}}}function or(e,t){let n=(a,s)=>{try{let d=s(a);return _e(d)?d.catch(u=>t(a,u instanceof Error?u.message:String(u))):void 0}catch(d){try{return t(a,d instanceof Error?d.message:String(d))}catch{return}}};return {appendEntries(a,s){if(!(!a||s.length===0))return de(e.read(a),d=>e.write(a,[...d??[],...s]))},dispatchEntriesForJournalId(a,s){if(a)return de(e.read(a),d=>{let u=d;if(!(!u||u.length===0))return de(Me(u,l=>n(l,s)),()=>e.delete(a))})}}}function sr(e,t,n){return {readRuntime(a){return de(e.read(t(a)),s=>s??n())},writeRuntime(a,s){return e.write(t(a),s)}}}function Ct(e){return {writeComputedValues(t,n){return e.write(`cards/${t}/computed_values`,n)},readComputedValues(t){return e.read(`cards/${t}/computed_values`)},readAllComputedValues(){return de(e.listKeys("cards/"),t=>ht(t,n=>e.read(n),n=>nr(n,/^cards\/([^/]+)\/computed_values$/)))},writeDataObjects(t){return Me(Object.entries(t),([n,a])=>{if(n)return a===void 0?e.delete(`data-objects/${n}`):e.write(`data-objects/${n}`,a)})},readDataObject(t){return e.read(`data-objects/${t}`)},readAllDataObjects(){return de(e.listKeys("data-objects/"),t=>ht(t,n=>e.read(n),n=>n.slice(13)))},writeStatusSnapshot(t){return e.write("status",t)},readStatusSnapshot(){return e.read("status")}}}function He(e,t){function n(){return e.readIndex()??{}}function a(s,d,u){let l=String(d||"").split(".").filter(Boolean);if(l.length===0)return u&&typeof u=="object"&&!Array.isArray(u)?u:{value:u};let h={...s},y=h;for(let V=0;V<l.length-1;V++){let z=l[V],Y=y[z],ee=Y&&typeof Y=="object"&&!Array.isArray(Y)?{...Y}:{};y[z]=ee,y=ee;}return y[l[l.length-1]]=u,h}return {readCard(s){let d=n()[s];return !d||!e.cardExists(d.key)?null:e.readCard(d.key)},readCardKey(s){return n()[s]?.key??null},readAllCards(){let s=[];for(let[d,u]of Object.entries(n())){if(!e.cardExists(u.key))continue;let l=e.readCard(u.key);l?s.push(l):t?.(`[card-store] could not read card "${d}" at key "${u.key}"`);}return s},readChecksumIndex(){let s={};for(let[d,u]of Object.entries(n()))s[d]=u.checksum;return s},changedSince(s){let d=n(),u=[];for(let[l,h]of Object.entries(d))s[l]!==h.checksum&&u.push(l);for(let l of Object.keys(s))d[l]||u.push(l);return u},validateUpsert(s,d){let u=n(),l=u[s],h=Object.entries(u).find(([,y])=>y.key===d);return l&&l.key!==d?{ok:false,error:`Card id "${s}" is already mapped to key "${l.key}", cannot remap to "${d}"`}:h&&h[0]!==s?{ok:false,error:`Key "${d}" is already mapped to card id "${h[0]}", cannot remap to "${s}"`}:{ok:true}},writeCard(s,d,u){let l=n(),h=u??l[s]?.key??e.defaultCardKey(s),y=e.writeCard(h,d);l[s]={key:h,checksum:y,updatedAt:new Date().toISOString()},e.writeIndex(l);},patchCard(s,d,u){let l=n(),h=l[s];if(!h||!e.cardExists(h.key))throw new Error(`card "${s}" not found`);let y=e.readCard(h.key);if(!y||typeof y!="object"||Array.isArray(y))throw new Error(`card "${s}" is not patchable`);let V=a(y,d,u),z=e.writeCard(h.key,V);l[s]={key:h.key,checksum:z,updatedAt:new Date().toISOString()},e.writeIndex(l);},removeCard(s){let d=n(),u=d[s];u&&(e.removeCard(u.key),delete d[s],e.writeIndex(d));},readIndex(){return n()}}}function Fe(e,t){return yt(e,t)}function xt(e){return Rt(e)}var Oe="v1",he="board/graph",Et="board/lastJournalProcessedId";function Fr(e){return `cards/${e}/runtime`}function Tt(e){return kt(e,Oe)}function Be(e){function t(n){let a=e.read(n);return a==null?null:typeof a=="string"?a:JSON.stringify(a)}return {readTaskExecutorRef(){let n=t("task-executor");if(n?.trim())return chunk7JVHYHT2_cjs.c(n.trim())},writeTaskExecutorRef(n){e.write("task-executor",chunk7JVHYHT2_cjs.b(n));},readChatHandlerFlow(){return e.read("chat-handler-flow")},writeChatHandlerFlow(n){e.write("chat-handler-flow",n);},readBoardRuntimeStoreRef(){return t("board-runtime-store-ref")},writeBoardRuntimeStoreRef(n){e.write("board-runtime-store-ref",n);},readCardStoreRef(){return t("card-store-ref")},writeCardStoreRef(n){e.write("card-store-ref",n);},readOutputsStoreRef(){return t("outputs-store-ref")},writeOutputsStoreRef(n){e.write("outputs-store-ref",n);},readQueueStoreRef(){return t("queue-store-ref")},writeQueueStoreRef(n){e.write("queue-store-ref",n);},readScratchStoreRef(){return t("scratch-store-ref")},writeScratchStoreRef(n){e.write("scratch-store-ref",n);},readChatStoreRef(){return t("chat-store-ref")},writeChatStoreRef(n){e.write("chat-store-ref",n);},readArtifactsStoreRef(){return t("artifacts-store-ref")},writeArtifactsStoreRef(n){e.write("artifacts-store-ref",n);},readFetchedSourcesStoreRef(){return t("fetched-sources-store-ref")},writeFetchedSourcesStoreRef(n){e.write("fetched-sources-store-ref",n);}}}function At(e){return Ct(e)}function bt(e){return e?{lastRequestedToken:e.lastRequestedToken,lastCompletedToken:e.lastCompletedToken,lastCompletionStatus:e.lastCompletionStatus??(e.lastCompletedToken?"success":"not-started"),queueRequestedToken:e.queueRequestedToken}:{lastCompletionStatus:"not-started"}}function ar(e){return e?.lastRequestedToken?e.lastCompletedToken!==e.lastRequestedToken:false}function wt(e,t){return e?.lastRequestedToken?ar(e)?"in-flight":!e.lastCompletedToken||e.lastCompletedToken<t?"dispatch":"idle":"dispatch"}function ir(e,t){return {...e,lastCompletedToken:t,lastCompletionStatus:"success"}}function vt(e,t){return {...e,lastCompletedToken:t,lastCompletionStatus:"failure"}}function Pe(e,t){let n=t.state.tasks,a=t.config.tasks,s=Object.keys(n),d=chunkG4XXRHL2_cjs.r(t),u={completed:0,failed:0,in_progress:0,pending:0,blocked:0,unresolved:0},l=new Map;for(let T of d.pending)l.set(T.taskName,T.waitingOn);for(let T of d.unresolved)l.set(T.taskName,T.missingTokens);for(let T of d.blocked)l.set(T.taskName,T.failedTokens);let h=new Map;for(let[T,S]of Object.entries(a))for(let G of S.requires??[]){let U=h.get(G)??[];U.push(T),h.set(G,U);}let y=s.sort().map(T=>{let S=n[T],G=a[T]??{requires:[],provides:[]};S.status==="completed"?u.completed+=1:S.status==="failed"?u.failed+=1:S.status==="in-progress"&&(u.in_progress+=1);let U=G.requires??[],g=G.provides??[],i=Object.keys(S.data??{}).sort(),p=U.filter(B=>t.state.availableOutputs.includes(B)),b=U.filter(B=>!t.state.availableOutputs.includes(B)),I=l.get(T)??b,w=new Set;for(let B of g)for(let D of h.get(B)??[])D!==T&&w.add(D);let x=S.failedAt,K=S.error?{message:S.error,code:"TASK_FAILED",at:x,source:"task-runtime"}:void 0;return {name:T,status:S.status,error:K,requires:U,requires_satisfied:p,requires_missing:b,provides_declared:g,provides_runtime:i,blocked_by:I,unblocks:Array.from(w).sort(),runtime:{attempt_count:S.executionCount??0,restart_count:S.retryCount??0,in_progress_since:S.status==="in-progress"?S.startedAt??null:null,last_transition_at:S.lastUpdated??null,last_completed_at:S.completedAt??null,last_restarted_at:S.startedAt??null,status_age_ms:S.lastUpdated?0:null}}});u.pending=d.pending.length,u.blocked=d.blocked.length,u.unresolved=d.unresolved.length;let V=y.map(T=>({name:T.name,fanOut:T.unblocks.length})).sort((T,S)=>S.fanOut-T.fanOut||T.name.localeCompare(S.name)),z=V.length>0?V[0]:{name:null,fanOut:0},Y=new Set;for(let T of Object.values(a))for(let S of T.requires??[])Y.add(S);let ee=0;for(let[T,S]of Object.entries(a)){let G=(S.requires??[]).length===0,g=(S.provides??[]).some(i=>(h.get(i)??[]).some(p=>p!==T));G&&!g&&(ee+=1);}return {schema_version:"v1",meta:{board:{path:e}},summary:{card_count:s.length,completed:u.completed,eligible:d.eligible.length,pending:u.pending,blocked:u.blocked,unresolved:u.unresolved,failed:u.failed,in_progress:u.in_progress,orphan_cards:ee,topology:{edge_count:Array.from(Y).length,max_fan_out_card:z.name,max_fan_out:z.fanOut}},cards:y}}function ur(){return new Date().toISOString()}function It(e,t,n,a,s,d,u){return async l=>{let h=[],y=n.cardStore.readCard(l.nodeId);if(!y)return "task-initiate-failure";let V=y.id,z=y.card_data??{},Y=y.source_defs??[],ee=Y,T=n.cardRuntimeStore.readRuntime(V),S=false,G=()=>{S&&(n.cardRuntimeStore.writeRuntime(V,T),S=false);},U=E=>bt(T._sources[E]),g=(E,v)=>{T._sources[E]=bt(v),S=true;},i=l.taskState?.executionCount??0;if(T._lastExecutionCount!==i&&(T._sources={},T._lastExecutionCount=i,S=true),l.update){let E=l.update,v=E.outputFile;if(v){let P=U(v);if(E.failure){let L=E.rqt??P.lastRequestedToken??P.queueRequestedToken;L&&g(v,vt(P,L));}else {let L=E.rqt;if(!P.lastCompletedToken||L>P.lastCompletedToken){let te=typeof E.deliveryToken=="string"?E.deliveryToken:void 0,j=false;te&&(j=n.fetchedSourcesStore.commitSourceData(V,v,te)),j?g(v,ir(P,L)):g(v,vt(P,L));}}G();}}let b={};for(let E of Y)if(E.outputFile){let v=n.fetchedSourcesStore.readSourceData(V,E.outputFile);v!==null&&(b[E.bindTo]=v);}let I={};for(let[E,v]of Object.entries(l.state??{}))if(v!==null&&typeof v=="object"&&!Array.isArray(v)){let P=v[E];I[E]=P!==void 0?P:v;}else I[E]=v;let w={id:V,card_data:{...z},requires:I,source_defs:Y,compute:y.compute};w._sourcesData=b,y.compute&&chunkQBEQL4TL_cjs.a.runSync(w,{sourcesData:b}),(d??n.outputStore.writeComputedValues.bind(n.outputStore))(V,w.computed_values??{});let x={...y},K=chunkQBEQL4TL_cjs.a.enrichSourcesSync(Array.isArray(y.source_defs)?y.source_defs:void 0,{card_data:y.card_data,requires:I}),B=e.value;x.source_defs=Array.isArray(K)?K.map(E=>({...E,boardDir:typeof E.boardDir=="string"&&E.boardDir?E.boardDir:B})):K;let D=ur(),H=l.update?void 0:D,ne=ee.filter(E=>{let v=E.outputFile;if(typeof v!="string"||!v)return true;let P=U(v);H&&(P={...P,queueRequestedToken:H},g(v,P));let L=P.queueRequestedToken??P.lastRequestedToken??D,te=wt(P,L);return te==="in-flight"?false:te==="dispatch"});if(G(),ne.length>0){let E=false,v=D;for(let P of ne){let L=P.outputFile;if(typeof L!="string"||!L)continue;let te=U(L),j=te.queueRequestedToken??D;g(L,{...te,lastRequestedToken:j}),v=j,E=true;}return E&&G(),E&&(h.push({taskKind:"source-fetch",payload:{boardRef:chunkVQCIOKJV_cjs.a(e),enrichedCard:x,callbackToken:l.callbackToken,rqt:v}}),n.executionRequestStore.appendEntries(t,h)),"task-initiated"}if(ee.some(E=>{let v=E.outputFile;if(typeof v!="string"||!v)return false;let P=U(v),L=P.queueRequestedToken??P.lastRequestedToken??D;return wt(P,L)==="in-flight"}))return "task-initiated";let pe=y.provides??[],ae={};for(let{bindTo:E,ref:v}of pe)ae[E]=chunkQBEQL4TL_cjs.a.resolve(w,v);return (u??n.outputStore.writeDataObjects.bind(n.outputStore))(ae),a(l.nodeId,ae),h.length>0&&n.executionRequestStore.appendEntries(t,h),"task-initiated"}}var Ge={settings:{completion:"manual",refreshStrategy:"data-changed"},tasks:{}};function _t(e){return {[he]:e.graph,[Et]:e.lastDrainedJournalId,board:{runtimeByCardId:e.runtimeByCardId}}}function Ft(e){let t=e[he],n=e[Et],s=e.board?.runtimeByCardId;if(!t||typeof t!="object")throw new Error(`State snapshot is missing required key: ${he}`);return {graph:t,lastDrainedJournalId:typeof n=="string"?n:"",runtimeByCardId:s&&typeof s=="object"?s:{}}}function Ot(e){let t=e.requires;return {provides:e.provides?.map(a=>a.bindTo)??[],taskHandlers:["card-handler"],description:e.meta?.title??e.id,...t&&t.length>0?{requires:t}:{}}}function A(e){return e!==void 0?{status:"success",data:e}:{status:"success"}}function R(e){return {status:"fail",error:e}}function F(e){return {status:"error",error:e instanceof Error?e.message:String(e)}}var Bt="sys_keys_board_state";function dr(e){let t=new TextEncoder().encode(e),n=Array.from(t,a=>String.fromCharCode(a)).join("");return btoa(n).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function Vt(e){let t=e.replace(/-/g,"+").replace(/_/g,"/"),n=t+"=".repeat((4-t.length%4)%4),a=atob(n),s=Uint8Array.from(a,d=>d.charCodeAt(0));return new TextDecoder().decode(s)}function qe(e){try{let t=JSON.parse(Vt(e));return typeof t?.t=="string"?{taskName:t.t}:null}catch{return null}}function Pt(e){return dr(JSON.stringify(e))}function qt(e){try{let t=JSON.parse(Vt(e));return typeof t?.cbk=="string"&&typeof t?.cid=="string"&&typeof t?.b=="string"&&typeof t?.d=="string"?t:null}catch{return null}}function Z(){return new Date().toISOString()}function cr(e){let t=new Map;return {appendEntries(n,a){if(!n||a.length===0)return;let s=t.get(n)??[];t.set(n,[...s,...a]);},dispatchEntriesForJournalId(n,a){if(!n)return;let s=t.get(n);if(!(!s||s.length===0)){for(let d of s)try{a(d);}catch(u){try{e(d,u instanceof Error?u.message:String(u));}catch{}}t.delete(n);}}}}function Lr(e,t,n={}){pt(t.callbackTransport,"createBoardLiveCardsPublic");let a=t.callbackTransport,s=t.onWarn??(()=>{}),d=chunkVQCIOKJV_cjs.a(e),u=n.boardRuntimeStoreRef,l=n.scratchStoreRef,h=n.taskExecutorRef,y=n.chatHandlerFlow,V=n.emitNotification??(o=>{if(!t.publishBoardChangeNotifications)return;let r=o.kind==="notification-batch"?o.notifications:[o];return t.publishBoardChangeNotifications(r)});function z(){if(!u)throw new Error(`Board at ${e.value} has no board runtime store configured. Pass boardRuntimeStoreRef at construction or init.`);return u}function Y(o){if(o.length!==0)try{let r=chunk2RIHC5TZ_cjs.e(o),c=chunk2RIHC5TZ_cjs.f({kind:"notification-batch",notifications:r}),f=V(c);f&&typeof f.catch=="function"&&f.catch(C=>s(`[board-live-cards-public] emitNotification failed: ${C instanceof Error?C.message:String(C)}`));}catch(r){s(`[board-live-cards-public] emitNotification failed: ${r instanceof Error?r.message:String(r)}`);}}function ee(){let o=S().readCardStoreRef();if(!o)throw new Error(`Board at ${e.value} has no card store configured. Run: init --base-ref <ref> --store-ref <b64-ref>`);let r=t.kvStorageForRef(o);return {readIndex(){return r.read("_index")},writeIndex(c){r.write("_index",c);},readCard(c){return r.read(c)},writeCard(c,f){return r.write(c,f),t.hashFn(f)},removeCard(c){r.delete(c);},cardExists(c){return r.read(c)!==null},defaultCardKey(c){return c}}}let T={readValues(o){let r=t.kvStorageForRef(z()),c=r.listKeys().sort();if(c.length===0)return {version:null,values:{}};let f={};for(let C of c)f[C]=r.read(C);return {version:t.hashFn(f),values:f}},writeValues(o,r,c){let f=t.kvStorageForRef(z());for(let C of c)f.delete(C);for(let[C,_]of Object.entries(r))f.write(C,_);return t.hashFn(r)}},S=()=>Be(t.kvStorageForRef(z())),G=()=>Tt(T),U=()=>xt(t.journalAdapterForRef(z())),g=()=>He(ee(),s),i=()=>{let o=S().readOutputsStoreRef();if(!o)throw new Error(`Board at ${e.value} has no outputs store configured. Run: init --outputs-store-ref <b64-ref>`);return At(t.kvStorageForRef(o))};function p(){return h??S().readTaskExecutorRef()}function b(){return !!G().readSnapshot(e.value).values[he]}function I(){let o=G().readSnapshot(e.value);if(!o.values[he])throw new Error(`Board not initialized at ${e.value}`);return Ft(o.values)}function w(o,r){let c=G().commitSnapshot(e.value,{schemaVersion:Oe,expectedVersion:r,commitId:t.genId(),committedAt:Z(),deleteKeys:[],shallowMerge:_t(o)});if(!c.ok)throw new Error(`Snapshot commit failed (version mismatch): expected=${r??"null"} current=${c.currentVersion??"null"}`)}function x(o){U().appendEvent(o);}async function K(){let r=cr((m,k)=>{let O=m.payload,N=(O?.enrichedCard??{}).id??O?.cardId??"unknown";x({type:"task-failed",taskName:N,error:k,timestamp:Z()});}),c=I(),f=chunkG4XXRHL2_cjs.q(c.graph),{events:C,newCursor:_}=U().readEntriesAfterCursor(c.lastDrainedJournalId),$=j(),q=Fe($,m=>t.resolveBlob(m)),J={...c.runtimeByCardId},W=new Map,Se={readRuntime(m){return W.get(m)??J[m]??{_sources:{}}},writeRuntime(m,k){W.set(m,k),J[m]=k;}},ke=[],oe=new Map,we={readSourceData(m,k){let O=`${m}/${k}`;return oe.has(O)?oe.get(O):q.readSourceData(m,k)},ingestSourceDataStaged(m,k,O,ue){q.ingestSourceDataStaged(m,k,O,ue);},commitSourceData(m,k,O){let ue=`${m}/.staged/${O}/${k}`,N=$.read(ue);if(N==null){let Q=$.keyRef?.(ue);Q&&(N=t.resolveBlob(Q));}if(N==null)return false;let se=`${m}/${k}`,fe=N.trim();try{oe.set(se,JSON.parse(fe));}catch{oe.set(se,fe);}return ke.push({cardId:m,outputFile:k,deliveryToken:O}),true},hasSource(m,k){let O=`${m}/${k}`;return oe.has(O)?true:q.hasSource(m,k)},listSources(m){let k=q.listSources(m),O=new Set;for(let N of oe.keys())N.startsWith(`${m}/`)&&O.add(N.slice(`${m}/`.length));let ue=new Set([...k,...O]);return Array.from(ue)}},le={cardStore:g(),cardRuntimeStore:Se,fetchedSourcesStore:we,outputStore:i(),executionRequestStore:r},Re=[],Ve=[],je=[],Ke=new Map,We=new Set,Wt=(m,k)=>{Re.push({type:"task-completed",taskName:m,data:k,timestamp:Z()});},Ne=(m,k)=>{x({type:"task-failed",taskName:m,error:k,timestamp:Z()});},ve=chunkG4XXRHL2_cjs.u(f,{handlers:{"card-handler":It(e,_,le,Wt,Ne,(m,k)=>{Ve.push({cardId:m,values:k});},m=>{je.push(m);})},onNodeRemoved:m=>{Ke.delete(m),W.delete(m),delete J[m],We.add(m);}});for(Re=C;Re.length>0;){let m=Re;Re=[];for(let k of m)if(k.type==="task-restart"){let O=le.cardStore.readCard(k.taskName);O&&Ke.set(k.taskName,O);}ve.pushAll(m),await ve.waitForHandlers();}let Ze=ve.getState();await ve.dispose({wait:true});let Zt=G().readSnapshot(e.value).version;w({lastDrainedJournalId:_,graph:chunkG4XXRHL2_cjs.p(Ze),runtimeByCardId:J},Zt);for(let{cardId:m,values:k}of Ve)le.outputStore.writeComputedValues(m,k);for(let m of je)le.outputStore.writeDataObjects(m);for(let{cardId:m,outputFile:k,deliveryToken:O}of ke)q.commitSourceData(m,k,O);let xe;try{xe=Pe(d,Ze),le.outputStore.writeStatusSnapshot(xe);}catch(m){s(`[board-live-cards-public] status publish failed: ${m instanceof Error?m.message:String(m)}`);}let ye=[];for(let{cardId:m,values:k}of Ve)ye.push({kind:"computed_values",cardId:m,values:k});for(let m of je)for(let[k,O]of Object.entries(m))k&&ye.push({kind:"data_object",key:k,payload:O});for(let[m,k]of Ke)ye.push({kind:"card_refreshed",cardId:m,card:k});for(let m of We)ye.push({kind:"card_removed",cardId:m});xe!==void 0&&ye.push({kind:"status",status:xe}),Y(ye);let Ce=p()??{howToRun:"built-in",whatToRun:chunkVQCIOKJV_cjs.a({kind:"built-in",value:"source-cli-task-executor"})},et=t.supportsDirectSourceOutput?.(Ce)===true;r.dispatchEntriesForJournalId(_,m=>{if(m.taskKind!=="source-fetch"){s(`[process-accumulated-events] unknown taskKind "${m.taskKind}" \u2014 skipping`);return}let k=m.payload,O=k.enrichedCard?.id??"unknown",ue=k.enrichedCard?.source_defs??[];if(Ce.howToRun==="queue-storage"&&et){try{let N=t.queueStorageForRef(B(),"task-executor"),se=typeof Ce.extra?.boardId=="string"?Ce.extra.boardId:void 0,fe=[];for(let Q of ue){if(!Q.outputFile){s(`[dispatch] source "${Q.bindTo}" has no outputFile \u2014 skipping`);continue}let Ee=t.genId(),Te=`${O}/.staged/${Ee}/${Q.outputFile}`,tt=$.keyRef?.(Te);if(!tt)continue;let rt={ref:chunkVQCIOKJV_cjs.a(tt),deliveryToken:Ee,outputFile:Q.outputFile,cardId:O},er=Pt({cbk:k.callbackToken,rg:e.value,br:chunkVQCIOKJV_cjs.a(e),cid:O,b:Q.bindTo,d:Q.outputFile,cs:void 0,rqt:k.rqt,dt:rt.deliveryToken});fe.push({...se?{boardId:se}:{},ref:Ce,args:{source_def:Q,base_ref:chunkVQCIOKJV_cjs.a(e),callback:a.createCallback(er),output:rt}});}fe.length>0&&N.enqueueMany(fe);}catch(N){Ne(O,N instanceof Error?N.message:String(N));}return}for(let N of ue){if(!N.outputFile){s(`[dispatch] source "${N.bindTo}" has no outputFile \u2014 skipping`);continue}let se;if(et){let Q=t.genId(),Ee=`${O}/.staged/${Q}/${N.outputFile}`,Te=$.keyRef?.(Ee);Te&&(se={ref:chunkVQCIOKJV_cjs.a(Te),deliveryToken:Q,outputFile:N.outputFile,cardId:O});}let fe=Pt({cbk:k.callbackToken,rg:e.value,br:chunkVQCIOKJV_cjs.a(e),cid:O,b:N.bindTo,d:N.outputFile,cs:void 0,rqt:k.rqt,...se?{dt:se.deliveryToken}:{}});t.dispatchExecution(Ce,{source_def:N,base_ref:chunkVQCIOKJV_cjs.a(e),callback:a.createCallback(fe),...se?{output:se}:{}}).catch(Q=>Ne(O,Q instanceof Error?Q.message:String(Q)));}});}function B(){let o=S().readQueueStoreRef();if(!o)throw new Error(`Board at ${e.value} has no queue store configured. Run: init --queue-store-ref <b64-ref>`);return o}function D(){let o=t.queueStorageForRef(B(),"process-accumulated");o.enqueueIfAbsent?o.enqueueIfAbsent({boardRef:chunkVQCIOKJV_cjs.a(e)},`process-accumulated:${chunkVQCIOKJV_cjs.a(e)}`):o.enqueue({boardRef:chunkVQCIOKJV_cjs.a(e)}),t.requestProcessAccumulated?.();}function H(){let o=t.queueStorageForRef(B(),"process-accumulated");for(;;){let r=o.lease({max:64,visibilityMs:1e3});if(r.length<=0)return;for(let c of r)o.ack(c.id,c.leaseToken);if(r.length<64)return}}async function ne(){try{let o=()=>{let c=I(),{events:f}=U().readEntriesAfterCursor(c.lastDrainedJournalId);f.length<=0||D();},r=await chunkVQCIOKJV_cjs.c(t.lock,K,o);return A({ran:r!==!1})}catch(o){return F(o)}}function X(){D();}function pe(o){try{let r=o.params?.cardStoreRef;if(!r)return R("init requires params.cardStoreRef \u2014 create a card store with card-store-cli and pass its ref here");if(u=o.params?.boardRuntimeStoreRef,!u)return R("init requires params.boardRuntimeStoreRef \u2014 pass the board runtime store ref here");if(!b()){let J=chunkG4XXRHL2_cjs.a(Ge);w({lastDrainedJournalId:"",graph:chunkG4XXRHL2_cjs.p(J),runtimeByCardId:{}},null);}let c=o.params?.outputsStoreRef;if(!c)return R("init requires params.outputsStoreRef \u2014 pass the outputs store ref here");let f=o.params?.queueStoreRef;if(!f)return R("init requires params.queueStoreRef \u2014 pass the queue store ref here");let C=o.params?.fetchedSourcesStoreRef;if(!C)return R("init requires params.fetchedSourcesStoreRef \u2014 pass the fetched sources store ref here");l=o.params?.scratchStoreRef;let _=o.params?.chatStoreRef;if(!_)return R("init requires params.chatStoreRef \u2014 pass the chat store ref here");let $=o.params?.artifactsStoreRef;if(!$)return R("init requires params.artifactsStoreRef \u2014 pass the artifacts store ref here");let q=S();q.writeBoardRuntimeStoreRef(u),q.writeCardStoreRef(r),q.writeOutputsStoreRef(c),q.writeQueueStoreRef(f),q.writeFetchedSourcesStoreRef(C),q.writeChatStoreRef(_),q.writeArtifactsStoreRef($);try{i().writeStatusSnapshot(Pe(d,chunkG4XXRHL2_cjs.q(I().graph)));}catch{}return A()}catch(r){return F(r)}}function ae(o){try{let r=i().readStatusSnapshot();if(!r){r=Pe(d,chunkG4XXRHL2_cjs.q(I().graph));try{i().writeStatusSnapshot(r);}catch{}}return A(r)}catch(r){return F(r)}}function E(o){try{let r=o.params?.id;if(!r)return R("removeCard requires params.id");try{t.kvStorage("card-upsert").delete(r);}catch{}return x({type:"task-removal",taskName:r,timestamp:Z()}),X(),A()}catch(r){return F(r)}}function v(o){try{let r=o.params?.cardId;if(!r)return R("addCardFiles requires params.cardId");let c=chunk5XLFPPTY_cjs.a(g(),{emitNotification:V}).appendFiles({params:{id:r},body:o.body});return c.status!=="success"?c:A({cardId:r,files_added:c.data.files_added,notified:!0})}catch(r){return F(r)}}function P(o){try{let r=o.params?.id;return r?(x({type:"task-restart",taskName:r,timestamp:Z()}),X(),A()):R("retrigger requires params.id")}catch(r){return F(r)}}async function L(o){return H(),ne()}function te(){let o=S().readFetchedSourcesStoreRef();if(!o)throw new Error(`Board at ${e.value} has no fetched sources store configured. Run: init --fetched-sources-store-ref <b64-ref>`);return o}function j(){return t.blobStorageForRef(te())}function re(o){try{let r=o.params?.cardId,c=o.params?.all,f=!!o.params?.restart;if(!r&&!c)return R("upsertCard requires --card-id <id> or --all");let C=c?g().readAllCards().map(_=>_.id):[r];for(let _ of C)if(!g().readCard(_))return R(`Card "${_}" not found in board at ${e.value}`);for(let _ of C){let $=g().readCard(_),q=Ot($),J=t.hashFn(q),W=t.kvStorage("card-upsert"),Se=W.read(_),ke=Se?.taskConfigHash!==J;if(!(!ke&&!f)){if(ke){let oe=Se?.blobRef??g().readCardKey(_)??_;x({type:"task-upsert",taskName:_,taskConfig:q,timestamp:Z()}),W.write(_,{blobRef:oe,taskConfigHash:J,updatedAt:Z()});}f&&x({type:"task-restart",taskName:_,timestamp:Z()});}}return X(),A()}catch(r){return F(r)}}function ie(o){try{let r=o.params?.token;if(!r)return R("taskFailed requires params.token");let c=o.params?.error??"unknown error",f=qe(r);return f?(x({type:"task-failed",taskName:f.taskName,error:c,timestamp:Z()}),X(),A()):R("Invalid callback token")}catch(r){return F(r)}}function ge(o){try{let r=o.params?.token;if(!r)return R("taskProgress requires params.token");let f=(o.body??{}).update??{},C=qe(r);return C?(x({type:"task-progress",taskName:C.taskName,update:f,timestamp:Z()}),X(),A()):R("Invalid callback token")}catch(r){return F(r)}}function be(o){try{let r=o.params?.token,c=o.params?.ref;if(!r)return R("sourceDataFetched requires params.token");if(!c)return R("sourceDataFetched requires params.ref");let f=qt(r);if(!f)return R("Invalid source token");let{cbk:C,cid:_,b:$,d:q,cs:J,rqt:W,dt:Se}=f,ke=Fe(j(),Re=>t.resolveBlob(Re)),oe=Se||t.genId();Se||ke.ingestSourceDataStaged(_,q,chunkVQCIOKJV_cjs.b(c),oe);let we=qe(C);if(!we)return R("Invalid callback token embedded in source token");let le=Z();return x({type:"task-progress",taskName:we.taskName,update:{bindTo:$,outputFile:q,fetchedAt:le,deliveryToken:oe,sourceChecksum:J,rqt:W},timestamp:le}),X(),A()}catch(r){return F(r)}}function ce(o){try{let r=o.params?.token,c=o.params?.reason??"unknown";if(!r)return R("sourceDataFetchFailure requires params.token");let f=qt(r);if(!f)return R("Invalid source token");let{cbk:C,b:_,d:$,cs:q,rqt:J}=f,W=qe(C);return W?(x({type:"task-progress",taskName:W.taskName,update:{bindTo:_,outputFile:$,failure:!0,reason:c,sourceChecksum:q,rqt:J},timestamp:Z()}),X(),A()):R("Invalid callback token embedded in source token")}catch(r){return F(r)}}function jt(o){try{let r=S().readCardStoreRef();return r?A({storeRef:r}):R(`Board at ${e.value} has no card store configured`)}catch(r){return F(r)}}function Kt(o){try{return A({storeRef:u??null})}catch(r){return F(r)}}function Nt(o){try{let r=S().readOutputsStoreRef();return r?A({storeRef:r}):R(`Board at ${e.value} has no outputs store configured`)}catch(r){return F(r)}}function Dt(o){try{return A({storeRef:l??null})}catch(r){return F(r)}}function Lt(o){try{let r=S().readChatStoreRef();return A({storeRef:r})}catch(r){return F(r)}}function $t(o){try{let r=S().readArtifactsStoreRef();return A({storeRef:r})}catch(r){return F(r)}}function Jt(o){try{let r=S().readFetchedSourcesStoreRef();return A({storeRef:r})}catch(r){return F(r)}}function Mt(o){try{let r=o.params?.key;if(!r)return R("getConfig requires params.key");let c=S(),f;switch(r){case "task-executor":f=h??null;break;case "chat-handler-flow":f=y??null;break;case "board-runtime-store-ref":f=c.readBoardRuntimeStoreRef();break;case "card-store-ref":f=c.readCardStoreRef();break;case "outputs-store-ref":f=c.readOutputsStoreRef();break;case "scratch-store-ref":f=l??null;break;case "chat-store-ref":f=c.readChatStoreRef();break;case "artifacts-store-ref":f=c.readArtifactsStoreRef();break;case "fetched-sources-store-ref":f=c.readFetchedSourcesStoreRef();break;default:return R(`getConfig: unknown key "${r}"`)}return A({value:f})}catch(r){return F(r)}}function Ht(o){try{let r=o.params?.key;if(!r)return R("getOutputsDataObject requires params.key");let c=Ue()[r]??null;return A(c)}catch(r){return F(r)}}function Gt(o){if(!o||typeof o!="object"||Array.isArray(o))return false;let r=o.__private;return !!r&&typeof r=="object"&&!Array.isArray(r)&&r.visible_controlplane_only===true}function Ut(o){let r=[...new Set(g().readAllCards().filter(f=>!Gt(f)).map(f=>f.id).filter(f=>typeof f=="string"&&f.length>0))].sort(),c=[...new Set(Object.keys(o).filter(f=>f&&f!==Bt))].sort();return {card_ids:r,data_object_keys:c}}function Ue(){let o=i().readAllDataObjects();return {...o,[Bt]:Ut(o)}}function Qe(o){try{return A(Ue())}catch(r){return F(r)}}function Qt(o){try{let r=o.params?.key;if(!r)return R("getOutputsComputedValues requires params.key");let c=i().readComputedValues(r);return A(c)}catch(r){return F(r)}}function ze(o){try{return A(i().readAllComputedValues())}catch(r){return F(r)}}function Ye(){return Fe(j(),o=>t.resolveBlob(o))}function Xe(o){let r=j().keyRef?.(o);if(!r)throw new Error("configured fetched-sources store does not support keyRef");return chunkVQCIOKJV_cjs.a(r)}function zt(o){try{let r=o.params?.key;if(!r)return R("getOutputsFetchedSources requires params.key");let c=Ye().listSources(r),f={};for(let C of c)f[C]=Xe(`${r}/${C}`);return A(f)}catch(r){return F(r)}}function Yt(o){try{let r=Ye(),c=new Set;for(let C of j().listKeys()){let _=C.indexOf("/");_>0&&!C.includes("/.staged/")&&c.add(C.slice(0,_));}let f={};for(let C of c){let _=r.listSources(C);if(_.length>0){f[C]={};for(let $ of _)f[C][$]=Xe(`${C}/${$}`);}}return A(f)}catch(r){return F(r)}}function Xt(o){try{let r=g().readAllCards(),c=ae({});if(c.status!=="success")return c;let f=Qe({});if(f.status!=="success")return f;let C=ze({});if(C.status!=="success")return C;let _=C.data,$={};for(let q of r){let J=typeof q?.id=="string"?q.id:null;if(!J)continue;let W=q.card_data&&typeof q.card_data=="object"&&!Array.isArray(q.card_data)?q.card_data:{};$[J]={schema_version:"v1",card_id:J,card_data:{...W},computed_values:_[J]&&typeof _[J]=="object"?_[J]:{}};}return A({cardDefinitions:r,statusSnapshot:c.data,dataObjectsByToken:f.data,cardRuntimeById:$})}catch(r){return F(r)}}return {init:pe,status:ae,getBoardRuntimeStoreRef:Kt,getCardStoreRef:jt,getOutputsStoreRef:Nt,getScratchStoreRef:Dt,getChatStoreRef:Lt,getArtifactsStoreRef:$t,getFetchedSourcesStoreRef:Jt,getConfig:Mt,getOutputsDataObject:Ht,getAllOutputsDataObjects:Qe,getOutputsComputedValues:Qt,getAllOutputsComputedValues:ze,getOutputsFetchedSources:zt,getAllOutputsFetchedSources:Yt,buildSseOneShotPayload:Xt,removeCard:E,addCardFiles:v,retrigger:P,processAccumulatedEvents:L,upsertCard:re,taskFailed:ie,taskProgress:ge,sourceDataFetched:be,sourceDataFetchFailure:ce}}function $r(e,t,n){let a=n?.taskExecutorRef,s=()=>{if(n){if(!n.boardRuntimeStoreRef)throw new Error(`Board at ${e.value} requires boardRuntimeStoreRef for non-core runtime operations.`);return Be(t.kvStorageForRef(n.boardRuntimeStoreRef))}return Be(t.kvStorage("config"))};function d(){let g=s().readCardStoreRef();if(!g)throw new Error(`Board at ${e.value} has no card store configured. Run: init --base-ref <ref> --store-ref <b64-ref>`);let i=t.kvStorageForRef(g);return {readIndex(){return i.read("_index")},writeIndex(p){i.write("_index",p);},readCard(p){return i.read(p)},writeCard(p,b){return i.write(p,b),t.hashFn(b)},removeCard(p){i.delete(p);},cardExists(p){return i.read(p)!==null},defaultCardKey(p){return p}}}let u=()=>He(d(),t.onWarn??(()=>{}));function l(){return a??s().readTaskExecutorRef()}async function h(g,i){let p=t.validateSchema(i),b=[],I=l();if(I&&Array.isArray(i.source_defs))for(let x of i.source_defs){let K=typeof x.bindTo=="string"?x.bindTo:"(unknown)";try{let B;try{B=await t.invokeExecutor(I,"validate-source-def",{timeout:t.executorTimeouts?.validationMs??1e4,input:JSON.stringify(x)});}catch(H){let ne=H;if(B=typeof ne?.stdout=="string"?ne.stdout:"",!B.trim()){b.push(`source "${K}": executor validate-source-def failed \u2014 ${H instanceof Error?H.message:String(H)}`);continue}}let D=JSON.parse(B.trim());if(!D.ok&&Array.isArray(D.errors))for(let H of D.errors)b.push(`source "${K}": ${H}`);}catch(B){b.push(`source "${K}": executor validate-source-def failed \u2014 ${B instanceof Error?B.message:String(B)}`);}}let w=[...p.errors,...b];return A({cardId:g,isValid:w.length===0,issues:w})}function y(g,i){let p=g.params?.sourceIdx,b=g.params?.outRef;if(p===void 0)return R(`${i} requires params.sourceIdx`);if(!g.body||typeof g.body!="object"||Array.isArray(g.body))return R(`${i} requires card JSON object in body`);let I=g.body,w=I["card-content"]??I,x=I["mock-projections"]??{},K=w.source_defs??[];if(p<0||p>=K.length)return R(`sourceIdx ${p} out of range (card has ${K.length} source(s))`);let B=K[p],D=typeof B.bindTo=="string"?B.bindTo:"source";return {src:B,bindTo:D,outRef:b,mockProjections:x}}async function V(g){try{if(!g.body||typeof g.body!="object"||Array.isArray(g.body))return R("validateCardPreflight requires card JSON object in body");let i=g.body,p=i["card-content"]??i,b=typeof p.id=="string"?p.id:"(unknown)";return await h(b,p)}catch(i){return F(i)}}async function z(g){try{let i=y(g,"probeSourcePreflight");if("status"in i)return i;let p=l();if(!p)return R("No task-executor registered for this board");try{let b={...i.src,_projections:i.mockProjections},I=await t.invokeExecutor(p,"probe-source-preflight",{timeout:i.src.timeout??t.executorTimeouts?.preflightMs??6e4,input:JSON.stringify(b)}),w=JSON.parse(I.trim());return w.ok?A({bindTo:i.bindTo,reachable:w.reachable,latencyMs:w.latencyMs,note:w.note}):R(w.error??"Preflight probe failed")}catch{return R("Executor does not support probe-source-preflight")}}catch(i){return F(i)}}async function Y(g){try{let i=y(g,"runSourcePreflight");if("status"in i)return i;let p=l();if(!p)return R("No task-executor registered for this board");try{let b={...i.src,_projections:i.mockProjections},I=await t.invokeExecutor(p,"run-source-preflight",{timeout:i.src.timeout??t.executorTimeouts?.probeMs??6e4,input:JSON.stringify(b)}),w=JSON.parse(I.trim());if(!w.ok)return A({bindTo:i.bindTo,ok:!1,result:null,issues:[w.error??"Preflight run failed"]});if(i.outRef){let x=chunkVQCIOKJV_cjs.b(i.outRef);t.absoluteBlob.write(x.value,JSON.stringify(w.resultValue,null,2));}return A({bindTo:typeof w.bindTo=="string"?w.bindTo:i.bindTo,ok:!0,result:w.resultValue??null,issues:[]})}catch(b){let I=b instanceof Error?b.message:String(b);return A({bindTo:i.bindTo,ok:!1,result:null,issues:[I]})}}catch(i){return F(i)}}async function ee(g){try{let i=l();if(!i)return R("No task-executor registered for this board");let p=await t.invokeExecutor(i,"describe-capabilities",{timeout:t.executorTimeouts?.describeMs??1e4});return A(JSON.parse(p.trim()))}catch(i){return F(i)}}function T(g){try{let i=g.body;if(!i||!Array.isArray(i.ops))return R("updatesInCardStore requires body.ops array");let p=i.ops,b=u();for(let I of p){let w=I.op,x=I.id;if(!x)return R('op is missing "id"');if(w==="update"){let K=I["card-content"];if(!K)return R(`update op for "${x}" is missing "card-content"`);b.writeCard(x,K);}else return R(`Unknown op type: "${w??"(none)"}"`)}return A()}catch(i){return F(i)}}function S(g){try{let i=g.body;if(!i||!Array.isArray(i.ids))return R("readFromCardStore requires body.ids array");let p=i.ids,b=u(),I=p.map(w=>({id:w,"card-content":b.readCard(w)}));return A({cards:I})}catch(i){return F(i)}}function G(g){try{if(!g.body||typeof g.body!="object"||Array.isArray(g.body))return R("evalCardCompute requires a JSON object in body");let i=g.body,p=i["card-content"]??i,b=typeof p.id=="string"?p.id:"(unknown)",I=i["mock-fetched-sources"]??{},w=i["mock-requires"]??{},x=p.compute;if(!x||!Array.isArray(x)||x.length===0)return A({cardId:b,ok:!0,computed_values:{},errors:[]});let K={id:b,card_data:p.card_data??{},requires:w,source_defs:p.source_defs,compute:x},B=chunkQBEQL4TL_cjs.a.runSync(K,{sourcesData:I}),D=B.node.computed_values??{},H=B.errors??[];return A({cardId:b,ok:H.length===0,computed_values:D,errors:H})}catch(i){return F(i)}}async function U(g){try{if(!g.body||typeof g.body!="object"||Array.isArray(g.body))return R("simulateCardCycle requires a JSON object in body");let i=g.body,p=i["card-content"]??i,b=typeof p.id=="string"?p.id:"(unknown)",I=i["mock-fetched-sources"]??{},w=i["mock-requires"]??{},x=await h(b,p),K=x.status==="success"?{isValid:x.data.isValid,issues:x.data.issues}:{isValid:!1,issues:[x.status==="fail"?x.error:"internal error"]},B=p.source_defs??[],D=p.card_data??{},H=[],ne=[];if(B.length>0){H=chunkQBEQL4TL_cjs.a.enrichSourcesSync(B,{card_data:D,requires:w});for(let j of H){let re=j.projections,ie=j._projections;if(re&&ie){for(let ge of Object.keys(re))if(ie[ge]===void 0){let be=typeof j.bindTo=="string"?j.bindTo:"(unknown)";ne.push({bindTo:be,key:ge,error:`Projection "${ge}" resolved to undefined`});}}}}let X=[],pe={...I},ae=i["task-executor-ref"],E=(ae?.howToRun&&ae?.whatToRun?ae:void 0)??l();for(let j=0;j<H.length;j++){let re=H[j],ie=typeof re.bindTo=="string"?re.bindTo:`source_${j}`;if(!E){X.push({bindTo:ie,skipped:!0,error:"No task executor configured"});continue}try{let ge={...re},be=await t.invokeExecutor(E,"run-source-preflight",{timeout:re.timeout??t.executorTimeouts?.preflightMs??6e4,input:JSON.stringify(ge)}),ce=JSON.parse(be.trim());ce.ok&&!Object.prototype.hasOwnProperty.call(I,ie)&&Object.prototype.hasOwnProperty.call(ce,"resultValue")&&(pe[ie]=ce.resultValue),X.push({bindTo:ie,reachable:ce.reachable,latencyMs:ce.latencyMs,error:ce.ok?void 0:ce.error});}catch{X.push({bindTo:ie,skipped:!0,error:"Executor does not support run-source-preflight"});}}let v=p.compute,P={},L=[];if(v&&Array.isArray(v)&&v.length>0){let j={id:b,card_data:D,requires:w,source_defs:p.source_defs,compute:v},re=chunkQBEQL4TL_cjs.a.runSync(j,{sourcesData:pe});P=re.node.computed_values??{},L=re.errors??[];}let te=K.isValid&&ne.length===0&&L.length===0&&X.every(j=>j.reachable!==!1);return A({cardId:b,ok:te,validation:K,source_probes:X,projection_errors:ne,fetched_sources:pe,computed_values:P,compute_errors:L})}catch(i){return F(i)}}return {validateCardPreflight:V,probeSourcePreflight:z,runSourcePreflight:Y,evalCardCompute:G,simulateCardCycle:U,describeTaskExecutorCapabilities:ee,updatesInCardStore:T,readFromCardStore:S}}
|
|
2
|
-
exports.a=Cr;exports.b=kt;exports.c=br;exports.d=pt;exports.e=kr;exports.f=Rr;exports.g=hr;exports.h=yt;exports.i=or;exports.j=sr;exports.k=Ct;exports.l=He;exports.m=Oe;exports.n=he;exports.o=Fr;exports.p=bt;exports.q=wt;exports.r=ir;exports.s=vt;exports.t=Pe;exports.u=Ge;exports.v=_t;exports.w=Ft;exports.x=Ot;exports.y=Lr;exports.z=$r;//# sourceMappingURL=chunk-EYBDAEVO.cjs.map
|
|
3
|
-
//# sourceMappingURL=chunk-EYBDAEVO.cjs.map
|
package/lib/chunk-HFI2NAZJ.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import {b as b$1}from'./chunk-6MD6FVE3.js';import {a,d,x,t,u,n,w,v,k,b as b$2,c,h,i,j,o,s,r,q as q$2,p as p$1}from'./chunk-AHW6EMUO.js';import {a as a$1,b}from'./chunk-44L64VQ2.js';import {q as q$1,p,a as a$2,u as u$1}from'./chunk-VGT3TRQG.js';import {a as a$3}from'./chunk-ATOQP3BD.js';import {e,f}from'./chunk-UGB7PC4P.js';async function rt(t,o,a){let r=await t.tryAcquire();if(!r)return false;try{await o();}finally{await r();}return await a?.(),true}function Rt(t){return typeof t=="object"&&t!==null&&"then"in t&&typeof t.then=="function"}function Ce(t,o){return Rt(t)?t.then(o):o(t)}function nt(t,o){let a={...t};for(let[r,s]of Object.entries(o))s!==null&&typeof s=="object"&&!Array.isArray(s)&&a[r]!==null&&typeof a[r]=="object"&&!Array.isArray(a[r])?a[r]=nt(a[r],s):a[r]=s;return a}function we(t,o,a){if(o.length===0)return t;let[r,...s]=o;if(s.length===0)return {...t,[r]:a};let d=t[r]!==null&&typeof t[r]=="object"&&!Array.isArray(t[r])?t[r]:{};return {...t,[r]:we(d,s,a)}}function at(t){return {read:a=>t.read(a),get(a,r){return Ce(t.read(a),s=>{if(s===null)return null;let d=s;for(let f of r.split(".").filter(Boolean)){if(d===null||typeof d!="object"||Array.isArray(d))return null;d=d[f]??null;}return d??null})},write:(a,r)=>t.write(a,r),delete:a=>t.delete(a),listKeys:a=>t.listKeys(a),shallowMerge(a,r){return Ce(t.read(a),s=>t.write(a,{...s??{},...r}))},deepMerge(a,r){return Ce(t.read(a),s=>t.write(a,nt(s??{},r)))},patch(a,r,s){return Ce(t.read(a),d=>{let f=r.split(".").filter(Boolean);return t.write(a,we(d??{},f,s))})}}}function ot(t){return at(t)}function st(t,o){return {async readIndex(){return await t.read("_index")},writeIndex(a){return t.write("_index",a)},async readCard(a){return await t.read(a)},async writeCard(a,r){return await t.write(a,r),o(r)},removeCard(a){return t.delete(a)},async cardExists(a){return await t.read(a)!==null},defaultCardKey(a){return a}}}function it(t,o){async function a(){return await t.readIndex()??{}}return {async readCard(r){let s=(await a())[r];return !s||!await t.cardExists(s.key)?null:await t.readCard(s.key)},async readCardKey(r){return (await a())[r]?.key??null},async readAllCards(){let r=[];for(let[s,d]of Object.entries(await a())){if(!await t.cardExists(d.key))continue;let f=await t.readCard(d.key);f?r.push(f):o?.(`[card-store] could not read card "${s}" at key "${d.key}"`);}return r},async readChecksumIndex(){let r={};for(let[s,d]of Object.entries(await a()))r[s]=d.checksum;return r},async changedSince(r){let s=await a(),d=[];for(let[f,v]of Object.entries(s))r[f]!==v.checksum&&d.push(f);for(let f of Object.keys(r))s[f]||d.push(f);return d},async validateUpsert(r,s){let d=await a(),f=d[r],v=Object.entries(d).find(([,w])=>w.key===s);return f&&f.key!==s?{ok:false,error:`Card id "${r}" is already mapped to key "${f.key}", cannot remap to "${s}"`}:v&&v[0]!==r?{ok:false,error:`Key "${s}" is already mapped to card id "${v[0]}", cannot remap to "${r}"`}:{ok:true}},async writeCard(r,s,d){let f=await a(),v=d??f[r]?.key??t.defaultCardKey(r),w=await t.writeCard(v,s);f[r]={key:v,checksum:w,updatedAt:new Date().toISOString()},await t.writeIndex(f);},async patchCard(r,s,d){let f=await a(),v=f[r];if(!v||!await t.cardExists(v.key))throw new Error(`card "${r}" not found`);let w=await t.readCard(v.key);if(!w||typeof w!="object"||Array.isArray(w))throw new Error(`card "${r}" is not patchable`);let m=String(s||"").split(".").filter(Boolean),l=we(w,m,d),k=await t.writeCard(v.key,l);f[r]={key:v.key,checksum:k,updatedAt:new Date().toISOString()},await t.writeIndex(f);},async removeCard(r){let s=await a(),d=s[r];d&&(await t.removeCard(d.key),delete s[r],await t.writeIndex(s));},readIndex(){return a()}}}function Ot(t,o){return a(t,o)}function Ft(t,o,a){return {blob:t,kv:o,journal:a}}function ut(t,o={}){function a(m){return {status:"success",data:m}}function r(m){return {status:"fail",error:m}}function s(m){return {status:"error",error:m instanceof Error?m.message:String(m)}}async function d(m){let l=o.emitNotification;if(!l||m.length===0)return;let k=e(m);if(k.length===1){await l(k[0]);return}await l(f({kind:"notification-batch",notifications:k}));}async function f$1(m){let l=m.params?.id;if(l){let k=await t.readCard(l);if(!k)throw new Error(`card "${l}" not found`);return [k]}return await t.readAllCards()}function v(m){return f({kind:"notification-batch",notifications:e(m.map(l=>({kind:"card_refreshed",cardId:l.id,card:l})))})}function w(m){if(Array.isArray(m))return m;if(m&&typeof m=="object"){let l=m;return Array.isArray(l.files)?l.files:[m]}return null}return {async get(m){try{return a({cards:await f$1(m)})}catch(l){return s(l)}},async buildNotificationBatch(m){try{return a(v(await f$1(m)))}catch(l){return s(l)}},async set(m){try{let l=m.body;if(l==null)return r("set requires a body (card object or array of cards)");let k=Array.isArray(l)?l:[l];for(let h of k){if(typeof h.id!="string")return r("each card must have a string `id` field");await t.writeCard(h.id,h);}return await d(k.map(h=>({kind:"card_refreshed",cardId:h.id,card:h}))),a({count:k.length})}catch(l){return s(l)}},async del(m){try{let l=m.body?.ids??[],k=m.params?.id,h=k?[...l,k]:l;if(h.length===0)return r("del requires body.ids (string[]) or params.id");for(let B of h)await t.removeCard(B);return await d(h.map(B=>({kind:"card_removed",cardId:B}))),a({count:h.length})}catch(l){return s(l)}},async patch(m){try{let l=m.params?.id,k=m.params?.path;if(!l)return r("patch requires params.id");if(!k)return r("patch requires params.path");let h=m.body,B=h&&Object.prototype.hasOwnProperty.call(h,"value")?h.value:m.body;await t.patchCard(l,k,B);let x=await t.readCard(l);return x?(await d([{kind:"card_refreshed",cardId:l,card:x}]),a({count:1})):r(`card "${l}" not found`)}catch(l){return s(l)}},async appendFiles(m){try{let l=m.params?.id;if(!l)return r("appendFiles requires params.id");let k=await t.readCard(l);if(!k)return r(`card "${l}" not found`);let h=w(m.body);if(!h||h.length===0)return r("appendFiles requires a file metadata object, array, or body.files array");let B=k.card_data&&typeof k.card_data=="object"&&!Array.isArray(k.card_data)?k.card_data:{},x=Array.isArray(B.files)?B.files:[],$=[...x,...h],V=h.map((L,z)=>({idx:x.length+z,entry:L})),E=await this.patch({params:{id:l,path:"card_data.files"},body:{value:$}});return E.status!=="success"?E:a({files_added:V})}catch(l){return s(l)}}}}async function kt(t,o){return (await t.peekActive()).find(a=>a.id===o)}function _t(t,o={}){async function a(r){let s=o.emitNotification;if(!s||r.length===0)return;let d=e(r);if(d.length===1){await s(d[0]);return}await s(f({kind:"notification-batch",notifications:d}));}return {async enqueue(r){let s=await t.enqueue(r);return await a([{kind:"message_enqueued",lane:o.lane,message:s}]),s},async enqueueMany(r){let s=await t.enqueueMany(r);return await a(s.map(d=>({kind:"message_enqueued",lane:o.lane,message:d}))),s},enqueueIfAbsent:t.enqueueIfAbsent?async(r,s)=>{let d=await t.enqueueIfAbsent(r,s);return d&&await a([{kind:"message_enqueued",lane:o.lane,message:d}]),d}:void 0,lease(r){return t.lease(r)},ack(r,s){return t.ack(r,s)},nack(r,s,d){return t.nack(r,s,d)},peekActive(r){return t.peekActive(r)},peekDeadLetter(r){return t.peekDeadLetter(r)},async stage(r,s){return t.stage(r,s)},async commitStaged(r){let s=await t.commitStaged(r);if(s){let d=await kt(t,r);d&&await a([{kind:"message_enqueued",lane:o.lane,message:d}]);}return s},async discardStaged(r,s){return t.discardStaged(r,s)},peekStaged(r){return t.peekStaged(r)}}}function A(t){return t!==void 0?{status:"success",data:t}:{status:"success"}}function C(t){return {status:"fail",error:t}}function I(t){return {status:"error",error:t instanceof Error?t.message:String(t)}}var dt="sys_keys_board_state";function q(){return new Date().toISOString()}function Ct(t){let o=new TextEncoder().encode(t),a=Array.from(o,r=>String.fromCharCode(r)).join("");return btoa(a).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function lt(t){let o=t.replace(/-/g,"+").replace(/_/g,"/"),a=o+"=".repeat((4-o.length%4)%4),r=atob(a),s=Uint8Array.from(r,d=>d.charCodeAt(0));return new TextDecoder().decode(s)}function he(t){try{let o=JSON.parse(lt(t));return typeof o?.t=="string"?{taskName:o.t}:null}catch{return null}}function ct(t){return Ct(JSON.stringify(t))}function mt(t){try{let o=JSON.parse(lt(t));return typeof o?.cbk=="string"&&typeof o?.cid=="string"&&typeof o?.b=="string"&&typeof o?.d=="string"?o:null}catch{return null}}function wt(t){return j(t,o,()=>({_sources:{}}))}function ht(t,o){return h(t,o)}function Pt(t){return k(t)}function vt(t,o){return i(t,o)}function bt(t,o,a,r$1,s$1,d){return async f=>{let v=[],w=await a.cardStore.readCard(f.nodeId);if(!w)return "task-initiate-failure";let m=w.id,l=w.card_data??{},k=w.source_defs??[],h=k,B=await a.cardRuntimeStore.readRuntime(m),x=false,$=async()=>{x&&(await a.cardRuntimeStore.writeRuntime(m,B),x=false);},V=p=>p$1(B._sources[p]),E=(p,S)=>{B._sources[p]=p$1(S),x=true;},L=f.taskState?.executionCount??0;if(B._lastExecutionCount!==L&&(B._sources={},B._lastExecutionCount=L,x=true),f.update){let p=f.update.outputFile;if(p){let S=V(p);if(f.update.failure){let T=f.update.rqt??S.lastRequestedToken??S.queueRequestedToken;T&&E(p,s(S,T));}else {let T=f.update.rqt;if(!S.lastCompletedToken||T>S.lastCompletedToken){let N=typeof f.update.deliveryToken=="string"?f.update.deliveryToken:void 0,Z=N?await a.fetchedSourcesStore.commitSourceData(m,p,N):false;E(p,Z?r(S,T):s(S,T));}}await $();}}let z={};for(let p of k){if(!p.outputFile)continue;let S=await a.fetchedSourcesStore.readSourceData(m,p.outputFile);S!==null&&(z[p.bindTo]=S);}let M={};for(let[p,S]of Object.entries(f.state??{}))if(S!==null&&typeof S=="object"&&!Array.isArray(S)){let T=S[p];M[p]=T!==void 0?T:S;}else M[p]=S;let W={id:m,card_data:{...l},requires:M,source_defs:k,compute:w.compute};W._sourcesData=z,w.compute&&a$3.runSync(W,{sourcesData:z}),(s$1??(()=>{}))(m,W.computed_values??{});let Y=a$3.enrichSourcesSync(Array.isArray(w.source_defs)?w.source_defs:void 0,{card_data:w.card_data,requires:M}),Pe={...w,source_defs:Array.isArray(Y)?Y.map(p=>({...p,boardDir:typeof p.boardDir=="string"&&p.boardDir?p.boardDir:t.value})):Y},X=q(),me=f.update?void 0:X,ue=h.filter(p=>{let S=p.outputFile;if(typeof S!="string"||!S)return true;let T=V(S);me&&(T={...T,queueRequestedToken:me},E(S,T));let N=T.queueRequestedToken??T.lastRequestedToken??X;return q$2(T,N)==="dispatch"});if(await $(),ue.length>0){let p=false,S=X;for(let T of ue){let N=T.outputFile;if(typeof N!="string"||!N)continue;let Z=V(N),de=Z.queueRequestedToken??X;E(N,{...Z,lastRequestedToken:de}),S=de,p=true;}return p&&await $(),p&&(v.push({taskKind:"source-fetch",payload:{boardRef:a$1(t),enrichedCard:Pe,callbackToken:f.callbackToken,rqt:S}}),await a.executionRequestStore.appendEntries(o,v)),"task-initiated"}if(h.some(p=>{let S=p.outputFile;if(typeof S!="string"||!S)return false;let T=V(S),N=T.queueRequestedToken??T.lastRequestedToken??X;return q$2(T,N)==="in-flight"}))return "task-initiated";let ve=w.provides??[],H={};for(let{bindTo:p,ref:S}of ve)H[p]=a$3.resolve(W,S);return (d??(()=>{}))(H),r$1(f.nodeId,H),v.length>0&&await a.executionRequestStore.appendEntries(o,v),"task-initiated"}}function Xt(t$1,o,a$3={}){d(o.callbackTransport,"createAsyncBoardLiveCardsPublic");let r=o.callbackTransport,s=o.warn??(()=>{}),d$1=a$1(t$1),f$1=a$3.emitNotification??(n=>{if(!o.publishBoardChangeNotifications)return;let e=n.kind==="notification-batch"?n.notifications:[n];return o.publishBoardChangeNotifications(e)}),v$1=null,w$1=a$3.boardRuntimeStoreRef,m=a$3.scratchStoreRef,l=a$3.taskExecutorRef,k=a$3.chatHandlerFlow;function h(){if(!w$1)throw new Error(`Board at ${t$1.value} has no board runtime store configured. Pass boardRuntimeStoreRef at construction or init.`);return w$1}function B(n){if(n.length!==0)try{let e$1=e(n),c=f({kind:"notification-batch",notifications:e$1});return Promise.resolve(f$1(c)).catch(i=>{s(`[async-board-live-cards-public] emitNotification failed: ${i instanceof Error?i.message:String(i)}`);})}catch(e){s(`[async-board-live-cards-public] emitNotification failed: ${e instanceof Error?e.message:String(e)}`);return}}let x$1=()=>b$1(o.kvStorageForRef(h())),$=t$1.value,V=()=>b$2(a(()=>o.kvStorageForRef(h()),o.hashFn),"v1"),E=async()=>{let n=await x$1().readOutputsStoreRef();if(!n)throw new Error(`Board at ${t$1.value} has no outputs store configured.`);return Pt(o.kvStorageForRef(n))},L=async()=>{let n=await x$1().readCardStoreRef();if(!n)throw new Error(`Board at ${t$1.value} has no card store configured.`);let e=o.kvStorageForRef(n);return it(st(ot(e),o.hashFn),s)};async function z(){return !!(await V().readSnapshot($)).values[n]}async function M(){let n$1=await V().readSnapshot($);if(!n$1.values[n])throw new Error(`Board not initialized at ${t$1.value}`);return w(n$1.values)}async function W(n,e){let c=await V().commitSnapshot($,{schemaVersion:"v1",expectedVersion:e,deleteKeys:[],shallowMerge:v(n)});if(!c.ok)throw new Error(`Snapshot commit failed (version mismatch): expected=${e??"null"} current=${c.currentVersion??"null"}`)}let Y=()=>c(o.journalStorageForRef(h()));async function Pe(){return l??await x$1().readTaskExecutorRef()}function X(n){if(!n||typeof n!="object"||Array.isArray(n))return false;let e=n.__private;return !!e&&typeof e=="object"&&!Array.isArray(e)&&e.visible_controlplane_only===true}async function me(n){let e=await(await L()).readAllCards(),c=[...new Set(e.filter(R=>!X(R)).map(R=>R.id).filter(R=>typeof R=="string"&&R.length>0))].sort(),i=[...new Set(Object.keys(n).filter(R=>R&&R!==dt))].sort();return {card_ids:c,data_object_keys:i}}async function ue(){let n=await(await E()).readAllDataObjects();return {...n,[dt]:await me(n)}}async function j(n){await Y().appendEvent(n);}async function ve(){let n=await x$1().readFetchedSourcesStoreRef();if(!n)throw new Error(`Board at ${t$1.value} has no fetched sources store configured. Run: init --fetched-sources-store-ref <b64-ref>`);return n}async function H(){return o.blobStorageForRef(await ve())}async function p$1(){return ht(await H(),n=>o.resolveBlob(n))}async function S(n){let e=(await H()).keyRef?.(n);if(!e)throw new Error("configured fetched-sources store does not support keyRef");let c=await Promise.resolve(e);return a$1(c)}async function T(){let n=vt(o.kvStorageForRef(h()),async(u,g)=>{let P=u.payload,F=(P.enrichedCard??{}).id??P.cardId??"unknown";await j({type:"task-failed",taskName:F,error:g,timestamp:q()});}),e=wt(o.kvStorageForRef(h())),c=await H(),i=await p$1(),R=await L(),b=await E(),O=new Map,y=new Map,K=[],G=[],oe=[],se=new Map,ce=new Set,be={async readRuntime(u){return O.get(u)??await e.readRuntime(u)},async writeRuntime(u,g){O.set(u,g),Ie[u]=g;}},gt={async readSourceData(u,g){let P=`${u}/${g}`;return y.has(P)?y.get(P):await i.readSourceData(u,g)},ingestSourceDataStaged(u,g,P,D){return i.ingestSourceDataStaged(u,g,P,D)},async commitSourceData(u,g,P){let D=`${u}/.staged/${P}/${g}`,F=await c.read(D);if(F==null){let Q=await Promise.resolve(c.keyRef?.(D));Q&&(F=await o.resolveBlob(Q));}if(F==null)return false;let J=`${u}/${g}`,re=F.trim();try{y.set(J,JSON.parse(re));}catch{y.set(J,re);}return K.push({cardId:u,outputFile:g,deliveryToken:P}),true},async hasSource(u,g){let P=`${u}/${g}`;return y.has(P)||await i.hasSource(u,g)},async listSources(u){let g=await i.listSources(u),P=[...y.keys()].filter(D=>D.startsWith(`${u}/`)).map(D=>D.slice(`${u}/`.length));return [...new Set([...g,...P])]}},Ae=await M(),pt=q$1(Ae.graph),Ie={...Ae.runtimeByCardId},{events:yt,newCursor:xe}=await Y().readEntriesAfterCursor(Ae.lastDrainedJournalId),le=yt,fe=u$1(pt,{handlers:{"card-handler":bt(t$1,xe,{cardStore:R,cardRuntimeStore:be,fetchedSourcesStore:gt,executionRequestStore:n},(u,g)=>{le.push({type:"task-completed",taskName:u,data:g,timestamp:q()});},(u,g)=>{G.push({cardId:u,values:g});},u=>{oe.push(u);})},onNodeRemoved:u=>{se.delete(u),O.delete(u),delete Ie[u],ce.add(u);}});for(;le.length>0;){let u=le;le=[];for(let g of u)if(g.type==="task-restart"){let P=await R.readCard(g.taskName);P&&se.set(g.taskName,P);}fe.pushAll(u),await fe.waitForHandlers();}let Ee=fe.getState();await fe.dispose({wait:true}),await W({lastDrainedJournalId:xe,graph:p(Ee),runtimeByCardId:Ie},(await V().readSnapshot($)).version);for(let{cardId:u,values:g}of G)await b.writeComputedValues(u,g);for(let u of oe)await b.writeDataObjects(u);for(let[u,g]of O)await e.writeRuntime(u,g);for(let u of K)await i.commitSourceData(u.cardId,u.outputFile,u.deliveryToken);let Ne=t(d$1,Ee);await b.writeStatusSnapshot(Ne);let ie=[];for(let{cardId:u,values:g}of G)ie.push({kind:"computed_values",cardId:u,values:g});for(let u of oe)for(let[g,P]of Object.entries(u))ie.push({kind:"data_object",key:g,payload:P});for(let[u,g]of se)ie.push({kind:"card_refreshed",cardId:u,card:g});for(let u of ce)ie.push({kind:"card_removed",cardId:u});ie.push({kind:"status",status:Ne}),await B(ie);let te=await Pe();if(!te)return;let _e=o.supportsDirectSourceOutput?.(te)===true;await n.dispatchEntriesForJournalId(xe,async u=>{if(u.taskKind!=="source-fetch"){s(`[async-process-accumulated-events] unknown taskKind "${u.taskKind}" \u2014 skipping`);return}let g=u.payload,P=g.enrichedCard?.id??"unknown",D=g.enrichedCard?.source_defs??[];if(te.howToRun==="queue-storage"&&_e){try{let F=await x$1().readQueueStoreRef();if(!F)throw new Error(`Board at ${t$1.value} has no queue store configured. Run: init --queue-store-ref <b64-ref>`);let J=o.queueStorageForRef(F,"task-executor"),re=typeof te.extra?.boardId=="string"?te.extra.boardId:void 0,Q=[];for(let U of D){if(!U.outputFile)continue;let ge=o.genId(),pe=`${P}/.staged/${ge}/${U.outputFile}`,je=await Promise.resolve(c.keyRef?.(pe));if(!je)continue;let Ke={ref:a$1(je),deliveryToken:ge,outputFile:U.outputFile,cardId:P},St=ct({cbk:g.callbackToken,rg:t$1.value,br:a$1(t$1),cid:P,b:U.bindTo,d:U.outputFile,cs:void 0,rqt:g.rqt,dt:Ke.deliveryToken});Q.push({...re?{boardId:re}:{},ref:te,args:{source_def:U,base_ref:a$1(t$1),callback:r.createCallback(St),output:Ke}});}Q.length>0&&await J.enqueueMany(Q);}catch(F){await j({type:"task-failed",taskName:P,error:F instanceof Error?F.message:String(F),timestamp:q()});}return}for(let F of D){if(!F.outputFile)continue;let J;if(_e){let U=o.genId(),ge=`${P}/.staged/${U}/${F.outputFile}`,pe=await Promise.resolve(c.keyRef?.(ge));pe&&(J={ref:a$1(pe),deliveryToken:U,outputFile:F.outputFile,cardId:P});}let re=ct({cbk:g.callbackToken,rg:t$1.value,br:a$1(t$1),cid:P,b:F.bindTo,d:F.outputFile,cs:void 0,rqt:g.rqt,...J?{dt:J.deliveryToken}:{}}),Q=await o.dispatchExecution(te,{source_def:F,base_ref:a$1(t$1),callback:r.createCallback(re),...J?{output:J}:{}});Q.dispatched||await j({type:"task-failed",taskName:P,error:Q.error??"dispatch failed",timestamp:q()});}});}async function N(){try{let n=async()=>{let c=await M(),{events:i}=await Y().readEntriesAfterCursor(c.lastDrainedJournalId);i.length>0&&await de();},e=await rt(o.lock,T,n);return A({ran:e!==!1})}catch(n){return I(n)}}async function Z(){return v$1||(v$1=N().finally(()=>{v$1=null;}),v$1)}async function de(){let n=await x$1().readQueueStoreRef();if(!n)throw new Error(`Board at ${t$1.value} has no queue store configured. Run: init --queue-store-ref <b64-ref>`);let e=o.queueStorageForRef(n,"process-accumulated");e.enqueueIfAbsent?await e.enqueueIfAbsent({boardRef:a$1(t$1)},`process-accumulated:${a$1(t$1)}`):await e.enqueue({boardRef:a$1(t$1)}),await o.requestProcessAccumulated?.();}async function ft(){let n=await x$1().readQueueStoreRef();if(!n)throw new Error(`Board at ${t$1.value} has no queue store configured. Run: init --queue-store-ref <b64-ref>`);let e=o.queueStorageForRef(n,"process-accumulated");for(;;){let c=await e.lease({max:64,visibilityMs:1e3});if(c.length<=0)return;for(let i of c)await e.ack(i.id,i.leaseToken);if(c.length<64)return}}function ee(){de();}return {async init(n){try{let e=n.params?.cardStoreRef;if(!e)return C("init requires params.cardStoreRef");if(w$1=n.params?.boardRuntimeStoreRef,!w$1)return C("init requires params.boardRuntimeStoreRef");let c=n.params?.outputsStoreRef;if(!c)return C("init requires params.outputsStoreRef");let i=n.params?.queueStoreRef;if(!i)return C("init requires params.queueStoreRef");let R=n.params?.fetchedSourcesStoreRef;if(!R)return C("init requires params.fetchedSourcesStoreRef");m=n.params?.scratchStoreRef;let b=n.params?.chatStoreRef;if(!b)return C("init requires params.chatStoreRef");let O=n.params?.artifactsStoreRef;if(!O)return C("init requires params.artifactsStoreRef");await z()||await W({lastDrainedJournalId:"",graph:p(a$2(u)),runtimeByCardId:{}},null);let y=x$1();return await y.writeBoardRuntimeStoreRef(w$1),await y.writeCardStoreRef(e),await y.writeOutputsStoreRef(c),await y.writeQueueStoreRef(i),await y.writeFetchedSourcesStoreRef(R),await y.writeChatStoreRef(b),await y.writeArtifactsStoreRef(O),await(await E()).writeStatusSnapshot(t(d$1,q$1((await M()).graph))),A()}catch(e){return I(e)}},async status(n){try{let e=await E(),c=await e.readStatusSnapshot();return c||(c=t(d$1,q$1((await M()).graph)),await e.writeStatusSnapshot(c)),A(c)}catch(e){return I(e)}},async getCardStoreRef(n){try{let e=await x$1().readCardStoreRef();return e?A({storeRef:e}):C(`Board at ${t$1.value} has no card store configured`)}catch(e){return I(e)}},async getBoardRuntimeStoreRef(n){try{return A({storeRef:w$1??null})}catch(e){return I(e)}},async getOutputsStoreRef(n){try{let e=await x$1().readOutputsStoreRef();return e?A({storeRef:e}):C(`Board at ${t$1.value} has no outputs store configured`)}catch(e){return I(e)}},async getScratchStoreRef(n){try{return A({storeRef:m??null})}catch(e){return I(e)}},async getChatStoreRef(n){try{return A({storeRef:await x$1().readChatStoreRef()})}catch(e){return I(e)}},async getArtifactsStoreRef(n){try{return A({storeRef:await x$1().readArtifactsStoreRef()})}catch(e){return I(e)}},async getFetchedSourcesStoreRef(n){try{return A({storeRef:await x$1().readFetchedSourcesStoreRef()})}catch(e){return I(e)}},async getConfig(n){try{let e=n.params?.key;if(!e)return C("getConfig requires params.key");let c=x$1(),i;switch(e){case "task-executor":i=l??null;break;case "chat-handler-flow":i=k??null;break;case "board-runtime-store-ref":i=await c.readBoardRuntimeStoreRef();break;case "card-store-ref":i=await c.readCardStoreRef();break;case "outputs-store-ref":i=await c.readOutputsStoreRef();break;case "scratch-store-ref":i=m??null;break;case "chat-store-ref":i=await c.readChatStoreRef();break;case "artifacts-store-ref":i=await c.readArtifactsStoreRef();break;case "fetched-sources-store-ref":i=await c.readFetchedSourcesStoreRef();break;default:return C(`getConfig: unknown key "${e}"`)}return A({value:i})}catch(e){return I(e)}},async getOutputsDataObject(n){try{let e=n.params?.key;if(!e)return C("getOutputsDataObject requires params.key");let c=await ue();return A(c[e]??null)}catch(e){return I(e)}},async getAllOutputsDataObjects(n){try{return A(await ue())}catch(e){return I(e)}},async getOutputsComputedValues(n){try{let e=n.params?.key;return e?A(await(await E()).readComputedValues(e)):C("getOutputsComputedValues requires params.key")}catch(e){return I(e)}},async getAllOutputsComputedValues(n){try{return A(await(await E()).readAllComputedValues())}catch(e){return I(e)}},async getOutputsFetchedSources(n){try{let e=n.params?.key;if(!e)return C("getOutputsFetchedSources requires params.key");let c=await(await p$1()).listSources(e),i={};for(let R of c)i[R]=await S(`${e}/${R}`);return A(i)}catch(e){return I(e)}},async getAllOutputsFetchedSources(n){try{let e=await p$1(),c=await(await H()).listKeys(),i=new Set;for(let b of c){let O=b.indexOf("/");O>0&&!b.includes("/.staged/")&&i.add(b.slice(0,O));}let R={};for(let b of i){let O=await e.listSources(b);if(O.length!==0){R[b]={};for(let y of O)R[b][y]=await S(`${b}/${y}`);}}return A(R)}catch(e){return I(e)}},async buildSseOneShotPayload(n){try{let e=await(await L()).readAllCards(),c=await this.status({});if(c.status!=="success")return c;let i=await this.getAllOutputsDataObjects({});if(i.status!=="success")return i;let R=await this.getAllOutputsComputedValues({});if(R.status!=="success")return R;let b=R.data,O={};for(let y of e){let K=typeof y?.id=="string"?y.id:null;if(!K)continue;let G=y.card_data&&typeof y.card_data=="object"&&!Array.isArray(y.card_data)?y.card_data:{};O[K]={schema_version:"v1",card_id:K,card_data:{...G},computed_values:b[K]&&typeof b[K]=="object"?b[K]:{}};}return A({cardDefinitions:e,statusSnapshot:c.data,dataObjectsByToken:i.data,cardRuntimeById:O})}catch(e){return I(e)}},async addCardFiles(n){try{let e=n.params?.cardId;if(!e)return C("addCardFiles requires params.cardId");let i=await ut(await L(),{emitNotification:f$1}).appendFiles({params:{id:e},body:n.body});return i.status!=="success"?i:A({cardId:e,files_added:i.data.files_added,notified:!0})}catch(e){return I(e)}},async removeCard(n){try{let e=n.params?.id;if(!e)return C("removeCard requires params.id");try{await o.kvStorage("card-upsert").delete(e);}catch{}return await j({type:"task-removal",taskName:e,timestamp:q()}),ee(),A()}catch(e){return I(e)}},async retrigger(n){try{let e=n.params?.id;return e?(await j({type:"task-restart",taskName:e,timestamp:q()}),ee(),A()):C("retrigger requires params.id")}catch(e){return I(e)}},async processAccumulatedEvents(n){return await ft(),Z()},async upsertCard(n){try{let e=n.params?.cardId,c=n.params?.all,i=!!n.params?.restart;if(!e&&!c)return C("upsertCard requires --card-id <id> or --all");let R=await L(),b=c?(await R.readAllCards()).map(y=>y.id):[e];for(let y of b)if(!await R.readCard(y))return C(`Card "${y}" not found in board at ${t$1.value}`);let O=o.kvStorage("card-upsert");for(let y of b){let K=await R.readCard(y);if(!K)continue;let G=x(K),oe=o.hashFn(G),se=await O.read(y),ce=se?.taskConfigHash!==oe;if(!(!ce&&!i)){if(ce){let be=se?.blobRef??await R.readCardKey(y)??y;await j({type:"task-upsert",taskName:y,taskConfig:G,timestamp:q()}),await O.write(y,{blobRef:be,taskConfigHash:oe,updatedAt:q()});}i&&await j({type:"task-restart",taskName:y,timestamp:q()});}}return ee(),A()}catch(e){return I(e)}},async taskFailed(n){try{let e=n.params?.token;if(!e)return C("taskFailed requires params.token");let c=n.params?.error??"unknown error",i=he(e);return i?(await j({type:"task-failed",taskName:i.taskName,error:c,timestamp:q()}),ee(),A()):C("Invalid callback token")}catch(e){return I(e)}},async taskProgress(n){try{let e=n.params?.token;if(!e)return C("taskProgress requires params.token");let c=(n.body??{}).update??{},i=he(e);return i?(await j({type:"task-progress",taskName:i.taskName,update:c,timestamp:q()}),ee(),A()):C("Invalid callback token")}catch(e){return I(e)}},async sourceDataFetched(n){try{let e=n.params?.token,c=n.params?.ref;if(!e)return C("sourceDataFetched requires params.token");if(!c)return C("sourceDataFetched requires params.ref");let i=mt(e);if(!i)return C("Invalid source token");let R=await p$1(),b$1=i.dt||o.genId();i.dt||await R.ingestSourceDataStaged(i.cid,i.d,b(c),b$1);let O=he(i.cbk);return O?(await j({type:"task-progress",taskName:O.taskName,update:{bindTo:i.b,outputFile:i.d,fetchedAt:q(),deliveryToken:b$1,sourceChecksum:i.cs,rqt:i.rqt},timestamp:q()}),ee(),A()):C("Invalid callback token embedded in source token")}catch(e){return I(e)}},async sourceDataFetchFailure(n){try{let e=n.params?.token,c=n.params?.reason??"unknown";if(!e)return C("sourceDataFetchFailure requires params.token");let i=mt(e);if(!i)return C("Invalid source token");let R=he(i.cbk);return R?(await j({type:"task-progress",taskName:R.taskName,update:{bindTo:i.b,outputFile:i.d,failure:!0,reason:c,sourceChecksum:i.cs,rqt:i.rqt},timestamp:q()}),ee(),A()):C("Invalid callback token embedded in source token")}catch(e){return I(e)}}}}
|
|
2
|
-
export{rt as a,ot as b,st as c,it as d,Ot as e,Ft as f,ut as g,_t as h,Xt as i};//# sourceMappingURL=chunk-HFI2NAZJ.js.map
|
|
3
|
-
//# sourceMappingURL=chunk-HFI2NAZJ.js.map
|
package/lib/chunk-LDVJPFIW.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import {a,b}from'./chunk-JB4Q2W7I.js';import {a as a$3}from'./chunk-XYN5D3GL.js';import {a as a$6,c as c$2}from'./chunk-O5UYCGIN.js';import {p,j,k,l,c as c$1,d as d$1,m,n,e as e$1,a as a$8,b as b$3,o}from'./chunk-CZ6ZFWFT.js';import {a as a$4,d as d$2,b as b$2,c as c$3}from'./chunk-FOFGEABN.js';import {a as a$c}from'./chunk-RKKSVOP2.js';import {a as a$2}from'./chunk-NTICU4OK.js';import {a as a$9,c as c$4}from'./chunk-O7NOHKVR.js';import {a as a$a,b as b$4}from'./chunk-ZJ5M5COT.js';import {i,d,c,b as b$1,g,h}from'./chunk-HFI2NAZJ.js';import {a as a$b}from'./chunk-6MD6FVE3.js';import {y,z,l as l$1}from'./chunk-AHW6EMUO.js';import {a as a$5}from'./chunk-7QNEV5S3.js';import {a as a$7}from'./chunk-BJGK5FNL.js';import {a as a$1}from'./chunk-NIBLKYXN.js';import {e}from'./chunk-UGB7PC4P.js';function ie(R){let{apiBasePath:w,json:b,readJsonBody:$,bootstrapBoard:A,createMcpControlplaneToolRegistry:x,retriggerCard:D,applyCardAction:N,resolveChatHandlerTarget:E,sendCardFileDownloadResponse:q}=R;async function j(T,S,W){let H=T.method||"GET",J=W,f=J.pathname;try{if(H==="POST"&&f===`${w}/mcp-actions`){await A();let p=Date.now(),y=new Date(p).toISOString(),O=await $(T),l=typeof O.tool=="string"?O.tool.trim():"",B=O.args&&typeof O.args=="object"&&!Array.isArray(O.args)?O.args:{};if(!l)return b(S,400,{error:"tool is required"}),!0;let k=a$9(B,"card_id");if(!k)return b(S,400,{error:"MCP action requires card_id"}),!0;if(l==="retrigger-card"||l==="retrigger"){await D(k);let F=Date.now();return b(S,200,{status:"success",data:{ok:!0,cardId:k,actionType:l,requestReceivedAt:y,requestReceivedAtMs:p,responseSentAt:new Date(F).toISOString(),responseSentAtMs:F,responseStatus:200}}),!0}let P=c$4(B,"payload");if(l==="chat-send"&&!await E(k)){let F=Date.now();return b(S,409,{error:`chat handler is not configured for card: ${k}`,requestReceivedAt:y,requestReceivedAtMs:p,responseSentAt:new Date(F).toISOString(),responseSentAtMs:F,responseStatus:409}),!0}if(l==="chat-send"){let F=typeof P["turn-id"]=="string"?P["turn-id"]:typeof P.turnId=="string"?P.turnId:typeof P.turn=="string"?P.turn:"";if(!F||!String(F).trim()){let L=Date.now();return b(S,400,{error:`chat-send requires a non-empty 'turn-id' (or 'turnId'/'turn') in payload for card: ${k}`,requestReceivedAt:y,requestReceivedAtMs:p,responseSentAt:new Date(L).toISOString(),responseSentAtMs:L,responseStatus:400}),!0}}await N(k,l,P);let I=Date.now();return b(S,200,{status:"success",data:{ok:!0,cardId:k,actionType:l,requestReceivedAt:y,requestReceivedAtMs:p,responseSentAt:new Date(I).toISOString(),responseSentAtMs:I,responseStatus:200}}),!0}if(H==="POST"&&f===`${w}/mcp-controlplane`){await A();let p=await $(T),y=typeof p.tool=="string"?p.tool.trim():"",O=p.args&&typeof p.args=="object"&&!Array.isArray(p.args)?p.args:{};if(!y)return b(S,400,{error:"tool is required"}),!0;try{let l=await a$a(y,O,x());if(l&&typeof l=="object"&&!Array.isArray(l)){let B=l;if(B.status==="fail")return b(S,400,{error:b$4(l,"Request failed")}),!0;if(B.status==="error")return b(S,500,{error:b$4(l,"Internal error")}),!0}b(S,200,l);}catch(l){let B=typeof l?.statusCode=="number"?Number(l.statusCode):500,k=l instanceof Error?l.message:String(l);b(S,B,{error:k});}return !0}let g=f.match(new RegExp(`^${c$3(w)}/cards/([^/]+)/retrigger$`));if(H==="POST"&&g){await A();let p=decodeURIComponent(g[1]);return await D(p),b(S,200,{ok:!0}),!0}let d=f.match(new RegExp(`^${c$3(w)}/cards/([^/]+)/actions$`));if(H==="POST"&&d){await A();let p=decodeURIComponent(d[1]),y=Date.now(),O=new Date(y).toISOString(),l=await $(T),B=l?.actionType;if(B==="chat-send"&&!await E(p)){let P=Date.now();return b(S,409,{error:`chat handler is not configured for card: ${p}`,requestReceivedAt:O,requestReceivedAtMs:y,responseSentAt:new Date(P).toISOString(),responseSentAtMs:P,responseStatus:409}),!0}if(B==="chat-send"){let P=l?.payload??{},I=typeof P["turn-id"]=="string"?P["turn-id"]:typeof P.turnId=="string"?P.turnId:typeof P.turn=="string"?P.turn:"";if(!I||!String(I).trim()){let F=Date.now();return b(S,400,{error:`chat-send requires a non-empty 'turn-id' (or 'turnId'/'turn') in payload for card: ${p}`,requestReceivedAt:O,requestReceivedAtMs:y,responseSentAt:new Date(F).toISOString(),responseSentAtMs:F,responseStatus:400}),!0}}await N(p,B,l?.payload);let k=Date.now();return b(S,200,{ok:!0,requestReceivedAt:O,requestReceivedAtMs:y,responseSentAt:new Date(k).toISOString(),responseSentAtMs:k,responseStatus:200}),!0}let v=f.match(new RegExp(`^${c$3(w)}/cards/([^/]+)/files/(\\d+)$`));if(H==="GET"&&v){let p=decodeURIComponent(v[1]),y=parseInt(v[2],10),O=J.searchParams.get("sn");return await q(S,p,y,O),!0}return !1}catch(g){let d=g?.statusCode||500;return b(S,d,{error:String(g?.message||g)}),true}}return {handleRuntimeApi:j}}var ze=3e4;function Ke(R){let w=R.socket?.remoteAddress??"";return w==="127.0.0.1"||w==="::1"||w==="::ffff:127.0.0.1"}function ce(R){let{apiBasePath:w,emitNotifications:b,readJsonBody:$,json:A}=R,x=`${w}/notify-q`;async function D(N,E,q){if(q.pathname!==x)return false;if((N.method??"").toUpperCase()!=="POST")return A(E,405,{status:"error",error:"Method not allowed"}),true;if(!Ke(N))return A(E,403,{status:"error",error:"Forbidden"}),true;let j;try{j=await $(N);}catch{return A(E,400,{status:"error",error:"Invalid JSON body"}),true}if(!j||typeof j!="object"||!Array.isArray(j.notifications))return A(E,400,{status:"error",error:"body.notifications must be an array"}),true;let T=j.notifications,{accepted:S,rejected:W}=b$3(T,Date.now(),ze);return S.length>0&&b(S),A(E,200,{status:"success",data:{accepted:S.length,rejected:W}}),true}return {handleNotifyRoute:D}}var de={"Access-Control-Allow-Origin":"*","Access-Control-Allow-Headers":"content-type,x-file-name","Access-Control-Allow-Methods":"GET,POST,PATCH,OPTIONS"},ue="chat-handler-flow-queue",ot="__probe__echo__probe__";function jr(R){let w=String(R.apiBasePath||"/api/board").replace(/\/$/,""),b$3={...de,...R.corsHeaders||{}},$=R.queueLaneTuning??{},A=R.boardId||"",x=R.logger||{info:console.log,warn:console.warn,error:console.error},D=R.invocationAdapter,N=R.chatFlowRunner||null,E=R.notificationTransport||null,q=R.serverUrl||null,j$1=R.executionExtra||{},T=R.onSseClientConnected,S=R.onSseClientDisconnected,W=R.onChannelSubscribed,H=R.onChannelUnsubscribed,J=a({buildChatOneShotBatch:async(t,e)=>await tt.buildSseOneShotBatch({params:{cardId:t},body:{receiving:e}}),onSseClientDisconnected:S}),f=a({buildChatOneShotBatch:async()=>({status:"success",data:{kind:"notification-batch",category:"batch",notifications:[]}})});function g$1(t){function e(a){return {...a,queueStorageForRef(u,C){return a$7(a.queueStorageForRef(u,C),{lane:C,emitNotification:i$1})}}}function r(a){return {...a,queueStorageForRef(u,C){return h(a.queueStorageForRef(u,C),{lane:C,emitNotification:i$1})}}}function n(a){return {async get(u){return a.get(u)},async set(u){return a.set(u)},async del(u){return a.del(u)},async patch(u){return a.patch(u)},async appendFiles(u){return a.appendFiles(u)}}}function o(a){return {async get(u){return await a.get(u)},async set(u){return await a.set(u)},async del(u){return await a.del(u)},async patch(u){return await a.patch(u)},async appendFiles(u){return await a.appendFiles(u)}}}let s=null;function i$1(a){if(a.kind==="notification-batch"){V(a.notifications,s??void 0);return}V([a],s??void 0);}let c$2=a$4(t.boardAdapter)?r(t.boardAdapter):e(t.boardAdapter),M=t.nonCoreAdapter??(!a$4(c$2)&&l$2(c$2)?c$2:null),h$1=a$4(c$2)?i(t.baseRef,c$2,{boardRuntimeStoreRef:t.boardRuntimeStoreRef,scratchStoreRef:t.scratchStoreRef,taskExecutorRef:t.taskExecutorRef,chatHandlerFlow:t.chatHandlerFlow,emitNotification:i$1}):y(t.baseRef,c$2,{boardRuntimeStoreRef:t.boardRuntimeStoreRef,scratchStoreRef:t.scratchStoreRef,taskExecutorRef:t.taskExecutorRef,chatHandlerFlow:t.chatHandlerFlow,emitNotification:i$1}),_=t.nonCore??(M?z(t.baseRef,M,{boardRuntimeStoreRef:t.boardRuntimeStoreRef,taskExecutorRef:t.taskExecutorRef}):null),Ue=c$2.chatStorageForRef(t.chatStoreRef),dt,We=a$4(c$2)?(()=>{let a=d(c(b$1(c$2.kvStorageForRef(t.cardStoreRef)),c$2.hashFn),x.warn),u=g(a,{emitNotification:i$1}),C=o(u);return dt={get(m){return C.get(m)},set(m){return C.set(m)}},C})():(()=>{let a=c$2.kvStorageForRef(t.cardStoreRef),C=a$5(l$1({readIndex:()=>a.read("_index"),writeIndex:m=>a.write("_index",m),readCard:m=>a.read(m),writeCard:(m,ft)=>(a.write(m,ft),m),removeCard:m=>{a.delete(m);},cardExists:m=>a.read(m)!==null,defaultCardKey:m=>m},x.warn),{emitNotification:i$1});return dt=C,n(C)})(),lt;if(a$4(c$2)){let a=c$2.blobStorageForRef(t.artifactsStoreRef);lt={async putBytes(u,C){if(a.writeBytes){await a.writeBytes(u,C);return}let m=JSON.stringify({__kind:"bytes-array",data:[...C]});await a.write(u,m);},async getBytes(u){if(a.readBytes){let m=await a.readBytes(u);if(m!==null)return m}let C=await a.read(u);if(C===null)return null;try{let m=JSON.parse(C);if(m&&m.__kind==="bytes-array"&&Array.isArray(m.data))return new Uint8Array(m.data)}catch{}return new TextEncoder().encode(C)},async listKeys(u){return await a.listKeys(u)}};}else {let a=c$2.blobStorageForRef(t.artifactsStoreRef),u=a$6(a);lt={putBytes(C,m,ft){u.putBytes(C,m,ft);},getBytes(C){return u.getBytes(C)},listKeys(C){return u.list(C).map(m=>m.key)}};}let Je={async init(a){return h$1.init(a)},async status(a){return h$1.status(a)},async getConfig(a){return h$1.getConfig(a)},async getAllOutputsDataObjects(a){return h$1.getAllOutputsDataObjects(a)},async getAllOutputsComputedValues(a){return h$1.getAllOutputsComputedValues(a)},async getOutputsFetchedSources(a){return h$1.getOutputsFetchedSources(a)},async buildSseOneShotPayload(a){return h$1.buildSseOneShotPayload(a)},async upsertCard(a){return h$1.upsertCard(a)},async removeCard(a){return h$1.removeCard(a)},async sourceDataFetched(a){return h$1.sourceDataFetched(a)},async sourceDataFetchFailure(a){return h$1.sourceDataFetchFailure(a)}};return s={label:t.label,board:h$1,nonCore:_,publicCardStore:dt,boardOps:Je,cardStoreOps:We,get filesArtifacts(){return lt},get chatStorage(){return Ue},boardAdapter:c$2,boardRuntimeStoreRef:t.boardRuntimeStoreRef,cardStoreRef:t.cardStoreRef,outputsStoreRef:t.outputsStoreRef,artifactsStoreRef:t.artifactsStoreRef,fetchedSourcesStoreRef:t.fetchedSourcesStoreRef,queueStoreRef:t.queueStoreRef,chatStoreRef:t.chatStoreRef,scratchStoreRef:t.scratchStoreRef,notifyRef:t.notifyRef,taskExecutorRef:t.taskExecutorRef,chatHandlerRef:t.chatHandlerRef,chatHandlerFlow:t.chatHandlerFlow,inferenceAdapterRef:t.inferenceAdapterRef,notification:c$1(),notificationTeardown:null,initialized:false,cardsBootstrapped:false},s}let d$3=R.boards.map(g$1),v=new Map;function p$1(t){return v.get(t)??0}function y$1(t){return t.queueStoreRef}function O(t,e){if(a$4(t.boardAdapter)){let n=t.boardAdapter.queueStorageForRef(y$1(t),e);return a$b(n)}let r=t.boardAdapter.queueStorageForRef(y$1(t),e);return a$c(r)}function l$2(t){let e=t;return typeof e.invokeExecutor=="function"&&typeof e.validateSchema=="function"}function B(t){let e=d$3[p$1(t)];return {files:e?e.filesArtifacts:null}}function k$1(){return c$2()}function P(t){return String(t||"").replace(/[^a-zA-Z0-9_-]/g,"_")||"unknown-card"}function I(t){return "cardId"in t&&typeof t.cardId=="string"?z$1(t.cardId)??void 0:d$3[0]??void 0}function F(t){for(let e of t){let r=I(e);if(r)return r}return d$3[0]??void 0}function L(t,e$2={}){if(!t||t.length===0)return;let r=e(t),n={kind:"notification-batch",category:"batch",notifications:r},o=e$2.ctx??F(r);if(e$2.appendState!==false&&o&&e$1(o.notification,n),e$2.broadcastSse!==false){let s=r.filter(c=>c.kind==="message_enqueued"),i=r.filter(c=>c.kind!=="message_enqueued");i.length>0&&J.broadcastNotificationBatch(i),s.length>0&&f.broadcastNotificationBatch(s);}if(!(e$2.mirrorExternal===false||!o?.boardAdapter.publishBoardChangeNotifications))try{let s=r.filter(i=>i.category==="board-output"||i.category==="card-store");s.length>0&&o.boardAdapter.publishBoardChangeNotifications(s);}catch{}}function V(t,e){L(t,{ctx:e,appendState:true,broadcastSse:true,mirrorExternal:true});}async function le(t){if(!t||t.notificationTeardown||!E||!t.notifyRef)return;let e=await E.subscribe(t.notifyRef,r=>{let n=a$8(r);L(n,{ctx:t,appendState:true,broadcastSse:true,mirrorExternal:false});});t.notificationTeardown=e;}async function fe(t){if(!t||t.initialized)return;let e={boardRuntimeStoreRef:t.boardRuntimeStoreRef,cardStoreRef:t.cardStoreRef,outputsStoreRef:t.outputsStoreRef,fetchedSourcesStoreRef:t.fetchedSourcesStoreRef,artifactsStoreRef:t.artifactsStoreRef,queueStoreRef:t.queueStoreRef,chatStoreRef:t.chatStoreRef,scratchStoreRef:t.scratchStoreRef},r={};t.taskExecutorRef&&(r["task-executor-ref"]=t.taskExecutorRef),t.chatHandlerFlow!==void 0&&(r["chat-handler-flow"]=t.chatHandlerFlow);let n=await t.boardOps.init({params:e,body:r});if(n.status!=="success")throw Object.assign(new Error(n.error||`init failed for ${t.label}`),{statusCode:500});if(await le(t),!t.chatHandlerFlow&&t.chatHandlerRef&&D.describe)try{let o=await D.describe(t.chatHandlerRef);o&&o.kind!=="chat-handler"?x.warn(`[init] chat-handler describe returned kind="${o.kind}", expected "chat-handler" for ${t.label}`):o&&x.info(`[init] chat-handler validated: ${o.name} (protocol ${o.protocolVersion}) for ${t.label}`);}catch(o){x.warn(`[init] chat-handler describe failed for ${t.label}: ${o?.message||String(o)}`);}t.initialized=true;}async function ct(t){let e=[],r=await t.boardOps.status({});r.status==="success"&&r.data!=null&&d$1(r.data)&&e.push({kind:"status",status:r.data});let n=await t.boardOps.getAllOutputsDataObjects({});if(n.status==="success"&&n.data!=null)for(let[s,i]of Object.entries(n.data))s&&e.push({kind:"data_object",key:s,payload:i});let o=await t.boardOps.getAllOutputsComputedValues({});if(o.status==="success"&&o.data!=null)for(let[s,i]of Object.entries(o.data))s&&i&&typeof i=="object"&&!Array.isArray(i)&&e.push({kind:"computed_values",cardId:s,values:i});e.length>0&&L(e,{ctx:t,appendState:true,broadcastSse:true,mirrorExternal:false});}async function gt(t,e){if(!t||t.cardsBootstrapped)return;let r=await t.cardStoreOps.get({}),n=r.status==="success"&&Array.isArray(r.data?.cards)?r.data.cards:[];for(let o of n)typeof o.id=="string"&&(v.set(o.id,e),await t.boardOps.upsertCard({params:{cardId:o.id}}));t.cardsBootstrapped=true;}async function G(){for(let t of d$3)await fe(t);}async function at(){await G();for(let t=0;t<d$3.length;t++)await ct(d$3[t]),await gt(d$3[t],t),await ct(d$3[t]);}async function Rt(t=false){t||await G();for(let e of d$3){let r=await e.board.processAccumulatedEvents({});if(r.status!=="success")return r}return {status:"success"}}function z$1(t){return d$3[p$1(t)]??null}async function X(t){let e=z$1(t);if(!e)return null;let r=await e.cardStoreOps.get({params:{id:t}});if(r.status!=="success")return null;let n=Array.isArray(r.data?.cards)?r.data.cards:[];return n.length>0?n[0]:null}async function pe(){let t=async r=>{if(!r)return [];let n=await r.cardStoreOps.get({});return n.status!=="success"||!Array.isArray(n.data?.cards)?[]:n.data.cards},e=[];for(let r of d$3)e.push(...await t(r));return e}function yt(){return d$3[0]??null}function me(t){return z$1(t)??yt()}function U(t){let e=me(t);if(!e)throw Object.assign(new Error(`Board context is unavailable for chat operations: ${t}`),{statusCode:404});return e.chatStorage}async function ge(t){return await U(t).isProcessing(t)}async function Y(t,e){let r=await tt.setProcessing({params:{cardId:t},body:{active:e}});if(r.status!=="success")throw Object.assign(new Error(r.error||`Failed to set chat processing for card: ${t}`),{statusCode:500})}let tt=a$1({append(t,e,r,n,o){return U(t).append(t,e,r,n,o)},readAll(t){return U(t).readAll(t)},readAfter(t,e){return U(t).readAfter(t,e)},clear(t){return U(t).clear(t)},setProcessing(t,e){return U(t).setProcessing(t,e)},isProcessing(t){return U(t).isProcessing(t)},getConfig(t){return U(t).getConfig(t)},setConfig(t,e){return U(t).setConfig(t,e)}},{emitNotification(t){if(t.kind==="notification-batch"){V(t.notifications);return}V([t]);}}),ht=p({boardContexts:d$3,cardOwnerIndex:v,cardContextForCard:t=>z$1(t),readStatusSnapshot:()=>be(),readDataObjectsByToken:()=>Ce(),readCardRuntimeArtifacts:()=>Se(),readCardFromStore:t=>X(t),readCardDefinitions:()=>pe(),processAccumulatedLaneInternal:t=>Rt(t),reportSourceFetched:(t,e)=>Bt(t,{ref:e}),reportSourceFetchFailure:(t,e)=>kt(t,{reason:e}),uploadCardFile:(t,e,r,n,o)=>St(t,e,r,n,o),chatStorePublic:tt,serverUrl:q,apiBasePath:w}),Re=ht.mcpCardStoreFacade,st=ht.createMcpFacade,ye=j({boardId:A,bootstrapBoard:()=>at(),sseHub:J,onChannelSubscribed:W,onChannelUnsubscribed:H,getMcpFacade:()=>st(),getMcpCardStoreFacade:()=>Re()});function he(t){return m(t)}function we(){return n(st())}function wt(){return o({boardId:A,uploadCardFile:St,getMcpFacade:()=>st(),controlplane:ye})}let it=k({boardId:A,boardContexts:d$3,readChatRecords:t=>Fe(t),getChatProcessing:t=>ge(t)}),be=it.readStatusSnapshot,Se=it.readCardRuntimeArtifacts,Ce=it.readDataObjectsByToken,ut=it.buildPublishedRuntimePayload;async function bt(t,e,r){let n=r?.syncBoard!==false,o=r?.restartOnlyIfChanged===true,s=z$1(t);if(!s)throw Object.assign(new Error(`Card not found: ${t}`),{statusCode:404});let i=await X(t);if(!i)throw Object.assign(new Error(`Card not found: ${t}`),{statusCode:404});let c=o?JSON.stringify(i):null,M=e(i)||i;if(o&&JSON.stringify(M)===c)return;let h=await s.cardStoreOps.set({body:M});if(h.status!=="success")throw Object.assign(new Error(h.error||`Failed to persist card: ${t}`),{statusCode:500});if(n){let _=await s.boardOps.upsertCard({params:{cardId:t,restart:true}});if(_.status!=="success")throw Object.assign(new Error(_.error||`Failed to upsert card: ${t}`),{statusCode:500})}}async function Ae(t,e){await bt(t,e,{syncBoard:true});}async function Be(t,e){await bt(t,e,{syncBoard:false});}async function ke(t){let e=z$1(t);if(!e)throw Object.assign(new Error(`Card not found: ${t}`),{statusCode:404});if(!await X(t))throw Object.assign(new Error(`Card not found: ${t}`),{statusCode:404});let n=await e.boardOps.upsertCard({params:{cardId:t,restart:true}});if(n.status!=="success")throw Object.assign(new Error(n.error||`Failed to retrigger card: ${t}`),{statusCode:500})}async function Pe(t){let e=await tt.clear({params:{cardId:t}});if(e.status!=="success")throw Object.assign(new Error(e.error||`Failed to clear chat records for card: ${t}`),{statusCode:500});try{await Y(t,!1);}catch{}}async function Oe(t,e,r,n,o=""){let s=typeof r=="string"?r.trim():"",i=await tt.append({params:{cardId:t},body:{role:e||"system",text:s,files:n,turn:o}});if(i.status!=="success")throw Object.assign(new Error(i.error||`Failed to append chat record for card: ${t}`),{statusCode:500});return String(i.data?.id||"")}async function Fe(t){return await U(t).readAll(t)}let St=l({safeCardId:t=>P(t),artifactsStores:t=>B(t),cardFileMetadataStore:()=>k$1(),readCardFromStore:t=>X(t),updateCardLocalOnly:(t,e)=>Be(t,e),writeChatRecord:(t,e,r,n,o)=>Oe(t,e,r,n,o)}).uploadCardFile;async function Ct(t){let e=z$1(t);if(!e)return null;let r=await e.boardOps.getConfig({params:{key:"chat-handler-flow"}}),o=(r.status==="success"?r.data?.value:null)??e.chatHandlerFlow??null,s=e.chatHandlerRef;return o==null&&(!s||typeof s!="object")?null:{ctx:e,handlerFlow:o,handlerRef:s}}function ve(t){let e=typeof t=="string"?t.trim():"";if(e.length<ot.length*2||!e.startsWith(ot)||!e.endsWith(ot))return null;let r=e.slice(ot.length,e.length-ot.length).trim(),n=/^([A-Za-z0-9_-]+)__(.*)$/s.exec(r);return n?{assistant:n[1].trim().toLowerCase(),text:n[2].trim()}:{assistant:"echo",text:r}}async function xe(t,e,r=false,n="",o=""){try{let s=await Ct(t);if(!s){try{await Y(t,!1);}catch{}return}let{ctx:i,handlerFlow:c,handlerRef:M}=s;if(!r)try{await Y(t,!0);}catch{}let h={boardId:A,cardId:String(t),lastChatEntryId:e,...n?{turnId:n}:{},...typeof o=="string"&&o.trim()?{probe:o.trim()}:{},...j$1,...q?{serverUrl:q}:{}},_=c!=null?{meta:"chat-handler-flow",howToRun:"built-in",whatToRun:{kind:"built-in",value:ue}}:M;a$4(i.boardAdapter)?await O(i,"chat-agent").enqueueRequest({boardId:A,ref:_,args:c!=null?{...h,__chatHandlerFlow:c}:h}):O(i,"chat-agent").enqueueRequest({boardId:A,ref:_,args:c!=null?{...h,__chatHandlerFlow:c}:h}),await Promise.resolve(i.boardAdapter.requestProcessAccumulated?.());}catch(s){try{await Y(t,!1);}catch{}x.warn(`[chat-handler] queue failed for card "${t}": ${s instanceof Error?s.message:String(s)}`);}}async function Te(t,e,r){if(e.howToRun==="built-in"&&b$2(e)===ue){let n=N,o=r.__chatHandlerFlow,s={...r};return delete s.__chatHandlerFlow,n?n.run(o,s,{boardId:A,cardId:String(s.cardId||""),label:t.label,logger:x,serverUrl:q,executionExtra:j$1}):{dispatched:false,error:"chat-handler-flow configured but no chatFlowRunner was provided"}}return D.invoke(e,r)}async function Ne(t,e=false){e||await G();let r=typeof t.args?.cardId=="string"?t.args.cardId:"",n=r?z$1(r):yt();if(!n)throw new Error(r?`Board context is unavailable for chat-agent request: ${r}`:"Board context is unavailable for chat-agent request");let o=await Te(n,t.ref,t.args);if(!o.dispatched){if(r)try{await Y(r,!1);}catch{}throw new Error(o.error||`chat-agent dispatch failed for card "${r||"unknown"}"`)}}async function Ee(t,e,r){if(e==="chat-send"){let o=r&&typeof r["turn-id"]=="string"?r["turn-id"]:r&&typeof r.turnId=="string"?r.turnId:r&&typeof r.turn=="string"?r.turn:"";if(r&&"files"in r&&r.files!==void 0&&r.files!==null)throw Object.assign(new Error('chat-send does not accept a "files" parameter; upload attachments via manage.add-chat-attachment first'),{statusCode:400});let s=wt(),i=ve(r?.text),c=i?i.text:r?.text,M=await a$a("manage.add-chat-entry-and-any-attachments",{board_id:A,card_id:t,role:"user",text:c,turn_id:o,files:[]},s);if(M?.status!=="success")throw new Error(b$4(M,`chat-send append failed for card ${t}`));let h=M?.data?.id;if(typeof h!="string"||!h)throw new Error(`chat-send did not return an append id for card ${t}`);let _=await a$a("setstate.chat-processing-started",{board_id:A,card_id:t},s);if(_?.status!=="success")throw new Error(b$4(_,`chat-send processing update failed for card ${t}`));xe(t,h,true,o,i?.assistant||"");return}await Ae(t,o=>{let s=new Date().toISOString(),i=o.card_data&&typeof o.card_data=="object"?o.card_data:{};if(o.card_data=i,e==="file-upload"){let c=k$1().normalizeIncoming(r?.files,s);return c.length>0&&k$1().merge(i,c),o}if(e==="action"){let c=r&&typeof r.buttonId=="string"?r.buttonId:"";if(!c)return o;i.lastAction={buttonId:c,at:s},i.lastActionText=`${c} @ ${s}`;}return o});}function et(t,e,r){let n=JSON.stringify(r),o=typeof Buffer<"u"?Buffer.byteLength(n):new TextEncoder().encode(n).length;t.writeHead(e,{...b$3,"Content-Type":"application/json; charset=utf-8","Content-Length":o}),t.end(n);}async function At(t,e,r){let n=await X(t);if(!n)throw Object.assign(new Error("Card not found"),{statusCode:404});let o=k$1().resolve(n.card_data,e,r);if(!o.ok&&o.reason==="stale_reference")throw Object.assign(new Error("File reference is stale. Refresh and try again."),{statusCode:409});if(!o.ok)throw Object.assign(new Error("File not found"),{statusCode:404});let s=o.file,i=P(t),c=B(t),M=String(s.stored_name||""),h=`${i}/${M}`,_=c.files?await c.files.getBytes(h):null;if(!_)throw Object.assign(new Error("File not found"),{statusCode:404});return {fileRecord:s,bytes:_}}async function je(t,e,r,n){let{fileRecord:o,bytes:s}=await At(e,r,n),i=String(o.name||o.stored_name||"download.bin"),c=String(o.mime_type||"application/octet-stream");t.writeHead(200,{"Content-Type":c,"Content-Disposition":`attachment; filename="${i}"`,"Content-Length":s.length}),t.end(s);}function Me(t){let e=String(t||"").toLowerCase();return e.startsWith("text/")||e.includes("json")||e.includes("xml")||e.includes("javascript")||e.includes("typescript")||e.includes("yaml")||e.includes("csv")}function _e(t,e,r){let n=t.split(/\r?\n/);return (e==="head"?n.slice(0,r):n.slice(-r)).join(`
|
|
2
|
-
`)}async function rt(t){let e=[];for await(let n of t)e.push(n);let r=typeof Buffer<"u"?Buffer.concat(e).toString("utf-8").trim():new TextDecoder().decode(d$2(e)).trim();return r?JSON.parse(r):{}}async function Bt(t,e){let r=typeof e.ref=="string"?e.ref.trim():"";if(!r)return {status:"fail",error:"board-worker success callback requires body.ref"};let n=d$3[0];return n?n.boardOps.sourceDataFetched({params:{token:t,ref:r}}):{status:"fail",error:"no board context"}}async function kt(t,e){let r=typeof e.reason=="string"&&e.reason.trim()?e.reason:"unknown",n=d$3[0];return n?n.boardOps.sourceDataFetchFailure({params:{token:t,reason:r}}):{status:"fail",error:"no board context"}}let De=b({sseHub:J,queueSseHub:f,corsHeaders:b$3,json:et,buildPublishedRuntimePayload:()=>ut(),onSseClientConnected:T,onChannelSubscribed:W,onChannelUnsubscribed:H,apiBasePath:w,readJsonBody:t=>rt(t),initBoardAndSetup:()=>G(),bootstrapBoard:()=>at(),boardContexts:d$3,publishPersistedStateSnapshot:t=>ct(t),upsertCardsFromSource:(t,e)=>gt(t,e)}).handleWatchersRoutes,qe=a$2({apiBasePath:w,json:et,readJsonBody:t=>rt(t),bootstrapBoard:()=>at(),createMcpFacade:()=>st(),createMcpToolRegistry:t=>he(t),resolveCardFileDownloadPayload:(t,e,r)=>At(t,e,r),isLikelyTextMimeType:t=>Me(t),sliceTextByLines:(t,e,r)=>_e(t,e,r)}).handleAgentfaceApi,Ie=a$3({apiBasePath:w,json:et,readJsonBody:t=>rt(t),initBoardAndSetup:()=>G(),createMcpWebhookToolRegistry:()=>we()}).handleWebhooksApi,$e=ie({apiBasePath:w,json:et,readJsonBody:t=>rt(t),bootstrapBoard:()=>at(),createMcpControlplaneToolRegistry:()=>wt(),retriggerCard:t=>ke(t),applyCardAction:(t,e,r)=>Ee(t,e,r),resolveChatHandlerTarget:t=>Ct(t),sendCardFileDownloadResponse:(t,e,r,n)=>je(t,e,r,n)}).handleRuntimeApi,He=ce({apiBasePath:w,emitNotifications:t=>V(t),readJsonBody:t=>rt(t),json:(t,e,r)=>et(t,e,r)}).handleNotifyRoute;async function Le(t,e,r){return !!(await qe(t,e,r)||await Ie(t,e,r)||await De(t,e,r)||await He(t,e,r)||await $e(t,e,r))}return {get apiBasePath(){return w},get corsHeaders(){return b$3},get queueLaneTuning(){return $},handleRuntimeApi:Le,emitNotification(t){if(t.kind==="notification-batch"){V(t.notifications);return}V([t]);},buildPublishedRuntimePayload:ut,__drainProcessAccumulatedLane:Rt,handleChatAgentRequest:Ne,clearChatRecords:Pe,reportSourceFetched(t,e){return Bt(t,{ref:e})},reportSourceFetchFailure(t,e){return kt(t,{reason:e})},get cardStore(){return d$3[0]?.publicCardStore??{get(){return Promise.resolve({status:"fail",error:"no board context"})},set(){return Promise.resolve({status:"fail",error:"no board context"})}}}}}function Mr(R){let w=String(R.apiBasePath||"/api/boards").replace(/\/$/,""),b={...de,...R.corsHeaders||{}},$=R.serverMetaStore,A=R.boardRuntimeFactory,x=new Map,D="boards-config.json";function N(){let f=$.getText(D);if(!f)return {boards:[{id:"default",label:"Default Board"}]};try{return JSON.parse(f)}catch{return {boards:[{id:"default",label:"Default Board"}]}}}function E(f){$.putText(D,JSON.stringify(f,null,2));}function q(f){let g=String(f||"").replace(/[^a-zA-Z0-9_-]/g,"_").replace(/^_+|_+$/g,"");return g.length>0&&g.length<=64?g:null}function j(f){if(x.has(f))return x.get(f);let d=N().boards.find(p=>p.id===f)||{},v=A(f,d);return x.set(f,v),v}function T(f,g,d){let v=JSON.stringify(d),p=typeof Buffer<"u"?Buffer.byteLength(v):new TextEncoder().encode(v).length;f.writeHead(g,{...b,"Content-Type":"application/json; charset=utf-8","Content-Length":p}),f.end(v);}async function S(f,g,d){let v=f.method||"GET",p=d.pathname;if(v==="GET"&&p===w)return T(g,200,{ok:true,boards:N().boards}),true;if(v==="POST"&&p===w){let y=[];for await(let F of f)y.push(F);let O=typeof Buffer<"u"?Buffer.concat(y).toString("utf-8").trim():new TextDecoder().decode(d$2(y)).trim(),l={};try{l=O?JSON.parse(O):{};}catch{l={};}let B=q(l.id);if(!B)return T(g,400,{error:"board id must be 1-64 alphanumeric/dash/underscore characters"}),true;let k=N();if(k.boards.some(F=>F.id===B))return T(g,409,{error:`Board "${B}" is already registered`}),true;let P=typeof l.label=="string"&&l.label.trim()?l.label.trim():B,I={id:B,label:P};for(let[F,L]of Object.entries(l))F==="id"||F==="label"||L!=null&&(I[F]=L);return k.boards.push(I),E(k),T(g,200,{ok:true,board:I}),true}return false}async function W(f,g,d){let p=d.pathname.match(new RegExp(`^${c$3(w)}/([^/]+)(/|$)`));if(!p)return false;let y=q(decodeURIComponent(p[1]));return y?N().boards.some(B=>B.id===y)?!!await j(y).handleRuntimeApi(f,g,d):(T(g,404,{error:`Board "${y}" not registered. POST ${w} with {id} to register it first.`}),true):(T(g,400,{error:"Invalid board id"}),true)}async function H(f,g,d){return !!(await S(f,g,d)||await W(f,g,d))}function J(f){if(!N().boards.some(d=>d.id===f))throw Object.assign(new Error(`Board "${f}" not registered`),{statusCode:404});return {service:j(f)}}return {get apiBasePath(){return w},get corsHeaders(){return b},handleApi:H,requireBoardService:J}}export{jr as a,Mr as b};//# sourceMappingURL=chunk-LDVJPFIW.js.map
|
|
3
|
-
//# sourceMappingURL=chunk-LDVJPFIW.js.map
|
package/lib/chunk-NMOUBZXX.cjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
'use strict';var chunkBQUQTOPB_cjs=require('./chunk-BQUQTOPB.cjs'),chunkLPXVVMQT_cjs=require('./chunk-LPXVVMQT.cjs'),chunkVQCIOKJV_cjs=require('./chunk-VQCIOKJV.cjs'),chunkGHUW6P4G_cjs=require('./chunk-GHUW6P4G.cjs');function v(a){if(!a||typeof a!="object")return false;let e=a;return typeof e.kind=="string"&&e.kind.length>0}function J(a){if(!a||typeof a!="object")return [];let e=a;return e.kind==="notification-batch"?Array.isArray(e.notifications)?e.notifications.filter(v):[]:v(a)?[a]:[]}function X(a,e,i){let u=0;return {accepted:a.filter(R=>{if(!v(R))return u++,false;let _=R;return typeof _.sentAtMs=="number"&&e-_.sentAtMs>i?(u++,false):true}),rejected:u}}function Q(){return {status:null,computedValues:{},dataObjects:{},cards:{}}}function z(a){if(!a||typeof a!="object")return false;let e=a.summary;return !e||typeof e!="object"?false:Number(e.card_count||0)>0}function W(a){if(!a||typeof a!="object")return false;let e=a;return e.kind==="notification-batch"&&Array.isArray(e.notifications)}function V(a,e){if(e.kind==="status"){z(e.status)&&(a.status=e.status);return}if(e.kind==="computed_values"){a.computedValues[e.cardId]=e.values;return}if(e.kind==="data_object"){a.dataObjects[e.key]=e.payload;return}if(e.kind==="card_refreshed"){a.cards[e.cardId]=e.card;return}e.kind==="card_removed"&&(delete a.cards[e.cardId],delete a.computedValues[e.cardId]);}function Y(a,e){if(W(e)){for(let i of e.notifications)v(i)&&V(a,i);return}v(e)&&V(a,e);}function j(a,e){if(a?.status==="success")return Object.prototype.hasOwnProperty.call(a,"data")?a.data:void 0;throw a?.status==="fail"||a?.status==="error"?Object.assign(new Error(a.error||`${e} failed`),{statusCode:400}):Object.assign(new Error(`${e} returned an unexpected response`),{statusCode:500})}async function N(a,e){return j(await a,e)}function q(a){let e=chunkLPXVVMQT_cjs.a(a,"key");if(!e)throw Object.assign(new Error("MCP tool requires key"),{statusCode:400});let i=e.split(".");if(!(i.length>=2&&i.every(f=>/^[A-Za-z_][A-Za-z0-9_]*$/.test(f))))throw Object.assign(new Error("MCP tool requires a card private key with at least two identifier segments (e.g. chat.foundry_thread_id)"),{statusCode:400});return e}function E(a,e){let i=a.__private;for(let u of e.split(".")){if(!i||typeof i!="object"||Array.isArray(i)||!Object.prototype.hasOwnProperty.call(i,u))return {exists:false,value:null};i=i[u];}return {exists:true,value:i}}function oe(a){let{boardId:e,bootstrapBoard:i,sseHub:u,onChannelSubscribed:f,onChannelUnsubscribed:R,getMcpFacade:_,getMcpCardStoreFacade:r}=a;function g(s){let d=chunkLPXVVMQT_cjs.a(s,"board_id");if(!d)throw Object.assign(new Error("MCP tool requires board_id"),{statusCode:400});if(d!==e)throw Object.assign(new Error(`Unknown board_id: ${d}`),{statusCode:400})}function b(s){let d=chunkLPXVVMQT_cjs.a(s,"client_id");if(!d)throw Object.assign(new Error("MCP tool requires client_id"),{statusCode:400});return d}function y(s){g(s);let d=b(s),n=chunkLPXVVMQT_cjs.a(s,"channel_name"),t=chunkLPXVVMQT_cjs.a(s,"card_id")||void 0;if(!n)throw Object.assign(new Error("MCP tool requires channel_name"),{statusCode:400});return {clientId:d,channelName:n,...t?{cardId:t}:{}}}function c(s){g(s);let d=chunkLPXVVMQT_cjs.a(s,"card_id");if(!d)throw Object.assign(new Error("MCP tool requires card_id"),{statusCode:400});return {cardId:d}}async function C(s){await i();let{cardId:d}=c(s),n=b(s);if(!await u.subscribeChat(n,d))throw Object.assign(new Error(`SSE client not connected: ${n}`),{statusCode:404});return {status:"success",data:{boardId:e,cardId:d,clientId:n,subscribed:true}}}async function m(s){await i();let{cardId:d}=c(s),n=b(s);if(!u.unsubscribeChat(n,d))throw Object.assign(new Error(`SSE client not connected: ${n}`),{statusCode:404});return {status:"success",data:{boardId:e,cardId:d,clientId:n,subscribed:false}}}async function w(s,d){await i();let{clientId:n,channelName:t,cardId:o}=y(s);if(!u.has(n))throw Object.assign(new Error(`SSE client not connected: ${n}`),{statusCode:404});return d?(u.subscribeChannel(n,t,o),f?.(n,t,o?{cardId:o}:{})):(u.unsubscribeChannel(n,t,o),R?.(n,t,o?{cardId:o}:{})),{status:"success",data:{boardId:e,clientId:n,channelName:t,subscribed:d,...o?{cardId:o}:{}}}}async function S(s,d){let{cardId:n}=c(s);return await _().setChatProcessing({cardId:n,active:d}),{status:"success",data:{boardId:e,cardId:n,active:d}}}async function l(s){let{cardId:d}=c(s),n=await _().getChatProcessing({cardId:d});return {status:"success",data:{boardId:e,cardId:d,active:n.active}}}async function h(s){let{cardId:d}=c(s),n=q(s);if(!Object.prototype.hasOwnProperty.call(s,"value"))throw Object.assign(new Error("MCP tool requires value"),{statusCode:400});if(n.split(".").includes("visible_controlplane_only")){let t=await N(r().get({params:{id:d}}),"cardStore.get"),o=Array.isArray(t.cards)&&t.cards.length>0&&typeof t.cards[0]=="object"&&!Array.isArray(t.cards[0])?t.cards[0]:null,k=o?E(o,"visible_controlplane_only").value:void 0;if(s.value!==k)throw Object.assign(new Error("MCP tool cannot change the reserved private flag visible_controlplane_only"),{statusCode:403});return {status:"success",data:{boardId:e,cardId:d,key:n}}}return j(await r().patch({params:{id:d,path:`__private.${n}`},body:{value:s.value}}),"cardStore.patch"),{status:"success",data:{boardId:e,cardId:d,key:n}}}async function I(s){let{cardId:d}=c(s),n=q(s),t=await N(r().get({params:{id:d}}),"cardStore.get"),o=Array.isArray(t.cards)&&t.cards.length>0&&t.cards[0]&&typeof t.cards[0]=="object"&&!Array.isArray(t.cards[0])?t.cards[0]:null;if(!o)throw Object.assign(new Error(`Card "${d}" not found`),{statusCode:404});let k=E(o,n);return {status:"success",data:{boardId:e,cardId:d,key:n,exists:k.exists,value:k.value}}}return {requireCardArgs:c,subscribeChat:C,unsubscribeChat:m,watchChannel:w,setChatProcessing:S,getChatProcessing:l,setCardMeta:h,getCardMeta:I}}function ie(a){let{boardId:e,boardContexts:i,readChatRecords:u,getChatProcessing:f}=a;function R(c){if(c.length===0)return null;if(c.length===1)return c[0];let C=[],m=["completed","eligible","pending","blocked","unresolved","failed","in_progress","orphan_cards"],w={};for(let l of m)w[l]=0;for(let l of c){let h=l,I=Array.isArray(h.cards)?h.cards:[];C.push(...I);for(let s of m)w[s]+=Number(h?.summary?.[s]||0);}let S=c[0];return {...S,cards:C,summary:{...S.summary||{},card_count:C.length,...w}}}async function _(){let c=[];for(let C of i)try{let m=await C.boardOps.buildSseOneShotPayload({});m.status==="success"&&m.data&&c.push(m.data);}catch{}return c}async function r(){let C=(await _()).map(m=>m.statusSnapshot).filter(Boolean);if(C.length===0){let m=i.map(w=>w.notification.status).filter(Boolean);return R(m)}return R(C)}async function g(){let c={},C=await _();for(let m of C)Object.assign(c,m.cardRuntimeById||{});if(Object.keys(c).length>0)return c;for(let m of i)for(let[w,S]of Object.entries(m.notification.computedValues)){let l=m.notification.cards[w];c[w]={schema_version:"v1",card_id:w,card_data:l?.card_data??{},computed_values:S??{}};}return c}async function b(){let c={},C=await _();for(let m of C)Object.assign(c,m.dataObjectsByToken||{});if(Object.keys(c).length===0)for(let m of i)Object.assign(c,m.notification.dataObjects||{});return c}async function y(){let c=await _(),C=c.flatMap(l=>Array.isArray(l.cardDefinitions)?l.cardDefinitions:[]),m={},w={};for(let l of c)Object.assign(m,l.dataObjectsByToken||{}),Object.assign(w,l.cardRuntimeById||{});let S={};for(let l of C){if(!l?.id)continue;let h=l.id;try{let I=await u(h),s=await f(h);(I.length>0||s)&&(S[h]={messages:I.map(d=>({role:String(d.role||"system"),text:String(d.text||""),files:Array.isArray(d.files)?d.files:[]})),receiving:!1,processing:s});}catch{}}return {boardId:e,cardDefinitions:C,statusSnapshot:await r(),dataObjectsByToken:m,cardRuntimeById:w,cardChatsByCardId:S}}return {readStatusSnapshot:r,readCardRuntimeArtifacts:g,readDataObjectsByToken:b,buildPublishedRuntimePayload:y}}function K(a){let e=String(a||"").trim();if(!e)return "upload.bin";let i=Math.max(e.lastIndexOf("/"),e.lastIndexOf("\\"));return (i>=0?e.slice(i+1):e)||"upload.bin"}function ce(a){let{safeCardId:e,artifactsStores:i,cardFileMetadataStore:u,readCardFromStore:f,updateCardLocalOnly:R,writeChatRecord:_}=a;async function r(y){let c=[];try{let C=await f(y);if(!C)return c;let m=u().read(C.card_data&&typeof C.card_data=="object"?C.card_data:null);for(let w of m)c.push(String(w.stored_name??""));}catch{}return c}async function g(y,c,C,m){let w=e(y),S=i(y),l=K(c),h=await r(y),s=`${String(h.length+1).padStart(3,"0")}-${l}`.slice(-36);if(!S.files)throw Object.assign(new Error(`artifactsStoreRef is not configured for card uploads: ${y}`),{statusCode:500});return await S.files.putBytes(`${w}/${s}`,new Uint8Array(m),C||"application/octet-stream"),{name:l,stored_name:s,size:m.length,mime_type:C||"application/octet-stream",uploaded_at:new Date().toISOString()}}async function b(y,c,C,m,w){if(!m.length)throw Object.assign(new Error("Empty upload body"),{statusCode:400});let S=w?.inChat===true,l=await g(y,c,C,m),h=null;if(await R(y,I=>{let s=new Date().toISOString(),d=I.card_data&&typeof I.card_data=="object"?I.card_data:{};I.card_data=d;let n=u().normalizeIncoming([{name:l.name,stored_name:l.stored_name,size:l.size,mime_type:l.mime_type,uploaded_at:l.uploaded_at||s,chat:S}],s);return h=u().merge(d,n).findIndex(o=>o.stored_name===l.stored_name),I}),S&&w?.suppressChatRecordWrite!==true){let I=typeof h=="number"&&h>=0?` #${h}`:"";await _(y,"system",`file uploaded: ${l.name} as ${l.stored_name}${I}`,[],w?.turnId??"");}return {ok:true,file:{...l,...typeof h=="number"&&h>=0?{file_idx:h}:{},chat:S},...typeof h=="number"&&h>=0?{file_idx:h}:{}}}return {uploadCardFile:b,readCardStoredFileNames:r}}function pe(a){return {"discover.source-kinds":()=>a.discoverSourceKinds(),"inspect.board-runtime-status":()=>a.inspectBoardRuntimeStatus(),"inspect.card-definition-and-runtime":e=>a.inspectCardDefinitionAndRuntime({cardId:chunkLPXVVMQT_cjs.a(e,"card_id")}),"inspect.chat-messages-on-cards":e=>{let i=chunkLPXVVMQT_cjs.b(e,"tail_turns"),u=chunkLPXVVMQT_cjs.b(e,"tail"),f=chunkLPXVVMQT_cjs.a(e,"turn_id"),R=e.all_turns===true,_=chunkLPXVVMQT_cjs.a(e,"tail_turns_before_id");return a.inspectChatMessagesOnCards({cardId:chunkLPXVVMQT_cjs.a(e,"card_id"),...i!==void 0?{lastUserTurns:i}:{},...u!==void 0?{tail:u}:{},...f?{turnId:f}:{},...R?{allTurns:true}:{},..._?{tailTurnsBeforeId:_}:{}})},"inspect.file-contents":e=>a.inspectFileContents({cardId:chunkLPXVVMQT_cjs.a(e,"card_id"),fileIdx:Number(chunkLPXVVMQT_cjs.b(e,"file_idx"))}),"preflight.validate-candidate-card-definition":e=>a.preflightValidateCandidateCardDefinition({candidateCardContent:chunkLPXVVMQT_cjs.d(e,"candidate_card_content","candidate_card_content")}),"preflight.materialize-candidate-card":e=>a.preflightMaterializeCandidateCard({candidateCardContent:chunkLPXVVMQT_cjs.d(e,"candidate_card_content","candidate_card_content"),mockRequires:chunkLPXVVMQT_cjs.d(e,"mock_requires","mock_requires"),mockFetchedSources:chunkLPXVVMQT_cjs.d(e,"mock_fetched_sources","mock_fetched_sources")}),"preflight.probe-single-source-in-candidate-card":e=>a.preflightProbeSingleSourceInCandidateCard({candidateCardContent:chunkLPXVVMQT_cjs.d(e,"candidate_card_content","candidate_card_content"),mockProjections:chunkLPXVVMQT_cjs.c(e,"mock_projections"),sourceIdx:chunkLPXVVMQT_cjs.e(e,"source_idx","source_idx")}),"preflight.run-single-source-in-candidate-card":e=>a.preflightRunSingleSourceInCandidateCard({candidateCardContent:chunkLPXVVMQT_cjs.d(e,"candidate_card_content","candidate_card_content"),mockProjections:chunkLPXVVMQT_cjs.c(e,"mock_projections"),sourceIdx:chunkLPXVVMQT_cjs.e(e,"source_idx","source_idx")}),"preflight.run-single-source-in-live-card":e=>a.preflightRunSingleSourceInLiveCard({cardId:chunkLPXVVMQT_cjs.a(e,"card_id"),sourceIdx:chunkLPXVVMQT_cjs.e(e,"source_idx","source_idx"),mockRequires:chunkLPXVVMQT_cjs.d(e,"mock_requires","mock_requires")}),"preflight.run-one-cycle-with-candidate-card":e=>a.preflightRunOneCycleWithCandidateCard({candidateCardContent:chunkLPXVVMQT_cjs.d(e,"candidate_card_content","candidate_card_content"),mockRequires:chunkLPXVVMQT_cjs.c(e,"mock_requires")}),"manage.read-card":e=>a.manageReadCard({cardId:chunkLPXVVMQT_cjs.a(e,"card_id")}),"stage-ai-response-and-any-attachments":e=>{let i=chunkLPXVVMQT_cjs.a(e,"turn_id");if(!i)throw Object.assign(new Error("stage-ai-response-and-any-attachments requires a non-empty turn_id"),{statusCode:400});return a.manageAddChatEntryAndAnyAttachments({cardId:chunkLPXVVMQT_cjs.a(e,"card_id"),role:"assistant",...typeof e.text=="string"?{text:e.text}:{},...i?{turn:i}:{},...Array.isArray(e.files)?{files:e.files}:{}})},"stage-ai-failure-message":e=>{let i=chunkLPXVVMQT_cjs.a(e,"turn_id"),u=chunkLPXVVMQT_cjs.a(e,"failure");if(!i)throw Object.assign(new Error("stage-ai-failure-message requires a non-empty turn_id"),{statusCode:400});if(!u)throw Object.assign(new Error("stage-ai-failure-message requires a non-empty failure"),{statusCode:400});return a.manageAddChatEntryAndAnyAttachments({cardId:chunkLPXVVMQT_cjs.a(e,"card_id"),role:"system",text:u,turn:i})},"manage.upsert-card":e=>a.manageUpsertCard({cardId:chunkLPXVVMQT_cjs.a(e,"card_id"),candidateCardContent:chunkLPXVVMQT_cjs.c(e,"candidate_card_content")}),"manage.remove-card":e=>a.manageRemoveCard({cardId:chunkLPXVVMQT_cjs.a(e,"card_id")})}}function me(a){return {"webhook.process-accumulated":()=>a.webhookProcessAccumulated(),"webhook.source-fetch-done":e=>a.webhookSourceFetchDone({token:chunkLPXVVMQT_cjs.a(e,"token"),ref:chunkLPXVVMQT_cjs.a(e,"ref")}),"webhook.source-fetch-failed":e=>a.webhookSourceFetchFailed({token:chunkLPXVVMQT_cjs.a(e,"token"),reason:chunkLPXVVMQT_cjs.a(e,"reason")})}}function fe(a){let{boardId:e,uploadCardFile:i,getMcpFacade:u,controlplane:f}=a;function R(r,g){let b=chunkLPXVVMQT_cjs.a(r,"board_id");if(!b)throw Object.assign(new Error(`${g} requires board_id`),{statusCode:400});if(b!==e)throw Object.assign(new Error(`Unknown board_id: ${b}`),{statusCode:400})}function _(r,g){let{cardId:b}=f.requireCardArgs(r),y=chunkLPXVVMQT_cjs.a(r,"turn_id");return R(r,g),u().manageAddChatAttachment({cardId:b,role:chunkLPXVVMQT_cjs.a(r,"role")||"user",...y?{turn:y}:{},files:[{file_name:chunkLPXVVMQT_cjs.a(r,"file_name"),content_type:chunkLPXVVMQT_cjs.a(r,"content_type")||"application/octet-stream",...typeof r.text=="string"?{text:r.text}:{},...typeof r.base64=="string"?{base64:r.base64}:{},...Array.isArray(r.bytes)?{bytes:r.bytes}:{}}]})}return {"list-runtime-cards":r=>(R(r,"list-runtime-cards"),u().listRuntimeCards()),"sse.subscribe-chat":r=>f.subscribeChat(r),"sse.unsubscribe-chat":r=>f.unsubscribeChat(r),"sse.watch-channel":r=>f.watchChannel(r,true),"sse.unwatch-channel":r=>f.watchChannel(r,false),"getstate.is-chat-processing":r=>f.getChatProcessing(r),"setstate.chat-processing-started":r=>f.setChatProcessing(r,true),"setstate.chat-processing-done":r=>f.setChatProcessing(r,false),"getstate.card-private":r=>f.getCardMeta(r),"setstate.card-private":r=>f.setCardMeta(r),"manage.upload-card-file":r=>{let g=chunkLPXVVMQT_cjs.a(r,"card_id"),b=chunkLPXVVMQT_cjs.a(r,"file_name"),y=chunkLPXVVMQT_cjs.a(r,"content_type")||"application/octet-stream",c=chunkLPXVVMQT_cjs.f(r);if(R(r,"manage.upload-card-file"),!g)throw Object.assign(new Error("manage.upload-card-file requires card_id"),{statusCode:400});if(!b)throw Object.assign(new Error("manage.upload-card-file requires file_name"),{statusCode:400});if(!c)throw Object.assign(new Error("manage.upload-card-file requires args.bytes, args.text, or args.base64"),{statusCode:400});return i(g,b,y,c,{inChat:false})},"manage.add-chat-attachment":r=>_(r,"manage.add-chat-attachment"),"manage.add-chat-attachement":r=>_(r,"manage.add-chat-attachement"),"manage.add-chat-entry-and-any-attachments":r=>{let{cardId:g}=f.requireCardArgs(r),b=chunkLPXVVMQT_cjs.a(r,"role")||"user",y=chunkLPXVVMQT_cjs.a(r,"turn_id");return R(r,"manage.add-chat-entry-and-any-attachments"),u().manageAddChatEntryAndAnyAttachments({cardId:g,role:b,...typeof r.text=="string"?{text:r.text}:{},...y?{turn:y}:{},...Array.isArray(r.files)?{files:r.files}:{}})},"manage.patch-card":r=>{let{cardId:g}=f.requireCardArgs(r);return R(r,"manage.patch-card"),u().managePatchCard({cardId:g,patch:chunkLPXVVMQT_cjs.c(r,"patch")},{allowControlplaneOnlyCards:true})},"manage.upsert-card":r=>{let{cardId:g}=f.requireCardArgs(r);return R(r,"manage.upsert-card"),u().manageUpsertCard({cardId:g,candidateCardContent:chunkLPXVVMQT_cjs.c(r,"candidate_card_content")},{allowControlplaneOnlyCards:true})},"manage.remove-card":r=>{let{cardId:g}=f.requireCardArgs(r);return R(r,"manage.remove-card"),u().manageRemoveCard({cardId:g},{allowControlplaneOnlyCards:true})},"manage.admin-read-card":async r=>{let{cardId:g}=f.requireCardArgs(r);return {status:"success",data:{cards:await u().adminReadCard({cardId:g})}}},"manage.admin-upsert-card":r=>{let g=chunkLPXVVMQT_cjs.a(r,"board_id"),b=chunkLPXVVMQT_cjs.a(r,"card_id");if(!g)throw Object.assign(new Error("manage.admin-upsert-card requires board_id"),{statusCode:400});if(!b)throw Object.assign(new Error("manage.admin-upsert-card requires card_id"),{statusCode:400});if(g!==e)throw Object.assign(new Error(`Unknown board_id: ${g}`),{statusCode:400});return u().adminUpsertCard({cardId:b,candidateCardContent:chunkLPXVVMQT_cjs.c(r,"candidate_card_content")})}}}function ye(a){let{boardContexts:e,cardOwnerIndex:i,cardContextForCard:u,readStatusSnapshot:f,readDataObjectsByToken:R,readCardRuntimeArtifacts:_,readCardFromStore:r,readCardDefinitions:g,processAccumulatedLaneInternal:b,reportSourceFetched:y,reportSourceFetchFailure:c,uploadCardFile:C,chatStorePublic:m,serverUrl:w,apiBasePath:S}=a;function l(){return e[0]??null}function h(){return {async status(){let n=await f();return n==null?{status:"fail",error:"Board status is unavailable"}:{status:"success",data:n}},async getOutputsDataObject(n){let t=n?.params?.key;return t?{status:"success",data:(await R())[t]}:{status:"fail",error:"getOutputsDataObject requires params.key"}},async getOutputsComputedValues(n){let t=n?.params?.key;return t?{status:"success",data:(await _())[t]?.computed_values}:{status:"fail",error:"getOutputsComputedValues requires params.key"}},async getOutputsFetchedSources(n){let t=n?.params?.key;if(!t)return {status:"fail",error:"getOutputsFetchedSources requires params.key"};let o=u(t)??l();return o?o.boardOps.getOutputsFetchedSources({params:{key:t}}):{status:"fail",error:"Board context is unavailable"}},async removeCard(n){let t=n?.params?.id;if(!t)return {status:"fail",error:"removeCard requires params.id"};let o=u(t)??l();return o?o.boardOps.removeCard({params:{id:t}}):{status:"fail",error:"Board context is unavailable"}},async upsertCard(n){let t=n?.params?.cardId;if(!t)return {status:"fail",error:"upsertCard requires params.cardId"};let o=u(t)??l();if(!o)return {status:"fail",error:"Board context is unavailable"};let k=await o.boardOps.upsertCard({params:{cardId:t,restart:n.params.restart===true}});if(k.status!=="success")return k;if(chunkBQUQTOPB_cjs.a(o.boardAdapter)){let P=await b(true);if(P.status!=="success")return P}return k}}}function I(){let n=()=>{let t=l();if(!t?.nonCore)throw new Error("Board non-core adapter is not configured for MCP preflight/discovery tools");return t.nonCore};return {describeTaskExecutorCapabilities(t){return n().describeTaskExecutorCapabilities(t)},validateCardPreflight(t){return n().validateCardPreflight(t)},evalCardCompute(t){return n().evalCardCompute(t)},probeSourcePreflight(t){return n().probeSourcePreflight(t)},runSourcePreflight(t){return n().runSourcePreflight(t)},simulateCardCycle(t){return n().simulateCardCycle(t)}}}function s(){return {async get(n){let t=typeof n.params?.id=="string"?n.params.id:void 0;if(t){let o=await r(t);return o?{status:"success",data:{cards:[o]}}:{status:"success",data:{cards:[]}}}return {status:"success",data:{cards:await g()}}},async set(n){let t=n.body;if(t==null)return {status:"fail",error:"set requires a body (card object or array of cards)"};let o=Array.isArray(t)?t:[t];for(let k of o){let P=k,A=typeof P.id=="string"?P.id:"";if(!A)return {status:"fail",error:"each card must have a string `id` field"};let D=i.get(A)??0,L=e[D]??l();if(!L)return {status:"fail",error:"Board context is unavailable"};let T=await L.cardStoreOps.set({body:P});if(T.status!=="success")return T;i.set(A,D);}return {status:"success",data:{count:o.length}}},async del(n){let t=[n.params?.id,...n.body?.ids??[]].filter(o=>typeof o=="string"&&!!o);if(t.length===0)return {status:"fail",error:"del requires body.ids (string[]) or params.id"};for(let o of t){let k=u(o)??l();if(!k)return {status:"fail",error:"Board context is unavailable"};let P=await k.cardStoreOps.del({params:{id:o}});if(P.status!=="success")return P;i.delete(o);}return {status:"success",data:{count:t.length}}},async patch(n){let t=typeof n.params?.id=="string"?n.params.id:void 0,o=typeof n.params?.path=="string"?n.params.path:void 0;if(!t||!o)return {status:"fail",error:"patch requires params.id and params.path"};let k=u(t)??l();return k?k.cardStoreOps.patch(n):{status:"fail",error:"Board context is unavailable"}},async appendFiles(n){let t=typeof n.params?.id=="string"?n.params.id:void 0;if(!t)return {status:"fail",error:"appendFiles requires params.id"};let o=u(t)??l();return o?o.cardStoreOps.appendFiles(n):{status:"fail",error:"Board context is unavailable"}}}}function d(){return chunkGHUW6P4G_cjs.a({board:h(),nonCore:I(),cardStore:s(),chatStore:m,processAccumulated:()=>b(true),sourceFetchDone:({token:n,ref:t})=>y(n,t),sourceFetchFailed:({token:n,reason:t})=>c(n,t),uploadCardFile({cardId:n,fileName:t,contentType:o,bytes:k,suppressChatRecordWrite:P}){return C(n,t,o,k,{inChat:true,...P===true?{suppressChatRecordWrite:true}:{}})},buildFileDownloadUrl({cardId:n,fileIdx:t,storedName:o}){let k=`${w||""}${S}/cards/${encodeURIComponent(n)}/files/${t}`;return o?`${k}?sn=${encodeURIComponent(o)}`:k},readFetchedSourceJsonByRef({cardId:n,ref:t}){let o=u(n)??l();if(!o||chunkBQUQTOPB_cjs.a(o.boardAdapter))return null;let A=o.boardAdapter.resolveBlob(chunkVQCIOKJV_cjs.b(t)).trim();return A?JSON.parse(A):null}})}return {mcpBoardFacade:h,mcpNonCoreFacade:I,mcpCardStoreFacade:s,createMcpFacade:d}}exports.a=J;exports.b=X;exports.c=Q;exports.d=z;exports.e=Y;exports.f=j;exports.g=N;exports.h=q;exports.i=E;exports.j=oe;exports.k=ie;exports.l=ce;exports.m=pe;exports.n=me;exports.o=fe;exports.p=ye;//# sourceMappingURL=chunk-NMOUBZXX.cjs.map
|
|
2
|
-
//# sourceMappingURL=chunk-NMOUBZXX.cjs.map
|