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
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export{a as LocalStorageService,e as buildBrowserArtifactsFromRuntime,b as createBoardLiveGraphRuntime,d as selectAllLiveCardModels,c as selectLiveCardModel}from'../chunk-
|
|
1
|
+
export{a as LocalStorageService,e as buildBrowserArtifactsFromRuntime,b as createBoardLiveGraphRuntime,d as selectAllLiveCardModels,c as selectLiveCardModel}from'../chunk-4BEQXKRF.js';import'../chunk-VGT3TRQG.js';import'../chunk-WDPOGXTY.js';import'../chunk-ATOQP3BD.js';import'../chunk-YT76JNKE.js';import'../chunk-MNEOJWPS.js';import'../chunk-FW4363Y4.js';//# sourceMappingURL=index.js.map
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
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 M(a){if(!a||typeof a!="object")return false;let t=a;return typeof t.kind=="string"&&t.kind.length>0}function J(a){if(!a||typeof a!="object")return [];let t=a;return t.kind==="notification-batch"?Array.isArray(t.notifications)?t.notifications.filter(M):[]:M(a)?[a]:[]}function X(a,t,i){let c=0;return {accepted:a.filter(_=>{if(!M(_))return c++,false;let S=_;return typeof S.sentAtMs=="number"&&t-S.sentAtMs>i?(c++,false):true}),rejected:c}}function Q(){return {status:null,computedValues:{},dataObjects:{},cards:{}}}function z(a){if(!a||typeof a!="object")return false;let t=a.summary;return !t||typeof t!="object"?false:Number(t.card_count||0)>0}function W(a){if(!a||typeof a!="object")return false;let t=a;return t.kind==="notification-batch"&&Array.isArray(t.notifications)}function V(a,t){if(t.kind==="status"){z(t.status)&&(a.status=t.status);return}if(t.kind==="computed_values"){a.computedValues[t.cardId]=t.values;return}if(t.kind==="data_object"){a.dataObjects[t.key]=t.payload;return}if(t.kind==="card_refreshed"){a.cards[t.cardId]=t.card;return}t.kind==="card_removed"&&(delete a.cards[t.cardId],delete a.computedValues[t.cardId]);}function Y(a,t){if(W(t)){for(let i of t.notifications)M(i)&&V(a,i);return}M(t)&&V(a,t);}function j(a,t){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||`${t} failed`),{statusCode:400}):Object.assign(new Error(`${t} returned an unexpected response`),{statusCode:500})}async function N(a,t){return j(await a,t)}function T(a$1){let t=a(a$1,"key");if(!t)throw Object.assign(new Error("MCP tool requires key"),{statusCode:400});let i=t.split(".");if(!(i.length>=2&&i.every(g=>/^[A-Za-z_][A-Za-z0-9_]*$/.test(g))))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 t}function q(a,t){let i=a.__private;for(let c of t.split(".")){if(!i||typeof i!="object"||Array.isArray(i)||!Object.prototype.hasOwnProperty.call(i,c))return {exists:false,value:null};i=i[c];}return {exists:true,value:i}}function ot(a$1){let{boardId:t,bootstrapBoard:i,sseHub:c,onChannelSubscribed:g,onChannelUnsubscribed:_,getMcpFacade:S,getMcpCardStoreFacade:n}=a$1;function f(s){let d=a(s,"board_id");if(!d)throw Object.assign(new Error("MCP tool requires board_id"),{statusCode:400});if(d!==t)throw Object.assign(new Error(`Unknown board_id: ${d}`),{statusCode:400})}function h(s){let d=a(s,"client_id");if(!d)throw Object.assign(new Error("MCP tool requires client_id"),{statusCode:400});return d}function w(s){f(s);let d=h(s),e=a(s,"channel_name"),r=a(s,"card_id")||void 0;if(!e)throw Object.assign(new Error("MCP tool requires channel_name"),{statusCode:400});return {clientId:d,channelName:e,...r?{cardId:r}:{}}}function R(s){f(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 I(s){await i();let{cardId:d}=R(s),e=h(s);if(!await c.subscribeChat(e,d))throw Object.assign(new Error(`SSE client not connected: ${e}`),{statusCode:404});return {status:"success",data:{boardId:t,cardId:d,clientId:e,subscribed:true}}}async function u(s){await i();let{cardId:d}=R(s),e=h(s);if(!c.unsubscribeChat(e,d))throw Object.assign(new Error(`SSE client not connected: ${e}`),{statusCode:404});return {status:"success",data:{boardId:t,cardId:d,clientId:e,subscribed:false}}}async function b(s,d){await i();let{clientId:e,channelName:r,cardId:o}=w(s);if(!c.has(e))throw Object.assign(new Error(`SSE client not connected: ${e}`),{statusCode:404});return d?(c.subscribeChannel(e,r,o),g?.(e,r,o?{cardId:o}:{})):(c.unsubscribeChannel(e,r,o),_?.(e,r,o?{cardId:o}:{})),{status:"success",data:{boardId:t,clientId:e,channelName:r,subscribed:d,...o?{cardId:o}:{}}}}async function m(s,d){let{cardId:e}=R(s);return await S().setChatProcessing({cardId:e,active:d}),{status:"success",data:{boardId:t,cardId:e,active:d}}}async function p(s){let{cardId:d}=R(s),e=await S().getChatProcessing({cardId:d});return {status:"success",data:{boardId:t,cardId:d,active:e.active}}}async function y(s){let{cardId:d}=R(s),e=T(s);if(!Object.prototype.hasOwnProperty.call(s,"value"))throw Object.assign(new Error("MCP tool requires value"),{statusCode:400});if(e.split(".").includes("visible_controlplane_only")){let r=await N(n().get({params:{id:d}}),"cardStore.get"),o=Array.isArray(r.cards)&&r.cards.length>0&&typeof r.cards[0]=="object"&&!Array.isArray(r.cards[0])?r.cards[0]:null,k=o?q(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:t,cardId:d,key:e}}}return j(await n().patch({params:{id:d,path:`__private.${e}`},body:{value:s.value}}),"cardStore.patch"),{status:"success",data:{boardId:t,cardId:d,key:e}}}async function C(s){let{cardId:d}=R(s),e=T(s),r=await N(n().get({params:{id:d}}),"cardStore.get"),o=Array.isArray(r.cards)&&r.cards.length>0&&r.cards[0]&&typeof r.cards[0]=="object"&&!Array.isArray(r.cards[0])?r.cards[0]:null;if(!o)throw Object.assign(new Error(`Card "${d}" not found`),{statusCode:404});let k=q(o,e);return {status:"success",data:{boardId:t,cardId:d,key:e,exists:k.exists,value:k.value}}}return {requireCardArgs:R,subscribeChat:I,unsubscribeChat:u,watchChannel:b,setChatProcessing:m,getChatProcessing:p,setCardMeta:y,getCardMeta:C}}function it(a){let{boardId:t,boardContexts:i,readChatRecords:c,getChatProcessing:g}=a,_=Number.isInteger(a.chatBootstrapTailTurns)&&a.chatBootstrapTailTurns>0?a.chatBootstrapTailTurns:1;function S(u){return {role:String(u.role||"system"),text:String(u.text||""),files:Array.isArray(u.files)?u.files:[],...typeof u.turn=="string"&&u.turn?{turn:u.turn}:{}}}function n(u){if(u.length===0)return null;if(u.length===1)return u[0];let b=[],m=["completed","eligible","pending","blocked","unresolved","failed","in_progress","orphan_cards"],p={};for(let C of m)p[C]=0;for(let C of u){let s=C,d=Array.isArray(s.cards)?s.cards:[];b.push(...d);for(let e of m)p[e]+=Number(s?.summary?.[e]||0);}let y=u[0];return {...y,cards:b,summary:{...y.summary||{},card_count:b.length,...p}}}async function f(){let u=[];for(let b of i)try{let m=await b.boardOps.buildSseOneShotPayload({});m.status==="success"&&m.data&&u.push(m.data);}catch{}return u}async function h(){let b=(await f()).map(m=>m.statusSnapshot).filter(Boolean);if(b.length===0){let m=i.map(p=>p.notification.status).filter(Boolean);return n(m)}return n(b)}async function w(){let u={},b=await f();for(let m of b)Object.assign(u,m.cardRuntimeById||{});if(Object.keys(u).length>0)return u;for(let m of i)for(let[p,y]of Object.entries(m.notification.computedValues)){let C=m.notification.cards[p];u[p]={schema_version:"v1",card_id:p,card_data:C?.card_data??{},computed_values:y??{}};}return u}async function R(){let u={},b=await f();for(let m of b)Object.assign(u,m.dataObjectsByToken||{});if(Object.keys(u).length===0)for(let m of i)Object.assign(u,m.notification.dataObjects||{});return u}async function I(){let u=await f(),b=u.flatMap(C=>Array.isArray(C.cardDefinitions)?C.cardDefinitions:[]),m={},p={};for(let C of u)Object.assign(m,C.dataObjectsByToken||{}),Object.assign(p,C.cardRuntimeById||{});let y={};for(let C of b){if(!C?.id)continue;let s=C.id;try{let d=await c(s,{tailTurns:_}),e=await g(s);(d.length>0||e)&&(y[s]={messages:d.map(r=>S(r)),receiving:!1,processing:e});}catch{}}return {boardId:t,cardDefinitions:b,statusSnapshot:await h(),dataObjectsByToken:m,cardRuntimeById:p,cardChatsByCardId:y}}return {readStatusSnapshot:h,readCardRuntimeArtifacts:w,readDataObjectsByToken:R,buildPublishedRuntimePayload:I}}function K(a){let t=String(a||"").trim();if(!t)return "upload.bin";let i=Math.max(t.lastIndexOf("/"),t.lastIndexOf("\\"));return (i>=0?t.slice(i+1):t)||"upload.bin"}function ct(a){let{safeCardId:t,artifactsStores:i,cardFileMetadataStore:c,readCardFromStore:g,updateCardLocalOnly:_,writeChatRecord:S}=a;async function n(w){let R=[];try{let I=await g(w);if(!I)return R;let u=c().read(I.card_data&&typeof I.card_data=="object"?I.card_data:null);for(let b of u)R.push(String(b.stored_name??""));}catch{}return R}async function f(w,R,I,u){let b=t(w),m=i(w),p=K(R),y=await n(w),s=`${String(y.length+1).padStart(3,"0")}-${p}`.slice(-36);if(!m.files)throw Object.assign(new Error(`artifactsStoreRef is not configured for card uploads: ${w}`),{statusCode:500});return await m.files.putBytes(`${b}/${s}`,new Uint8Array(u),I||"application/octet-stream"),{name:p,stored_name:s,size:u.length,mime_type:I||"application/octet-stream",uploaded_at:new Date().toISOString()}}async function h(w,R,I,u,b){if(!u.length)throw Object.assign(new Error("Empty upload body"),{statusCode:400});let m=b?.inChat===true,p=await f(w,R,I,u),y=null;if(await _(w,C=>{let s=new Date().toISOString(),d=C.card_data&&typeof C.card_data=="object"?C.card_data:{};C.card_data=d;let e=c().normalizeIncoming([{name:p.name,stored_name:p.stored_name,size:p.size,mime_type:p.mime_type,uploaded_at:p.uploaded_at||s,chat:m}],s);return y=c().merge(d,e).findIndex(o=>o.stored_name===p.stored_name),C}),m&&b?.suppressChatRecordWrite!==true){let C=typeof y=="number"&&y>=0?` #${y}`:"";await S(w,"system",`file uploaded: ${p.name} as ${p.stored_name}${C}`,[],b?.turnId??"");}return {ok:true,file:{...p,...typeof y=="number"&&y>=0?{file_idx:y}:{},chat:m},...typeof y=="number"&&y>=0?{file_idx:y}:{}}}return {uploadCardFile:h,readCardStoredFileNames:n}}function pt(a$1){return {"discover.source-kinds":()=>a$1.discoverSourceKinds(),"inspect.board-runtime-status":()=>a$1.inspectBoardRuntimeStatus(),"inspect.card-definition-and-runtime":t=>a$1.inspectCardDefinitionAndRuntime({cardId:a(t,"card_id")}),"inspect.chat-messages-on-cards":t=>{let i=b(t,"tail_turns"),c=b(t,"tail"),g=a(t,"turn_id"),_=t.all_turns===true,S=a(t,"tail_turns_before_id");return a$1.inspectChatMessagesOnCards({cardId:a(t,"card_id"),...i!==void 0?{lastUserTurns:i}:{},...c!==void 0?{tail:c}:{},...g?{turnId:g}:{},..._?{allTurns:true}:{},...S?{tailTurnsBeforeId:S}:{}})},"inspect.file-contents":t=>a$1.inspectFileContents({cardId:a(t,"card_id"),fileIdx:Number(b(t,"file_idx"))}),"preflight.validate-candidate-card-definition":t=>a$1.preflightValidateCandidateCardDefinition({candidateCardContent:d(t,"candidate_card_content","candidate_card_content")}),"preflight.materialize-candidate-card":t=>a$1.preflightMaterializeCandidateCard({candidateCardContent:d(t,"candidate_card_content","candidate_card_content"),mockRequires:d(t,"mock_requires","mock_requires"),mockFetchedSources:d(t,"mock_fetched_sources","mock_fetched_sources")}),"preflight.probe-single-source-in-candidate-card":t=>a$1.preflightProbeSingleSourceInCandidateCard({candidateCardContent:d(t,"candidate_card_content","candidate_card_content"),mockProjections:c(t,"mock_projections"),sourceIdx:e(t,"source_idx","source_idx")}),"preflight.run-single-source-in-candidate-card":t=>a$1.preflightRunSingleSourceInCandidateCard({candidateCardContent:d(t,"candidate_card_content","candidate_card_content"),mockProjections:c(t,"mock_projections"),sourceIdx:e(t,"source_idx","source_idx")}),"preflight.run-single-source-in-live-card":t=>a$1.preflightRunSingleSourceInLiveCard({cardId:a(t,"card_id"),sourceIdx:e(t,"source_idx","source_idx"),mockRequires:d(t,"mock_requires","mock_requires")}),"preflight.run-one-cycle-with-candidate-card":t=>a$1.preflightRunOneCycleWithCandidateCard({candidateCardContent:d(t,"candidate_card_content","candidate_card_content"),mockRequires:c(t,"mock_requires")}),"manage.read-card":t=>a$1.manageReadCard({cardId:a(t,"card_id")}),"stage-ai-response-and-any-attachments":t=>{let i=a(t,"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(t,"card_id"),role:"assistant",...typeof t.text=="string"?{text:t.text}:{},...i?{turn:i}:{},...Array.isArray(t.files)?{files:t.files}:{}})},"stage-ai-failure-message":t=>{let i=a(t,"turn_id"),c=a(t,"failure");if(!i)throw Object.assign(new Error("stage-ai-failure-message requires a non-empty turn_id"),{statusCode:400});if(!c)throw Object.assign(new Error("stage-ai-failure-message requires a non-empty failure"),{statusCode:400});return a$1.manageAddChatEntryAndAnyAttachments({cardId:a(t,"card_id"),role:"system",text:c,turn:i})},"manage.upsert-card":t=>a$1.manageUpsertCard({cardId:a(t,"card_id"),candidateCardContent:c(t,"candidate_card_content")}),"manage.remove-card":t=>a$1.manageRemoveCard({cardId:a(t,"card_id")})}}function mt(a$1){return {"webhook.process-accumulated":()=>a$1.webhookProcessAccumulated(),"webhook.source-fetch-done":t=>a$1.webhookSourceFetchDone({token:a(t,"token"),ref:a(t,"ref")}),"webhook.source-fetch-failed":t=>a$1.webhookSourceFetchFailed({token:a(t,"token"),reason:a(t,"reason")})}}function ft(a$1){let{boardId:t,uploadCardFile:i,getMcpFacade:c$1,controlplane:g}=a$1;function _(n,f){let h=a(n,"board_id");if(!h)throw Object.assign(new Error(`${f} requires board_id`),{statusCode:400});if(h!==t)throw Object.assign(new Error(`Unknown board_id: ${h}`),{statusCode:400})}function S(n,f){let{cardId:h}=g.requireCardArgs(n),w=a(n,"turn_id");return _(n,f),c$1().manageAddChatAttachment({cardId:h,role:a(n,"role")||"user",...w?{turn:w}:{},files:[{file_name:a(n,"file_name"),content_type:a(n,"content_type")||"application/octet-stream",...typeof n.text=="string"?{text:n.text}:{},...typeof n.base64=="string"?{base64:n.base64}:{},...Array.isArray(n.bytes)?{bytes:n.bytes}:{}}]})}return {"list-runtime-cards":n=>(_(n,"list-runtime-cards"),c$1().listRuntimeCards()),"sse.subscribe-chat":n=>g.subscribeChat(n),"sse.unsubscribe-chat":n=>g.unsubscribeChat(n),"sse.watch-channel":n=>g.watchChannel(n,true),"sse.unwatch-channel":n=>g.watchChannel(n,false),"getstate.is-chat-processing":n=>g.getChatProcessing(n),"setstate.chat-processing-started":n=>g.setChatProcessing(n,true),"setstate.chat-processing-done":n=>g.setChatProcessing(n,false),"getstate.card-private":n=>g.getCardMeta(n),"setstate.card-private":n=>g.setCardMeta(n),"manage.upload-card-file":n=>{let f$1=a(n,"card_id"),h=a(n,"file_name"),w=a(n,"content_type")||"application/octet-stream",R=f(n);if(_(n,"manage.upload-card-file"),!f$1)throw Object.assign(new Error("manage.upload-card-file requires card_id"),{statusCode:400});if(!h)throw Object.assign(new Error("manage.upload-card-file requires file_name"),{statusCode:400});if(!R)throw Object.assign(new Error("manage.upload-card-file requires args.bytes, args.text, or args.base64"),{statusCode:400});return i(f$1,h,w,R,{inChat:false})},"manage.add-chat-attachment":n=>S(n,"manage.add-chat-attachment"),"manage.add-chat-attachement":n=>S(n,"manage.add-chat-attachement"),"manage.add-chat-entry-and-any-attachments":n=>{let{cardId:f}=g.requireCardArgs(n),h=a(n,"role")||"user",w=a(n,"turn_id");return _(n,"manage.add-chat-entry-and-any-attachments"),c$1().manageAddChatEntryAndAnyAttachments({cardId:f,role:h,...typeof n.text=="string"?{text:n.text}:{},...w?{turn:w}:{},...Array.isArray(n.files)?{files:n.files}:{}})},"manage.patch-card":n=>{let{cardId:f}=g.requireCardArgs(n);return _(n,"manage.patch-card"),c$1().managePatchCard({cardId:f,patch:c(n,"patch")},{allowControlplaneOnlyCards:true})},"manage.upsert-card":n=>{let{cardId:f}=g.requireCardArgs(n);return _(n,"manage.upsert-card"),c$1().manageUpsertCard({cardId:f,candidateCardContent:c(n,"candidate_card_content")},{allowControlplaneOnlyCards:true})},"manage.remove-card":n=>{let{cardId:f}=g.requireCardArgs(n);return _(n,"manage.remove-card"),c$1().manageRemoveCard({cardId:f},{allowControlplaneOnlyCards:true})},"manage.admin-read-card":async n=>{let{cardId:f}=g.requireCardArgs(n);return {status:"success",data:{cards:await c$1().adminReadCard({cardId:f})}}},"manage.admin-upsert-card":n=>{let f=a(n,"board_id"),h=a(n,"card_id");if(!f)throw Object.assign(new Error("manage.admin-upsert-card requires board_id"),{statusCode:400});if(!h)throw Object.assign(new Error("manage.admin-upsert-card requires card_id"),{statusCode:400});if(f!==t)throw Object.assign(new Error(`Unknown board_id: ${f}`),{statusCode:400});return c$1().adminUpsertCard({cardId:h,candidateCardContent:c(n,"candidate_card_content")})}}}function yt(a){let{boardContexts:t,cardOwnerIndex:i,cardContextForCard:c,readStatusSnapshot:g,readDataObjectsByToken:_,readCardRuntimeArtifacts:S,readCardFromStore:n,readCardDefinitions:f,processAccumulatedLaneInternal:h,reportSourceFetched:w,reportSourceFetchFailure:R,uploadCardFile:I,chatStorePublic:u,serverUrl:b,apiBasePath:m}=a;function p(){return t[0]??null}function y(){return {async status(){let e=await g();return e==null?{status:"fail",error:"Board status is unavailable"}:{status:"success",data:e}},async getOutputsDataObject(e){let r=e?.params?.key;return r?{status:"success",data:(await _())[r]}:{status:"fail",error:"getOutputsDataObject requires params.key"}},async getOutputsComputedValues(e){let r=e?.params?.key;return r?{status:"success",data:(await S())[r]?.computed_values}:{status:"fail",error:"getOutputsComputedValues requires params.key"}},async getOutputsFetchedSources(e){let r=e?.params?.key;if(!r)return {status:"fail",error:"getOutputsFetchedSources requires params.key"};let o=c(r)??p();return o?o.boardOps.getOutputsFetchedSources({params:{key:r}}):{status:"fail",error:"Board context is unavailable"}},async removeCard(e){let r=e?.params?.id;if(!r)return {status:"fail",error:"removeCard requires params.id"};let o=c(r)??p();return o?o.boardOps.removeCard({params:{id:r}}):{status:"fail",error:"Board context is unavailable"}},async upsertCard(e){let r=e?.params?.cardId;if(!r)return {status:"fail",error:"upsertCard requires params.cardId"};let o=c(r)??p();if(!o)return {status:"fail",error:"Board context is unavailable"};let k=await o.boardOps.upsertCard({params:{cardId:r,restart:e.params.restart===true}});if(k.status!=="success")return k;if(a$1(o.boardAdapter)){let P=await h(true);if(P.status!=="success")return P}return k}}}function C(){let e=()=>{let r=p();if(!r?.nonCore)throw new Error("Board non-core adapter is not configured for MCP preflight/discovery tools");return r.nonCore};return {describeTaskExecutorCapabilities(r){return e().describeTaskExecutorCapabilities(r)},validateCardPreflight(r){return e().validateCardPreflight(r)},evalCardCompute(r){return e().evalCardCompute(r)},probeSourcePreflight(r){return e().probeSourcePreflight(r)},runSourcePreflight(r){return e().runSourcePreflight(r)},simulateCardCycle(r){return e().simulateCardCycle(r)}}}function s(){return {async get(e){let r=typeof e.params?.id=="string"?e.params.id:void 0;if(r){let o=await n(r);return o?{status:"success",data:{cards:[o]}}:{status:"success",data:{cards:[]}}}return {status:"success",data:{cards:await f()}}},async set(e){let r=e.body;if(r==null)return {status:"fail",error:"set requires a body (card object or array of cards)"};let o=Array.isArray(r)?r:[r];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 E=i.get(A)??0,D=t[E]??p();if(!D)return {status:"fail",error:"Board context is unavailable"};let L=await D.cardStoreOps.set({body:P});if(L.status!=="success")return L;i.set(A,E);}return {status:"success",data:{count:o.length}}},async del(e){let r=[e.params?.id,...e.body?.ids??[]].filter(o=>typeof o=="string"&&!!o);if(r.length===0)return {status:"fail",error:"del requires body.ids (string[]) or params.id"};for(let o of r){let k=c(o)??p();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:r.length}}},async patch(e){let r=typeof e.params?.id=="string"?e.params.id:void 0,o=typeof e.params?.path=="string"?e.params.path:void 0;if(!r||!o)return {status:"fail",error:"patch requires params.id and params.path"};let k=c(r)??p();return k?k.cardStoreOps.patch(e):{status:"fail",error:"Board context is unavailable"}},async appendFiles(e){let r=typeof e.params?.id=="string"?e.params.id:void 0;if(!r)return {status:"fail",error:"appendFiles requires params.id"};let o=c(r)??p();return o?o.cardStoreOps.appendFiles(e):{status:"fail",error:"Board context is unavailable"}}}}function d(){return a$2({board:y(),nonCore:C(),cardStore:s(),chatStore:u,processAccumulated:()=>h(true),sourceFetchDone:({token:e,ref:r})=>w(e,r),sourceFetchFailed:({token:e,reason:r})=>R(e,r),uploadCardFile({cardId:e,fileName:r,contentType:o,bytes:k,suppressChatRecordWrite:P}){return I(e,r,o,k,{inChat:true,...P===true?{suppressChatRecordWrite:true}:{}})},buildFileDownloadUrl({cardId:e,fileIdx:r,storedName:o}){let k=`${b||""}${m}/cards/${encodeURIComponent(e)}/files/${r}`;return o?`${k}?sn=${encodeURIComponent(o)}`:k},readFetchedSourceJsonByRef({cardId:e,ref:r}){let o=c(e)??p();if(!o||a$1(o.boardAdapter))return null;let A=o.boardAdapter.resolveBlob(b$1(r)).trim();return A?JSON.parse(A):null}})}return {mcpBoardFacade:y,mcpNonCoreFacade:C,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,T as h,q as i,ot as j,it as k,ct as l,pt as m,mt as n,ft as o,yt as p};//# sourceMappingURL=chunk-37JSBRZO.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-37JSBRZO.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {u}from'./chunk-VGT3TRQG.js';import {a}from'./chunk-ATOQP3BD.js';function b(e){return JSON.parse(JSON.stringify(e))}function E(e){let r=e.provides&&e.provides.length>0?e.provides.map(n=>n.bindTo):[e.id];return {requires:e.requires&&e.requires.length>0?[...e.requires]:void 0,provides:r,taskHandlers:[e.id],description:e.meta?.title??e.id}}function I(e){let r=new Map;for(let[n,u]of e.entries()){let o=u.provides&&u.provides.length>0?u.provides:[{bindTo:n,ref:"card_data"}];for(let h of o)r.set(h.bindTo,n);}return r}function O(e,r){let n=I(e),u=e.get(r);if(u){for(let o of u.requires??[])if(!n.has(o))throw new Error(`Card "${r}" requires token "${o}" but no card provides it`)}}var F={CARD_PREFIX:"yf:cards:",RUNTIME_OUT_PREFIX:"yf:runtime-out:cards:",STATUS_KEY:"yf:runtime-out:status",writeCard(e,r){try{localStorage.setItem(this.CARD_PREFIX+e,JSON.stringify(r));}catch(n){console.warn(`Failed to write card ${e} to localStorage:`,n);}},readCard(e){try{let r=localStorage.getItem(this.CARD_PREFIX+e);return r?JSON.parse(r):null}catch(r){return console.warn(`Failed to read card ${e} from localStorage:`,r),null}},readAllCards(e){let r={};for(let n of e){let u=this.readCard(n);u&&(r[n]=u);}return r},writeComputedArtifact(e){if(!(!e||!e.card_id))try{localStorage.setItem(this.RUNTIME_OUT_PREFIX+String(e.card_id),JSON.stringify(e));}catch(r){console.warn(`Failed to write computed artifact ${e.card_id}:`,r);}},readComputedArtifact(e){try{let r=localStorage.getItem(this.RUNTIME_OUT_PREFIX+e);return r?JSON.parse(r):null}catch(r){return console.warn(`Failed to read computed artifact ${e}:`,r),null}},readAllComputedArtifacts(e){let r={};for(let n of e){let u=this.readComputedArtifact(n);u&&(r[n]=u);}return r},writeStatusSnapshot(e){try{localStorage.setItem(this.STATUS_KEY,JSON.stringify(e));}catch(r){console.warn("Failed to write status snapshot to localStorage:",r);}},readStatusSnapshot(){try{let e=localStorage.getItem(this.STATUS_KEY);return e?JSON.parse(e):null}catch(e){return console.warn("Failed to read status snapshot from localStorage:",e),null}},clear(){let e=[];for(let r=0;r<localStorage.length;r++){let n=localStorage.key(r);n&&(n.startsWith(this.CARD_PREFIX)||n.startsWith(this.RUNTIME_OUT_PREFIX)||n===this.STATUS_KEY)&&e.push(n);}for(let r of e)localStorage.removeItem(r);}};function H(e,r={}){let n=Array.isArray(e)?{}:{id:e.id,title:e.title,mode:e.mode,positions:e.positions,settings:e.settings},u$1=Array.isArray(e)?e:e.nodes,o=new Map;for(let t of u$1){if(o.has(t.id))throw new Error(`Duplicate card ID: "${t.id}"`);o.set(t.id,b(t));}let h=new Set,S=r.taskExecutor,L=r.sourceAdapters??{},d=r.defaultSourceAdapter,m=null,A=(t,g)=>{let a={events:t,graph:g,nodes:v()};for(let w of h)w(a);},_=t=>async g=>{let a$1=o.get(t);if(!a$1)return "task-initiate-failure";let w={};for(let R of a$1.requires??[]){let y=g.state[R];if(!y||typeof y!="object")continue;let k=y.provides_data;!k||typeof k!="object"||Object.prototype.hasOwnProperty.call(k,R)&&(w[R]=k[R]);}let p={};if(a$1.source_defs&&a$1.source_defs.length>0){let R=L[t]??d,y=S?await S({card:a$1,input:g}):R?await R({card:a$1,input:g}):void 0;if(y&&typeof y=="object")for(let k of a$1.source_defs)Object.prototype.hasOwnProperty.call(y,k.bindTo)?p[k.bindTo]=y[k.bindTo]:a$1.source_defs.length===1&&(p[k.bindTo]=y);}let c={id:a$1.id,card_data:b(a$1.card_data??{}),requires:w,source_defs:a$1.source_defs,compute:a$1.compute};c._sourcesData=p,c.compute&&c.compute.length>0&&await a.run(c,{sourcesData:p});let T={};if(a$1.provides&&a$1.provides.length>0)for(let{bindTo:R,ref:y}of a$1.provides)T[R]=a.resolve(c,y);else T[a$1.id]={...c.card_data??{},...c.computed_values??{},...c._sourcesData??{}};let B={provides_data:T,card_data:c.card_data??{},computed_values:c.computed_values??{},fetched_sources:p,requires:w};return m?.resolveCallback(g.callbackToken,B),"task-initiated"},s={},f={};for(let[t,g]of o.entries())O(o,t),s[t]=E(g),f[t]=_(t);let l={id:n.id??`browser-board-${Date.now()}`,settings:{completion:"manual",execution_mode:"eligibility-mode",...n.settings??{},...r.graphSettings??{}},tasks:s},C=r.reactiveOptions?.onDrain,i=u(l,{...r.reactiveOptions??{},handlers:f,onDrain:(t,g,a)=>{C?.(t,g,a),A(t,g);}},r.executionId);m=i;function v(){let t=i.getState(),g=[];for(let[a,w]of o.entries()){let p=t.state.tasks[a]?.data,c=t.state.tasks[a],T={...w.card_data??{},...p&&typeof p.card_data=="object"?p.card_data:{}},B=c?.status==="running"?"loading":c?.status,R={...T,...B?{status:B}:{},...c?.lastUpdated?{lastRun:c.lastUpdated}:{},...c?.status==="failed"&&c.error?{error:c.error}:{}};g.push({id:a,card:b(w),card_data:R,requires:p&&typeof p.requires=="object"?b(p.requires):{},computed_values:p&&typeof p.computed_values=="object"?b(p.computed_values):{},runtime_state:c?b(c):{}});}return g}return {getGraph:()=>i,getState:()=>i.getState(),getSchedule:()=>i.getSchedule(),getNodes:()=>v(),getBoard:()=>({...n,nodes:v()}),subscribe(t){return h.add(t),t({events:[],graph:i.getState(),nodes:v()}),()=>h.delete(t)},addCard(t){if(o.has(t.id))throw new Error(`Card "${t.id}" already exists`);o.set(t.id,b(t)),O(o,t.id),i.registerHandler(t.id,_(t.id)),i.addNode(t.id,E(t));},upsertCard(t){o.set(t.id,b(t)),O(o,t.id),i.registerHandler(t.id,_(t.id)),i.addNode(t.id,E(t));},removeCard(t){o.delete(t),i.unregisterHandler(t),i.removeNode(t);},patchCardState(t,g){let a=o.get(t);if(!a)throw new Error(`Card "${t}" not found`);a.card_data={...a.card_data??{},...g},i.retrigger(t);},retrigger(t){i.retrigger(t);},retriggerAll(){i.retriggerAll(Array.from(o.keys()));},push(t){i.push(t);},pushAll(t){i.pushAll(t);},dispose(){h.clear(),i.dispose();}}}function G(e){return e==="running"||e==="in-progress"?"loading":e==="failed"?"error":"fresh"}function D(e){return e==="loading"?"in-progress":e==="error"?"failed":e==="stale"?"pending":e==="fresh"?"completed":"pending"}function M(e,r){let n=r&&typeof r=="object"&&!Array.isArray(r)?r:{};return {schema_version:n.schema_version||"v1",card_id:typeof n.card_id=="string"?n.card_id:e,card_data:n.card_data&&typeof n.card_data=="object"&&!Array.isArray(n.card_data)?structuredClone(n.card_data):{},computed_values:n.computed_values&&typeof n.computed_values=="object"&&!Array.isArray(n.computed_values)?structuredClone(n.computed_values):{}}}function P(e,r){if(!e||typeof e!="object")throw new Error("payload must be an object");if(!r)throw new Error("cardId is required");let u=(Array.isArray(e.cardDefinitions)?e.cardDefinitions:[]).find(t=>t.id===r);if(!u)throw new Error(`cardDefinitions has no entry with id ${r}`);let o=e.statusSnapshot&&typeof e.statusSnapshot=="object"?e.statusSnapshot:{},h=e.cardRuntimeById&&typeof e.cardRuntimeById=="object"?e.cardRuntimeById:{},S=e.dataObjectsByToken&&typeof e.dataObjectsByToken=="object"?e.dataObjectsByToken:{},d=(Array.isArray(o.cards)?o.cards:[]).find(t=>t.name===r),m=structuredClone(u),A=M(r,h[r]),s={...m.card_data&&typeof m.card_data=="object"&&!Array.isArray(m.card_data)?m.card_data:{},...A.card_data||{},status:G(d?.status),lastRun:d?.runtime?.last_transition_at??null};d?.error?.message&&(s.error=d.error.message);let f=d?{task_status:d.status??null,card_status:G(d.status),runtime:structuredClone(d.runtime??{}),error:d.error?structuredClone(d.error):null,blocked_by:Array.isArray(d.blocked_by)?structuredClone(d.blocked_by):[],requires_missing:Array.isArray(d.requires_missing)?structuredClone(d.requires_missing):[]}:{task_status:null,card_status:s.status??"fresh",runtime:{last_transition_at:s.lastRun??null},error:s.error?{message:s.error}:null,blocked_by:[],requires_missing:[]},l=Array.isArray(m.requires)?m.requires:[],C={};for(let[t,g]of Object.entries(S))C[t]=structuredClone(g);for(let t of l)Object.prototype.hasOwnProperty.call(C,t)||(C[t]=null);let v=(e.cardChatsByCardId&&typeof e.cardChatsByCardId=="object"?e.cardChatsByCardId:{})[r],q=v?{messages:Array.isArray(v.messages)?v.messages:[],receiving:!!v.receiving,processing:!!v.processing}:null;return {id:r,card:m,card_data:s,requires:C,computed_values:A.computed_values,runtime_state:f,card_chats:q}}function $(e){if(!e||typeof e!="object")throw new Error("payload must be an object");return (Array.isArray(e.cardDefinitions)?e.cardDefinitions:[]).map(n=>P(e,n.id))}function J({boardPath:e,cardDefinitions:r,runtimeModels:n,graphState:u}){let o=Array.isArray(r)?r:[],h=Array.isArray(n)?n:[],S=new Map(h.map(s=>[s.id,s])),d=u.state?.tasks??{},m={};for(let s of h)s?.id&&(m[s.id]={schema_version:"v1",card_id:s.id,card_data:structuredClone(s.card_data??{}),computed_values:structuredClone(s.computed_values??{})});let A={};for(let s of Object.keys(d)){let f=d[s]?.data?.provides_data;if(f&&typeof f=="object")for(let l of Object.keys(f))A[l]=structuredClone(f[l]);}let _=o.map(s=>{let f=S.get(s.id)??{},l=d[s.id],C=typeof l?.status=="string"?l.status:D(f.card_data?.status),i=typeof l?.error=="string"?l.error:typeof f.card_data?.error=="string"?f.card_data.error:null;return {name:s.id,status:C,...i?{error:{message:i,code:"TASK_FAILED",at:l?.failedAt??null,source:"browser-runtime"}}:{},requires:Array.isArray(s.requires)?s.requires:[],requires_satisfied:[],requires_missing:[],provides_declared:Array.isArray(s.provides)?s.provides.map(v=>v.bindTo):[s.id],provides_runtime:Object.keys(l?.data?.provides_data??{}).sort(),blocked_by:[],unblocks:[],runtime:{attempt_count:l?.executionCount??0,restart_count:l?.retryCount??0,in_progress_since:C==="in-progress"?l?.startedAt??null:null,last_transition_at:l?.lastUpdated??f.card_data?.lastRun??null,last_completed_at:l?.completedAt??null,last_restarted_at:l?.startedAt??null,status_age_ms:null}}});return {cardDefinitions:structuredClone(o),cardRuntimeById:m,dataObjectsByToken:A,statusSnapshot:{schema_version:"v1",meta:{board:{path:e??"browser-runtime"}},summary:{card_count:_.length,completed:_.filter(s=>s.status==="completed").length,eligible:0,pending:_.filter(s=>s.status==="pending").length,blocked:0,unresolved:0,failed:_.filter(s=>s.status==="failed").length,in_progress:_.filter(s=>s.status==="in-progress").length,orphan_cards:0,topology:{edge_count:0,max_fan_out_card:null,max_fan_out:0}},cards:_}}}export{F as a,H as b,P as c,$ as d,J as e};//# sourceMappingURL=chunk-ZCU5O2LR.js.map
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import {u}from'./chunk-VGT3TRQG.js';import {a}from'./chunk-ATOQP3BD.js';function b(e){return JSON.parse(JSON.stringify(e))}function E(e){let r=e.provides&&e.provides.length>0?e.provides.map(n=>n.bindTo):[e.id];return {requires:e.requires&&e.requires.length>0?[...e.requires]:void 0,provides:r,taskHandlers:[e.id],description:e.meta?.title??e.id}}function I(e){let r=new Map;for(let[n,u]of e.entries()){let o=u.provides&&u.provides.length>0?u.provides:[{bindTo:n,ref:"card_data"}];for(let h of o)r.set(h.bindTo,n);}return r}function O(e,r){let n=I(e),u=e.get(r);if(u){for(let o of u.requires??[])if(!n.has(o))throw new Error(`Card "${r}" requires token "${o}" but no card provides it`)}}var F={CARD_PREFIX:"yf:cards:",RUNTIME_OUT_PREFIX:"yf:runtime-out:cards:",STATUS_KEY:"yf:runtime-out:status",writeCard(e,r){try{localStorage.setItem(this.CARD_PREFIX+e,JSON.stringify(r));}catch(n){console.warn(`Failed to write card ${e} to localStorage:`,n);}},readCard(e){try{let r=localStorage.getItem(this.CARD_PREFIX+e);return r?JSON.parse(r):null}catch(r){return console.warn(`Failed to read card ${e} from localStorage:`,r),null}},readAllCards(e){let r={};for(let n of e){let u=this.readCard(n);u&&(r[n]=u);}return r},writeComputedArtifact(e){if(!(!e||!e.card_id))try{localStorage.setItem(this.RUNTIME_OUT_PREFIX+String(e.card_id),JSON.stringify(e));}catch(r){console.warn(`Failed to write computed artifact ${e.card_id}:`,r);}},readComputedArtifact(e){try{let r=localStorage.getItem(this.RUNTIME_OUT_PREFIX+e);return r?JSON.parse(r):null}catch(r){return console.warn(`Failed to read computed artifact ${e}:`,r),null}},readAllComputedArtifacts(e){let r={};for(let n of e){let u=this.readComputedArtifact(n);u&&(r[n]=u);}return r},writeStatusSnapshot(e){try{localStorage.setItem(this.STATUS_KEY,JSON.stringify(e));}catch(r){console.warn("Failed to write status snapshot to localStorage:",r);}},readStatusSnapshot(){try{let e=localStorage.getItem(this.STATUS_KEY);return e?JSON.parse(e):null}catch(e){return console.warn("Failed to read status snapshot from localStorage:",e),null}},clear(){let e=[];for(let r=0;r<localStorage.length;r++){let n=localStorage.key(r);n&&(n.startsWith(this.CARD_PREFIX)||n.startsWith(this.RUNTIME_OUT_PREFIX)||n===this.STATUS_KEY)&&e.push(n);}for(let r of e)localStorage.removeItem(r);}};function H(e,r={}){let n=Array.isArray(e)?{}:{id:e.id,title:e.title,mode:e.mode,positions:e.positions,settings:e.settings},u$1=Array.isArray(e)?e:e.nodes,o=new Map;for(let t of u$1){if(o.has(t.id))throw new Error(`Duplicate card ID: "${t.id}"`);o.set(t.id,b(t));}let h=new Set,S=r.taskExecutor,L=r.sourceAdapters??{},d=r.defaultSourceAdapter,m=null,A=(t,g)=>{let a={events:t,graph:g,nodes:v()};for(let w of h)w(a);},_=t=>async g=>{let a$1=o.get(t);if(!a$1)return "task-initiate-failure";let w={};for(let R of a$1.requires??[]){let y=g.state[R];if(!y||typeof y!="object")continue;let k=y.provides_data;!k||typeof k!="object"||Object.prototype.hasOwnProperty.call(k,R)&&(w[R]=k[R]);}let p={};if(a$1.source_defs&&a$1.source_defs.length>0){let R=L[t]??d,y=S?await S({card:a$1,input:g}):R?await R({card:a$1,input:g}):void 0;if(y&&typeof y=="object")for(let k of a$1.source_defs)Object.prototype.hasOwnProperty.call(y,k.bindTo)?p[k.bindTo]=y[k.bindTo]:a$1.source_defs.length===1&&(p[k.bindTo]=y);}let c={id:a$1.id,card_data:b(a$1.card_data??{}),requires:w,source_defs:a$1.source_defs,compute:a$1.compute};c._sourcesData=p,c.compute&&c.compute.length>0&&await a.run(c,{sourcesData:p});let T={};if(a$1.provides&&a$1.provides.length>0)for(let{bindTo:R,ref:y}of a$1.provides)T[R]=a.resolve(c,y);else T[a$1.id]={...c.card_data??{},...c.computed_values??{},...c._sourcesData??{}};let B={provides_data:T,card_data:c.card_data??{},computed_values:c.computed_values??{},fetched_sources:p,requires:w};return m?.resolveCallback(g.callbackToken,B),"task-initiated"},s={},f={};for(let[t,g]of o.entries())O(o,t),s[t]=E(g),f[t]=_(t);let l={id:n.id??`browser-board-${Date.now()}`,settings:{completion:"manual",execution_mode:"eligibility-mode",...n.settings??{},...r.graphSettings??{}},tasks:s},C=r.reactiveOptions?.onDrain,i=u(l,{...r.reactiveOptions??{},handlers:f,onDrain:(t,g,a)=>{C?.(t,g,a),A(t,g);}},r.executionId);m=i;function v(){let t=i.getState(),g=[];for(let[a,w]of o.entries()){let p=t.state.tasks[a]?.data,c=t.state.tasks[a],T={...w.card_data??{},...p&&typeof p.card_data=="object"?p.card_data:{}},B=c?.status==="running"?"loading":c?.status,R={...T,...B?{status:B}:{},...c?.lastUpdated?{lastRun:c.lastUpdated}:{},...c?.status==="failed"&&c.error?{error:c.error}:{}};g.push({id:a,card:b(w),card_data:R,requires:p&&typeof p.requires=="object"?b(p.requires):{},computed_values:p&&typeof p.computed_values=="object"?b(p.computed_values):{},runtime_state:c?b(c):{}});}return g}return {getGraph:()=>i,getState:()=>i.getState(),getSchedule:()=>i.getSchedule(),getNodes:()=>v(),getBoard:()=>({...n,nodes:v()}),subscribe(t){return h.add(t),t({events:[],graph:i.getState(),nodes:v()}),()=>h.delete(t)},addCard(t){if(o.has(t.id))throw new Error(`Card "${t.id}" already exists`);o.set(t.id,b(t)),O(o,t.id),i.registerHandler(t.id,_(t.id)),i.addNode(t.id,E(t));},upsertCard(t){o.set(t.id,b(t)),O(o,t.id),i.registerHandler(t.id,_(t.id)),i.addNode(t.id,E(t));},removeCard(t){o.delete(t),i.unregisterHandler(t),i.removeNode(t);},patchCardState(t,g){let a=o.get(t);if(!a)throw new Error(`Card "${t}" not found`);a.card_data={...a.card_data??{},...g},i.retrigger(t);},retrigger(t){i.retrigger(t);},retriggerAll(){i.retriggerAll(Array.from(o.keys()));},push(t){i.push(t);},pushAll(t){i.pushAll(t);},dispose(){h.clear(),i.dispose();}}}function G(e){return e==="running"||e==="in-progress"?"loading":e==="failed"?"error":"fresh"}function D(e){return e==="loading"?"in-progress":e==="error"?"failed":e==="stale"?"pending":e==="fresh"?"completed":"pending"}function M(e,r){let n=r&&typeof r=="object"&&!Array.isArray(r)?r:{};return {schema_version:n.schema_version||"v1",card_id:typeof n.card_id=="string"?n.card_id:e,card_data:n.card_data&&typeof n.card_data=="object"&&!Array.isArray(n.card_data)?structuredClone(n.card_data):{},computed_values:n.computed_values&&typeof n.computed_values=="object"&&!Array.isArray(n.computed_values)?structuredClone(n.computed_values):{}}}function P(e,r){if(!e||typeof e!="object")throw new Error("payload must be an object");if(!r)throw new Error("cardId is required");let u=(Array.isArray(e.cardDefinitions)?e.cardDefinitions:[]).find(t=>t.id===r);if(!u)throw new Error(`cardDefinitions has no entry with id ${r}`);let o=e.statusSnapshot&&typeof e.statusSnapshot=="object"?e.statusSnapshot:{},h=e.cardRuntimeById&&typeof e.cardRuntimeById=="object"?e.cardRuntimeById:{},S=e.dataObjectsByToken&&typeof e.dataObjectsByToken=="object"?e.dataObjectsByToken:{},d=(Array.isArray(o.cards)?o.cards:[]).find(t=>t.name===r),m=structuredClone(u),A=M(r,h[r]),s={...m.card_data&&typeof m.card_data=="object"&&!Array.isArray(m.card_data)?m.card_data:{},...A.card_data||{},status:G(d?.status),lastRun:d?.runtime?.last_transition_at??null};d?.error?.message&&(s.error=d.error.message);let f=d?{task_status:d.status??null,card_status:G(d.status),runtime:structuredClone(d.runtime??{}),error:d.error?structuredClone(d.error):null,blocked_by:Array.isArray(d.blocked_by)?structuredClone(d.blocked_by):[],requires_missing:Array.isArray(d.requires_missing)?structuredClone(d.requires_missing):[]}:{task_status:null,card_status:s.status??"fresh",runtime:{last_transition_at:s.lastRun??null},error:s.error?{message:s.error}:null,blocked_by:[],requires_missing:[]},l=Array.isArray(m.requires)?m.requires:[],C={};for(let[t,g]of Object.entries(S))C[t]=structuredClone(g);for(let t of l)Object.prototype.hasOwnProperty.call(C,t)||(C[t]=null);let v=(e.cardChatsByCardId&&typeof e.cardChatsByCardId=="object"?e.cardChatsByCardId:{})[r],q=v?{messages:Array.isArray(v.messages)?v.messages:[],receiving:!!v.receiving,processing:!!v.processing}:null;return {id:r,card:m,card_data:s,requires:C,computed_values:A.computed_values,runtime_state:f,card_chats:q}}function $(e){if(!e||typeof e!="object")throw new Error("payload must be an object");return (Array.isArray(e.cardDefinitions)?e.cardDefinitions:[]).map(n=>P(e,n.id))}function J({boardPath:e,cardDefinitions:r,runtimeModels:n,graphState:u}){let o=Array.isArray(r)?r:[],h=Array.isArray(n)?n:[],S=new Map(h.map(s=>[s.id,s])),d=u.state?.tasks??{},m={};for(let s of h)s?.id&&(m[s.id]={schema_version:"v1",card_id:s.id,card_data:structuredClone(s.card_data??{}),computed_values:structuredClone(s.computed_values??{})});let A={};for(let s of Object.keys(d)){let f=d[s]?.data?.provides_data;if(f&&typeof f=="object")for(let l of Object.keys(f))A[l]=structuredClone(f[l]);}let _=o.map(s=>{let f=S.get(s.id)??{},l=d[s.id],C=typeof l?.status=="string"?l.status:D(f.card_data?.status),i=typeof l?.error=="string"?l.error:typeof f.card_data?.error=="string"?f.card_data.error:null;return {name:s.id,status:C,...i?{error:{message:i,code:"TASK_FAILED",at:l?.failedAt??null,source:"browser-runtime"}}:{},requires:Array.isArray(s.requires)?s.requires:[],requires_satisfied:[],requires_missing:[],provides_declared:Array.isArray(s.provides)?s.provides.map(v=>v.bindTo):[s.id],provides_runtime:Object.keys(l?.data?.provides_data??{}).sort(),blocked_by:[],unblocks:[],runtime:{attempt_count:l?.executionCount??0,restart_count:l?.retryCount??0,in_progress_since:C==="in-progress"?l?.startedAt??null:null,last_transition_at:l?.lastUpdated??f.card_data?.lastRun??null,last_completed_at:l?.completedAt??null,last_restarted_at:l?.startedAt??null,status_age_ms:null}}});return {cardDefinitions:structuredClone(o),cardRuntimeById:m,dataObjectsByToken:A,statusSnapshot:{schema_version:"v1",meta:{board:{path:e??"browser-runtime"}},summary:{card_count:_.length,completed:_.filter(s=>s.status==="completed").length,eligible:0,pending:_.filter(s=>s.status==="pending").length,blocked:0,unresolved:0,failed:_.filter(s=>s.status==="failed").length,in_progress:_.filter(s=>s.status==="in-progress").length,orphan_cards:0,topology:{edge_count:0,max_fan_out_card:null,max_fan_out:0}},cards:_}}}export{F as a,H as b,P as c,$ as d,J as e};//# sourceMappingURL=chunk-4BEQXKRF.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-4BEQXKRF.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import {b as b$2}from'./chunk-6MD6FVE3.js';import {a,d,E,m,l,y,A,B,p as p$1,s,D,C,z,k,b as b$3,c,h,i,j,t,o,n,x,w,v,u as u$1}from'./chunk-EZOXABJ2.js';import {a as a$1,b as b$1}from'./chunk-44L64VQ2.js';import {q as q$1,p,a as a$2,u}from'./chunk-VGT3TRQG.js';import {a as a$3}from'./chunk-ATOQP3BD.js';import {e,f}from'./chunk-UGB7PC4P.js';async function mt(e,o,a){let r=await e.tryAcquire();if(!r)return false;try{await o();}finally{await r();}return await a?.(),true}function Pt(e){return typeof e=="object"&&e!==null&&"then"in e&&typeof e.then=="function"}function Pe(e,o){return Pt(e)?e.then(o):o(e)}function lt(e,o){let a={...e};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]=lt(a[r],s):a[r]=s;return a}function ve(e,o,a){if(o.length===0)return e;let[r,...s]=o;if(s.length===0)return {...e,[r]:a};let d=e[r]!==null&&typeof e[r]=="object"&&!Array.isArray(e[r])?e[r]:{};return {...e,[r]:ve(d,s,a)}}function ft(e){return {read:a=>e.read(a),get(a,r){return Pe(e.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)=>e.write(a,r),delete:a=>e.delete(a),listKeys:a=>e.listKeys(a),shallowMerge(a,r){return Pe(e.read(a),s=>e.write(a,{...s??{},...r}))},deepMerge(a,r){return Pe(e.read(a),s=>e.write(a,lt(s??{},r)))},patch(a,r,s){return Pe(e.read(a),d=>{let f=r.split(".").filter(Boolean);return e.write(a,ve(d??{},f,s))})}}}function gt(e){return ft(e)}function pt(e,o){return {async readIndex(){return await e.read("_index")},writeIndex(a){return e.write("_index",a)},async readCard(a){return await e.read(a)},async writeCard(a,r){return await e.write(a,r),o(r)},removeCard(a){return e.delete(a)},async cardExists(a){return await e.read(a)!==null},defaultCardKey(a){return a}}}function yt(e,o){async function a(){return await e.readIndex()??{}}return {async readCard(r){let s=(await a())[r];return !s||!await e.cardExists(s.key)?null:await e.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 e.cardExists(d.key))continue;let f=await e.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??e.defaultCardKey(r),w=await e.writeCard(v,s);f[r]={key:v,checksum:w,updatedAt:new Date().toISOString()},await e.writeIndex(f);},async patchCard(r,s,d){let f=await a(),v=f[r];if(!v||!await e.cardExists(v.key))throw new Error(`card "${r}" not found`);let w=await e.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=ve(w,m,d),S=await e.writeCard(v.key,l);f[r]={key:v.key,checksum:S,updatedAt:new Date().toISOString()},await e.writeIndex(f);},async removeCard(r){let s=await a(),d=s[r];d&&(await e.removeCard(d.key),delete s[r],await e.writeIndex(s));},readIndex(){return a()}}}function Nt(e,o){return a(e,o)}function _t(e,o,a){return {blob:e,kv:o,journal:a}}function St(e$1,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 S=e(m);if(S.length===1){await l(S[0]);return}await l(f({kind:"notification-batch",notifications:S}));}async function f$1(m){let l=m.params?.id;if(l){let S=await e$1.readCard(l);if(!S)throw new Error(`card "${l}" not found`);return [S]}return await e$1.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 S=Array.isArray(l)?l:[l];for(let h of S){if(typeof h.id!="string")return r("each card must have a string `id` field");await e$1.writeCard(h.id,h);}return await d(S.map(h=>({kind:"card_refreshed",cardId:h.id,card:h}))),a({count:S.length})}catch(l){return s(l)}},async del(m){try{let l=m.body?.ids??[],S=m.params?.id,h=S?[...l,S]:l;if(h.length===0)return r("del requires body.ids (string[]) or params.id");for(let N of h)await e$1.removeCard(N);return await d(h.map(N=>({kind:"card_removed",cardId:N}))),a({count:h.length})}catch(l){return s(l)}},async patch(m){try{let l=m.params?.id,S=m.params?.path;if(!l)return r("patch requires params.id");if(!S)return r("patch requires params.path");let h=m.body,N=h&&Object.prototype.hasOwnProperty.call(h,"value")?h.value:m.body;await e$1.patchCard(l,S,N);let O=await e$1.readCard(l);return O?(await d([{kind:"card_refreshed",cardId:l,card:O}]),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 S=await e$1.readCard(l);if(!S)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 N=S.card_data&&typeof S.card_data=="object"&&!Array.isArray(S.card_data)?S.card_data:{},O=Array.isArray(N.files)?N.files:[],M=[...O,...h],V=h.map(($,Z)=>({idx:O.length+Z,entry:$})),K=await this.patch({params:{id:l,path:"card_data.files"},body:{value:M}});return K.status!=="success"?K:a({files_added:V})}catch(l){return s(l)}}}}async function vt(e,o){return (await e.peekActive()).find(a=>a.id===o)}function $t(e$1,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 e$1.enqueue(r);return await a([{kind:"message_enqueued",lane:o.lane,message:s}]),s},async enqueueMany(r){let s=await e$1.enqueueMany(r);return await a(s.map(d=>({kind:"message_enqueued",lane:o.lane,message:d}))),s},enqueueIfAbsent:e$1.enqueueIfAbsent?async(r,s)=>{let d=await e$1.enqueueIfAbsent(r,s);return d&&await a([{kind:"message_enqueued",lane:o.lane,message:d}]),d}:void 0,lease(r){return e$1.lease(r)},ack(r,s){return e$1.ack(r,s)},nack(r,s,d){return e$1.nack(r,s,d)},peekActive(r){return e$1.peekActive(r)},peekDeadLetter(r){return e$1.peekDeadLetter(r)},async stage(r,s){return e$1.stage(r,s)},async commitStaged(r){let s=await e$1.commitStaged(r);if(s){let d=await vt(e$1,r);d&&await a([{kind:"message_enqueued",lane:o.lane,message:d}]);}return s},async discardStaged(r,s){return e$1.discardStaged(r,s)},peekStaged(r){return e$1.peekStaged(r)}}}function b(e){return e!==void 0?{status:"success",data:e}:{status:"success"}}function R(e){return {status:"fail",error:e}}function T(e){return {status:"error",error:e instanceof Error?e.message:String(e)}}function q(){return new Date().toISOString()}function bt(e){let o=new TextEncoder().encode(e),a=Array.from(o,r=>String.fromCharCode(r)).join("");return btoa(a).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function Rt(e){let o=e.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 be(e){try{let o=JSON.parse(Rt(e));return typeof o?.t=="string"?{taskName:o.t}:null}catch{return null}}function kt(e){return bt(JSON.stringify(e))}function Ct(e){try{let o=JSON.parse(Rt(e));return typeof o?.cbk=="string"&&typeof o?.cid=="string"&&typeof o?.b=="string"&&typeof o?.d=="string"?o:null}catch{return null}}function At(e){return j(e,t,()=>({_sources:{}}))}function It(e,o){return h(e,o)}function xt(e){return k(e)}function Tt(e,o){return i(e,o)}function Ot(e,o$1,a,r,s,d){return async f=>{let v$1=[],w$1=await a.cardStore.readCard(f.nodeId);if(!w$1)return "task-initiate-failure";let m$1=w$1.id;if(m$1===m){let p=a.activeTaskConfigs?.(),y={[l]:p?o((await Promise.all(Object.keys(p).filter(k=>k!==m).map(k=>a.cardStore.readCard(k)))).filter(k=>!!k),p):await n(await a.cardStore.readAllCards())};return (d??(()=>{}))(y),r(f.nodeId,y),"task-initiated"}let l$1=w$1.card_data??{},S=w$1.source_defs??[],h=S,N=await a.cardRuntimeStore.readRuntime(m$1),O=false,M=async()=>{O&&(await a.cardRuntimeStore.writeRuntime(m$1,N),O=false);},V=p=>u$1(N._sources[p]),K=(p,y)=>{N._sources[p]=u$1(y),O=true;},$=f.taskState?.executionCount??0;if(N._lastExecutionCount!==$&&(N._sources={},N._lastExecutionCount=$,O=true),f.update){let p=f.update.outputFile;if(p){let y=V(p);if(f.update.failure){let k=f.update.rqt??y.lastRequestedToken??y.queueRequestedToken;k&&K(p,x(y,k));}else {let k=f.update.rqt;if(!y.lastCompletedToken||k>y.lastCompletedToken){let j=typeof f.update.deliveryToken=="string"?f.update.deliveryToken:void 0,re=j?await a.fetchedSourcesStore.commitSourceData(m$1,p,j):false;K(p,re?w(y,k):x(y,k));}}await M();}}let Z={};for(let p of S){if(!p.outputFile)continue;let y=await a.fetchedSourcesStore.readSourceData(m$1,p.outputFile);y!==null&&(Z[p.bindTo]=y);}let H={};for(let[p,y]of Object.entries(f.state??{}))if(y!==null&&typeof y=="object"&&!Array.isArray(y)){let k=y[p];H[p]=k!==void 0?k:y;}else H[p]=y;let ee={id:m$1,card_data:{...l$1},requires:H,source_defs:S,compute:w$1.compute};ee._sourcesData=Z,w$1.compute&&a$3.runSync(ee,{sourcesData:Z}),(s??(()=>{}))(m$1,ee.computed_values??{});let te=a$3.enrichSourcesSync(Array.isArray(w$1.source_defs)?w$1.source_defs:void 0,{card_data:w$1.card_data,requires:H}),Ae={...w$1,source_defs:Array.isArray(te)?te.map(p=>({...p,boardDir:typeof p.boardDir=="string"&&p.boardDir?p.boardDir:e.value})):te},W=q(),E=f.update?void 0:W,ge=h.filter(p=>{let y=p.outputFile;if(typeof y!="string"||!y)return true;let k=V(y);E&&(k={...k,queueRequestedToken:E},K(y,k));let j=k.queueRequestedToken??k.lastRequestedToken??W;return v(k,j)==="dispatch"});if(await M(),ge.length>0){let p=false,y=W;for(let k of ge){let j=k.outputFile;if(typeof j!="string"||!j)continue;let re=V(j),L=re.queueRequestedToken??W;K(j,{...re,lastRequestedToken:L}),y=L,p=true;}return p&&await M(),p&&(v$1.push({taskKind:"source-fetch",payload:{boardRef:a$1(e),enrichedCard:Ae,callbackToken:f.callbackToken,rqt:y}}),await a.executionRequestStore.appendEntries(o$1,v$1)),"task-initiated"}if(h.some(p=>{let y=p.outputFile;if(typeof y!="string"||!y)return false;let k=V(y),j=k.queueRequestedToken??k.lastRequestedToken??W;return v(k,j)==="in-flight"}))return "task-initiated";let ie=w$1.provides??[],ue={};for(let{bindTo:p,ref:y}of ie)ue[p]=a$3.resolve(ee,y);return (d??(()=>{}))(ue),r(f.nodeId,ue),v$1.length>0&&await a.executionRequestStore.appendEntries(o$1,v$1),"task-initiated"}}function nr(e$1,o,a$3={}){d(o.callbackTransport,"createAsyncBoardLiveCardsPublic");let r=o.callbackTransport,s$1=o.warn??(()=>{}),d$1=a$1(e$1),f$1=a$3.emitNotification??(n=>{if(!o.publishBoardChangeNotifications)return;let t=n.kind==="notification-batch"?n.notifications:[n];return o.publishBoardChangeNotifications(t)}),v=null,w=a$3.boardRuntimeStoreRef,m$1=a$3.scratchStoreRef,l$1=a$3.taskExecutorRef,S=a$3.chatHandlerFlow;function h(){if(!w)throw new Error(`Board at ${e$1.value} has no board runtime store configured. Pass boardRuntimeStoreRef at construction or init.`);return w}function N(n){if(n.length!==0)try{let t=e(n),c=f({kind:"notification-batch",notifications:t});return Promise.resolve(f$1(c)).catch(i=>{s$1(`[async-board-live-cards-public] emitNotification failed: ${i instanceof Error?i.message:String(i)}`);})}catch(t){s$1(`[async-board-live-cards-public] emitNotification failed: ${t instanceof Error?t.message:String(t)}`);return}}let O=()=>b$2(o.kvStorageForRef(h())),M=e$1.value,V=()=>b$3(a(()=>o.kvStorageForRef(h()),o.hashFn),"v1"),K=async()=>{let n=await O().readOutputsStoreRef();if(!n)throw new Error(`Board at ${e$1.value} has no outputs store configured.`);return xt(o.kvStorageForRef(n))},$=async()=>{let n=await O().readCardStoreRef();if(!n)throw new Error(`Board at ${e$1.value} has no card store configured.`);let t=o.kvStorageForRef(n);return yt(pt(gt(t),o.hashFn),s$1)};async function Z(){return !!(await V().readSnapshot(M)).values[s]}async function H(){let n=await V().readSnapshot(M);if(!n.values[s])throw new Error(`Board not initialized at ${e$1.value}`);return D(n.values)}async function ee(n,t){let c=await V().commitSnapshot(M,{schemaVersion:"v1",expectedVersion:t,deleteKeys:[],shallowMerge:C(n)});if(!c.ok)throw new Error(`Snapshot commit failed (version mismatch): expected=${t??"null"} current=${c.currentVersion??"null"}`)}let te=()=>c(o.journalStorageForRef(h()));async function Ae(){return l$1??await O().readTaskExecutorRef()}async function W(){return z(await(await K()).readAllDataObjects())}async function E$1(n){await te().appendEvent(n);}async function ge(){let n=await O().readFetchedSourcesStoreRef();if(!n)throw new Error(`Board at ${e$1.value} has no fetched sources store configured. Run: init --fetched-sources-store-ref <b64-ref>`);return n}async function le(){return o.blobStorageForRef(await ge())}async function ie(){return It(await le(),n=>o.resolveBlob(n))}async function ue(n){let t=(await le()).keyRef?.(n);if(!t)throw new Error("configured fetched-sources store does not support keyRef");let c=await Promise.resolve(t);return a$1(c)}async function p$2(){let n=Tt(o.kvStorageForRef(h()),async(u,g)=>{let P=u.payload,B=(P.enrichedCard??{}).id??P.cardId??"unknown";await E$1({type:"task-failed",taskName:B,error:g,timestamp:q()});}),t=At(o.kvStorageForRef(h())),c=await le(),i=await ie(),A$1=await $(),I=await K(),F=new Map,C=new Map,x=[],Q=[],G=[],X=new Map,de=new Set,ce={async readRuntime(u){return F.get(u)??await t.readRuntime(u)},async writeRuntime(u,g){F.set(u,g),Te[u]=g;}},Ie={async readSourceData(u,g){let P=`${u}/${g}`;return C.has(P)?C.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}`,B=await c.read(D);if(B==null){let z=await Promise.resolve(c.keyRef?.(D));z&&(B=await o.resolveBlob(z));}if(B==null)return false;let U=`${u}/${g}`,ae=B.trim();try{C.set(U,JSON.parse(ae));}catch{C.set(U,ae);}return x.push({cardId:u,outputFile:g,deliveryToken:P}),true},async hasSource(u,g){let P=`${u}/${g}`;return C.has(P)||await i.hasSource(u,g)},async listSources(u){let g=await i.listSources(u),P=[...C.keys()].filter(D=>D.startsWith(`${u}/`)).map(D=>D.slice(`${u}/`.length));return [...new Set([...g,...P])]}},xe=await H(),De=q$1(xe.graph),Te={...xe.runtimeByCardId},{events:wt,newCursor:Oe}=await te().readEntriesAfterCursor(xe.lastDrainedJournalId),pe=wt,Ve=()=>De.config.tasks,fe=u(De,{handlers:{"card-handler":Ot(e$1,Oe,{cardStore:A$1,cardRuntimeStore:ce,fetchedSourcesStore:Ie,outputStore:I,executionRequestStore:n,activeTaskConfigs:()=>Ve()},(u,g)=>{pe.push({type:"task-completed",taskName:u,data:g,timestamp:q()});},(u,g)=>{Q.push({cardId:u,values:g});},u=>{G.push(u);})},onNodeRemoved:u=>{X.delete(u),F.delete(u),delete Te[u],de.add(u);}});for(Ve=()=>fe.getState().config.tasks;pe.length>0;){let u=pe;pe=[];for(let g of u)if(g.type==="task-restart"){let P=await A$1.readCard(g.taskName);P&&X.set(g.taskName,P);}fe.pushAll(u),await fe.waitForHandlers();}let $e=fe.getState();await fe.dispose({wait:true}),await ee({lastDrainedJournalId:Oe,graph:p($e),runtimeByCardId:Te},(await V().readSnapshot(M)).version);for(let{cardId:u,values:g}of Q)await I.writeComputedValues(u,g);for(let u of G)await I.writeDataObjects(u);for(let[u,g]of F)await t.writeRuntime(u,g);for(let u of x)await i.commitSourceData(u.cardId,u.outputFile,u.deliveryToken);let Le=y(A(d$1,$e));await I.writeStatusSnapshot(Le);let me=[];for(let{cardId:u,values:g}of Q)me.push({kind:"computed_values",cardId:u,values:g});for(let u of G)for(let[g,P]of Object.entries(u))me.push({kind:"data_object",key:g,payload:P});for(let[u,g]of X)me.push({kind:"card_refreshed",cardId:u,card:g});for(let u of de)me.push({kind:"card_removed",cardId:u});me.push({kind:"status",status:Le}),await N(me);let ne=await Ae();if(!ne)return;let Je=o.supportsDirectSourceOutput?.(ne)===true;await n.dispatchEntriesForJournalId(Oe,async u=>{if(u.taskKind!=="source-fetch"){s$1(`[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(ne.howToRun==="queue-storage"&&Je){try{let B=await O().readQueueStoreRef();if(!B)throw new Error(`Board at ${e$1.value} has no queue store configured. Run: init --queue-store-ref <b64-ref>`);let U=o.queueStorageForRef(B,"task-executor"),ae=typeof ne.extra?.boardId=="string"?ne.extra.boardId:void 0,z=[];for(let Y of D){if(!Y.outputFile)continue;let ye=o.genId(),Se=`${P}/.staged/${ye}/${Y.outputFile}`,Me=await Promise.resolve(c.keyRef?.(Se));if(!Me)continue;let Qe={ref:a$1(Me),deliveryToken:ye,outputFile:Y.outputFile,cardId:P},ht=kt({cbk:g.callbackToken,rg:e$1.value,br:a$1(e$1),cid:P,b:Y.bindTo,d:Y.outputFile,cs:void 0,rqt:g.rqt,dt:Qe.deliveryToken});z.push({...ae?{boardId:ae}:{},ref:ne,args:{source_def:Y,base_ref:a$1(e$1),callback:r.createCallback(ht),output:Qe}});}z.length>0&&await U.enqueueMany(z);}catch(B){await E$1({type:"task-failed",taskName:P,error:B instanceof Error?B.message:String(B),timestamp:q()});}return}for(let B of D){if(!B.outputFile)continue;let U;if(Je){let Y=o.genId(),ye=`${P}/.staged/${Y}/${B.outputFile}`,Se=await Promise.resolve(c.keyRef?.(ye));Se&&(U={ref:a$1(Se),deliveryToken:Y,outputFile:B.outputFile,cardId:P});}let ae=kt({cbk:g.callbackToken,rg:e$1.value,br:a$1(e$1),cid:P,b:B.bindTo,d:B.outputFile,cs:void 0,rqt:g.rqt,...U?{dt:U.deliveryToken}:{}}),z=await o.dispatchExecution(ne,{source_def:B,base_ref:a$1(e$1),callback:r.createCallback(ae),...U?{output:U}:{}});z.dispatched||await E$1({type:"task-failed",taskName:P,error:z.error??"dispatch failed",timestamp:q()});}});}async function y$1(){try{let n=async()=>{let c=await H(),{events:i}=await te().readEntriesAfterCursor(c.lastDrainedJournalId);i.length>0&&await j();},t=await mt(o.lock,p$2,n);return b({ran:t!==!1})}catch(n){return T(n)}}async function k(){return v||(v=y$1().finally(()=>{v=null;}),v)}async function j(){let n=await O().readQueueStoreRef();if(!n)throw new Error(`Board at ${e$1.value} has no queue store configured. Run: init --queue-store-ref <b64-ref>`);await o.queueStorageForRef(n,"process-accumulated").enqueue({boardRef:a$1(e$1)}),await o.requestProcessAccumulated?.();}async function re(){let n=await O().readQueueStoreRef();if(!n)throw new Error(`Board at ${e$1.value} has no queue store configured. Run: init --queue-store-ref <b64-ref>`);let t=o.queueStorageForRef(n,"process-accumulated");for(;;){let c=await t.lease({max:64,visibilityMs:1e3});if(c.length<=0)return;for(let i of c)await t.ack(i.id,i.leaseToken);if(c.length<64)return}}function L(){j();}return {async init(n){try{let t=n.params?.cardStoreRef;if(!t)return R("init requires params.cardStoreRef");if(w=n.params?.boardRuntimeStoreRef,!w)return R("init requires params.boardRuntimeStoreRef");let c=n.params?.outputsStoreRef;if(!c)return R("init requires params.outputsStoreRef");let i=n.params?.queueStoreRef;if(!i)return R("init requires params.queueStoreRef");let A$1=n.params?.fetchedSourcesStoreRef;if(!A$1)return R("init requires params.fetchedSourcesStoreRef");m$1=n.params?.scratchStoreRef;let I=n.params?.chatStoreRef;if(!I)return R("init requires params.chatStoreRef");let F=n.params?.artifactsStoreRef;if(!F)return R("init requires params.artifactsStoreRef");await Z()||await ee({lastDrainedJournalId:"",graph:p(a$2(B)),runtimeByCardId:{}},null);let C=O();await C.writeBoardRuntimeStoreRef(w),await C.writeCardStoreRef(t),await C.writeOutputsStoreRef(c),await C.writeQueueStoreRef(i),await C.writeFetchedSourcesStoreRef(A$1),await C.writeChatStoreRef(I),await C.writeArtifactsStoreRef(F),await(await $()).writeCard(m,p$1());let x=o.kvStorage("card-upsert"),Q=p$1(),G=E(Q),X=o.hashFn(G),ce=(await x.read(m))?.blobRef??await(await $()).readCardKey(m)??m;return await E$1({type:"task-upsert",taskName:m,taskConfig:G,timestamp:q()}),await x.write(m,{blobRef:ce,taskConfigHash:X,updatedAt:q()}),await E$1({type:"task-restart",taskName:m,timestamp:q()}),L(),await(await K()).writeStatusSnapshot(y(A(d$1,q$1((await H()).graph)))),b()}catch(t){return T(t)}},async status(n){try{let t=await K(),c=await t.readStatusSnapshot();return c||(c=y(A(d$1,q$1((await H()).graph))),await t.writeStatusSnapshot(c)),b(c)}catch(t){return T(t)}},async getCardStoreRef(n){try{let t=await O().readCardStoreRef();return t?b({storeRef:t}):R(`Board at ${e$1.value} has no card store configured`)}catch(t){return T(t)}},async getBoardRuntimeStoreRef(n){try{return b({storeRef:w??null})}catch(t){return T(t)}},async getOutputsStoreRef(n){try{let t=await O().readOutputsStoreRef();return t?b({storeRef:t}):R(`Board at ${e$1.value} has no outputs store configured`)}catch(t){return T(t)}},async getScratchStoreRef(n){try{return b({storeRef:m$1??null})}catch(t){return T(t)}},async getChatStoreRef(n){try{return b({storeRef:await O().readChatStoreRef()})}catch(t){return T(t)}},async getArtifactsStoreRef(n){try{return b({storeRef:await O().readArtifactsStoreRef()})}catch(t){return T(t)}},async getFetchedSourcesStoreRef(n){try{return b({storeRef:await O().readFetchedSourcesStoreRef()})}catch(t){return T(t)}},async getConfig(n){try{let t=n.params?.key;if(!t)return R("getConfig requires params.key");let c=O(),i;switch(t){case "task-executor":i=l$1??null;break;case "chat-handler-flow":i=S??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$1??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 R(`getConfig: unknown key "${t}"`)}return b({value:i})}catch(t){return T(t)}},async getOutputsDataObject(n){try{let t=n.params?.key;if(!t)return R("getOutputsDataObject requires params.key");if(t===l)return b(null);let c=await W();return b(c[t]??null)}catch(t){return T(t)}},async getAllOutputsDataObjects(n){try{return b(await W())}catch(t){return T(t)}},async getOutputsComputedValues(n){try{let t=n.params?.key;return t?b(await(await K()).readComputedValues(t)):R("getOutputsComputedValues requires params.key")}catch(t){return T(t)}},async getAllOutputsComputedValues(n){try{return b(await(await K()).readAllComputedValues())}catch(t){return T(t)}},async getOutputsFetchedSources(n){try{let t=n.params?.key;if(!t)return R("getOutputsFetchedSources requires params.key");let c=await(await ie()).listSources(t),i={};for(let A of c)i[A]=await ue(`${t}/${A}`);return b(i)}catch(t){return T(t)}},async getAllOutputsFetchedSources(n){try{let t=await ie(),c=await(await le()).listKeys(),i=new Set;for(let I of c){let F=I.indexOf("/");F>0&&!I.includes("/.staged/")&&i.add(I.slice(0,F));}let A={};for(let I of i){let F=await t.listSources(I);if(F.length!==0){A[I]={};for(let C of F)A[I][C]=await ue(`${I}/${C}`);}}return b(A)}catch(t){return T(t)}},async buildSseOneShotPayload(n){try{let t=(await(await $()).readAllCards()).filter(C=>C.id!==m),c=await this.status({});if(c.status!=="success")return c;let i=await this.getAllOutputsDataObjects({});if(i.status!=="success")return i;let A=await this.getAllOutputsComputedValues({});if(A.status!=="success")return A;let I=A.data,F={};for(let C of t){let x=typeof C?.id=="string"?C.id:null;if(!x)continue;let Q=C.card_data&&typeof C.card_data=="object"&&!Array.isArray(C.card_data)?C.card_data:{};F[x]={schema_version:"v1",card_id:x,card_data:{...Q},computed_values:I[x]&&typeof I[x]=="object"?I[x]:{}};}return b({cardDefinitions:t,statusSnapshot:c.data,dataObjectsByToken:i.data,cardRuntimeById:F})}catch(t){return T(t)}},async addCardFiles(n){try{let t=n.params?.cardId;if(!t)return R("addCardFiles requires params.cardId");let i=await St(await $(),{emitNotification:f$1}).appendFiles({params:{id:t},body:n.body});return i.status!=="success"?i:b({cardId:t,files_added:i.data.files_added,notified:!0})}catch(t){return T(t)}},async removeCard(n){try{let t=n.params?.id;if(!t)return R("removeCard requires params.id");try{await o.kvStorage("card-upsert").delete(t);}catch{}return await E$1({type:"task-removal",taskName:t,timestamp:q()}),t!==m&&await E$1({type:"task-restart",taskName:m,timestamp:q()}),L(),b()}catch(t){return T(t)}},async retrigger(n){try{let t=n.params?.id;return t?(await E$1({type:"task-restart",taskName:t,timestamp:q()}),L(),b()):R("retrigger requires params.id")}catch(t){return T(t)}},async processAccumulatedEvents(n){return await re(),k()},async upsertCard(n){try{let t=n.params?.cardId,c=n.params?.all,i=!!n.params?.restart;if(!t&&!c)return R("upsertCard requires --card-id <id> or --all");let A=await $(),I=c?(await A.readAllCards()).map(x=>x.id):[t];for(let x of I)if(!await A.readCard(x))return R(`Card "${x}" not found in board at ${e$1.value}`);let F=o.kvStorage("card-upsert"),C=!1;for(let x of I){let Q=await A.readCard(x);if(!Q)continue;let G=E(Q),X=o.hashFn(G),de=await F.read(x),ce=de?.taskConfigHash!==X;if(!(!ce&&!i)){if(ce){let Ie=de?.blobRef??await A.readCardKey(x)??x;await E$1({type:"task-upsert",taskName:x,taskConfig:G,timestamp:q()}),await F.write(x,{blobRef:Ie,taskConfigHash:X,updatedAt:q()}),C=C||x!==m;}i&&await E$1({type:"task-restart",taskName:x,timestamp:q()});}}return C&&await E$1({type:"task-restart",taskName:m,timestamp:q()}),L(),b()}catch(t){return T(t)}},async taskFailed(n){try{let t=n.params?.token;if(!t)return R("taskFailed requires params.token");let c=n.params?.error??"unknown error",i=be(t);return i?(await E$1({type:"task-failed",taskName:i.taskName,error:c,timestamp:q()}),L(),b()):R("Invalid callback token")}catch(t){return T(t)}},async taskProgress(n){try{let t=n.params?.token;if(!t)return R("taskProgress requires params.token");let c=(n.body??{}).update??{},i=be(t);return i?(await E$1({type:"task-progress",taskName:i.taskName,update:c,timestamp:q()}),L(),b()):R("Invalid callback token")}catch(t){return T(t)}},async sourceDataFetched(n){try{let t=n.params?.token,c=n.params?.ref;if(!t)return R("sourceDataFetched requires params.token");if(!c)return R("sourceDataFetched requires params.ref");let i=Ct(t);if(!i)return R("Invalid source token");let A=await ie(),I=i.dt||o.genId();i.dt||await A.ingestSourceDataStaged(i.cid,i.d,b$1(c),I);let F=be(i.cbk);return F?(await E$1({type:"task-progress",taskName:F.taskName,update:{bindTo:i.b,outputFile:i.d,fetchedAt:q(),deliveryToken:I,sourceChecksum:i.cs,rqt:i.rqt},timestamp:q()}),L(),b()):R("Invalid callback token embedded in source token")}catch(t){return T(t)}},async sourceDataFetchFailure(n){try{let t=n.params?.token,c=n.params?.reason??"unknown";if(!t)return R("sourceDataFetchFailure requires params.token");let i=Ct(t);if(!i)return R("Invalid source token");let A=be(i.cbk);return A?(await E$1({type:"task-progress",taskName:A.taskName,update:{bindTo:i.b,outputFile:i.d,failure:!0,reason:c,sourceChecksum:i.cs,rqt:i.rqt},timestamp:q()}),L(),b()):R("Invalid callback token embedded in source token")}catch(t){return T(t)}}}}
|
|
2
|
+
export{mt as a,gt as b,pt as c,yt as d,Nt as e,_t as f,St as g,$t as h,nr as i};//# sourceMappingURL=chunk-5VTIOM2U.js.map
|
|
3
|
+
//# sourceMappingURL=chunk-5VTIOM2U.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
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 St(e){return typeof e=="string"&&e.trim().length>0}function kt(e,t){if(!e||typeof e!="object")throw new Error(`${t}: adapter.selfRef is required`);if(!St(e.howToRun))throw new Error(`${t}: adapter.selfRef.howToRun is required`);if(!St(e.whatToRun))throw new Error(`${t}: adapter.selfRef.whatToRun is required`)}function Rt(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 or(e,t="callbackTransport"){return {createCallback(r){let s=e();return kt(s,t),{token:r,via:s}}}}function Ue(e){return or(()=>e,"createStaticExecutionRefCallbackTransport")}function br(e){return Ue({meta:"board-live-cards",howToRun:"http:post",whatToRun:chunkVQCIOKJV_cjs.a({kind:"http-url",value:String(e||"").trim()})})}function wr(e){return Ue({meta:"board-live-cards",howToRun:"in-process-loop",whatToRun:chunkVQCIOKJV_cjs.a({kind:"in-process-loop",value:String(e||"").trim()})})}function vr(e){let t=typeof e=="string"?{notifyChannel:e}:e??{},r={};return t.notifyChannel&&(r.notifyChannel=t.notifyChannel),t.boardRuntimeStoreRef&&(r.boardRuntimeStoreRef=t.boardRuntimeStoreRef),t.queueStoreRef&&(r.queueStoreRef=t.queueStoreRef),Ue({meta:"board-live-cards",howToRun:"built-in",whatToRun:chunkVQCIOKJV_cjs.a({kind:"built-in",value:"board-live-cards"}),...Object.keys(r).length>0?{extra:r}:{}})}function Oe(e){return typeof e=="object"&&e!==null&&"then"in e&&typeof e.then=="function"}function Ye(e,t){return Oe(e)?e.then(t):t(e)}function yt(e,t){let r={...e};for(let s of t.deleteKeys)delete r[s];return {...r,...t.shallowMerge}}function Tr(e,t){return {readValues(s){let o=e(s);return Ye(o.listKeys(),a=>{let c=[...a].sort();if(c.length===0)return {version:null,values:{}};let d={},S=null;for(let y of c){let V=o.read(y);Oe(V)?S=(S??Promise.resolve()).then(async()=>{d[y]=await V;}):d[y]=V;}return S?S.then(()=>({version:t(d),values:d})):{version:t(d),values:d}})},writeValues(s,o,a){let c=e(s),d=null;for(let S of a){let y=c.delete(S);Oe(y)&&(d=(d??Promise.resolve()).then(()=>y).then(()=>{}));}for(let[S,y]of Object.entries(o)){let V=c.write(S,y);Oe(V)&&(d=(d??Promise.resolve()).then(()=>V).then(()=>{}));}return d?d.then(()=>t(o)):t(o)}}}function Ct(e,t){return {readSnapshot(r){return e.readValues(r)},commitSnapshot(r,s){if(s.schemaVersion!==t)throw new Error(`Unsupported snapshot schema version: ${s.schemaVersion}`);return Ye(e.readValues(r),o=>{if(o.version!==s.expectedVersion)return {ok:false,reason:"version-mismatch",currentVersion:o.version};let a=yt(o.values,s);return Ye(e.writeValues(r,a,s.deleteKeys),c=>({ok:true,newVersion:c}))})}}}function ht(e,t){if(!t)return e;let r=e.findIndex(s=>s.id===t);return r===-1?e:e.slice(r+1)}function bt(e){return {readEntriesAfterCursor(t){let r=ht(e.readAllEntries(),t);return r.length===0?{events:[],newCursor:t}:{events:r.map(s=>s.event),newCursor:r[r.length-1].id}},pendingCount(t){return ht(e.readAllEntries(),t).length},appendEvent(t){e.appendEntry({id:e.generateId(),event:t});}}}function Er(e){return {appendEvent(t){return e.append(t).then(()=>{})},async readEntriesAfterCursor(t){let r=await e.readAfter(t||null);return {events:r.entries.map(s=>s.payload),newCursor:r.newCursor??t}}}}function Be(e){return typeof e=="object"&&e!==null&&"then"in e&&typeof e.then=="function"}function ce(e,t){return Be(e)?e.then(t):t(e)}function ze(e,t){let r=null;for(let s of e){if(r){r=r.then(()=>t(s)).then(()=>{});continue}let o=t(s);Be(o)&&(r=Promise.resolve(o).then(()=>{}));}return r??void 0}function sr(e){if(e==null)return null;let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{return t}}function ar(e,t){let r=e.match(t);return r?r[1]:null}function wt(e,t,r){let s={},o=ze(e,a=>{let c=r(a);if(c)return ce(t(a),d=>{s[c]=d;})});return Be(o)?o.then(()=>s):s}function vt(e,t){return {readSourceData(r,s){return ce(e.read(`${r}/${s}`),sr)},ingestSourceDataStaged(r,s,o,a){return ce(t(o),c=>e.write(`${r}/.staged/${a}/${s}`,c))},commitSourceData(r,s,o){let a=`${r}/.staged/${o}/${s}`,c=`${r}/${s}`;return e.renameKey(a,c)},hasSource(r,s){return e.exists(`${r}/${s}`)},listSources(r){return ce(e.listKeys(`${r}/`),s=>s.filter(o=>!o.includes("/.staged/")).map(o=>o.slice(`${r}/`.length)))}}}function ir(e,t){let r=(s,o)=>{try{let a=o(s);return Be(a)?a.catch(c=>t(s,c instanceof Error?c.message:String(c))):void 0}catch(a){try{return t(s,a instanceof Error?a.message:String(a))}catch{return}}};return {appendEntries(s,o){if(!(!s||o.length===0))return ce(e.read(s),a=>e.write(s,[...a??[],...o]))},dispatchEntriesForJournalId(s,o){if(s)return ce(e.read(s),a=>{let c=a;if(!(!c||c.length===0))return ce(ze(c,d=>r(d,o)),()=>e.delete(s))})}}}function ur(e,t,r){return {readRuntime(s){return ce(e.read(t(s)),o=>o??r())},writeRuntime(s,o){return e.write(t(s),o)}}}function xt(e){return {writeComputedValues(t,r){return e.write(`cards/${t}/computed_values`,r)},readComputedValues(t){return e.read(`cards/${t}/computed_values`)},readAllComputedValues(){return ce(e.listKeys("cards/"),t=>wt(t,r=>e.read(r),r=>ar(r,/^cards\/([^/]+)\/computed_values$/)))},writeDataObjects(t){return ze(Object.entries(t),([r,s])=>{if(r)return s===void 0?e.delete(`data-objects/${r}`):e.write(`data-objects/${r}`,s)})},readDataObject(t){return e.read(`data-objects/${t}`)},readAllDataObjects(){return ce(e.listKeys("data-objects/"),t=>wt(t,r=>e.read(r),r=>r.slice(13)))},writeStatusSnapshot(t){return e.write("status",t)},readStatusSnapshot(){return e.read("status")}}}var fe="sys_keys_board_state",ae="__sys_keys_board_state_init";function It(e){if(!e||typeof e!="object"||Array.isArray(e))return false;let t=e.__private;return !!t&&typeof t=="object"&&!Array.isArray(t)&&t.visible_controlplane_only===true}function dr(e){let t=e.filter(o=>!It(o)),r=[...new Set(t.map(o=>o.id).filter(o=>typeof o=="string"&&o.length>0))].sort(),s=[...new Set(t.flatMap(o=>Array.isArray(o.provides)?o.provides:[]).map(o=>o&&typeof o=="object"&&!Array.isArray(o)?o.bindTo:void 0).filter(o=>typeof o=="string"&&o.length>0&&o!==fe))].sort();return {card_ids:r,data_object_keys:s}}function cr(e,t){let r=e.filter(a=>!It(a)),s=[...new Set(r.map(a=>a.id).filter(a=>typeof a=="string"&&a.length>0))].sort(),o=[...new Set(Object.entries(t).filter(([a])=>a!==ae).flatMap(([,a])=>Array.isArray(a.provides)?a.provides:[]).filter(a=>typeof a=="string"&&a.length>0&&a!==fe))].sort();return {card_ids:s,data_object_keys:o}}function Pe(){return {id:ae,meta:{title:"System Keys Board State",synthetic:true},provides:[{bindTo:fe,ref:`card_data.${fe}`}],card_data:{[fe]:{card_ids:[],data_object_keys:[]}},__private:{visible_controlplane_only:true}}}function Qe(e,t){function r(){return e.readIndex()??{}}function s(o,a,c){let d=String(a||"").split(".").filter(Boolean);if(d.length===0)return c&&typeof c=="object"&&!Array.isArray(c)?c:{value:c};let S={...o},y=S;for(let V=0;V<d.length-1;V++){let z=d[V],Q=y[z],te=Q&&typeof Q=="object"&&!Array.isArray(Q)?{...Q}:{};y[z]=te,y=te;}return y[d[d.length-1]]=c,S}return {readCard(o){let a=r()[o];return !a||!e.cardExists(a.key)?null:e.readCard(a.key)},readCardKey(o){return r()[o]?.key??null},readAllCards(){let o=[];for(let[a,c]of Object.entries(r())){if(!e.cardExists(c.key))continue;let d=e.readCard(c.key);d?o.push(d):t?.(`[card-store] could not read card "${a}" at key "${c.key}"`);}return o},readChecksumIndex(){let o={};for(let[a,c]of Object.entries(r()))o[a]=c.checksum;return o},changedSince(o){let a=r(),c=[];for(let[d,S]of Object.entries(a))o[d]!==S.checksum&&c.push(d);for(let d of Object.keys(o))a[d]||c.push(d);return c},validateUpsert(o,a){let c=r(),d=c[o],S=Object.entries(c).find(([,y])=>y.key===a);return d&&d.key!==a?{ok:false,error:`Card id "${o}" is already mapped to key "${d.key}", cannot remap to "${a}"`}:S&&S[0]!==o?{ok:false,error:`Key "${a}" is already mapped to card id "${S[0]}", cannot remap to "${o}"`}:{ok:true}},writeCard(o,a,c){let d=r(),S=c??d[o]?.key??e.defaultCardKey(o),y=e.writeCard(S,a);d[o]={key:S,checksum:y,updatedAt:new Date().toISOString()},e.writeIndex(d);},patchCard(o,a,c){let d=r(),S=d[o];if(!S||!e.cardExists(S.key))throw new Error(`card "${o}" not found`);let y=e.readCard(S.key);if(!y||typeof y!="object"||Array.isArray(y))throw new Error(`card "${o}" is not patchable`);let V=s(y,a,c),z=e.writeCard(S.key,V);d[o]={key:S.key,checksum:z,updatedAt:new Date().toISOString()},e.writeIndex(d);},removeCard(o){let a=r(),c=a[o];c&&(e.removeCard(c.key),delete a[o],e.writeIndex(a));},readIndex(){return r()}}}function qe(e,t){return vt(e,t)}function _t(e){return bt(e)}var Ve="v1",ye="board/graph",Ft="board/lastJournalProcessedId";function Vr(e){return `cards/${e}/runtime`}function Ot(e){return Ct(e,Ve)}function je(e){function t(r){let s=e.read(r);return s==null?null:typeof s=="string"?s:JSON.stringify(s)}return {readTaskExecutorRef(){let r=t("task-executor");if(r?.trim())return chunk7JVHYHT2_cjs.c(r.trim())},writeTaskExecutorRef(r){e.write("task-executor",chunk7JVHYHT2_cjs.b(r));},readChatHandlerFlow(){return e.read("chat-handler-flow")},writeChatHandlerFlow(r){e.write("chat-handler-flow",r);},readBoardRuntimeStoreRef(){return t("board-runtime-store-ref")},writeBoardRuntimeStoreRef(r){e.write("board-runtime-store-ref",r);},readCardStoreRef(){return t("card-store-ref")},writeCardStoreRef(r){e.write("card-store-ref",r);},readOutputsStoreRef(){return t("outputs-store-ref")},writeOutputsStoreRef(r){e.write("outputs-store-ref",r);},readQueueStoreRef(){return t("queue-store-ref")},writeQueueStoreRef(r){e.write("queue-store-ref",r);},readScratchStoreRef(){return t("scratch-store-ref")},writeScratchStoreRef(r){e.write("scratch-store-ref",r);},readChatStoreRef(){return t("chat-store-ref")},writeChatStoreRef(r){e.write("chat-store-ref",r);},readArtifactsStoreRef(){return t("artifacts-store-ref")},writeArtifactsStoreRef(r){e.write("artifacts-store-ref",r);},readFetchedSourcesStoreRef(){return t("fetched-sources-store-ref")},writeFetchedSourcesStoreRef(r){e.write("fetched-sources-store-ref",r);}}}function Bt(e){return xt(e)}function Tt(e){return e?{lastRequestedToken:e.lastRequestedToken,lastCompletedToken:e.lastCompletedToken,lastCompletionStatus:e.lastCompletionStatus??(e.lastCompletedToken?"success":"not-started"),queueRequestedToken:e.queueRequestedToken}:{lastCompletionStatus:"not-started"}}function lr(e){return e?.lastRequestedToken?e.lastCompletedToken!==e.lastRequestedToken:false}function Et(e,t){return e?.lastRequestedToken?lr(e)?"in-flight":!e.lastCompletedToken||e.lastCompletedToken<t?"dispatch":"idle":"dispatch"}function fr(e,t){return {...e,lastCompletedToken:t,lastCompletionStatus:"success"}}function At(e,t){return {...e,lastCompletedToken:t,lastCompletionStatus:"failure"}}function Ke(e){let t=e.cards.filter(d=>d.name!==ae);if(t.length===e.cards.length)return e;let r=new Set;for(let d of t)for(let S of d.requires)r.add(S);let s=t.map(d=>({name:d.name,fanOut:d.unblocks.length})).sort((d,S)=>S.fanOut-d.fanOut||d.name.localeCompare(S.name)),o=s.length>0?s[0]:{name:null,fanOut:0},a=d=>t.filter(S=>S.status===d).length,c=t.filter(d=>d.requires.length===0&&d.unblocks.length===0).length;return {...e,summary:{...e.summary,card_count:t.length,completed:a("completed"),eligible:a("eligible"),pending:a("pending"),blocked:a("blocked"),unresolved:a("unresolved"),failed:a("failed"),in_progress:a("in-progress"),orphan_cards:c,topology:{edge_count:r.size,max_fan_out_card:o.name,max_fan_out:o.fanOut}},cards:t}}function Pt(e){let{[fe]:t,...r}=e;return r}function De(e,t){let r=t.state.tasks,s=t.config.tasks,o=Object.keys(r),a=chunkG4XXRHL2_cjs.r(t),c={completed:0,failed:0,in_progress:0,pending:0,blocked:0,unresolved:0},d=new Map;for(let A of a.pending)d.set(A.taskName,A.waitingOn);for(let A of a.unresolved)d.set(A.taskName,A.missingTokens);for(let A of a.blocked)d.set(A.taskName,A.failedTokens);let S=new Map;for(let[A,k]of Object.entries(s))for(let H of k.requires??[]){let G=S.get(H)??[];G.push(A),S.set(H,G);}let y=o.sort().map(A=>{let k=r[A],H=s[A]??{requires:[],provides:[]};k.status==="completed"?c.completed+=1:k.status==="failed"?c.failed+=1:k.status==="in-progress"&&(c.in_progress+=1);let G=H.requires??[],g=H.provides??[],u=Object.keys(k.data??{}).sort(),p=G.filter(P=>t.state.availableOutputs.includes(P)),v=G.filter(P=>!t.state.availableOutputs.includes(P)),I=d.get(A)??v,T=new Set;for(let P of g)for(let L of S.get(P)??[])L!==A&&T.add(L);let x=k.failedAt,D=k.error?{message:k.error,code:"TASK_FAILED",at:x,source:"task-runtime"}:void 0;return {name:A,status:k.status,error:D,requires:G,requires_satisfied:p,requires_missing:v,provides_declared:g,provides_runtime:u,blocked_by:I,unblocks:Array.from(T).sort(),runtime:{attempt_count:k.executionCount??0,restart_count:k.retryCount??0,in_progress_since:k.status==="in-progress"?k.startedAt??null:null,last_transition_at:k.lastUpdated??null,last_completed_at:k.completedAt??null,last_restarted_at:k.startedAt??null,status_age_ms:k.lastUpdated?0:null}}});c.pending=a.pending.length,c.blocked=a.blocked.length,c.unresolved=a.unresolved.length;let V=y.map(A=>({name:A.name,fanOut:A.unblocks.length})).sort((A,k)=>k.fanOut-A.fanOut||A.name.localeCompare(k.name)),z=V.length>0?V[0]:{name:null,fanOut:0},Q=new Set;for(let A of Object.values(s))for(let k of A.requires??[])Q.add(k);let te=0;for(let[A,k]of Object.entries(s)){let H=(k.requires??[]).length===0,g=(k.provides??[]).some(u=>(S.get(u)??[]).some(p=>p!==A));H&&!g&&(te+=1);}return {schema_version:"v1",meta:{board:{path:e}},summary:{card_count:o.length,completed:c.completed,eligible:a.eligible.length,pending:c.pending,blocked:c.blocked,unresolved:c.unresolved,failed:c.failed,in_progress:c.in_progress,orphan_cards:te,topology:{edge_count:Array.from(Q).length,max_fan_out_card:z.name,max_fan_out:z.fanOut}},cards:y}}function mr(){return new Date().toISOString()}function qt(e,t,r,s,o,a,c){return async d=>{let S=[],y=r.cardStore.readCard(d.nodeId);if(!y)return "task-initiate-failure";let V=y.id;if(V===ae){let C=r.activeTaskConfigs?.(),b={[fe]:C?cr(Object.keys(C).filter(_=>_!==ae).map(_=>r.cardStore.readCard(_)).filter(_=>!!_),C):dr(r.cardStore.readAllCards())};return (c??r.outputStore.writeDataObjects.bind(r.outputStore))(b),s(d.nodeId,b),"task-initiated"}let z=y.card_data??{},Q=y.source_defs??[],te=Q,A=r.cardRuntimeStore.readRuntime(V),k=false,H=()=>{k&&(r.cardRuntimeStore.writeRuntime(V,A),k=false);},G=C=>Tt(A._sources[C]),g=(C,b)=>{A._sources[C]=Tt(b),k=true;},u=d.taskState?.executionCount??0;if(A._lastExecutionCount!==u&&(A._sources={},A._lastExecutionCount=u,k=true),d.update){let C=d.update,b=C.outputFile;if(b){let _=G(b);if(C.failure){let $=C.rqt??_.lastRequestedToken??_.queueRequestedToken;$&&g(b,At(_,$));}else {let $=C.rqt;if(!_.lastCompletedToken||$>_.lastCompletedToken){let re=typeof C.deliveryToken=="string"?C.deliveryToken:void 0,K=false;re&&(K=r.fetchedSourcesStore.commitSourceData(V,b,re)),K?g(b,fr(_,$)):g(b,At(_,$));}}H();}}let v={};for(let C of Q)if(C.outputFile){let b=r.fetchedSourcesStore.readSourceData(V,C.outputFile);b!==null&&(v[C.bindTo]=b);}let I={};for(let[C,b]of Object.entries(d.state??{}))if(b!==null&&typeof b=="object"&&!Array.isArray(b)){let _=b[C];I[C]=_!==void 0?_:b;}else I[C]=b;let T={id:V,card_data:{...z},requires:I,source_defs:Q,compute:y.compute};T._sourcesData=v,y.compute&&chunkQBEQL4TL_cjs.a.runSync(T,{sourcesData:v}),(a??r.outputStore.writeComputedValues.bind(r.outputStore))(V,T.computed_values??{});let x={...y},D=chunkQBEQL4TL_cjs.a.enrichSourcesSync(Array.isArray(y.source_defs)?y.source_defs:void 0,{card_data:y.card_data,requires:I}),P=e.value;x.source_defs=Array.isArray(D)?D.map(C=>({...C,boardDir:typeof C.boardDir=="string"&&C.boardDir?C.boardDir:P})):D;let L=mr(),M=d.update?void 0:L,oe=te.filter(C=>{let b=C.outputFile;if(typeof b!="string"||!b)return true;let _=G(b);M&&(_={..._,queueRequestedToken:M},g(b,_));let $=_.queueRequestedToken??_.lastRequestedToken??L,re=Et(_,$);return re==="in-flight"?false:re==="dispatch"});if(H(),oe.length>0){let C=false,b=L;for(let _ of oe){let $=_.outputFile;if(typeof $!="string"||!$)continue;let re=G($),K=re.queueRequestedToken??L;g($,{...re,lastRequestedToken:K}),b=K,C=true;}return C&&H(),C&&(S.push({taskKind:"source-fetch",payload:{boardRef:chunkVQCIOKJV_cjs.a(e),enrichedCard:x,callbackToken:d.callbackToken,rqt:b}}),r.executionRequestStore.appendEntries(t,S)),"task-initiated"}if(te.some(C=>{let b=C.outputFile;if(typeof b!="string"||!b)return false;let _=G(b),$=_.queueRequestedToken??_.lastRequestedToken??L;return Et(_,$)==="in-flight"}))return "task-initiated";let ge=y.provides??[],ie={};for(let{bindTo:C,ref:b}of ge)ie[C]=chunkQBEQL4TL_cjs.a.resolve(T,b);return (c??r.outputStore.writeDataObjects.bind(r.outputStore))(ie),s(d.nodeId,ie),S.length>0&&r.executionRequestStore.appendEntries(t,S),"task-initiated"}}var Xe={settings:{completion:"manual",refreshStrategy:"data-changed"},tasks:{}};function Vt(e){return {[ye]:e.graph,[Ft]:e.lastDrainedJournalId,board:{runtimeByCardId:e.runtimeByCardId}}}function jt(e){let t=e[ye],r=e[Ft],o=e.board?.runtimeByCardId;if(!t||typeof t!="object")throw new Error(`State snapshot is missing required key: ${ye}`);return {graph:t,lastDrainedJournalId:typeof r=="string"?r:"",runtimeByCardId:o&&typeof o=="object"?o:{}}}function Kt(e){let t=e.requires;return {provides:e.provides?.map(s=>s.bindTo)??[],taskHandlers:["card-handler"],description:e.meta?.title??e.id,...t&&t.length>0?{requires:t}:{}}}function E(e){return e!==void 0?{status:"success",data:e}:{status:"success"}}function h(e){return {status:"fail",error:e}}function F(e){return {status:"error",error:e instanceof Error?e.message:String(e)}}function pr(e){let t=new TextEncoder().encode(e),r=Array.from(t,s=>String.fromCharCode(s)).join("");return btoa(r).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function Lt(e){let t=e.replace(/-/g,"+").replace(/_/g,"/"),r=t+"=".repeat((4-t.length%4)%4),s=atob(r),o=Uint8Array.from(s,a=>a.charCodeAt(0));return new TextDecoder().decode(o)}function Ne(e){try{let t=JSON.parse(Lt(e));return typeof t?.t=="string"?{taskName:t.t}:null}catch{return null}}function Dt(e){return pr(JSON.stringify(e))}function Nt(e){try{let t=JSON.parse(Lt(e));return typeof t?.cbk=="string"&&typeof t?.cid=="string"&&typeof t?.b=="string"&&typeof t?.d=="string"?t:null}catch{return null}}function W(){return new Date().toISOString()}function gr(e){let t=new Map;return {appendEntries(r,s){if(!r||s.length===0)return;let o=t.get(r)??[];t.set(r,[...o,...s]);},dispatchEntriesForJournalId(r,s){if(!r)return;let o=t.get(r);if(!(!o||o.length===0)){for(let a of o)try{s(a);}catch(c){try{e(a,c instanceof Error?c.message:String(c));}catch{}}t.delete(r);}}}}function Gr(e,t,r={}){Rt(t.callbackTransport,"createBoardLiveCardsPublic");let s=t.callbackTransport,o=t.onWarn??(()=>{}),a=chunkVQCIOKJV_cjs.a(e),c=r.boardRuntimeStoreRef,d=r.scratchStoreRef,S=r.taskExecutorRef,y=r.chatHandlerFlow,V=r.emitNotification??(i=>{if(!t.publishBoardChangeNotifications)return;let n=i.kind==="notification-batch"?i.notifications:[i];return t.publishBoardChangeNotifications(n)});function z(){if(!c)throw new Error(`Board at ${e.value} has no board runtime store configured. Pass boardRuntimeStoreRef at construction or init.`);return c}function Q(i){if(i.length!==0)try{let n=chunk2RIHC5TZ_cjs.e(i),l=chunk2RIHC5TZ_cjs.f({kind:"notification-batch",notifications:n}),m=V(l);m&&typeof m.catch=="function"&&m.catch(w=>o(`[board-live-cards-public] emitNotification failed: ${w instanceof Error?w.message:String(w)}`));}catch(n){o(`[board-live-cards-public] emitNotification failed: ${n instanceof Error?n.message:String(n)}`);}}function te(){let i=k().readCardStoreRef();if(!i)throw new Error(`Board at ${e.value} has no card store configured. Run: init --base-ref <ref> --store-ref <b64-ref>`);let n=t.kvStorageForRef(i);return {readIndex(){return n.read("_index")},writeIndex(l){n.write("_index",l);},readCard(l){return n.read(l)},writeCard(l,m){return n.write(l,m),t.hashFn(m)},removeCard(l){n.delete(l);},cardExists(l){return n.read(l)!==null},defaultCardKey(l){return l}}}let A={readValues(i){let n=t.kvStorageForRef(z()),l=n.listKeys().sort();if(l.length===0)return {version:null,values:{}};let m={};for(let w of l)m[w]=n.read(w);return {version:t.hashFn(m),values:m}},writeValues(i,n,l){let m=t.kvStorageForRef(z());for(let w of l)m.delete(w);for(let[w,j]of Object.entries(n))m.write(w,j);return t.hashFn(n)}},k=()=>je(t.kvStorageForRef(z())),H=()=>Ot(A),G=()=>_t(t.journalAdapterForRef(z())),g=()=>Qe(te(),o),u=()=>{let i=k().readOutputsStoreRef();if(!i)throw new Error(`Board at ${e.value} has no outputs store configured. Run: init --outputs-store-ref <b64-ref>`);return Bt(t.kvStorageForRef(i))};function p(){return S??k().readTaskExecutorRef()}function v(){return !!H().readSnapshot(e.value).values[ye]}function I(){let i=H().readSnapshot(e.value);if(!i.values[ye])throw new Error(`Board not initialized at ${e.value}`);return jt(i.values)}function T(i,n){let l=H().commitSnapshot(e.value,{schemaVersion:Ve,expectedVersion:n,commitId:t.genId(),committedAt:W(),deleteKeys:[],shallowMerge:Vt(i)});if(!l.ok)throw new Error(`Snapshot commit failed (version mismatch): expected=${n??"null"} current=${l.currentVersion??"null"}`)}function x(i){G().appendEvent(i);}async function D(){let n=gr((f,R)=>{let B=f.payload,N=(B?.enrichedCard??{}).id??B?.cardId??"unknown";x({type:"task-failed",taskName:N,error:R,timestamp:W()});}),l=I(),m=chunkG4XXRHL2_cjs.q(l.graph),{events:w,newCursor:j}=G().readEntriesAfterCursor(l.lastDrainedJournalId),O=K(),q=qe(O,f=>t.resolveBlob(f)),J={...l.runtimeByCardId},X=new Map,ke={readRuntime(f){return X.get(f)??J[f]??{_sources:{}}},writeRuntime(f,R){X.set(f,R),J[f]=R;}},Re=[],ne=new Map,Ce={readSourceData(f,R){let B=`${f}/${R}`;return ne.has(B)?ne.get(B):q.readSourceData(f,R)},ingestSourceDataStaged(f,R,B,de){q.ingestSourceDataStaged(f,R,B,de);},commitSourceData(f,R,B){let de=`${f}/.staged/${B}/${R}`,N=O.read(de);if(N==null){let Y=O.keyRef?.(de);Y&&(N=t.resolveBlob(Y));}if(N==null)return false;let se=`${f}/${R}`,me=N.trim();try{ne.set(se,JSON.parse(me));}catch{ne.set(se,me);}return Re.push({cardId:f,outputFile:R,deliveryToken:B}),true},hasSource(f,R){let B=`${f}/${R}`;return ne.has(B)?true:q.hasSource(f,R)},listSources(f){let R=q.listSources(f),B=new Set;for(let N of ne.keys())N.startsWith(`${f}/`)&&B.add(N.slice(`${f}/`.length));let de=new Set([...R,...B]);return Array.from(de)}},xe=()=>m.config.tasks,he={cardStore:g(),cardRuntimeStore:ke,fetchedSourcesStore:Ce,outputStore:u(),executionRequestStore:n,activeTaskConfigs:()=>xe()},Te=[],Le=[],$e=[],Je=new Map,rt=new Set,tr=(f,R)=>{Te.push({type:"task-completed",taskName:f,data:R,timestamp:W()});},Me=(f,R)=>{x({type:"task-failed",taskName:f,error:R,timestamp:W()});},Ee=chunkG4XXRHL2_cjs.u(m,{handlers:{"card-handler":qt(e,j,he,tr,Me,(f,R)=>{Le.push({cardId:f,values:R});},f=>{$e.push(f);})},onNodeRemoved:f=>{Je.delete(f),X.delete(f),delete J[f],rt.add(f);}});for(xe=()=>Ee.getState().config.tasks,Te=w;Te.length>0;){let f=Te;Te=[];for(let R of f)if(R.type==="task-restart"){let B=he.cardStore.readCard(R.taskName);B&&Je.set(R.taskName,B);}Ee.pushAll(f),await Ee.waitForHandlers();}let nt=Ee.getState();await Ee.dispose({wait:true});let rr=H().readSnapshot(e.value).version;T({lastDrainedJournalId:j,graph:chunkG4XXRHL2_cjs.p(nt),runtimeByCardId:J},rr);for(let{cardId:f,values:R}of Le)he.outputStore.writeComputedValues(f,R);for(let f of $e)he.outputStore.writeDataObjects(f);for(let{cardId:f,outputFile:R,deliveryToken:B}of Re)q.commitSourceData(f,R,B);let Ae;try{Ae=Ke(De(a,nt)),he.outputStore.writeStatusSnapshot(Ae);}catch(f){o(`[board-live-cards-public] status publish failed: ${f instanceof Error?f.message:String(f)}`);}let be=[];for(let{cardId:f,values:R}of Le)be.push({kind:"computed_values",cardId:f,values:R});for(let f of $e)for(let[R,B]of Object.entries(f))R&&be.push({kind:"data_object",key:R,payload:B});for(let[f,R]of Je)be.push({kind:"card_refreshed",cardId:f,card:R});for(let f of rt)be.push({kind:"card_removed",cardId:f});Ae!==void 0&&be.push({kind:"status",status:Ae}),Q(be);let we=p()??{howToRun:"built-in",whatToRun:chunkVQCIOKJV_cjs.a({kind:"built-in",value:"source-cli-task-executor"})},ot=t.supportsDirectSourceOutput?.(we)===true;n.dispatchEntriesForJournalId(j,f=>{if(f.taskKind!=="source-fetch"){o(`[process-accumulated-events] unknown taskKind "${f.taskKind}" \u2014 skipping`);return}let R=f.payload,B=R.enrichedCard?.id??"unknown",de=R.enrichedCard?.source_defs??[];if(we.howToRun==="queue-storage"&&ot){try{let N=t.queueStorageForRef(P(),"task-executor"),se=typeof we.extra?.boardId=="string"?we.extra.boardId:void 0,me=[];for(let Y of de){if(!Y.outputFile){o(`[dispatch] source "${Y.bindTo}" has no outputFile \u2014 skipping`);continue}let Ie=t.genId(),_e=`${B}/.staged/${Ie}/${Y.outputFile}`,st=O.keyRef?.(_e);if(!st)continue;let at={ref:chunkVQCIOKJV_cjs.a(st),deliveryToken:Ie,outputFile:Y.outputFile,cardId:B},nr=Dt({cbk:R.callbackToken,rg:e.value,br:chunkVQCIOKJV_cjs.a(e),cid:B,b:Y.bindTo,d:Y.outputFile,cs:void 0,rqt:R.rqt,dt:at.deliveryToken});me.push({...se?{boardId:se}:{},ref:we,args:{source_def:Y,base_ref:chunkVQCIOKJV_cjs.a(e),callback:s.createCallback(nr),output:at}});}me.length>0&&N.enqueueMany(me);}catch(N){Me(B,N instanceof Error?N.message:String(N));}return}for(let N of de){if(!N.outputFile){o(`[dispatch] source "${N.bindTo}" has no outputFile \u2014 skipping`);continue}let se;if(ot){let Y=t.genId(),Ie=`${B}/.staged/${Y}/${N.outputFile}`,_e=O.keyRef?.(Ie);_e&&(se={ref:chunkVQCIOKJV_cjs.a(_e),deliveryToken:Y,outputFile:N.outputFile,cardId:B});}let me=Dt({cbk:R.callbackToken,rg:e.value,br:chunkVQCIOKJV_cjs.a(e),cid:B,b:N.bindTo,d:N.outputFile,cs:void 0,rqt:R.rqt,...se?{dt:se.deliveryToken}:{}});t.dispatchExecution(we,{source_def:N,base_ref:chunkVQCIOKJV_cjs.a(e),callback:s.createCallback(me),...se?{output:se}:{}}).catch(Y=>Me(B,Y instanceof Error?Y.message:String(Y)));}});}function P(){let i=k().readQueueStoreRef();if(!i)throw new Error(`Board at ${e.value} has no queue store configured. Run: init --queue-store-ref <b64-ref>`);return i}function L(){t.queueStorageForRef(P(),"process-accumulated").enqueue({boardRef:chunkVQCIOKJV_cjs.a(e)}),t.requestProcessAccumulated?.();}function M(){let i=t.queueStorageForRef(P(),"process-accumulated");for(;;){let n=i.lease({max:64,visibilityMs:1e3});if(n.length<=0)return;for(let l of n)i.ack(l.id,l.leaseToken);if(n.length<64)return}}async function oe(){try{let i=()=>{let l=I(),{events:m}=G().readEntriesAfterCursor(l.lastDrainedJournalId);m.length<=0||L();},n=await chunkVQCIOKJV_cjs.c(t.lock,D,i);return E({ran:n!==!1})}catch(i){return F(i)}}function Z(){L();}function ge(i){try{let n=i.params?.cardStoreRef;if(!n)return h("init requires params.cardStoreRef \u2014 create a card store with card-store-cli and pass its ref here");if(c=i.params?.boardRuntimeStoreRef,!c)return h("init requires params.boardRuntimeStoreRef \u2014 pass the board runtime store ref here");if(!v()){let X=chunkG4XXRHL2_cjs.a(Xe);T({lastDrainedJournalId:"",graph:chunkG4XXRHL2_cjs.p(X),runtimeByCardId:{}},null);}let l=i.params?.outputsStoreRef;if(!l)return h("init requires params.outputsStoreRef \u2014 pass the outputs store ref here");let m=i.params?.queueStoreRef;if(!m)return h("init requires params.queueStoreRef \u2014 pass the queue store ref here");let w=i.params?.fetchedSourcesStoreRef;if(!w)return h("init requires params.fetchedSourcesStoreRef \u2014 pass the fetched sources store ref here");d=i.params?.scratchStoreRef;let j=i.params?.chatStoreRef;if(!j)return h("init requires params.chatStoreRef \u2014 pass the chat store ref here");let O=i.params?.artifactsStoreRef;if(!O)return h("init requires params.artifactsStoreRef \u2014 pass the artifacts store ref here");let q=k();q.writeBoardRuntimeStoreRef(c),q.writeCardStoreRef(n),q.writeOutputsStoreRef(l),q.writeQueueStoreRef(m),q.writeFetchedSourcesStoreRef(w),q.writeChatStoreRef(j),q.writeArtifactsStoreRef(O),g().writeCard(Pe().id,Pe());let J=ee({params:{cardId:Pe().id,restart:!0}});if(J.status!=="success")return J;try{u().writeStatusSnapshot(Ke(De(a,chunkG4XXRHL2_cjs.q(I().graph))));}catch{}return E()}catch(n){return F(n)}}function ie(i){try{let n=u().readStatusSnapshot();if(!n){n=Ke(De(a,chunkG4XXRHL2_cjs.q(I().graph)));try{u().writeStatusSnapshot(n);}catch{}}return E(n)}catch(n){return F(n)}}function C(i){try{let n=i.params?.id;if(!n)return h("removeCard requires params.id");try{t.kvStorage("card-upsert").delete(n);}catch{}return x({type:"task-removal",taskName:n,timestamp:W()}),n!==ae&&x({type:"task-restart",taskName:ae,timestamp:W()}),Z(),E()}catch(n){return F(n)}}function b(i){try{let n=i.params?.cardId;if(!n)return h("addCardFiles requires params.cardId");let l=chunk5XLFPPTY_cjs.a(g(),{emitNotification:V}).appendFiles({params:{id:n},body:i.body});return l.status!=="success"?l:E({cardId:n,files_added:l.data.files_added,notified:!0})}catch(n){return F(n)}}function _(i){try{let n=i.params?.id;return n?(x({type:"task-restart",taskName:n,timestamp:W()}),Z(),E()):h("retrigger requires params.id")}catch(n){return F(n)}}async function $(i){return M(),oe()}function re(){let i=k().readFetchedSourcesStoreRef();if(!i)throw new Error(`Board at ${e.value} has no fetched sources store configured. Run: init --fetched-sources-store-ref <b64-ref>`);return i}function K(){return t.blobStorageForRef(re())}function ee(i){try{let n=i.params?.cardId,l=i.params?.all,m=!!i.params?.restart;if(!n&&!l)return h("upsertCard requires --card-id <id> or --all");let w=l?g().readAllCards().map(O=>O.id):[n];for(let O of w)if(!g().readCard(O))return h(`Card "${O}" not found in board at ${e.value}`);let j=!1;for(let O of w){let q=g().readCard(O),J=Kt(q),X=t.hashFn(J),ke=t.kvStorage("card-upsert"),Re=ke.read(O),ne=Re?.taskConfigHash!==X;if(!(!ne&&!m)){if(ne){let Ce=Re?.blobRef??g().readCardKey(O)??O;x({type:"task-upsert",taskName:O,taskConfig:J,timestamp:W()}),ke.write(O,{blobRef:Ce,taskConfigHash:X,updatedAt:W()}),j=j||O!==ae;}m&&x({type:"task-restart",taskName:O,timestamp:W()});}}return j&&x({type:"task-restart",taskName:ae,timestamp:W()}),Z(),E()}catch(n){return F(n)}}function ue(i){try{let n=i.params?.token;if(!n)return h("taskFailed requires params.token");let l=i.params?.error??"unknown error",m=Ne(n);return m?(x({type:"task-failed",taskName:m.taskName,error:l,timestamp:W()}),Z(),E()):h("Invalid callback token")}catch(n){return F(n)}}function Se(i){try{let n=i.params?.token;if(!n)return h("taskProgress requires params.token");let m=(i.body??{}).update??{},w=Ne(n);return w?(x({type:"task-progress",taskName:w.taskName,update:m,timestamp:W()}),Z(),E()):h("Invalid callback token")}catch(n){return F(n)}}function ve(i){try{let n=i.params?.token,l=i.params?.ref;if(!n)return h("sourceDataFetched requires params.token");if(!l)return h("sourceDataFetched requires params.ref");let m=Nt(n);if(!m)return h("Invalid source token");let{cbk:w,cid:j,b:O,d:q,cs:J,rqt:X,dt:ke}=m,Re=qe(K(),he=>t.resolveBlob(he)),ne=ke||t.genId();ke||Re.ingestSourceDataStaged(j,q,chunkVQCIOKJV_cjs.b(l),ne);let Ce=Ne(w);if(!Ce)return h("Invalid callback token embedded in source token");let xe=W();return x({type:"task-progress",taskName:Ce.taskName,update:{bindTo:O,outputFile:q,fetchedAt:xe,deliveryToken:ne,sourceChecksum:J,rqt:X},timestamp:xe}),Z(),E()}catch(n){return F(n)}}function le(i){try{let n=i.params?.token,l=i.params?.reason??"unknown";if(!n)return h("sourceDataFetchFailure requires params.token");let m=Nt(n);if(!m)return h("Invalid source token");let{cbk:w,b:j,d:O,cs:q,rqt:J}=m,X=Ne(w);return X?(x({type:"task-progress",taskName:X.taskName,update:{bindTo:j,outputFile:O,failure:!0,reason:l,sourceChecksum:q,rqt:J},timestamp:W()}),Z(),E()):h("Invalid callback token embedded in source token")}catch(n){return F(n)}}function $t(i){try{let n=k().readCardStoreRef();return n?E({storeRef:n}):h(`Board at ${e.value} has no card store configured`)}catch(n){return F(n)}}function Jt(i){try{return E({storeRef:c??null})}catch(n){return F(n)}}function Mt(i){try{let n=k().readOutputsStoreRef();return n?E({storeRef:n}):h(`Board at ${e.value} has no outputs store configured`)}catch(n){return F(n)}}function Ht(i){try{return E({storeRef:d??null})}catch(n){return F(n)}}function Gt(i){try{let n=k().readChatStoreRef();return E({storeRef:n})}catch(n){return F(n)}}function Ut(i){try{let n=k().readArtifactsStoreRef();return E({storeRef:n})}catch(n){return F(n)}}function Yt(i){try{let n=k().readFetchedSourcesStoreRef();return E({storeRef:n})}catch(n){return F(n)}}function zt(i){try{let n=i.params?.key;if(!n)return h("getConfig requires params.key");let l=k(),m;switch(n){case "task-executor":m=S??null;break;case "chat-handler-flow":m=y??null;break;case "board-runtime-store-ref":m=l.readBoardRuntimeStoreRef();break;case "card-store-ref":m=l.readCardStoreRef();break;case "outputs-store-ref":m=l.readOutputsStoreRef();break;case "scratch-store-ref":m=d??null;break;case "chat-store-ref":m=l.readChatStoreRef();break;case "artifacts-store-ref":m=l.readArtifactsStoreRef();break;case "fetched-sources-store-ref":m=l.readFetchedSourcesStoreRef();break;default:return h(`getConfig: unknown key "${n}"`)}return E({value:m})}catch(n){return F(n)}}function Qt(i){try{let n=i.params?.key;if(!n)return h("getOutputsDataObject requires params.key");if(n===fe)return E(null);let l=u().readDataObject(n);return E(l)}catch(n){return F(n)}}function We(i){try{return E(Pt(u().readAllDataObjects()))}catch(n){return F(n)}}function Xt(i){try{let n=i.params?.key;if(!n)return h("getOutputsComputedValues requires params.key");let l=u().readComputedValues(n);return E(l)}catch(n){return F(n)}}function Ze(i){try{return E(u().readAllComputedValues())}catch(n){return F(n)}}function et(){return qe(K(),i=>t.resolveBlob(i))}function tt(i){let n=K().keyRef?.(i);if(!n)throw new Error("configured fetched-sources store does not support keyRef");return chunkVQCIOKJV_cjs.a(n)}function Wt(i){try{let n=i.params?.key;if(!n)return h("getOutputsFetchedSources requires params.key");let l=et().listSources(n),m={};for(let w of l)m[w]=tt(`${n}/${w}`);return E(m)}catch(n){return F(n)}}function Zt(i){try{let n=et(),l=new Set;for(let w of K().listKeys()){let j=w.indexOf("/");j>0&&!w.includes("/.staged/")&&l.add(w.slice(0,j));}let m={};for(let w of l){let j=n.listSources(w);if(j.length>0){m[w]={};for(let O of j)m[w][O]=tt(`${w}/${O}`);}}return E(m)}catch(n){return F(n)}}function er(i){try{let n=g().readAllCards().filter(q=>q.id!==ae),l=ie({});if(l.status!=="success")return l;let m=We({});if(m.status!=="success")return m;let w=Ze({});if(w.status!=="success")return w;let j=w.data,O={};for(let q of n){let J=typeof q?.id=="string"?q.id:null;if(!J)continue;let X=q.card_data&&typeof q.card_data=="object"&&!Array.isArray(q.card_data)?q.card_data:{};O[J]={schema_version:"v1",card_id:J,card_data:{...X},computed_values:j[J]&&typeof j[J]=="object"?j[J]:{}};}return E({cardDefinitions:n,statusSnapshot:l.data,dataObjectsByToken:m.data,cardRuntimeById:O})}catch(n){return F(n)}}return {init:ge,status:ie,getBoardRuntimeStoreRef:Jt,getCardStoreRef:$t,getOutputsStoreRef:Mt,getScratchStoreRef:Ht,getChatStoreRef:Gt,getArtifactsStoreRef:Ut,getFetchedSourcesStoreRef:Yt,getConfig:zt,getOutputsDataObject:Qt,getAllOutputsDataObjects:We,getOutputsComputedValues:Xt,getAllOutputsComputedValues:Ze,getOutputsFetchedSources:Wt,getAllOutputsFetchedSources:Zt,buildSseOneShotPayload:er,removeCard:C,addCardFiles:b,retrigger:_,processAccumulatedEvents:$,upsertCard:ee,taskFailed:ue,taskProgress:Se,sourceDataFetched:ve,sourceDataFetchFailure:le}}function Ur(e,t,r){let s=r?.taskExecutorRef,o=()=>{if(r){if(!r.boardRuntimeStoreRef)throw new Error(`Board at ${e.value} requires boardRuntimeStoreRef for non-core runtime operations.`);return je(t.kvStorageForRef(r.boardRuntimeStoreRef))}return je(t.kvStorage("config"))};function a(){let g=o().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 u=t.kvStorageForRef(g);return {readIndex(){return u.read("_index")},writeIndex(p){u.write("_index",p);},readCard(p){return u.read(p)},writeCard(p,v){return u.write(p,v),t.hashFn(v)},removeCard(p){u.delete(p);},cardExists(p){return u.read(p)!==null},defaultCardKey(p){return p}}}let c=()=>Qe(a(),t.onWarn??(()=>{}));function d(){return s??o().readTaskExecutorRef()}async function S(g,u){let p=t.validateSchema(u),v=[],I=d();if(I&&Array.isArray(u.source_defs))for(let x of u.source_defs){let D=typeof x.bindTo=="string"?x.bindTo:"(unknown)";try{let P;try{P=await t.invokeExecutor(I,"validate-source-def",{timeout:t.executorTimeouts?.validationMs??1e4,input:JSON.stringify(x)});}catch(M){let oe=M;if(P=typeof oe?.stdout=="string"?oe.stdout:"",!P.trim()){v.push(`source "${D}": executor validate-source-def failed \u2014 ${M instanceof Error?M.message:String(M)}`);continue}}let L=JSON.parse(P.trim());if(!L.ok&&Array.isArray(L.errors))for(let M of L.errors)v.push(`source "${D}": ${M}`);}catch(P){v.push(`source "${D}": executor validate-source-def failed \u2014 ${P instanceof Error?P.message:String(P)}`);}}let T=[...p.errors,...v];return E({cardId:g,isValid:T.length===0,issues:T})}function y(g,u){let p=g.params?.sourceIdx,v=g.params?.outRef;if(p===void 0)return h(`${u} requires params.sourceIdx`);if(!g.body||typeof g.body!="object"||Array.isArray(g.body))return h(`${u} requires card JSON object in body`);let I=g.body,T=I["card-content"]??I,x=I["mock-projections"]??{},D=T.source_defs??[];if(p<0||p>=D.length)return h(`sourceIdx ${p} out of range (card has ${D.length} source(s))`);let P=D[p],L=typeof P.bindTo=="string"?P.bindTo:"source";return {src:P,bindTo:L,outRef:v,mockProjections:x}}async function V(g){try{if(!g.body||typeof g.body!="object"||Array.isArray(g.body))return h("validateCardPreflight requires card JSON object in body");let u=g.body,p=u["card-content"]??u,v=typeof p.id=="string"?p.id:"(unknown)";return await S(v,p)}catch(u){return F(u)}}async function z(g){try{let u=y(g,"probeSourcePreflight");if("status"in u)return u;let p=d();if(!p)return h("No task-executor registered for this board");try{let v={...u.src,_projections:u.mockProjections},I=await t.invokeExecutor(p,"probe-source-preflight",{timeout:u.src.timeout??t.executorTimeouts?.preflightMs??6e4,input:JSON.stringify(v)}),T=JSON.parse(I.trim());return T.ok?E({bindTo:u.bindTo,reachable:T.reachable,latencyMs:T.latencyMs,note:T.note}):h(T.error??"Preflight probe failed")}catch{return h("Executor does not support probe-source-preflight")}}catch(u){return F(u)}}async function Q(g){try{let u=y(g,"runSourcePreflight");if("status"in u)return u;let p=d();if(!p)return h("No task-executor registered for this board");try{let v={...u.src,_projections:u.mockProjections},I=await t.invokeExecutor(p,"run-source-preflight",{timeout:u.src.timeout??t.executorTimeouts?.probeMs??6e4,input:JSON.stringify(v)}),T=JSON.parse(I.trim());if(!T.ok)return E({bindTo:u.bindTo,ok:!1,result:null,issues:[T.error??"Preflight run failed"]});if(u.outRef){let x=chunkVQCIOKJV_cjs.b(u.outRef);t.absoluteBlob.write(x.value,JSON.stringify(T.resultValue,null,2));}return E({bindTo:typeof T.bindTo=="string"?T.bindTo:u.bindTo,ok:!0,result:T.resultValue??null,issues:[]})}catch(v){let I=v instanceof Error?v.message:String(v);return E({bindTo:u.bindTo,ok:!1,result:null,issues:[I]})}}catch(u){return F(u)}}async function te(g){try{let u=d();if(!u)return h("No task-executor registered for this board");let p=await t.invokeExecutor(u,"describe-capabilities",{timeout:t.executorTimeouts?.describeMs??1e4});return E(JSON.parse(p.trim()))}catch(u){return F(u)}}function A(g){try{let u=g.body;if(!u||!Array.isArray(u.ops))return h("updatesInCardStore requires body.ops array");let p=u.ops,v=c();for(let I of p){let T=I.op,x=I.id;if(!x)return h('op is missing "id"');if(T==="update"){let D=I["card-content"];if(!D)return h(`update op for "${x}" is missing "card-content"`);v.writeCard(x,D);}else return h(`Unknown op type: "${T??"(none)"}"`)}return E()}catch(u){return F(u)}}function k(g){try{let u=g.body;if(!u||!Array.isArray(u.ids))return h("readFromCardStore requires body.ids array");let p=u.ids,v=c(),I=p.map(T=>({id:T,"card-content":v.readCard(T)}));return E({cards:I})}catch(u){return F(u)}}function H(g){try{if(!g.body||typeof g.body!="object"||Array.isArray(g.body))return h("evalCardCompute requires a JSON object in body");let u=g.body,p=u["card-content"]??u,v=typeof p.id=="string"?p.id:"(unknown)",I=u["mock-fetched-sources"]??{},T=u["mock-requires"]??{},x=p.compute;if(!x||!Array.isArray(x)||x.length===0)return E({cardId:v,ok:!0,computed_values:{},errors:[]});let D={id:v,card_data:p.card_data??{},requires:T,source_defs:p.source_defs,compute:x},P=chunkQBEQL4TL_cjs.a.runSync(D,{sourcesData:I}),L=P.node.computed_values??{},M=P.errors??[];return E({cardId:v,ok:M.length===0,computed_values:L,errors:M})}catch(u){return F(u)}}async function G(g){try{if(!g.body||typeof g.body!="object"||Array.isArray(g.body))return h("simulateCardCycle requires a JSON object in body");let u=g.body,p=u["card-content"]??u,v=typeof p.id=="string"?p.id:"(unknown)",I=u["mock-fetched-sources"]??{},T=u["mock-requires"]??{},x=await S(v,p),D=x.status==="success"?{isValid:x.data.isValid,issues:x.data.issues}:{isValid:!1,issues:[x.status==="fail"?x.error:"internal error"]},P=p.source_defs??[],L=p.card_data??{},M=[],oe=[];if(P.length>0){M=chunkQBEQL4TL_cjs.a.enrichSourcesSync(P,{card_data:L,requires:T});for(let K of M){let ee=K.projections,ue=K._projections;if(ee&&ue){for(let Se of Object.keys(ee))if(ue[Se]===void 0){let ve=typeof K.bindTo=="string"?K.bindTo:"(unknown)";oe.push({bindTo:ve,key:Se,error:`Projection "${Se}" resolved to undefined`});}}}}let Z=[],ge={...I},ie=u["task-executor-ref"],C=(ie?.howToRun&&ie?.whatToRun?ie:void 0)??d();for(let K=0;K<M.length;K++){let ee=M[K],ue=typeof ee.bindTo=="string"?ee.bindTo:`source_${K}`;if(!C){Z.push({bindTo:ue,skipped:!0,error:"No task executor configured"});continue}try{let Se={...ee},ve=await t.invokeExecutor(C,"run-source-preflight",{timeout:ee.timeout??t.executorTimeouts?.preflightMs??6e4,input:JSON.stringify(Se)}),le=JSON.parse(ve.trim());le.ok&&!Object.prototype.hasOwnProperty.call(I,ue)&&Object.prototype.hasOwnProperty.call(le,"resultValue")&&(ge[ue]=le.resultValue),Z.push({bindTo:ue,reachable:le.reachable,latencyMs:le.latencyMs,error:le.ok?void 0:le.error});}catch{Z.push({bindTo:ue,skipped:!0,error:"Executor does not support run-source-preflight"});}}let b=p.compute,_={},$=[];if(b&&Array.isArray(b)&&b.length>0){let K={id:v,card_data:L,requires:T,source_defs:p.source_defs,compute:b},ee=chunkQBEQL4TL_cjs.a.runSync(K,{sourcesData:ge});_=ee.node.computed_values??{},$=ee.errors??[];}let re=D.isValid&&oe.length===0&&$.length===0&&Z.every(K=>K.reachable!==!1);return E({cardId:v,ok:re,validation:D,source_probes:Z,projection_errors:oe,fetched_sources:ge,computed_values:_,compute_errors:$})}catch(u){return F(u)}}return {validateCardPreflight:V,probeSourcePreflight:z,runSourcePreflight:Q,evalCardCompute:H,simulateCardCycle:G,describeTaskExecutorCapabilities:te,updatesInCardStore:A,readFromCardStore:k}}
|
|
2
|
+
exports.A=De;exports.B=Xe;exports.C=Vt;exports.D=jt;exports.E=Kt;exports.F=Gr;exports.G=Ur;exports.a=Tr;exports.b=Ct;exports.c=Er;exports.d=Rt;exports.e=br;exports.f=wr;exports.g=vr;exports.h=vt;exports.i=ir;exports.j=ur;exports.k=xt;exports.l=fe;exports.m=ae;exports.n=dr;exports.o=cr;exports.p=Pe;exports.q=Qe;exports.r=Ve;exports.s=ye;exports.t=Vr;exports.u=Tt;exports.v=Et;exports.w=fr;exports.x=At;exports.y=Ke;exports.z=Pt;//# sourceMappingURL=chunk-BAG7MHZP.cjs.map
|
|
3
|
+
//# sourceMappingURL=chunk-BAG7MHZP.cjs.map
|
|
@@ -0,0 +1,3 @@
|
|
|
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 St(e){return typeof e=="string"&&e.trim().length>0}function kt(e,t){if(!e||typeof e!="object")throw new Error(`${t}: adapter.selfRef is required`);if(!St(e.howToRun))throw new Error(`${t}: adapter.selfRef.howToRun is required`);if(!St(e.whatToRun))throw new Error(`${t}: adapter.selfRef.whatToRun is required`)}function Rt(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 or(e,t="callbackTransport"){return {createCallback(r){let s=e();return kt(s,t),{token:r,via:s}}}}function Ue(e){return or(()=>e,"createStaticExecutionRefCallbackTransport")}function br(e){return Ue({meta:"board-live-cards",howToRun:"http:post",whatToRun:a({kind:"http-url",value:String(e||"").trim()})})}function wr(e){return Ue({meta:"board-live-cards",howToRun:"in-process-loop",whatToRun:a({kind:"in-process-loop",value:String(e||"").trim()})})}function vr(e){let t=typeof e=="string"?{notifyChannel:e}:e??{},r={};return t.notifyChannel&&(r.notifyChannel=t.notifyChannel),t.boardRuntimeStoreRef&&(r.boardRuntimeStoreRef=t.boardRuntimeStoreRef),t.queueStoreRef&&(r.queueStoreRef=t.queueStoreRef),Ue({meta:"board-live-cards",howToRun:"built-in",whatToRun:a({kind:"built-in",value:"board-live-cards"}),...Object.keys(r).length>0?{extra:r}:{}})}function Oe(e){return typeof e=="object"&&e!==null&&"then"in e&&typeof e.then=="function"}function Ye(e,t){return Oe(e)?e.then(t):t(e)}function yt(e,t){let r={...e};for(let s of t.deleteKeys)delete r[s];return {...r,...t.shallowMerge}}function Tr(e,t){return {readValues(s){let o=e(s);return Ye(o.listKeys(),a=>{let c=[...a].sort();if(c.length===0)return {version:null,values:{}};let d={},S=null;for(let y of c){let V=o.read(y);Oe(V)?S=(S??Promise.resolve()).then(async()=>{d[y]=await V;}):d[y]=V;}return S?S.then(()=>({version:t(d),values:d})):{version:t(d),values:d}})},writeValues(s,o,a){let c=e(s),d=null;for(let S of a){let y=c.delete(S);Oe(y)&&(d=(d??Promise.resolve()).then(()=>y).then(()=>{}));}for(let[S,y]of Object.entries(o)){let V=c.write(S,y);Oe(V)&&(d=(d??Promise.resolve()).then(()=>V).then(()=>{}));}return d?d.then(()=>t(o)):t(o)}}}function Ct(e,t){return {readSnapshot(r){return e.readValues(r)},commitSnapshot(r,s){if(s.schemaVersion!==t)throw new Error(`Unsupported snapshot schema version: ${s.schemaVersion}`);return Ye(e.readValues(r),o=>{if(o.version!==s.expectedVersion)return {ok:false,reason:"version-mismatch",currentVersion:o.version};let a=yt(o.values,s);return Ye(e.writeValues(r,a,s.deleteKeys),c=>({ok:true,newVersion:c}))})}}}function ht(e,t){if(!t)return e;let r=e.findIndex(s=>s.id===t);return r===-1?e:e.slice(r+1)}function bt(e){return {readEntriesAfterCursor(t){let r=ht(e.readAllEntries(),t);return r.length===0?{events:[],newCursor:t}:{events:r.map(s=>s.event),newCursor:r[r.length-1].id}},pendingCount(t){return ht(e.readAllEntries(),t).length},appendEvent(t){e.appendEntry({id:e.generateId(),event:t});}}}function Er(e){return {appendEvent(t){return e.append(t).then(()=>{})},async readEntriesAfterCursor(t){let r=await e.readAfter(t||null);return {events:r.entries.map(s=>s.payload),newCursor:r.newCursor??t}}}}function Be(e){return typeof e=="object"&&e!==null&&"then"in e&&typeof e.then=="function"}function ce(e,t){return Be(e)?e.then(t):t(e)}function ze(e,t){let r=null;for(let s of e){if(r){r=r.then(()=>t(s)).then(()=>{});continue}let o=t(s);Be(o)&&(r=Promise.resolve(o).then(()=>{}));}return r??void 0}function sr(e){if(e==null)return null;let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{return t}}function ar(e,t){let r=e.match(t);return r?r[1]:null}function wt(e,t,r){let s={},o=ze(e,a=>{let c=r(a);if(c)return ce(t(a),d=>{s[c]=d;})});return Be(o)?o.then(()=>s):s}function vt(e,t){return {readSourceData(r,s){return ce(e.read(`${r}/${s}`),sr)},ingestSourceDataStaged(r,s,o,a){return ce(t(o),c=>e.write(`${r}/.staged/${a}/${s}`,c))},commitSourceData(r,s,o){let a=`${r}/.staged/${o}/${s}`,c=`${r}/${s}`;return e.renameKey(a,c)},hasSource(r,s){return e.exists(`${r}/${s}`)},listSources(r){return ce(e.listKeys(`${r}/`),s=>s.filter(o=>!o.includes("/.staged/")).map(o=>o.slice(`${r}/`.length)))}}}function ir(e,t){let r=(s,o)=>{try{let a=o(s);return Be(a)?a.catch(c=>t(s,c instanceof Error?c.message:String(c))):void 0}catch(a){try{return t(s,a instanceof Error?a.message:String(a))}catch{return}}};return {appendEntries(s,o){if(!(!s||o.length===0))return ce(e.read(s),a=>e.write(s,[...a??[],...o]))},dispatchEntriesForJournalId(s,o){if(s)return ce(e.read(s),a=>{let c=a;if(!(!c||c.length===0))return ce(ze(c,d=>r(d,o)),()=>e.delete(s))})}}}function ur(e,t,r){return {readRuntime(s){return ce(e.read(t(s)),o=>o??r())},writeRuntime(s,o){return e.write(t(s),o)}}}function xt(e){return {writeComputedValues(t,r){return e.write(`cards/${t}/computed_values`,r)},readComputedValues(t){return e.read(`cards/${t}/computed_values`)},readAllComputedValues(){return ce(e.listKeys("cards/"),t=>wt(t,r=>e.read(r),r=>ar(r,/^cards\/([^/]+)\/computed_values$/)))},writeDataObjects(t){return ze(Object.entries(t),([r,s])=>{if(r)return s===void 0?e.delete(`data-objects/${r}`):e.write(`data-objects/${r}`,s)})},readDataObject(t){return e.read(`data-objects/${t}`)},readAllDataObjects(){return ce(e.listKeys("data-objects/"),t=>wt(t,r=>e.read(r),r=>r.slice(13)))},writeStatusSnapshot(t){return e.write("status",t)},readStatusSnapshot(){return e.read("status")}}}var fe="sys_keys_board_state",ae="__sys_keys_board_state_init";function It(e){if(!e||typeof e!="object"||Array.isArray(e))return false;let t=e.__private;return !!t&&typeof t=="object"&&!Array.isArray(t)&&t.visible_controlplane_only===true}function dr(e){let t=e.filter(o=>!It(o)),r=[...new Set(t.map(o=>o.id).filter(o=>typeof o=="string"&&o.length>0))].sort(),s=[...new Set(t.flatMap(o=>Array.isArray(o.provides)?o.provides:[]).map(o=>o&&typeof o=="object"&&!Array.isArray(o)?o.bindTo:void 0).filter(o=>typeof o=="string"&&o.length>0&&o!==fe))].sort();return {card_ids:r,data_object_keys:s}}function cr(e,t){let r=e.filter(a=>!It(a)),s=[...new Set(r.map(a=>a.id).filter(a=>typeof a=="string"&&a.length>0))].sort(),o=[...new Set(Object.entries(t).filter(([a])=>a!==ae).flatMap(([,a])=>Array.isArray(a.provides)?a.provides:[]).filter(a=>typeof a=="string"&&a.length>0&&a!==fe))].sort();return {card_ids:s,data_object_keys:o}}function Pe(){return {id:ae,meta:{title:"System Keys Board State",synthetic:true},provides:[{bindTo:fe,ref:`card_data.${fe}`}],card_data:{[fe]:{card_ids:[],data_object_keys:[]}},__private:{visible_controlplane_only:true}}}function Qe(e,t){function r(){return e.readIndex()??{}}function s(o,a,c){let d=String(a||"").split(".").filter(Boolean);if(d.length===0)return c&&typeof c=="object"&&!Array.isArray(c)?c:{value:c};let S={...o},y=S;for(let V=0;V<d.length-1;V++){let z=d[V],Q=y[z],te=Q&&typeof Q=="object"&&!Array.isArray(Q)?{...Q}:{};y[z]=te,y=te;}return y[d[d.length-1]]=c,S}return {readCard(o){let a=r()[o];return !a||!e.cardExists(a.key)?null:e.readCard(a.key)},readCardKey(o){return r()[o]?.key??null},readAllCards(){let o=[];for(let[a,c]of Object.entries(r())){if(!e.cardExists(c.key))continue;let d=e.readCard(c.key);d?o.push(d):t?.(`[card-store] could not read card "${a}" at key "${c.key}"`);}return o},readChecksumIndex(){let o={};for(let[a,c]of Object.entries(r()))o[a]=c.checksum;return o},changedSince(o){let a=r(),c=[];for(let[d,S]of Object.entries(a))o[d]!==S.checksum&&c.push(d);for(let d of Object.keys(o))a[d]||c.push(d);return c},validateUpsert(o,a){let c=r(),d=c[o],S=Object.entries(c).find(([,y])=>y.key===a);return d&&d.key!==a?{ok:false,error:`Card id "${o}" is already mapped to key "${d.key}", cannot remap to "${a}"`}:S&&S[0]!==o?{ok:false,error:`Key "${a}" is already mapped to card id "${S[0]}", cannot remap to "${o}"`}:{ok:true}},writeCard(o,a,c){let d=r(),S=c??d[o]?.key??e.defaultCardKey(o),y=e.writeCard(S,a);d[o]={key:S,checksum:y,updatedAt:new Date().toISOString()},e.writeIndex(d);},patchCard(o,a,c){let d=r(),S=d[o];if(!S||!e.cardExists(S.key))throw new Error(`card "${o}" not found`);let y=e.readCard(S.key);if(!y||typeof y!="object"||Array.isArray(y))throw new Error(`card "${o}" is not patchable`);let V=s(y,a,c),z=e.writeCard(S.key,V);d[o]={key:S.key,checksum:z,updatedAt:new Date().toISOString()},e.writeIndex(d);},removeCard(o){let a=r(),c=a[o];c&&(e.removeCard(c.key),delete a[o],e.writeIndex(a));},readIndex(){return r()}}}function qe(e,t){return vt(e,t)}function _t(e){return bt(e)}var Ve="v1",ye="board/graph",Ft="board/lastJournalProcessedId";function Vr(e){return `cards/${e}/runtime`}function Ot(e){return Ct(e,Ve)}function je(e){function t(r){let s=e.read(r);return s==null?null:typeof s=="string"?s:JSON.stringify(s)}return {readTaskExecutorRef(){let r=t("task-executor");if(r?.trim())return c$1(r.trim())},writeTaskExecutorRef(r){e.write("task-executor",b$1(r));},readChatHandlerFlow(){return e.read("chat-handler-flow")},writeChatHandlerFlow(r){e.write("chat-handler-flow",r);},readBoardRuntimeStoreRef(){return t("board-runtime-store-ref")},writeBoardRuntimeStoreRef(r){e.write("board-runtime-store-ref",r);},readCardStoreRef(){return t("card-store-ref")},writeCardStoreRef(r){e.write("card-store-ref",r);},readOutputsStoreRef(){return t("outputs-store-ref")},writeOutputsStoreRef(r){e.write("outputs-store-ref",r);},readQueueStoreRef(){return t("queue-store-ref")},writeQueueStoreRef(r){e.write("queue-store-ref",r);},readScratchStoreRef(){return t("scratch-store-ref")},writeScratchStoreRef(r){e.write("scratch-store-ref",r);},readChatStoreRef(){return t("chat-store-ref")},writeChatStoreRef(r){e.write("chat-store-ref",r);},readArtifactsStoreRef(){return t("artifacts-store-ref")},writeArtifactsStoreRef(r){e.write("artifacts-store-ref",r);},readFetchedSourcesStoreRef(){return t("fetched-sources-store-ref")},writeFetchedSourcesStoreRef(r){e.write("fetched-sources-store-ref",r);}}}function Bt(e){return xt(e)}function Tt(e){return e?{lastRequestedToken:e.lastRequestedToken,lastCompletedToken:e.lastCompletedToken,lastCompletionStatus:e.lastCompletionStatus??(e.lastCompletedToken?"success":"not-started"),queueRequestedToken:e.queueRequestedToken}:{lastCompletionStatus:"not-started"}}function lr(e){return e?.lastRequestedToken?e.lastCompletedToken!==e.lastRequestedToken:false}function Et(e,t){return e?.lastRequestedToken?lr(e)?"in-flight":!e.lastCompletedToken||e.lastCompletedToken<t?"dispatch":"idle":"dispatch"}function fr(e,t){return {...e,lastCompletedToken:t,lastCompletionStatus:"success"}}function At(e,t){return {...e,lastCompletedToken:t,lastCompletionStatus:"failure"}}function Ke(e){let t=e.cards.filter(d=>d.name!==ae);if(t.length===e.cards.length)return e;let r=new Set;for(let d of t)for(let S of d.requires)r.add(S);let s=t.map(d=>({name:d.name,fanOut:d.unblocks.length})).sort((d,S)=>S.fanOut-d.fanOut||d.name.localeCompare(S.name)),o=s.length>0?s[0]:{name:null,fanOut:0},a=d=>t.filter(S=>S.status===d).length,c=t.filter(d=>d.requires.length===0&&d.unblocks.length===0).length;return {...e,summary:{...e.summary,card_count:t.length,completed:a("completed"),eligible:a("eligible"),pending:a("pending"),blocked:a("blocked"),unresolved:a("unresolved"),failed:a("failed"),in_progress:a("in-progress"),orphan_cards:c,topology:{edge_count:r.size,max_fan_out_card:o.name,max_fan_out:o.fanOut}},cards:t}}function Pt(e){let{[fe]:t,...r}=e;return r}function De(e,t){let r$1=t.state.tasks,s=t.config.tasks,o=Object.keys(r$1),a=r(t),c={completed:0,failed:0,in_progress:0,pending:0,blocked:0,unresolved:0},d=new Map;for(let A of a.pending)d.set(A.taskName,A.waitingOn);for(let A of a.unresolved)d.set(A.taskName,A.missingTokens);for(let A of a.blocked)d.set(A.taskName,A.failedTokens);let S=new Map;for(let[A,k]of Object.entries(s))for(let H of k.requires??[]){let G=S.get(H)??[];G.push(A),S.set(H,G);}let y=o.sort().map(A=>{let k=r$1[A],H=s[A]??{requires:[],provides:[]};k.status==="completed"?c.completed+=1:k.status==="failed"?c.failed+=1:k.status==="in-progress"&&(c.in_progress+=1);let G=H.requires??[],g=H.provides??[],u=Object.keys(k.data??{}).sort(),p=G.filter(P=>t.state.availableOutputs.includes(P)),v=G.filter(P=>!t.state.availableOutputs.includes(P)),I=d.get(A)??v,T=new Set;for(let P of g)for(let L of S.get(P)??[])L!==A&&T.add(L);let x=k.failedAt,D=k.error?{message:k.error,code:"TASK_FAILED",at:x,source:"task-runtime"}:void 0;return {name:A,status:k.status,error:D,requires:G,requires_satisfied:p,requires_missing:v,provides_declared:g,provides_runtime:u,blocked_by:I,unblocks:Array.from(T).sort(),runtime:{attempt_count:k.executionCount??0,restart_count:k.retryCount??0,in_progress_since:k.status==="in-progress"?k.startedAt??null:null,last_transition_at:k.lastUpdated??null,last_completed_at:k.completedAt??null,last_restarted_at:k.startedAt??null,status_age_ms:k.lastUpdated?0:null}}});c.pending=a.pending.length,c.blocked=a.blocked.length,c.unresolved=a.unresolved.length;let V=y.map(A=>({name:A.name,fanOut:A.unblocks.length})).sort((A,k)=>k.fanOut-A.fanOut||A.name.localeCompare(k.name)),z=V.length>0?V[0]:{name:null,fanOut:0},Q=new Set;for(let A of Object.values(s))for(let k of A.requires??[])Q.add(k);let te=0;for(let[A,k]of Object.entries(s)){let H=(k.requires??[]).length===0,g=(k.provides??[]).some(u=>(S.get(u)??[]).some(p=>p!==A));H&&!g&&(te+=1);}return {schema_version:"v1",meta:{board:{path:e}},summary:{card_count:o.length,completed:c.completed,eligible:a.eligible.length,pending:c.pending,blocked:c.blocked,unresolved:c.unresolved,failed:c.failed,in_progress:c.in_progress,orphan_cards:te,topology:{edge_count:Array.from(Q).length,max_fan_out_card:z.name,max_fan_out:z.fanOut}},cards:y}}function mr(){return new Date().toISOString()}function qt(e,t,r,s,o,a$1,c){return async d=>{let S=[],y=r.cardStore.readCard(d.nodeId);if(!y)return "task-initiate-failure";let V=y.id;if(V===ae){let C=r.activeTaskConfigs?.(),b={[fe]:C?cr(Object.keys(C).filter(_=>_!==ae).map(_=>r.cardStore.readCard(_)).filter(_=>!!_),C):dr(r.cardStore.readAllCards())};return (c??r.outputStore.writeDataObjects.bind(r.outputStore))(b),s(d.nodeId,b),"task-initiated"}let z=y.card_data??{},Q=y.source_defs??[],te=Q,A=r.cardRuntimeStore.readRuntime(V),k=false,H=()=>{k&&(r.cardRuntimeStore.writeRuntime(V,A),k=false);},G=C=>Tt(A._sources[C]),g=(C,b)=>{A._sources[C]=Tt(b),k=true;},u=d.taskState?.executionCount??0;if(A._lastExecutionCount!==u&&(A._sources={},A._lastExecutionCount=u,k=true),d.update){let C=d.update,b=C.outputFile;if(b){let _=G(b);if(C.failure){let $=C.rqt??_.lastRequestedToken??_.queueRequestedToken;$&&g(b,At(_,$));}else {let $=C.rqt;if(!_.lastCompletedToken||$>_.lastCompletedToken){let re=typeof C.deliveryToken=="string"?C.deliveryToken:void 0,K=false;re&&(K=r.fetchedSourcesStore.commitSourceData(V,b,re)),K?g(b,fr(_,$)):g(b,At(_,$));}}H();}}let v={};for(let C of Q)if(C.outputFile){let b=r.fetchedSourcesStore.readSourceData(V,C.outputFile);b!==null&&(v[C.bindTo]=b);}let I={};for(let[C,b]of Object.entries(d.state??{}))if(b!==null&&typeof b=="object"&&!Array.isArray(b)){let _=b[C];I[C]=_!==void 0?_:b;}else I[C]=b;let T={id:V,card_data:{...z},requires:I,source_defs:Q,compute:y.compute};T._sourcesData=v,y.compute&&a$3.runSync(T,{sourcesData:v}),(a$1??r.outputStore.writeComputedValues.bind(r.outputStore))(V,T.computed_values??{});let x={...y},D=a$3.enrichSourcesSync(Array.isArray(y.source_defs)?y.source_defs:void 0,{card_data:y.card_data,requires:I}),P=e.value;x.source_defs=Array.isArray(D)?D.map(C=>({...C,boardDir:typeof C.boardDir=="string"&&C.boardDir?C.boardDir:P})):D;let L=mr(),M=d.update?void 0:L,oe=te.filter(C=>{let b=C.outputFile;if(typeof b!="string"||!b)return true;let _=G(b);M&&(_={..._,queueRequestedToken:M},g(b,_));let $=_.queueRequestedToken??_.lastRequestedToken??L,re=Et(_,$);return re==="in-flight"?false:re==="dispatch"});if(H(),oe.length>0){let C=false,b=L;for(let _ of oe){let $=_.outputFile;if(typeof $!="string"||!$)continue;let re=G($),K=re.queueRequestedToken??L;g($,{...re,lastRequestedToken:K}),b=K,C=true;}return C&&H(),C&&(S.push({taskKind:"source-fetch",payload:{boardRef:a(e),enrichedCard:x,callbackToken:d.callbackToken,rqt:b}}),r.executionRequestStore.appendEntries(t,S)),"task-initiated"}if(te.some(C=>{let b=C.outputFile;if(typeof b!="string"||!b)return false;let _=G(b),$=_.queueRequestedToken??_.lastRequestedToken??L;return Et(_,$)==="in-flight"}))return "task-initiated";let ge=y.provides??[],ie={};for(let{bindTo:C,ref:b}of ge)ie[C]=a$3.resolve(T,b);return (c??r.outputStore.writeDataObjects.bind(r.outputStore))(ie),s(d.nodeId,ie),S.length>0&&r.executionRequestStore.appendEntries(t,S),"task-initiated"}}var Xe={settings:{completion:"manual",refreshStrategy:"data-changed"},tasks:{}};function Vt(e){return {[ye]:e.graph,[Ft]:e.lastDrainedJournalId,board:{runtimeByCardId:e.runtimeByCardId}}}function jt(e){let t=e[ye],r=e[Ft],o=e.board?.runtimeByCardId;if(!t||typeof t!="object")throw new Error(`State snapshot is missing required key: ${ye}`);return {graph:t,lastDrainedJournalId:typeof r=="string"?r:"",runtimeByCardId:o&&typeof o=="object"?o:{}}}function Kt(e){let t=e.requires;return {provides:e.provides?.map(s=>s.bindTo)??[],taskHandlers:["card-handler"],description:e.meta?.title??e.id,...t&&t.length>0?{requires:t}:{}}}function E(e){return e!==void 0?{status:"success",data:e}:{status:"success"}}function h(e){return {status:"fail",error:e}}function F(e){return {status:"error",error:e instanceof Error?e.message:String(e)}}function pr(e){let t=new TextEncoder().encode(e),r=Array.from(t,s=>String.fromCharCode(s)).join("");return btoa(r).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function Lt(e){let t=e.replace(/-/g,"+").replace(/_/g,"/"),r=t+"=".repeat((4-t.length%4)%4),s=atob(r),o=Uint8Array.from(s,a=>a.charCodeAt(0));return new TextDecoder().decode(o)}function Ne(e){try{let t=JSON.parse(Lt(e));return typeof t?.t=="string"?{taskName:t.t}:null}catch{return null}}function Dt(e){return pr(JSON.stringify(e))}function Nt(e){try{let t=JSON.parse(Lt(e));return typeof t?.cbk=="string"&&typeof t?.cid=="string"&&typeof t?.b=="string"&&typeof t?.d=="string"?t:null}catch{return null}}function W(){return new Date().toISOString()}function gr(e){let t=new Map;return {appendEntries(r,s){if(!r||s.length===0)return;let o=t.get(r)??[];t.set(r,[...o,...s]);},dispatchEntriesForJournalId(r,s){if(!r)return;let o=t.get(r);if(!(!o||o.length===0)){for(let a of o)try{s(a);}catch(c){try{e(a,c instanceof Error?c.message:String(c));}catch{}}t.delete(r);}}}}function Gr(e$1,t,r={}){Rt(t.callbackTransport,"createBoardLiveCardsPublic");let s=t.callbackTransport,o=t.onWarn??(()=>{}),a$3=a(e$1),c$1=r.boardRuntimeStoreRef,d=r.scratchStoreRef,S=r.taskExecutorRef,y=r.chatHandlerFlow,V=r.emitNotification??(i=>{if(!t.publishBoardChangeNotifications)return;let n=i.kind==="notification-batch"?i.notifications:[i];return t.publishBoardChangeNotifications(n)});function z(){if(!c$1)throw new Error(`Board at ${e$1.value} has no board runtime store configured. Pass boardRuntimeStoreRef at construction or init.`);return c$1}function Q(i){if(i.length!==0)try{let n=e(i),l=f({kind:"notification-batch",notifications:n}),m=V(l);m&&typeof m.catch=="function"&&m.catch(w=>o(`[board-live-cards-public] emitNotification failed: ${w instanceof Error?w.message:String(w)}`));}catch(n){o(`[board-live-cards-public] emitNotification failed: ${n instanceof Error?n.message:String(n)}`);}}function te(){let i=k().readCardStoreRef();if(!i)throw new Error(`Board at ${e$1.value} has no card store configured. Run: init --base-ref <ref> --store-ref <b64-ref>`);let n=t.kvStorageForRef(i);return {readIndex(){return n.read("_index")},writeIndex(l){n.write("_index",l);},readCard(l){return n.read(l)},writeCard(l,m){return n.write(l,m),t.hashFn(m)},removeCard(l){n.delete(l);},cardExists(l){return n.read(l)!==null},defaultCardKey(l){return l}}}let A={readValues(i){let n=t.kvStorageForRef(z()),l=n.listKeys().sort();if(l.length===0)return {version:null,values:{}};let m={};for(let w of l)m[w]=n.read(w);return {version:t.hashFn(m),values:m}},writeValues(i,n,l){let m=t.kvStorageForRef(z());for(let w of l)m.delete(w);for(let[w,j]of Object.entries(n))m.write(w,j);return t.hashFn(n)}},k=()=>je(t.kvStorageForRef(z())),H=()=>Ot(A),G=()=>_t(t.journalAdapterForRef(z())),g=()=>Qe(te(),o),u$1=()=>{let i=k().readOutputsStoreRef();if(!i)throw new Error(`Board at ${e$1.value} has no outputs store configured. Run: init --outputs-store-ref <b64-ref>`);return Bt(t.kvStorageForRef(i))};function p$1(){return S??k().readTaskExecutorRef()}function v(){return !!H().readSnapshot(e$1.value).values[ye]}function I(){let i=H().readSnapshot(e$1.value);if(!i.values[ye])throw new Error(`Board not initialized at ${e$1.value}`);return jt(i.values)}function T(i,n){let l=H().commitSnapshot(e$1.value,{schemaVersion:Ve,expectedVersion:n,commitId:t.genId(),committedAt:W(),deleteKeys:[],shallowMerge:Vt(i)});if(!l.ok)throw new Error(`Snapshot commit failed (version mismatch): expected=${n??"null"} current=${l.currentVersion??"null"}`)}function x(i){G().appendEvent(i);}async function D(){let n=gr((f,R)=>{let B=f.payload,N=(B?.enrichedCard??{}).id??B?.cardId??"unknown";x({type:"task-failed",taskName:N,error:R,timestamp:W()});}),l=I(),m=q(l.graph),{events:w,newCursor:j}=G().readEntriesAfterCursor(l.lastDrainedJournalId),O=K(),q$1=qe(O,f=>t.resolveBlob(f)),J={...l.runtimeByCardId},X=new Map,ke={readRuntime(f){return X.get(f)??J[f]??{_sources:{}}},writeRuntime(f,R){X.set(f,R),J[f]=R;}},Re=[],ne=new Map,Ce={readSourceData(f,R){let B=`${f}/${R}`;return ne.has(B)?ne.get(B):q$1.readSourceData(f,R)},ingestSourceDataStaged(f,R,B,de){q$1.ingestSourceDataStaged(f,R,B,de);},commitSourceData(f,R,B){let de=`${f}/.staged/${B}/${R}`,N=O.read(de);if(N==null){let Y=O.keyRef?.(de);Y&&(N=t.resolveBlob(Y));}if(N==null)return false;let se=`${f}/${R}`,me=N.trim();try{ne.set(se,JSON.parse(me));}catch{ne.set(se,me);}return Re.push({cardId:f,outputFile:R,deliveryToken:B}),true},hasSource(f,R){let B=`${f}/${R}`;return ne.has(B)?true:q$1.hasSource(f,R)},listSources(f){let R=q$1.listSources(f),B=new Set;for(let N of ne.keys())N.startsWith(`${f}/`)&&B.add(N.slice(`${f}/`.length));let de=new Set([...R,...B]);return Array.from(de)}},xe=()=>m.config.tasks,he={cardStore:g(),cardRuntimeStore:ke,fetchedSourcesStore:Ce,outputStore:u$1(),executionRequestStore:n,activeTaskConfigs:()=>xe()},Te=[],Le=[],$e=[],Je=new Map,rt=new Set,tr=(f,R)=>{Te.push({type:"task-completed",taskName:f,data:R,timestamp:W()});},Me=(f,R)=>{x({type:"task-failed",taskName:f,error:R,timestamp:W()});},Ee=u(m,{handlers:{"card-handler":qt(e$1,j,he,tr,Me,(f,R)=>{Le.push({cardId:f,values:R});},f=>{$e.push(f);})},onNodeRemoved:f=>{Je.delete(f),X.delete(f),delete J[f],rt.add(f);}});for(xe=()=>Ee.getState().config.tasks,Te=w;Te.length>0;){let f=Te;Te=[];for(let R of f)if(R.type==="task-restart"){let B=he.cardStore.readCard(R.taskName);B&&Je.set(R.taskName,B);}Ee.pushAll(f),await Ee.waitForHandlers();}let nt=Ee.getState();await Ee.dispose({wait:true});let rr=H().readSnapshot(e$1.value).version;T({lastDrainedJournalId:j,graph:p(nt),runtimeByCardId:J},rr);for(let{cardId:f,values:R}of Le)he.outputStore.writeComputedValues(f,R);for(let f of $e)he.outputStore.writeDataObjects(f);for(let{cardId:f,outputFile:R,deliveryToken:B}of Re)q$1.commitSourceData(f,R,B);let Ae;try{Ae=Ke(De(a$3,nt)),he.outputStore.writeStatusSnapshot(Ae);}catch(f){o(`[board-live-cards-public] status publish failed: ${f instanceof Error?f.message:String(f)}`);}let be=[];for(let{cardId:f,values:R}of Le)be.push({kind:"computed_values",cardId:f,values:R});for(let f of $e)for(let[R,B]of Object.entries(f))R&&be.push({kind:"data_object",key:R,payload:B});for(let[f,R]of Je)be.push({kind:"card_refreshed",cardId:f,card:R});for(let f of rt)be.push({kind:"card_removed",cardId:f});Ae!==void 0&&be.push({kind:"status",status:Ae}),Q(be);let we=p$1()??{howToRun:"built-in",whatToRun:a({kind:"built-in",value:"source-cli-task-executor"})},ot=t.supportsDirectSourceOutput?.(we)===true;n.dispatchEntriesForJournalId(j,f=>{if(f.taskKind!=="source-fetch"){o(`[process-accumulated-events] unknown taskKind "${f.taskKind}" \u2014 skipping`);return}let R=f.payload,B=R.enrichedCard?.id??"unknown",de=R.enrichedCard?.source_defs??[];if(we.howToRun==="queue-storage"&&ot){try{let N=t.queueStorageForRef(P(),"task-executor"),se=typeof we.extra?.boardId=="string"?we.extra.boardId:void 0,me=[];for(let Y of de){if(!Y.outputFile){o(`[dispatch] source "${Y.bindTo}" has no outputFile \u2014 skipping`);continue}let Ie=t.genId(),_e=`${B}/.staged/${Ie}/${Y.outputFile}`,st=O.keyRef?.(_e);if(!st)continue;let at={ref:a(st),deliveryToken:Ie,outputFile:Y.outputFile,cardId:B},nr=Dt({cbk:R.callbackToken,rg:e$1.value,br:a(e$1),cid:B,b:Y.bindTo,d:Y.outputFile,cs:void 0,rqt:R.rqt,dt:at.deliveryToken});me.push({...se?{boardId:se}:{},ref:we,args:{source_def:Y,base_ref:a(e$1),callback:s.createCallback(nr),output:at}});}me.length>0&&N.enqueueMany(me);}catch(N){Me(B,N instanceof Error?N.message:String(N));}return}for(let N of de){if(!N.outputFile){o(`[dispatch] source "${N.bindTo}" has no outputFile \u2014 skipping`);continue}let se;if(ot){let Y=t.genId(),Ie=`${B}/.staged/${Y}/${N.outputFile}`,_e=O.keyRef?.(Ie);_e&&(se={ref:a(_e),deliveryToken:Y,outputFile:N.outputFile,cardId:B});}let me=Dt({cbk:R.callbackToken,rg:e$1.value,br:a(e$1),cid:B,b:N.bindTo,d:N.outputFile,cs:void 0,rqt:R.rqt,...se?{dt:se.deliveryToken}:{}});t.dispatchExecution(we,{source_def:N,base_ref:a(e$1),callback:s.createCallback(me),...se?{output:se}:{}}).catch(Y=>Me(B,Y instanceof Error?Y.message:String(Y)));}});}function P(){let i=k().readQueueStoreRef();if(!i)throw new Error(`Board at ${e$1.value} has no queue store configured. Run: init --queue-store-ref <b64-ref>`);return i}function L(){t.queueStorageForRef(P(),"process-accumulated").enqueue({boardRef:a(e$1)}),t.requestProcessAccumulated?.();}function M(){let i=t.queueStorageForRef(P(),"process-accumulated");for(;;){let n=i.lease({max:64,visibilityMs:1e3});if(n.length<=0)return;for(let l of n)i.ack(l.id,l.leaseToken);if(n.length<64)return}}async function oe(){try{let i=()=>{let l=I(),{events:m}=G().readEntriesAfterCursor(l.lastDrainedJournalId);m.length<=0||L();},n=await c(t.lock,D,i);return E({ran:n!==!1})}catch(i){return F(i)}}function Z(){L();}function ge(i){try{let n=i.params?.cardStoreRef;if(!n)return h("init requires params.cardStoreRef \u2014 create a card store with card-store-cli and pass its ref here");if(c$1=i.params?.boardRuntimeStoreRef,!c$1)return h("init requires params.boardRuntimeStoreRef \u2014 pass the board runtime store ref here");if(!v()){let X=a$1(Xe);T({lastDrainedJournalId:"",graph:p(X),runtimeByCardId:{}},null);}let l=i.params?.outputsStoreRef;if(!l)return h("init requires params.outputsStoreRef \u2014 pass the outputs store ref here");let m=i.params?.queueStoreRef;if(!m)return h("init requires params.queueStoreRef \u2014 pass the queue store ref here");let w=i.params?.fetchedSourcesStoreRef;if(!w)return h("init requires params.fetchedSourcesStoreRef \u2014 pass the fetched sources store ref here");d=i.params?.scratchStoreRef;let j=i.params?.chatStoreRef;if(!j)return h("init requires params.chatStoreRef \u2014 pass the chat store ref here");let O=i.params?.artifactsStoreRef;if(!O)return h("init requires params.artifactsStoreRef \u2014 pass the artifacts store ref here");let q$1=k();q$1.writeBoardRuntimeStoreRef(c$1),q$1.writeCardStoreRef(n),q$1.writeOutputsStoreRef(l),q$1.writeQueueStoreRef(m),q$1.writeFetchedSourcesStoreRef(w),q$1.writeChatStoreRef(j),q$1.writeArtifactsStoreRef(O),g().writeCard(Pe().id,Pe());let J=ee({params:{cardId:Pe().id,restart:!0}});if(J.status!=="success")return J;try{u$1().writeStatusSnapshot(Ke(De(a$3,q(I().graph))));}catch{}return E()}catch(n){return F(n)}}function ie(i){try{let n=u$1().readStatusSnapshot();if(!n){n=Ke(De(a$3,q(I().graph)));try{u$1().writeStatusSnapshot(n);}catch{}}return E(n)}catch(n){return F(n)}}function C(i){try{let n=i.params?.id;if(!n)return h("removeCard requires params.id");try{t.kvStorage("card-upsert").delete(n);}catch{}return x({type:"task-removal",taskName:n,timestamp:W()}),n!==ae&&x({type:"task-restart",taskName:ae,timestamp:W()}),Z(),E()}catch(n){return F(n)}}function b$1(i){try{let n=i.params?.cardId;if(!n)return h("addCardFiles requires params.cardId");let l=a$2(g(),{emitNotification:V}).appendFiles({params:{id:n},body:i.body});return l.status!=="success"?l:E({cardId:n,files_added:l.data.files_added,notified:!0})}catch(n){return F(n)}}function _(i){try{let n=i.params?.id;return n?(x({type:"task-restart",taskName:n,timestamp:W()}),Z(),E()):h("retrigger requires params.id")}catch(n){return F(n)}}async function $(i){return M(),oe()}function re(){let i=k().readFetchedSourcesStoreRef();if(!i)throw new Error(`Board at ${e$1.value} has no fetched sources store configured. Run: init --fetched-sources-store-ref <b64-ref>`);return i}function K(){return t.blobStorageForRef(re())}function ee(i){try{let n=i.params?.cardId,l=i.params?.all,m=!!i.params?.restart;if(!n&&!l)return h("upsertCard requires --card-id <id> or --all");let w=l?g().readAllCards().map(O=>O.id):[n];for(let O of w)if(!g().readCard(O))return h(`Card "${O}" not found in board at ${e$1.value}`);let j=!1;for(let O of w){let q=g().readCard(O),J=Kt(q),X=t.hashFn(J),ke=t.kvStorage("card-upsert"),Re=ke.read(O),ne=Re?.taskConfigHash!==X;if(!(!ne&&!m)){if(ne){let Ce=Re?.blobRef??g().readCardKey(O)??O;x({type:"task-upsert",taskName:O,taskConfig:J,timestamp:W()}),ke.write(O,{blobRef:Ce,taskConfigHash:X,updatedAt:W()}),j=j||O!==ae;}m&&x({type:"task-restart",taskName:O,timestamp:W()});}}return j&&x({type:"task-restart",taskName:ae,timestamp:W()}),Z(),E()}catch(n){return F(n)}}function ue(i){try{let n=i.params?.token;if(!n)return h("taskFailed requires params.token");let l=i.params?.error??"unknown error",m=Ne(n);return m?(x({type:"task-failed",taskName:m.taskName,error:l,timestamp:W()}),Z(),E()):h("Invalid callback token")}catch(n){return F(n)}}function Se(i){try{let n=i.params?.token;if(!n)return h("taskProgress requires params.token");let m=(i.body??{}).update??{},w=Ne(n);return w?(x({type:"task-progress",taskName:w.taskName,update:m,timestamp:W()}),Z(),E()):h("Invalid callback token")}catch(n){return F(n)}}function ve(i){try{let n=i.params?.token,l=i.params?.ref;if(!n)return h("sourceDataFetched requires params.token");if(!l)return h("sourceDataFetched requires params.ref");let m=Nt(n);if(!m)return h("Invalid source token");let{cbk:w,cid:j,b:O,d:q,cs:J,rqt:X,dt:ke}=m,Re=qe(K(),he=>t.resolveBlob(he)),ne=ke||t.genId();ke||Re.ingestSourceDataStaged(j,q,b(l),ne);let Ce=Ne(w);if(!Ce)return h("Invalid callback token embedded in source token");let xe=W();return x({type:"task-progress",taskName:Ce.taskName,update:{bindTo:O,outputFile:q,fetchedAt:xe,deliveryToken:ne,sourceChecksum:J,rqt:X},timestamp:xe}),Z(),E()}catch(n){return F(n)}}function le(i){try{let n=i.params?.token,l=i.params?.reason??"unknown";if(!n)return h("sourceDataFetchFailure requires params.token");let m=Nt(n);if(!m)return h("Invalid source token");let{cbk:w,b:j,d:O,cs:q,rqt:J}=m,X=Ne(w);return X?(x({type:"task-progress",taskName:X.taskName,update:{bindTo:j,outputFile:O,failure:!0,reason:l,sourceChecksum:q,rqt:J},timestamp:W()}),Z(),E()):h("Invalid callback token embedded in source token")}catch(n){return F(n)}}function $t(i){try{let n=k().readCardStoreRef();return n?E({storeRef:n}):h(`Board at ${e$1.value} has no card store configured`)}catch(n){return F(n)}}function Jt(i){try{return E({storeRef:c$1??null})}catch(n){return F(n)}}function Mt(i){try{let n=k().readOutputsStoreRef();return n?E({storeRef:n}):h(`Board at ${e$1.value} has no outputs store configured`)}catch(n){return F(n)}}function Ht(i){try{return E({storeRef:d??null})}catch(n){return F(n)}}function Gt(i){try{let n=k().readChatStoreRef();return E({storeRef:n})}catch(n){return F(n)}}function Ut(i){try{let n=k().readArtifactsStoreRef();return E({storeRef:n})}catch(n){return F(n)}}function Yt(i){try{let n=k().readFetchedSourcesStoreRef();return E({storeRef:n})}catch(n){return F(n)}}function zt(i){try{let n=i.params?.key;if(!n)return h("getConfig requires params.key");let l=k(),m;switch(n){case "task-executor":m=S??null;break;case "chat-handler-flow":m=y??null;break;case "board-runtime-store-ref":m=l.readBoardRuntimeStoreRef();break;case "card-store-ref":m=l.readCardStoreRef();break;case "outputs-store-ref":m=l.readOutputsStoreRef();break;case "scratch-store-ref":m=d??null;break;case "chat-store-ref":m=l.readChatStoreRef();break;case "artifacts-store-ref":m=l.readArtifactsStoreRef();break;case "fetched-sources-store-ref":m=l.readFetchedSourcesStoreRef();break;default:return h(`getConfig: unknown key "${n}"`)}return E({value:m})}catch(n){return F(n)}}function Qt(i){try{let n=i.params?.key;if(!n)return h("getOutputsDataObject requires params.key");if(n===fe)return E(null);let l=u$1().readDataObject(n);return E(l)}catch(n){return F(n)}}function We(i){try{return E(Pt(u$1().readAllDataObjects()))}catch(n){return F(n)}}function Xt(i){try{let n=i.params?.key;if(!n)return h("getOutputsComputedValues requires params.key");let l=u$1().readComputedValues(n);return E(l)}catch(n){return F(n)}}function Ze(i){try{return E(u$1().readAllComputedValues())}catch(n){return F(n)}}function et(){return qe(K(),i=>t.resolveBlob(i))}function tt(i){let n=K().keyRef?.(i);if(!n)throw new Error("configured fetched-sources store does not support keyRef");return a(n)}function Wt(i){try{let n=i.params?.key;if(!n)return h("getOutputsFetchedSources requires params.key");let l=et().listSources(n),m={};for(let w of l)m[w]=tt(`${n}/${w}`);return E(m)}catch(n){return F(n)}}function Zt(i){try{let n=et(),l=new Set;for(let w of K().listKeys()){let j=w.indexOf("/");j>0&&!w.includes("/.staged/")&&l.add(w.slice(0,j));}let m={};for(let w of l){let j=n.listSources(w);if(j.length>0){m[w]={};for(let O of j)m[w][O]=tt(`${w}/${O}`);}}return E(m)}catch(n){return F(n)}}function er(i){try{let n=g().readAllCards().filter(q=>q.id!==ae),l=ie({});if(l.status!=="success")return l;let m=We({});if(m.status!=="success")return m;let w=Ze({});if(w.status!=="success")return w;let j=w.data,O={};for(let q of n){let J=typeof q?.id=="string"?q.id:null;if(!J)continue;let X=q.card_data&&typeof q.card_data=="object"&&!Array.isArray(q.card_data)?q.card_data:{};O[J]={schema_version:"v1",card_id:J,card_data:{...X},computed_values:j[J]&&typeof j[J]=="object"?j[J]:{}};}return E({cardDefinitions:n,statusSnapshot:l.data,dataObjectsByToken:m.data,cardRuntimeById:O})}catch(n){return F(n)}}return {init:ge,status:ie,getBoardRuntimeStoreRef:Jt,getCardStoreRef:$t,getOutputsStoreRef:Mt,getScratchStoreRef:Ht,getChatStoreRef:Gt,getArtifactsStoreRef:Ut,getFetchedSourcesStoreRef:Yt,getConfig:zt,getOutputsDataObject:Qt,getAllOutputsDataObjects:We,getOutputsComputedValues:Xt,getAllOutputsComputedValues:Ze,getOutputsFetchedSources:Wt,getAllOutputsFetchedSources:Zt,buildSseOneShotPayload:er,removeCard:C,addCardFiles:b$1,retrigger:_,processAccumulatedEvents:$,upsertCard:ee,taskFailed:ue,taskProgress:Se,sourceDataFetched:ve,sourceDataFetchFailure:le}}function Ur(e,t,r){let s=r?.taskExecutorRef,o=()=>{if(r){if(!r.boardRuntimeStoreRef)throw new Error(`Board at ${e.value} requires boardRuntimeStoreRef for non-core runtime operations.`);return je(t.kvStorageForRef(r.boardRuntimeStoreRef))}return je(t.kvStorage("config"))};function a(){let g=o().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 u=t.kvStorageForRef(g);return {readIndex(){return u.read("_index")},writeIndex(p){u.write("_index",p);},readCard(p){return u.read(p)},writeCard(p,v){return u.write(p,v),t.hashFn(v)},removeCard(p){u.delete(p);},cardExists(p){return u.read(p)!==null},defaultCardKey(p){return p}}}let c=()=>Qe(a(),t.onWarn??(()=>{}));function d(){return s??o().readTaskExecutorRef()}async function S(g,u){let p=t.validateSchema(u),v=[],I=d();if(I&&Array.isArray(u.source_defs))for(let x of u.source_defs){let D=typeof x.bindTo=="string"?x.bindTo:"(unknown)";try{let P;try{P=await t.invokeExecutor(I,"validate-source-def",{timeout:t.executorTimeouts?.validationMs??1e4,input:JSON.stringify(x)});}catch(M){let oe=M;if(P=typeof oe?.stdout=="string"?oe.stdout:"",!P.trim()){v.push(`source "${D}": executor validate-source-def failed \u2014 ${M instanceof Error?M.message:String(M)}`);continue}}let L=JSON.parse(P.trim());if(!L.ok&&Array.isArray(L.errors))for(let M of L.errors)v.push(`source "${D}": ${M}`);}catch(P){v.push(`source "${D}": executor validate-source-def failed \u2014 ${P instanceof Error?P.message:String(P)}`);}}let T=[...p.errors,...v];return E({cardId:g,isValid:T.length===0,issues:T})}function y(g,u){let p=g.params?.sourceIdx,v=g.params?.outRef;if(p===void 0)return h(`${u} requires params.sourceIdx`);if(!g.body||typeof g.body!="object"||Array.isArray(g.body))return h(`${u} requires card JSON object in body`);let I=g.body,T=I["card-content"]??I,x=I["mock-projections"]??{},D=T.source_defs??[];if(p<0||p>=D.length)return h(`sourceIdx ${p} out of range (card has ${D.length} source(s))`);let P=D[p],L=typeof P.bindTo=="string"?P.bindTo:"source";return {src:P,bindTo:L,outRef:v,mockProjections:x}}async function V(g){try{if(!g.body||typeof g.body!="object"||Array.isArray(g.body))return h("validateCardPreflight requires card JSON object in body");let u=g.body,p=u["card-content"]??u,v=typeof p.id=="string"?p.id:"(unknown)";return await S(v,p)}catch(u){return F(u)}}async function z(g){try{let u=y(g,"probeSourcePreflight");if("status"in u)return u;let p=d();if(!p)return h("No task-executor registered for this board");try{let v={...u.src,_projections:u.mockProjections},I=await t.invokeExecutor(p,"probe-source-preflight",{timeout:u.src.timeout??t.executorTimeouts?.preflightMs??6e4,input:JSON.stringify(v)}),T=JSON.parse(I.trim());return T.ok?E({bindTo:u.bindTo,reachable:T.reachable,latencyMs:T.latencyMs,note:T.note}):h(T.error??"Preflight probe failed")}catch{return h("Executor does not support probe-source-preflight")}}catch(u){return F(u)}}async function Q(g){try{let u=y(g,"runSourcePreflight");if("status"in u)return u;let p=d();if(!p)return h("No task-executor registered for this board");try{let v={...u.src,_projections:u.mockProjections},I=await t.invokeExecutor(p,"run-source-preflight",{timeout:u.src.timeout??t.executorTimeouts?.probeMs??6e4,input:JSON.stringify(v)}),T=JSON.parse(I.trim());if(!T.ok)return E({bindTo:u.bindTo,ok:!1,result:null,issues:[T.error??"Preflight run failed"]});if(u.outRef){let x=b(u.outRef);t.absoluteBlob.write(x.value,JSON.stringify(T.resultValue,null,2));}return E({bindTo:typeof T.bindTo=="string"?T.bindTo:u.bindTo,ok:!0,result:T.resultValue??null,issues:[]})}catch(v){let I=v instanceof Error?v.message:String(v);return E({bindTo:u.bindTo,ok:!1,result:null,issues:[I]})}}catch(u){return F(u)}}async function te(g){try{let u=d();if(!u)return h("No task-executor registered for this board");let p=await t.invokeExecutor(u,"describe-capabilities",{timeout:t.executorTimeouts?.describeMs??1e4});return E(JSON.parse(p.trim()))}catch(u){return F(u)}}function A(g){try{let u=g.body;if(!u||!Array.isArray(u.ops))return h("updatesInCardStore requires body.ops array");let p=u.ops,v=c();for(let I of p){let T=I.op,x=I.id;if(!x)return h('op is missing "id"');if(T==="update"){let D=I["card-content"];if(!D)return h(`update op for "${x}" is missing "card-content"`);v.writeCard(x,D);}else return h(`Unknown op type: "${T??"(none)"}"`)}return E()}catch(u){return F(u)}}function k(g){try{let u=g.body;if(!u||!Array.isArray(u.ids))return h("readFromCardStore requires body.ids array");let p=u.ids,v=c(),I=p.map(T=>({id:T,"card-content":v.readCard(T)}));return E({cards:I})}catch(u){return F(u)}}function H(g){try{if(!g.body||typeof g.body!="object"||Array.isArray(g.body))return h("evalCardCompute requires a JSON object in body");let u=g.body,p=u["card-content"]??u,v=typeof p.id=="string"?p.id:"(unknown)",I=u["mock-fetched-sources"]??{},T=u["mock-requires"]??{},x=p.compute;if(!x||!Array.isArray(x)||x.length===0)return E({cardId:v,ok:!0,computed_values:{},errors:[]});let D={id:v,card_data:p.card_data??{},requires:T,source_defs:p.source_defs,compute:x},P=a$3.runSync(D,{sourcesData:I}),L=P.node.computed_values??{},M=P.errors??[];return E({cardId:v,ok:M.length===0,computed_values:L,errors:M})}catch(u){return F(u)}}async function G(g){try{if(!g.body||typeof g.body!="object"||Array.isArray(g.body))return h("simulateCardCycle requires a JSON object in body");let u=g.body,p=u["card-content"]??u,v=typeof p.id=="string"?p.id:"(unknown)",I=u["mock-fetched-sources"]??{},T=u["mock-requires"]??{},x=await S(v,p),D=x.status==="success"?{isValid:x.data.isValid,issues:x.data.issues}:{isValid:!1,issues:[x.status==="fail"?x.error:"internal error"]},P=p.source_defs??[],L=p.card_data??{},M=[],oe=[];if(P.length>0){M=a$3.enrichSourcesSync(P,{card_data:L,requires:T});for(let K of M){let ee=K.projections,ue=K._projections;if(ee&&ue){for(let Se of Object.keys(ee))if(ue[Se]===void 0){let ve=typeof K.bindTo=="string"?K.bindTo:"(unknown)";oe.push({bindTo:ve,key:Se,error:`Projection "${Se}" resolved to undefined`});}}}}let Z=[],ge={...I},ie=u["task-executor-ref"],C=(ie?.howToRun&&ie?.whatToRun?ie:void 0)??d();for(let K=0;K<M.length;K++){let ee=M[K],ue=typeof ee.bindTo=="string"?ee.bindTo:`source_${K}`;if(!C){Z.push({bindTo:ue,skipped:!0,error:"No task executor configured"});continue}try{let Se={...ee},ve=await t.invokeExecutor(C,"run-source-preflight",{timeout:ee.timeout??t.executorTimeouts?.preflightMs??6e4,input:JSON.stringify(Se)}),le=JSON.parse(ve.trim());le.ok&&!Object.prototype.hasOwnProperty.call(I,ue)&&Object.prototype.hasOwnProperty.call(le,"resultValue")&&(ge[ue]=le.resultValue),Z.push({bindTo:ue,reachable:le.reachable,latencyMs:le.latencyMs,error:le.ok?void 0:le.error});}catch{Z.push({bindTo:ue,skipped:!0,error:"Executor does not support run-source-preflight"});}}let b=p.compute,_={},$=[];if(b&&Array.isArray(b)&&b.length>0){let K={id:v,card_data:L,requires:T,source_defs:p.source_defs,compute:b},ee=a$3.runSync(K,{sourcesData:ge});_=ee.node.computed_values??{},$=ee.errors??[];}let re=D.isValid&&oe.length===0&&$.length===0&&Z.every(K=>K.reachable!==!1);return E({cardId:v,ok:re,validation:D,source_probes:Z,projection_errors:oe,fetched_sources:ge,computed_values:_,compute_errors:$})}catch(u){return F(u)}}return {validateCardPreflight:V,probeSourcePreflight:z,runSourcePreflight:Q,evalCardCompute:H,simulateCardCycle:G,describeTaskExecutorCapabilities:te,updatesInCardStore:A,readFromCardStore:k}}
|
|
2
|
+
export{De as A,Xe as B,Vt as C,jt as D,Kt as E,Gr as F,Ur as G,Tr as a,Ct as b,Er as c,Rt as d,br as e,wr as f,vr as g,vt as h,ir as i,ur as j,xt as k,fe as l,ae as m,dr as n,cr as o,Pe as p,Qe as q,Ve as r,ye as s,Vr as t,Tt as u,Et as v,fr as w,At as x,Ke as y,Pt as z};//# sourceMappingURL=chunk-EZOXABJ2.js.map
|
|
3
|
+
//# sourceMappingURL=chunk-EZOXABJ2.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
'use strict';var chunkWRMOGPRG_cjs=require('./chunk-WRMOGPRG.cjs'),chunkBAG7MHZP_cjs=require('./chunk-BAG7MHZP.cjs'),chunkVQCIOKJV_cjs=require('./chunk-VQCIOKJV.cjs'),chunkG4XXRHL2_cjs=require('./chunk-G4XXRHL2.cjs'),chunkQBEQL4TL_cjs=require('./chunk-QBEQL4TL.cjs'),chunk2RIHC5TZ_cjs=require('./chunk-2RIHC5TZ.cjs');async function mt(e,o,a){let r=await e.tryAcquire();if(!r)return false;try{await o();}finally{await r();}return await a?.(),true}function Pt(e){return typeof e=="object"&&e!==null&&"then"in e&&typeof e.then=="function"}function Pe(e,o){return Pt(e)?e.then(o):o(e)}function lt(e,o){let a={...e};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]=lt(a[r],s):a[r]=s;return a}function ve(e,o,a){if(o.length===0)return e;let[r,...s]=o;if(s.length===0)return {...e,[r]:a};let d=e[r]!==null&&typeof e[r]=="object"&&!Array.isArray(e[r])?e[r]:{};return {...e,[r]:ve(d,s,a)}}function ft(e){return {read:a=>e.read(a),get(a,r){return Pe(e.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)=>e.write(a,r),delete:a=>e.delete(a),listKeys:a=>e.listKeys(a),shallowMerge(a,r){return Pe(e.read(a),s=>e.write(a,{...s??{},...r}))},deepMerge(a,r){return Pe(e.read(a),s=>e.write(a,lt(s??{},r)))},patch(a,r,s){return Pe(e.read(a),d=>{let f=r.split(".").filter(Boolean);return e.write(a,ve(d??{},f,s))})}}}function gt(e){return ft(e)}function pt(e,o){return {async readIndex(){return await e.read("_index")},writeIndex(a){return e.write("_index",a)},async readCard(a){return await e.read(a)},async writeCard(a,r){return await e.write(a,r),o(r)},removeCard(a){return e.delete(a)},async cardExists(a){return await e.read(a)!==null},defaultCardKey(a){return a}}}function yt(e,o){async function a(){return await e.readIndex()??{}}return {async readCard(r){let s=(await a())[r];return !s||!await e.cardExists(s.key)?null:await e.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 e.cardExists(d.key))continue;let f=await e.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??e.defaultCardKey(r),w=await e.writeCard(v,s);f[r]={key:v,checksum:w,updatedAt:new Date().toISOString()},await e.writeIndex(f);},async patchCard(r,s,d){let f=await a(),v=f[r];if(!v||!await e.cardExists(v.key))throw new Error(`card "${r}" not found`);let w=await e.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=ve(w,m,d),S=await e.writeCard(v.key,l);f[r]={key:v.key,checksum:S,updatedAt:new Date().toISOString()},await e.writeIndex(f);},async removeCard(r){let s=await a(),d=s[r];d&&(await e.removeCard(d.key),delete s[r],await e.writeIndex(s));},readIndex(){return a()}}}function Nt(e,o){return chunkBAG7MHZP_cjs.a(e,o)}function _t(e,o,a){return {blob:e,kv:o,journal:a}}function St(e,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 S=chunk2RIHC5TZ_cjs.e(m);if(S.length===1){await l(S[0]);return}await l(chunk2RIHC5TZ_cjs.f({kind:"notification-batch",notifications:S}));}async function f(m){let l=m.params?.id;if(l){let S=await e.readCard(l);if(!S)throw new Error(`card "${l}" not found`);return [S]}return await e.readAllCards()}function v(m){return chunk2RIHC5TZ_cjs.f({kind:"notification-batch",notifications:chunk2RIHC5TZ_cjs.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(m)})}catch(l){return s(l)}},async buildNotificationBatch(m){try{return a(v(await f(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 S=Array.isArray(l)?l:[l];for(let h of S){if(typeof h.id!="string")return r("each card must have a string `id` field");await e.writeCard(h.id,h);}return await d(S.map(h=>({kind:"card_refreshed",cardId:h.id,card:h}))),a({count:S.length})}catch(l){return s(l)}},async del(m){try{let l=m.body?.ids??[],S=m.params?.id,h=S?[...l,S]:l;if(h.length===0)return r("del requires body.ids (string[]) or params.id");for(let N of h)await e.removeCard(N);return await d(h.map(N=>({kind:"card_removed",cardId:N}))),a({count:h.length})}catch(l){return s(l)}},async patch(m){try{let l=m.params?.id,S=m.params?.path;if(!l)return r("patch requires params.id");if(!S)return r("patch requires params.path");let h=m.body,N=h&&Object.prototype.hasOwnProperty.call(h,"value")?h.value:m.body;await e.patchCard(l,S,N);let O=await e.readCard(l);return O?(await d([{kind:"card_refreshed",cardId:l,card:O}]),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 S=await e.readCard(l);if(!S)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 N=S.card_data&&typeof S.card_data=="object"&&!Array.isArray(S.card_data)?S.card_data:{},O=Array.isArray(N.files)?N.files:[],M=[...O,...h],V=h.map(($,Z)=>({idx:O.length+Z,entry:$})),K=await this.patch({params:{id:l,path:"card_data.files"},body:{value:M}});return K.status!=="success"?K:a({files_added:V})}catch(l){return s(l)}}}}async function vt(e,o){return (await e.peekActive()).find(a=>a.id===o)}function $t(e,o={}){async function a(r){let s=o.emitNotification;if(!s||r.length===0)return;let d=chunk2RIHC5TZ_cjs.e(r);if(d.length===1){await s(d[0]);return}await s(chunk2RIHC5TZ_cjs.f({kind:"notification-batch",notifications:d}));}return {async enqueue(r){let s=await e.enqueue(r);return await a([{kind:"message_enqueued",lane:o.lane,message:s}]),s},async enqueueMany(r){let s=await e.enqueueMany(r);return await a(s.map(d=>({kind:"message_enqueued",lane:o.lane,message:d}))),s},enqueueIfAbsent:e.enqueueIfAbsent?async(r,s)=>{let d=await e.enqueueIfAbsent(r,s);return d&&await a([{kind:"message_enqueued",lane:o.lane,message:d}]),d}:void 0,lease(r){return e.lease(r)},ack(r,s){return e.ack(r,s)},nack(r,s,d){return e.nack(r,s,d)},peekActive(r){return e.peekActive(r)},peekDeadLetter(r){return e.peekDeadLetter(r)},async stage(r,s){return e.stage(r,s)},async commitStaged(r){let s=await e.commitStaged(r);if(s){let d=await vt(e,r);d&&await a([{kind:"message_enqueued",lane:o.lane,message:d}]);}return s},async discardStaged(r,s){return e.discardStaged(r,s)},peekStaged(r){return e.peekStaged(r)}}}function b(e){return e!==void 0?{status:"success",data:e}:{status:"success"}}function R(e){return {status:"fail",error:e}}function T(e){return {status:"error",error:e instanceof Error?e.message:String(e)}}function q(){return new Date().toISOString()}function bt(e){let o=new TextEncoder().encode(e),a=Array.from(o,r=>String.fromCharCode(r)).join("");return btoa(a).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function Rt(e){let o=e.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 be(e){try{let o=JSON.parse(Rt(e));return typeof o?.t=="string"?{taskName:o.t}:null}catch{return null}}function kt(e){return bt(JSON.stringify(e))}function Ct(e){try{let o=JSON.parse(Rt(e));return typeof o?.cbk=="string"&&typeof o?.cid=="string"&&typeof o?.b=="string"&&typeof o?.d=="string"?o:null}catch{return null}}function At(e){return chunkBAG7MHZP_cjs.j(e,chunkBAG7MHZP_cjs.t,()=>({_sources:{}}))}function It(e,o){return chunkBAG7MHZP_cjs.h(e,o)}function xt(e){return chunkBAG7MHZP_cjs.k(e)}function Tt(e,o){return chunkBAG7MHZP_cjs.i(e,o)}function Ot(e,o,a,r,s,d){return async f=>{let v=[],w=await a.cardStore.readCard(f.nodeId);if(!w)return "task-initiate-failure";let m=w.id;if(m===chunkBAG7MHZP_cjs.m){let p=a.activeTaskConfigs?.(),y={[chunkBAG7MHZP_cjs.l]:p?chunkBAG7MHZP_cjs.o((await Promise.all(Object.keys(p).filter(k=>k!==chunkBAG7MHZP_cjs.m).map(k=>a.cardStore.readCard(k)))).filter(k=>!!k),p):await chunkBAG7MHZP_cjs.n(await a.cardStore.readAllCards())};return (d??(()=>{}))(y),r(f.nodeId,y),"task-initiated"}let l=w.card_data??{},S=w.source_defs??[],h=S,N=await a.cardRuntimeStore.readRuntime(m),O=false,M=async()=>{O&&(await a.cardRuntimeStore.writeRuntime(m,N),O=false);},V=p=>chunkBAG7MHZP_cjs.u(N._sources[p]),K=(p,y)=>{N._sources[p]=chunkBAG7MHZP_cjs.u(y),O=true;},$=f.taskState?.executionCount??0;if(N._lastExecutionCount!==$&&(N._sources={},N._lastExecutionCount=$,O=true),f.update){let p=f.update.outputFile;if(p){let y=V(p);if(f.update.failure){let k=f.update.rqt??y.lastRequestedToken??y.queueRequestedToken;k&&K(p,chunkBAG7MHZP_cjs.x(y,k));}else {let k=f.update.rqt;if(!y.lastCompletedToken||k>y.lastCompletedToken){let j=typeof f.update.deliveryToken=="string"?f.update.deliveryToken:void 0,re=j?await a.fetchedSourcesStore.commitSourceData(m,p,j):false;K(p,re?chunkBAG7MHZP_cjs.w(y,k):chunkBAG7MHZP_cjs.x(y,k));}}await M();}}let Z={};for(let p of S){if(!p.outputFile)continue;let y=await a.fetchedSourcesStore.readSourceData(m,p.outputFile);y!==null&&(Z[p.bindTo]=y);}let H={};for(let[p,y]of Object.entries(f.state??{}))if(y!==null&&typeof y=="object"&&!Array.isArray(y)){let k=y[p];H[p]=k!==void 0?k:y;}else H[p]=y;let ee={id:m,card_data:{...l},requires:H,source_defs:S,compute:w.compute};ee._sourcesData=Z,w.compute&&chunkQBEQL4TL_cjs.a.runSync(ee,{sourcesData:Z}),(s??(()=>{}))(m,ee.computed_values??{});let te=chunkQBEQL4TL_cjs.a.enrichSourcesSync(Array.isArray(w.source_defs)?w.source_defs:void 0,{card_data:w.card_data,requires:H}),Ae={...w,source_defs:Array.isArray(te)?te.map(p=>({...p,boardDir:typeof p.boardDir=="string"&&p.boardDir?p.boardDir:e.value})):te},W=q(),E=f.update?void 0:W,ge=h.filter(p=>{let y=p.outputFile;if(typeof y!="string"||!y)return true;let k=V(y);E&&(k={...k,queueRequestedToken:E},K(y,k));let j=k.queueRequestedToken??k.lastRequestedToken??W;return chunkBAG7MHZP_cjs.v(k,j)==="dispatch"});if(await M(),ge.length>0){let p=false,y=W;for(let k of ge){let j=k.outputFile;if(typeof j!="string"||!j)continue;let re=V(j),L=re.queueRequestedToken??W;K(j,{...re,lastRequestedToken:L}),y=L,p=true;}return p&&await M(),p&&(v.push({taskKind:"source-fetch",payload:{boardRef:chunkVQCIOKJV_cjs.a(e),enrichedCard:Ae,callbackToken:f.callbackToken,rqt:y}}),await a.executionRequestStore.appendEntries(o,v)),"task-initiated"}if(h.some(p=>{let y=p.outputFile;if(typeof y!="string"||!y)return false;let k=V(y),j=k.queueRequestedToken??k.lastRequestedToken??W;return chunkBAG7MHZP_cjs.v(k,j)==="in-flight"}))return "task-initiated";let ie=w.provides??[],ue={};for(let{bindTo:p,ref:y}of ie)ue[p]=chunkQBEQL4TL_cjs.a.resolve(ee,y);return (d??(()=>{}))(ue),r(f.nodeId,ue),v.length>0&&await a.executionRequestStore.appendEntries(o,v),"task-initiated"}}function nr(e,o,a={}){chunkBAG7MHZP_cjs.d(o.callbackTransport,"createAsyncBoardLiveCardsPublic");let r=o.callbackTransport,s=o.warn??(()=>{}),d=chunkVQCIOKJV_cjs.a(e),f=a.emitNotification??(n=>{if(!o.publishBoardChangeNotifications)return;let t=n.kind==="notification-batch"?n.notifications:[n];return o.publishBoardChangeNotifications(t)}),v=null,w=a.boardRuntimeStoreRef,m=a.scratchStoreRef,l=a.taskExecutorRef,S=a.chatHandlerFlow;function h(){if(!w)throw new Error(`Board at ${e.value} has no board runtime store configured. Pass boardRuntimeStoreRef at construction or init.`);return w}function N(n){if(n.length!==0)try{let t=chunk2RIHC5TZ_cjs.e(n),c=chunk2RIHC5TZ_cjs.f({kind:"notification-batch",notifications:t});return Promise.resolve(f(c)).catch(i=>{s(`[async-board-live-cards-public] emitNotification failed: ${i instanceof Error?i.message:String(i)}`);})}catch(t){s(`[async-board-live-cards-public] emitNotification failed: ${t instanceof Error?t.message:String(t)}`);return}}let O=()=>chunkWRMOGPRG_cjs.b(o.kvStorageForRef(h())),M=e.value,V=()=>chunkBAG7MHZP_cjs.b(chunkBAG7MHZP_cjs.a(()=>o.kvStorageForRef(h()),o.hashFn),"v1"),K=async()=>{let n=await O().readOutputsStoreRef();if(!n)throw new Error(`Board at ${e.value} has no outputs store configured.`);return xt(o.kvStorageForRef(n))},$=async()=>{let n=await O().readCardStoreRef();if(!n)throw new Error(`Board at ${e.value} has no card store configured.`);let t=o.kvStorageForRef(n);return yt(pt(gt(t),o.hashFn),s)};async function Z(){return !!(await V().readSnapshot(M)).values[chunkBAG7MHZP_cjs.s]}async function H(){let n=await V().readSnapshot(M);if(!n.values[chunkBAG7MHZP_cjs.s])throw new Error(`Board not initialized at ${e.value}`);return chunkBAG7MHZP_cjs.D(n.values)}async function ee(n,t){let c=await V().commitSnapshot(M,{schemaVersion:"v1",expectedVersion:t,deleteKeys:[],shallowMerge:chunkBAG7MHZP_cjs.C(n)});if(!c.ok)throw new Error(`Snapshot commit failed (version mismatch): expected=${t??"null"} current=${c.currentVersion??"null"}`)}let te=()=>chunkBAG7MHZP_cjs.c(o.journalStorageForRef(h()));async function Ae(){return l??await O().readTaskExecutorRef()}async function W(){return chunkBAG7MHZP_cjs.z(await(await K()).readAllDataObjects())}async function E(n){await te().appendEvent(n);}async function ge(){let n=await O().readFetchedSourcesStoreRef();if(!n)throw new Error(`Board at ${e.value} has no fetched sources store configured. Run: init --fetched-sources-store-ref <b64-ref>`);return n}async function le(){return o.blobStorageForRef(await ge())}async function ie(){return It(await le(),n=>o.resolveBlob(n))}async function ue(n){let t=(await le()).keyRef?.(n);if(!t)throw new Error("configured fetched-sources store does not support keyRef");let c=await Promise.resolve(t);return chunkVQCIOKJV_cjs.a(c)}async function p(){let n=Tt(o.kvStorageForRef(h()),async(u,g)=>{let P=u.payload,B=(P.enrichedCard??{}).id??P.cardId??"unknown";await E({type:"task-failed",taskName:B,error:g,timestamp:q()});}),t=At(o.kvStorageForRef(h())),c=await le(),i=await ie(),A=await $(),I=await K(),F=new Map,C=new Map,x=[],Q=[],G=[],X=new Map,de=new Set,ce={async readRuntime(u){return F.get(u)??await t.readRuntime(u)},async writeRuntime(u,g){F.set(u,g),Te[u]=g;}},Ie={async readSourceData(u,g){let P=`${u}/${g}`;return C.has(P)?C.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}`,B=await c.read(D);if(B==null){let z=await Promise.resolve(c.keyRef?.(D));z&&(B=await o.resolveBlob(z));}if(B==null)return false;let U=`${u}/${g}`,ae=B.trim();try{C.set(U,JSON.parse(ae));}catch{C.set(U,ae);}return x.push({cardId:u,outputFile:g,deliveryToken:P}),true},async hasSource(u,g){let P=`${u}/${g}`;return C.has(P)||await i.hasSource(u,g)},async listSources(u){let g=await i.listSources(u),P=[...C.keys()].filter(D=>D.startsWith(`${u}/`)).map(D=>D.slice(`${u}/`.length));return [...new Set([...g,...P])]}},xe=await H(),De=chunkG4XXRHL2_cjs.q(xe.graph),Te={...xe.runtimeByCardId},{events:wt,newCursor:Oe}=await te().readEntriesAfterCursor(xe.lastDrainedJournalId),pe=wt,Ve=()=>De.config.tasks,fe=chunkG4XXRHL2_cjs.u(De,{handlers:{"card-handler":Ot(e,Oe,{cardStore:A,cardRuntimeStore:ce,fetchedSourcesStore:Ie,outputStore:I,executionRequestStore:n,activeTaskConfigs:()=>Ve()},(u,g)=>{pe.push({type:"task-completed",taskName:u,data:g,timestamp:q()});},(u,g)=>{Q.push({cardId:u,values:g});},u=>{G.push(u);})},onNodeRemoved:u=>{X.delete(u),F.delete(u),delete Te[u],de.add(u);}});for(Ve=()=>fe.getState().config.tasks;pe.length>0;){let u=pe;pe=[];for(let g of u)if(g.type==="task-restart"){let P=await A.readCard(g.taskName);P&&X.set(g.taskName,P);}fe.pushAll(u),await fe.waitForHandlers();}let $e=fe.getState();await fe.dispose({wait:true}),await ee({lastDrainedJournalId:Oe,graph:chunkG4XXRHL2_cjs.p($e),runtimeByCardId:Te},(await V().readSnapshot(M)).version);for(let{cardId:u,values:g}of Q)await I.writeComputedValues(u,g);for(let u of G)await I.writeDataObjects(u);for(let[u,g]of F)await t.writeRuntime(u,g);for(let u of x)await i.commitSourceData(u.cardId,u.outputFile,u.deliveryToken);let Le=chunkBAG7MHZP_cjs.y(chunkBAG7MHZP_cjs.A(d,$e));await I.writeStatusSnapshot(Le);let me=[];for(let{cardId:u,values:g}of Q)me.push({kind:"computed_values",cardId:u,values:g});for(let u of G)for(let[g,P]of Object.entries(u))me.push({kind:"data_object",key:g,payload:P});for(let[u,g]of X)me.push({kind:"card_refreshed",cardId:u,card:g});for(let u of de)me.push({kind:"card_removed",cardId:u});me.push({kind:"status",status:Le}),await N(me);let ne=await Ae();if(!ne)return;let Je=o.supportsDirectSourceOutput?.(ne)===true;await n.dispatchEntriesForJournalId(Oe,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(ne.howToRun==="queue-storage"&&Je){try{let B=await O().readQueueStoreRef();if(!B)throw new Error(`Board at ${e.value} has no queue store configured. Run: init --queue-store-ref <b64-ref>`);let U=o.queueStorageForRef(B,"task-executor"),ae=typeof ne.extra?.boardId=="string"?ne.extra.boardId:void 0,z=[];for(let Y of D){if(!Y.outputFile)continue;let ye=o.genId(),Se=`${P}/.staged/${ye}/${Y.outputFile}`,Me=await Promise.resolve(c.keyRef?.(Se));if(!Me)continue;let Qe={ref:chunkVQCIOKJV_cjs.a(Me),deliveryToken:ye,outputFile:Y.outputFile,cardId:P},ht=kt({cbk:g.callbackToken,rg:e.value,br:chunkVQCIOKJV_cjs.a(e),cid:P,b:Y.bindTo,d:Y.outputFile,cs:void 0,rqt:g.rqt,dt:Qe.deliveryToken});z.push({...ae?{boardId:ae}:{},ref:ne,args:{source_def:Y,base_ref:chunkVQCIOKJV_cjs.a(e),callback:r.createCallback(ht),output:Qe}});}z.length>0&&await U.enqueueMany(z);}catch(B){await E({type:"task-failed",taskName:P,error:B instanceof Error?B.message:String(B),timestamp:q()});}return}for(let B of D){if(!B.outputFile)continue;let U;if(Je){let Y=o.genId(),ye=`${P}/.staged/${Y}/${B.outputFile}`,Se=await Promise.resolve(c.keyRef?.(ye));Se&&(U={ref:chunkVQCIOKJV_cjs.a(Se),deliveryToken:Y,outputFile:B.outputFile,cardId:P});}let ae=kt({cbk:g.callbackToken,rg:e.value,br:chunkVQCIOKJV_cjs.a(e),cid:P,b:B.bindTo,d:B.outputFile,cs:void 0,rqt:g.rqt,...U?{dt:U.deliveryToken}:{}}),z=await o.dispatchExecution(ne,{source_def:B,base_ref:chunkVQCIOKJV_cjs.a(e),callback:r.createCallback(ae),...U?{output:U}:{}});z.dispatched||await E({type:"task-failed",taskName:P,error:z.error??"dispatch failed",timestamp:q()});}});}async function y(){try{let n=async()=>{let c=await H(),{events:i}=await te().readEntriesAfterCursor(c.lastDrainedJournalId);i.length>0&&await j();},t=await mt(o.lock,p,n);return b({ran:t!==!1})}catch(n){return T(n)}}async function k(){return v||(v=y().finally(()=>{v=null;}),v)}async function j(){let n=await O().readQueueStoreRef();if(!n)throw new Error(`Board at ${e.value} has no queue store configured. Run: init --queue-store-ref <b64-ref>`);await o.queueStorageForRef(n,"process-accumulated").enqueue({boardRef:chunkVQCIOKJV_cjs.a(e)}),await o.requestProcessAccumulated?.();}async function re(){let n=await O().readQueueStoreRef();if(!n)throw new Error(`Board at ${e.value} has no queue store configured. Run: init --queue-store-ref <b64-ref>`);let t=o.queueStorageForRef(n,"process-accumulated");for(;;){let c=await t.lease({max:64,visibilityMs:1e3});if(c.length<=0)return;for(let i of c)await t.ack(i.id,i.leaseToken);if(c.length<64)return}}function L(){j();}return {async init(n){try{let t=n.params?.cardStoreRef;if(!t)return R("init requires params.cardStoreRef");if(w=n.params?.boardRuntimeStoreRef,!w)return R("init requires params.boardRuntimeStoreRef");let c=n.params?.outputsStoreRef;if(!c)return R("init requires params.outputsStoreRef");let i=n.params?.queueStoreRef;if(!i)return R("init requires params.queueStoreRef");let A=n.params?.fetchedSourcesStoreRef;if(!A)return R("init requires params.fetchedSourcesStoreRef");m=n.params?.scratchStoreRef;let I=n.params?.chatStoreRef;if(!I)return R("init requires params.chatStoreRef");let F=n.params?.artifactsStoreRef;if(!F)return R("init requires params.artifactsStoreRef");await Z()||await ee({lastDrainedJournalId:"",graph:chunkG4XXRHL2_cjs.p(chunkG4XXRHL2_cjs.a(chunkBAG7MHZP_cjs.B)),runtimeByCardId:{}},null);let C=O();await C.writeBoardRuntimeStoreRef(w),await C.writeCardStoreRef(t),await C.writeOutputsStoreRef(c),await C.writeQueueStoreRef(i),await C.writeFetchedSourcesStoreRef(A),await C.writeChatStoreRef(I),await C.writeArtifactsStoreRef(F),await(await $()).writeCard(chunkBAG7MHZP_cjs.m,chunkBAG7MHZP_cjs.p());let x=o.kvStorage("card-upsert"),Q=chunkBAG7MHZP_cjs.p(),G=chunkBAG7MHZP_cjs.E(Q),X=o.hashFn(G),ce=(await x.read(chunkBAG7MHZP_cjs.m))?.blobRef??await(await $()).readCardKey(chunkBAG7MHZP_cjs.m)??chunkBAG7MHZP_cjs.m;return await E({type:"task-upsert",taskName:chunkBAG7MHZP_cjs.m,taskConfig:G,timestamp:q()}),await x.write(chunkBAG7MHZP_cjs.m,{blobRef:ce,taskConfigHash:X,updatedAt:q()}),await E({type:"task-restart",taskName:chunkBAG7MHZP_cjs.m,timestamp:q()}),L(),await(await K()).writeStatusSnapshot(chunkBAG7MHZP_cjs.y(chunkBAG7MHZP_cjs.A(d,chunkG4XXRHL2_cjs.q((await H()).graph)))),b()}catch(t){return T(t)}},async status(n){try{let t=await K(),c=await t.readStatusSnapshot();return c||(c=chunkBAG7MHZP_cjs.y(chunkBAG7MHZP_cjs.A(d,chunkG4XXRHL2_cjs.q((await H()).graph))),await t.writeStatusSnapshot(c)),b(c)}catch(t){return T(t)}},async getCardStoreRef(n){try{let t=await O().readCardStoreRef();return t?b({storeRef:t}):R(`Board at ${e.value} has no card store configured`)}catch(t){return T(t)}},async getBoardRuntimeStoreRef(n){try{return b({storeRef:w??null})}catch(t){return T(t)}},async getOutputsStoreRef(n){try{let t=await O().readOutputsStoreRef();return t?b({storeRef:t}):R(`Board at ${e.value} has no outputs store configured`)}catch(t){return T(t)}},async getScratchStoreRef(n){try{return b({storeRef:m??null})}catch(t){return T(t)}},async getChatStoreRef(n){try{return b({storeRef:await O().readChatStoreRef()})}catch(t){return T(t)}},async getArtifactsStoreRef(n){try{return b({storeRef:await O().readArtifactsStoreRef()})}catch(t){return T(t)}},async getFetchedSourcesStoreRef(n){try{return b({storeRef:await O().readFetchedSourcesStoreRef()})}catch(t){return T(t)}},async getConfig(n){try{let t=n.params?.key;if(!t)return R("getConfig requires params.key");let c=O(),i;switch(t){case "task-executor":i=l??null;break;case "chat-handler-flow":i=S??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 R(`getConfig: unknown key "${t}"`)}return b({value:i})}catch(t){return T(t)}},async getOutputsDataObject(n){try{let t=n.params?.key;if(!t)return R("getOutputsDataObject requires params.key");if(t===chunkBAG7MHZP_cjs.l)return b(null);let c=await W();return b(c[t]??null)}catch(t){return T(t)}},async getAllOutputsDataObjects(n){try{return b(await W())}catch(t){return T(t)}},async getOutputsComputedValues(n){try{let t=n.params?.key;return t?b(await(await K()).readComputedValues(t)):R("getOutputsComputedValues requires params.key")}catch(t){return T(t)}},async getAllOutputsComputedValues(n){try{return b(await(await K()).readAllComputedValues())}catch(t){return T(t)}},async getOutputsFetchedSources(n){try{let t=n.params?.key;if(!t)return R("getOutputsFetchedSources requires params.key");let c=await(await ie()).listSources(t),i={};for(let A of c)i[A]=await ue(`${t}/${A}`);return b(i)}catch(t){return T(t)}},async getAllOutputsFetchedSources(n){try{let t=await ie(),c=await(await le()).listKeys(),i=new Set;for(let I of c){let F=I.indexOf("/");F>0&&!I.includes("/.staged/")&&i.add(I.slice(0,F));}let A={};for(let I of i){let F=await t.listSources(I);if(F.length!==0){A[I]={};for(let C of F)A[I][C]=await ue(`${I}/${C}`);}}return b(A)}catch(t){return T(t)}},async buildSseOneShotPayload(n){try{let t=(await(await $()).readAllCards()).filter(C=>C.id!==chunkBAG7MHZP_cjs.m),c=await this.status({});if(c.status!=="success")return c;let i=await this.getAllOutputsDataObjects({});if(i.status!=="success")return i;let A=await this.getAllOutputsComputedValues({});if(A.status!=="success")return A;let I=A.data,F={};for(let C of t){let x=typeof C?.id=="string"?C.id:null;if(!x)continue;let Q=C.card_data&&typeof C.card_data=="object"&&!Array.isArray(C.card_data)?C.card_data:{};F[x]={schema_version:"v1",card_id:x,card_data:{...Q},computed_values:I[x]&&typeof I[x]=="object"?I[x]:{}};}return b({cardDefinitions:t,statusSnapshot:c.data,dataObjectsByToken:i.data,cardRuntimeById:F})}catch(t){return T(t)}},async addCardFiles(n){try{let t=n.params?.cardId;if(!t)return R("addCardFiles requires params.cardId");let i=await St(await $(),{emitNotification:f}).appendFiles({params:{id:t},body:n.body});return i.status!=="success"?i:b({cardId:t,files_added:i.data.files_added,notified:!0})}catch(t){return T(t)}},async removeCard(n){try{let t=n.params?.id;if(!t)return R("removeCard requires params.id");try{await o.kvStorage("card-upsert").delete(t);}catch{}return await E({type:"task-removal",taskName:t,timestamp:q()}),t!==chunkBAG7MHZP_cjs.m&&await E({type:"task-restart",taskName:chunkBAG7MHZP_cjs.m,timestamp:q()}),L(),b()}catch(t){return T(t)}},async retrigger(n){try{let t=n.params?.id;return t?(await E({type:"task-restart",taskName:t,timestamp:q()}),L(),b()):R("retrigger requires params.id")}catch(t){return T(t)}},async processAccumulatedEvents(n){return await re(),k()},async upsertCard(n){try{let t=n.params?.cardId,c=n.params?.all,i=!!n.params?.restart;if(!t&&!c)return R("upsertCard requires --card-id <id> or --all");let A=await $(),I=c?(await A.readAllCards()).map(x=>x.id):[t];for(let x of I)if(!await A.readCard(x))return R(`Card "${x}" not found in board at ${e.value}`);let F=o.kvStorage("card-upsert"),C=!1;for(let x of I){let Q=await A.readCard(x);if(!Q)continue;let G=chunkBAG7MHZP_cjs.E(Q),X=o.hashFn(G),de=await F.read(x),ce=de?.taskConfigHash!==X;if(!(!ce&&!i)){if(ce){let Ie=de?.blobRef??await A.readCardKey(x)??x;await E({type:"task-upsert",taskName:x,taskConfig:G,timestamp:q()}),await F.write(x,{blobRef:Ie,taskConfigHash:X,updatedAt:q()}),C=C||x!==chunkBAG7MHZP_cjs.m;}i&&await E({type:"task-restart",taskName:x,timestamp:q()});}}return C&&await E({type:"task-restart",taskName:chunkBAG7MHZP_cjs.m,timestamp:q()}),L(),b()}catch(t){return T(t)}},async taskFailed(n){try{let t=n.params?.token;if(!t)return R("taskFailed requires params.token");let c=n.params?.error??"unknown error",i=be(t);return i?(await E({type:"task-failed",taskName:i.taskName,error:c,timestamp:q()}),L(),b()):R("Invalid callback token")}catch(t){return T(t)}},async taskProgress(n){try{let t=n.params?.token;if(!t)return R("taskProgress requires params.token");let c=(n.body??{}).update??{},i=be(t);return i?(await E({type:"task-progress",taskName:i.taskName,update:c,timestamp:q()}),L(),b()):R("Invalid callback token")}catch(t){return T(t)}},async sourceDataFetched(n){try{let t=n.params?.token,c=n.params?.ref;if(!t)return R("sourceDataFetched requires params.token");if(!c)return R("sourceDataFetched requires params.ref");let i=Ct(t);if(!i)return R("Invalid source token");let A=await ie(),I=i.dt||o.genId();i.dt||await A.ingestSourceDataStaged(i.cid,i.d,chunkVQCIOKJV_cjs.b(c),I);let F=be(i.cbk);return F?(await E({type:"task-progress",taskName:F.taskName,update:{bindTo:i.b,outputFile:i.d,fetchedAt:q(),deliveryToken:I,sourceChecksum:i.cs,rqt:i.rqt},timestamp:q()}),L(),b()):R("Invalid callback token embedded in source token")}catch(t){return T(t)}},async sourceDataFetchFailure(n){try{let t=n.params?.token,c=n.params?.reason??"unknown";if(!t)return R("sourceDataFetchFailure requires params.token");let i=Ct(t);if(!i)return R("Invalid source token");let A=be(i.cbk);return A?(await E({type:"task-progress",taskName:A.taskName,update:{bindTo:i.b,outputFile:i.d,failure:!0,reason:c,sourceChecksum:i.cs,rqt:i.rqt},timestamp:q()}),L(),b()):R("Invalid callback token embedded in source token")}catch(t){return T(t)}}}}
|
|
2
|
+
exports.a=mt;exports.b=gt;exports.c=pt;exports.d=yt;exports.e=Nt;exports.f=_t;exports.g=St;exports.h=$t;exports.i=nr;//# sourceMappingURL=chunk-HVLWVMG6.cjs.map
|
|
3
|
+
//# sourceMappingURL=chunk-HVLWVMG6.cjs.map
|
|
@@ -0,0 +1,2 @@
|
|
|
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 M(a){if(!a||typeof a!="object")return false;let t=a;return typeof t.kind=="string"&&t.kind.length>0}function J(a){if(!a||typeof a!="object")return [];let t=a;return t.kind==="notification-batch"?Array.isArray(t.notifications)?t.notifications.filter(M):[]:M(a)?[a]:[]}function X(a,t,i){let c=0;return {accepted:a.filter(_=>{if(!M(_))return c++,false;let S=_;return typeof S.sentAtMs=="number"&&t-S.sentAtMs>i?(c++,false):true}),rejected:c}}function Q(){return {status:null,computedValues:{},dataObjects:{},cards:{}}}function z(a){if(!a||typeof a!="object")return false;let t=a.summary;return !t||typeof t!="object"?false:Number(t.card_count||0)>0}function W(a){if(!a||typeof a!="object")return false;let t=a;return t.kind==="notification-batch"&&Array.isArray(t.notifications)}function V(a,t){if(t.kind==="status"){z(t.status)&&(a.status=t.status);return}if(t.kind==="computed_values"){a.computedValues[t.cardId]=t.values;return}if(t.kind==="data_object"){a.dataObjects[t.key]=t.payload;return}if(t.kind==="card_refreshed"){a.cards[t.cardId]=t.card;return}t.kind==="card_removed"&&(delete a.cards[t.cardId],delete a.computedValues[t.cardId]);}function Y(a,t){if(W(t)){for(let i of t.notifications)M(i)&&V(a,i);return}M(t)&&V(a,t);}function j(a,t){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||`${t} failed`),{statusCode:400}):Object.assign(new Error(`${t} returned an unexpected response`),{statusCode:500})}async function N(a,t){return j(await a,t)}function T(a){let t=chunkLPXVVMQT_cjs.a(a,"key");if(!t)throw Object.assign(new Error("MCP tool requires key"),{statusCode:400});let i=t.split(".");if(!(i.length>=2&&i.every(g=>/^[A-Za-z_][A-Za-z0-9_]*$/.test(g))))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 t}function q(a,t){let i=a.__private;for(let c of t.split(".")){if(!i||typeof i!="object"||Array.isArray(i)||!Object.prototype.hasOwnProperty.call(i,c))return {exists:false,value:null};i=i[c];}return {exists:true,value:i}}function ot(a){let{boardId:t,bootstrapBoard:i,sseHub:c,onChannelSubscribed:g,onChannelUnsubscribed:_,getMcpFacade:S,getMcpCardStoreFacade:n}=a;function f(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!==t)throw Object.assign(new Error(`Unknown board_id: ${d}`),{statusCode:400})}function h(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 w(s){f(s);let d=h(s),e=chunkLPXVVMQT_cjs.a(s,"channel_name"),r=chunkLPXVVMQT_cjs.a(s,"card_id")||void 0;if(!e)throw Object.assign(new Error("MCP tool requires channel_name"),{statusCode:400});return {clientId:d,channelName:e,...r?{cardId:r}:{}}}function R(s){f(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 I(s){await i();let{cardId:d}=R(s),e=h(s);if(!await c.subscribeChat(e,d))throw Object.assign(new Error(`SSE client not connected: ${e}`),{statusCode:404});return {status:"success",data:{boardId:t,cardId:d,clientId:e,subscribed:true}}}async function u(s){await i();let{cardId:d}=R(s),e=h(s);if(!c.unsubscribeChat(e,d))throw Object.assign(new Error(`SSE client not connected: ${e}`),{statusCode:404});return {status:"success",data:{boardId:t,cardId:d,clientId:e,subscribed:false}}}async function b(s,d){await i();let{clientId:e,channelName:r,cardId:o}=w(s);if(!c.has(e))throw Object.assign(new Error(`SSE client not connected: ${e}`),{statusCode:404});return d?(c.subscribeChannel(e,r,o),g?.(e,r,o?{cardId:o}:{})):(c.unsubscribeChannel(e,r,o),_?.(e,r,o?{cardId:o}:{})),{status:"success",data:{boardId:t,clientId:e,channelName:r,subscribed:d,...o?{cardId:o}:{}}}}async function m(s,d){let{cardId:e}=R(s);return await S().setChatProcessing({cardId:e,active:d}),{status:"success",data:{boardId:t,cardId:e,active:d}}}async function p(s){let{cardId:d}=R(s),e=await S().getChatProcessing({cardId:d});return {status:"success",data:{boardId:t,cardId:d,active:e.active}}}async function y(s){let{cardId:d}=R(s),e=T(s);if(!Object.prototype.hasOwnProperty.call(s,"value"))throw Object.assign(new Error("MCP tool requires value"),{statusCode:400});if(e.split(".").includes("visible_controlplane_only")){let r=await N(n().get({params:{id:d}}),"cardStore.get"),o=Array.isArray(r.cards)&&r.cards.length>0&&typeof r.cards[0]=="object"&&!Array.isArray(r.cards[0])?r.cards[0]:null,k=o?q(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:t,cardId:d,key:e}}}return j(await n().patch({params:{id:d,path:`__private.${e}`},body:{value:s.value}}),"cardStore.patch"),{status:"success",data:{boardId:t,cardId:d,key:e}}}async function C(s){let{cardId:d}=R(s),e=T(s),r=await N(n().get({params:{id:d}}),"cardStore.get"),o=Array.isArray(r.cards)&&r.cards.length>0&&r.cards[0]&&typeof r.cards[0]=="object"&&!Array.isArray(r.cards[0])?r.cards[0]:null;if(!o)throw Object.assign(new Error(`Card "${d}" not found`),{statusCode:404});let k=q(o,e);return {status:"success",data:{boardId:t,cardId:d,key:e,exists:k.exists,value:k.value}}}return {requireCardArgs:R,subscribeChat:I,unsubscribeChat:u,watchChannel:b,setChatProcessing:m,getChatProcessing:p,setCardMeta:y,getCardMeta:C}}function it(a){let{boardId:t,boardContexts:i,readChatRecords:c,getChatProcessing:g}=a,_=Number.isInteger(a.chatBootstrapTailTurns)&&a.chatBootstrapTailTurns>0?a.chatBootstrapTailTurns:1;function S(u){return {role:String(u.role||"system"),text:String(u.text||""),files:Array.isArray(u.files)?u.files:[],...typeof u.turn=="string"&&u.turn?{turn:u.turn}:{}}}function n(u){if(u.length===0)return null;if(u.length===1)return u[0];let b=[],m=["completed","eligible","pending","blocked","unresolved","failed","in_progress","orphan_cards"],p={};for(let C of m)p[C]=0;for(let C of u){let s=C,d=Array.isArray(s.cards)?s.cards:[];b.push(...d);for(let e of m)p[e]+=Number(s?.summary?.[e]||0);}let y=u[0];return {...y,cards:b,summary:{...y.summary||{},card_count:b.length,...p}}}async function f(){let u=[];for(let b of i)try{let m=await b.boardOps.buildSseOneShotPayload({});m.status==="success"&&m.data&&u.push(m.data);}catch{}return u}async function h(){let b=(await f()).map(m=>m.statusSnapshot).filter(Boolean);if(b.length===0){let m=i.map(p=>p.notification.status).filter(Boolean);return n(m)}return n(b)}async function w(){let u={},b=await f();for(let m of b)Object.assign(u,m.cardRuntimeById||{});if(Object.keys(u).length>0)return u;for(let m of i)for(let[p,y]of Object.entries(m.notification.computedValues)){let C=m.notification.cards[p];u[p]={schema_version:"v1",card_id:p,card_data:C?.card_data??{},computed_values:y??{}};}return u}async function R(){let u={},b=await f();for(let m of b)Object.assign(u,m.dataObjectsByToken||{});if(Object.keys(u).length===0)for(let m of i)Object.assign(u,m.notification.dataObjects||{});return u}async function I(){let u=await f(),b=u.flatMap(C=>Array.isArray(C.cardDefinitions)?C.cardDefinitions:[]),m={},p={};for(let C of u)Object.assign(m,C.dataObjectsByToken||{}),Object.assign(p,C.cardRuntimeById||{});let y={};for(let C of b){if(!C?.id)continue;let s=C.id;try{let d=await c(s,{tailTurns:_}),e=await g(s);(d.length>0||e)&&(y[s]={messages:d.map(r=>S(r)),receiving:!1,processing:e});}catch{}}return {boardId:t,cardDefinitions:b,statusSnapshot:await h(),dataObjectsByToken:m,cardRuntimeById:p,cardChatsByCardId:y}}return {readStatusSnapshot:h,readCardRuntimeArtifacts:w,readDataObjectsByToken:R,buildPublishedRuntimePayload:I}}function K(a){let t=String(a||"").trim();if(!t)return "upload.bin";let i=Math.max(t.lastIndexOf("/"),t.lastIndexOf("\\"));return (i>=0?t.slice(i+1):t)||"upload.bin"}function ct(a){let{safeCardId:t,artifactsStores:i,cardFileMetadataStore:c,readCardFromStore:g,updateCardLocalOnly:_,writeChatRecord:S}=a;async function n(w){let R=[];try{let I=await g(w);if(!I)return R;let u=c().read(I.card_data&&typeof I.card_data=="object"?I.card_data:null);for(let b of u)R.push(String(b.stored_name??""));}catch{}return R}async function f(w,R,I,u){let b=t(w),m=i(w),p=K(R),y=await n(w),s=`${String(y.length+1).padStart(3,"0")}-${p}`.slice(-36);if(!m.files)throw Object.assign(new Error(`artifactsStoreRef is not configured for card uploads: ${w}`),{statusCode:500});return await m.files.putBytes(`${b}/${s}`,new Uint8Array(u),I||"application/octet-stream"),{name:p,stored_name:s,size:u.length,mime_type:I||"application/octet-stream",uploaded_at:new Date().toISOString()}}async function h(w,R,I,u,b){if(!u.length)throw Object.assign(new Error("Empty upload body"),{statusCode:400});let m=b?.inChat===true,p=await f(w,R,I,u),y=null;if(await _(w,C=>{let s=new Date().toISOString(),d=C.card_data&&typeof C.card_data=="object"?C.card_data:{};C.card_data=d;let e=c().normalizeIncoming([{name:p.name,stored_name:p.stored_name,size:p.size,mime_type:p.mime_type,uploaded_at:p.uploaded_at||s,chat:m}],s);return y=c().merge(d,e).findIndex(o=>o.stored_name===p.stored_name),C}),m&&b?.suppressChatRecordWrite!==true){let C=typeof y=="number"&&y>=0?` #${y}`:"";await S(w,"system",`file uploaded: ${p.name} as ${p.stored_name}${C}`,[],b?.turnId??"");}return {ok:true,file:{...p,...typeof y=="number"&&y>=0?{file_idx:y}:{},chat:m},...typeof y=="number"&&y>=0?{file_idx:y}:{}}}return {uploadCardFile:h,readCardStoredFileNames:n}}function pt(a){return {"discover.source-kinds":()=>a.discoverSourceKinds(),"inspect.board-runtime-status":()=>a.inspectBoardRuntimeStatus(),"inspect.card-definition-and-runtime":t=>a.inspectCardDefinitionAndRuntime({cardId:chunkLPXVVMQT_cjs.a(t,"card_id")}),"inspect.chat-messages-on-cards":t=>{let i=chunkLPXVVMQT_cjs.b(t,"tail_turns"),c=chunkLPXVVMQT_cjs.b(t,"tail"),g=chunkLPXVVMQT_cjs.a(t,"turn_id"),_=t.all_turns===true,S=chunkLPXVVMQT_cjs.a(t,"tail_turns_before_id");return a.inspectChatMessagesOnCards({cardId:chunkLPXVVMQT_cjs.a(t,"card_id"),...i!==void 0?{lastUserTurns:i}:{},...c!==void 0?{tail:c}:{},...g?{turnId:g}:{},..._?{allTurns:true}:{},...S?{tailTurnsBeforeId:S}:{}})},"inspect.file-contents":t=>a.inspectFileContents({cardId:chunkLPXVVMQT_cjs.a(t,"card_id"),fileIdx:Number(chunkLPXVVMQT_cjs.b(t,"file_idx"))}),"preflight.validate-candidate-card-definition":t=>a.preflightValidateCandidateCardDefinition({candidateCardContent:chunkLPXVVMQT_cjs.d(t,"candidate_card_content","candidate_card_content")}),"preflight.materialize-candidate-card":t=>a.preflightMaterializeCandidateCard({candidateCardContent:chunkLPXVVMQT_cjs.d(t,"candidate_card_content","candidate_card_content"),mockRequires:chunkLPXVVMQT_cjs.d(t,"mock_requires","mock_requires"),mockFetchedSources:chunkLPXVVMQT_cjs.d(t,"mock_fetched_sources","mock_fetched_sources")}),"preflight.probe-single-source-in-candidate-card":t=>a.preflightProbeSingleSourceInCandidateCard({candidateCardContent:chunkLPXVVMQT_cjs.d(t,"candidate_card_content","candidate_card_content"),mockProjections:chunkLPXVVMQT_cjs.c(t,"mock_projections"),sourceIdx:chunkLPXVVMQT_cjs.e(t,"source_idx","source_idx")}),"preflight.run-single-source-in-candidate-card":t=>a.preflightRunSingleSourceInCandidateCard({candidateCardContent:chunkLPXVVMQT_cjs.d(t,"candidate_card_content","candidate_card_content"),mockProjections:chunkLPXVVMQT_cjs.c(t,"mock_projections"),sourceIdx:chunkLPXVVMQT_cjs.e(t,"source_idx","source_idx")}),"preflight.run-single-source-in-live-card":t=>a.preflightRunSingleSourceInLiveCard({cardId:chunkLPXVVMQT_cjs.a(t,"card_id"),sourceIdx:chunkLPXVVMQT_cjs.e(t,"source_idx","source_idx"),mockRequires:chunkLPXVVMQT_cjs.d(t,"mock_requires","mock_requires")}),"preflight.run-one-cycle-with-candidate-card":t=>a.preflightRunOneCycleWithCandidateCard({candidateCardContent:chunkLPXVVMQT_cjs.d(t,"candidate_card_content","candidate_card_content"),mockRequires:chunkLPXVVMQT_cjs.c(t,"mock_requires")}),"manage.read-card":t=>a.manageReadCard({cardId:chunkLPXVVMQT_cjs.a(t,"card_id")}),"stage-ai-response-and-any-attachments":t=>{let i=chunkLPXVVMQT_cjs.a(t,"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(t,"card_id"),role:"assistant",...typeof t.text=="string"?{text:t.text}:{},...i?{turn:i}:{},...Array.isArray(t.files)?{files:t.files}:{}})},"stage-ai-failure-message":t=>{let i=chunkLPXVVMQT_cjs.a(t,"turn_id"),c=chunkLPXVVMQT_cjs.a(t,"failure");if(!i)throw Object.assign(new Error("stage-ai-failure-message requires a non-empty turn_id"),{statusCode:400});if(!c)throw Object.assign(new Error("stage-ai-failure-message requires a non-empty failure"),{statusCode:400});return a.manageAddChatEntryAndAnyAttachments({cardId:chunkLPXVVMQT_cjs.a(t,"card_id"),role:"system",text:c,turn:i})},"manage.upsert-card":t=>a.manageUpsertCard({cardId:chunkLPXVVMQT_cjs.a(t,"card_id"),candidateCardContent:chunkLPXVVMQT_cjs.c(t,"candidate_card_content")}),"manage.remove-card":t=>a.manageRemoveCard({cardId:chunkLPXVVMQT_cjs.a(t,"card_id")})}}function mt(a){return {"webhook.process-accumulated":()=>a.webhookProcessAccumulated(),"webhook.source-fetch-done":t=>a.webhookSourceFetchDone({token:chunkLPXVVMQT_cjs.a(t,"token"),ref:chunkLPXVVMQT_cjs.a(t,"ref")}),"webhook.source-fetch-failed":t=>a.webhookSourceFetchFailed({token:chunkLPXVVMQT_cjs.a(t,"token"),reason:chunkLPXVVMQT_cjs.a(t,"reason")})}}function ft(a){let{boardId:t,uploadCardFile:i,getMcpFacade:c,controlplane:g}=a;function _(n,f){let h=chunkLPXVVMQT_cjs.a(n,"board_id");if(!h)throw Object.assign(new Error(`${f} requires board_id`),{statusCode:400});if(h!==t)throw Object.assign(new Error(`Unknown board_id: ${h}`),{statusCode:400})}function S(n,f){let{cardId:h}=g.requireCardArgs(n),w=chunkLPXVVMQT_cjs.a(n,"turn_id");return _(n,f),c().manageAddChatAttachment({cardId:h,role:chunkLPXVVMQT_cjs.a(n,"role")||"user",...w?{turn:w}:{},files:[{file_name:chunkLPXVVMQT_cjs.a(n,"file_name"),content_type:chunkLPXVVMQT_cjs.a(n,"content_type")||"application/octet-stream",...typeof n.text=="string"?{text:n.text}:{},...typeof n.base64=="string"?{base64:n.base64}:{},...Array.isArray(n.bytes)?{bytes:n.bytes}:{}}]})}return {"list-runtime-cards":n=>(_(n,"list-runtime-cards"),c().listRuntimeCards()),"sse.subscribe-chat":n=>g.subscribeChat(n),"sse.unsubscribe-chat":n=>g.unsubscribeChat(n),"sse.watch-channel":n=>g.watchChannel(n,true),"sse.unwatch-channel":n=>g.watchChannel(n,false),"getstate.is-chat-processing":n=>g.getChatProcessing(n),"setstate.chat-processing-started":n=>g.setChatProcessing(n,true),"setstate.chat-processing-done":n=>g.setChatProcessing(n,false),"getstate.card-private":n=>g.getCardMeta(n),"setstate.card-private":n=>g.setCardMeta(n),"manage.upload-card-file":n=>{let f=chunkLPXVVMQT_cjs.a(n,"card_id"),h=chunkLPXVVMQT_cjs.a(n,"file_name"),w=chunkLPXVVMQT_cjs.a(n,"content_type")||"application/octet-stream",R=chunkLPXVVMQT_cjs.f(n);if(_(n,"manage.upload-card-file"),!f)throw Object.assign(new Error("manage.upload-card-file requires card_id"),{statusCode:400});if(!h)throw Object.assign(new Error("manage.upload-card-file requires file_name"),{statusCode:400});if(!R)throw Object.assign(new Error("manage.upload-card-file requires args.bytes, args.text, or args.base64"),{statusCode:400});return i(f,h,w,R,{inChat:false})},"manage.add-chat-attachment":n=>S(n,"manage.add-chat-attachment"),"manage.add-chat-attachement":n=>S(n,"manage.add-chat-attachement"),"manage.add-chat-entry-and-any-attachments":n=>{let{cardId:f}=g.requireCardArgs(n),h=chunkLPXVVMQT_cjs.a(n,"role")||"user",w=chunkLPXVVMQT_cjs.a(n,"turn_id");return _(n,"manage.add-chat-entry-and-any-attachments"),c().manageAddChatEntryAndAnyAttachments({cardId:f,role:h,...typeof n.text=="string"?{text:n.text}:{},...w?{turn:w}:{},...Array.isArray(n.files)?{files:n.files}:{}})},"manage.patch-card":n=>{let{cardId:f}=g.requireCardArgs(n);return _(n,"manage.patch-card"),c().managePatchCard({cardId:f,patch:chunkLPXVVMQT_cjs.c(n,"patch")},{allowControlplaneOnlyCards:true})},"manage.upsert-card":n=>{let{cardId:f}=g.requireCardArgs(n);return _(n,"manage.upsert-card"),c().manageUpsertCard({cardId:f,candidateCardContent:chunkLPXVVMQT_cjs.c(n,"candidate_card_content")},{allowControlplaneOnlyCards:true})},"manage.remove-card":n=>{let{cardId:f}=g.requireCardArgs(n);return _(n,"manage.remove-card"),c().manageRemoveCard({cardId:f},{allowControlplaneOnlyCards:true})},"manage.admin-read-card":async n=>{let{cardId:f}=g.requireCardArgs(n);return {status:"success",data:{cards:await c().adminReadCard({cardId:f})}}},"manage.admin-upsert-card":n=>{let f=chunkLPXVVMQT_cjs.a(n,"board_id"),h=chunkLPXVVMQT_cjs.a(n,"card_id");if(!f)throw Object.assign(new Error("manage.admin-upsert-card requires board_id"),{statusCode:400});if(!h)throw Object.assign(new Error("manage.admin-upsert-card requires card_id"),{statusCode:400});if(f!==t)throw Object.assign(new Error(`Unknown board_id: ${f}`),{statusCode:400});return c().adminUpsertCard({cardId:h,candidateCardContent:chunkLPXVVMQT_cjs.c(n,"candidate_card_content")})}}}function yt(a){let{boardContexts:t,cardOwnerIndex:i,cardContextForCard:c,readStatusSnapshot:g,readDataObjectsByToken:_,readCardRuntimeArtifacts:S,readCardFromStore:n,readCardDefinitions:f,processAccumulatedLaneInternal:h,reportSourceFetched:w,reportSourceFetchFailure:R,uploadCardFile:I,chatStorePublic:u,serverUrl:b,apiBasePath:m}=a;function p(){return t[0]??null}function y(){return {async status(){let e=await g();return e==null?{status:"fail",error:"Board status is unavailable"}:{status:"success",data:e}},async getOutputsDataObject(e){let r=e?.params?.key;return r?{status:"success",data:(await _())[r]}:{status:"fail",error:"getOutputsDataObject requires params.key"}},async getOutputsComputedValues(e){let r=e?.params?.key;return r?{status:"success",data:(await S())[r]?.computed_values}:{status:"fail",error:"getOutputsComputedValues requires params.key"}},async getOutputsFetchedSources(e){let r=e?.params?.key;if(!r)return {status:"fail",error:"getOutputsFetchedSources requires params.key"};let o=c(r)??p();return o?o.boardOps.getOutputsFetchedSources({params:{key:r}}):{status:"fail",error:"Board context is unavailable"}},async removeCard(e){let r=e?.params?.id;if(!r)return {status:"fail",error:"removeCard requires params.id"};let o=c(r)??p();return o?o.boardOps.removeCard({params:{id:r}}):{status:"fail",error:"Board context is unavailable"}},async upsertCard(e){let r=e?.params?.cardId;if(!r)return {status:"fail",error:"upsertCard requires params.cardId"};let o=c(r)??p();if(!o)return {status:"fail",error:"Board context is unavailable"};let k=await o.boardOps.upsertCard({params:{cardId:r,restart:e.params.restart===true}});if(k.status!=="success")return k;if(chunkBQUQTOPB_cjs.a(o.boardAdapter)){let P=await h(true);if(P.status!=="success")return P}return k}}}function C(){let e=()=>{let r=p();if(!r?.nonCore)throw new Error("Board non-core adapter is not configured for MCP preflight/discovery tools");return r.nonCore};return {describeTaskExecutorCapabilities(r){return e().describeTaskExecutorCapabilities(r)},validateCardPreflight(r){return e().validateCardPreflight(r)},evalCardCompute(r){return e().evalCardCompute(r)},probeSourcePreflight(r){return e().probeSourcePreflight(r)},runSourcePreflight(r){return e().runSourcePreflight(r)},simulateCardCycle(r){return e().simulateCardCycle(r)}}}function s(){return {async get(e){let r=typeof e.params?.id=="string"?e.params.id:void 0;if(r){let o=await n(r);return o?{status:"success",data:{cards:[o]}}:{status:"success",data:{cards:[]}}}return {status:"success",data:{cards:await f()}}},async set(e){let r=e.body;if(r==null)return {status:"fail",error:"set requires a body (card object or array of cards)"};let o=Array.isArray(r)?r:[r];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 E=i.get(A)??0,D=t[E]??p();if(!D)return {status:"fail",error:"Board context is unavailable"};let L=await D.cardStoreOps.set({body:P});if(L.status!=="success")return L;i.set(A,E);}return {status:"success",data:{count:o.length}}},async del(e){let r=[e.params?.id,...e.body?.ids??[]].filter(o=>typeof o=="string"&&!!o);if(r.length===0)return {status:"fail",error:"del requires body.ids (string[]) or params.id"};for(let o of r){let k=c(o)??p();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:r.length}}},async patch(e){let r=typeof e.params?.id=="string"?e.params.id:void 0,o=typeof e.params?.path=="string"?e.params.path:void 0;if(!r||!o)return {status:"fail",error:"patch requires params.id and params.path"};let k=c(r)??p();return k?k.cardStoreOps.patch(e):{status:"fail",error:"Board context is unavailable"}},async appendFiles(e){let r=typeof e.params?.id=="string"?e.params.id:void 0;if(!r)return {status:"fail",error:"appendFiles requires params.id"};let o=c(r)??p();return o?o.cardStoreOps.appendFiles(e):{status:"fail",error:"Board context is unavailable"}}}}function d(){return chunkGHUW6P4G_cjs.a({board:y(),nonCore:C(),cardStore:s(),chatStore:u,processAccumulated:()=>h(true),sourceFetchDone:({token:e,ref:r})=>w(e,r),sourceFetchFailed:({token:e,reason:r})=>R(e,r),uploadCardFile({cardId:e,fileName:r,contentType:o,bytes:k,suppressChatRecordWrite:P}){return I(e,r,o,k,{inChat:true,...P===true?{suppressChatRecordWrite:true}:{}})},buildFileDownloadUrl({cardId:e,fileIdx:r,storedName:o}){let k=`${b||""}${m}/cards/${encodeURIComponent(e)}/files/${r}`;return o?`${k}?sn=${encodeURIComponent(o)}`:k},readFetchedSourceJsonByRef({cardId:e,ref:r}){let o=c(e)??p();if(!o||chunkBQUQTOPB_cjs.a(o.boardAdapter))return null;let A=o.boardAdapter.resolveBlob(chunkVQCIOKJV_cjs.b(r)).trim();return A?JSON.parse(A):null}})}return {mcpBoardFacade:y,mcpNonCoreFacade:C,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=T;exports.i=q;exports.j=ot;exports.k=it;exports.l=ct;exports.m=pt;exports.n=mt;exports.o=ft;exports.p=yt;//# sourceMappingURL=chunk-LRO5AL75.cjs.map
|
|
2
|
+
//# sourceMappingURL=chunk-LRO5AL75.cjs.map
|