@relayflows/sdk 2.0.55 → 2.0.56
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/authored-broker.d.ts +13 -0
- package/dist/authored-broker.d.ts.map +1 -0
- package/dist/authored-broker.js +75 -0
- package/dist/authored-broker.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 +8 -2
- package/dist/authored-budget.js.map +1 -1
- package/dist/authored-flow-error.d.ts +6 -0
- 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 +11 -0
- package/dist/authored-flow-executor.d.ts.map +1 -1
- package/dist/authored-flow-executor.js +104 -20
- package/dist/authored-flow-executor.js.map +1 -1
- package/dist/authored-flow-loader.d.ts.map +1 -1
- package/dist/authored-flow-loader.js +42 -3
- package/dist/authored-flow-loader.js.map +1 -1
- package/dist/authored-helper-effect.d.ts.map +1 -1
- package/dist/authored-helper-effect.js +1 -1
- package/dist/authored-helper-effect.js.map +1 -1
- package/dist/authored-hooks.d.ts +2 -1
- package/dist/authored-hooks.d.ts.map +1 -1
- package/dist/authored-hooks.js +2 -2
- package/dist/authored-hooks.js.map +1 -1
- package/dist/authored-human.d.ts +18 -0
- package/dist/authored-human.d.ts.map +1 -1
- package/dist/authored-human.js +32 -4
- package/dist/authored-human.js.map +1 -1
- package/dist/authored-mcp.d.ts.map +1 -1
- package/dist/authored-mcp.js +3 -2
- package/dist/authored-mcp.js.map +1 -1
- package/dist/authored-node-entry.js +4 -0
- package/dist/authored-node-entry.js.map +1 -1
- package/dist/authored-node-runner.d.ts.map +1 -1
- package/dist/authored-node-runner.js +1 -0
- package/dist/authored-node-runner.js.map +1 -1
- package/dist/authored-plugin-effect.d.ts.map +1 -1
- package/dist/authored-plugin-effect.js +3 -2
- package/dist/authored-plugin-effect.js.map +1 -1
- package/dist/authored-preflight.d.ts.map +1 -1
- package/dist/authored-preflight.js +2 -1
- package/dist/authored-preflight.js.map +1 -1
- package/dist/authored-root.d.ts.map +1 -1
- package/dist/authored-root.js +13 -3
- package/dist/authored-root.js.map +1 -1
- package/dist/authored-serial-ordinals.d.ts +41 -0
- package/dist/authored-serial-ordinals.d.ts.map +1 -0
- package/dist/authored-serial-ordinals.js +45 -0
- package/dist/authored-serial-ordinals.js.map +1 -0
- package/dist/authored-worker-step.d.ts +5 -1
- package/dist/authored-worker-step.d.ts.map +1 -1
- package/dist/authored-worker-step.js +19 -2
- package/dist/authored-worker-step.js.map +1 -1
- package/dist/budget-preflight.d.ts.map +1 -1
- package/dist/budget-preflight.js +11 -2
- package/dist/budget-preflight.js.map +1 -1
- package/dist/bundle-transport.d.ts +2 -0
- package/dist/bundle-transport.d.ts.map +1 -1
- package/dist/bundle-transport.js +4 -0
- package/dist/bundle-transport.js.map +1 -1
- package/dist/cached-flow-runtime.d.ts +3 -0
- package/dist/cached-flow-runtime.d.ts.map +1 -0
- package/dist/cached-flow-runtime.js +37 -0
- package/dist/cached-flow-runtime.js.map +1 -0
- package/dist/cli/check.d.ts.map +1 -1
- package/dist/cli/check.js +13 -1
- package/dist/cli/check.js.map +1 -1
- package/dist/cli/cloud-deploy.js +6 -5
- package/dist/cli/cloud-deploy.js.map +1 -1
- package/dist/cli/cloud-mirror-session.d.ts +8 -2
- package/dist/cli/cloud-mirror-session.d.ts.map +1 -1
- package/dist/cli/cloud-mirror-session.js +20 -27
- package/dist/cli/cloud-mirror-session.js.map +1 -1
- package/dist/cli/direct-run.d.ts.map +1 -1
- package/dist/cli/direct-run.js +2 -1
- package/dist/cli/direct-run.js.map +1 -1
- package/dist/cli/run.d.ts.map +1 -1
- package/dist/cli/run.js +19 -4
- package/dist/cli/run.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +39 -18
- package/dist/cli.js.map +1 -1
- package/dist/cloud-deploy.d.ts +3 -3
- package/dist/cloud-deploy.d.ts.map +1 -1
- package/dist/cloud-deploy.js +15 -9
- package/dist/cloud-deploy.js.map +1 -1
- package/dist/cloud-flow-source.d.ts +13 -0
- package/dist/cloud-flow-source.d.ts.map +1 -0
- package/dist/cloud-flow-source.js +55 -0
- package/dist/cloud-flow-source.js.map +1 -0
- package/dist/cloud-mirror-transport.d.ts +2 -0
- package/dist/cloud-mirror-transport.d.ts.map +1 -1
- package/dist/cloud-mirror-transport.js +2 -0
- package/dist/cloud-mirror-transport.js.map +1 -1
- package/dist/cloud-mirror.d.ts.map +1 -1
- package/dist/cloud-mirror.js +10 -1
- package/dist/cloud-mirror.js.map +1 -1
- package/dist/communication/broker-preflight.d.ts +3 -0
- package/dist/communication/broker-preflight.d.ts.map +1 -0
- package/dist/communication/broker-preflight.js +22 -0
- package/dist/communication/broker-preflight.js.map +1 -0
- package/dist/communication/broker-spec.d.ts +20 -0
- package/dist/communication/broker-spec.d.ts.map +1 -0
- package/dist/communication/broker-spec.js +46 -0
- package/dist/communication/broker-spec.js.map +1 -0
- package/dist/communication/broker-worker.d.ts +17 -0
- package/dist/communication/broker-worker.d.ts.map +1 -0
- package/dist/communication/broker-worker.js +214 -0
- package/dist/communication/broker-worker.js.map +1 -0
- package/dist/communication/pty.d.ts +29 -0
- package/dist/communication/pty.d.ts.map +1 -0
- package/dist/communication/pty.js +40 -0
- package/dist/communication/pty.js.map +1 -0
- package/dist/communication/relay.d.ts +18 -0
- package/dist/communication/relay.d.ts.map +1 -1
- package/dist/communication/relay.js +4 -0
- package/dist/communication/relay.js.map +1 -1
- package/dist/communication/skills.d.ts +3 -0
- package/dist/communication/skills.d.ts.map +1 -0
- package/dist/communication/skills.js +17 -0
- package/dist/communication/skills.js.map +1 -0
- package/dist/communication/worker.d.ts.map +1 -1
- package/dist/communication/worker.js +9 -26
- package/dist/communication/worker.js.map +1 -1
- package/dist/failure-kinds.d.ts +1 -1
- package/dist/failure-kinds.d.ts.map +1 -1
- package/dist/failure-kinds.js +2 -0
- package/dist/failure-kinds.js.map +1 -1
- package/dist/plugin-manifest.js +1 -1
- package/dist/plugin-manifest.js.map +1 -1
- package/dist/preflight.d.ts.map +1 -1
- package/dist/preflight.js +2 -1
- package/dist/preflight.js.map +1 -1
- package/dist/worker.d.ts +1 -0
- package/dist/worker.d.ts.map +1 -1
- package/dist/worker.js +12 -0
- package/dist/worker.js.map +1 -1
- package/package.json +2 -2
- package/src/authored-broker.ts +73 -0
- package/src/authored-budget.ts +6 -2
- package/src/authored-flow-error.ts +6 -0
- package/src/authored-flow-executor.ts +115 -20
- package/src/authored-flow-loader.ts +43 -3
- package/src/authored-helper-effect.ts +2 -1
- package/src/authored-hooks.ts +4 -3
- package/src/authored-human.ts +35 -4
- package/src/authored-mcp.ts +7 -2
- package/src/authored-node-entry.ts +4 -1
- package/src/authored-node-runner.ts +1 -0
- package/src/authored-plugin-effect.ts +7 -2
- package/src/authored-preflight.ts +2 -1
- package/src/authored-root.ts +13 -3
- package/src/authored-serial-ordinals.ts +76 -0
- package/src/authored-worker-step.ts +17 -2
- package/src/budget-preflight.ts +9 -1
- package/src/bundle-transport.ts +4 -0
- package/src/cached-flow-runtime.ts +32 -0
- package/src/cli/check.ts +11 -1
- package/src/cli/cloud-deploy.ts +5 -5
- package/src/cli/cloud-mirror-session.ts +23 -29
- package/src/cli/direct-run.ts +2 -1
- package/src/cli/run.ts +18 -3
- package/src/cli.ts +31 -13
- package/src/cloud-deploy.ts +19 -14
- package/src/cloud-flow-source.ts +58 -0
- package/src/cloud-mirror-transport.ts +4 -0
- package/src/cloud-mirror.ts +9 -1
- package/src/communication/broker-preflight.ts +22 -0
- package/src/communication/broker-spec.ts +48 -0
- package/src/communication/broker-worker.ts +198 -0
- package/src/communication/pty.ts +47 -0
- package/src/communication/relay.ts +12 -1
- package/src/communication/skills.ts +16 -0
- package/src/communication/worker.ts +9 -26
- package/src/failure-kinds.ts +2 -0
- package/src/plugin-manifest.ts +1 -1
- package/src/preflight.ts +3 -1
- package/src/worker.ts +11 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { AgentOptions, AgentResult, NamedGate } from '@relayflows/surface';
|
|
2
|
+
import type { StepSpec } from './spec.js';
|
|
3
|
+
/** Broker options stay in a journaled instruction; the kernel only sees agent steps. */
|
|
4
|
+
export declare function authoredBroker(definition: {
|
|
5
|
+
name: string;
|
|
6
|
+
}, rootRunId: string | undefined, localStream: string | undefined, run: (step: StepSpec) => Promise<unknown>): {
|
|
7
|
+
agent(id: string, name: string, options: AgentOptions, verification?: NamedGate, secrets?: string[]): Promise<AgentResult>;
|
|
8
|
+
message(id: string, name: string, text: string, options?: {
|
|
9
|
+
timeout?: string | number;
|
|
10
|
+
}, verification?: NamedGate): Promise<AgentResult>;
|
|
11
|
+
release(id: string, name: string): Promise<void>;
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=authored-broker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authored-broker.d.ts","sourceRoot":"","sources":["../src/authored-broker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAM1C,wFAAwF;AACxF,wBAAgB,cAAc,CAAC,UAAU,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,EACxF,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC,OAAO,CAAC;cAoBxD,MAAM,QAAQ,MAAM,WAAW,YAAY,iBAAiB,SAAS,YACzE,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;gBAqBzB,MAAM,QAAQ,MAAM,QAAQ,MAAM,YAAY;QAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,iBAC5E,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;gBAQ/B,MAAM,QAAQ,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;EAUzD"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
2
|
+
import { parseAgentStepTimeout } from './compile.js';
|
|
3
|
+
import { BROKER_TYPE, brokerAgentName, brokerOptionsError } from './communication/broker-spec.js';
|
|
4
|
+
import { AuthoredFlowExecutionError } from './authored-flow-error.js';
|
|
5
|
+
/** Broker options stay in a journaled instruction; the kernel only sees agent steps. */
|
|
6
|
+
export function authoredBroker(definition, rootRunId, localStream, run) {
|
|
7
|
+
const owner = rootRunId ?? randomUUID();
|
|
8
|
+
const declarations = new Map();
|
|
9
|
+
const invalid = (message) => { throw new AuthoredFlowExecutionError('agent_cli_unresolved', message); };
|
|
10
|
+
const execute = async (id, declaration, verification) => {
|
|
11
|
+
const { instruction, cli, model, secrets } = declaration;
|
|
12
|
+
const output = await run({ id, type: 'agent', instruction: JSON.stringify(instruction), cli, model,
|
|
13
|
+
timeoutMs: instruction.timeoutMs,
|
|
14
|
+
// Retained sessions must return to the same worker, including after a child completes.
|
|
15
|
+
surfaces: localStream === undefined ? undefined : { streams: [{ stream: localStream }] },
|
|
16
|
+
maxIterations: 1, transportRetries: 0,
|
|
17
|
+
...(secrets?.length ? { secrets } : {}),
|
|
18
|
+
...(verification === undefined ? {} : { verification }) });
|
|
19
|
+
if (!output || typeof output !== 'object' || !('completionReason' in output)) {
|
|
20
|
+
throw new AuthoredFlowExecutionError('journal_protocol_violation', 'Broker step produced an invalid result');
|
|
21
|
+
}
|
|
22
|
+
return output;
|
|
23
|
+
};
|
|
24
|
+
const lookup = (name) => declarations.get(name) ?? invalid(`No retained broker agent named ${name} in this flow`);
|
|
25
|
+
return {
|
|
26
|
+
async agent(id, name, options, verification, secrets) {
|
|
27
|
+
const problem = brokerOptionsError(options);
|
|
28
|
+
if (problem)
|
|
29
|
+
invalid(`f.agent options: ${problem}`);
|
|
30
|
+
if (options.keepAlive && localStream === undefined)
|
|
31
|
+
invalid('Retained broker agents require a local agent worker stream');
|
|
32
|
+
if (options.keepAlive && verification !== undefined)
|
|
33
|
+
invalid('Retained broker agents do not support gates; validate their result in a later step');
|
|
34
|
+
if (typeof options.task !== 'string' || !options.task.trim())
|
|
35
|
+
invalid('f.agent task must be nonempty');
|
|
36
|
+
if (options.workspace !== undefined || options.permissions !== undefined)
|
|
37
|
+
invalid('Broker agents use cwd; workspace and permissions are not supported');
|
|
38
|
+
if ((options.maxIterations ?? 1) !== 1 || (options.transportRetries ?? 0) !== 0
|
|
39
|
+
|| options.recoveryMode !== undefined)
|
|
40
|
+
invalid('Broker sessions require maxIterations 1, transportRetries 0, and no recoveryMode');
|
|
41
|
+
if (typeof name !== 'string' || !name.trim())
|
|
42
|
+
invalid('Broker agent name must be nonempty');
|
|
43
|
+
const instruction = { type: BROKER_TYPE, operation: 'spawn', owner,
|
|
44
|
+
flow: definition.name, step: name, agentName: brokerAgentName(definition.name, name, owner, id),
|
|
45
|
+
task: options.task, cwd: options.cwd, skills: options.skills ?? [],
|
|
46
|
+
channel: options.channel ?? `flow-${owner}`, keepAlive: options.keepAlive ?? false,
|
|
47
|
+
timeoutMs: options.timeout === undefined ? 3_600_000 : parseAgentStepTimeout(options.timeout) };
|
|
48
|
+
const declaration = { instruction, cli: options.cli, model: options.model,
|
|
49
|
+
...(secrets?.length ? { secrets } : {}) };
|
|
50
|
+
const result = await execute(id, declaration, verification);
|
|
51
|
+
if (instruction.keepAlive && result.completionReason === 'success')
|
|
52
|
+
declarations.set(instruction.agentName, declaration);
|
|
53
|
+
return result;
|
|
54
|
+
},
|
|
55
|
+
async message(id, name, text, options, verification) {
|
|
56
|
+
const declaration = lookup(name);
|
|
57
|
+
if (typeof text !== 'string' || !text.trim())
|
|
58
|
+
invalid('f.message text must be nonempty');
|
|
59
|
+
const result = await execute(id, { ...declaration, instruction: { ...declaration.instruction,
|
|
60
|
+
operation: 'message', task: text, timeoutMs: options?.timeout === undefined
|
|
61
|
+
? declaration.instruction.timeoutMs : parseAgentStepTimeout(options.timeout) } }, verification);
|
|
62
|
+
return result;
|
|
63
|
+
},
|
|
64
|
+
async release(id, name) {
|
|
65
|
+
const declaration = lookup(name);
|
|
66
|
+
await run({ id, type: 'agent', cli: declaration.cli, model: declaration.model,
|
|
67
|
+
instruction: JSON.stringify({ ...declaration.instruction, operation: 'release' }),
|
|
68
|
+
surfaces: localStream === undefined ? undefined : { streams: [{ stream: localStream }] },
|
|
69
|
+
...(declaration.secrets?.length ? { secrets: declaration.secrets } : {}),
|
|
70
|
+
maxIterations: 1, transportRetries: 0 });
|
|
71
|
+
// Keep the declaration so an explicit release remains idempotent.
|
|
72
|
+
},
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=authored-broker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authored-broker.js","sourceRoot":"","sources":["../src/authored-broker.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,7 +32,7 @@ export declare class AuthoredBudget {
|
|
|
32
32
|
private tail;
|
|
33
33
|
private charges;
|
|
34
34
|
constructor(header: unknown);
|
|
35
|
-
execute<T>(journal: JournalClient, spec: KernelRunSpec, consume: (outcome: RunOutcome) => Promise<T>, admissionKey?: string, isolatedStart?: boolean): Promise<T>;
|
|
35
|
+
execute<T>(journal: JournalClient, spec: KernelRunSpec, consume: (outcome: RunOutcome) => Promise<T>, admissionKey?: string, isolatedStart?: boolean, cleanup?: boolean): Promise<T>;
|
|
36
36
|
}
|
|
37
37
|
export {};
|
|
38
38
|
//# sourceMappingURL=authored-budget.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authored-budget.d.ts","sourceRoot":"","sources":["../src/authored-budget.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAoB,aAAa,EAAE,MAAM,WAAW,CAAC;AAEnF;;;;;;;GAOG;AACH,UAAU,MAAM;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,KAAK,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAqCjC;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,MAAM,CAyBzG;AAED,kFAAkF;AAClF,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA+B;IACrD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,IAAI,CAAuC;IACnD,OAAO,CAAC,OAAO,CAAgB;gBAEnB,MAAM,EAAE,OAAO;IASrB,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAC1D,OAAO,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,MAAM,EACnE,aAAa,UAAQ,GAAG,OAAO,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"authored-budget.d.ts","sourceRoot":"","sources":["../src/authored-budget.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAoB,aAAa,EAAE,MAAM,WAAW,CAAC;AAEnF;;;;;;;GAOG;AACH,UAAU,MAAM;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,KAAK,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAqCjC;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,MAAM,CAyBzG;AAED,kFAAkF;AAClF,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA+B;IACrD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,IAAI,CAAuC;IACnD,OAAO,CAAC,OAAO,CAAgB;gBAEnB,MAAM,EAAE,OAAO;IASrB,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAC1D,OAAO,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,MAAM,EACnE,aAAa,UAAQ,EAAE,OAAO,UAAQ,GAAG,OAAO,CAAC,CAAC,CAAC;CA6DtD"}
|
package/dist/authored-budget.js
CHANGED
|
@@ -85,7 +85,7 @@ export class AuthoredBudget {
|
|
|
85
85
|
throw error;
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
|
-
async execute(journal, spec, consume, admissionKey, isolatedStart = false) {
|
|
88
|
+
async execute(journal, spec, consume, admissionKey, isolatedStart = false, cleanup = false) {
|
|
89
89
|
if (this.limit === undefined)
|
|
90
90
|
return consume(await journal.runStart(spec, undefined, admissionKey, false, isolatedStart));
|
|
91
91
|
const previous = this.tail;
|
|
@@ -93,6 +93,11 @@ export class AuthoredBudget {
|
|
|
93
93
|
this.tail = new Promise(resolve => { release = resolve; });
|
|
94
94
|
await previous;
|
|
95
95
|
try {
|
|
96
|
+
// A broker release stays journaled after a failed gate or an exhausted
|
|
97
|
+
// header. It carries no budget, so the kernel cannot refuse it, and it
|
|
98
|
+
// does not latch another failure over the one that required cleanup.
|
|
99
|
+
if (cleanup)
|
|
100
|
+
return await consume(await journal.runStart(spec, undefined, admissionKey, false, isolatedStart));
|
|
96
101
|
if (this.failed)
|
|
97
102
|
throw new AuthoredFlowExecutionError('step_failed', 'A prior budgeted step did not finish successfully.');
|
|
98
103
|
// Window selection follows journal timestamps, never the SDK host clock.
|
|
@@ -146,7 +151,8 @@ export class AuthoredBudget {
|
|
|
146
151
|
}
|
|
147
152
|
}
|
|
148
153
|
catch (error) {
|
|
149
|
-
|
|
154
|
+
if (!cleanup)
|
|
155
|
+
this.failed = true;
|
|
150
156
|
throw error;
|
|
151
157
|
}
|
|
152
158
|
finally {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authored-budget.js","sourceRoot":"","sources":["../src/authored-budget.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAwBtE,4GAA4G;AAC5G,SAAS,QAAQ,CAAC,EAAU;IAC1B,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IACrB,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC;QAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,OAAO,EAAC,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,EAAC,CAAC;IAAC,CAAC;IACrG,IAAI,CAAC,GAAG,SAAS,KAAK,CAAC;QAAE,OAAO,EAAC,IAAI,EAAE,GAAG,CAAC,GAAG,SAAS,GAAG,EAAE,KAAK,EAAE,CAAC,EAAC,CAAC;IACtE,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,OAAO,EAAC,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,EAAC,CAAC;AAC5C,CAAC;AAED,MAAM,GAAG,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,IAAI,KAAK,GAAG,QAAU,IAAI,MAAM,CAAC,KAAK,GAAG,QAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC;AAEtI;;;;;GAKG;AACH,SAAS,WAAW,CAAC,KAAa,EAAE,KAAa;IAC/C,MAAM,KAAK,GAAG,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChD,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACrC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC;IACjD,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IAC5E,OAAO,KAAK,GAAG,GAAG,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC;AACxD,CAAC;AAED;;;;GAIG;AACH,SAAS,SAAS,CAAC,IAAY,EAAE,KAAa;IAC5C,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IACjD,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC,CAAC;AAC5E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAuB,EAAE,KAAY,EAAE,IAAoB;IAC/F,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,KAAK,CAAC,gBAAgB,KAAK,SAAS,IAAI,KAAK,CAAC,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACtF,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC7E,OAAO,CAAC,IAAI,CAAC,aAAa,IAAI,YAAY,QAAQ,WAAW,CAAC,CAAC;IACjE,CAAC;IACD,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,IAAI,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE,CAAC;QAC5F,MAAM,KAAK,GAAG,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAChE,MAAM,QAAQ,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE;YACvD,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,GAAG,QAAU,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QAClF,OAAO,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,EAAE,YAAY,QAAQ,WAAW,CAAC,CAAC;IACtI,CAAC;IACD,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5F,OAAO,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,YAAY,KAAK,CAAC,UAAU,WAAW,CAAC,CAAC;IAC5F,CAAC;IACD,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;QACnF,OAAO,CAAC,IAAI,CAAC,gBAAgB,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,aAAa,WAAW,CAAC,CAAC;IACtF,CAAC;IACD,IAAI,KAAK,CAAC,cAAc,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;QACtF,OAAO,CAAC,IAAI,CAAC,iBAAiB,KAAK,CAAC,MAAM,YAAY,KAAK,CAAC,cAAc,WAAW,CAAC,CAAC;IACzF,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,EAAE,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC;IAChI,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,+BAA+B,IAAI,GAAG,CAAC;IACxE,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,+CAA+C,CAAC,CAAC,CAAC,6BAA6B,CAAC;IACvH,OAAO,+BAA+B,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC;AAChF,CAAC;AAED,kFAAkF;AAClF,MAAM,OAAO,cAAc;IACR,KAAK,CAA+B;IAC7C,MAAM,GAAG,KAAK,CAAC;IACf,IAAI,GAAqB,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3C,OAAO,GAAa,EAAE,CAAC;IAE/B,YAAY,MAAe;QACzB,IAAI,CAAC;YACH,IAAI,CAAC,KAAK,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QACtF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,iBAAiB;gBAAE,MAAM,IAAI,0BAA0B,CAAC,uBAAuB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YACrH,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CAAI,OAAsB,EAAE,IAAmB,EAC1D,OAA4C,EAAE,YAAqB,EACnE,aAAa,GAAG,KAAK;
|
|
1
|
+
{"version":3,"file":"authored-budget.js","sourceRoot":"","sources":["../src/authored-budget.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,6 +26,12 @@ export type AuthoredFlowExecutionErrorCode = 'helper_writeback_pending' | 'helpe
|
|
|
26
26
|
| 'human_answer_invalid'
|
|
27
27
|
/** `f.human`'s `to` is not one of the documented recipient forms (human-to.ts). */
|
|
28
28
|
| 'human_to_invalid' | 'unsupported_header' | 'unsettled_derived_work' | 'unsupported_promise_lifecycle'
|
|
29
|
+
/**
|
|
30
|
+
* A resumed serial body reached a journaled step id with a different call:
|
|
31
|
+
* concurrent branches resolved in another order than the journaled run.
|
|
32
|
+
* Refused before the step is admitted (authored-serial-ordinals.ts).
|
|
33
|
+
*/
|
|
34
|
+
| 'serial_replay_order_mismatch'
|
|
29
35
|
/** A pinned parallel root cannot dispatch safely in this process environment. */
|
|
30
36
|
| 'unsafe_parallel_runtime' | 'unsupported_workspace_permission' | 'unbounded_subscription' | 'activity_closed' | 'subscription_suspended' | 'unawaited_step' | 'unsupported_verb';
|
|
31
37
|
export declare class AuthoredFlowExecutionError extends Error {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authored-flow-error.d.ts","sourceRoot":"","sources":["../src/authored-flow-error.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"authored-flow-error.d.ts","sourceRoot":"","sources":["../src/authored-flow-error.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authored-flow-error.js","sourceRoot":"","sources":["../src/authored-flow-error.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"authored-flow-error.js","sourceRoot":"","sources":["../src/authored-flow-error.ts"],"names":[],"mappings":"AA2EA,MAAM,OAAO,0BAA2B,SAAQ,KAAK;IAgBxC;IAEA;IAMA;IASA;IACA;IAjCX,qFAAqF;IACrF,SAAS,CAAU;IACnB;;;;;;;;;;OAUG;IACH,SAAS,CAAa;IACtB,YACW,IAAoC,EAC7C,OAAe,EACN,gBAAyE;IAClF;;;;OAIG;IACM,KAAc;IACvB;;;;;;;OAOG;IACM,OAA2B,EAC3B,UAAmC;QAE5C,KAAK,CAAC,GAAG,IAAI,KAAK,OAAO,EAAE,CAAC,CAAC;QApBpB,SAAI,GAAJ,IAAI,CAAgC;QAEpC,qBAAgB,GAAhB,gBAAgB,CAAyD;QAMzE,UAAK,GAAL,KAAK,CAAS;QASd,YAAO,GAAP,OAAO,CAAoB;QAC3B,eAAU,GAAV,UAAU,CAAyB;QAG5C,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAC;IAC3C,CAAC;CACF;AAoCD;;;;;GAKG;AACH,MAAM,OAAO,mBAAoB,SAAQ,0BAA0B;IAC5C;IAArB,YAAqB,IAAuB,EAAE,SAAiB;QAC7D,KAAK,CACH,cAAc,EACd,uBAAuB,IAAI,CAAC,EAAE,cAAc,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,MAAM,GAAG,EAC5F,SAAS,EACT,SAAS,CACV,CAAC;QANiB,SAAI,GAAJ,IAAI,CAAmB;QAO1C,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF"}
|
|
@@ -106,6 +106,17 @@ export interface ExecuteAuthoredFlowOptions {
|
|
|
106
106
|
readonly flowGraph?: readonly LoadedAuthoredFlowNode[];
|
|
107
107
|
/** Internal namespace for descendant step/admission identities. */
|
|
108
108
|
readonly stepPrefix?: string;
|
|
109
|
+
/**
|
|
110
|
+
* The step ids the root's index held when this attempt began, read by the
|
|
111
|
+
* root driver on a re-dispatch and shared with dispatched children, so a
|
|
112
|
+
* serial body is checked against the journal it is replaying
|
|
113
|
+
* (authored-serial-ordinals.ts). Absent on a first attempt: nothing to replay.
|
|
114
|
+
*/
|
|
115
|
+
readonly journaledSteps?: readonly string[];
|
|
116
|
+
/** Root-owned replay refusal, shared with dispatched children so one refusal stops the whole tree. */
|
|
117
|
+
readonly replayLatch?: {
|
|
118
|
+
violation?: AuthoredFlowExecutionError;
|
|
119
|
+
};
|
|
109
120
|
/** Current child depth. Root is zero; dispatch is capped at three. */
|
|
110
121
|
readonly dispatchDepth?: number;
|
|
111
122
|
/** Parent predecessors inherited by the first operation in a child body. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authored-flow-executor.d.ts","sourceRoot":"","sources":["../src/authored-flow-executor.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAKtD,OAAO,EAIL,KAAK,uBAAuB,EAC7B,MAAM,0BAA0B,CAAC;AAelC,OAAO,EAAmD,KAAK,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE/G,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAGhE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EACL,0BAA0B,EAC1B,KAAK,sBAAsB,EAE3B,KAAK,8BAA8B,EACpC,MAAM,0BAA0B,CAAC;AAUlC,OAAO,EAAgB,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"authored-flow-executor.d.ts","sourceRoot":"","sources":["../src/authored-flow-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,12 +21,13 @@ import { observeStep } from './progress.js';
|
|
|
21
21
|
import { parseStepTimeout } from './compile.js';
|
|
22
22
|
import { getAuthoredFlowDefinition } from './authored-flow.js';
|
|
23
23
|
import { AuthoredFlowExecutionError, AuthoredHumanParked, } from './authored-flow-error.js';
|
|
24
|
-
import {
|
|
24
|
+
import { readHumanWait } from './authored-human.js';
|
|
25
25
|
import { parseHumanTo } from './human-to.js';
|
|
26
26
|
import { AuthoredFlowOperation, stopAuthoredOperations, verifyAuthoredOperations, } from './authored-flow-operation.js';
|
|
27
27
|
import { AuthoredFlowLifecycle, parallelPromiseIntrinsicsIntact } from './authored-flow-lifecycle.js';
|
|
28
28
|
import { AuthoredActivities } from './authored-activity.js';
|
|
29
29
|
import { displayLabel } from './authored-step-index.js';
|
|
30
|
+
import { assertSerialOrdinal, serialOrdinals, serialReplayOrderMismatch } from './authored-serial-ordinals.js';
|
|
30
31
|
import { PluginError } from './plugin-manifest.js';
|
|
31
32
|
import { createHookEvaluator } from './authored-hooks.js';
|
|
32
33
|
import { extensionHandlerForHostedDispatch, probeFlowExtension, } from './flow-extension-loader.js';
|
|
@@ -131,12 +132,48 @@ export async function executeAuthoredFlow(handle, journal, input, options = {})
|
|
|
131
132
|
if (options.executionMode === 'parallel')
|
|
132
133
|
rejectParallel(`parallel f.run body attempted ${kind} before admission`);
|
|
133
134
|
};
|
|
135
|
+
// Serial bodies only: parallel ids come from the causal frontier, not one
|
|
136
|
+
// shared counter. A refusal is latched, so an author `catch` around the
|
|
137
|
+
// call cannot let the body go on to admit anything else.
|
|
138
|
+
const journaledSteps = options.executionMode === 'parallel' || options.rootRunId === undefined
|
|
139
|
+
? undefined : options.journaledSteps;
|
|
140
|
+
const ordinals = journaledSteps === undefined
|
|
141
|
+
? undefined : serialOrdinals(journaledSteps, options.stepPrefix ?? '');
|
|
142
|
+
const replayLatch = options.replayLatch ?? {};
|
|
143
|
+
const refuseReplay = (error) => {
|
|
144
|
+
replayLatch.violation ??= error;
|
|
145
|
+
throw replayLatch.violation;
|
|
146
|
+
};
|
|
147
|
+
const assertNoReplayViolation = () => {
|
|
148
|
+
if (replayLatch.violation !== undefined)
|
|
149
|
+
throw replayLatch.violation;
|
|
150
|
+
};
|
|
151
|
+
// Every operation re-checks at start: a step declared before the refusal
|
|
152
|
+
// and awaited after it is refused too, not admitted.
|
|
153
|
+
const assertStartAllowed = (verb) => {
|
|
154
|
+
assertNoReplayViolation();
|
|
155
|
+
assertOperationAllowed(verb, definition.name, requestedCompletion);
|
|
156
|
+
};
|
|
157
|
+
const claimedOrdinals = new Set();
|
|
158
|
+
const serialId = (kind, sequence) => {
|
|
159
|
+
assertNoReplayViolation();
|
|
160
|
+
claimedOrdinals.add(sequence);
|
|
161
|
+
if (ordinals !== undefined) {
|
|
162
|
+
try {
|
|
163
|
+
assertSerialOrdinal(ordinals, kind, sequence);
|
|
164
|
+
}
|
|
165
|
+
catch (error) {
|
|
166
|
+
refuseReplay(error);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
return qualify(`${kind}-${sequence}`);
|
|
170
|
+
};
|
|
134
171
|
const nextId = (kind) => {
|
|
135
172
|
if (parallelViolation !== undefined)
|
|
136
173
|
throw parallelViolation;
|
|
137
|
-
const sequence = nextStep++;
|
|
138
174
|
if (options.executionMode !== 'parallel')
|
|
139
|
-
return
|
|
175
|
+
return serialId(kind, nextStep++);
|
|
176
|
+
const sequence = nextStep++;
|
|
140
177
|
if (kind !== 'run')
|
|
141
178
|
rejectParallel(`parallel f.run body attempted ${kind} before admission`);
|
|
142
179
|
if (!lifecycle.combinatorsObserved())
|
|
@@ -276,7 +313,7 @@ export async function executeAuthoredFlow(handle, journal, input, options = {})
|
|
|
276
313
|
// caller's `.gate(config)` at spec-build time. AuthoredFlowOperation
|
|
277
314
|
// begins after construction returns, so `llmOp` is defined by then.
|
|
278
315
|
let llmOp;
|
|
279
|
-
llmOp = new AuthoredFlowOperation(id, 'llm', () =>
|
|
316
|
+
llmOp = new AuthoredFlowOperation(id, 'llm', () => assertStartAllowed('llm'), () => observeStep(id, 'llm', () => {
|
|
280
317
|
if (typeof prompt === 'string') {
|
|
281
318
|
if (values.length !== 1 || values[0] === undefined) {
|
|
282
319
|
throw new AuthoredFlowExecutionError('llm_cli_unresolved', 'f.llm(prompt, options) requires an output JSON Schema.');
|
|
@@ -303,14 +340,14 @@ export async function executeAuthoredFlow(handle, journal, input, options = {})
|
|
|
303
340
|
const id = nextId('run');
|
|
304
341
|
if (policy === 'record') {
|
|
305
342
|
let recordOp;
|
|
306
|
-
recordOp = new AuthoredFlowOperation(id, 'run', () =>
|
|
343
|
+
recordOp = new AuthoredFlowOperation(id, 'run', () => assertStartAllowed('run'), () => observeStep(id, 'deterministic', () => lowerDeterministic.recording(id, command, leaseMs, recordOp.namedGate, secrets), options.onProgress), lifecycle,
|
|
307
344
|
// No label: a command is not a display name. It carries literal
|
|
308
345
|
// tokens and URLs, and no prefix of it is safe to show (displayLabel).
|
|
309
346
|
{});
|
|
310
347
|
return trackStep(authoredSteps, recordOp);
|
|
311
348
|
}
|
|
312
349
|
let runOp;
|
|
313
|
-
runOp = new AuthoredFlowOperation(id, 'run', () =>
|
|
350
|
+
runOp = new AuthoredFlowOperation(id, 'run', () => assertStartAllowed('run'), () => observeStep(id, 'deterministic', () => lowerDeterministic(id, command, false, leaseMs, runOp.namedGate, secrets), options.onProgress), lifecycle,
|
|
314
351
|
// No label: a command is not a display name. It carries literal
|
|
315
352
|
// tokens and URLs, and no prefix of it is safe to show (displayLabel).
|
|
316
353
|
{});
|
|
@@ -322,8 +359,8 @@ export async function executeAuthoredFlow(handle, journal, input, options = {})
|
|
|
322
359
|
assertOperationAllowed(`slack.${call.verb}`, definition.name, requestedCompletion);
|
|
323
360
|
assertHelperAllowed(call.provider);
|
|
324
361
|
const snapshot = snapshotJsonValue(call, 'f.slack call');
|
|
325
|
-
const id =
|
|
326
|
-
return trackStep(authoredSteps, new AuthoredFlowOperation(id, `slack.${call.verb}`, () =>
|
|
362
|
+
const id = serialId(`slack-${slackRun}`, nextStep++);
|
|
363
|
+
return trackStep(authoredSteps, new AuthoredFlowOperation(id, `slack.${call.verb}`, () => assertStartAllowed(`slack.${call.verb}`), async () => {
|
|
327
364
|
const receipt = await runHelperEffect(journal, definition.name, id, snapshot, options.dataDir ?? dirname(journal.socketPath), journalSteps, options.rootRunId);
|
|
328
365
|
return (call.verb === 'react' ? undefined : receipt);
|
|
329
366
|
}, lifecycle));
|
|
@@ -335,7 +372,21 @@ export async function executeAuthoredFlow(handle, journal, input, options = {})
|
|
|
335
372
|
declared: definition.header?.hooks ?? [],
|
|
336
373
|
extensions: options.extensions ?? [],
|
|
337
374
|
peekStep: () => nextStep,
|
|
338
|
-
restoreStep: (step) => {
|
|
375
|
+
restoreStep: (step, hook) => {
|
|
376
|
+
// A replayed verdict jumps the counter to the watermark it recorded,
|
|
377
|
+
// which also counts ordinals other branches took while the hook ran.
|
|
378
|
+
// Skipping one of those would hand that branch's completed step a fresh
|
|
379
|
+
// ordinal and run it again, so a jump over a journaled ordinal this
|
|
380
|
+
// attempt has not claimed is refused. (It also refuses skipping the
|
|
381
|
+
// hook's own steps; resuming past those already fails at the kernel.)
|
|
382
|
+
for (let ordinal = nextStep; ordinals !== undefined && ordinal < step; ordinal++) {
|
|
383
|
+
const journaled = ordinals.get(ordinal)?.[0];
|
|
384
|
+
if (journaled !== undefined && !claimedOrdinals.has(ordinal)) {
|
|
385
|
+
refuseReplay(serialReplayOrderMismatch(`hook step "${hook}" would skip ordinal ${ordinal}, journaled as step "${journaled.step}"`));
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
nextStep = step;
|
|
389
|
+
},
|
|
339
390
|
...(options.signal === undefined ? {} : { signal: options.signal }),
|
|
340
391
|
});
|
|
341
392
|
const context = {
|
|
@@ -345,8 +396,8 @@ export async function executeAuthoredFlow(handle, journal, input, options = {})
|
|
|
345
396
|
assertOperationAllowed(verb, definition.name, requestedCompletion);
|
|
346
397
|
assertHelperAllowed(call.provider);
|
|
347
398
|
const snapshot = snapshotJsonValue(call, `f.${verb} call`);
|
|
348
|
-
const id =
|
|
349
|
-
return trackStep(authoredSteps, new AuthoredFlowOperation(id, verb, () =>
|
|
399
|
+
const id = serialId(`${call.provider}-${slackRun}`, nextStep++);
|
|
400
|
+
return trackStep(authoredSteps, new AuthoredFlowOperation(id, verb, () => assertStartAllowed(verb), async () => await runHelperEffect(journal, definition.name, id, snapshot, options.dataDir ?? dirname(journal.socketPath), journalSteps, options.rootRunId), lifecycle));
|
|
350
401
|
}),
|
|
351
402
|
slack: {
|
|
352
403
|
post: (channel, text, opts) => slackOperation({ type: 'effect', provider: 'slack', verb: 'post', params: { channel, text, ...(opts === undefined ? {} : { opts }) } }),
|
|
@@ -357,9 +408,9 @@ export async function executeAuthoredFlow(handle, journal, input, options = {})
|
|
|
357
408
|
mcp: buildMcpProxy(checkedMcp.inventory, (server, tool, args, known) => {
|
|
358
409
|
assertOperationAllowed('mcp', definition.name, requestedCompletion);
|
|
359
410
|
const id = nextId('mcp');
|
|
360
|
-
return trackStep(authoredSteps, new AuthoredFlowOperation(id, 'mcp', () =>
|
|
411
|
+
return trackStep(authoredSteps, new AuthoredFlowOperation(id, 'mcp', () => assertStartAllowed('mcp'), () => runMcpEffect(journal, definition.name, id, server, tool, args, known, checkedMcp.servers[server], journalSteps, options.rootRunId), lifecycle));
|
|
361
412
|
}),
|
|
362
|
-
memory: authoredMemory(scriptMemoryScope(flowPath, definition.name), () => { assertParallelRunOnly('memory'); assertOperationAllowed('memory', definition.name, requestedCompletion); }, definition.header.memory?.script !== false, memoryWrites, options.rootRunId === undefined ? undefined : journalLearnLedger(journal, options.rootRunId)),
|
|
413
|
+
memory: authoredMemory(scriptMemoryScope(flowPath, definition.name), () => { assertParallelRunOnly('memory'); assertNoReplayViolation(); assertOperationAllowed('memory', definition.name, requestedCompletion); }, definition.header.memory?.script !== false, memoryWrites, options.rootRunId === undefined ? undefined : journalLearnLedger(journal, options.rootRunId)),
|
|
363
414
|
run: runOperation,
|
|
364
415
|
llm: llmOperation,
|
|
365
416
|
agent(name, options) {
|
|
@@ -368,11 +419,30 @@ export async function executeAuthoredFlow(handle, journal, input, options = {})
|
|
|
368
419
|
// identifies nothing to the kernel; it is the step's label in the DAG.
|
|
369
420
|
const id = nextId('agent');
|
|
370
421
|
let agentOp;
|
|
371
|
-
agentOp = new AuthoredFlowOperation(id, 'agent', () =>
|
|
422
|
+
agentOp = new AuthoredFlowOperation(id, 'agent', () => assertStartAllowed('agent'), () => observeStep(id, 'agent', () => {
|
|
423
|
+
if (options.transport === 'broker' && options.keepAlive
|
|
424
|
+
&& (agentOp.namedGate !== undefined || agentOp.predicateGate !== undefined)) {
|
|
425
|
+
throw new AuthoredFlowExecutionError('agent_cli_unresolved', 'Retained broker agents do not support gates; validate their result in a later step');
|
|
426
|
+
}
|
|
427
|
+
return worker.agent(id, options, agentOp.namedGate, name);
|
|
428
|
+
}, onProgress), lifecycle, displayLabel(typeof name === 'string' ? name : undefined));
|
|
372
429
|
return trackStep(authoredSteps, agentOp);
|
|
373
430
|
},
|
|
431
|
+
message(agentName, text, messageOptions) {
|
|
432
|
+
assertOperationAllowed('message', definition.name, requestedCompletion);
|
|
433
|
+
const id = nextId('agent');
|
|
434
|
+
let messageOp;
|
|
435
|
+
messageOp = new AuthoredFlowOperation(id, 'message', () => assertStartAllowed('message'), () => observeStep(id, 'agent', () => worker.message(id, agentName, text, messageOptions, messageOp.namedGate), onProgress), lifecycle);
|
|
436
|
+
return trackStep(authoredSteps, messageOp);
|
|
437
|
+
},
|
|
438
|
+
release(agentName) {
|
|
439
|
+
assertOperationAllowed('release', definition.name, requestedCompletion);
|
|
440
|
+
const id = nextId('agent');
|
|
441
|
+
return trackStep(authoredSteps, new AuthoredFlowOperation(id, 'release', () => assertStartAllowed('release'), () => observeStep(id, 'agent', () => worker.release(id, agentName), onProgress), lifecycle));
|
|
442
|
+
},
|
|
374
443
|
on(source, activityOptions) {
|
|
375
444
|
assertParallelRunOnly('on');
|
|
445
|
+
assertNoReplayViolation();
|
|
376
446
|
assertOperationAllowed('on', definition.name, requestedCompletion);
|
|
377
447
|
// Activity ids are root-scoped (`activity-N`); a child's own counter would collide.
|
|
378
448
|
if ((options.dispatchDepth ?? 0) > 0) {
|
|
@@ -419,12 +489,19 @@ export async function executeAuthoredFlow(handle, journal, input, options = {})
|
|
|
419
489
|
// `.gate(config)` at spec-build time, so a named gate on the answer is
|
|
420
490
|
// lowered into the `human-N` step's `verification` like any other step's.
|
|
421
491
|
let humanOp;
|
|
422
|
-
humanOp = new AuthoredFlowOperation(id, 'human', () =>
|
|
492
|
+
humanOp = new AuthoredFlowOperation(id, 'human', () => assertStartAllowed('human'), () => observeStep(id, 'deterministic', async () => {
|
|
423
493
|
const rootRunId = options.rootRunId;
|
|
424
494
|
if (rootRunId === undefined) {
|
|
425
495
|
throw new AuthoredFlowExecutionError('unsupported_verb', `f.human needs a durable root to park in; "${id}" has no run to wait on. Run the flow with flows run.`);
|
|
426
496
|
}
|
|
427
|
-
const recorded = await
|
|
497
|
+
const { answer: recorded, asked } = await readHumanWait(journal, rootRunId, id);
|
|
498
|
+
// The answer is keyed by the wait id alone, and a reordered resume
|
|
499
|
+
// can hand that id to a different f.human: never apply an answer
|
|
500
|
+
// to a question nobody was asked.
|
|
501
|
+
if (asked.some(wait => wait.question !== question || wait.to !== to)) {
|
|
502
|
+
refuseReplay(serialReplayOrderMismatch(`ordinal ${id.slice(id.lastIndexOf('-') + 1)} is journaled as human step "${id}" asking a `
|
|
503
|
+
+ 'different question or recipient, but this resume reached it with another f.human'));
|
|
504
|
+
}
|
|
428
505
|
if (recorded === undefined)
|
|
429
506
|
throw new AuthoredHumanParked({ waitId: id, question, to }, rootRunId);
|
|
430
507
|
const record = { human: id, to, answer: recorded.answer,
|
|
@@ -448,13 +525,15 @@ export async function executeAuthoredFlow(handle, journal, input, options = {})
|
|
|
448
525
|
const inputSnapshot = snapshotJsonValue(dispatchInput, `f.dispatch(${JSON.stringify(flowName)}) input`);
|
|
449
526
|
const id = nextId('dispatch');
|
|
450
527
|
let dispatchOp;
|
|
451
|
-
dispatchOp = new AuthoredFlowOperation(id, 'dispatch', () =>
|
|
528
|
+
dispatchOp = new AuthoredFlowOperation(id, 'dispatch', () => assertStartAllowed('dispatch'), async () => {
|
|
452
529
|
const inheritedAfter = stepEdges(id)?.after ?? [];
|
|
453
530
|
const currentHelperAuthority = helperAuthority(definition);
|
|
454
531
|
const allowedHelperProviders = options.allowedHelperProviders === undefined
|
|
455
532
|
? currentHelperAuthority
|
|
456
533
|
: new Set([...currentHelperAuthority].filter(provider => options.allowedHelperProviders.has(provider)));
|
|
457
534
|
const childResult = await executeAuthoredFlow(child.handle, journal, inputSnapshot, {
|
|
535
|
+
...(journaledSteps === undefined ? {} : { journaledSteps }),
|
|
536
|
+
replayLatch,
|
|
458
537
|
getDefinition: child.getDefinition,
|
|
459
538
|
dataDir: options.dataDir,
|
|
460
539
|
flowPath: child.path,
|
|
@@ -500,7 +579,7 @@ export async function executeAuthoredFlow(handle, journal, input, options = {})
|
|
|
500
579
|
assertOperationAllowed('hook', definition.name, requestedCompletion);
|
|
501
580
|
const id = nextId('hook');
|
|
502
581
|
const snapshot = snapshotJsonValue(input, 'f.hook input');
|
|
503
|
-
return trackStep(authoredSteps, new AuthoredFlowOperation(id, 'hook', () =>
|
|
582
|
+
return trackStep(authoredSteps, new AuthoredFlowOperation(id, 'hook', () => assertStartAllowed('hook'), async () => {
|
|
504
583
|
const verdict = await evaluateHook(id, name, snapshot, context);
|
|
505
584
|
const record = { hook: name, step: id, verdict: verdict ? 'pass' : 'fail' };
|
|
506
585
|
const literal = `'${JSON.stringify(record).replaceAll("'", "'\\''")}'`;
|
|
@@ -545,7 +624,7 @@ export async function executeAuthoredFlow(handle, journal, input, options = {})
|
|
|
545
624
|
const label = `${verb.namespace}.${verb.method}`;
|
|
546
625
|
assertOperationAllowed(label, definition.name, requestedCompletion);
|
|
547
626
|
const id = nextId('plugin');
|
|
548
|
-
return trackStep(authoredSteps, new AuthoredFlowOperation(id, label, () =>
|
|
627
|
+
return trackStep(authoredSteps, new AuthoredFlowOperation(id, label, () => assertStartAllowed(label), () => runPluginEffect(journal, definition.name, id, plugin, verb, args, journalSteps, budget, options.rootRunId), lifecycle));
|
|
549
628
|
}));
|
|
550
629
|
let bodyFailed = false;
|
|
551
630
|
let bodyFailure;
|
|
@@ -574,6 +653,10 @@ export async function executeAuthoredFlow(handle, journal, input, options = {})
|
|
|
574
653
|
bodyFailed = true;
|
|
575
654
|
bodyFailure = parallelViolation;
|
|
576
655
|
}
|
|
656
|
+
if (replayLatch.violation !== undefined) {
|
|
657
|
+
bodyFailed = true;
|
|
658
|
+
bodyFailure = replayLatch.violation;
|
|
659
|
+
}
|
|
577
660
|
if (bodyFailed) {
|
|
578
661
|
// Refuse queued work immediately. A slow memory commit must not leave an
|
|
579
662
|
// admission slot open after the body has already failed.
|
|
@@ -667,7 +750,8 @@ export async function executeAuthoredFlow(handle, journal, input, options = {})
|
|
|
667
750
|
// explanation the root had already journaled to `run_admission_conflict`.
|
|
668
751
|
// With no detail there is no environment in the command and nothing to
|
|
669
752
|
// commit, so that path is untouched.
|
|
670
|
-
const terminalId =
|
|
753
|
+
const terminalId = options.executionMode === 'parallel'
|
|
754
|
+
? qualify(`complete-${nextStep}`) : serialId('complete', nextStep);
|
|
671
755
|
const verdict = await commitAuthoredVerdict(journal, options.rootRunId, terminalId, {
|
|
672
756
|
reason: requestedCompletion,
|
|
673
757
|
...(requestedDetail === undefined ? {} : { detail: requestedDetail }),
|