@relayflows/sdk 2.0.11 → 2.0.12
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/dist/adapters/base.d.ts +6 -0
- package/dist/adapters/base.d.ts.map +1 -1
- package/dist/adapters/claude.d.ts.map +1 -1
- package/dist/adapters/claude.js +1 -0
- package/dist/adapters/claude.js.map +1 -1
- package/dist/authored-admission.d.ts +5 -0
- package/dist/authored-admission.d.ts.map +1 -0
- package/dist/authored-admission.js +14 -0
- package/dist/authored-admission.js.map +1 -0
- package/dist/authored-budget.d.ts +1 -1
- package/dist/authored-budget.d.ts.map +1 -1
- package/dist/authored-budget.js +3 -3
- package/dist/authored-budget.js.map +1 -1
- package/dist/authored-flow-error.d.ts +1 -1
- package/dist/authored-flow-error.d.ts.map +1 -1
- package/dist/authored-flow-error.js.map +1 -1
- package/dist/authored-flow-executor.d.ts +10 -0
- package/dist/authored-flow-executor.d.ts.map +1 -1
- package/dist/authored-flow-executor.js +10 -7
- package/dist/authored-flow-executor.js.map +1 -1
- package/dist/authored-flow-loader.d.ts +20 -0
- package/dist/authored-flow-loader.d.ts.map +1 -1
- package/dist/authored-flow-loader.js +86 -11
- package/dist/authored-flow-loader.js.map +1 -1
- package/dist/authored-helper-effect.d.ts +1 -1
- package/dist/authored-helper-effect.d.ts.map +1 -1
- package/dist/authored-helper-effect.js +5 -3
- package/dist/authored-helper-effect.js.map +1 -1
- package/dist/authored-mcp.d.ts +1 -1
- package/dist/authored-mcp.d.ts.map +1 -1
- package/dist/authored-mcp.js +7 -4
- package/dist/authored-mcp.js.map +1 -1
- package/dist/authored-node-entry.d.ts +2 -0
- package/dist/authored-node-entry.d.ts.map +1 -0
- package/dist/authored-node-entry.js +111 -0
- package/dist/authored-node-entry.js.map +1 -0
- package/dist/authored-node-runner.d.ts +11 -0
- package/dist/authored-node-runner.d.ts.map +1 -0
- package/dist/authored-node-runner.js +246 -0
- package/dist/authored-node-runner.js.map +1 -0
- package/dist/authored-plugin-effect.d.ts +1 -1
- package/dist/authored-plugin-effect.d.ts.map +1 -1
- package/dist/authored-plugin-effect.js +7 -4
- package/dist/authored-plugin-effect.js.map +1 -1
- package/dist/authored-root.d.ts +38 -0
- package/dist/authored-root.d.ts.map +1 -0
- package/dist/authored-root.js +329 -0
- package/dist/authored-root.js.map +1 -0
- package/dist/authored-runtime-capability.d.ts +6 -0
- package/dist/authored-runtime-capability.d.ts.map +1 -0
- package/dist/authored-runtime-capability.js +40 -0
- package/dist/authored-runtime-capability.js.map +1 -0
- package/dist/authored-source-authority.d.ts +4 -0
- package/dist/authored-source-authority.d.ts.map +1 -0
- package/dist/authored-source-authority.js +61 -0
- package/dist/authored-source-authority.js.map +1 -0
- package/dist/authored-worker-step.d.ts +2 -2
- package/dist/authored-worker-step.d.ts.map +1 -1
- package/dist/authored-worker-step.js +11 -6
- package/dist/authored-worker-step.js.map +1 -1
- package/dist/budget-preflight.d.ts +17 -3
- package/dist/budget-preflight.d.ts.map +1 -1
- package/dist/budget-preflight.js +31 -24
- package/dist/budget-preflight.js.map +1 -1
- package/dist/cli/check.js +3 -1
- package/dist/cli/check.js.map +1 -1
- package/dist/cli/direct-run.d.ts.map +1 -1
- package/dist/cli/direct-run.js +18 -14
- package/dist/cli/direct-run.js.map +1 -1
- package/dist/cli/run.d.ts +2 -0
- package/dist/cli/run.d.ts.map +1 -1
- package/dist/cli/run.js +56 -1
- package/dist/cli/run.js.map +1 -1
- package/dist/cli-adapter.d.ts +16 -0
- package/dist/cli-adapter.d.ts.map +1 -1
- package/dist/cli-adapter.js +17 -0
- package/dist/cli-adapter.js.map +1 -1
- package/dist/cli.js +4 -4
- package/dist/cli.js.map +1 -1
- package/dist/cloud-run.d.ts +11 -1
- package/dist/cloud-run.d.ts.map +1 -1
- package/dist/cloud-run.js +65 -19
- package/dist/cloud-run.js.map +1 -1
- package/dist/failure-kinds.d.ts +7 -3
- package/dist/failure-kinds.d.ts.map +1 -1
- package/dist/failure-kinds.js +5 -1
- package/dist/failure-kinds.js.map +1 -1
- package/dist/journal-client.d.ts +1 -1
- package/dist/journal-client.d.ts.map +1 -1
- package/dist/journal-client.js +6 -2
- package/dist/journal-client.js.map +1 -1
- package/dist/llm-worker.d.ts.map +1 -1
- package/dist/llm-worker.js +4 -2
- package/dist/llm-worker.js.map +1 -1
- package/dist/local-agent.d.ts +1 -1
- package/dist/local-agent.d.ts.map +1 -1
- package/dist/local-agent.js +2 -2
- package/dist/local-agent.js.map +1 -1
- package/dist/model-pricing.d.ts +3 -4
- package/dist/model-pricing.d.ts.map +1 -1
- package/dist/model-pricing.js +4 -4
- package/dist/model-pricing.js.map +1 -1
- package/dist/preflight.d.ts +4 -1
- package/dist/preflight.d.ts.map +1 -1
- package/dist/preflight.js +36 -18
- package/dist/preflight.js.map +1 -1
- package/dist/protocol.d.ts +2 -0
- package/dist/protocol.d.ts.map +1 -1
- package/dist/spec.d.ts +5 -4
- package/dist/spec.d.ts.map +1 -1
- package/dist/spec.js.map +1 -1
- package/dist/worker-cli.d.ts.map +1 -1
- package/dist/worker-cli.js +6 -5
- package/dist/worker-cli.js.map +1 -1
- package/dist/worker-spend.d.ts +4 -3
- package/dist/worker-spend.d.ts.map +1 -1
- package/dist/worker-spend.js +13 -4
- package/dist/worker-spend.js.map +1 -1
- package/dist/worker.d.ts.map +1 -1
- package/dist/worker.js +4 -2
- package/dist/worker.js.map +1 -1
- package/package.json +2 -2
- package/src/adapters/base.ts +7 -0
- package/src/adapters/claude.ts +1 -0
- package/src/authored-admission.ts +17 -0
- package/src/authored-budget.ts +4 -3
- package/src/authored-flow-error.ts +0 -1
- package/src/authored-flow-executor.ts +27 -7
- package/src/authored-flow-loader.ts +96 -13
- package/src/authored-helper-effect.ts +5 -3
- package/src/authored-mcp.ts +6 -4
- package/src/authored-node-entry.ts +90 -0
- package/src/authored-node-runner.ts +219 -0
- package/src/authored-plugin-effect.ts +6 -3
- package/src/authored-root.ts +396 -0
- package/src/authored-runtime-capability.ts +40 -0
- package/src/authored-source-authority.ts +62 -0
- package/src/authored-worker-step.ts +15 -4
- package/src/budget-preflight.ts +41 -25
- package/src/cli/check.ts +3 -1
- package/src/cli/direct-run.ts +24 -16
- package/src/cli/run.ts +58 -1
- package/src/cli-adapter.ts +27 -0
- package/src/cli.ts +5 -5
- package/src/cloud-run.ts +74 -21
- package/src/failure-kinds.ts +5 -1
- package/src/journal-client.ts +6 -2
- package/src/llm-worker.ts +4 -2
- package/src/local-agent.ts +7 -2
- package/src/model-pricing.ts +4 -4
- package/src/preflight.ts +40 -18
- package/src/protocol.ts +2 -0
- package/src/spec.ts +5 -4
- package/src/worker-cli.ts +7 -5
- package/src/worker-spend.ts +15 -4
- package/src/worker.ts +4 -2
|
@@ -11,6 +11,7 @@ import { helperProviders } from '@relayflows/surface/runtime';
|
|
|
11
11
|
import { helperWriteback, HelperDeliveryError } from './helper-writeback.js';
|
|
12
12
|
import { checkSlackHelpers } from './slack-preflight.js';
|
|
13
13
|
import { atomicJson, readSlackReceipt, receiptPath, slackWriteback } from './slack-writeback.js';
|
|
14
|
+
import { authoredChildAdmissionKey } from './authored-admission.js';
|
|
14
15
|
export function assertHelperCredentials(provider) {
|
|
15
16
|
const namespace = helperProviders.find(p => p.provider === provider)?.namespace;
|
|
16
17
|
if (!namespace)
|
|
@@ -22,19 +23,20 @@ export function assertHelperCredentials(provider) {
|
|
|
22
23
|
}
|
|
23
24
|
}
|
|
24
25
|
/** Each helper uses the existing agent lease + effect protocol; no new kernel verb. */
|
|
25
|
-
export async function runHelperEffect(journal, name, stepId, call, dataDir, journalSteps) {
|
|
26
|
+
export async function runHelperEffect(journal, name, stepId, call, dataDir, journalSteps, rootRunId) {
|
|
26
27
|
assertHelperCredentials(call.provider);
|
|
27
28
|
if (call.provider === 'notion' && call.verb === 'appendBlock' && process.env.RELAYFLOWS_NOTION_MOCK !== '1') {
|
|
28
29
|
throw new AuthoredFlowExecutionError('helper_provider.unsupported', 'Notion appendBlock has no upstream mount writeback route');
|
|
29
30
|
}
|
|
30
|
-
const
|
|
31
|
+
const admissionKey = authoredChildAdmissionKey(rootRunId, stepId);
|
|
32
|
+
const stream = `${call.provider}-helper-${admissionKey?.slice(-32) ?? randomUUID()}`;
|
|
31
33
|
const spec = toKernelSpec(compileSpec({
|
|
32
34
|
version: SPEC_SCHEMA_VERSION, name: `${name}/${stepId}`,
|
|
33
35
|
steps: [{ id: stepId, type: 'agent', instruction: JSON.stringify(call),
|
|
34
36
|
maxIterations: 3, recoveryMode: 'reset',
|
|
35
37
|
surfaces: { streams: [{ stream }], external: [`/${call.provider}`] } }],
|
|
36
38
|
}));
|
|
37
|
-
const outcome = await journal.runStart(spec);
|
|
39
|
+
const outcome = await journal.runStart(spec, undefined, admissionKey);
|
|
38
40
|
await atomicJson(join(dataDir, 'helper-runs', `${outcome.run_id}.json`), { provider: call.provider });
|
|
39
41
|
await driveHelperEffect(journal, outcome.run_id, spec.steps[0], call, dataDir);
|
|
40
42
|
const output = await readCompletedStepOutput(journal, outcome.run_id, stepId, journalSteps);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authored-helper-effect.js","sourceRoot":"","sources":["../src/authored-helper-effect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,0BAA0B,EAAuC,MAAM,0BAA0B,CAAC;AAC3G,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAwB,MAAM,WAAW,CAAC;AAEtE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAmB,MAAM,6BAA6B,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,WAAW,EAAE,cAAc,EAAkB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"authored-helper-effect.js","sourceRoot":"","sources":["../src/authored-helper-effect.ts"],"names":[],"mappings":"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"}
|
package/dist/authored-mcp.d.ts
CHANGED
|
@@ -13,5 +13,5 @@ export declare class McpStepError extends AuthoredFlowExecutionError {
|
|
|
13
13
|
* The MCP receipt lives in step.completed.output: { type, input, output, ... }.
|
|
14
14
|
* A private stream routes the step to this short-lived SDK worker exclusively.
|
|
15
15
|
*/
|
|
16
|
-
export declare function runMcpEffect(journal: JournalClient, flowName: string, id: string, server: string, tool: string, args: unknown, known: boolean, config: McpServerConfig, journalSteps: AuthoredFlowJournalStep[]): Promise<unknown>;
|
|
16
|
+
export declare function runMcpEffect(journal: JournalClient, flowName: string, id: string, server: string, tool: string, args: unknown, known: boolean, config: McpServerConfig, journalSteps: AuthoredFlowJournalStep[], rootRunId?: string): Promise<unknown>;
|
|
17
17
|
//# sourceMappingURL=authored-mcp.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authored-mcp.d.ts","sourceRoot":"","sources":["../src/authored-mcp.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAIrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"authored-mcp.d.ts","sourceRoot":"","sources":["../src/authored-mcp.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAIrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAK3E,yFAAyF;AACzF,wBAAgB,aAAa,CAC3B,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,EACtD,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC,GACrF,GAAG,CAAC,KAAK,CAAC,CAkBZ;AAED,qBAAa,YAAa,SAAQ,0BAA0B;IAC9C,QAAQ,CAAC,UAAU,EAAE,MAAM;gBAAlB,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;CAGvD;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAClF,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,EACtD,YAAY,EAAE,uBAAuB,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,GAC1D,OAAO,CAAC,OAAO,CAAC,CA8GlB"}
|
package/dist/authored-mcp.js
CHANGED
|
@@ -6,6 +6,7 @@ import { SPEC_SCHEMA_VERSION } from './spec.js';
|
|
|
6
6
|
import { AuthoredFlowExecutionError } from './authored-flow-error.js';
|
|
7
7
|
import { readCompletedStepOutput } from './authored-step-output.js';
|
|
8
8
|
import { withWorkerLease } from './worker-lease.js';
|
|
9
|
+
import { authoredChildAdmissionKey } from './authored-admission.js';
|
|
9
10
|
/** Own keys expose precisely the preflight inventory, including prototype-like names. */
|
|
10
11
|
export function buildMcpProxy(inventory, invoke) {
|
|
11
12
|
const servers = Object.create(null);
|
|
@@ -39,10 +40,11 @@ export class McpStepError extends AuthoredFlowExecutionError {
|
|
|
39
40
|
* The MCP receipt lives in step.completed.output: { type, input, output, ... }.
|
|
40
41
|
* A private stream routes the step to this short-lived SDK worker exclusively.
|
|
41
42
|
*/
|
|
42
|
-
export async function runMcpEffect(journal, flowName, id, server, tool, args, known, config, journalSteps) {
|
|
43
|
+
export async function runMcpEffect(journal, flowName, id, server, tool, args, known, config, journalSteps, rootRunId) {
|
|
43
44
|
const idempotencyKey = `mcp:${server}:${tool}:${createHash('sha256').update(JSON.stringify(args)).digest('hex')}`;
|
|
44
45
|
const surfacePath = `/mcp/${pathPart(server)}/${pathPart(tool)}`;
|
|
45
|
-
const
|
|
46
|
+
const admissionKey = authoredChildAdmissionKey(rootRunId, id);
|
|
47
|
+
const stream = `mcp-worker-${admissionKey?.slice(-32) ?? randomUUID()}`;
|
|
46
48
|
const instruction = JSON.stringify({ type: 'mcp', server, tool, input: args });
|
|
47
49
|
const peer = journal.createPeer();
|
|
48
50
|
let diagnostic;
|
|
@@ -130,11 +132,12 @@ export async function runMcpEffect(journal, flowName, id, server, tool, args, kn
|
|
|
130
132
|
failed(new Error('MCP worker dispatch deadline exceeded'));
|
|
131
133
|
}, 30_000);
|
|
132
134
|
// Propagate a dispatch failure even if run.start itself is still pending.
|
|
133
|
-
const starting = journal.runStart(spec);
|
|
135
|
+
const starting = journal.runStart(spec, undefined, admissionKey);
|
|
134
136
|
await Promise.race([starting, completed]);
|
|
135
137
|
const outcome = await starting;
|
|
136
138
|
childRunId = outcome.run_id;
|
|
137
|
-
|
|
139
|
+
if (outcome.status !== 'completed')
|
|
140
|
+
await completed;
|
|
138
141
|
if (diagnostic !== undefined) {
|
|
139
142
|
try {
|
|
140
143
|
await readCompletedStepOutput(journal, outcome.run_id, id, journalSteps);
|
package/dist/authored-mcp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authored-mcp.js","sourceRoot":"","sources":["../src/authored-mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAE3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAGhD,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAEtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"authored-mcp.js","sourceRoot":"","sources":["../src/authored-mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authored-node-entry.d.ts","sourceRoot":"","sources":["../src/authored-node-entry.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { Worker } from 'node:worker_threads';
|
|
2
|
+
import { createHash, createHmac } from 'node:crypto';
|
|
3
|
+
import { readFileSync, writeSync } from 'node:fs';
|
|
4
|
+
import { JournalClient } from './journal-client.js';
|
|
5
|
+
import { executeAuthoredFlow } from './authored-flow-executor.js';
|
|
6
|
+
import { loadPinnedAuthoredSource } from './authored-source-authority.js';
|
|
7
|
+
import { assertAuthoredNodeVersion, parseAuthoredParentPid } from './authored-runtime-capability.js';
|
|
8
|
+
import { AuthoredFlowExecutionError } from './authored-flow-error.js';
|
|
9
|
+
let channelKey, sequence = 0;
|
|
10
|
+
// Capture writers before loading authored modules; credentials never enter env.
|
|
11
|
+
const writeFrame = writeSync, mac = createHmac;
|
|
12
|
+
const send = (message) => {
|
|
13
|
+
const payload = JSON.stringify(message);
|
|
14
|
+
if (channelKey === undefined) {
|
|
15
|
+
writeFrame(3, payload + '\n');
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
const seq = ++sequence;
|
|
19
|
+
writeFrame(3, JSON.stringify({ seq, payload,
|
|
20
|
+
mac: mac('sha256', channelKey).update(`${seq}\0${payload}`).digest('hex') }) + '\n');
|
|
21
|
+
};
|
|
22
|
+
const hash = (path) => createHash('sha256').update(readFileSync(path)).digest('hex');
|
|
23
|
+
const controller = new AbortController();
|
|
24
|
+
let finished = false;
|
|
25
|
+
const abort = () => {
|
|
26
|
+
controller.abort();
|
|
27
|
+
setTimeout(() => process.exit(1), 2000).unref();
|
|
28
|
+
};
|
|
29
|
+
process.on('SIGINT', abort);
|
|
30
|
+
process.on('SIGTERM', abort);
|
|
31
|
+
// The parent owns the root lease. Do not continue authored effects after it dies.
|
|
32
|
+
process.stdin.on('end', () => { if (!finished)
|
|
33
|
+
process.exit(1); });
|
|
34
|
+
process.stdin.on('error', () => process.exit(1));
|
|
35
|
+
// A separate event loop enforces parent loss even while authored JS is blocked.
|
|
36
|
+
// Capture the expected PID in the parent's spawn arguments, before any child work.
|
|
37
|
+
const parentPid = parseAuthoredParentPid(process.argv[2]);
|
|
38
|
+
const watchdog = new Worker(`
|
|
39
|
+
const {parentPort,workerData}=require('node:worker_threads');
|
|
40
|
+
function check(){if(process.ppid!==workerData.parentPid)process.kill(process.pid,'SIGKILL');}
|
|
41
|
+
check();setInterval(check,50);parentPort.postMessage('ready');
|
|
42
|
+
`, { eval: true, workerData: { parentPid } });
|
|
43
|
+
// Enforcement must not silently disappear after the readiness Promise settles.
|
|
44
|
+
const watchdogLost = () => { if (!finished)
|
|
45
|
+
process.kill(process.pid, 'SIGKILL'); };
|
|
46
|
+
watchdog.on('error', watchdogLost);
|
|
47
|
+
watchdog.on('exit', watchdogLost);
|
|
48
|
+
let client;
|
|
49
|
+
try {
|
|
50
|
+
assertAuthoredNodeVersion();
|
|
51
|
+
await new Promise((resolve, reject) => { watchdog.once('message', () => resolve()); watchdog.once('error', reject); });
|
|
52
|
+
send({ type: 'ready', runtime: { kind: 'node', version: process.versions.node,
|
|
53
|
+
executableSha256: hash(process.execPath), payloadSha256: hash(process.argv[1]) } });
|
|
54
|
+
const request = await new Promise((resolve, reject) => {
|
|
55
|
+
let buffer = '';
|
|
56
|
+
process.stdin.setEncoding('utf8');
|
|
57
|
+
const onData = (chunk) => {
|
|
58
|
+
buffer += chunk;
|
|
59
|
+
if (Buffer.byteLength(buffer) > 2 * 1024 * 1024) {
|
|
60
|
+
reject(new Error('authored runtime request exceeded limit'));
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
const end = buffer.indexOf('\n');
|
|
64
|
+
if (end < 0)
|
|
65
|
+
return;
|
|
66
|
+
process.stdin.off('data', onData);
|
|
67
|
+
try {
|
|
68
|
+
resolve(JSON.parse(buffer.slice(0, end)));
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
reject(new Error('invalid authored runtime request'));
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
process.stdin.on('data', onData);
|
|
75
|
+
});
|
|
76
|
+
if (typeof request.channelKey !== 'string' || !/^[a-f0-9]{64}$/.test(request.channelKey))
|
|
77
|
+
throw new Error('invalid authored channel key');
|
|
78
|
+
channelKey = request.channelKey;
|
|
79
|
+
controller.signal.throwIfAborted();
|
|
80
|
+
const loaded = await loadPinnedAuthoredSource(request.metadata, true);
|
|
81
|
+
if (request.localAgentStream !== request.metadata.localAgentStream)
|
|
82
|
+
throw new Error('authored root local agent surface mismatch');
|
|
83
|
+
client = new JournalClient(request.socketPath);
|
|
84
|
+
await client.connect();
|
|
85
|
+
await client.hello('flows-authored-node');
|
|
86
|
+
const result = await executeAuthoredFlow(loaded.handle, client, request.metadata.inputPresent ? request.metadata.input : undefined, {
|
|
87
|
+
getDefinition: loaded.getDefinition, dataDir: request.dataDir,
|
|
88
|
+
flowPath: request.metadata.flowPath, rootRunId: request.rootRunId,
|
|
89
|
+
localAgentStream: request.localAgentStream, signal: controller.signal,
|
|
90
|
+
onProgress: event => send({ type: 'progress', event }),
|
|
91
|
+
onWait: event => send({ type: 'wait', event }),
|
|
92
|
+
});
|
|
93
|
+
send({ type: 'result', result });
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
const message = error instanceof Error ? error.message : 'authored body failed';
|
|
97
|
+
const prefix = error instanceof AuthoredFlowExecutionError ? `${error.code}: ` : '';
|
|
98
|
+
send({ type: 'error', message: prefix && message.startsWith(prefix) ? message.slice(prefix.length) : message,
|
|
99
|
+
...(error instanceof AuthoredFlowExecutionError ? { code: error.code,
|
|
100
|
+
completionReason: error.completionReason, runId: error.runId } : {}) });
|
|
101
|
+
process.exitCode = 1;
|
|
102
|
+
}
|
|
103
|
+
finally {
|
|
104
|
+
finished = true;
|
|
105
|
+
await watchdog.terminate();
|
|
106
|
+
client?.close();
|
|
107
|
+
process.stdin.destroy();
|
|
108
|
+
process.off('SIGINT', abort);
|
|
109
|
+
process.off('SIGTERM', abort);
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=authored-node-entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authored-node-entry.js","sourceRoot":"","sources":["../src/authored-node-entry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { AuthoredRootMetadata } from './authored-root.js';
|
|
2
|
+
import type { AuthoredFlowExecutionResult, ExecuteAuthoredFlowOptions } from './authored-flow-executor.js';
|
|
3
|
+
/** Installed by the standalone build; never fetched or resolved from a workspace. */
|
|
4
|
+
export declare function installAuthoredNodeSource(source: string): void;
|
|
5
|
+
/** Called before root admission/resume; declarative commands never reach it. */
|
|
6
|
+
export declare function assertAuthoredRuntimeAvailable(): void;
|
|
7
|
+
/** Bun retains the root lease and local workers. Only the authored body uses Node. */
|
|
8
|
+
export declare function runAuthoredInNode(metadata: AuthoredRootMetadata, socketPath: string, rootRunId: string, options: ExecuteAuthoredFlowOptions): Promise<AuthoredFlowExecutionResult>;
|
|
9
|
+
/** The IPC frame is a claim, not a durable terminal fact or a sandbox boundary. */
|
|
10
|
+
export declare function verifyAuthoredNodeResult(result: AuthoredFlowExecutionResult, metadata: AuthoredRootMetadata, rootRunId: string, socketPath: string): Promise<void>;
|
|
11
|
+
//# sourceMappingURL=authored-node-runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authored-node-runner.d.ts","sourceRoot":"","sources":["../src/authored-node-runner.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,KAAK,EAA4B,2BAA2B,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAKrI,qFAAqF;AACrF,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAG9D;AAgCD,gFAAgF;AAChF,wBAAgB,8BAA8B,IAAI,IAAI,CAGrD;AAED,sFAAsF;AACtF,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,oBAAoB,EAC9B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,2BAA2B,CAAC,CA6FtC;AAED,mFAAmF;AACnF,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,2BAA2B,EAAE,QAAQ,EAAE,oBAAoB,EACnE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GACpC,OAAO,CAAC,IAAI,CAAC,CAyDf"}
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
import { JournalClient } from './journal-client.js';
|
|
2
|
+
import { spawn, spawnSync } from 'node:child_process';
|
|
3
|
+
import { createHash, createHmac, randomBytes, timingSafeEqual } from 'node:crypto';
|
|
4
|
+
import { mkdtemp, readFile, rm, writeFile } from 'node:fs/promises';
|
|
5
|
+
import { readFileSync, realpathSync } from 'node:fs';
|
|
6
|
+
import { tmpdir } from 'node:os';
|
|
7
|
+
import { isAbsolute, join } from 'node:path';
|
|
8
|
+
import { AuthoredFlowExecutionError } from './authored-flow-error.js';
|
|
9
|
+
import { assertAuthoredPromiseHooks } from './authored-runtime-capability.js';
|
|
10
|
+
let embeddedSource;
|
|
11
|
+
/** Installed by the standalone build; never fetched or resolved from a workspace. */
|
|
12
|
+
export function installAuthoredNodeSource(source) {
|
|
13
|
+
if (embeddedSource !== undefined || source.length === 0)
|
|
14
|
+
throw new Error('invalid authored runtime payload');
|
|
15
|
+
embeddedSource = source;
|
|
16
|
+
}
|
|
17
|
+
const hash = (value) => createHash('sha256').update(value).digest('hex');
|
|
18
|
+
const refusal = () => new AuthoredFlowExecutionError('unsupported_promise_lifecycle', 'authored execution requires the embedded Node runner and Node >=22.14 on PATH (or an absolute FLOWS_AUTHORED_NODE); no workflow body was executed');
|
|
19
|
+
function nodeAuthority() {
|
|
20
|
+
if (embeddedSource === undefined)
|
|
21
|
+
throw refusal();
|
|
22
|
+
const override = process.env['FLOWS_AUTHORED_NODE'];
|
|
23
|
+
if (override !== undefined && !isAbsolute(override))
|
|
24
|
+
throw refusal();
|
|
25
|
+
const probe = spawnSync(override ?? 'node', ['--input-type=module', '--eval', `
|
|
26
|
+
import {createHook} from 'node:async_hooks';
|
|
27
|
+
import {stripTypeScriptTypes,register} from 'node:module';
|
|
28
|
+
const [major,minor]=process.versions.node.split('.').map(Number);
|
|
29
|
+
let init=false,resolve=false;
|
|
30
|
+
const h=createHook({init(_id,type){if(type==='PROMISE')init=true},promiseResolve(){resolve=true}}).enable();
|
|
31
|
+
new Promise(r=>r());h.disable();
|
|
32
|
+
if(process.versions.bun || major<22 || (major===22 && minor<14) || !init || !resolve || typeof stripTypeScriptTypes!=='function' || typeof register!=='function') process.exit(2);
|
|
33
|
+
process.stdout.write(JSON.stringify({path:process.execPath,version:process.versions.node}));
|
|
34
|
+
`], { encoding: 'utf8', timeout: 10_000, maxBuffer: 4096, env: process.env });
|
|
35
|
+
if (probe.error || probe.status !== 0)
|
|
36
|
+
throw refusal();
|
|
37
|
+
try {
|
|
38
|
+
const value = JSON.parse(probe.stdout);
|
|
39
|
+
if (!isAbsolute(value.path) || !/^\d+\.\d+\.\d+$/.test(value.version))
|
|
40
|
+
throw refusal();
|
|
41
|
+
const [major, minor] = value.version.split('.').map(Number);
|
|
42
|
+
if (major < 22 || (major === 22 && minor < 14))
|
|
43
|
+
throw refusal();
|
|
44
|
+
const path = realpathSync(value.path);
|
|
45
|
+
return { path, version: value.version, executableSha256: hash(readFileSync(path)) };
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
throw refusal();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/** Called before root admission/resume; declarative commands never reach it. */
|
|
52
|
+
export function assertAuthoredRuntimeAvailable() {
|
|
53
|
+
if (process.versions['bun'] === undefined)
|
|
54
|
+
assertAuthoredPromiseHooks();
|
|
55
|
+
else
|
|
56
|
+
nodeAuthority();
|
|
57
|
+
}
|
|
58
|
+
/** Bun retains the root lease and local workers. Only the authored body uses Node. */
|
|
59
|
+
export async function runAuthoredInNode(metadata, socketPath, rootRunId, options) {
|
|
60
|
+
const authority = nodeAuthority();
|
|
61
|
+
const source = embeddedSource;
|
|
62
|
+
const runtime = {
|
|
63
|
+
kind: 'node', version: authority.version,
|
|
64
|
+
executableSha256: authority.executableSha256, payloadSha256: hash(source),
|
|
65
|
+
};
|
|
66
|
+
options.signal?.throwIfAborted();
|
|
67
|
+
const directory = await mkdtemp(join(tmpdir(), 'flows-authored-node-'));
|
|
68
|
+
const entry = join(directory, 'runner.mjs');
|
|
69
|
+
try {
|
|
70
|
+
await writeFile(entry, source, { mode: 0o400, flag: 'wx' });
|
|
71
|
+
if (hash(await readFile(entry)) !== runtime.payloadSha256)
|
|
72
|
+
throw refusal();
|
|
73
|
+
const child = spawn(authority.path, ['--experimental-transform-types', entry, String(process.pid)], {
|
|
74
|
+
cwd: process.cwd(), env: process.env,
|
|
75
|
+
stdio: ['pipe', 'inherit', 'inherit', 'pipe'],
|
|
76
|
+
});
|
|
77
|
+
const result = await new Promise((resolve, reject) => {
|
|
78
|
+
const channelKey = randomBytes(32).toString('hex');
|
|
79
|
+
let expectedSequence = 1;
|
|
80
|
+
let buffer = '', ready = false, result;
|
|
81
|
+
let failure, killTimer;
|
|
82
|
+
const stop = (error) => {
|
|
83
|
+
failure ??= error;
|
|
84
|
+
child.kill('SIGTERM');
|
|
85
|
+
killTimer ??= setTimeout(() => child.kill('SIGKILL'), 2500);
|
|
86
|
+
killTimer.unref();
|
|
87
|
+
};
|
|
88
|
+
const abort = () => stop(new Error('authored root execution was aborted'));
|
|
89
|
+
options.signal?.addEventListener('abort', abort, { once: true });
|
|
90
|
+
if (options.signal?.aborted)
|
|
91
|
+
abort();
|
|
92
|
+
// Do not intercept the parent's signals: its normal exit keeps the root
|
|
93
|
+
// recoverable. The child observes parent EOF (and shared process-group signals).
|
|
94
|
+
const startupTimer = setTimeout(() => stop(new Error('authored runtime readiness timed out')), 10_000);
|
|
95
|
+
startupTimer.unref();
|
|
96
|
+
const pipe = child.stdio[3];
|
|
97
|
+
pipe.setEncoding('utf8');
|
|
98
|
+
pipe.on('data', (chunk) => {
|
|
99
|
+
buffer += chunk;
|
|
100
|
+
if (Buffer.byteLength(buffer) > 16 * 1024 * 1024) {
|
|
101
|
+
stop(new Error('authored runtime response exceeded limit'));
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
for (;;) {
|
|
105
|
+
const end = buffer.indexOf('\n');
|
|
106
|
+
if (end < 0)
|
|
107
|
+
break;
|
|
108
|
+
const line = buffer.slice(0, end);
|
|
109
|
+
buffer = buffer.slice(end + 1);
|
|
110
|
+
try {
|
|
111
|
+
let message = JSON.parse(line);
|
|
112
|
+
if (ready) {
|
|
113
|
+
if (message.seq !== expectedSequence || typeof message.payload !== 'string'
|
|
114
|
+
|| typeof message.mac !== 'string' || !/^[a-f0-9]{64}$/.test(message.mac)) {
|
|
115
|
+
throw new Error('invalid authored runtime authenticated frame');
|
|
116
|
+
}
|
|
117
|
+
const expected = createHmac('sha256', channelKey)
|
|
118
|
+
.update(`${expectedSequence}\0${message.payload}`).digest();
|
|
119
|
+
if (!timingSafeEqual(expected, Buffer.from(message.mac, 'hex'))) {
|
|
120
|
+
throw new Error('invalid authored runtime authenticated frame');
|
|
121
|
+
}
|
|
122
|
+
expectedSequence++;
|
|
123
|
+
message = JSON.parse(message.payload);
|
|
124
|
+
}
|
|
125
|
+
if (message.type === 'ready' && !ready && !result) {
|
|
126
|
+
if (JSON.stringify(message.runtime) !== JSON.stringify(runtime))
|
|
127
|
+
throw refusal();
|
|
128
|
+
ready = true;
|
|
129
|
+
clearTimeout(startupTimer);
|
|
130
|
+
// Keep stdin open: EOF tells the child its lease-owning parent died.
|
|
131
|
+
child.stdin.write(JSON.stringify({ channelKey, metadata, socketPath, rootRunId,
|
|
132
|
+
dataDir: options.dataDir, localAgentStream: options.localAgentStream }) + '\n');
|
|
133
|
+
}
|
|
134
|
+
else if (!ready || result)
|
|
135
|
+
throw new Error('unexpected authored runtime message');
|
|
136
|
+
else if (message.type === 'progress')
|
|
137
|
+
options.onProgress?.(message.event);
|
|
138
|
+
else if (message.type === 'wait')
|
|
139
|
+
options.onWait?.(message.event);
|
|
140
|
+
else if (message.type === 'result')
|
|
141
|
+
result = { ...message.result, executionRuntime: runtime };
|
|
142
|
+
else if (message.type === 'error') {
|
|
143
|
+
failure = typeof message.code === 'string'
|
|
144
|
+
? new AuthoredFlowExecutionError(message.code, message.message, message.completionReason, message.runId)
|
|
145
|
+
: new Error(message.message);
|
|
146
|
+
}
|
|
147
|
+
else
|
|
148
|
+
throw new Error('unknown authored runtime message');
|
|
149
|
+
}
|
|
150
|
+
catch (error) {
|
|
151
|
+
stop(error instanceof Error ? error : new Error('invalid authored runtime message'));
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
child.stdin.on('error', () => stop(new Error('authored runtime request pipe closed')));
|
|
156
|
+
pipe.on('error', () => stop(new Error('authored runtime result pipe failed')));
|
|
157
|
+
child.once('error', () => { failure = refusal(); });
|
|
158
|
+
child.once('close', (code) => {
|
|
159
|
+
clearTimeout(startupTimer);
|
|
160
|
+
if (killTimer !== undefined)
|
|
161
|
+
clearTimeout(killTimer);
|
|
162
|
+
options.signal?.removeEventListener('abort', abort);
|
|
163
|
+
if (failure)
|
|
164
|
+
reject(failure);
|
|
165
|
+
else if (code !== 0 || !ready || result === undefined || buffer.length > 0)
|
|
166
|
+
reject(new Error('authored runtime exited without a complete result'));
|
|
167
|
+
else
|
|
168
|
+
resolve(result);
|
|
169
|
+
});
|
|
170
|
+
});
|
|
171
|
+
await verifyAuthoredNodeResult(result, metadata, rootRunId, socketPath);
|
|
172
|
+
return result;
|
|
173
|
+
}
|
|
174
|
+
finally {
|
|
175
|
+
await rm(directory, { recursive: true, force: true });
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
/** The IPC frame is a claim, not a durable terminal fact or a sandbox boundary. */
|
|
179
|
+
export async function verifyAuthoredNodeResult(result, metadata, rootRunId, socketPath) {
|
|
180
|
+
const invalid = () => { throw new Error('authored runtime result has no matching durable completion'); };
|
|
181
|
+
if (result.rootRunId !== rootRunId || result.name !== metadata.flowName
|
|
182
|
+
|| !['success', 'needs_human'].includes(result.completionReason)
|
|
183
|
+
|| !Array.isArray(result.journalSteps) || result.journalSteps.length === 0)
|
|
184
|
+
invalid();
|
|
185
|
+
const terminal = result.journalSteps.at(-1);
|
|
186
|
+
if (!terminal || !/^complete-[1-9][0-9]*$/.test(terminal.id))
|
|
187
|
+
invalid();
|
|
188
|
+
const count = Number(terminal.id.slice('complete-'.length));
|
|
189
|
+
if (!Number.isSafeInteger(count) || result.journalSteps.length !== count)
|
|
190
|
+
invalid();
|
|
191
|
+
const ordinal = (id) => Number(/-([1-9][0-9]*)$/.exec(id)?.[1]);
|
|
192
|
+
// Parallel awaits may finish in either order; validate a copy in declaration order.
|
|
193
|
+
const ordered = [...result.journalSteps].sort((a, b) => ordinal(a.id) - ordinal(b.id));
|
|
194
|
+
const runs = new Set();
|
|
195
|
+
const journal = new JournalClient(socketPath);
|
|
196
|
+
await journal.connect();
|
|
197
|
+
try {
|
|
198
|
+
await journal.hello('flows-authored-result-verifier');
|
|
199
|
+
for (const [index, claimed] of ordered.entries()) {
|
|
200
|
+
if (!claimed || typeof claimed.id !== 'string' || typeof claimed.runId !== 'string'
|
|
201
|
+
|| ordinal(claimed.id) !== index + 1 || claimed.completionReason !== 'success'
|
|
202
|
+
|| runs.has(claimed.runId))
|
|
203
|
+
invalid();
|
|
204
|
+
runs.add(claimed.runId);
|
|
205
|
+
const state = await journal.runGet(claimed.runId);
|
|
206
|
+
if (state.run_id !== claimed.runId || state.status !== 'completed'
|
|
207
|
+
|| state.steps[claimed.id]?.state !== 'done')
|
|
208
|
+
invalid();
|
|
209
|
+
const entries = [];
|
|
210
|
+
let fromSeq = 1;
|
|
211
|
+
for (;;) {
|
|
212
|
+
const page = (await journal.journalRead(claimed.runId, fromSeq, 100)).entries;
|
|
213
|
+
if (page.length === 0)
|
|
214
|
+
break;
|
|
215
|
+
for (const raw of page) {
|
|
216
|
+
const entry = raw;
|
|
217
|
+
if (!Number.isSafeInteger(entry?.seq) || entry.seq < fromSeq)
|
|
218
|
+
invalid();
|
|
219
|
+
fromSeq = entry.seq + 1;
|
|
220
|
+
// Keep only completion evidence; streaming logs can span many pages.
|
|
221
|
+
if (['run.spawned', 'step.completed', 'run.completed'].includes(entry.entry_type))
|
|
222
|
+
entries.push(entry);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
const spec = entries.find(entry => entry.entry_type === 'run.spawned')?.payload?.spec;
|
|
226
|
+
const step = spec?.steps?.[0];
|
|
227
|
+
const completed = entries.filter(entry => entry.entry_type === 'step.completed' && entry.step_id === claimed.id);
|
|
228
|
+
const terminalFacts = entries.filter(entry => entry.entry_type === 'run.completed');
|
|
229
|
+
if (spec?.name !== `${metadata.flowName}/${claimed.id}` || spec?.steps?.length !== 1
|
|
230
|
+
|| step?.id !== claimed.id || completed.length !== 1
|
|
231
|
+
|| completed[0]?.payload?.completionReason !== 'success'
|
|
232
|
+
|| terminalFacts.length !== 1 || terminalFacts[0]?.payload?.completionReason !== 'success')
|
|
233
|
+
invalid();
|
|
234
|
+
if (claimed === terminal) {
|
|
235
|
+
const command = result.completionReason === 'needs_human'
|
|
236
|
+
? `printf '%s' '{"completionReason":"needs_human"}'` : ':';
|
|
237
|
+
if (step?.type !== 'deterministic' || step.command !== command)
|
|
238
|
+
invalid();
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
finally {
|
|
243
|
+
journal.close();
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
//# sourceMappingURL=authored-node-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authored-node-runner.js","sourceRoot":"","sources":["../src/authored-node-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,5 +12,5 @@ export declare class PluginStepError extends AuthoredFlowExecutionError {
|
|
|
12
12
|
* The Plugin receipt lives in step.completed.output: { type, input, output, ... }.
|
|
13
13
|
* A private stream routes the step to this short-lived SDK worker exclusively.
|
|
14
14
|
*/
|
|
15
|
-
export declare function runPluginEffect(journal: JournalClient, flowName: string, id: string, plugin: LoadedPlugin, verb: PluginVerb, args: unknown, journalSteps: AuthoredFlowJournalStep[], budget: AuthoredBudget): Promise<unknown>;
|
|
15
|
+
export declare function runPluginEffect(journal: JournalClient, flowName: string, id: string, plugin: LoadedPlugin, verb: PluginVerb, args: unknown, journalSteps: AuthoredFlowJournalStep[], budget: AuthoredBudget, rootRunId?: string): Promise<unknown>;
|
|
16
16
|
//# sourceMappingURL=authored-plugin-effect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authored-plugin-effect.d.ts","sourceRoot":"","sources":["../src/authored-plugin-effect.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"authored-plugin-effect.d.ts","sourceRoot":"","sources":["../src/authored-plugin-effect.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAK3E,qBAAa,eAAgB,SAAQ,0BAA0B;IACjD,QAAQ,CAAC,UAAU,EAAE,MAAM;gBAAlB,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;CAGvD;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAC5F,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,EAAE,MAAM,EAAE,cAAc,EAC9E,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,OAAO,CAAC,CAwHlB"}
|