yaml-flow 8.7.1 → 8.8.0
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/firebase-storage.js +2 -2
- package/browser/adapters/firestore-storage.js +2 -2
- package/browser/adapters/localstorage-storage.js +3 -3
- package/browser/asset-integrity.json +9 -13
- package/browser/server-runtime-controlface.js +5 -5
- package/examples/ARCHITECTURE.md +0 -27
- package/examples/board/server/board-server.js +150 -100
- package/examples/board/server/board-worker/source_def_flows.json +0 -8
- package/examples/board/server/board-worker/task-executor.js +1 -3
- package/examples/board/test/server-http-test.js +108 -73
- package/examples/board-firestore/server/worker.js +8 -0
- package/examples/portfolio-tracker/portfolio-tracker.js +11 -1
- package/examples/portfolio-tracker/test/portfolio-t4.js +12 -2
- package/lib/{artifacts-store-lib-D9nMkVcE.d.cts → artifacts-store-lib-C6qBpMfU.d.cts} +1 -1
- package/lib/{artifacts-store-lib-DSSMqVL2.d.ts → artifacts-store-lib-D4qf7Q-7.d.ts} +1 -1
- package/lib/artifacts-store-public.d.cts +3 -3
- package/lib/artifacts-store-public.d.ts +3 -3
- package/lib/board-live-cards-mcp.cjs +1 -1
- package/lib/board-live-cards-mcp.d.cts +6 -7
- package/lib/board-live-cards-mcp.d.ts +6 -7
- package/lib/board-live-cards-mcp.js +1 -1
- package/lib/board-live-cards-node.cjs +8 -8
- package/lib/board-live-cards-node.d.cts +15 -14
- package/lib/board-live-cards-node.d.ts +15 -14
- package/lib/board-live-cards-node.js +8 -8
- package/lib/{board-live-cards-public-LlVUQPL2.d.cts → board-live-cards-public-BT5HrgqZ.d.cts} +82 -59
- package/lib/{board-live-cards-public-JNRKfBZy.d.ts → board-live-cards-public-DSRamFm8.d.ts} +82 -59
- package/lib/{board-live-cards-public-async-Di9QB141.d.cts → board-live-cards-public-async-CYjr4mgX.d.cts} +18 -8
- package/lib/{board-live-cards-public-async-fwd1QI82.d.ts → board-live-cards-public-async-DlyC3PgC.d.ts} +18 -8
- package/lib/board-live-cards-public.cjs +1 -1
- package/lib/board-live-cards-public.d.cts +2 -2
- package/lib/board-live-cards-public.d.ts +2 -2
- 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 +6 -8
- package/lib/board-live-cards-server-runtime.d.ts +6 -8
- package/lib/board-live-cards-server-runtime.js +1 -1
- package/lib/{board-platform-adapter-async-BfHmHdx2.d.cts → board-platform-adapter-async-BZIftm36.d.cts} +18 -14
- package/lib/{board-platform-adapter-async-DYahVzIK.d.ts → board-platform-adapter-async-JP9V-U5E.d.ts} +18 -14
- package/lib/board-worker-adapter.cjs +1 -24
- package/lib/board-worker-adapter.d.cts +68 -3
- package/lib/board-worker-adapter.d.ts +68 -3
- package/lib/board-worker-adapter.js +1 -24
- package/lib/card-store-public.d.cts +2 -2
- package/lib/card-store-public.d.ts +2 -2
- package/lib/chat-store-public.cjs +1 -1
- package/lib/chat-store-public.d.cts +20 -20
- package/lib/chat-store-public.d.ts +20 -20
- package/lib/chat-store-public.js +1 -1
- package/lib/chunk-2GSI6C45.js +7 -0
- package/lib/chunk-35N7ONTH.js +2 -0
- package/lib/chunk-37HDEW26.cjs +2 -0
- package/lib/{chunk-PMUSJQSR.cjs → chunk-3CZCGNY4.cjs} +2 -2
- package/lib/{chunk-BQS3EIEK.js → chunk-44L64VQ2.js} +3 -3
- package/lib/chunk-6OPXQPSC.js +2 -0
- package/lib/chunk-7BTZCOT5.js +2 -0
- package/lib/{chunk-U2N6MCD5.cjs → chunk-7JVHYHT2.cjs} +2 -2
- package/lib/chunk-7QZ267XP.cjs +2 -0
- package/lib/{chunk-XQRNDX4Q.js → chunk-ANKA7HEJ.js} +2 -2
- package/lib/{chunk-KAWQPLIE.cjs → chunk-BQUQTOPB.cjs} +2 -2
- package/lib/chunk-CMFD27ZC.cjs +3 -0
- package/lib/chunk-DOFNXJ4C.js +3 -0
- package/lib/chunk-ETW3BXHD.cjs +2 -0
- package/lib/{chunk-SGV7PU4H.js → chunk-FOFGEABN.js} +2 -2
- package/lib/chunk-GPCMBPLK.cjs +2 -0
- package/lib/chunk-GU3T75C4.js +3 -0
- package/lib/chunk-H3EHFCDZ.js +3 -0
- package/lib/chunk-H4TYOSMD.cjs +45 -0
- package/lib/chunk-HFW7E2Z7.cjs +4 -0
- package/lib/chunk-IQIZA7TN.cjs +7 -0
- package/lib/chunk-J4MHQ7JF.js +45 -0
- package/lib/chunk-MCPADH33.cjs +2 -0
- package/lib/chunk-NBJTYAYN.cjs +2 -0
- package/lib/chunk-NDAKMJQK.cjs +3 -0
- package/lib/chunk-NNSBBO5R.js +2 -0
- package/lib/chunk-NU5NO5NM.js +2 -0
- package/lib/chunk-O4RKTQBP.cjs +3 -0
- package/lib/chunk-O5UYCGIN.js +2 -0
- package/lib/chunk-Q3OTUDIE.js +2 -0
- package/lib/chunk-R44X3RQB.cjs +2 -0
- package/lib/chunk-RKKSVOP2.js +2 -0
- package/lib/chunk-UB54HZA4.cjs +2 -0
- package/lib/{chunk-CIAJNUR4.js → chunk-VGDLSS2H.js} +2 -2
- package/lib/{chunk-SFVO2LB2.cjs → chunk-VQCIOKJV.cjs} +3 -3
- package/lib/chunk-VS3BXEYK.js +4 -0
- package/lib/chunk-Y4WK7HE4.js +2 -0
- package/lib/chunk-ZK3E7L4Y.cjs +2 -0
- package/lib/cloud-storage.cjs +1 -1
- package/lib/cloud-storage.d.cts +6 -6
- package/lib/cloud-storage.d.ts +6 -6
- package/lib/cloud-storage.js +1 -1
- package/lib/execution-refs.cjs +1 -1
- package/lib/execution-refs.js +1 -1
- package/lib/firebase-storage/index.cjs +2 -2
- package/lib/firebase-storage/index.d.cts +2 -2
- package/lib/firebase-storage/index.d.ts +2 -2
- package/lib/firebase-storage/index.js +2 -2
- package/lib/firestore-storage/index.cjs +2 -2
- package/lib/firestore-storage/index.d.cts +12 -10
- package/lib/firestore-storage/index.d.ts +12 -10
- package/lib/firestore-storage/index.js +2 -2
- package/lib/index.d.cts +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/localstorage-storage/index.cjs +1 -1
- package/lib/localstorage-storage/index.d.cts +10 -6
- package/lib/localstorage-storage/index.d.ts +10 -6
- package/lib/localstorage-storage/index.js +1 -1
- package/lib/{mcp-tool-registries-W3TRj6O5.d.cts → mcp-tool-registries-CRtea2x4.d.cts} +3 -0
- package/lib/{mcp-tool-registries-BBObLYga.d.ts → mcp-tool-registries-D3rWSppt.d.ts} +3 -0
- package/lib/server-jobs-queue-runner/index.cjs +1 -1
- package/lib/server-jobs-queue-runner/index.d.cts +12 -9
- package/lib/server-jobs-queue-runner/index.d.ts +12 -9
- package/lib/server-jobs-queue-runner/index.js +1 -1
- package/lib/server-runtime/index.cjs +1 -1
- package/lib/server-runtime/index.d.cts +7 -9
- package/lib/server-runtime/index.d.ts +7 -9
- package/lib/server-runtime/index.js +1 -1
- package/lib/server-runtime-agentface/index.d.cts +7 -9
- package/lib/server-runtime-agentface/index.d.ts +7 -9
- package/lib/server-runtime-controlface/index.cjs +1 -1
- package/lib/server-runtime-controlface/index.d.cts +8 -9
- package/lib/server-runtime-controlface/index.d.ts +8 -9
- 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 +59 -21
- package/lib/server-runtime-core/index.d.ts +59 -21
- package/lib/server-runtime-core/index.js +1 -1
- package/lib/server-runtime-watchers/index.cjs +1 -1
- package/lib/server-runtime-watchers/index.d.cts +9 -65
- package/lib/server-runtime-watchers/index.d.ts +9 -65
- package/lib/server-runtime-watchers/index.js +1 -1
- package/lib/server-runtime-webhooks/index.d.cts +7 -9
- package/lib/server-runtime-webhooks/index.d.ts +7 -9
- package/lib/sse-hub-CYXisfXJ.d.cts +63 -0
- package/lib/sse-hub-Dodwtc3_.d.ts +63 -0
- package/lib/step-machine-public/index.cjs +1 -1
- package/lib/step-machine-public/index.d.cts +1 -1
- package/lib/step-machine-public/index.d.ts +1 -1
- package/lib/step-machine-public/index.js +1 -1
- package/lib/{storage-async-interface-BRR4eBjx.d.cts → storage-async-interface-CG0bMqvE.d.ts} +20 -1
- package/lib/{storage-async-interface-DhlOVPSp.d.ts → storage-async-interface-CyO-zwVQ.d.cts} +20 -1
- package/lib/{storage-interface-BFiD3kyB.d.ts → storage-interface-D-iEiTJA.d.cts} +45 -1
- package/lib/{storage-interface-BFiD3kyB.d.cts → storage-interface-D-iEiTJA.d.ts} +45 -1
- package/lib/stores/index.d.cts +1 -1
- package/lib/stores/index.d.ts +1 -1
- package/lib/stores/kv.d.cts +1 -1
- package/lib/stores/kv.d.ts +1 -1
- package/lib/{types-SO5OZm4s.d.ts → types-BtH3scgE.d.ts} +64 -29
- package/lib/{types-Ba8H5_Wo.d.cts → types-Ch0u3FKP.d.cts} +64 -29
- package/package.json +4 -5
- package/browser/board-livecards-client.js +0 -2
- package/examples/board/demo-shell-with-server.html +0 -272
- package/examples/board/doc.html +0 -465
- package/examples/board/server-config.json +0 -24
- package/lib/chat-storage-lib-B9Q34Dyv.d.cts +0 -54
- package/lib/chat-storage-lib-DB9iSai2.d.ts +0 -54
- package/lib/chunk-5XHOHTLZ.cjs +0 -2
- package/lib/chunk-6APH25VI.js +0 -2
- package/lib/chunk-76C7N4YT.js +0 -3
- package/lib/chunk-76ON3V7R.js +0 -2
- package/lib/chunk-7ICPAABP.cjs +0 -7
- package/lib/chunk-ASR44K7H.cjs +0 -3
- package/lib/chunk-CPAXTVBQ.cjs +0 -2
- package/lib/chunk-EGRHWZRV.js +0 -2
- package/lib/chunk-EZENHAVZ.cjs +0 -2
- package/lib/chunk-GL2OHR2E.cjs +0 -2
- package/lib/chunk-GYQXDNNI.cjs +0 -2
- package/lib/chunk-IPLSRN6P.cjs +0 -4
- package/lib/chunk-J6EGN6S4.cjs +0 -3
- package/lib/chunk-JH37NJGP.js +0 -3
- package/lib/chunk-JJL5VOQZ.cjs +0 -3
- package/lib/chunk-NJJ7WEDT.cjs +0 -2
- package/lib/chunk-NKIQRCOM.cjs +0 -2
- package/lib/chunk-PBOQ4HYB.cjs +0 -2
- package/lib/chunk-PRKRXAVN.js +0 -3
- package/lib/chunk-QJVR3FWQ.js +0 -2
- package/lib/chunk-S44QZUDX.js +0 -2
- package/lib/chunk-TSN3RTXT.js +0 -4
- package/lib/chunk-VXJHBWK3.js +0 -2
- package/lib/chunk-WHDEBJLT.js +0 -7
- package/lib/chunk-YGALANRO.js +0 -2
- package/lib/chunk-ZCNN6XPV.js +0 -2
|
@@ -1,25 +1,2 @@
|
|
|
1
|
-
'use strict';require('./chunk-
|
|
2
|
-
const rawUrl = ${JSON.stringify(r)};
|
|
3
|
-
const rawBody = ${JSON.stringify(e)};
|
|
4
|
-
const u = new URL(rawUrl);
|
|
5
|
-
const {request} = require(u.protocol === 'https:' ? 'https' : 'http');
|
|
6
|
-
const h = { 'Content-Type': 'application/json', 'Content-Length': Buffer.byteLength(rawBody) };
|
|
7
|
-
const req = request({hostname:u.hostname,port:u.port,path:u.pathname+u.search,method:'POST',headers:h}, (res) => {
|
|
8
|
-
let responseBody = '';
|
|
9
|
-
res.setEncoding('utf8');
|
|
10
|
-
res.on('data', chunk => { responseBody += chunk; });
|
|
11
|
-
res.on('end', () => {
|
|
12
|
-
const code = res.statusCode || 500;
|
|
13
|
-
if (code < 200 || code >= 300) {
|
|
14
|
-
const msg = responseBody.trim() || res.statusMessage || ('HTTP ' + code);
|
|
15
|
-
process.stderr.write(msg);
|
|
16
|
-
process.exit(1);
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
-
});
|
|
20
|
-
req.on('error', e => { process.stderr.write(e.message); process.exit(1); });
|
|
21
|
-
req.write(rawBody);
|
|
22
|
-
req.end();
|
|
23
|
-
`,o=child_process.spawnSync(process.execPath,["-e",t],{encoding:"utf-8",windowsHide:true});if(o.status!==0)throw new Error(`http-post failed: ${o.stderr?.trim()}`)}var S=module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('board-worker-adapter.cjs', document.baseURI).href)));function b(r,e,t){x(r,["source-data-fetched","--ref",t,"--token",e],"reportComplete");}function y(r,e,t){x(r,["source-data-fetch-failure","--token",e,"--reason",t],"reportFailed");}function x(r,e,t){let o=I(r.whatToRun),{cmd:n,args:s}=T(o),i=P(r),u=child_process.spawnSync(n,[...s,...e,...i?["--notify-channel",i]:[]],{encoding:"utf-8",windowsHide:true});if(u.status!==0)throw new Error(`${t}: board CLI exited ${u.status}: ${u.stderr?.trim()}`)}function I(r){let e=E(r);if(e.kind==="yaml-flow-cli"){let t=a__namespace.basename(e.value.trim());if(!t)throw new Error(`Invalid yaml-flow-cli ref: expected non-empty cli file name, got ${JSON.stringify(e.value)}`);let o=a__namespace.dirname(S.resolve("yaml-flow/package.json")),n=t.replace(/\.[^.]+$/,""),s=a__namespace.join(o,"cli","bundled",`${n}.mjs`);if(l__namespace.existsSync(s))return s;let i=a__namespace.join(o,"cli","node",t);if(l__namespace.existsSync(i))return i;throw new Error(`Invalid yaml-flow-cli ref: could not find ${t} under cli/bundled or cli/node in ${o}`)}return e.value}function P(r){let e=r.extra?.notifyChannel;return typeof e=="string"&&e.length>0?e:void 0}function T(r){if(!r.endsWith(".ts"))return {cmd:process.execPath,args:[r]};let e=a__namespace.dirname(r),t=[];for(let n=1;n<=5;n++){let s=a__namespace.join(e,...Array(n).fill(".."),"node_modules");t.push(a__namespace.join(s,"tsx","dist","cli.mjs")),t.push(a__namespace.join(s,".bin","tsx"));}let o=t.find(n=>l__namespace.existsSync(n));return o?{cmd:process.execPath,args:[o,r]}:{cmd:"npx",args:["tsx",r]}}function E(r){if(!r.startsWith("b64:"))throw new Error(`Invalid ref format (expected b64:<base64url(json)>): ${r}`);let e=r.slice(4),t=e.replace(/-/g,"+").replace(/_/g,"/")+"=".repeat((4-e.length%4)%4),o;try{o=JSON.parse(Buffer.from(t,"base64").toString("utf8"));}catch{throw new Error(`Invalid ref format (malformed base64url/json): ${r}`)}if(!o||typeof o!="object")throw new Error(`Invalid ref format (expected object payload): ${r}`);let n=o;if(typeof n.kind!="string"||typeof n.value!="string")throw new Error(`Invalid ref format (payload must contain string kind/value): ${r}`);return {kind:n.kind,value:n.value}}function d(r){if(!r.startsWith("b64:"))throw new Error(`Invalid ref format (expected b64:<base64url(json)>): ${r}`);let e=r.slice(4),t=e.replace(/-/g,"+").replace(/_/g,"/")+"=".repeat((4-e.length%4)%4),o;try{o=JSON.parse(Buffer.from(t,"base64").toString("utf8"));}catch{throw new Error(`Invalid ref format (malformed base64url/json): ${r}`)}if(!o||typeof o!="object")throw new Error(`Invalid ref format (expected object payload): ${r}`);let n=o;if(typeof n.kind!="string"||typeof n.value!="string")throw new Error(`Invalid ref format (payload must contain string kind/value): ${r}`);return {kind:n.kind,value:n.value}}function k(r){return `b64:${Buffer.from(JSON.stringify(r),"utf8").toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}`}function N(){return {read(r){if(!l__namespace.default.existsSync(r))return null;try{return l__namespace.default.readFileSync(r,"utf-8")}catch{return null}},write(r,e){l__namespace.default.mkdirSync(a__namespace.default.dirname(r),{recursive:true}),l__namespace.default.writeFileSync(r,e,"utf-8");}}}function _(r){if(r.kind==="fs-path")return N();throw new Error(`Unsupported storage kind: "${r.kind}". Supported kinds: fs-path`)}function M(r,e){let{token:t,via:o}=r;if(o.howToRun==="local-node"||o.howToRun==="local-process"){b(o,t,k(e));return}if(o.howToRun==="http:post"){g(d(o.whatToRun).value,t,k(e));return}if(o.howToRun==="in-process-loop"){f({token:t,outcome:"success",ref:k(e)},d(o.whatToRun).value);return}throw new Error(`reportComplete: unsupported via.howToRun "${o.howToRun}"`)}function A(r,e){let{token:t,via:o}=r;if(o.howToRun==="local-node"||o.howToRun==="local-process"){y(o,t,e);return}if(o.howToRun==="http:post"){h(d(o.whatToRun).value,t,e);return}if(o.howToRun==="in-process-loop"){f({token:t,outcome:"failure",reason:e},d(o.whatToRun).value);return}throw new Error(`reportFailed: unsupported via.howToRun "${o.howToRun}"`)}
|
|
24
|
-
exports.blobStorageForRef=_;exports.parseRef=d;exports.registerInProcessBoardWorkerCallback=v;exports.reportComplete=M;exports.reportFailed=A;exports.serializeRef=k;exports.unregisterInProcessBoardWorkerCallback=B;//# sourceMappingURL=board-worker-adapter.cjs.map
|
|
1
|
+
'use strict';var chunkH4TYOSMD_cjs=require('./chunk-H4TYOSMD.cjs');require('./chunk-GNFE24S7.cjs');Object.defineProperty(exports,"blobStorageForRef",{enumerable:true,get:function(){return chunkH4TYOSMD_cjs.g}});Object.defineProperty(exports,"createImmediateBoardWorkerHook",{enumerable:true,get:function(){return chunkH4TYOSMD_cjs.m}});Object.defineProperty(exports,"createImmediateBoardWorkerRef",{enumerable:true,get:function(){return chunkH4TYOSMD_cjs.k}});Object.defineProperty(exports,"invokeBoardWorker",{enumerable:true,get:function(){return chunkH4TYOSMD_cjs.h}});Object.defineProperty(exports,"invokeBoardWorkerSync",{enumerable:true,get:function(){return chunkH4TYOSMD_cjs.i}});Object.defineProperty(exports,"invokeStepMachineExecutionRef",{enumerable:true,get:function(){return chunkH4TYOSMD_cjs.j}});Object.defineProperty(exports,"loadImmediateBoardWorkerHandler",{enumerable:true,get:function(){return chunkH4TYOSMD_cjs.l}});Object.defineProperty(exports,"parseRef",{enumerable:true,get:function(){return chunkH4TYOSMD_cjs.e}});Object.defineProperty(exports,"registerInProcessBoardWorkerCallback",{enumerable:true,get:function(){return chunkH4TYOSMD_cjs.a}});Object.defineProperty(exports,"registerInProcessBoardWorkerInvoke",{enumerable:true,get:function(){return chunkH4TYOSMD_cjs.c}});Object.defineProperty(exports,"reportComplete",{enumerable:true,get:function(){return chunkH4TYOSMD_cjs.n}});Object.defineProperty(exports,"reportFailed",{enumerable:true,get:function(){return chunkH4TYOSMD_cjs.o}});Object.defineProperty(exports,"serializeRef",{enumerable:true,get:function(){return chunkH4TYOSMD_cjs.f}});Object.defineProperty(exports,"unregisterInProcessBoardWorkerCallback",{enumerable:true,get:function(){return chunkH4TYOSMD_cjs.b}});Object.defineProperty(exports,"unregisterInProcessBoardWorkerInvoke",{enumerable:true,get:function(){return chunkH4TYOSMD_cjs.d}});//# sourceMappingURL=board-worker-adapter.cjs.map
|
|
25
2
|
//# sourceMappingURL=board-worker-adapter.cjs.map
|
|
@@ -13,6 +13,20 @@ type InProcessBoardWorkerCallbackHandler = (payload: InProcessBoardWorkerCallbac
|
|
|
13
13
|
declare function registerInProcessBoardWorkerCallback(key: string, handler: InProcessBoardWorkerCallbackHandler): void;
|
|
14
14
|
declare function unregisterInProcessBoardWorkerCallback(key: string): void;
|
|
15
15
|
|
|
16
|
+
interface InProcessBoardWorkerInvokeRequest {
|
|
17
|
+
subcommand?: string;
|
|
18
|
+
inRef?: string;
|
|
19
|
+
outRef?: string;
|
|
20
|
+
errRef?: string;
|
|
21
|
+
input?: string;
|
|
22
|
+
extra?: Record<string, unknown>;
|
|
23
|
+
[key: string]: unknown;
|
|
24
|
+
}
|
|
25
|
+
type InProcessBoardWorkerInvokeResult = unknown;
|
|
26
|
+
type InProcessBoardWorkerInvokeHandler = (request: InProcessBoardWorkerInvokeRequest) => InProcessBoardWorkerInvokeResult | Promise<InProcessBoardWorkerInvokeResult>;
|
|
27
|
+
declare function registerInProcessBoardWorkerInvoke(key: string, handler: InProcessBoardWorkerInvokeHandler): void;
|
|
28
|
+
declare function unregisterInProcessBoardWorkerInvoke(key: string): void;
|
|
29
|
+
|
|
16
30
|
/**
|
|
17
31
|
* board-worker-adapter.ts
|
|
18
32
|
*
|
|
@@ -87,11 +101,56 @@ interface ExecutionRef {
|
|
|
87
101
|
meta?: string;
|
|
88
102
|
/** Transport / runtime kind. */
|
|
89
103
|
howToRun: 'local-node' | 'local-python' | 'local-process' | 'http:post' | 'http:get' | 'built-in' | 'in-process-loop';
|
|
90
|
-
/** Address of the target in b64:<base64url(json)> wire form. */
|
|
91
|
-
whatToRun: string;
|
|
104
|
+
/** Address of the target in b64:<base64url(json)> wire form or plain object ref form. */
|
|
105
|
+
whatToRun: string | KindValueRef;
|
|
106
|
+
/** Optional JSONata-based mapping from logical args to transport shape. */
|
|
107
|
+
argsMassaging?: ArgsMassaging;
|
|
108
|
+
/** Optional raw-result transforms expected by step-machine-public. */
|
|
109
|
+
outputTransforms?: OutputTransforms;
|
|
92
110
|
/** Opaque executor config stored with the ref. */
|
|
93
111
|
extra?: Record<string, unknown>;
|
|
94
112
|
}
|
|
113
|
+
interface LocalNodeExecutionRef extends ExecutionRef {
|
|
114
|
+
howToRun: 'local-node' | 'local-process';
|
|
115
|
+
}
|
|
116
|
+
interface ArgsMassaging {
|
|
117
|
+
cmdTemplate?: string[];
|
|
118
|
+
stdinTemplate?: string;
|
|
119
|
+
urlTemplate?: string;
|
|
120
|
+
headerTemplate?: string;
|
|
121
|
+
bodyTemplate?: string;
|
|
122
|
+
}
|
|
123
|
+
interface OutputTransforms {
|
|
124
|
+
resultExpr?: string;
|
|
125
|
+
dataTemplate?: string;
|
|
126
|
+
errorExpr?: string;
|
|
127
|
+
}
|
|
128
|
+
interface NormalizedHandlerResult {
|
|
129
|
+
result: string;
|
|
130
|
+
data: Record<string, unknown>;
|
|
131
|
+
error?: string;
|
|
132
|
+
}
|
|
133
|
+
interface StepMachineInvokeOptions {
|
|
134
|
+
timeoutMs?: number;
|
|
135
|
+
label?: string;
|
|
136
|
+
}
|
|
137
|
+
interface BoardWorkerInvokeRequest {
|
|
138
|
+
subcommand?: string;
|
|
139
|
+
inRef?: string;
|
|
140
|
+
outRef?: string;
|
|
141
|
+
errRef?: string;
|
|
142
|
+
input?: string;
|
|
143
|
+
extra?: Record<string, unknown>;
|
|
144
|
+
[key: string]: unknown;
|
|
145
|
+
}
|
|
146
|
+
type BoardWorkerInvokeResult = unknown;
|
|
147
|
+
interface ImmediateBoardWorkerRequest {
|
|
148
|
+
subcommand: string;
|
|
149
|
+
input?: string;
|
|
150
|
+
timeoutMs?: number;
|
|
151
|
+
extra?: Record<string, unknown>;
|
|
152
|
+
}
|
|
153
|
+
type ImmediateBoardWorkerHandler = (request: ImmediateBoardWorkerRequest) => unknown | Promise<unknown>;
|
|
95
154
|
type BoardWorkerCallbackOutcome = 'success' | 'failure';
|
|
96
155
|
/**
|
|
97
156
|
* Describes how the board wants to receive task completion callbacks.
|
|
@@ -104,6 +163,12 @@ interface TaskCallback {
|
|
|
104
163
|
/** Delivery mechanism — an ExecutionRef pointing at the board CLI or endpoint. */
|
|
105
164
|
via: ExecutionRef;
|
|
106
165
|
}
|
|
166
|
+
declare function invokeBoardWorker(via: ExecutionRef, request: BoardWorkerInvokeRequest): Promise<BoardWorkerInvokeResult>;
|
|
167
|
+
declare function invokeBoardWorkerSync(via: ExecutionRef, request: BoardWorkerInvokeRequest): BoardWorkerInvokeResult;
|
|
168
|
+
declare function invokeStepMachineExecutionRef(via: ExecutionRef, args: Record<string, unknown>, options?: StepMachineInvokeOptions): Promise<NormalizedHandlerResult>;
|
|
169
|
+
declare function createImmediateBoardWorkerRef(scriptPath: string, extra?: Record<string, unknown>): LocalNodeExecutionRef;
|
|
170
|
+
declare function loadImmediateBoardWorkerHandler(scriptPath: string): Promise<ImmediateBoardWorkerHandler>;
|
|
171
|
+
declare function createImmediateBoardWorkerHook(execute: ImmediateBoardWorkerHandler, defaultExtra?: Record<string, unknown>): ImmediateBoardWorkerHandler;
|
|
107
172
|
/**
|
|
108
173
|
* Report successful task completion back to the board.
|
|
109
174
|
* Call this from a task-executor after writing the result to outRef.
|
|
@@ -115,4 +180,4 @@ declare function reportComplete(callback: TaskCallback, outRef: KindValueRef): v
|
|
|
115
180
|
*/
|
|
116
181
|
declare function reportFailed(callback: TaskCallback, reason: string): void;
|
|
117
182
|
|
|
118
|
-
export { type BlobStorage, type BoardWorkerCallbackOutcome, type ExecutionRef, type InProcessBoardWorkerCallbackHandler, type InProcessBoardWorkerCallbackPayload, type InProcessBoardWorkerCallbackResult, type KindValueRef, type TaskCallback, blobStorageForRef, parseRef, registerInProcessBoardWorkerCallback, reportComplete, reportFailed, serializeRef, unregisterInProcessBoardWorkerCallback };
|
|
183
|
+
export { type ArgsMassaging, type BlobStorage, type BoardWorkerCallbackOutcome, type BoardWorkerInvokeRequest, type BoardWorkerInvokeResult, type ExecutionRef, type ImmediateBoardWorkerHandler, type ImmediateBoardWorkerRequest, type InProcessBoardWorkerCallbackHandler, type InProcessBoardWorkerCallbackPayload, type InProcessBoardWorkerCallbackResult, type InProcessBoardWorkerInvokeHandler, type InProcessBoardWorkerInvokeRequest, type InProcessBoardWorkerInvokeResult, type KindValueRef, type LocalNodeExecutionRef, type NormalizedHandlerResult, type OutputTransforms, type StepMachineInvokeOptions, type TaskCallback, blobStorageForRef, createImmediateBoardWorkerHook, createImmediateBoardWorkerRef, invokeBoardWorker, invokeBoardWorkerSync, invokeStepMachineExecutionRef, loadImmediateBoardWorkerHandler, parseRef, registerInProcessBoardWorkerCallback, registerInProcessBoardWorkerInvoke, reportComplete, reportFailed, serializeRef, unregisterInProcessBoardWorkerCallback, unregisterInProcessBoardWorkerInvoke };
|
|
@@ -13,6 +13,20 @@ type InProcessBoardWorkerCallbackHandler = (payload: InProcessBoardWorkerCallbac
|
|
|
13
13
|
declare function registerInProcessBoardWorkerCallback(key: string, handler: InProcessBoardWorkerCallbackHandler): void;
|
|
14
14
|
declare function unregisterInProcessBoardWorkerCallback(key: string): void;
|
|
15
15
|
|
|
16
|
+
interface InProcessBoardWorkerInvokeRequest {
|
|
17
|
+
subcommand?: string;
|
|
18
|
+
inRef?: string;
|
|
19
|
+
outRef?: string;
|
|
20
|
+
errRef?: string;
|
|
21
|
+
input?: string;
|
|
22
|
+
extra?: Record<string, unknown>;
|
|
23
|
+
[key: string]: unknown;
|
|
24
|
+
}
|
|
25
|
+
type InProcessBoardWorkerInvokeResult = unknown;
|
|
26
|
+
type InProcessBoardWorkerInvokeHandler = (request: InProcessBoardWorkerInvokeRequest) => InProcessBoardWorkerInvokeResult | Promise<InProcessBoardWorkerInvokeResult>;
|
|
27
|
+
declare function registerInProcessBoardWorkerInvoke(key: string, handler: InProcessBoardWorkerInvokeHandler): void;
|
|
28
|
+
declare function unregisterInProcessBoardWorkerInvoke(key: string): void;
|
|
29
|
+
|
|
16
30
|
/**
|
|
17
31
|
* board-worker-adapter.ts
|
|
18
32
|
*
|
|
@@ -87,11 +101,56 @@ interface ExecutionRef {
|
|
|
87
101
|
meta?: string;
|
|
88
102
|
/** Transport / runtime kind. */
|
|
89
103
|
howToRun: 'local-node' | 'local-python' | 'local-process' | 'http:post' | 'http:get' | 'built-in' | 'in-process-loop';
|
|
90
|
-
/** Address of the target in b64:<base64url(json)> wire form. */
|
|
91
|
-
whatToRun: string;
|
|
104
|
+
/** Address of the target in b64:<base64url(json)> wire form or plain object ref form. */
|
|
105
|
+
whatToRun: string | KindValueRef;
|
|
106
|
+
/** Optional JSONata-based mapping from logical args to transport shape. */
|
|
107
|
+
argsMassaging?: ArgsMassaging;
|
|
108
|
+
/** Optional raw-result transforms expected by step-machine-public. */
|
|
109
|
+
outputTransforms?: OutputTransforms;
|
|
92
110
|
/** Opaque executor config stored with the ref. */
|
|
93
111
|
extra?: Record<string, unknown>;
|
|
94
112
|
}
|
|
113
|
+
interface LocalNodeExecutionRef extends ExecutionRef {
|
|
114
|
+
howToRun: 'local-node' | 'local-process';
|
|
115
|
+
}
|
|
116
|
+
interface ArgsMassaging {
|
|
117
|
+
cmdTemplate?: string[];
|
|
118
|
+
stdinTemplate?: string;
|
|
119
|
+
urlTemplate?: string;
|
|
120
|
+
headerTemplate?: string;
|
|
121
|
+
bodyTemplate?: string;
|
|
122
|
+
}
|
|
123
|
+
interface OutputTransforms {
|
|
124
|
+
resultExpr?: string;
|
|
125
|
+
dataTemplate?: string;
|
|
126
|
+
errorExpr?: string;
|
|
127
|
+
}
|
|
128
|
+
interface NormalizedHandlerResult {
|
|
129
|
+
result: string;
|
|
130
|
+
data: Record<string, unknown>;
|
|
131
|
+
error?: string;
|
|
132
|
+
}
|
|
133
|
+
interface StepMachineInvokeOptions {
|
|
134
|
+
timeoutMs?: number;
|
|
135
|
+
label?: string;
|
|
136
|
+
}
|
|
137
|
+
interface BoardWorkerInvokeRequest {
|
|
138
|
+
subcommand?: string;
|
|
139
|
+
inRef?: string;
|
|
140
|
+
outRef?: string;
|
|
141
|
+
errRef?: string;
|
|
142
|
+
input?: string;
|
|
143
|
+
extra?: Record<string, unknown>;
|
|
144
|
+
[key: string]: unknown;
|
|
145
|
+
}
|
|
146
|
+
type BoardWorkerInvokeResult = unknown;
|
|
147
|
+
interface ImmediateBoardWorkerRequest {
|
|
148
|
+
subcommand: string;
|
|
149
|
+
input?: string;
|
|
150
|
+
timeoutMs?: number;
|
|
151
|
+
extra?: Record<string, unknown>;
|
|
152
|
+
}
|
|
153
|
+
type ImmediateBoardWorkerHandler = (request: ImmediateBoardWorkerRequest) => unknown | Promise<unknown>;
|
|
95
154
|
type BoardWorkerCallbackOutcome = 'success' | 'failure';
|
|
96
155
|
/**
|
|
97
156
|
* Describes how the board wants to receive task completion callbacks.
|
|
@@ -104,6 +163,12 @@ interface TaskCallback {
|
|
|
104
163
|
/** Delivery mechanism — an ExecutionRef pointing at the board CLI or endpoint. */
|
|
105
164
|
via: ExecutionRef;
|
|
106
165
|
}
|
|
166
|
+
declare function invokeBoardWorker(via: ExecutionRef, request: BoardWorkerInvokeRequest): Promise<BoardWorkerInvokeResult>;
|
|
167
|
+
declare function invokeBoardWorkerSync(via: ExecutionRef, request: BoardWorkerInvokeRequest): BoardWorkerInvokeResult;
|
|
168
|
+
declare function invokeStepMachineExecutionRef(via: ExecutionRef, args: Record<string, unknown>, options?: StepMachineInvokeOptions): Promise<NormalizedHandlerResult>;
|
|
169
|
+
declare function createImmediateBoardWorkerRef(scriptPath: string, extra?: Record<string, unknown>): LocalNodeExecutionRef;
|
|
170
|
+
declare function loadImmediateBoardWorkerHandler(scriptPath: string): Promise<ImmediateBoardWorkerHandler>;
|
|
171
|
+
declare function createImmediateBoardWorkerHook(execute: ImmediateBoardWorkerHandler, defaultExtra?: Record<string, unknown>): ImmediateBoardWorkerHandler;
|
|
107
172
|
/**
|
|
108
173
|
* Report successful task completion back to the board.
|
|
109
174
|
* Call this from a task-executor after writing the result to outRef.
|
|
@@ -115,4 +180,4 @@ declare function reportComplete(callback: TaskCallback, outRef: KindValueRef): v
|
|
|
115
180
|
*/
|
|
116
181
|
declare function reportFailed(callback: TaskCallback, reason: string): void;
|
|
117
182
|
|
|
118
|
-
export { type BlobStorage, type BoardWorkerCallbackOutcome, type ExecutionRef, type InProcessBoardWorkerCallbackHandler, type InProcessBoardWorkerCallbackPayload, type InProcessBoardWorkerCallbackResult, type KindValueRef, type TaskCallback, blobStorageForRef, parseRef, registerInProcessBoardWorkerCallback, reportComplete, reportFailed, serializeRef, unregisterInProcessBoardWorkerCallback };
|
|
183
|
+
export { type ArgsMassaging, type BlobStorage, type BoardWorkerCallbackOutcome, type BoardWorkerInvokeRequest, type BoardWorkerInvokeResult, type ExecutionRef, type ImmediateBoardWorkerHandler, type ImmediateBoardWorkerRequest, type InProcessBoardWorkerCallbackHandler, type InProcessBoardWorkerCallbackPayload, type InProcessBoardWorkerCallbackResult, type InProcessBoardWorkerInvokeHandler, type InProcessBoardWorkerInvokeRequest, type InProcessBoardWorkerInvokeResult, type KindValueRef, type LocalNodeExecutionRef, type NormalizedHandlerResult, type OutputTransforms, type StepMachineInvokeOptions, type TaskCallback, blobStorageForRef, createImmediateBoardWorkerHook, createImmediateBoardWorkerRef, invokeBoardWorker, invokeBoardWorkerSync, invokeStepMachineExecutionRef, loadImmediateBoardWorkerHandler, parseRef, registerInProcessBoardWorkerCallback, registerInProcessBoardWorkerInvoke, reportComplete, reportFailed, serializeRef, unregisterInProcessBoardWorkerCallback, unregisterInProcessBoardWorkerInvoke };
|
|
@@ -1,25 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
const rawUrl = ${JSON.stringify(r)};
|
|
3
|
-
const rawBody = ${JSON.stringify(e)};
|
|
4
|
-
const u = new URL(rawUrl);
|
|
5
|
-
const {request} = require(u.protocol === 'https:' ? 'https' : 'http');
|
|
6
|
-
const h = { 'Content-Type': 'application/json', 'Content-Length': Buffer.byteLength(rawBody) };
|
|
7
|
-
const req = request({hostname:u.hostname,port:u.port,path:u.pathname+u.search,method:'POST',headers:h}, (res) => {
|
|
8
|
-
let responseBody = '';
|
|
9
|
-
res.setEncoding('utf8');
|
|
10
|
-
res.on('data', chunk => { responseBody += chunk; });
|
|
11
|
-
res.on('end', () => {
|
|
12
|
-
const code = res.statusCode || 500;
|
|
13
|
-
if (code < 200 || code >= 300) {
|
|
14
|
-
const msg = responseBody.trim() || res.statusMessage || ('HTTP ' + code);
|
|
15
|
-
process.stderr.write(msg);
|
|
16
|
-
process.exit(1);
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
-
});
|
|
20
|
-
req.on('error', e => { process.stderr.write(e.message); process.exit(1); });
|
|
21
|
-
req.write(rawBody);
|
|
22
|
-
req.end();
|
|
23
|
-
`,o=spawnSync(process.execPath,["-e",t],{encoding:"utf-8",windowsHide:true});if(o.status!==0)throw new Error(`http-post failed: ${o.stderr?.trim()}`)}var S=createRequire(import.meta.url);function b(r,e,t){x(r,["source-data-fetched","--ref",t,"--token",e],"reportComplete");}function y(r,e,t){x(r,["source-data-fetch-failure","--token",e,"--reason",t],"reportFailed");}function x(r,e,t){let o=I(r.whatToRun),{cmd:n,args:s}=T(o),i=P(r),u=spawnSync(n,[...s,...e,...i?["--notify-channel",i]:[]],{encoding:"utf-8",windowsHide:true});if(u.status!==0)throw new Error(`${t}: board CLI exited ${u.status}: ${u.stderr?.trim()}`)}function I(r){let e=E(r);if(e.kind==="yaml-flow-cli"){let t=a.basename(e.value.trim());if(!t)throw new Error(`Invalid yaml-flow-cli ref: expected non-empty cli file name, got ${JSON.stringify(e.value)}`);let o=a.dirname(S.resolve("yaml-flow/package.json")),n=t.replace(/\.[^.]+$/,""),s=a.join(o,"cli","bundled",`${n}.mjs`);if(l.existsSync(s))return s;let i=a.join(o,"cli","node",t);if(l.existsSync(i))return i;throw new Error(`Invalid yaml-flow-cli ref: could not find ${t} under cli/bundled or cli/node in ${o}`)}return e.value}function P(r){let e=r.extra?.notifyChannel;return typeof e=="string"&&e.length>0?e:void 0}function T(r){if(!r.endsWith(".ts"))return {cmd:process.execPath,args:[r]};let e=a.dirname(r),t=[];for(let n=1;n<=5;n++){let s=a.join(e,...Array(n).fill(".."),"node_modules");t.push(a.join(s,"tsx","dist","cli.mjs")),t.push(a.join(s,".bin","tsx"));}let o=t.find(n=>l.existsSync(n));return o?{cmd:process.execPath,args:[o,r]}:{cmd:"npx",args:["tsx",r]}}function E(r){if(!r.startsWith("b64:"))throw new Error(`Invalid ref format (expected b64:<base64url(json)>): ${r}`);let e=r.slice(4),t=e.replace(/-/g,"+").replace(/_/g,"/")+"=".repeat((4-e.length%4)%4),o;try{o=JSON.parse(Buffer.from(t,"base64").toString("utf8"));}catch{throw new Error(`Invalid ref format (malformed base64url/json): ${r}`)}if(!o||typeof o!="object")throw new Error(`Invalid ref format (expected object payload): ${r}`);let n=o;if(typeof n.kind!="string"||typeof n.value!="string")throw new Error(`Invalid ref format (payload must contain string kind/value): ${r}`);return {kind:n.kind,value:n.value}}function d(r){if(!r.startsWith("b64:"))throw new Error(`Invalid ref format (expected b64:<base64url(json)>): ${r}`);let e=r.slice(4),t=e.replace(/-/g,"+").replace(/_/g,"/")+"=".repeat((4-e.length%4)%4),o;try{o=JSON.parse(Buffer.from(t,"base64").toString("utf8"));}catch{throw new Error(`Invalid ref format (malformed base64url/json): ${r}`)}if(!o||typeof o!="object")throw new Error(`Invalid ref format (expected object payload): ${r}`);let n=o;if(typeof n.kind!="string"||typeof n.value!="string")throw new Error(`Invalid ref format (payload must contain string kind/value): ${r}`);return {kind:n.kind,value:n.value}}function k(r){return `b64:${Buffer.from(JSON.stringify(r),"utf8").toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}`}function N(){return {read(r){if(!l__default.existsSync(r))return null;try{return l__default.readFileSync(r,"utf-8")}catch{return null}},write(r,e){l__default.mkdirSync(a__default.dirname(r),{recursive:true}),l__default.writeFileSync(r,e,"utf-8");}}}function _(r){if(r.kind==="fs-path")return N();throw new Error(`Unsupported storage kind: "${r.kind}". Supported kinds: fs-path`)}function M(r,e){let{token:t,via:o}=r;if(o.howToRun==="local-node"||o.howToRun==="local-process"){b(o,t,k(e));return}if(o.howToRun==="http:post"){g(d(o.whatToRun).value,t,k(e));return}if(o.howToRun==="in-process-loop"){f({token:t,outcome:"success",ref:k(e)},d(o.whatToRun).value);return}throw new Error(`reportComplete: unsupported via.howToRun "${o.howToRun}"`)}function A(r,e){let{token:t,via:o}=r;if(o.howToRun==="local-node"||o.howToRun==="local-process"){y(o,t,e);return}if(o.howToRun==="http:post"){h(d(o.whatToRun).value,t,e);return}if(o.howToRun==="in-process-loop"){f({token:t,outcome:"failure",reason:e},d(o.whatToRun).value);return}throw new Error(`reportFailed: unsupported via.howToRun "${o.howToRun}"`)}
|
|
24
|
-
export{_ as blobStorageForRef,d as parseRef,v as registerInProcessBoardWorkerCallback,M as reportComplete,A as reportFailed,k as serializeRef,B as unregisterInProcessBoardWorkerCallback};//# sourceMappingURL=board-worker-adapter.js.map
|
|
1
|
+
export{g as blobStorageForRef,m as createImmediateBoardWorkerHook,k as createImmediateBoardWorkerRef,h as invokeBoardWorker,i as invokeBoardWorkerSync,j as invokeStepMachineExecutionRef,l as loadImmediateBoardWorkerHandler,e as parseRef,a as registerInProcessBoardWorkerCallback,c as registerInProcessBoardWorkerInvoke,n as reportComplete,o as reportFailed,f as serializeRef,b as unregisterInProcessBoardWorkerCallback,d as unregisterInProcessBoardWorkerInvoke}from'./chunk-J4MHQ7JF.js';import'./chunk-FW4363Y4.js';//# sourceMappingURL=board-worker-adapter.js.map
|
|
25
2
|
//# sourceMappingURL=board-worker-adapter.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { C as CommandInput, a as CommandResult, L as LiveCard, b as CardAdminStore } from './board-live-cards-public-
|
|
2
|
-
import './storage-interface-
|
|
1
|
+
import { C as CommandInput, a as CommandResult, L as LiveCard, b as CardAdminStore } from './board-live-cards-public-BT5HrgqZ.cjs';
|
|
2
|
+
import './storage-interface-D-iEiTJA.cjs';
|
|
3
3
|
import './execution-refs.cjs';
|
|
4
4
|
import './types-BBhqYGhE.cjs';
|
|
5
5
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { C as CommandInput, a as CommandResult, L as LiveCard, b as CardAdminStore } from './board-live-cards-public-
|
|
2
|
-
import './storage-interface-
|
|
1
|
+
import { C as CommandInput, a as CommandResult, L as LiveCard, b as CardAdminStore } from './board-live-cards-public-DSRamFm8.js';
|
|
2
|
+
import './storage-interface-D-iEiTJA.js';
|
|
3
3
|
import './execution-refs.js';
|
|
4
4
|
import './types-BBhqYGhE.js';
|
|
5
5
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var
|
|
1
|
+
'use strict';var chunkUB54HZA4_cjs=require('./chunk-UB54HZA4.cjs');require('./chunk-GNFE24S7.cjs');Object.defineProperty(exports,"createChatStorePublic",{enumerable:true,get:function(){return chunkUB54HZA4_cjs.a}});//# sourceMappingURL=chat-store-public.cjs.map
|
|
2
2
|
//# sourceMappingURL=chat-store-public.cjs.map
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { C as CommandInput, a as CommandResult } from './board-live-cards-public-
|
|
2
|
-
import
|
|
3
|
-
import './storage-interface-BFiD3kyB.cjs';
|
|
1
|
+
import { C as CommandInput, a as CommandResult, g as ChatRecord, h as ChatReadAfterResult, i as ChatConfig, f as ChatStorage } from './board-live-cards-public-BT5HrgqZ.cjs';
|
|
2
|
+
import './storage-interface-D-iEiTJA.cjs';
|
|
4
3
|
import './execution-refs.cjs';
|
|
5
4
|
import './types-BBhqYGhE.cjs';
|
|
6
5
|
|
|
@@ -29,6 +28,7 @@ import './types-BBhqYGhE.cjs';
|
|
|
29
28
|
* const result = store.setConfig({ params: { cardId: 'c1' }, body: { systemPrompt: '...' } });
|
|
30
29
|
*/
|
|
31
30
|
|
|
31
|
+
type Awaitable<T> = T | Promise<T>;
|
|
32
32
|
type ChatStoreCommandName = 'append' | 'read-all' | 'read-after' | 'clear' | 'set-processing' | 'is-processing' | 'get-config' | 'set-config';
|
|
33
33
|
type ChatStoreCommandEnvelope = {
|
|
34
34
|
command: ChatStoreCommandName;
|
|
@@ -65,71 +65,71 @@ interface ChatStorePublic {
|
|
|
65
65
|
* body.text: string
|
|
66
66
|
* body.files?: unknown[]
|
|
67
67
|
*/
|
|
68
|
-
append(input: CommandInput): CommandResult<{
|
|
68
|
+
append(input: CommandInput): Awaitable<CommandResult<{
|
|
69
69
|
id: string;
|
|
70
|
-
}
|
|
70
|
+
}>>;
|
|
71
71
|
/**
|
|
72
72
|
* Read all messages for a card in insertion order.
|
|
73
73
|
* params.cardId: string
|
|
74
74
|
* body.lastUserTurns?: positive integer
|
|
75
75
|
*/
|
|
76
|
-
readAll(input: CommandInput): CommandResult<{
|
|
76
|
+
readAll(input: CommandInput): Awaitable<CommandResult<{
|
|
77
77
|
records: ChatRecord[];
|
|
78
|
-
}
|
|
78
|
+
}>>;
|
|
79
79
|
/**
|
|
80
80
|
* Read messages appended after a cursor.
|
|
81
81
|
* params.cardId: string
|
|
82
82
|
* params.cursor?: string | null (omit or null to read from the beginning)
|
|
83
83
|
*/
|
|
84
|
-
readAfter(input: CommandInput): CommandResult<ChatReadAfterResult
|
|
84
|
+
readAfter(input: CommandInput): Awaitable<CommandResult<ChatReadAfterResult>>;
|
|
85
85
|
/**
|
|
86
86
|
* Remove all messages for a card.
|
|
87
87
|
* params.cardId: string
|
|
88
88
|
*/
|
|
89
|
-
clear(input: CommandInput): CommandResult<{
|
|
89
|
+
clear(input: CommandInput): Awaitable<CommandResult<{
|
|
90
90
|
ok: true;
|
|
91
|
-
}
|
|
91
|
+
}>>;
|
|
92
92
|
/**
|
|
93
93
|
* Set or clear the processing flag for a card.
|
|
94
94
|
* params.cardId: string
|
|
95
95
|
* body.active: boolean
|
|
96
96
|
*/
|
|
97
|
-
setProcessing(input: CommandInput): CommandResult<{
|
|
97
|
+
setProcessing(input: CommandInput): Awaitable<CommandResult<{
|
|
98
98
|
ok: true;
|
|
99
|
-
}
|
|
99
|
+
}>>;
|
|
100
100
|
/**
|
|
101
101
|
* Check whether a card is currently processing.
|
|
102
102
|
* params.cardId: string
|
|
103
103
|
*/
|
|
104
|
-
isProcessing(input: CommandInput): CommandResult<{
|
|
104
|
+
isProcessing(input: CommandInput): Awaitable<CommandResult<{
|
|
105
105
|
active: boolean;
|
|
106
|
-
}
|
|
106
|
+
}>>;
|
|
107
107
|
/**
|
|
108
108
|
* Read the chat config for a card.
|
|
109
109
|
* params.cardId: string
|
|
110
110
|
*/
|
|
111
|
-
getConfig(input: CommandInput): CommandResult<{
|
|
111
|
+
getConfig(input: CommandInput): Awaitable<CommandResult<{
|
|
112
112
|
config: ChatConfig;
|
|
113
|
-
}
|
|
113
|
+
}>>;
|
|
114
114
|
/**
|
|
115
115
|
* Patch (merge) the chat config for a card.
|
|
116
116
|
* params.cardId: string
|
|
117
117
|
* body: Partial<ChatConfig> e.g. { systemPrompt: '...' }
|
|
118
118
|
*/
|
|
119
|
-
setConfig(input: CommandInput): CommandResult<{
|
|
119
|
+
setConfig(input: CommandInput): Awaitable<CommandResult<{
|
|
120
120
|
ok: true;
|
|
121
|
-
}
|
|
121
|
+
}>>;
|
|
122
122
|
/**
|
|
123
123
|
* Run a single command envelope against this store instance.
|
|
124
124
|
* The store is already bound to a backing adapter, so boardDir is not part
|
|
125
125
|
* of the public contract here.
|
|
126
126
|
*/
|
|
127
|
-
run(envelope: ChatStoreCommandEnvelope, label?: string): CommandResult<unknown
|
|
127
|
+
run(envelope: ChatStoreCommandEnvelope, label?: string): Awaitable<CommandResult<unknown>>;
|
|
128
128
|
/**
|
|
129
129
|
* Run a sequence of command envelopes with optional top-level cardId default.
|
|
130
130
|
* Stops on first non-success result and returns that failure/error.
|
|
131
131
|
*/
|
|
132
|
-
runBatch(envelope: ChatStoreCommandBatchEnvelope): CommandResult<ChatStoreBatchResult
|
|
132
|
+
runBatch(envelope: ChatStoreCommandBatchEnvelope): Awaitable<CommandResult<ChatStoreBatchResult>>;
|
|
133
133
|
}
|
|
134
134
|
declare function createChatStorePublic(store: ChatStorage): ChatStorePublic;
|
|
135
135
|
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { C as CommandInput, a as CommandResult } from './board-live-cards-public-
|
|
2
|
-
import
|
|
3
|
-
import './storage-interface-BFiD3kyB.js';
|
|
1
|
+
import { C as CommandInput, a as CommandResult, g as ChatRecord, h as ChatReadAfterResult, i as ChatConfig, f as ChatStorage } from './board-live-cards-public-DSRamFm8.js';
|
|
2
|
+
import './storage-interface-D-iEiTJA.js';
|
|
4
3
|
import './execution-refs.js';
|
|
5
4
|
import './types-BBhqYGhE.js';
|
|
6
5
|
|
|
@@ -29,6 +28,7 @@ import './types-BBhqYGhE.js';
|
|
|
29
28
|
* const result = store.setConfig({ params: { cardId: 'c1' }, body: { systemPrompt: '...' } });
|
|
30
29
|
*/
|
|
31
30
|
|
|
31
|
+
type Awaitable<T> = T | Promise<T>;
|
|
32
32
|
type ChatStoreCommandName = 'append' | 'read-all' | 'read-after' | 'clear' | 'set-processing' | 'is-processing' | 'get-config' | 'set-config';
|
|
33
33
|
type ChatStoreCommandEnvelope = {
|
|
34
34
|
command: ChatStoreCommandName;
|
|
@@ -65,71 +65,71 @@ interface ChatStorePublic {
|
|
|
65
65
|
* body.text: string
|
|
66
66
|
* body.files?: unknown[]
|
|
67
67
|
*/
|
|
68
|
-
append(input: CommandInput): CommandResult<{
|
|
68
|
+
append(input: CommandInput): Awaitable<CommandResult<{
|
|
69
69
|
id: string;
|
|
70
|
-
}
|
|
70
|
+
}>>;
|
|
71
71
|
/**
|
|
72
72
|
* Read all messages for a card in insertion order.
|
|
73
73
|
* params.cardId: string
|
|
74
74
|
* body.lastUserTurns?: positive integer
|
|
75
75
|
*/
|
|
76
|
-
readAll(input: CommandInput): CommandResult<{
|
|
76
|
+
readAll(input: CommandInput): Awaitable<CommandResult<{
|
|
77
77
|
records: ChatRecord[];
|
|
78
|
-
}
|
|
78
|
+
}>>;
|
|
79
79
|
/**
|
|
80
80
|
* Read messages appended after a cursor.
|
|
81
81
|
* params.cardId: string
|
|
82
82
|
* params.cursor?: string | null (omit or null to read from the beginning)
|
|
83
83
|
*/
|
|
84
|
-
readAfter(input: CommandInput): CommandResult<ChatReadAfterResult
|
|
84
|
+
readAfter(input: CommandInput): Awaitable<CommandResult<ChatReadAfterResult>>;
|
|
85
85
|
/**
|
|
86
86
|
* Remove all messages for a card.
|
|
87
87
|
* params.cardId: string
|
|
88
88
|
*/
|
|
89
|
-
clear(input: CommandInput): CommandResult<{
|
|
89
|
+
clear(input: CommandInput): Awaitable<CommandResult<{
|
|
90
90
|
ok: true;
|
|
91
|
-
}
|
|
91
|
+
}>>;
|
|
92
92
|
/**
|
|
93
93
|
* Set or clear the processing flag for a card.
|
|
94
94
|
* params.cardId: string
|
|
95
95
|
* body.active: boolean
|
|
96
96
|
*/
|
|
97
|
-
setProcessing(input: CommandInput): CommandResult<{
|
|
97
|
+
setProcessing(input: CommandInput): Awaitable<CommandResult<{
|
|
98
98
|
ok: true;
|
|
99
|
-
}
|
|
99
|
+
}>>;
|
|
100
100
|
/**
|
|
101
101
|
* Check whether a card is currently processing.
|
|
102
102
|
* params.cardId: string
|
|
103
103
|
*/
|
|
104
|
-
isProcessing(input: CommandInput): CommandResult<{
|
|
104
|
+
isProcessing(input: CommandInput): Awaitable<CommandResult<{
|
|
105
105
|
active: boolean;
|
|
106
|
-
}
|
|
106
|
+
}>>;
|
|
107
107
|
/**
|
|
108
108
|
* Read the chat config for a card.
|
|
109
109
|
* params.cardId: string
|
|
110
110
|
*/
|
|
111
|
-
getConfig(input: CommandInput): CommandResult<{
|
|
111
|
+
getConfig(input: CommandInput): Awaitable<CommandResult<{
|
|
112
112
|
config: ChatConfig;
|
|
113
|
-
}
|
|
113
|
+
}>>;
|
|
114
114
|
/**
|
|
115
115
|
* Patch (merge) the chat config for a card.
|
|
116
116
|
* params.cardId: string
|
|
117
117
|
* body: Partial<ChatConfig> e.g. { systemPrompt: '...' }
|
|
118
118
|
*/
|
|
119
|
-
setConfig(input: CommandInput): CommandResult<{
|
|
119
|
+
setConfig(input: CommandInput): Awaitable<CommandResult<{
|
|
120
120
|
ok: true;
|
|
121
|
-
}
|
|
121
|
+
}>>;
|
|
122
122
|
/**
|
|
123
123
|
* Run a single command envelope against this store instance.
|
|
124
124
|
* The store is already bound to a backing adapter, so boardDir is not part
|
|
125
125
|
* of the public contract here.
|
|
126
126
|
*/
|
|
127
|
-
run(envelope: ChatStoreCommandEnvelope, label?: string): CommandResult<unknown
|
|
127
|
+
run(envelope: ChatStoreCommandEnvelope, label?: string): Awaitable<CommandResult<unknown>>;
|
|
128
128
|
/**
|
|
129
129
|
* Run a sequence of command envelopes with optional top-level cardId default.
|
|
130
130
|
* Stops on first non-success result and returns that failure/error.
|
|
131
131
|
*/
|
|
132
|
-
runBatch(envelope: ChatStoreCommandBatchEnvelope): CommandResult<ChatStoreBatchResult
|
|
132
|
+
runBatch(envelope: ChatStoreCommandBatchEnvelope): Awaitable<CommandResult<ChatStoreBatchResult>>;
|
|
133
133
|
}
|
|
134
134
|
declare function createChatStorePublic(store: ChatStorage): ChatStorePublic;
|
|
135
135
|
|
package/lib/chat-store-public.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export{a as createChatStorePublic}from'./chunk-
|
|
1
|
+
export{a as createChatStorePublic}from'./chunk-Q3OTUDIE.js';import'./chunk-FW4363Y4.js';//# sourceMappingURL=chat-store-public.js.map
|
|
2
2
|
//# sourceMappingURL=chat-store-public.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import {c}from'./chunk-FOFGEABN.js';function D(h){let o=new Map,a=new Map,d=new Map,k=0,b=null;function m(e){let t=JSON.stringify(e);return k++,`id: ${k}
|
|
2
|
+
data: ${t}
|
|
3
|
+
|
|
4
|
+
`}function y(e){let t=e;try{t.flushHeaders?.();}catch{}try{t.flush?.();}catch{}try{t.socket?.setNoDelay?.(!0);}catch{}try{t.socket?.uncork?.();}catch{}}function I(e,t){let n=o.get(e);if(n&&!(t&&n.res!==t)){o.delete(e),C();try{h.onSseClientDisconnected?.(e);}catch{}try{n.res.end();}catch{}}}function P(e,t,n){let s=o.get(e);s&&I(e,s.res),o.set(e,{res:t,subscribedChatCardIds:n??new Set});}function f(e,t){let n=o.get(e);if(!n)return;let s=m(t);try{n.res.write(s),y(n.res);}catch{I(e,n.res);}}function c(){let e=new Set;for(let t of o.values())for(let n of t.subscribedChatCardIds)e.add(n);return Array.from(e)}async function l(e){let t=a.has(e)?a.get(e):null,{cursor:n}=await h.readChatAfter(e,t),s=await h.getChatProcessing(e),r=s!==(d.get(e)??false),w=n!==t;return w&&a.set(e,n),d.set(e,s),w||r}async function u(e,t){let n=await h.readChatRecords(e),s=Date.now();return {kind:"card_chats",cardId:e,sentAt:new Date(s).toISOString(),sentAtMs:s,messages:n.map(r=>({role:String(r.role||"system"),text:String(r.text||""),files:Array.isArray(r.files)?r.files:[]})),receiving:t,processing:await h.getChatProcessing(e)}}async function i(e,t=true){let n={kind:"notification-batch",notifications:[await u(e,t)]};for(let[s,r]of o.entries())r.subscribedChatCardIds.has(e)&&f(s,n);}function C(){c().length>0||(b&&(clearInterval(b),b=null),a.clear(),d.clear());}function p(){if(b)return;let e=async()=>{let t=c();if(t.length===0){C();return}let n=new Set(t);for(let s of Array.from(a.keys()))n.has(s)||a.delete(s);for(let s of Array.from(d.keys()))n.has(s)||d.delete(s);for(let s of t)await l(s)&&await i(s,true);};e(),b=setInterval(()=>{e();},1e3);}async function v(e,t){let n=o.get(e);if(!n)return false;n.subscribedChatCardIds.add(t);let{cursor:s}=await h.readChatAfter(t,null);return a.set(t,s),d.set(t,await h.getChatProcessing(t)),p(),f(e,{kind:"notification-batch",notifications:[await u(t,true)]}),true}function R(e,t){let n=o.get(e);return n?(n.subscribedChatCardIds.delete(t),c().includes(t)||(a.delete(t),d.delete(t)),C(),true):false}function g(e){if(!e||typeof e!="object")return false;let t=e.kind;return t==="card_chats"||t==="chat_messages"}function S(e){if(!e||e.length===0)return;let t=[],n=new Set;for(let s of e)g(s)&&typeof s.cardId=="string"?n.add(String(s.cardId)):t.push(s);if(t.length>0){let s={kind:"notification-batch",notifications:t};for(let r of o.keys())f(r,s);}for(let s of n)i(s,true);}return {size:()=>o.size,has:e=>o.has(e),get:e=>o.get(e),buildFrame:m,flushTransport:y,register:P,disconnect:I,writeFrame:f,subscribeChat:v,unsubscribeChat:R,broadcastNotificationBatch:S,broadcastCardChats:i}}function A(h){let{sseHub:o,corsHeaders:a,json:d,buildPublishedRuntimePayload:k,onSseClientConnected:b,onChannelSubscribed:m,onChannelUnsubscribed:y}=h;function I(f,c,l,u,i){if(!o.has(c)){d(f,404,{error:`SSE client not connected: ${c}`});return}i?m?.(c,l,u):y?.(c,l,u),d(f,200,{ok:true,clientId:c,channelName:l,...u.cardId?{cardId:u.cardId}:{},subscribed:i});}async function P(f,c,l,u){let i=u?.oneShot===true,C=!i&&l?o.get(l):null,p=C?new Set(C.subscribedChatCardIds):new Set;c.writeHead(200,{...a,"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}),o.flushTransport(c);let v=await k(),R=o.buildFrame(v);if(c.write(R),i){c.end();return}if(!l)throw new Error("clientId is required for streaming SSE");o.register(l,c,p);try{b?.(l,S=>{o.writeFrame(l,S);});}catch{}let g=setInterval(()=>{try{c.write(`: keepalive
|
|
5
|
+
|
|
6
|
+
`);}catch{}},15e3);f.on("close",()=>{clearInterval(g),o.disconnect(l,c);});}return {handleChannelSubscription:I,handleSse:P}}function T(h){let{apiBasePath:o,json:a,readJsonBody:d,initBoardAndSetup:k,bootstrapBoard:b,boardContexts:m,publishPersistedStateSnapshot:y,upsertCardsFromSource:I,sseHub:P}=h,{handleSse:f,handleChannelSubscription:c$1}=A(h);async function l(u,i,C){let p=u.method||"GET",v=C,R=v.pathname;try{if(p==="GET"&&R===`${o}/sse`){let n=v.searchParams.has("one-shot");await k();let s=String(v.searchParams.get("clientId")||"").trim();if(!n&&!s)return a(i,400,{error:"clientId query param is required for SSE"}),!0;if(await f(u,i,s||void 0,{oneShot:n}),n)return !0;for(let r=0;r<m.length;r++)await y(m[r]),await I(m[r],r),await y(m[r]);return !0}let g=R.match(new RegExp(`^${c(o)}/cards/([^/]+)/chats/subscribe-sse$`));if(p==="POST"&&g){await b();let n=decodeURIComponent(g[1]),s=await d(u),r=typeof s?.clientId=="string"?s.clientId.trim():"";return r?await P.subscribeChat(r,n)?(a(i,200,{ok:!0,clientId:r,cardId:n,subscribed:!0}),!0):(a(i,404,{error:`SSE client not connected: ${r}`}),!0):(a(i,400,{error:"clientId is required"}),!0)}let S=R.match(new RegExp(`^${c(o)}/cards/([^/]+)/chats/unsubscribe-sse$`));if(p==="POST"&&S){await b();let n=decodeURIComponent(S[1]),s=await d(u),r=typeof s?.clientId=="string"?s.clientId.trim():"";return r?P.unsubscribeChat(r,n)?(a(i,200,{ok:!0,clientId:r,cardId:n,subscribed:!1}),!0):(a(i,404,{error:`SSE client not connected: ${r}`}),!0):(a(i,400,{error:"clientId is required"}),!0)}let e=R.match(new RegExp(`^${c(o)}/watch-channel/([^/]+)/(subscribe|unsubscribe)-sse$`));if(p==="POST"&&e){await b();let n=decodeURIComponent(e[1]),s=e[2]==="subscribe",r=await d(u),w=typeof r?.clientId=="string"?r.clientId.trim():"";return w?(c$1(i,w,n,{},s),!0):(a(i,400,{error:"clientId is required"}),!0)}let t=R.match(new RegExp(`^${c(o)}/cards/([^/]+)/watch-channel/([^/]+)/(subscribe|unsubscribe)-sse$`));if(p==="POST"&&t){await b();let n=decodeURIComponent(t[1]),s=decodeURIComponent(t[2]),r=t[3]==="subscribe",w=await d(u),H=typeof w?.clientId=="string"?w.clientId.trim():"";return H?(c$1(i,H,s,{cardId:n},r),!0):(a(i,400,{error:"clientId is required"}),!0)}return !1}catch(g){let S=g?.statusCode||500;return a(i,S,{error:String(g?.message||g)}),true}}return {handleWatchersRoutes:l,handleSse:f,handleChannelSubscription:c$1}}export{D as a,T as b};//# sourceMappingURL=chunk-2GSI6C45.js.map
|
|
7
|
+
//# sourceMappingURL=chunk-2GSI6C45.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a as a$1}from'./chunk-JMDHDY6M.js';function v(s,i){if(s?.status==="success")return Object.prototype.hasOwnProperty.call(s,"data")?s.data:void 0;throw s?.status==="fail"||s?.status==="error"?new Error(s.error||`${i} failed`):new Error(`${i} returned an unexpected response`)}function H(s,i){if(s?.status==="success"&&Object.prototype.hasOwnProperty.call(s,"data"))return s.data;throw s?.status==="success"?new Error(`${i} returned success without data`):s?.status==="fail"||s?.status==="error"?new Error(s.error||`${i} failed`):new Error(`${i} returned an unexpected response`)}function a(s){return s&&typeof s=="object"&&!Array.isArray(s)?s:{}}function b(s){return Array.isArray(s)?s:[]}function z(s,i){if(typeof i!="string"||i.length===0)return;let c=s,u=i;u.startsWith("fetched_sources.")&&(c=a(s).fetched_sources,u=u.slice(16));for(let f of u.split(".")){if(c==null||typeof c!="object")return;c=c[f];}return c}function V(s,i){let c=a(s.view),u=b(c.elements);return {layout:c.layout,features:c.features,elements:u.map((f,_)=>{let I=a(f),k=a(I.data),R=typeof I.visible=="string"?!!z(i,I.visible):true,M=typeof k.bind=="string"?k.bind:void 0,P=typeof k.maxRows=="number"?k.maxRows:void 0,B=M?z(i,M):void 0,F={id:typeof I.id=="string"&&I.id?I.id:`element-${_}`,kind:I.kind,label:I.label,visible:R};return B!==void 0&&(F.resolved=Array.isArray(B)&&typeof P=="number"?B.slice(0,P):B),F})}}function G(s,i){let c=typeof s.id=="string"&&s.id?s.id:"card",u=b(s.provides),f=u.length>0?u:[{bindTo:c,ref:"card_data"}],_={};for(let I of f){let k=a(I),R=typeof k.bindTo=="string"?k.bindTo:"",M=typeof k.ref=="string"?k.ref:"";if(!R||!M)continue;let P=z(i,M);P!==void 0&&(_[R]=P);}return _}function he(s){if(typeof s!="string"||!s.trim())return null;let i=/^(file uploaded|AI generated|AI geneterated):\s*.*?#(\d+)\s*$/i.exec(s.trim());if(!i)return null;let c=Number.parseInt(i[2],10);return !Number.isInteger(c)||c<0?null:c}function ke(s){return {"card-content":s}}function E(s){let i={...s};return delete i.__private,i}function D(s,i){return Object.prototype.hasOwnProperty.call(s,i)}function Re(s){return typeof structuredClone=="function"?structuredClone(s):JSON.parse(JSON.stringify(s))}function ve(s,i){let c=Re(s);if(!i||Object.keys(i).length===0)return c;function u(f,_,I){let k=String(_||"").split(".").filter(Boolean);if(!k.length)return;let R=f;for(let M=0;M<k.length-1;M+=1){let P=k[M];(!R[P]||typeof R[P]!="object")&&(R[P]={}),R=R[P];}R[k[k.length-1]]=I;}if(i.fieldValues!==void 0&&i.fieldValues!==null){let f=null,_=a(c.view),I=b(_.elements);for(let k of I){let R=a(a(k).data);if(typeof R.writeTo=="string"&&R.writeTo){f=R.writeTo;break}}return f?u(c,f,i.fieldValues):typeof i.fieldValues=="object"&&!Array.isArray(i.fieldValues)&&(c.card_data={...a(c.card_data),...i.fieldValues}),c}if(Array.isArray(i._stagedFiles)&&i._stagedFiles.length>0)return c;for(let[f,_]of Object.entries(i))f!=="_stagedFiles"&&(_!==null&&typeof _=="object"&&!Array.isArray(_)&&c[f]!==null&&typeof c[f]=="object"&&!Array.isArray(c[f])?c[f]={...c[f],..._}:c[f]=_);return c}function Q(s){return a(s.__private).visible_controlplane_only===true}async function T(s,i){let c=await U(s.get({params:{id:i}}),"cardStore.get"),u=Array.isArray(c?.cards)?c.cards:[];if(u.length===0)throw new Error(`Card "${i}" not found`);return u[0]}function Ae(s){let{board:i,nonCore:c,cardStore:u,chatStore:f,processAccumulated:_,sourceFetchDone:I,sourceFetchFailed:k,uploadCardFile:R,buildFileDownloadUrl:M,readFetchedSourceJsonByRef:P}=s;function B(e,r){if(typeof e=="function")return e;throw new Error(`${r} is not configured for this MCP facade`)}async function F(){let e=await U(u.get({}),"cardStore.get");return Array.isArray(e.cards)?e.cards.map(r=>a(r)):[]}function X(e){if(Array.isArray(e.bytes))return new Uint8Array(e.bytes.map(r=>Math.max(0,Math.min(255,Number(r)||0))));if(typeof e.text=="string")return new TextEncoder().encode(e.text);if(typeof e.base64=="string"){let r=String(e.base64).replace(/-/g,"+").replace(/_/g,"/"),t=r+"=".repeat((4-r.length%4)%4),n=atob(t);return Uint8Array.from(n,o=>o.charCodeAt(0))}throw new Error("file entry requires bytes, text, or base64")}async function Y(){let e=a(await U(c.describeTaskExecutorCapabilities({}),"describeTaskExecutorCapabilities"));return {version:e.version,commonSourceFields:a(e.commonSourceDefFields),sourceKinds:a(e.sourceKinds)}}async function Z(){let e=a(await U(i.status({}),"status")),r=a(e.summary),t=b(e.cards);return {meta:a(e.meta),summary:{card_count:typeof r.card_count=="number"?r.card_count:0,completed:typeof r.completed=="number"?r.completed:0,eligible:typeof r.eligible=="number"?r.eligible:0,pending:typeof r.pending=="number"?r.pending:0,blocked:typeof r.blocked=="number"?r.blocked:0,in_progress:typeof r.in_progress=="number"?r.in_progress:0,failed:typeof r.failed=="number"?r.failed:0,unresolved:typeof r.unresolved=="number"?r.unresolved:0},cards:t.map(n=>{let o=a(n);return {"card-id":typeof o.name=="string"?o.name:null,status:o.status??null,error:o.error??null,requires:b(o.requires),requires_satisfied:b(o.requires_satisfied),requires_missing:b(o.requires_missing),provides_declared:b(o.provides_declared),provides_runtime:b(o.provides_runtime)}})}}async function ee(e){let r=String(e.cardId||"").trim();if(!r)throw new Error("inspectCardDefinitionAndRuntime requires cardId");let t=a(await U(i.status({}),"status")),o=b(t.cards).map(a).find(p=>p.name===r);if(!o)throw new Error(`card "${r}" not found in board status`);let d=a(await T(u,r));if(Q(d))throw Object.assign(new Error(`card "${r}" not found`),{statusCode:404});let m=E(d),g=b(o.requires_satisfied).filter(p=>typeof p=="string"&&!!p),w=b(o.provides_runtime).filter(p=>typeof p=="string"&&!!p),h=Object.fromEntries(await Promise.all(g.map(async p=>[p,await U(i.getOutputsDataObject({params:{key:p}}),`getOutputsDataObject(${p})`)]))),A=Object.fromEntries(await Promise.all(w.map(async p=>[p,await U(i.getOutputsDataObject({params:{key:p}}),`getOutputsDataObject(${p})`)]))),C=a(await U(i.getOutputsComputedValues({params:{key:r}}),"getOutputsComputedValues")),l=await U(i.getOutputsFetchedSources({params:{key:r}}),"getOutputsFetchedSources"),S=b(d.source_defs).map(a),y={};for(let p of S)typeof p.bindTo=="string"&&typeof p.outputFile=="string"&&(y[p.outputFile]=p.bindTo);let x={};for(let[p,O]of Object.entries(l)){let q=y[p]??p;if(!P||typeof O!="string"){x[q]=null;continue}try{x[q]=P({cardId:r,ref:O});}catch{x[q]=null;}}let L={card_data:a(d.card_data),requires:h,fetched_sources:x,computed_values:C};return {cardId:r,card_status_in_board:o,card_definition_and_static_data:m,refs_for_fetched_source_files:l,runtime_data:{requires:h,provides:A,computed_values:C,rendered_view:V(d,L)}}}async function re(e){let r=String(e.cardId||"").trim();if(!r)throw new Error("inspectChatMessagesOnCards requires cardId");let t=typeof e.turnId=="string"?e.turnId:"",n=e.allTurns===true,o=typeof e.tailTurnsBeforeId=="string"?e.tailTurnsBeforeId:"",d=n?void 0:e.lastUserTurns??(t?void 0:1),m=e.tail,g={...d===void 0?{}:{tailTurns:d},...t?{turnId:t}:{},...n?{allTurns:true}:{},...o?{tailTurnsBeforeId:o}:{}},w=Object.keys(g).length>0?{params:{cardId:r},body:g}:{params:{cardId:r}},h=v(await f.readAll(w),"chatStore.readAll"),A=a(await T(u,r)),C=b(a(A.card_data).files).map((y,x)=>({idx:x,stored_name:a(y).stored_name})).filter(y=>typeof y.stored_name=="string"&&y.stored_name.length>0),S=(Array.isArray(h.records)?h.records:[]).map(y=>{let L=a(y.payload),p={...y},O=typeof y?.role=="string"?y.role:typeof L.role=="string"?String(L.role):"",q=typeof y?.text=="string"?y.text:typeof L.text=="string"?String(L.text):"";if(O==="system"){let N=he(q);if(N!==null&&C.some(j=>j.idx===N)){let j=`Retrieve using inspect-file-contents --card-id ${r} --file-idx ${N}`;p.retrieval_hint=j,Object.keys(L).length>0&&typeof y.role!="string"&&(p.payload={...L,retrieval_hint:j});}}return p});return {cardId:r,messages:typeof m=="number"&&m>=0?S.slice(-m):S}}async function te(e){let r=String(e.cardId||"").trim(),t=Number(e.fileIdx);if(!r)throw new Error("inspectFileContents requires cardId");if(!Number.isInteger(t)||t<0)throw new Error("inspectFileContents requires fileIdx to be a non-negative integer");let n=a(await T(u,r)),o=b(a(n.card_data).files).map(a);if(t>=o.length)throw new Error(`attachment index ${t} is out of range for card "${r}"`);let d=o[t],m=typeof d.stored_name=="string"?d.stored_name:null;return {cardId:r,fileIdx:t,downloadUrl:M({cardId:r,fileIdx:t,storedName:m}),...typeof d.name=="string"?{name:d.name}:{},...typeof d.stored_name=="string"?{stored_name:d.stored_name}:{},...typeof d.mime_type=="string"?{mime_type:d.mime_type}:{},...typeof d.size=="number"?{size:d.size}:{},...typeof d.uploaded_at=="string"?{uploaded_at:d.uploaded_at}:{}}}async function $(e){return await c.validateCardPreflight({body:ke(e.candidateCardContent)})}function ne(e){if(!e.mockRequires||typeof e.mockRequires!="object"||Array.isArray(e.mockRequires))throw new Error("preflightMaterializeCandidateCard requires mockRequires");if(!e.mockFetchedSources||typeof e.mockFetchedSources!="object"||Array.isArray(e.mockFetchedSources))throw new Error("preflightMaterializeCandidateCard requires mockFetchedSources");let r=c.evalCardCompute({body:{"card-content":e.candidateCardContent,"mock-requires":e.mockRequires,"mock-fetched-sources":e.mockFetchedSources}});if(r.status!=="success")return r;let t=a(H(r,"evalCardCompute")),n=a(e.candidateCardContent),o={card_data:a(n.card_data),requires:a(e.mockRequires),fetched_sources:a(e.mockFetchedSources),computed_values:a(t.computed_values)};return {status:"success",data:{cardId:typeof t.cardId=="string"?t.cardId:typeof n.id=="string"?n.id:"(unknown)",ok:t.ok===true,computed_values:a(t.computed_values),errors:b(t.errors).map(d=>{let m=a(d);return {bindTo:typeof m.bindTo=="string"?m.bindTo:"",error:typeof m.error=="string"?m.error:""}}),provides_outputs:G(n,o),rendered_view:V(n,o)}}}async function ae(e){return await c.probeSourcePreflight({params:{sourceIdx:e.sourceIdx},body:{"card-content":e.candidateCardContent,"mock-projections":e.mockProjections}})}async function oe(e){return await c.runSourcePreflight({params:{sourceIdx:e.sourceIdx},body:{"card-content":e.candidateCardContent,"mock-projections":e.mockProjections}})}async function se(e){let r=String(e.cardId||"").trim();if(!r)throw new Error("preflightRunSingleSourceInLiveCard requires cardId");if(!e.mockRequires||typeof e.mockRequires!="object"||Array.isArray(e.mockRequires))throw new Error("preflightRunSingleSourceInLiveCard requires mockRequires");let t=a(await T(u,r)),n=b(t.source_defs).filter(d=>!!d&&typeof d=="object"&&!Array.isArray(d)),o={};if(e.sourceIdx>=0&&e.sourceIdx<n.length){let d=n[e.sourceIdx],m=a$1.enrichSourcesSync([d],{card_data:a(t.card_data),requires:e.mockRequires});Array.isArray(m)&&m.length>0&&(o=a(m[0]._projections));}return await c.runSourcePreflight({params:{sourceIdx:e.sourceIdx},body:{"card-content":t,"mock-requires":e.mockRequires,"mock-projections":o}})}async function ie(e){let r=a(await U(c.simulateCardCycle({body:{"card-content":e.candidateCardContent,"mock-requires":e.mockRequires}}),"simulateCardCycle")),t=a(e.candidateCardContent),n=a(r.validation),o=b(r.source_probes),d=b(r.projection_errors),m=a(r.fetched_sources),g=b(r.compute_errors),w=a(r.computed_values),h={card_data:a(t.card_data),requires:e.mockRequires,fetched_sources:m,computed_values:w},A=[];for(let C of b(n.issues))typeof C=="string"&&C&&A.push(C);for(let C of o){let l=a(C),S=typeof l.bindTo=="string"?l.bindTo:"source",y=typeof l.error=="string"?l.error:"";y&&A.push(`${S}: ${y}`);}for(let C of d){let l=a(C),S=typeof l.bindTo=="string"?l.bindTo:"source",y=typeof l.key=="string"?l.key:"projection",x=typeof l.error=="string"?l.error:"projection failed";A.push(`${S}.${y}: ${x}`);}for(let C of g){let l=a(C),S=typeof l.bindTo=="string"?l.bindTo:"compute",y=typeof l.error=="string"?l.error:"compute failed";A.push(`${S}: ${y}`);}return {status:"success",data:{cardId:typeof r.cardId=="string"?r.cardId:"(unknown)",ok:r.ok===true,issues:A,provides_outputs:G(t,h),rendered_view:V(t,h)}}}async function K(e){let r=String(e.cardId||"").trim();if(!r)throw new Error("manageReadCard requires cardId");let t=await U(u.get({params:{id:r}}),"cardStore.get"),n=Array.isArray(t.cards)?t.cards.map(a):[];if(n.some(Q))throw Object.assign(new Error(`Card "${r}" not found`),{statusCode:404});return n.map(o=>E(o))}async function W(e){let r=await Promise.all(b(e.files).map(async t=>{let n=a(t),o=String(n.file_name??n.fileName??n.name??"").trim(),d=String(n.content_type??n.contentType??"application/octet-stream");if(!o)throw new Error("file entry requires file_name");return await R({cardId:e.cardId,fileName:o,contentType:d,bytes:X(n),suppressChatRecordWrite:true})}));for(let[t,n]of r.entries()){let o=a(n.file),d=typeof n.file_idx=="number"&&Number.isInteger(n.file_idx)&&n.file_idx>=0?n.file_idx:t,m=e.role==="assistant"?`AI generated: ${String(o.name||"")} as ${String(o.stored_name||"")} #${d}`:`file uploaded: ${String(o.name||"")} as ${String(o.stored_name||"")} #${d}`;v(await f.append({params:{cardId:e.cardId},body:{role:"system",text:m,files:[],turn:e.turn}}),"chatStore.append(system attachment message)");}return r.map(t=>t.file)}async function de(e){let r=String(e.cardId||"").trim(),t=String(e.role||"user").trim()||"user",n=typeof e.turn=="string"?e.turn:"";if(!r)throw new Error("manageAddChatAttachment requires cardId");let o=await W({cardId:r,role:t,turn:n,files:e.files});return {status:"success",data:{cardId:r,turn:n,files:o}}}async function ce(e){let r=String(e.cardId||"").trim(),t=String(e.role||"").trim(),n=typeof e.text=="string"?e.text:"",o=typeof e.turn=="string"?e.turn:"";if(!r)throw new Error("manageAddChatEntryAndAnyAttachments requires cardId");if(!t)throw new Error("manageAddChatEntryAndAnyAttachments requires role");if(t==="assistant"&&o){let g=v(await f.readAll({params:{cardId:r},body:{turnId:o}}),"chatStore.readAll(existing turn messages)"),w=Array.isArray(g.records)?g.records.find(h=>h.role==="assistant"&&String(h.turn||"")===o):void 0;if(w)return {status:"success",data:{cardId:r,id:String(w.id),role:t,turn:o,files:Array.isArray(w.files)?w.files:[]}}}let d=await W({cardId:r,role:t,turn:o,files:e.files}),m=v(await f.append({params:{cardId:r},body:{role:t,text:n,files:d,turn:o}}),"chatStore.append");return {status:"success",data:{cardId:r,id:String(m.id),role:t,turn:o,files:d}}}async function ue(e){let r=String(e.cardId||"").trim(),t=a(e.patch);if(!r)throw new Error("managePatchCard requires cardId");let n=await K({cardId:r}),o=a(n[0]),m={...ve(o,t),...D(o,"meta")?{meta:o.meta}:{},...D(o,"__private")?{__private:o.__private}:{}},g=await u.set({body:m});v(g,"cardStore.set");let w;try{w=await i.upsertCard({params:{cardId:r,restart:!0}}),v(w,"upsertCard");}catch(A){try{await u.set({body:o});}catch{}throw A}let h=null;try{h=await i.cardRefreshedNotify({params:{cardId:r}}),v(h,"cardRefreshedNotify");}catch{h=null;}return {status:"success",data:{validation:null,card_saved:null,board_result:w,refresh_notify:h}}}async function le(e){let r=String(e.cardId||"").trim(),t=a(e.candidateCardContent),n=E(t);if(!r)throw new Error("manageUpsertCard requires cardId");if(typeof n.id!="string"||!n.id.trim())throw new Error("candidateCardContent.id must be a non-empty string");if(n.id!==r)throw new Error(`candidateCardContent.id must match cardId (${r})`);let o=await $({candidateCardContent:n}),d=a(o),m=a(d.data);if(d.status!=="success"||m.isValid!==true)return {status:"fail",step:"validate",validation:o};let g=null;try{g=await T(u,r);}catch{g=null;}let w=g?a(g):null,h={...n,...w&&D(w,"meta")?{meta:w.meta}:{},...w&&D(w,"__private")?{__private:w.__private}:{}},A=await u.set({body:h});v(A,"cardStore.set");let C;try{C=await i.upsertCard({params:{cardId:r,restart:!0}}),v(C,"upsertCard");}catch(S){try{g&&await u.set({body:g});}catch{}throw S}let l=null;try{l=await i.cardRefreshedNotify({params:{cardId:r}}),v(l,"cardRefreshedNotify");}catch{l=null;}return {status:"success",data:{validation:o,card_saved:null,board_result:C,refresh_notify:l}}}async function me(e){let r=String(e.cardId||"").trim();if(!r)throw new Error("manageRemoveCard requires cardId");let t=await i.removeCard({params:{id:r}});v(t,"removeCard");let n=await u.del({params:{id:r}});return v(n,"cardStore.del"),{status:"success",data:{board_result:t,store_result:n}}}async function pe(e){let r=String(e.cardId||"").trim();if(!r)throw new Error("adminReadCard requires cardId");let t=await U(u.get({params:{id:r}}),"cardStore.get");return Array.isArray(t.cards)?t.cards.map(n=>a(n)):[]}async function fe(e){let r=String(e.cardId||"").trim(),t=a(e.candidateCardContent),n=E(t);if(!r)throw new Error("adminUpsertCard requires cardId");if(typeof n.id!="string"||!n.id.trim())throw new Error("candidateCardContent.id must be a non-empty string");if(n.id!==r)throw new Error(`candidateCardContent.id must match cardId (${r})`);let o=await $({candidateCardContent:n}),d=a(o),m=a(d.data);if(d.status!=="success"||m.isValid!==true)return {status:"fail",step:"validate",validation:o};let g=null;try{g=await T(u,r);}catch{g=null;}let w=g?a(a(g).__private):{},h={...n,__private:{...w,visible_controlplane_only:true}},A=await u.set({body:h});v(A,"cardStore.set");let C;try{C=await i.upsertCard({params:{cardId:r,restart:!0}}),v(C,"upsertCard");}catch(S){try{g&&await u.set({body:g});}catch{}throw S}let l=null;try{l=await i.cardRefreshedNotify({params:{cardId:r}}),v(l,"cardRefreshedNotify");}catch{l=null;}return {status:"success",data:{validation:o,card_saved:null,board_result:C,refresh_notify:l}}}async function ge(e){let r=String(e.cardId||"").trim();if(!r)throw new Error("getChatProcessing requires cardId");let t=H(await f.isProcessing({params:{cardId:r}}),"chatStore.isProcessing");return {cardId:r,active:!!t.active}}async function we(e){let r=String(e.cardId||"").trim();if(!r)throw new Error("setChatProcessing requires cardId");if(typeof e.active!="boolean")throw new Error("setChatProcessing requires boolean active");return v(await f.setProcessing({params:{cardId:r},body:{active:e.active}}),"chatStore.setProcessing"),{cardId:r,active:e.active}}async function Ce(){let e=await B(_,"webhook.process-accumulated")();return e?.status==="fail"||e?.status==="error"?e:{status:"success",data:{runtime_result:Object.prototype.hasOwnProperty.call(e??{},"data")?e.data??null:null}}}async function ye(e){let r=String(e.token||"").trim(),t=String(e.ref||"").trim();if(!r)throw new Error("webhookSourceFetchDone requires token");if(!t)throw new Error("webhookSourceFetchDone requires ref");let n=await B(I,"webhook.source-fetch-done")({token:r,ref:t});return n?.status==="fail"||n?.status==="error"?n:{status:"success",data:{token:r,ref:t,runtime_result:Object.prototype.hasOwnProperty.call(n??{},"data")?n.data??null:null}}}async function be(e){let r=String(e.token||"").trim(),t=String(e.reason||"").trim();if(!r)throw new Error("webhookSourceFetchFailed requires token");if(!t)throw new Error("webhookSourceFetchFailed requires reason");let n=await B(k,"webhook.source-fetch-failed")({token:r,reason:t});return n?.status==="fail"||n?.status==="error"?n:{status:"success",data:{token:r,reason:t,runtime_result:Object.prototype.hasOwnProperty.call(n??{},"data")?n.data??null:null}}}return {listRuntimeCards:F,discoverSourceKinds:Y,inspectBoardRuntimeStatus:Z,inspectCardDefinitionAndRuntime:ee,inspectChatMessagesOnCards:re,inspectFileContents:te,preflightValidateCandidateCardDefinition:$,preflightMaterializeCandidateCard:ne,preflightProbeSingleSourceInCandidateCard:ae,preflightRunSingleSourceInCandidateCard:oe,preflightRunSingleSourceInLiveCard:se,preflightRunOneCycleWithCandidateCard:ie,manageReadCard:K,manageAddChatAttachment:de,manageAddChatEntryAndAnyAttachments:ce,managePatchCard:ue,manageUpsertCard:le,manageRemoveCard:me,adminReadCard:pe,adminUpsertCard:fe,getChatProcessing:ge,setChatProcessing:we,webhookProcessAccumulated:Ce,webhookSourceFetchDone:ye,webhookSourceFetchFailed:be}}async function U(s,i){return v(await s,i)}export{Ae as a};//# sourceMappingURL=chunk-35N7ONTH.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-35N7ONTH.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';var chunk7JVHYHT2_cjs=require('./chunk-7JVHYHT2.cjs'),chunkVQCIOKJV_cjs=require('./chunk-VQCIOKJV.cjs');function c(e){return {messageId:e.id,enqueuedAt:e.enqueuedAt,attempt:e.attempt,request:e.body}}function l(e){return typeof e=="string"?e.startsWith("b64:")?chunkVQCIOKJV_cjs.b(e).value:e:e.value}function m(e){return {async enqueueRequest(t){return (await e.enqueue(t)).id},async leaseRequests(t){return (await e.lease(t)).map(r=>({...c(r),leaseToken:r.leaseToken,leaseExpiresAt:r.leaseExpiresAt}))},ackRequest(t,r){return e.ack(t,r)},nackRequest(t,r,a){return e.nack(t,r,a)},async peekActive(){return (await e.peekActive()).map(c)},async peekDeadLetter(){return (await e.peekDeadLetter()).map(t=>({...c(t),reason:t.reason}))}}}function h(e){async function t(r){let a=await e.read(r);return a==null?null:typeof a=="string"?a:JSON.stringify(a)}return {async readTaskExecutorRef(){let r=await t("task-executor");if(r?.trim())return chunk7JVHYHT2_cjs.c(r.trim())},writeTaskExecutorRef(r){return e.write("task-executor",chunk7JVHYHT2_cjs.b(r))},readChatHandlerFlow(){return e.read("chat-handler-flow")},writeChatHandlerFlow(r){return e.write("chat-handler-flow",r)},readBoardRuntimeStoreRef(){return t("board-runtime-store-ref")},writeBoardRuntimeStoreRef(r){return e.write("board-runtime-store-ref",r)},readCardStoreRef(){return t("card-store-ref")},writeCardStoreRef(r){return e.write("card-store-ref",r)},readOutputsStoreRef(){return t("outputs-store-ref")},writeOutputsStoreRef(r){return e.write("outputs-store-ref",r)},readQueueStoreRef(){return t("queue-store-ref")},writeQueueStoreRef(r){return e.write("queue-store-ref",r)},readScratchStoreRef(){return t("scratch-store-ref")},writeScratchStoreRef(r){return e.write("scratch-store-ref",r)},readChatStoreRef(){return t("chat-store-ref")},writeChatStoreRef(r){return e.write("chat-store-ref",r)},readArtifactsStoreRef(){return t("artifacts-store-ref")},writeArtifactsStoreRef(r){return e.write("artifacts-store-ref",r)},readFetchedSourcesStoreRef(){return t("fetched-sources-store-ref")},writeFetchedSourcesStoreRef(r){return e.write("fetched-sources-store-ref",r)}}}function y(e){let t=e.callbackTransport,r=e.resolveBlob??(async o=>{let s=await e.blobStorage("").read(o.value);if(s==null)throw new Error(`Blob not found for ref ${o.kind}:${o.value}`);return s});async function a(o,s){if(o.howToRun==="queue-storage")return e.queueStoreRef?(await m(e.queueStorageForRef(e.queueStoreRef,"task-executor")).enqueueRequest({boardId:typeof o.extra?.boardId=="string"?o.extra.boardId:e.boardId,ref:o,args:s}),{dispatched:true}):{dispatched:false,error:"queue-storage dispatch requires queueStoreRef"};if(o.howToRun==="http:post"){let n=e.fetch??globalThis.fetch;if(!n)return {dispatched:false,error:"http:post dispatch requires fetch support"};let i=await n(l(o.whatToRun),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...s,...o.extra?{extra:o.extra}:{}})});if(!i.ok){let g=await i.text().catch(()=>"");return {dispatched:false,error:`HTTP ${i.status}: ${g}`}}return {dispatched:true}}return {dispatched:false,error:`Unsupported hosted async transport "${o.howToRun}"`}}return {kvStorage:e.kvStorage,kvStorageForRef:e.kvStorageForRef,blobStorage:e.blobStorage,blobStorageForRef:e.blobStorageForRef,chatStorageForRef:e.chatStorageForRef,queueStorageForRef:e.queueStorageForRef,scratchStorage:e.scratchStorage,scratchStorageForRef:e.scratchStorageForRef,archiveFactory:e.archiveFactory,archiveFactoryForRef:e.archiveFactoryForRef,journalStorage:e.journalStorage,journalStorageForRef:e.journalStorageForRef,lock:e.lock,get callbackTransport(){return t},set callbackTransport(o){t=o;},dispatchExecution:(o,s)=>e.dispatchExecution?.(o,s)??a(o,s),supportsDirectSourceOutput:e.supportsDirectSourceOutput,resolveBlob:r,hashFn:e.hashFn,genId:e.genId,requestProcessAccumulated:e.requestProcessAccumulated,publishBoardChangeNotifications:e.publishBoardChangeNotifications,warn:e.onWarn}}exports.a=m;exports.b=h;exports.c=y;//# sourceMappingURL=chunk-37HDEW26.cjs.map
|
|
2
|
+
//# sourceMappingURL=chunk-37HDEW26.cjs.map
|