yaml-flow 8.8.5 → 8.8.7

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.
@@ -1,3 +1,3 @@
1
- 'use strict';var chunkZK3E7L4Y_cjs=require('./chunk-ZK3E7L4Y.cjs'),chunk7FGPOGRV_cjs=require('./chunk-7FGPOGRV.cjs'),chunkLPXVVMQT_cjs=require('./chunk-LPXVVMQT.cjs'),chunkH22NK6KH_cjs=require('./chunk-H22NK6KH.cjs'),chunkNM6O35RY_cjs=require('./chunk-NM6O35RY.cjs'),chunk272IYUKT_cjs=require('./chunk-272IYUKT.cjs'),chunkBQUQTOPB_cjs=require('./chunk-BQUQTOPB.cjs'),chunkNBJTYAYN_cjs=require('./chunk-NBJTYAYN.cjs'),chunkGPCMBPLK_cjs=require('./chunk-GPCMBPLK.cjs'),chunk36QUKFL7_cjs=require('./chunk-36QUKFL7.cjs'),chunk37HDEW26_cjs=require('./chunk-37HDEW26.cjs'),chunkZENTBLLA_cjs=require('./chunk-ZENTBLLA.cjs'),chunkYMEIPKLW_cjs=require('./chunk-YMEIPKLW.cjs'),chunkUB54HZA4_cjs=require('./chunk-UB54HZA4.cjs');function ne(A){let{apiBasePath:F,json:b,readJsonBody:z,initBoardAndSetup:I,bootstrapBoard:x,buildPublishedRuntimePayload:V,createMcpControlplaneToolRegistry:U,retriggerCard:G,applyCardAction:N,resolveChatHandlerTarget:K,sendCardFileDownloadResponse:W}=A;async function rt(J,B,L){let u=J.method||"GET",i=L,C=i.pathname;try{if(u==="POST"&&C===`${F}/mcp-actions`){await x();let R=Date.now(),w=new Date(R).toISOString(),y=await z(J),d=typeof y.tool=="string"?y.tool.trim():"",M=y.args&&typeof y.args=="object"&&!Array.isArray(y.args)?y.args:{};if(!d)return b(B,400,{error:"tool is required"}),!0;let P=chunkLPXVVMQT_cjs.a(M,"card_id");if(!P)return b(B,400,{error:"MCP action requires card_id"}),!0;if(d==="retrigger-card"||d==="retrigger"){await G(P);let O=Date.now();return b(B,200,{status:"success",data:{ok:!0,cardId:P,actionType:d,requestReceivedAt:w,requestReceivedAtMs:R,responseSentAt:new Date(O).toISOString(),responseSentAtMs:O,responseStatus:200}}),!0}let p=chunkLPXVVMQT_cjs.c(M,"payload");if(d==="chat-send"&&!await K(P)){let O=Date.now();return b(B,409,{error:`chat handler is not configured for card: ${P}`,requestReceivedAt:w,requestReceivedAtMs:R,responseSentAt:new Date(O).toISOString(),responseSentAtMs:O,responseStatus:409}),!0}if(d==="chat-send"){let O=typeof p["turn-id"]=="string"?p["turn-id"]:typeof p.turnId=="string"?p.turnId:typeof p.turn=="string"?p.turn:"";if(!O||!String(O).trim()){let Q=Date.now();return b(B,400,{error:`chat-send requires a non-empty 'turn-id' (or 'turnId'/'turn') in payload for card: ${P}`,requestReceivedAt:w,requestReceivedAtMs:R,responseSentAt:new Date(Q).toISOString(),responseSentAtMs:Q,responseStatus:400}),!0}}await N(P,d,p);let H=Date.now();return b(B,200,{status:"success",data:{ok:!0,cardId:P,actionType:d,requestReceivedAt:w,requestReceivedAtMs:R,responseSentAt:new Date(H).toISOString(),responseSentAtMs:H,responseStatus:200}}),!0}if(u==="POST"&&C===`${F}/mcp-controlplane`){await x();let R=await z(J),w=typeof R.tool=="string"?R.tool.trim():"",y=R.args&&typeof R.args=="object"&&!Array.isArray(R.args)?R.args:{};if(!w)return b(B,400,{error:"tool is required"}),!0;try{let d=await chunk272IYUKT_cjs.a(w,y,U());if(d&&typeof d=="object"&&!Array.isArray(d)){let M=d;if(M.status==="fail")return b(B,400,{error:chunk272IYUKT_cjs.b(d,"Request failed")}),!0;if(M.status==="error")return b(B,500,{error:chunk272IYUKT_cjs.b(d,"Internal error")}),!0}b(B,200,d);}catch(d){let M=typeof d?.statusCode=="number"?Number(d.statusCode):500,P=d instanceof Error?d.message:String(d);b(B,M,{error:P});}return !0}let k=C.match(new RegExp(`^${chunkBQUQTOPB_cjs.c(F)}/cards/([^/]+)/retrigger$`));if(u==="POST"&&k){await x();let R=decodeURIComponent(k[1]);return await G(R),b(B,200,{ok:!0}),!0}let v=C.match(new RegExp(`^${chunkBQUQTOPB_cjs.c(F)}/cards/([^/]+)/actions$`));if(u==="POST"&&v){await x();let R=decodeURIComponent(v[1]),w=Date.now(),y=new Date(w).toISOString(),d=await z(J),M=d?.actionType;if(M==="chat-send"&&!await K(R)){let p=Date.now();return b(B,409,{error:`chat handler is not configured for card: ${R}`,requestReceivedAt:y,requestReceivedAtMs:w,responseSentAt:new Date(p).toISOString(),responseSentAtMs:p,responseStatus:409}),!0}if(M==="chat-send"){let p=d?.payload??{},H=typeof p["turn-id"]=="string"?p["turn-id"]:typeof p.turnId=="string"?p.turnId:typeof p.turn=="string"?p.turn:"";if(!H||!String(H).trim()){let O=Date.now();return b(B,400,{error:`chat-send requires a non-empty 'turn-id' (or 'turnId'/'turn') in payload for card: ${R}`,requestReceivedAt:y,requestReceivedAtMs:w,responseSentAt:new Date(O).toISOString(),responseSentAtMs:O,responseStatus:400}),!0}}await N(R,M,d?.payload);let P=Date.now();return b(B,200,{ok:!0,requestReceivedAt:y,requestReceivedAtMs:w,responseSentAt:new Date(P).toISOString(),responseSentAtMs:P,responseStatus:200}),!0}let E=C.match(new RegExp(`^${chunkBQUQTOPB_cjs.c(F)}/cards/([^/]+)/files/(\\d+)$`));if(u==="GET"&&E){let R=decodeURIComponent(E[1]),w=parseInt(E[2],10),y=i.searchParams.get("sn");return await W(B,R,w,y),!0}return !1}catch(k){let v=k?.statusCode||500;return b(B,v,{error:String(k?.message||k)}),true}}return {handleRuntimeApi:rt}}var oe={"Access-Control-Allow-Origin":"*","Access-Control-Allow-Headers":"content-type,x-file-name","Access-Control-Allow-Methods":"GET,POST,PATCH,OPTIONS"},ae="chat-handler-flow-queue",st="__probe__echo__probe__";function gr(A){let F=String(A.apiBasePath||"/api/board").replace(/\/$/,""),b={...oe,...A.corsHeaders||{}},z=A.queueLaneTuning??{},I=A.boardId||"",x=A.logger||{info:console.log,warn:console.warn,error:console.error},V=A.invocationAdapter,U=A.chatFlowRunner||null,G=A.notificationTransport||null,N=A.serverUrl||null,K=A.executionExtra||{},W=A.onSseClientConnected,rt=A.onSseClientDisconnected,J=A.onChannelSubscribed,B=A.onChannelUnsubscribed,L=chunkH22NK6KH_cjs.a({readChatRecords:t=>bt(t),getChatProcessing:t=>Rt(t),readChatAfter:async(t,e)=>{let r=await ie(t,e);return {records:r.records,cursor:r.cursor}},onSseClientDisconnected:rt});function u(t){function e(o){if(Array.isArray(o))return o;if(o&&typeof o=="object"){let c=o;return Array.isArray(c.files)?c.files:[o]}return null}function r(o){return {async get(c){return o.get(c)},async set(c){return o.set(c)},async del(c){return o.del(c)},async patch(c){return o.patch(c)},async appendFiles(c){return o.appendFiles(c)}}}function a(o){function c(h){return {status:"success",data:h}}function m(h){return {status:"fail",error:h}}function l(h){return {status:"error",error:h instanceof Error?h.message:String(h)}}return {async get(h){try{let g=h.params?.id;if(g){let T=await o.readCard(g);return T?c({cards:[T]}):m(`card "${g}" not found`)}return c({cards:await o.readAllCards()})}catch(g){return l(g)}},async set(h){try{let g=h.body;if(g==null)return m("set requires a body (card object or array of cards)");let T=Array.isArray(g)?g:[g];for(let j of T){if(typeof j.id!="string")return m("each card must have a string `id` field");await o.writeCard(j.id,j);}return c({count:T.length})}catch(g){return l(g)}},async del(h){try{let g=h.body?.ids??[],T=h.params?.id,j=T?[...g,T]:g;if(j.length===0)return m("del requires body.ids (string[]) or params.id");for(let Y of j)await o.removeCard(Y);return c({count:j.length})}catch(g){return l(g)}},async patch(h){try{let g=h.params?.id,T=h.params?.path;if(!g)return m("patch requires params.id");if(!T)return m("patch requires params.path");let j=h.body,Y=j&&Object.prototype.hasOwnProperty.call(j,"value")?j.value:h.body;return await o.patchCard(g,T,Y),c({count:1})}catch(g){return l(g)}},async appendFiles(h){try{let g=h.params?.id;if(!g)return m("appendFiles requires params.id");let T=await o.readCard(g);if(!T)return m(`card "${g}" not found`);let j=e(h.body);if(!j||j.length===0)return m("appendFiles requires a file metadata object, array, or body.files array");let Y=T.card_data&&typeof T.card_data=="object"&&!Array.isArray(T.card_data)?T.card_data:{},Pt=Array.isArray(Y.files)?Y.files:[],_e=[...Pt,...j];return await o.patchCard(g,"card_data.files",_e),c({files_added:j.map((De,$e)=>({idx:Pt.length+$e,entry:De}))})}catch(g){return l(g)}}}}let n=chunkBQUQTOPB_cjs.a(t.boardAdapter)?chunk36QUKFL7_cjs.g(t.baseRef,t.boardAdapter,{boardRuntimeStoreRef:t.boardRuntimeStoreRef,scratchStoreRef:t.scratchStoreRef,taskExecutorRef:t.taskExecutorRef,chatHandlerFlow:t.chatHandlerFlow}):chunkZENTBLLA_cjs.y(t.baseRef,t.boardAdapter,{boardRuntimeStoreRef:t.boardRuntimeStoreRef,scratchStoreRef:t.scratchStoreRef,taskExecutorRef:t.taskExecutorRef,chatHandlerFlow:t.chatHandlerFlow}),s=t.nonCoreAdapter??(!chunkBQUQTOPB_cjs.a(t.boardAdapter)&&R(t.boardAdapter)?t.boardAdapter:null),f=t.nonCore??(s?chunkZENTBLLA_cjs.z(t.baseRef,s,{boardRuntimeStoreRef:t.boardRuntimeStoreRef,taskExecutorRef:t.taskExecutorRef}):null),S=t.boardAdapter.chatStorageForRef(t.chatStoreRef),q,_=chunkBQUQTOPB_cjs.a(t.boardAdapter)?(()=>{let o=chunk36QUKFL7_cjs.d(chunk36QUKFL7_cjs.c(chunk36QUKFL7_cjs.b(t.boardAdapter.kvStorageForRef(t.cardStoreRef)),t.boardAdapter.hashFn),x.warn),c=a(o);return q={get(m){return c.get(m)},set(m){return c.set(m)}},c})():(()=>{let o=t.boardAdapter.kvStorageForRef(t.cardStoreRef),m=chunkYMEIPKLW_cjs.a(chunkZENTBLLA_cjs.l({readIndex:()=>o.read("_index"),writeIndex:l=>o.write("_index",l),readCard:l=>o.read(l),writeCard:(l,h)=>(o.write(l,h),l),removeCard:l=>{o.delete(l);},cardExists:l=>o.read(l)!==null,defaultCardKey:l=>l},x.warn));return q=m,r(m)})(),D;if(chunkBQUQTOPB_cjs.a(t.boardAdapter)){let o=t.boardAdapter.blobStorageForRef(t.artifactsStoreRef);D={async putBytes(c,m){if(o.writeBytes){await o.writeBytes(c,m);return}let l=JSON.stringify({__kind:"bytes-array",data:[...m]});await o.write(c,l);},async getBytes(c){if(o.readBytes){let l=await o.readBytes(c);if(l!==null)return l}let m=await o.read(c);if(m===null)return null;try{let l=JSON.parse(m);if(l&&l.__kind==="bytes-array"&&Array.isArray(l.data))return new Uint8Array(l.data)}catch{}return new TextEncoder().encode(m)},async listKeys(c){return await o.listKeys(c)}};}else {let o=t.boardAdapter.blobStorageForRef(t.artifactsStoreRef),c=chunkNBJTYAYN_cjs.a(o);D={putBytes(m,l,h){c.putBytes(m,l,h);},getBytes(m){return c.getBytes(m)},listKeys(m){return c.list(m).map(l=>l.key)}};}let Me={async init(o){return n.init(o)},async status(o){return n.status(o)},async getConfig(o){return n.getConfig(o)},async getAllOutputsDataObjects(o){return n.getAllOutputsDataObjects(o)},async getAllOutputsComputedValues(o){return n.getAllOutputsComputedValues(o)},async getOutputsFetchedSources(o){return n.getOutputsFetchedSources(o)},async upsertCard(o){return n.upsertCard(o)},async removeCard(o){return n.removeCard(o)},async cardRefreshedNotify(o){return n.cardRefreshedNotify(o)},async sourceDataFetched(o){return n.sourceDataFetched(o)},async sourceDataFetchFailure(o){return n.sourceDataFetchFailure(o)}};return {label:t.label,board:n,nonCore:f,publicCardStore:q,boardOps:Me,cardStoreOps:_,get filesArtifacts(){return D},get chatStorage(){return S},boardAdapter:t.boardAdapter,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:chunkZK3E7L4Y_cjs.a(),notificationTeardown:null,initialized:false,cardsBootstrapped:false}}let i=A.boards.map(u),C=new Map;function k(t){return C.get(t)??0}function v(t){return t.queueStoreRef}function E(t,e){if(chunkBQUQTOPB_cjs.a(t.boardAdapter)){let a=t.boardAdapter.queueStorageForRef(v(t),e);return chunk37HDEW26_cjs.a(a)}let r=t.boardAdapter.queueStorageForRef(v(t),e);return chunkGPCMBPLK_cjs.a(r)}function R(t){let e=t;return typeof e.invokeExecutor=="function"&&typeof e.validateSchema=="function"}function w(t){let e=i[k(t)];return {files:e?e.filesArtifacts:null}}function y(){return chunkNBJTYAYN_cjs.c()}function d(t){return String(t||"").replace(/[^a-zA-Z0-9_-]/g,"_")||"unknown-card"}async function M(t){if(!t||t.notificationTeardown||!G||!t.notifyRef)return;let e=await G.subscribe(t.notifyRef,r=>{chunkZK3E7L4Y_cjs.c(t.notification,r);let a=r.kind==="notification-batch"?r.notifications:[r];L.broadcastNotificationBatch(a);});t.notificationTeardown=e;}async function P(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 a=await t.boardOps.init({params:e,body:r});if(a.status!=="success")throw Object.assign(new Error(a.error||`init failed for ${t.label}`),{statusCode:500});if(await M(t),!t.chatHandlerFlow&&t.chatHandlerRef&&V.describe)try{let n=await V.describe(t.chatHandlerRef);n&&n.kind!=="chat-handler"?x.warn(`[init] chat-handler describe returned kind="${n.kind}", expected "chat-handler" for ${t.label}`):n&&x.info(`[init] chat-handler validated: ${n.name} (protocol ${n.protocolVersion}) for ${t.label}`);}catch(n){x.warn(`[init] chat-handler describe failed for ${t.label}: ${n?.message||String(n)}`);}t.initialized=true;}async function p(t){if(!t.boardAdapter.publishBoardChangeNotifications)return;let e=[],r=await t.boardOps.status({});r.status==="success"&&r.data!=null&&chunkZK3E7L4Y_cjs.b(r.data)&&e.push({kind:"status",status:r.data});let a=await t.boardOps.getAllOutputsDataObjects({});if(a.status==="success"&&a.data!=null)for(let[s,f]of Object.entries(a.data))s&&e.push({kind:"data_object",key:s,payload:f});let n=await t.boardOps.getAllOutputsComputedValues({});if(n.status==="success"&&n.data!=null)for(let[s,f]of Object.entries(n.data))s&&e.push({kind:"computed_values",cardId:s,values:f});e.length>0&&t.boardAdapter.publishBoardChangeNotifications(e);}async function H(t,e){if(!t||t.cardsBootstrapped)return;let r=await t.cardStoreOps.get({}),a=r.status==="success"&&Array.isArray(r.data?.cards)?r.data.cards:[];for(let n of a)typeof n.id=="string"&&(C.set(n.id,e),await t.boardOps.upsertCard({params:{cardId:n.id}}));t.cardsBootstrapped=true;}async function O(){for(let t of i)await P(t);}async function Q(){await O();for(let t=0;t<i.length;t++)await p(i[t]),await H(i[t],t),await p(i[t]);}async function pt(t=false){t||await O();for(let e of i){let r=await e.board.processAccumulatedEvents({});if(r.status!=="success")return r}return {status:"success"}}function Z(t){return i[k(t)]??null}async function nt(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 a=Array.isArray(r.data?.cards)?r.data.cards:[];return a.length>0?a[0]:null}async function mt(){let t=async r=>{if(!r)return [];let a=await r.cardStoreOps.get({});return a.status!=="success"||!Array.isArray(a.data?.cards)?[]:a.data.cards},e=[];for(let r of i)e.push(...await t(r));return e}function gt(){return i[0]??null}function se(t){return Z(t)??gt()}function $(t){let e=se(t);if(!e)throw Object.assign(new Error(`Board context is unavailable for chat operations: ${t}`),{statusCode:404});return e.chatStorage}async function ie(t,e){return await $(t).readAfter(t,e)}async function Rt(t){return await $(t).isProcessing(t)}async function at(t,e){await $(t).setProcessing(t,e),await L.broadcastCardChats(t,true);}let ce=chunkUB54HZA4_cjs.a({append(t,e,r,a,n){return Promise.resolve($(t).append(t,e,r,a,n)).then(async s=>(await L.broadcastCardChats(t,true),s))},readAll(t){return $(t).readAll(t)},readAfter(t,e){return $(t).readAfter(t,e)},clear(t){return $(t).clear(t)},setProcessing(t,e){return Promise.resolve($(t).setProcessing(t,e)).then(async()=>{await L.broadcastCardChats(t,true);})},isProcessing(t){return $(t).isProcessing(t)},getConfig(t){return $(t).getConfig(t)},setConfig(t,e){return $(t).setConfig(t,e)}}),yt=chunkZK3E7L4Y_cjs.n({boardContexts:i,cardOwnerIndex:C,cardContextForCard:t=>Z(t),readStatusSnapshot:()=>pe(),readDataObjectsByToken:()=>ge(),readCardRuntimeArtifacts:()=>me(),readCardFromStore:t=>nt(t),readCardDefinitions:()=>mt(),processAccumulatedLaneInternal:t=>pt(t),reportSourceFetched:(t,e)=>Bt(t,{ref:e}),reportSourceFetchFailure:(t,e)=>kt(t,{reason:e}),uploadCardFile:(t,e,r,a,n)=>Ct(t,e,r,a,n),chatStorePublic:ce,serverUrl:N,apiBasePath:F}),ue=yt.mcpCardStoreFacade,it=yt.createMcpFacade,de=chunkZK3E7L4Y_cjs.h({boardId:I,bootstrapBoard:()=>Q(),sseHub:L,onChannelSubscribed:J,onChannelUnsubscribed:B,getMcpFacade:()=>it(),getMcpCardStoreFacade:()=>ue()});function le(t){return chunkZK3E7L4Y_cjs.k(t)}function fe(){return chunkZK3E7L4Y_cjs.l(it())}function wt(){return chunkZK3E7L4Y_cjs.m({boardId:I,uploadCardFile:Ct,getMcpFacade:()=>it(),controlplane:de})}let ct=chunkZK3E7L4Y_cjs.i({boardId:I,boardContexts:i,readCardDefinitions:()=>mt(),readChatRecords:t=>bt(t),getChatProcessing:t=>Rt(t)}),pe=ct.readStatusSnapshot,me=ct.readCardRuntimeArtifacts,ge=ct.readDataObjectsByToken,lt=ct.buildPublishedRuntimePayload;async function ht(t,e,r){let a=r?.syncBoard!==false,n=r?.restartOnlyIfChanged===true,s=Z(t);if(!s)throw Object.assign(new Error(`Card not found: ${t}`),{statusCode:404});let f=await nt(t);if(!f)throw Object.assign(new Error(`Card not found: ${t}`),{statusCode:404});let S=n?JSON.stringify(f):null,q=e(f)||f;if(n&&JSON.stringify(q)===S)return;let _=await s.cardStoreOps.set({body:q});if(_.status!=="success")throw Object.assign(new Error(_.error||`Failed to persist card: ${t}`),{statusCode:500});if(a){let D=await s.boardOps.upsertCard({params:{cardId:t,restart:true}});if(D.status!=="success")throw Object.assign(new Error(D.error||`Failed to upsert card: ${t}`),{statusCode:500})}}async function Re(t,e){await ht(t,e,{syncBoard:true});}async function ye(t,e){await ht(t,e,{syncBoard:false});}async function we(t){let e=Z(t);if(!e)throw Object.assign(new Error(`Card not found: ${t}`),{statusCode:404});if(!await nt(t))throw Object.assign(new Error(`Card not found: ${t}`),{statusCode:404});let a=await e.boardOps.upsertCard({params:{cardId:t,restart:true}});if(a.status!=="success")throw Object.assign(new Error(a.error||`Failed to retrigger card: ${t}`),{statusCode:500})}async function he(t){await $(t).clear(t);try{await at(t,!1);}catch{}}async function be(t,e,r,a,n=""){let s=typeof r=="string"?r.trim():"",f=await $(t).append(t,e||"system",s,a,n);return await L.broadcastCardChats(t,true),f}async function bt(t){return await $(t).readAll(t)}let Ct=chunkZK3E7L4Y_cjs.j({safeCardId:t=>d(t),artifactsStores:t=>w(t),cardFileMetadataStore:()=>y(),readCardFromStore:t=>nt(t),updateCardLocalOnly:(t,e)=>ye(t,e),writeChatRecord:(t,e,r,a,n)=>be(t,e,r,a,n)}).uploadCardFile;async function St(t){let e=Z(t);if(!e)return null;let r=await e.boardOps.getConfig({params:{key:"chat-handler-flow"}}),n=(r.status==="success"?r.data?.value:null)??e.chatHandlerFlow??null,s=e.chatHandlerRef;return n==null&&(!s||typeof s!="object")?null:{ctx:e,handlerFlow:n,handlerRef:s}}function Ce(t){let e=typeof t=="string"?t.trim():"";if(e.length<st.length*2||!e.startsWith(st)||!e.endsWith(st))return null;let r=e.slice(st.length,e.length-st.length).trim(),a=/^([A-Za-z0-9_-]+)__(.*)$/s.exec(r);return a?{assistant:a[1].trim().toLowerCase(),text:a[2].trim()}:{assistant:"echo",text:r}}async function Se(t,e,r=false,a="",n=""){try{let s=await St(t);if(!s){try{await at(t,!1);}catch{}return}let{ctx:f,handlerFlow:S,handlerRef:q}=s;if(!r)try{await at(t,!0);}catch{}let _={boardId:I,cardId:String(t),lastChatEntryId:e,...a?{turnId:a}:{},...typeof n=="string"&&n.trim()?{probe:n.trim()}:{},...K,...N?{serverUrl:N}:{}},D=S!=null?{meta:"chat-handler-flow",howToRun:"built-in",whatToRun:{kind:"built-in",value:ae}}:q;chunkBQUQTOPB_cjs.a(f.boardAdapter)?await E(f,"chat-agent").enqueueRequest({boardId:I,ref:D,args:S!=null?{..._,__chatHandlerFlow:S}:_}):E(f,"chat-agent").enqueueRequest({boardId:I,ref:D,args:S!=null?{..._,__chatHandlerFlow:S}:_}),await Promise.resolve(f.boardAdapter.requestProcessAccumulated?.());}catch(s){try{await at(t,!1);}catch{}x.warn(`[chat-handler] queue failed for card "${t}": ${s instanceof Error?s.message:String(s)}`);}}async function Ae(t,e,r){if(e.howToRun==="built-in"&&chunkBQUQTOPB_cjs.b(e)===ae){let a=U,n=r.__chatHandlerFlow,s={...r};return delete s.__chatHandlerFlow,a?a.run(n,s,{boardId:I,cardId:String(s.cardId||""),label:t.label,logger:x,serverUrl:N,executionExtra:K}):{dispatched:false,error:"chat-handler-flow configured but no chatFlowRunner was provided"}}return V.invoke(e,r)}async function Be(t,e=false){e||await O();let r=typeof t.args?.cardId=="string"?t.args.cardId:"",a=r?Z(r):gt();if(!a)throw new Error(r?`Board context is unavailable for chat-agent request: ${r}`:"Board context is unavailable for chat-agent request");let n=await Ae(a,t.ref,t.args);if(!n.dispatched){if(r)try{await at(r,!1);}catch{}throw new Error(n.error||`chat-agent dispatch failed for card "${r||"unknown"}"`)}}async function ke(t,e,r){if(e==="chat-send"){let n=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(),f=Ce(r?.text),S=f?f.text:r?.text,q=await chunk272IYUKT_cjs.a("manage.add-chat-entry-and-any-attachments",{board_id:I,card_id:t,role:"user",text:S,turn_id:n,files:[]},s);if(q?.status!=="success")throw new Error(chunk272IYUKT_cjs.b(q,`chat-send append failed for card ${t}`));let _=q?.data?.id;if(typeof _!="string"||!_)throw new Error(`chat-send did not return an append id for card ${t}`);let D=await chunk272IYUKT_cjs.a("setstate.chat-processing-started",{board_id:I,card_id:t},s);if(D?.status!=="success")throw new Error(chunk272IYUKT_cjs.b(D,`chat-send processing update failed for card ${t}`));Se(t,_,true,n,f?.assistant||"");return}await Re(t,n=>{let s=new Date().toISOString(),f=n.card_data&&typeof n.card_data=="object"?n.card_data:{};if(n.card_data=f,e==="file-upload"){let S=y().normalizeIncoming(r?.files,s);return S.length>0&&y().merge(f,S),n}if(e==="action"){let S=r&&typeof r.buttonId=="string"?r.buttonId:"";if(!S)return n;f.lastAction={buttonId:S,at:s},f.lastActionText=`${S} @ ${s}`;}return n});}function ut(t,e,r){let a=JSON.stringify(r),n=typeof Buffer<"u"?Buffer.byteLength(a):new TextEncoder().encode(a).length;t.writeHead(e,{...b,"Content-Type":"application/json; charset=utf-8","Content-Length":n}),t.end(a);}async function At(t,e,r){let a=await nt(t);if(!a)throw Object.assign(new Error("Card not found"),{statusCode:404});let n=y().resolve(a.card_data,e,r);if(!n.ok&&n.reason==="stale_reference")throw Object.assign(new Error("File reference is stale. Refresh and try again."),{statusCode:409});if(!n.ok)throw Object.assign(new Error("File not found"),{statusCode:404});let s=n.file,f=d(t),S=w(t),q=String(s.stored_name||""),_=`${f}/${q}`,D=S.files?await S.files.getBytes(_):null;if(!D)throw Object.assign(new Error("File not found"),{statusCode:404});return {fileRecord:s,bytes:D}}async function Pe(t,e,r,a){let{fileRecord:n,bytes:s}=await At(e,r,a),f=String(n.name||n.stored_name||"download.bin"),S=String(n.mime_type||"application/octet-stream");t.writeHead(200,{"Content-Type":S,"Content-Disposition":`attachment; filename="${f}"`,"Content-Length":s.length}),t.end(s);}function Fe(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 Oe(t,e,r){let a=t.split(/\r?\n/);return (e==="head"?a.slice(0,r):a.slice(-r)).join(`
2
- `)}async function dt(t){let e=[];for await(let a of t)e.push(a);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 a=i[0];return a?a.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",a=i[0];return a?a.boardOps.sourceDataFetchFailure({params:{token:t,reason:r}}):{status:"fail",error:"no board context"}}let ve=chunkH22NK6KH_cjs.b({sseHub:L,corsHeaders:b,json:ut,buildPublishedRuntimePayload:()=>lt(),onSseClientConnected:W,onChannelSubscribed:J,onChannelUnsubscribed:B,apiBasePath:F,readJsonBody:t=>dt(t),initBoardAndSetup:()=>O(),bootstrapBoard:()=>Q(),boardContexts:i,publishPersistedStateSnapshot:t=>p(t),upsertCardsFromSource:(t,e)=>H(t,e)}).handleWatchersRoutes,Te=chunk7FGPOGRV_cjs.a({apiBasePath:F,json:ut,readJsonBody:t=>dt(t),bootstrapBoard:()=>Q(),createMcpFacade:()=>it(),createMcpToolRegistry:t=>le(t),resolveCardFileDownloadPayload:(t,e,r)=>At(t,e,r),isLikelyTextMimeType:t=>Fe(t),sliceTextByLines:(t,e,r)=>Oe(t,e,r)}).handleAgentfaceApi,xe=chunkNM6O35RY_cjs.a({apiBasePath:F,json:ut,readJsonBody:t=>dt(t),initBoardAndSetup:()=>O(),createMcpWebhookToolRegistry:()=>fe()}).handleWebhooksApi,je=ne({apiBasePath:F,json:ut,readJsonBody:t=>dt(t),initBoardAndSetup:()=>O(),bootstrapBoard:()=>Q(),buildPublishedRuntimePayload:()=>lt(),createMcpControlplaneToolRegistry:()=>wt(),retriggerCard:t=>we(t),applyCardAction:(t,e,r)=>ke(t,e,r),resolveChatHandlerTarget:t=>St(t),sendCardFileDownloadResponse:(t,e,r,a)=>Pe(t,e,r,a)}).handleRuntimeApi;async function Ee(t,e,r){return !!(await Te(t,e,r)||await xe(t,e,r)||await ve(t,e,r)||await je(t,e,r))}return {get apiBasePath(){return F},get corsHeaders(){return b},get queueLaneTuning(){return z},handleRuntimeApi:Ee,buildPublishedRuntimePayload:lt,__drainProcessAccumulatedLane:pt,handleChatAgentRequest:Be,clearChatRecords:he,reportSourceFetched(t,e){return Bt(t,{ref:e})},reportSourceFetchFailure(t,e){return kt(t,{reason:e})},get cardStore(){return i[0]?.publicCardStore??{get(){return Promise.resolve({status:"fail",error:"no board context"})},set(){return Promise.resolve({status:"fail",error:"no board context"})}}}}}function Rr(A){let F=String(A.apiBasePath||"/api/boards").replace(/\/$/,""),b={...oe,...A.corsHeaders||{}},z=A.serverMetaStore,I=A.boardRuntimeFactory,x=new Map,V="boards-config.json";function U(){let u=z.getText(V);if(!u)return {boards:[{id:"default",label:"Default Board"}]};try{return JSON.parse(u)}catch{return {boards:[{id:"default",label:"Default Board"}]}}}function G(u){z.putText(V,JSON.stringify(u,null,2));}function N(u){let i=String(u||"").replace(/[^a-zA-Z0-9_-]/g,"_").replace(/^_+|_+$/g,"");return i.length>0&&i.length<=64?i:null}function K(u){if(x.has(u))return x.get(u);let C=U().boards.find(v=>v.id===u)||{},k=I(u,C);return x.set(u,k),k}function W(u,i,C){let k=JSON.stringify(C),v=typeof Buffer<"u"?Buffer.byteLength(k):new TextEncoder().encode(k).length;u.writeHead(i,{...b,"Content-Type":"application/json; charset=utf-8","Content-Length":v}),u.end(k);}async function rt(u,i,C){let k=u.method||"GET",v=C.pathname;if(k==="GET"&&v===F)return W(i,200,{ok:true,boards:U().boards}),true;if(k==="POST"&&v===F){let E=[];for await(let p of u)E.push(p);let R=typeof Buffer<"u"?Buffer.concat(E).toString("utf-8").trim():new TextDecoder().decode(chunkBQUQTOPB_cjs.d(E)).trim(),w={};try{w=R?JSON.parse(R):{};}catch{w={};}let y=N(w.id);if(!y)return W(i,400,{error:"board id must be 1-64 alphanumeric/dash/underscore characters"}),true;let d=U();if(d.boards.some(p=>p.id===y))return W(i,409,{error:`Board "${y}" is already registered`}),true;let M=typeof w.label=="string"&&w.label.trim()?w.label.trim():y,P={id:y,label:M};for(let[p,H]of Object.entries(w))p==="id"||p==="label"||H!=null&&(P[p]=H);return d.boards.push(P),G(d),W(i,200,{ok:true,board:P}),true}return false}async function J(u,i,C){let v=C.pathname.match(new RegExp(`^${chunkBQUQTOPB_cjs.c(F)}/([^/]+)(/|$)`));if(!v)return false;let E=N(decodeURIComponent(v[1]));return E?U().boards.some(y=>y.id===E)?!!await K(E).handleRuntimeApi(u,i,C):(W(i,404,{error:`Board "${E}" not registered. POST ${F} with {id} to register it first.`}),true):(W(i,400,{error:"Invalid board id"}),true)}async function B(u,i,C){return !!(await rt(u,i,C)||await J(u,i,C))}function L(u){if(!U().boards.some(C=>C.id===u))throw Object.assign(new Error(`Board "${u}" not registered`),{statusCode:404});return {service:K(u)}}return {get apiBasePath(){return F},get corsHeaders(){return b},handleApi:B,requireBoardService:L}}exports.a=gr;exports.b=Rr;//# sourceMappingURL=chunk-PN5D32NP.cjs.map
3
- //# sourceMappingURL=chunk-PN5D32NP.cjs.map
1
+ 'use strict';var chunkOJ2CAQ4C_cjs=require('./chunk-OJ2CAQ4C.cjs'),chunk7FGPOGRV_cjs=require('./chunk-7FGPOGRV.cjs'),chunkLPXVVMQT_cjs=require('./chunk-LPXVVMQT.cjs'),chunkH22NK6KH_cjs=require('./chunk-H22NK6KH.cjs'),chunkNM6O35RY_cjs=require('./chunk-NM6O35RY.cjs'),chunk272IYUKT_cjs=require('./chunk-272IYUKT.cjs'),chunkBQUQTOPB_cjs=require('./chunk-BQUQTOPB.cjs'),chunkNBJTYAYN_cjs=require('./chunk-NBJTYAYN.cjs'),chunkGPCMBPLK_cjs=require('./chunk-GPCMBPLK.cjs'),chunk36QUKFL7_cjs=require('./chunk-36QUKFL7.cjs'),chunk37HDEW26_cjs=require('./chunk-37HDEW26.cjs'),chunkZENTBLLA_cjs=require('./chunk-ZENTBLLA.cjs'),chunkYMEIPKLW_cjs=require('./chunk-YMEIPKLW.cjs'),chunkUB54HZA4_cjs=require('./chunk-UB54HZA4.cjs');function ne(A){let{apiBasePath:F,json:b,readJsonBody:z,initBoardAndSetup:I,bootstrapBoard:x,buildPublishedRuntimePayload:V,createMcpControlplaneToolRegistry:U,retriggerCard:G,applyCardAction:N,resolveChatHandlerTarget:K,sendCardFileDownloadResponse:W}=A;async function rt(J,B,L){let u=J.method||"GET",i=L,C=i.pathname;try{if(u==="POST"&&C===`${F}/mcp-actions`){await x();let R=Date.now(),w=new Date(R).toISOString(),y=await z(J),d=typeof y.tool=="string"?y.tool.trim():"",M=y.args&&typeof y.args=="object"&&!Array.isArray(y.args)?y.args:{};if(!d)return b(B,400,{error:"tool is required"}),!0;let P=chunkLPXVVMQT_cjs.a(M,"card_id");if(!P)return b(B,400,{error:"MCP action requires card_id"}),!0;if(d==="retrigger-card"||d==="retrigger"){await G(P);let O=Date.now();return b(B,200,{status:"success",data:{ok:!0,cardId:P,actionType:d,requestReceivedAt:w,requestReceivedAtMs:R,responseSentAt:new Date(O).toISOString(),responseSentAtMs:O,responseStatus:200}}),!0}let p=chunkLPXVVMQT_cjs.c(M,"payload");if(d==="chat-send"&&!await K(P)){let O=Date.now();return b(B,409,{error:`chat handler is not configured for card: ${P}`,requestReceivedAt:w,requestReceivedAtMs:R,responseSentAt:new Date(O).toISOString(),responseSentAtMs:O,responseStatus:409}),!0}if(d==="chat-send"){let O=typeof p["turn-id"]=="string"?p["turn-id"]:typeof p.turnId=="string"?p.turnId:typeof p.turn=="string"?p.turn:"";if(!O||!String(O).trim()){let Q=Date.now();return b(B,400,{error:`chat-send requires a non-empty 'turn-id' (or 'turnId'/'turn') in payload for card: ${P}`,requestReceivedAt:w,requestReceivedAtMs:R,responseSentAt:new Date(Q).toISOString(),responseSentAtMs:Q,responseStatus:400}),!0}}await N(P,d,p);let H=Date.now();return b(B,200,{status:"success",data:{ok:!0,cardId:P,actionType:d,requestReceivedAt:w,requestReceivedAtMs:R,responseSentAt:new Date(H).toISOString(),responseSentAtMs:H,responseStatus:200}}),!0}if(u==="POST"&&C===`${F}/mcp-controlplane`){await x();let R=await z(J),w=typeof R.tool=="string"?R.tool.trim():"",y=R.args&&typeof R.args=="object"&&!Array.isArray(R.args)?R.args:{};if(!w)return b(B,400,{error:"tool is required"}),!0;try{let d=await chunk272IYUKT_cjs.a(w,y,U());if(d&&typeof d=="object"&&!Array.isArray(d)){let M=d;if(M.status==="fail")return b(B,400,{error:chunk272IYUKT_cjs.b(d,"Request failed")}),!0;if(M.status==="error")return b(B,500,{error:chunk272IYUKT_cjs.b(d,"Internal error")}),!0}b(B,200,d);}catch(d){let M=typeof d?.statusCode=="number"?Number(d.statusCode):500,P=d instanceof Error?d.message:String(d);b(B,M,{error:P});}return !0}let k=C.match(new RegExp(`^${chunkBQUQTOPB_cjs.c(F)}/cards/([^/]+)/retrigger$`));if(u==="POST"&&k){await x();let R=decodeURIComponent(k[1]);return await G(R),b(B,200,{ok:!0}),!0}let v=C.match(new RegExp(`^${chunkBQUQTOPB_cjs.c(F)}/cards/([^/]+)/actions$`));if(u==="POST"&&v){await x();let R=decodeURIComponent(v[1]),w=Date.now(),y=new Date(w).toISOString(),d=await z(J),M=d?.actionType;if(M==="chat-send"&&!await K(R)){let p=Date.now();return b(B,409,{error:`chat handler is not configured for card: ${R}`,requestReceivedAt:y,requestReceivedAtMs:w,responseSentAt:new Date(p).toISOString(),responseSentAtMs:p,responseStatus:409}),!0}if(M==="chat-send"){let p=d?.payload??{},H=typeof p["turn-id"]=="string"?p["turn-id"]:typeof p.turnId=="string"?p.turnId:typeof p.turn=="string"?p.turn:"";if(!H||!String(H).trim()){let O=Date.now();return b(B,400,{error:`chat-send requires a non-empty 'turn-id' (or 'turnId'/'turn') in payload for card: ${R}`,requestReceivedAt:y,requestReceivedAtMs:w,responseSentAt:new Date(O).toISOString(),responseSentAtMs:O,responseStatus:400}),!0}}await N(R,M,d?.payload);let P=Date.now();return b(B,200,{ok:!0,requestReceivedAt:y,requestReceivedAtMs:w,responseSentAt:new Date(P).toISOString(),responseSentAtMs:P,responseStatus:200}),!0}let E=C.match(new RegExp(`^${chunkBQUQTOPB_cjs.c(F)}/cards/([^/]+)/files/(\\d+)$`));if(u==="GET"&&E){let R=decodeURIComponent(E[1]),w=parseInt(E[2],10),y=i.searchParams.get("sn");return await W(B,R,w,y),!0}return !1}catch(k){let v=k?.statusCode||500;return b(B,v,{error:String(k?.message||k)}),true}}return {handleRuntimeApi:rt}}var oe={"Access-Control-Allow-Origin":"*","Access-Control-Allow-Headers":"content-type,x-file-name","Access-Control-Allow-Methods":"GET,POST,PATCH,OPTIONS"},ae="chat-handler-flow-queue",st="__probe__echo__probe__";function gr(A){let F=String(A.apiBasePath||"/api/board").replace(/\/$/,""),b={...oe,...A.corsHeaders||{}},z=A.queueLaneTuning??{},I=A.boardId||"",x=A.logger||{info:console.log,warn:console.warn,error:console.error},V=A.invocationAdapter,U=A.chatFlowRunner||null,G=A.notificationTransport||null,N=A.serverUrl||null,K=A.executionExtra||{},W=A.onSseClientConnected,rt=A.onSseClientDisconnected,J=A.onChannelSubscribed,B=A.onChannelUnsubscribed,L=chunkH22NK6KH_cjs.a({readChatRecords:t=>bt(t),getChatProcessing:t=>Rt(t),readChatAfter:async(t,e)=>{let r=await ie(t,e);return {records:r.records,cursor:r.cursor}},onSseClientDisconnected:rt});function u(t){function e(o){if(Array.isArray(o))return o;if(o&&typeof o=="object"){let c=o;return Array.isArray(c.files)?c.files:[o]}return null}function r(o){return {async get(c){return o.get(c)},async set(c){return o.set(c)},async del(c){return o.del(c)},async patch(c){return o.patch(c)},async appendFiles(c){return o.appendFiles(c)}}}function a(o){function c(h){return {status:"success",data:h}}function m(h){return {status:"fail",error:h}}function l(h){return {status:"error",error:h instanceof Error?h.message:String(h)}}return {async get(h){try{let g=h.params?.id;if(g){let T=await o.readCard(g);return T?c({cards:[T]}):m(`card "${g}" not found`)}return c({cards:await o.readAllCards()})}catch(g){return l(g)}},async set(h){try{let g=h.body;if(g==null)return m("set requires a body (card object or array of cards)");let T=Array.isArray(g)?g:[g];for(let j of T){if(typeof j.id!="string")return m("each card must have a string `id` field");await o.writeCard(j.id,j);}return c({count:T.length})}catch(g){return l(g)}},async del(h){try{let g=h.body?.ids??[],T=h.params?.id,j=T?[...g,T]:g;if(j.length===0)return m("del requires body.ids (string[]) or params.id");for(let Y of j)await o.removeCard(Y);return c({count:j.length})}catch(g){return l(g)}},async patch(h){try{let g=h.params?.id,T=h.params?.path;if(!g)return m("patch requires params.id");if(!T)return m("patch requires params.path");let j=h.body,Y=j&&Object.prototype.hasOwnProperty.call(j,"value")?j.value:h.body;return await o.patchCard(g,T,Y),c({count:1})}catch(g){return l(g)}},async appendFiles(h){try{let g=h.params?.id;if(!g)return m("appendFiles requires params.id");let T=await o.readCard(g);if(!T)return m(`card "${g}" not found`);let j=e(h.body);if(!j||j.length===0)return m("appendFiles requires a file metadata object, array, or body.files array");let Y=T.card_data&&typeof T.card_data=="object"&&!Array.isArray(T.card_data)?T.card_data:{},Pt=Array.isArray(Y.files)?Y.files:[],_e=[...Pt,...j];return await o.patchCard(g,"card_data.files",_e),c({files_added:j.map((De,$e)=>({idx:Pt.length+$e,entry:De}))})}catch(g){return l(g)}}}}let n=chunkBQUQTOPB_cjs.a(t.boardAdapter)?chunk36QUKFL7_cjs.g(t.baseRef,t.boardAdapter,{boardRuntimeStoreRef:t.boardRuntimeStoreRef,scratchStoreRef:t.scratchStoreRef,taskExecutorRef:t.taskExecutorRef,chatHandlerFlow:t.chatHandlerFlow}):chunkZENTBLLA_cjs.y(t.baseRef,t.boardAdapter,{boardRuntimeStoreRef:t.boardRuntimeStoreRef,scratchStoreRef:t.scratchStoreRef,taskExecutorRef:t.taskExecutorRef,chatHandlerFlow:t.chatHandlerFlow}),s=t.nonCoreAdapter??(!chunkBQUQTOPB_cjs.a(t.boardAdapter)&&R(t.boardAdapter)?t.boardAdapter:null),f=t.nonCore??(s?chunkZENTBLLA_cjs.z(t.baseRef,s,{boardRuntimeStoreRef:t.boardRuntimeStoreRef,taskExecutorRef:t.taskExecutorRef}):null),S=t.boardAdapter.chatStorageForRef(t.chatStoreRef),q,_=chunkBQUQTOPB_cjs.a(t.boardAdapter)?(()=>{let o=chunk36QUKFL7_cjs.d(chunk36QUKFL7_cjs.c(chunk36QUKFL7_cjs.b(t.boardAdapter.kvStorageForRef(t.cardStoreRef)),t.boardAdapter.hashFn),x.warn),c=a(o);return q={get(m){return c.get(m)},set(m){return c.set(m)}},c})():(()=>{let o=t.boardAdapter.kvStorageForRef(t.cardStoreRef),m=chunkYMEIPKLW_cjs.a(chunkZENTBLLA_cjs.l({readIndex:()=>o.read("_index"),writeIndex:l=>o.write("_index",l),readCard:l=>o.read(l),writeCard:(l,h)=>(o.write(l,h),l),removeCard:l=>{o.delete(l);},cardExists:l=>o.read(l)!==null,defaultCardKey:l=>l},x.warn));return q=m,r(m)})(),D;if(chunkBQUQTOPB_cjs.a(t.boardAdapter)){let o=t.boardAdapter.blobStorageForRef(t.artifactsStoreRef);D={async putBytes(c,m){if(o.writeBytes){await o.writeBytes(c,m);return}let l=JSON.stringify({__kind:"bytes-array",data:[...m]});await o.write(c,l);},async getBytes(c){if(o.readBytes){let l=await o.readBytes(c);if(l!==null)return l}let m=await o.read(c);if(m===null)return null;try{let l=JSON.parse(m);if(l&&l.__kind==="bytes-array"&&Array.isArray(l.data))return new Uint8Array(l.data)}catch{}return new TextEncoder().encode(m)},async listKeys(c){return await o.listKeys(c)}};}else {let o=t.boardAdapter.blobStorageForRef(t.artifactsStoreRef),c=chunkNBJTYAYN_cjs.a(o);D={putBytes(m,l,h){c.putBytes(m,l,h);},getBytes(m){return c.getBytes(m)},listKeys(m){return c.list(m).map(l=>l.key)}};}let Me={async init(o){return n.init(o)},async status(o){return n.status(o)},async getConfig(o){return n.getConfig(o)},async getAllOutputsDataObjects(o){return n.getAllOutputsDataObjects(o)},async getAllOutputsComputedValues(o){return n.getAllOutputsComputedValues(o)},async getOutputsFetchedSources(o){return n.getOutputsFetchedSources(o)},async upsertCard(o){return n.upsertCard(o)},async removeCard(o){return n.removeCard(o)},async cardRefreshedNotify(o){return n.cardRefreshedNotify(o)},async sourceDataFetched(o){return n.sourceDataFetched(o)},async sourceDataFetchFailure(o){return n.sourceDataFetchFailure(o)}};return {label:t.label,board:n,nonCore:f,publicCardStore:q,boardOps:Me,cardStoreOps:_,get filesArtifacts(){return D},get chatStorage(){return S},boardAdapter:t.boardAdapter,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:chunkOJ2CAQ4C_cjs.a(),notificationTeardown:null,initialized:false,cardsBootstrapped:false}}let i=A.boards.map(u),C=new Map;function k(t){return C.get(t)??0}function v(t){return t.queueStoreRef}function E(t,e){if(chunkBQUQTOPB_cjs.a(t.boardAdapter)){let a=t.boardAdapter.queueStorageForRef(v(t),e);return chunk37HDEW26_cjs.a(a)}let r=t.boardAdapter.queueStorageForRef(v(t),e);return chunkGPCMBPLK_cjs.a(r)}function R(t){let e=t;return typeof e.invokeExecutor=="function"&&typeof e.validateSchema=="function"}function w(t){let e=i[k(t)];return {files:e?e.filesArtifacts:null}}function y(){return chunkNBJTYAYN_cjs.c()}function d(t){return String(t||"").replace(/[^a-zA-Z0-9_-]/g,"_")||"unknown-card"}async function M(t){if(!t||t.notificationTeardown||!G||!t.notifyRef)return;let e=await G.subscribe(t.notifyRef,r=>{chunkOJ2CAQ4C_cjs.c(t.notification,r);let a=r.kind==="notification-batch"?r.notifications:[r];L.broadcastNotificationBatch(a);});t.notificationTeardown=e;}async function P(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 a=await t.boardOps.init({params:e,body:r});if(a.status!=="success")throw Object.assign(new Error(a.error||`init failed for ${t.label}`),{statusCode:500});if(await M(t),!t.chatHandlerFlow&&t.chatHandlerRef&&V.describe)try{let n=await V.describe(t.chatHandlerRef);n&&n.kind!=="chat-handler"?x.warn(`[init] chat-handler describe returned kind="${n.kind}", expected "chat-handler" for ${t.label}`):n&&x.info(`[init] chat-handler validated: ${n.name} (protocol ${n.protocolVersion}) for ${t.label}`);}catch(n){x.warn(`[init] chat-handler describe failed for ${t.label}: ${n?.message||String(n)}`);}t.initialized=true;}async function p(t){if(!t.boardAdapter.publishBoardChangeNotifications)return;let e=[],r=await t.boardOps.status({});r.status==="success"&&r.data!=null&&chunkOJ2CAQ4C_cjs.b(r.data)&&e.push({kind:"status",status:r.data});let a=await t.boardOps.getAllOutputsDataObjects({});if(a.status==="success"&&a.data!=null)for(let[s,f]of Object.entries(a.data))s&&e.push({kind:"data_object",key:s,payload:f});let n=await t.boardOps.getAllOutputsComputedValues({});if(n.status==="success"&&n.data!=null)for(let[s,f]of Object.entries(n.data))s&&e.push({kind:"computed_values",cardId:s,values:f});e.length>0&&t.boardAdapter.publishBoardChangeNotifications(e);}async function H(t,e){if(!t||t.cardsBootstrapped)return;let r=await t.cardStoreOps.get({}),a=r.status==="success"&&Array.isArray(r.data?.cards)?r.data.cards:[];for(let n of a)typeof n.id=="string"&&(C.set(n.id,e),await t.boardOps.upsertCard({params:{cardId:n.id}}));t.cardsBootstrapped=true;}async function O(){for(let t of i)await P(t);}async function Q(){await O();for(let t=0;t<i.length;t++)await p(i[t]),await H(i[t],t),await p(i[t]);}async function pt(t=false){t||await O();for(let e of i){let r=await e.board.processAccumulatedEvents({});if(r.status!=="success")return r}return {status:"success"}}function Z(t){return i[k(t)]??null}async function nt(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 a=Array.isArray(r.data?.cards)?r.data.cards:[];return a.length>0?a[0]:null}async function mt(){let t=async r=>{if(!r)return [];let a=await r.cardStoreOps.get({});return a.status!=="success"||!Array.isArray(a.data?.cards)?[]:a.data.cards},e=[];for(let r of i)e.push(...await t(r));return e}function gt(){return i[0]??null}function se(t){return Z(t)??gt()}function $(t){let e=se(t);if(!e)throw Object.assign(new Error(`Board context is unavailable for chat operations: ${t}`),{statusCode:404});return e.chatStorage}async function ie(t,e){return await $(t).readAfter(t,e)}async function Rt(t){return await $(t).isProcessing(t)}async function at(t,e){await $(t).setProcessing(t,e),await L.broadcastCardChats(t,true);}let ce=chunkUB54HZA4_cjs.a({append(t,e,r,a,n){return Promise.resolve($(t).append(t,e,r,a,n)).then(async s=>(await L.broadcastCardChats(t,true),s))},readAll(t){return $(t).readAll(t)},readAfter(t,e){return $(t).readAfter(t,e)},clear(t){return $(t).clear(t)},setProcessing(t,e){return Promise.resolve($(t).setProcessing(t,e)).then(async()=>{await L.broadcastCardChats(t,true);})},isProcessing(t){return $(t).isProcessing(t)},getConfig(t){return $(t).getConfig(t)},setConfig(t,e){return $(t).setConfig(t,e)}}),yt=chunkOJ2CAQ4C_cjs.n({boardContexts:i,cardOwnerIndex:C,cardContextForCard:t=>Z(t),readStatusSnapshot:()=>pe(),readDataObjectsByToken:()=>ge(),readCardRuntimeArtifacts:()=>me(),readCardFromStore:t=>nt(t),readCardDefinitions:()=>mt(),processAccumulatedLaneInternal:t=>pt(t),reportSourceFetched:(t,e)=>Bt(t,{ref:e}),reportSourceFetchFailure:(t,e)=>kt(t,{reason:e}),uploadCardFile:(t,e,r,a,n)=>Ct(t,e,r,a,n),chatStorePublic:ce,serverUrl:N,apiBasePath:F}),ue=yt.mcpCardStoreFacade,it=yt.createMcpFacade,de=chunkOJ2CAQ4C_cjs.h({boardId:I,bootstrapBoard:()=>Q(),sseHub:L,onChannelSubscribed:J,onChannelUnsubscribed:B,getMcpFacade:()=>it(),getMcpCardStoreFacade:()=>ue()});function le(t){return chunkOJ2CAQ4C_cjs.k(t)}function fe(){return chunkOJ2CAQ4C_cjs.l(it())}function wt(){return chunkOJ2CAQ4C_cjs.m({boardId:I,uploadCardFile:Ct,getMcpFacade:()=>it(),controlplane:de})}let ct=chunkOJ2CAQ4C_cjs.i({boardId:I,boardContexts:i,readCardDefinitions:()=>mt(),readChatRecords:t=>bt(t),getChatProcessing:t=>Rt(t)}),pe=ct.readStatusSnapshot,me=ct.readCardRuntimeArtifacts,ge=ct.readDataObjectsByToken,lt=ct.buildPublishedRuntimePayload;async function ht(t,e,r){let a=r?.syncBoard!==false,n=r?.restartOnlyIfChanged===true,s=Z(t);if(!s)throw Object.assign(new Error(`Card not found: ${t}`),{statusCode:404});let f=await nt(t);if(!f)throw Object.assign(new Error(`Card not found: ${t}`),{statusCode:404});let S=n?JSON.stringify(f):null,q=e(f)||f;if(n&&JSON.stringify(q)===S)return;let _=await s.cardStoreOps.set({body:q});if(_.status!=="success")throw Object.assign(new Error(_.error||`Failed to persist card: ${t}`),{statusCode:500});if(a){let D=await s.boardOps.upsertCard({params:{cardId:t,restart:true}});if(D.status!=="success")throw Object.assign(new Error(D.error||`Failed to upsert card: ${t}`),{statusCode:500})}}async function Re(t,e){await ht(t,e,{syncBoard:true});}async function ye(t,e){await ht(t,e,{syncBoard:false});}async function we(t){let e=Z(t);if(!e)throw Object.assign(new Error(`Card not found: ${t}`),{statusCode:404});if(!await nt(t))throw Object.assign(new Error(`Card not found: ${t}`),{statusCode:404});let a=await e.boardOps.upsertCard({params:{cardId:t,restart:true}});if(a.status!=="success")throw Object.assign(new Error(a.error||`Failed to retrigger card: ${t}`),{statusCode:500})}async function he(t){await $(t).clear(t);try{await at(t,!1);}catch{}}async function be(t,e,r,a,n=""){let s=typeof r=="string"?r.trim():"",f=await $(t).append(t,e||"system",s,a,n);return await L.broadcastCardChats(t,true),f}async function bt(t){return await $(t).readAll(t)}let Ct=chunkOJ2CAQ4C_cjs.j({safeCardId:t=>d(t),artifactsStores:t=>w(t),cardFileMetadataStore:()=>y(),readCardFromStore:t=>nt(t),updateCardLocalOnly:(t,e)=>ye(t,e),writeChatRecord:(t,e,r,a,n)=>be(t,e,r,a,n)}).uploadCardFile;async function St(t){let e=Z(t);if(!e)return null;let r=await e.boardOps.getConfig({params:{key:"chat-handler-flow"}}),n=(r.status==="success"?r.data?.value:null)??e.chatHandlerFlow??null,s=e.chatHandlerRef;return n==null&&(!s||typeof s!="object")?null:{ctx:e,handlerFlow:n,handlerRef:s}}function Ce(t){let e=typeof t=="string"?t.trim():"";if(e.length<st.length*2||!e.startsWith(st)||!e.endsWith(st))return null;let r=e.slice(st.length,e.length-st.length).trim(),a=/^([A-Za-z0-9_-]+)__(.*)$/s.exec(r);return a?{assistant:a[1].trim().toLowerCase(),text:a[2].trim()}:{assistant:"echo",text:r}}async function Se(t,e,r=false,a="",n=""){try{let s=await St(t);if(!s){try{await at(t,!1);}catch{}return}let{ctx:f,handlerFlow:S,handlerRef:q}=s;if(!r)try{await at(t,!0);}catch{}let _={boardId:I,cardId:String(t),lastChatEntryId:e,...a?{turnId:a}:{},...typeof n=="string"&&n.trim()?{probe:n.trim()}:{},...K,...N?{serverUrl:N}:{}},D=S!=null?{meta:"chat-handler-flow",howToRun:"built-in",whatToRun:{kind:"built-in",value:ae}}:q;chunkBQUQTOPB_cjs.a(f.boardAdapter)?await E(f,"chat-agent").enqueueRequest({boardId:I,ref:D,args:S!=null?{..._,__chatHandlerFlow:S}:_}):E(f,"chat-agent").enqueueRequest({boardId:I,ref:D,args:S!=null?{..._,__chatHandlerFlow:S}:_}),await Promise.resolve(f.boardAdapter.requestProcessAccumulated?.());}catch(s){try{await at(t,!1);}catch{}x.warn(`[chat-handler] queue failed for card "${t}": ${s instanceof Error?s.message:String(s)}`);}}async function Ae(t,e,r){if(e.howToRun==="built-in"&&chunkBQUQTOPB_cjs.b(e)===ae){let a=U,n=r.__chatHandlerFlow,s={...r};return delete s.__chatHandlerFlow,a?a.run(n,s,{boardId:I,cardId:String(s.cardId||""),label:t.label,logger:x,serverUrl:N,executionExtra:K}):{dispatched:false,error:"chat-handler-flow configured but no chatFlowRunner was provided"}}return V.invoke(e,r)}async function Be(t,e=false){e||await O();let r=typeof t.args?.cardId=="string"?t.args.cardId:"",a=r?Z(r):gt();if(!a)throw new Error(r?`Board context is unavailable for chat-agent request: ${r}`:"Board context is unavailable for chat-agent request");let n=await Ae(a,t.ref,t.args);if(!n.dispatched){if(r)try{await at(r,!1);}catch{}throw new Error(n.error||`chat-agent dispatch failed for card "${r||"unknown"}"`)}}async function ke(t,e,r){if(e==="chat-send"){let n=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(),f=Ce(r?.text),S=f?f.text:r?.text,q=await chunk272IYUKT_cjs.a("manage.add-chat-entry-and-any-attachments",{board_id:I,card_id:t,role:"user",text:S,turn_id:n,files:[]},s);if(q?.status!=="success")throw new Error(chunk272IYUKT_cjs.b(q,`chat-send append failed for card ${t}`));let _=q?.data?.id;if(typeof _!="string"||!_)throw new Error(`chat-send did not return an append id for card ${t}`);let D=await chunk272IYUKT_cjs.a("setstate.chat-processing-started",{board_id:I,card_id:t},s);if(D?.status!=="success")throw new Error(chunk272IYUKT_cjs.b(D,`chat-send processing update failed for card ${t}`));Se(t,_,true,n,f?.assistant||"");return}await Re(t,n=>{let s=new Date().toISOString(),f=n.card_data&&typeof n.card_data=="object"?n.card_data:{};if(n.card_data=f,e==="file-upload"){let S=y().normalizeIncoming(r?.files,s);return S.length>0&&y().merge(f,S),n}if(e==="action"){let S=r&&typeof r.buttonId=="string"?r.buttonId:"";if(!S)return n;f.lastAction={buttonId:S,at:s},f.lastActionText=`${S} @ ${s}`;}return n});}function ut(t,e,r){let a=JSON.stringify(r),n=typeof Buffer<"u"?Buffer.byteLength(a):new TextEncoder().encode(a).length;t.writeHead(e,{...b,"Content-Type":"application/json; charset=utf-8","Content-Length":n}),t.end(a);}async function At(t,e,r){let a=await nt(t);if(!a)throw Object.assign(new Error("Card not found"),{statusCode:404});let n=y().resolve(a.card_data,e,r);if(!n.ok&&n.reason==="stale_reference")throw Object.assign(new Error("File reference is stale. Refresh and try again."),{statusCode:409});if(!n.ok)throw Object.assign(new Error("File not found"),{statusCode:404});let s=n.file,f=d(t),S=w(t),q=String(s.stored_name||""),_=`${f}/${q}`,D=S.files?await S.files.getBytes(_):null;if(!D)throw Object.assign(new Error("File not found"),{statusCode:404});return {fileRecord:s,bytes:D}}async function Pe(t,e,r,a){let{fileRecord:n,bytes:s}=await At(e,r,a),f=String(n.name||n.stored_name||"download.bin"),S=String(n.mime_type||"application/octet-stream");t.writeHead(200,{"Content-Type":S,"Content-Disposition":`attachment; filename="${f}"`,"Content-Length":s.length}),t.end(s);}function Fe(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 Oe(t,e,r){let a=t.split(/\r?\n/);return (e==="head"?a.slice(0,r):a.slice(-r)).join(`
2
+ `)}async function dt(t){let e=[];for await(let a of t)e.push(a);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 a=i[0];return a?a.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",a=i[0];return a?a.boardOps.sourceDataFetchFailure({params:{token:t,reason:r}}):{status:"fail",error:"no board context"}}let ve=chunkH22NK6KH_cjs.b({sseHub:L,corsHeaders:b,json:ut,buildPublishedRuntimePayload:()=>lt(),onSseClientConnected:W,onChannelSubscribed:J,onChannelUnsubscribed:B,apiBasePath:F,readJsonBody:t=>dt(t),initBoardAndSetup:()=>O(),bootstrapBoard:()=>Q(),boardContexts:i,publishPersistedStateSnapshot:t=>p(t),upsertCardsFromSource:(t,e)=>H(t,e)}).handleWatchersRoutes,Te=chunk7FGPOGRV_cjs.a({apiBasePath:F,json:ut,readJsonBody:t=>dt(t),bootstrapBoard:()=>Q(),createMcpFacade:()=>it(),createMcpToolRegistry:t=>le(t),resolveCardFileDownloadPayload:(t,e,r)=>At(t,e,r),isLikelyTextMimeType:t=>Fe(t),sliceTextByLines:(t,e,r)=>Oe(t,e,r)}).handleAgentfaceApi,xe=chunkNM6O35RY_cjs.a({apiBasePath:F,json:ut,readJsonBody:t=>dt(t),initBoardAndSetup:()=>O(),createMcpWebhookToolRegistry:()=>fe()}).handleWebhooksApi,je=ne({apiBasePath:F,json:ut,readJsonBody:t=>dt(t),initBoardAndSetup:()=>O(),bootstrapBoard:()=>Q(),buildPublishedRuntimePayload:()=>lt(),createMcpControlplaneToolRegistry:()=>wt(),retriggerCard:t=>we(t),applyCardAction:(t,e,r)=>ke(t,e,r),resolveChatHandlerTarget:t=>St(t),sendCardFileDownloadResponse:(t,e,r,a)=>Pe(t,e,r,a)}).handleRuntimeApi;async function Ee(t,e,r){return !!(await Te(t,e,r)||await xe(t,e,r)||await ve(t,e,r)||await je(t,e,r))}return {get apiBasePath(){return F},get corsHeaders(){return b},get queueLaneTuning(){return z},handleRuntimeApi:Ee,buildPublishedRuntimePayload:lt,__drainProcessAccumulatedLane:pt,handleChatAgentRequest:Be,clearChatRecords:he,reportSourceFetched(t,e){return Bt(t,{ref:e})},reportSourceFetchFailure(t,e){return kt(t,{reason:e})},get cardStore(){return i[0]?.publicCardStore??{get(){return Promise.resolve({status:"fail",error:"no board context"})},set(){return Promise.resolve({status:"fail",error:"no board context"})}}}}}function Rr(A){let F=String(A.apiBasePath||"/api/boards").replace(/\/$/,""),b={...oe,...A.corsHeaders||{}},z=A.serverMetaStore,I=A.boardRuntimeFactory,x=new Map,V="boards-config.json";function U(){let u=z.getText(V);if(!u)return {boards:[{id:"default",label:"Default Board"}]};try{return JSON.parse(u)}catch{return {boards:[{id:"default",label:"Default Board"}]}}}function G(u){z.putText(V,JSON.stringify(u,null,2));}function N(u){let i=String(u||"").replace(/[^a-zA-Z0-9_-]/g,"_").replace(/^_+|_+$/g,"");return i.length>0&&i.length<=64?i:null}function K(u){if(x.has(u))return x.get(u);let C=U().boards.find(v=>v.id===u)||{},k=I(u,C);return x.set(u,k),k}function W(u,i,C){let k=JSON.stringify(C),v=typeof Buffer<"u"?Buffer.byteLength(k):new TextEncoder().encode(k).length;u.writeHead(i,{...b,"Content-Type":"application/json; charset=utf-8","Content-Length":v}),u.end(k);}async function rt(u,i,C){let k=u.method||"GET",v=C.pathname;if(k==="GET"&&v===F)return W(i,200,{ok:true,boards:U().boards}),true;if(k==="POST"&&v===F){let E=[];for await(let p of u)E.push(p);let R=typeof Buffer<"u"?Buffer.concat(E).toString("utf-8").trim():new TextDecoder().decode(chunkBQUQTOPB_cjs.d(E)).trim(),w={};try{w=R?JSON.parse(R):{};}catch{w={};}let y=N(w.id);if(!y)return W(i,400,{error:"board id must be 1-64 alphanumeric/dash/underscore characters"}),true;let d=U();if(d.boards.some(p=>p.id===y))return W(i,409,{error:`Board "${y}" is already registered`}),true;let M=typeof w.label=="string"&&w.label.trim()?w.label.trim():y,P={id:y,label:M};for(let[p,H]of Object.entries(w))p==="id"||p==="label"||H!=null&&(P[p]=H);return d.boards.push(P),G(d),W(i,200,{ok:true,board:P}),true}return false}async function J(u,i,C){let v=C.pathname.match(new RegExp(`^${chunkBQUQTOPB_cjs.c(F)}/([^/]+)(/|$)`));if(!v)return false;let E=N(decodeURIComponent(v[1]));return E?U().boards.some(y=>y.id===E)?!!await K(E).handleRuntimeApi(u,i,C):(W(i,404,{error:`Board "${E}" not registered. POST ${F} with {id} to register it first.`}),true):(W(i,400,{error:"Invalid board id"}),true)}async function B(u,i,C){return !!(await rt(u,i,C)||await J(u,i,C))}function L(u){if(!U().boards.some(C=>C.id===u))throw Object.assign(new Error(`Board "${u}" not registered`),{statusCode:404});return {service:K(u)}}return {get apiBasePath(){return F},get corsHeaders(){return b},handleApi:B,requireBoardService:L}}exports.a=gr;exports.b=Rr;//# sourceMappingURL=chunk-QG6ERLZQ.cjs.map
3
+ //# sourceMappingURL=chunk-QG6ERLZQ.cjs.map
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});require('../chunk-GNFE24S7.cjs');function e(){let n=globalThis.jsonataSync;if(typeof n=="function")return n;throw new Error("[yaml-flow/compute-jsonata] Missing globalThis.jsonataSync. Load yaml-flow/browser/compute-jsonata.js before importing this browser path.")}function o(n){return e()(n)}function t(n){return o(n)}function s(n,a){return t(n).evaluate(a)}var r={jsonata:o,compileSync:t,evaluateSync:s},i=r;exports.compileSync=t;exports.default=i;exports.evaluateSync=s;exports.jsonata=o;//# sourceMappingURL=browser.cjs.map
2
+ //# sourceMappingURL=browser.cjs.map
@@ -0,0 +1,20 @@
1
+ /**
2
+ * compute-jsonata (browser/vite entry)
3
+ *
4
+ * Browser-safe sync JSONata compiler/evaluator. Reads the compiler from
5
+ * globalThis.jsonataSync, which is provided by yaml-flow/browser/compute-jsonata.js.
6
+ */
7
+ type JsonataExpression = {
8
+ evaluate: (data: unknown) => unknown;
9
+ };
10
+ type JsonataCompiler = (expr: string) => JsonataExpression;
11
+ declare function jsonata(expr: string): JsonataExpression;
12
+ declare function compileSync(expr: string): JsonataExpression;
13
+ declare function evaluateSync(expr: string, data: unknown): unknown;
14
+ declare const ComputeJsonata: {
15
+ jsonata: typeof jsonata;
16
+ compileSync: typeof compileSync;
17
+ evaluateSync: typeof evaluateSync;
18
+ };
19
+
20
+ export { type JsonataCompiler, type JsonataExpression, compileSync, ComputeJsonata as default, evaluateSync, jsonata };
@@ -0,0 +1,20 @@
1
+ /**
2
+ * compute-jsonata (browser/vite entry)
3
+ *
4
+ * Browser-safe sync JSONata compiler/evaluator. Reads the compiler from
5
+ * globalThis.jsonataSync, which is provided by yaml-flow/browser/compute-jsonata.js.
6
+ */
7
+ type JsonataExpression = {
8
+ evaluate: (data: unknown) => unknown;
9
+ };
10
+ type JsonataCompiler = (expr: string) => JsonataExpression;
11
+ declare function jsonata(expr: string): JsonataExpression;
12
+ declare function compileSync(expr: string): JsonataExpression;
13
+ declare function evaluateSync(expr: string, data: unknown): unknown;
14
+ declare const ComputeJsonata: {
15
+ jsonata: typeof jsonata;
16
+ compileSync: typeof compileSync;
17
+ evaluateSync: typeof evaluateSync;
18
+ };
19
+
20
+ export { type JsonataCompiler, type JsonataExpression, compileSync, ComputeJsonata as default, evaluateSync, jsonata };
@@ -0,0 +1,2 @@
1
+ import'../chunk-FW4363Y4.js';function e(){let n=globalThis.jsonataSync;if(typeof n=="function")return n;throw new Error("[yaml-flow/compute-jsonata] Missing globalThis.jsonataSync. Load yaml-flow/browser/compute-jsonata.js before importing this browser path.")}function o(n){return e()(n)}function t(n){return o(n)}function s(n,a){return t(n).evaluate(a)}var r={jsonata:o,compileSync:t,evaluateSync:s},i=r;export{t as compileSync,i as default,s as evaluateSync,o as jsonata};//# sourceMappingURL=browser.js.map
2
+ //# sourceMappingURL=browser.js.map
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});require('../chunk-GNFE24S7.cjs');var module$1=require('module');var _documentCurrentScript=typeof document!=='undefined'?document.currentScript:null;var r=module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.cjs', document.baseURI).href))),t=r("./jsonata-sync.cjs");function o(n){return t(n)}function s(n,e){return o(n).evaluate(e)}var p={jsonata:t,compileSync:o,evaluateSync:s},i=p;exports.compileSync=o;exports.default=i;exports.evaluateSync=s;exports.jsonata=t;//# sourceMappingURL=index.cjs.map
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1,20 @@
1
+ /**
2
+ * compute-jsonata (Node/npm entry)
3
+ *
4
+ * Sync JSONata compiler/evaluator backed by vendored jsonata-sync.cjs.
5
+ * Intended for npm ESM/CJS consumers in Node-like runtimes.
6
+ */
7
+ type JsonataExpression = {
8
+ evaluate: (data: unknown) => unknown;
9
+ };
10
+ type JsonataCompiler = (expr: string) => JsonataExpression;
11
+ declare const jsonata: JsonataCompiler;
12
+ declare function compileSync(expr: string): JsonataExpression;
13
+ declare function evaluateSync(expr: string, data: unknown): unknown;
14
+ declare const ComputeJsonata: {
15
+ jsonata: JsonataCompiler;
16
+ compileSync: typeof compileSync;
17
+ evaluateSync: typeof evaluateSync;
18
+ };
19
+
20
+ export { type JsonataCompiler, type JsonataExpression, compileSync, ComputeJsonata as default, evaluateSync, jsonata };
@@ -0,0 +1,20 @@
1
+ /**
2
+ * compute-jsonata (Node/npm entry)
3
+ *
4
+ * Sync JSONata compiler/evaluator backed by vendored jsonata-sync.cjs.
5
+ * Intended for npm ESM/CJS consumers in Node-like runtimes.
6
+ */
7
+ type JsonataExpression = {
8
+ evaluate: (data: unknown) => unknown;
9
+ };
10
+ type JsonataCompiler = (expr: string) => JsonataExpression;
11
+ declare const jsonata: JsonataCompiler;
12
+ declare function compileSync(expr: string): JsonataExpression;
13
+ declare function evaluateSync(expr: string, data: unknown): unknown;
14
+ declare const ComputeJsonata: {
15
+ jsonata: JsonataCompiler;
16
+ compileSync: typeof compileSync;
17
+ evaluateSync: typeof evaluateSync;
18
+ };
19
+
20
+ export { type JsonataCompiler, type JsonataExpression, compileSync, ComputeJsonata as default, evaluateSync, jsonata };
@@ -0,0 +1,2 @@
1
+ import'../chunk-FW4363Y4.js';import {createRequire}from'module';var r=createRequire(import.meta.url),t=r("./jsonata-sync.cjs");function o(n){return t(n)}function s(n,e){return o(n).evaluate(e)}var p={jsonata:t,compileSync:o,evaluateSync:s},i=p;export{o as compileSync,i as default,s as evaluateSync,t as jsonata};//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map