@acpus/runtime 0.8.0 → 0.9.0-alpha.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/dist/.tsbuildinfo +1 -0
- package/dist/admission/input.d.ts +5 -0
- package/dist/admission/input.d.ts.map +1 -0
- package/dist/admission/input.js +17 -0
- package/dist/admission/input.js.map +1 -0
- package/dist/artifacts/rewrite.d.ts +7 -0
- package/dist/artifacts/rewrite.d.ts.map +1 -0
- package/dist/artifacts/rewrite.js +28 -0
- package/dist/artifacts/rewrite.js.map +1 -0
- package/dist/control/agent-overrides.d.ts +4 -0
- package/dist/control/agent-overrides.d.ts.map +1 -0
- package/dist/control/agent-overrides.js +40 -0
- package/dist/control/agent-overrides.js.map +1 -0
- package/dist/daemon/loop.d.ts +16 -0
- package/dist/daemon/loop.d.ts.map +1 -0
- package/dist/daemon/loop.js +191 -0
- package/dist/daemon/loop.js.map +1 -0
- package/dist/daemon/sessions.d.ts +23 -0
- package/dist/daemon/sessions.d.ts.map +1 -0
- package/dist/daemon/sessions.js +190 -0
- package/dist/daemon/sessions.js.map +1 -0
- package/dist/daemon/socket.d.ts +82 -0
- package/dist/daemon/socket.d.ts.map +1 -0
- package/dist/daemon/socket.js +341 -0
- package/dist/daemon/socket.js.map +1 -0
- package/dist/daemon/tick.d.ts +9 -0
- package/dist/daemon/tick.d.ts.map +1 -0
- package/dist/daemon/tick.js +18 -0
- package/dist/daemon/tick.js.map +1 -0
- package/dist/evaluation/admissible.d.ts +2 -0
- package/dist/evaluation/admissible.d.ts.map +1 -0
- package/dist/evaluation/admissible.js +50 -0
- package/dist/evaluation/admissible.js.map +1 -0
- package/dist/evaluation/evaluator.d.ts +14 -0
- package/dist/evaluation/evaluator.d.ts.map +1 -0
- package/dist/evaluation/evaluator.js +34 -0
- package/dist/evaluation/evaluator.js.map +1 -0
- package/dist/evaluation/loop-limit.d.ts +4 -0
- package/dist/evaluation/loop-limit.d.ts.map +1 -0
- package/dist/evaluation/loop-limit.js +9 -0
- package/dist/evaluation/loop-limit.js.map +1 -0
- package/dist/evaluation/schema.d.ts +4 -0
- package/dist/evaluation/schema.d.ts.map +1 -0
- package/dist/evaluation/schema.js +92 -0
- package/dist/evaluation/schema.js.map +1 -0
- package/dist/execution/advance.d.ts +18 -0
- package/dist/execution/advance.d.ts.map +1 -0
- package/dist/execution/advance.js +57 -0
- package/dist/execution/advance.js.map +1 -0
- package/dist/execution/agent-node.d.ts +23 -0
- package/dist/execution/agent-node.d.ts.map +1 -0
- package/dist/execution/agent-node.js +512 -0
- package/dist/execution/agent-node.js.map +1 -0
- package/dist/execution/duration.d.ts +2 -0
- package/dist/execution/duration.d.ts.map +1 -0
- package/dist/execution/duration.js +15 -0
- package/dist/execution/duration.js.map +1 -0
- package/dist/execution/ir.d.ts +3 -0
- package/dist/execution/ir.d.ts.map +1 -0
- package/dist/execution/ir.js +46 -0
- package/dist/execution/ir.js.map +1 -0
- package/dist/execution/scheduler.d.ts +59 -0
- package/dist/execution/scheduler.d.ts.map +1 -0
- package/dist/execution/scheduler.js +306 -0
- package/dist/execution/scheduler.js.map +1 -0
- package/dist/execution/task-executor.d.ts +14 -0
- package/dist/execution/task-executor.d.ts.map +1 -0
- package/dist/execution/task-executor.js +186 -0
- package/dist/execution/task-executor.js.map +1 -0
- package/dist/hooks/config.d.ts +32 -0
- package/dist/hooks/config.d.ts.map +1 -0
- package/dist/hooks/config.js +112 -0
- package/dist/hooks/config.js.map +1 -0
- package/dist/hooks/context.d.ts +50 -0
- package/dist/hooks/context.d.ts.map +1 -0
- package/dist/hooks/context.js +116 -0
- package/dist/hooks/context.js.map +1 -0
- package/dist/hooks/events.d.ts +22 -0
- package/dist/hooks/events.d.ts.map +1 -0
- package/dist/hooks/events.js +41 -0
- package/dist/hooks/events.js.map +1 -0
- package/dist/hooks/journal.d.ts +21 -19
- package/dist/hooks/journal.d.ts.map +1 -1
- package/dist/hooks/journal.js +1 -48
- package/dist/hooks/journal.js.map +1 -1
- package/dist/hooks/loader.d.ts +33 -39
- package/dist/hooks/loader.d.ts.map +1 -1
- package/dist/hooks/loader.js +79 -95
- package/dist/hooks/loader.js.map +1 -1
- package/dist/hooks/runner.d.ts +14 -41
- package/dist/hooks/runner.d.ts.map +1 -1
- package/dist/hooks/runner.js +177 -145
- package/dist/hooks/runner.js.map +1 -1
- package/dist/index.d.ts +13 -28
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -33
- package/dist/index.js.map +1 -1
- package/dist/runs/advance-runtime.d.ts +50 -0
- package/dist/runs/advance-runtime.d.ts.map +1 -0
- package/dist/runs/advance-runtime.js +82 -0
- package/dist/runs/advance-runtime.js.map +1 -0
- package/dist/runs/use-cases.d.ts +111 -0
- package/dist/runs/use-cases.d.ts.map +1 -0
- package/dist/runs/use-cases.js +539 -0
- package/dist/runs/use-cases.js.map +1 -0
- package/dist/scheduler/advance.d.ts +65 -0
- package/dist/scheduler/advance.d.ts.map +1 -0
- package/dist/scheduler/advance.js +435 -0
- package/dist/scheduler/advance.js.map +1 -0
- package/dist/scheduler/control.d.ts +49 -0
- package/dist/scheduler/control.d.ts.map +1 -0
- package/dist/scheduler/control.js +212 -0
- package/dist/scheduler/control.js.map +1 -0
- package/dist/scheduler/event-codec.d.ts +4 -0
- package/dist/scheduler/event-codec.d.ts.map +1 -0
- package/dist/scheduler/event-codec.js +57 -0
- package/dist/scheduler/event-codec.js.map +1 -0
- package/dist/scheduler/events.d.ts +193 -0
- package/dist/scheduler/events.d.ts.map +1 -0
- package/dist/scheduler/events.js +13 -0
- package/dist/scheduler/events.js.map +1 -0
- package/dist/scheduler/fork-seed.d.ts +38 -0
- package/dist/scheduler/fork-seed.d.ts.map +1 -0
- package/dist/scheduler/fork-seed.js +590 -0
- package/dist/scheduler/fork-seed.js.map +1 -0
- package/dist/scheduler/identity.d.ts +8 -0
- package/dist/scheduler/identity.d.ts.map +1 -0
- package/dist/scheduler/identity.js +49 -0
- package/dist/scheduler/identity.js.map +1 -0
- package/dist/scheduler/ir-walk.d.ts +3 -0
- package/dist/scheduler/ir-walk.d.ts.map +1 -0
- package/dist/scheduler/ir-walk.js +25 -0
- package/dist/scheduler/ir-walk.js.map +1 -0
- package/dist/scheduler/limiter.d.ts +7 -0
- package/dist/scheduler/limiter.d.ts.map +1 -0
- package/dist/scheduler/limiter.js +10 -0
- package/dist/scheduler/limiter.js.map +1 -0
- package/dist/scheduler/materialize.d.ts +7 -0
- package/dist/scheduler/materialize.d.ts.map +1 -0
- package/dist/scheduler/materialize.js +756 -0
- package/dist/scheduler/materialize.js.map +1 -0
- package/dist/scheduler/membership.d.ts +12 -0
- package/dist/scheduler/membership.d.ts.map +1 -0
- package/dist/scheduler/membership.js +74 -0
- package/dist/scheduler/membership.js.map +1 -0
- package/dist/scheduler/node-executor.d.ts +15 -0
- package/dist/scheduler/node-executor.d.ts.map +1 -0
- package/dist/scheduler/node-executor.js +69 -0
- package/dist/scheduler/node-executor.js.map +1 -0
- package/dist/scheduler/runtime-runner.d.ts +44 -0
- package/dist/scheduler/runtime-runner.d.ts.map +1 -0
- package/dist/scheduler/runtime-runner.js +155 -0
- package/dist/scheduler/runtime-runner.js.map +1 -0
- package/dist/scheduler/scope.d.ts +6 -0
- package/dist/scheduler/scope.d.ts.map +1 -0
- package/dist/scheduler/scope.js +56 -0
- package/dist/scheduler/scope.js.map +1 -0
- package/dist/scheduler/store-port.d.ts +211 -0
- package/dist/scheduler/store-port.d.ts.map +1 -0
- package/dist/scheduler/store-port.js +28 -0
- package/dist/scheduler/store-port.js.map +1 -0
- package/dist/scheduler/transitions.d.ts +89 -0
- package/dist/scheduler/transitions.d.ts.map +1 -0
- package/dist/scheduler/transitions.js +967 -0
- package/dist/scheduler/transitions.js.map +1 -0
- package/dist/scheduler/types.d.ts +146 -0
- package/dist/scheduler/types.d.ts.map +1 -0
- package/dist/{executors → scheduler}/types.js.map +1 -1
- package/dist/store/store.d.ts +390 -0
- package/dist/store/store.d.ts.map +1 -0
- package/dist/store/store.js +3053 -0
- package/dist/store/store.js.map +1 -0
- package/dist/visualization/overlay.d.ts +86 -0
- package/dist/visualization/overlay.d.ts.map +1 -0
- package/dist/visualization/overlay.js +161 -0
- package/dist/visualization/overlay.js.map +1 -0
- package/package.json +19 -37
- package/README.md +0 -7
- package/dist/agent-telemetry.d.ts +0 -56
- package/dist/agent-telemetry.d.ts.map +0 -1
- package/dist/agent-telemetry.js +0 -304
- package/dist/agent-telemetry.js.map +0 -1
- package/dist/artifacts.d.ts +0 -45
- package/dist/artifacts.d.ts.map +0 -1
- package/dist/artifacts.js +0 -163
- package/dist/artifacts.js.map +0 -1
- package/dist/attempt-artifacts.d.ts +0 -35
- package/dist/attempt-artifacts.d.ts.map +0 -1
- package/dist/attempt-artifacts.js +0 -90
- package/dist/attempt-artifacts.js.map +0 -1
- package/dist/client.d.ts +0 -82
- package/dist/client.d.ts.map +0 -1
- package/dist/client.js +0 -200
- package/dist/client.js.map +0 -1
- package/dist/evaluator.d.ts +0 -36
- package/dist/evaluator.d.ts.map +0 -1
- package/dist/evaluator.js +0 -101
- package/dist/evaluator.js.map +0 -1
- package/dist/executors/agent.d.ts +0 -103
- package/dist/executors/agent.d.ts.map +0 -1
- package/dist/executors/agent.js +0 -516
- package/dist/executors/agent.js.map +0 -1
- package/dist/executors/mock-program.d.ts +0 -26
- package/dist/executors/mock-program.d.ts.map +0 -1
- package/dist/executors/mock-program.js +0 -100
- package/dist/executors/mock-program.js.map +0 -1
- package/dist/executors/output-preview.d.ts +0 -2
- package/dist/executors/output-preview.d.ts.map +0 -1
- package/dist/executors/output-preview.js +0 -20
- package/dist/executors/output-preview.js.map +0 -1
- package/dist/executors/program.d.ts +0 -30
- package/dist/executors/program.d.ts.map +0 -1
- package/dist/executors/program.js +0 -230
- package/dist/executors/program.js.map +0 -1
- package/dist/executors/types.d.ts +0 -32
- package/dist/executors/types.d.ts.map +0 -1
- package/dist/fork.d.ts +0 -74
- package/dist/fork.d.ts.map +0 -1
- package/dist/fork.js +0 -278
- package/dist/fork.js.map +0 -1
- package/dist/hooks/payload.d.ts +0 -17
- package/dist/hooks/payload.d.ts.map +0 -1
- package/dist/hooks/payload.js +0 -45
- package/dist/hooks/payload.js.map +0 -1
- package/dist/interpreter.d.ts +0 -168
- package/dist/interpreter.d.ts.map +0 -1
- package/dist/interpreter.js +0 -1747
- package/dist/interpreter.js.map +0 -1
- package/dist/keys.d.ts +0 -77
- package/dist/keys.d.ts.map +0 -1
- package/dist/keys.js +0 -382
- package/dist/keys.js.map +0 -1
- package/dist/run-control.d.ts +0 -45
- package/dist/run-control.d.ts.map +0 -1
- package/dist/run-control.js +0 -255
- package/dist/run-control.js.map +0 -1
- package/dist/run-id.d.ts +0 -3
- package/dist/run-id.d.ts.map +0 -1
- package/dist/run-id.js +0 -10
- package/dist/run-id.js.map +0 -1
- package/dist/state-machine.d.ts +0 -31
- package/dist/state-machine.d.ts.map +0 -1
- package/dist/state-machine.js +0 -102
- package/dist/state-machine.js.map +0 -1
- package/dist/store.d.ts +0 -92
- package/dist/store.d.ts.map +0 -1
- package/dist/store.js +0 -420
- package/dist/store.js.map +0 -1
- package/dist/supervisor-app.d.ts +0 -27
- package/dist/supervisor-app.d.ts.map +0 -1
- package/dist/supervisor-app.js +0 -694
- package/dist/supervisor-app.js.map +0 -1
- package/dist/supervisor-discovery.d.ts +0 -18
- package/dist/supervisor-discovery.d.ts.map +0 -1
- package/dist/supervisor-discovery.js +0 -180
- package/dist/supervisor-discovery.js.map +0 -1
- package/dist/supervisor-entry.d.ts +0 -11
- package/dist/supervisor-entry.d.ts.map +0 -1
- package/dist/supervisor-entry.js +0 -50
- package/dist/supervisor-entry.js.map +0 -1
- package/dist/supervisor-lock.d.ts +0 -26
- package/dist/supervisor-lock.d.ts.map +0 -1
- package/dist/supervisor-lock.js +0 -49
- package/dist/supervisor-lock.js.map +0 -1
- package/dist/supervisor-runner.d.ts +0 -11
- package/dist/supervisor-runner.d.ts.map +0 -1
- package/dist/supervisor-runner.js +0 -128
- package/dist/supervisor-runner.js.map +0 -1
- package/dist/types.d.ts +0 -375
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -7
- package/dist/types.js.map +0 -1
- package/dist/validate-input.d.ts +0 -27
- package/dist/validate-input.d.ts.map +0 -1
- package/dist/validate-input.js +0 -56
- package/dist/validate-input.js.map +0 -1
- package/dist/validate-signal.d.ts +0 -14
- package/dist/validate-signal.d.ts.map +0 -1
- package/dist/validate-signal.js +0 -31
- package/dist/validate-signal.js.map +0 -1
- package/dist/workflow-context.d.ts +0 -4
- package/dist/workflow-context.d.ts.map +0 -1
- package/dist/workflow-context.js +0 -11
- package/dist/workflow-context.js.map +0 -1
- package/dist/workflow-outputs.d.ts +0 -9
- package/dist/workflow-outputs.d.ts.map +0 -1
- package/dist/workflow-outputs.js +0 -60
- package/dist/workflow-outputs.js.map +0 -1
- /package/dist/{executors → scheduler}/types.js +0 -0
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import type { ExecutorResult, FailureKind } from "../types.js";
|
|
2
|
-
import type { ExecutorAdapter, ProgramExecutionRequest } from "./types.js";
|
|
3
|
-
import { ExpressionEvaluator } from "../evaluator.js";
|
|
4
|
-
export interface MockProgramResponse {
|
|
5
|
-
stdout?: string;
|
|
6
|
-
stderr?: string;
|
|
7
|
-
exitCode?: number;
|
|
8
|
-
parsedOutput?: unknown;
|
|
9
|
-
/** Raw captured output used in diagnostics; useful for file captures. */
|
|
10
|
-
capturedOutputRaw?: string;
|
|
11
|
-
/** Simulate a non-recoverable failure (timeout/spawn/killed/capture). */
|
|
12
|
-
failureKind?: FailureKind;
|
|
13
|
-
delay?: number;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Mock program executor for testing. Takes a step-id → {stdout, exitCode, parsedOutput} map,
|
|
17
|
-
* resolves cmd template, handles capture config.
|
|
18
|
-
*/
|
|
19
|
-
export declare class MockProgramExecutor implements ExecutorAdapter<ProgramExecutionRequest> {
|
|
20
|
-
private readonly responses;
|
|
21
|
-
private readonly evaluator;
|
|
22
|
-
private readonly ajv;
|
|
23
|
-
constructor(responses: Record<string, MockProgramResponse>, evaluator?: ExpressionEvaluator);
|
|
24
|
-
execute({ node, context, signal }: ProgramExecutionRequest): Promise<ExecutorResult>;
|
|
25
|
-
}
|
|
26
|
-
//# sourceMappingURL=mock-program.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mock-program.d.ts","sourceRoot":"","sources":["../../src/executors/mock-program.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAItD,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,yEAAyE;IACzE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,yEAAyE;IACzE,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,qBAAa,mBAAoB,YAAW,eAAe,CAAC,uBAAuB,CAAC;IAClF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmC;IAC7D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsB;IAChD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA+C;IAEnE,YAAY,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAAE,SAAS,CAAC,EAAE,mBAAmB,EAG1F;IAEK,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,uBAAuB,GAAG,OAAO,CAAC,cAAc,CAAC,CA+FzF;CACF"}
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
import { ExpressionEvaluator } from "../evaluator.js";
|
|
2
|
-
import { Ajv } from "ajv";
|
|
3
|
-
import { schemaValidationError } from "./output-preview.js";
|
|
4
|
-
/**
|
|
5
|
-
* Mock program executor for testing. Takes a step-id → {stdout, exitCode, parsedOutput} map,
|
|
6
|
-
* resolves cmd template, handles capture config.
|
|
7
|
-
*/
|
|
8
|
-
export class MockProgramExecutor {
|
|
9
|
-
responses;
|
|
10
|
-
evaluator;
|
|
11
|
-
ajv = new Ajv({ allErrors: true, strict: false });
|
|
12
|
-
constructor(responses, evaluator) {
|
|
13
|
-
this.responses = new Map(Object.entries(responses));
|
|
14
|
-
this.evaluator = evaluator ?? new ExpressionEvaluator();
|
|
15
|
-
}
|
|
16
|
-
async execute({ node, context, signal }) {
|
|
17
|
-
const stepId = node.id;
|
|
18
|
-
const response = this.responses.get(stepId);
|
|
19
|
-
if (!response) {
|
|
20
|
-
return { error: `No mock response configured for step '${stepId}'`, exitCode: 1 };
|
|
21
|
-
}
|
|
22
|
-
// Resolve cmd template
|
|
23
|
-
const cmdTemplate = node.metadata.cmd;
|
|
24
|
-
if (cmdTemplate) {
|
|
25
|
-
if (Array.isArray(cmdTemplate)) {
|
|
26
|
-
cmdTemplate.map((c) => this.evaluator.evaluateTemplate(c, context));
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
29
|
-
this.evaluator.evaluateTemplate(cmdTemplate, context);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
// Check for abort
|
|
33
|
-
if (signal.aborted) {
|
|
34
|
-
return { partial: true, error: "Aborted before execution" };
|
|
35
|
-
}
|
|
36
|
-
let aborted = false;
|
|
37
|
-
const onAbort = () => { aborted = true; };
|
|
38
|
-
signal.addEventListener("abort", onAbort, { once: true });
|
|
39
|
-
try {
|
|
40
|
-
await new Promise((resolve) => setTimeout(resolve, response.delay ?? 5));
|
|
41
|
-
if (aborted || signal.aborted) {
|
|
42
|
-
return { partial: true, error: "Aborted during execution" };
|
|
43
|
-
}
|
|
44
|
-
const stdout = response.stdout ?? "";
|
|
45
|
-
const stderr = response.stderr ?? "";
|
|
46
|
-
// Simulate a non-recoverable failure if configured.
|
|
47
|
-
if (response.failureKind) {
|
|
48
|
-
return { failureKind: response.failureKind, error: `Simulated ${response.failureKind} failure`, stdout, stderr };
|
|
49
|
-
}
|
|
50
|
-
const exitCode = response.exitCode ?? 0;
|
|
51
|
-
// Mirror ADR-0006: a non-zero exit not allow-listed by `expect.exit_code`
|
|
52
|
-
// (default `[0]`) fails the node fast and precedes capture/schema checks.
|
|
53
|
-
const expect = node.metadata.expect;
|
|
54
|
-
const allowedExitCodes = expect?.exit_code ?? [0];
|
|
55
|
-
if (!allowedExitCodes.includes(exitCode)) {
|
|
56
|
-
return {
|
|
57
|
-
failureKind: "exit",
|
|
58
|
-
error: `exit_code=${exitCode}`,
|
|
59
|
-
exitCode,
|
|
60
|
-
stdout,
|
|
61
|
-
stderr
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
// Handle capture config — an allow-listed exit code is step data.
|
|
65
|
-
const capture = node.metadata.capture;
|
|
66
|
-
let output = response.parsedOutput;
|
|
67
|
-
let capturedOutputRaw = response.capturedOutputRaw;
|
|
68
|
-
if (capturedOutputRaw === undefined && capture?.from === "stdout") {
|
|
69
|
-
capturedOutputRaw = response.stdout;
|
|
70
|
-
}
|
|
71
|
-
if (output === undefined && capturedOutputRaw !== undefined && capture?.parse === "json") {
|
|
72
|
-
try {
|
|
73
|
-
output = JSON.parse(capturedOutputRaw);
|
|
74
|
-
}
|
|
75
|
-
catch {
|
|
76
|
-
return { failureKind: "capture", error: "Failed to parse stdout as JSON", exitCode, stdout, stderr };
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
if (output === undefined && capturedOutputRaw !== undefined && capture?.parse === "text") {
|
|
80
|
-
output = capturedOutputRaw;
|
|
81
|
-
}
|
|
82
|
-
if (!capture) {
|
|
83
|
-
capturedOutputRaw = undefined;
|
|
84
|
-
}
|
|
85
|
-
// Validate output against schema when declared (mirrors real ProgramExecutor).
|
|
86
|
-
const outputSchema = node.metadata.output;
|
|
87
|
-
if (outputSchema && output !== undefined) {
|
|
88
|
-
const validate = this.ajv.compile(outputSchema);
|
|
89
|
-
if (!validate(output)) {
|
|
90
|
-
return { failureKind: "schema", error: schemaValidationError(this.ajv.errorsText(validate.errors), capturedOutputRaw, output), exitCode, stdout, stderr };
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
return { output, exitCode, stdout, stderr };
|
|
94
|
-
}
|
|
95
|
-
finally {
|
|
96
|
-
signal.removeEventListener("abort", onAbort);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
//# sourceMappingURL=mock-program.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mock-program.js","sourceRoot":"","sources":["../../src/executors/mock-program.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"output-preview.d.ts","sourceRoot":"","sources":["../../src/executors/output-preview.ts"],"names":[],"mappings":"AAEA,wBAAgB,qBAAqB,CACnC,iBAAiB,EAAE,MAAM,EACzB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,MAAM,EAAE,OAAO,GACd,MAAM,CAER"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
const DEFAULT_CAPTURED_OUTPUT_PREVIEW_CHARS = 2048;
|
|
2
|
-
export function schemaValidationError(validationMessage, rawOutput, output) {
|
|
3
|
-
return `Output validation failed: ${validationMessage}; captured output preview: ${capturedOutputPreview(rawOutput, output)}`;
|
|
4
|
-
}
|
|
5
|
-
function capturedOutputPreview(rawOutput, output) {
|
|
6
|
-
const text = rawOutput ?? stringifyOutput(output);
|
|
7
|
-
if (text.length <= DEFAULT_CAPTURED_OUTPUT_PREVIEW_CHARS)
|
|
8
|
-
return text;
|
|
9
|
-
return `${text.slice(0, DEFAULT_CAPTURED_OUTPUT_PREVIEW_CHARS)}... [truncated, ${text.length} chars total]`;
|
|
10
|
-
}
|
|
11
|
-
function stringifyOutput(output) {
|
|
12
|
-
try {
|
|
13
|
-
const json = JSON.stringify(output);
|
|
14
|
-
return json === undefined ? String(output) : json;
|
|
15
|
-
}
|
|
16
|
-
catch {
|
|
17
|
-
return String(output);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=output-preview.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"output-preview.js","sourceRoot":"","sources":["../../src/executors/output-preview.ts"],"names":[],"mappings":"AAAA,MAAM,qCAAqC,GAAG,IAAI,CAAC;AAEnD,MAAM,UAAU,qBAAqB,CACnC,iBAAyB,EACzB,SAA6B,EAC7B,MAAe;IAEf,OAAO,6BAA6B,iBAAiB,8BAA8B,qBAAqB,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC;AAChI,CAAC;AAED,SAAS,qBAAqB,CAAC,SAA6B,EAAE,MAAe;IAC3E,MAAM,IAAI,GAAG,SAAS,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;IAClD,IAAI,IAAI,CAAC,MAAM,IAAI,qCAAqC;QAAE,OAAO,IAAI,CAAC;IACtE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,qCAAqC,CAAC,mBAAmB,IAAI,CAAC,MAAM,eAAe,CAAC;AAC9G,CAAC;AAED,SAAS,eAAe,CAAC,MAAe;IACtC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACpC,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC;AACH,CAAC"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import type { ExecutorResult } from "../types.js";
|
|
2
|
-
import type { ExecutorAdapter, ProgramExecutionRequest } from "./types.js";
|
|
3
|
-
import { ExpressionEvaluator } from "../evaluator.js";
|
|
4
|
-
/**
|
|
5
|
-
* Real program executor using execa for subprocess management.
|
|
6
|
-
* Handles cmd template resolution, capture config, timeout, and abort signal.
|
|
7
|
-
*
|
|
8
|
-
* A non-zero exit code that is not listed in the step's `expect.exit_code`
|
|
9
|
-
* allow-list (default `[0]`) fails the node with `failureKind: "exit"`. This
|
|
10
|
-
* fail-fast policy lets dynamic shell/python script breakage (syntax errors,
|
|
11
|
-
* missing tools, unbound paths) surface at the broken Program Step rather than
|
|
12
|
-
* far downstream at a Guard Node. Authors who treat exit codes as a business
|
|
13
|
-
* signal (test runners, grep, diff) opt out by listing the expected codes in
|
|
14
|
-
* `expect.exit_code`.
|
|
15
|
-
*
|
|
16
|
-
* Other non-recoverable conditions — timeout, signal kill, spawn failure,
|
|
17
|
-
* capture parse failure — also fail the node via `failureKind`.
|
|
18
|
-
*/
|
|
19
|
-
export declare class ProgramExecutor implements ExecutorAdapter<ProgramExecutionRequest> {
|
|
20
|
-
private readonly evaluator;
|
|
21
|
-
private readonly ajv;
|
|
22
|
-
constructor(evaluator?: ExpressionEvaluator);
|
|
23
|
-
execute({ node, context, signal, injectedEnv }: ProgramExecutionRequest): Promise<ExecutorResult>;
|
|
24
|
-
private resolveCmd;
|
|
25
|
-
/** Evaluate template expressions in env values; non-strings are stringified. */
|
|
26
|
-
private evaluateEnv;
|
|
27
|
-
/** Resolve the optional step-level cwd template; falls back to the process cwd. */
|
|
28
|
-
private resolveCwd;
|
|
29
|
-
}
|
|
30
|
-
//# sourceMappingURL=program.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../../src/executors/program.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAqB,cAAc,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAGtD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,eAAgB,YAAW,eAAe,CAAC,uBAAuB,CAAC;IAC9E,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsB;IAChD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA+C;IAEnE,YAAY,SAAS,CAAC,EAAE,mBAAmB,EAE1C;IAEK,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,uBAAuB,GAAG,OAAO,CAAC,cAAc,CAAC,CAsKtG;IAED,OAAO,CAAC,UAAU;IAelB,gFAAgF;IAChF,OAAO,CAAC,WAAW;IASnB,mFAAmF;IACnF,OAAO,CAAC,UAAU;CAMnB"}
|
|
@@ -1,230 +0,0 @@
|
|
|
1
|
-
import { execa } from "execa";
|
|
2
|
-
import { readFileSync } from "node:fs";
|
|
3
|
-
import { resolve } from "node:path";
|
|
4
|
-
import { Ajv } from "ajv";
|
|
5
|
-
import { parseDurationMs } from "@acpus/core";
|
|
6
|
-
import { ExpressionEvaluator } from "../evaluator.js";
|
|
7
|
-
import { schemaValidationError } from "./output-preview.js";
|
|
8
|
-
/**
|
|
9
|
-
* Real program executor using execa for subprocess management.
|
|
10
|
-
* Handles cmd template resolution, capture config, timeout, and abort signal.
|
|
11
|
-
*
|
|
12
|
-
* A non-zero exit code that is not listed in the step's `expect.exit_code`
|
|
13
|
-
* allow-list (default `[0]`) fails the node with `failureKind: "exit"`. This
|
|
14
|
-
* fail-fast policy lets dynamic shell/python script breakage (syntax errors,
|
|
15
|
-
* missing tools, unbound paths) surface at the broken Program Step rather than
|
|
16
|
-
* far downstream at a Guard Node. Authors who treat exit codes as a business
|
|
17
|
-
* signal (test runners, grep, diff) opt out by listing the expected codes in
|
|
18
|
-
* `expect.exit_code`.
|
|
19
|
-
*
|
|
20
|
-
* Other non-recoverable conditions — timeout, signal kill, spawn failure,
|
|
21
|
-
* capture parse failure — also fail the node via `failureKind`.
|
|
22
|
-
*/
|
|
23
|
-
export class ProgramExecutor {
|
|
24
|
-
evaluator;
|
|
25
|
-
ajv = new Ajv({ allErrors: true, strict: false });
|
|
26
|
-
constructor(evaluator) {
|
|
27
|
-
this.evaluator = evaluator ?? new ExpressionEvaluator();
|
|
28
|
-
}
|
|
29
|
-
async execute({ node, context, signal, injectedEnv }) {
|
|
30
|
-
const cmdTemplate = node.metadata.cmd;
|
|
31
|
-
const timeoutRaw = node.metadata.timeout;
|
|
32
|
-
const capture = node.metadata.capture;
|
|
33
|
-
// Resolve cmd template
|
|
34
|
-
const cmd = this.resolveCmd(cmdTemplate, context);
|
|
35
|
-
if (signal.aborted) {
|
|
36
|
-
return { partial: true, error: "Aborted before execution" };
|
|
37
|
-
}
|
|
38
|
-
const shell = typeof cmd === "string";
|
|
39
|
-
const args = Array.isArray(cmd) ? cmd.slice(1) : [];
|
|
40
|
-
const command = Array.isArray(cmd) ? cmd[0] : cmd;
|
|
41
|
-
const renderedCommand = Array.isArray(cmd) ? cmd.join(" ") : cmd;
|
|
42
|
-
// Numeric timeout is milliseconds directly; string timeout is a duration.
|
|
43
|
-
const timeoutMs = typeof timeoutRaw === "number" && timeoutRaw > 0
|
|
44
|
-
? timeoutRaw
|
|
45
|
-
: typeof timeoutRaw === "string"
|
|
46
|
-
? parseDurationMs(timeoutRaw) || undefined
|
|
47
|
-
: undefined;
|
|
48
|
-
// Evaluate env templates. A bad expression (e.g. referencing an unknown step)
|
|
49
|
-
// is a user-facing error, not a spawn failure — catch and report clearly.
|
|
50
|
-
// Hook-injected env layers on top of the step's env.
|
|
51
|
-
let env;
|
|
52
|
-
let cwd;
|
|
53
|
-
try {
|
|
54
|
-
env = {
|
|
55
|
-
...Object.fromEntries(Object.entries(process.env).filter(([, v]) => v !== undefined)),
|
|
56
|
-
...this.evaluateEnv(node.metadata.env, context),
|
|
57
|
-
...(injectedEnv ?? {})
|
|
58
|
-
};
|
|
59
|
-
cwd = this.resolveCwd(node.metadata.cwd, context);
|
|
60
|
-
}
|
|
61
|
-
catch (error) {
|
|
62
|
-
return {
|
|
63
|
-
failureKind: "config",
|
|
64
|
-
error: `Failed to evaluate configuration template: ${error instanceof Error ? error.message : String(error)}`,
|
|
65
|
-
stdout: "",
|
|
66
|
-
stderr: ""
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
const meta = { command: renderedCommand, shell, subprocessEnv: env };
|
|
70
|
-
let result;
|
|
71
|
-
try {
|
|
72
|
-
result = await execa(command, args, {
|
|
73
|
-
shell,
|
|
74
|
-
cwd,
|
|
75
|
-
reject: false,
|
|
76
|
-
timeout: timeoutMs && timeoutMs > 0 ? timeoutMs : 0,
|
|
77
|
-
killSignal: "SIGKILL",
|
|
78
|
-
cancelSignal: signal,
|
|
79
|
-
env,
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
catch (error) {
|
|
83
|
-
// Spawn-level failure (e.g. command not found) — non-recoverable.
|
|
84
|
-
return {
|
|
85
|
-
failureKind: "spawn",
|
|
86
|
-
error: error instanceof Error ? error.message : String(error),
|
|
87
|
-
stdout: "",
|
|
88
|
-
stderr: error instanceof Error ? error.message : String(error)
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
const stdout = result.stdout ?? "";
|
|
92
|
-
const stderr = result.stderr ?? "";
|
|
93
|
-
// Operator abort (pause/cancel) → partial.
|
|
94
|
-
if (result.isCanceled) {
|
|
95
|
-
return { partial: true, output: stdout, stdout, stderr, error: "Aborted during execution" };
|
|
96
|
-
}
|
|
97
|
-
// Timeout → non-recoverable.
|
|
98
|
-
if (result.timedOut) {
|
|
99
|
-
return { failureKind: "timeout", error: `Process timed out after ${timeoutMs}ms`, stdout, stderr };
|
|
100
|
-
}
|
|
101
|
-
// Killed by signal (SIGKILL etc.) → non-recoverable.
|
|
102
|
-
if (result.isTerminated || (result.signal !== undefined && result.signal !== null)) {
|
|
103
|
-
return { failureKind: "killed", error: `Process killed by signal ${result.signal}`, stdout, stderr };
|
|
104
|
-
}
|
|
105
|
-
// Spawn failure (e.g. command not found) — execa with reject:false reports
|
|
106
|
-
// `failed` with no exit code rather than throwing.
|
|
107
|
-
if (result.failed && (result.exitCode === undefined || result.exitCode === null)) {
|
|
108
|
-
return {
|
|
109
|
-
failureKind: "spawn",
|
|
110
|
-
error: result.shortMessage || result.message || "Failed to spawn process",
|
|
111
|
-
stdout,
|
|
112
|
-
stderr
|
|
113
|
-
};
|
|
114
|
-
}
|
|
115
|
-
const exitCode = result.exitCode ?? 0;
|
|
116
|
-
// ADR-0006: a non-zero exit not allow-listed by `expect.exit_code` fails
|
|
117
|
-
// the node fast. The default allow-list is `[0]`. This precedes capture
|
|
118
|
-
// and schema checks so a broken script never masquerades as a parse error.
|
|
119
|
-
const expect = node.metadata.expect;
|
|
120
|
-
const allowedExitCodes = expect?.exit_code ?? [0];
|
|
121
|
-
if (!allowedExitCodes.includes(exitCode)) {
|
|
122
|
-
const tail = stderrTail(stderr, 20);
|
|
123
|
-
const message = tail
|
|
124
|
-
? `exit_code=${exitCode}; stderr (last ${tail.lines} line${tail.lines === 1 ? "" : "s"}):\n${tail.text}`
|
|
125
|
-
: `exit_code=${exitCode}`;
|
|
126
|
-
return { failureKind: "exit", error: message, exitCode, stdout, stderr };
|
|
127
|
-
}
|
|
128
|
-
// Handle capture config.
|
|
129
|
-
let output;
|
|
130
|
-
let capturedOutputRaw;
|
|
131
|
-
if (capture) {
|
|
132
|
-
const from = capture.from;
|
|
133
|
-
const parse = capture.parse;
|
|
134
|
-
let raw;
|
|
135
|
-
if (from === "file") {
|
|
136
|
-
const filePath = resolve(cwd, capture.path);
|
|
137
|
-
try {
|
|
138
|
-
raw = readFileSync(filePath, "utf8");
|
|
139
|
-
}
|
|
140
|
-
catch (error) {
|
|
141
|
-
return {
|
|
142
|
-
failureKind: "capture",
|
|
143
|
-
error: `Failed to read capture file '${capture.path}': ${error instanceof Error ? error.message : String(error)}`,
|
|
144
|
-
exitCode,
|
|
145
|
-
stdout,
|
|
146
|
-
stderr
|
|
147
|
-
};
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
else {
|
|
151
|
-
raw = stdout;
|
|
152
|
-
}
|
|
153
|
-
capturedOutputRaw = raw;
|
|
154
|
-
if (parse === "json") {
|
|
155
|
-
try {
|
|
156
|
-
output = JSON.parse(raw);
|
|
157
|
-
}
|
|
158
|
-
catch {
|
|
159
|
-
return { failureKind: "capture", error: "Failed to parse captured output as JSON", exitCode, stdout, stderr };
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
else {
|
|
163
|
-
output = raw;
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
else {
|
|
167
|
-
output = stdout || undefined;
|
|
168
|
-
}
|
|
169
|
-
// Validate output against schema when declared (mirrors agent schema validation).
|
|
170
|
-
const outputSchema = node.metadata.output;
|
|
171
|
-
if (outputSchema && output !== undefined) {
|
|
172
|
-
const validate = this.ajv.compile(outputSchema);
|
|
173
|
-
if (!validate(output)) {
|
|
174
|
-
return {
|
|
175
|
-
failureKind: "schema",
|
|
176
|
-
error: schemaValidationError(this.ajv.errorsText(validate.errors), capturedOutputRaw, output),
|
|
177
|
-
exitCode,
|
|
178
|
-
stdout,
|
|
179
|
-
stderr
|
|
180
|
-
};
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
return { exitCode, output, stdout, stderr, ...meta };
|
|
184
|
-
}
|
|
185
|
-
resolveCmd(cmd, context) {
|
|
186
|
-
if (Array.isArray(cmd)) {
|
|
187
|
-
return cmd.map((c) => {
|
|
188
|
-
if (typeof c === "string") {
|
|
189
|
-
return this.evaluator.evaluateTemplate(c, context);
|
|
190
|
-
}
|
|
191
|
-
return String(c);
|
|
192
|
-
});
|
|
193
|
-
}
|
|
194
|
-
if (typeof cmd === "string") {
|
|
195
|
-
return this.evaluator.evaluateTemplate(cmd, context);
|
|
196
|
-
}
|
|
197
|
-
return String(cmd);
|
|
198
|
-
}
|
|
199
|
-
/** Evaluate template expressions in env values; non-strings are stringified. */
|
|
200
|
-
evaluateEnv(env, context) {
|
|
201
|
-
if (!env)
|
|
202
|
-
return {};
|
|
203
|
-
const out = {};
|
|
204
|
-
for (const [k, v] of Object.entries(env)) {
|
|
205
|
-
out[k] = typeof v === "string" ? this.evaluator.evaluateTemplate(v, context) : String(v);
|
|
206
|
-
}
|
|
207
|
-
return out;
|
|
208
|
-
}
|
|
209
|
-
/** Resolve the optional step-level cwd template; falls back to the process cwd. */
|
|
210
|
-
resolveCwd(cwd, context) {
|
|
211
|
-
if (typeof cwd === "string" && cwd.length > 0) {
|
|
212
|
-
return resolve(this.evaluator.evaluateTemplate(cwd, context));
|
|
213
|
-
}
|
|
214
|
-
return process.cwd();
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
/**
|
|
218
|
-
* Return the last `max` non-empty lines of stderr for inclusion in a Node-failed
|
|
219
|
-
* error summary. Returns undefined when there's nothing useful to show.
|
|
220
|
-
*/
|
|
221
|
-
function stderrTail(stderr, max) {
|
|
222
|
-
if (!stderr)
|
|
223
|
-
return undefined;
|
|
224
|
-
const lines = stderr.replace(/\s+$/u, "").split(/\r?\n/u);
|
|
225
|
-
const trimmed = lines.slice(-max);
|
|
226
|
-
if (trimmed.length === 0 || (trimmed.length === 1 && trimmed[0] === ""))
|
|
227
|
-
return undefined;
|
|
228
|
-
return { text: trimmed.join("\n"), lines: trimmed.length };
|
|
229
|
-
}
|
|
230
|
-
//# sourceMappingURL=program.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"program.js","sourceRoot":"","sources":["../../src/executors/program.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import type { ExpressionContext, ExecutorResult } from "../types.js";
|
|
2
|
-
import type { IrNode } from "@acpus/core";
|
|
3
|
-
export interface BaseExecutionRequest {
|
|
4
|
-
node: IrNode;
|
|
5
|
-
context: ExpressionContext;
|
|
6
|
-
signal: AbortSignal;
|
|
7
|
-
/** Resolved node key (includes loop/fanout/lane/subworkflow dimensions). */
|
|
8
|
-
nodeKey: string;
|
|
9
|
-
}
|
|
10
|
-
export interface AgentExecutionRequest extends BaseExecutionRequest {
|
|
11
|
-
kind: "agent";
|
|
12
|
-
/** Fully prepared prompt/request text for this executor call. */
|
|
13
|
-
prompt?: string;
|
|
14
|
-
/** Fully rendered semantic session key for explicit same-Run session sharing. */
|
|
15
|
-
sessionKey?: string;
|
|
16
|
-
/** True when continuing a previously paused node (continuation prompt). */
|
|
17
|
-
continuation?: boolean;
|
|
18
|
-
/** True when this is a parse/schema auto-retry iteration (continuation prompt + schema section). */
|
|
19
|
-
retry?: boolean;
|
|
20
|
-
/** Called with raw stdout/stderr chunks while the executor is still running. */
|
|
21
|
-
onStream?: (stream: "stdout" | "stderr", chunk: string) => void;
|
|
22
|
-
}
|
|
23
|
-
export interface ProgramExecutionRequest extends BaseExecutionRequest {
|
|
24
|
-
kind: "program";
|
|
25
|
-
/** Injected env from beforeProgramExec; the executor merges into the child env. */
|
|
26
|
-
injectedEnv?: Record<string, string>;
|
|
27
|
-
}
|
|
28
|
-
export type ExecutionRequest = AgentExecutionRequest | ProgramExecutionRequest;
|
|
29
|
-
export interface ExecutorAdapter<TRequest extends ExecutionRequest = ExecutionRequest> {
|
|
30
|
-
execute(request: TRequest): Promise<ExecutorResult>;
|
|
31
|
-
}
|
|
32
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/executors/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,iBAAiB,CAAC;IAC3B,MAAM,EAAE,WAAW,CAAC;IACpB,4EAA4E;IAC5E,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAsB,SAAQ,oBAAoB;IACjE,IAAI,EAAE,OAAO,CAAC;IACd,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iFAAiF;IACjF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2EAA2E;IAC3E,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oGAAoG;IACpG,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gFAAgF;IAChF,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACjE;AAED,MAAM,WAAW,uBAAwB,SAAQ,oBAAoB;IACnE,IAAI,EAAE,SAAS,CAAC;IAChB,mFAAmF;IACnF,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAED,MAAM,MAAM,gBAAgB,GAAG,qBAAqB,GAAG,uBAAuB,CAAC;AAE/E,MAAM,WAAW,eAAe,CAAC,QAAQ,SAAS,gBAAgB,GAAG,gBAAgB;IACnF,OAAO,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CACrD"}
|
package/dist/fork.d.ts
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import type { AcpusIr, AgentOverrideWarning, AgentOverrides } from "@acpus/core";
|
|
2
|
-
import type { RunState } from "./types.js";
|
|
3
|
-
import type { RunStore } from "./store.js";
|
|
4
|
-
/**
|
|
5
|
-
* Plan describing how a Forked Run will inherit Nodes from a prior Run.
|
|
6
|
-
*
|
|
7
|
-
* The plan is computed from the prior Run's Run Checkpoints (in `sequence`
|
|
8
|
-
* order) and the new Workflow Spec's compiled IR. The Forked Run inherits each
|
|
9
|
-
* Node whose Node Key exists in the new Spec, whose prior state is `completed`,
|
|
10
|
-
* and whose Node Definition Hash matches; inheritance stops at the first Node
|
|
11
|
-
* that fails any of these checks (the inheritance boundary). The boundary Node
|
|
12
|
-
* (and every Node after it) executes fresh.
|
|
13
|
-
*/
|
|
14
|
-
export interface ForkPlan {
|
|
15
|
-
/** Run ID of the prior Run we are forking from. */
|
|
16
|
-
sourceRunId: string;
|
|
17
|
-
/** Inherited Node Keys, in checkpoint order (state==="completed", hash match). */
|
|
18
|
-
inheritedNodeKeys: string[];
|
|
19
|
-
/** The default inheritance boundary derived from checkpoint scanning. */
|
|
20
|
-
defaultForkOriginNodeKey: string;
|
|
21
|
-
/** The effective Fork Origin (operator override or default). */
|
|
22
|
-
forkOriginNodeKey: string;
|
|
23
|
-
/** Reason the boundary was placed at the default origin. */
|
|
24
|
-
boundaryReason: BoundaryReason;
|
|
25
|
-
}
|
|
26
|
-
export type BoundaryReason = "all-completed" | "missing-in-new-spec" | "hash-mismatch" | "non-completed" | "operator-override";
|
|
27
|
-
export interface PlanForkedRunOptions {
|
|
28
|
-
/** Run ID of the prior terminal Run. */
|
|
29
|
-
sourceRunId: string;
|
|
30
|
-
/** Compiled IR of the repaired Workflow Spec. */
|
|
31
|
-
ir: AcpusIr;
|
|
32
|
-
/** Optional operator-selected Fork Origin. */
|
|
33
|
-
overrideOriginNodeKey?: string;
|
|
34
|
-
}
|
|
35
|
-
export interface MaterializeForkedRunOptions extends PlanForkedRunOptions {
|
|
36
|
-
/** Run ID to assign to the new Forked Run. */
|
|
37
|
-
forkRunId: string;
|
|
38
|
-
/** Explicit input override. When omitted, the source Run input is inherited. */
|
|
39
|
-
input?: Record<string, unknown>;
|
|
40
|
-
/** Catalog ref used to start this Forked Run, when applicable. */
|
|
41
|
-
workflowRef?: string;
|
|
42
|
-
/** Absolute Workflow Spec path used to compile this Forked Run. */
|
|
43
|
-
workflowSourcePath?: string;
|
|
44
|
-
/** Effective submit-time Agent Overrides applied before this Run's IR was frozen. */
|
|
45
|
-
agentOverrides?: AgentOverrides;
|
|
46
|
-
/** Non-fatal warnings produced while resolving submit-time metadata. */
|
|
47
|
-
submissionWarnings?: AgentOverrideWarning[];
|
|
48
|
-
/** True when the Forked Run should preserve a source Run's hook-disabled metadata. */
|
|
49
|
-
skipHooks?: boolean;
|
|
50
|
-
/** Reuse a dry-run Fork Plan when the caller already computed one. */
|
|
51
|
-
plan?: ForkPlan;
|
|
52
|
-
}
|
|
53
|
-
export interface MaterializedFork {
|
|
54
|
-
/** Initial persisted state of the new Forked Run. */
|
|
55
|
-
run: RunState;
|
|
56
|
-
/** Fork Plan used to materialize the Run. */
|
|
57
|
-
plan: ForkPlan;
|
|
58
|
-
/** Validated input snapshot written for the new Forked Run. */
|
|
59
|
-
input: Record<string, unknown>;
|
|
60
|
-
}
|
|
61
|
-
export declare function planForkedRun(store: RunStore, options: PlanForkedRunOptions): ForkPlan;
|
|
62
|
-
/**
|
|
63
|
-
* Materialize a Forked Run on disk from a previously computed Fork Plan.
|
|
64
|
-
*
|
|
65
|
-
* This is the stateful counterpart to {@link planForkedRun}: it creates the
|
|
66
|
-
* new Run, inherits the source input unless the operator supplied an override,
|
|
67
|
-
* copies inherited Node states and artifacts through RunStore, and persists
|
|
68
|
-
* immediate prior lineage on the new Run.
|
|
69
|
-
*/
|
|
70
|
-
export declare function materializeForkedRun(store: RunStore, options: MaterializeForkedRunOptions): MaterializedFork;
|
|
71
|
-
export declare class ForkError extends Error {
|
|
72
|
-
constructor(message: string);
|
|
73
|
-
}
|
|
74
|
-
//# sourceMappingURL=fork.d.ts.map
|
package/dist/fork.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fork.d.ts","sourceRoot":"","sources":["../src/fork.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAU,MAAM,aAAa,CAAC;AAEzF,OAAO,KAAK,EAAqC,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE9E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAK3C;;;;;;;;;GASG;AACH,MAAM,WAAW,QAAQ;IACvB,mDAAmD;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,kFAAkF;IAClF,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,yEAAyE;IACzE,wBAAwB,EAAE,MAAM,CAAC;IACjC,gEAAgE;IAChE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,4DAA4D;IAC5D,cAAc,EAAE,cAAc,CAAC;CAChC;AAED,MAAM,MAAM,cAAc,GACtB,eAAe,GACf,qBAAqB,GACrB,eAAe,GACf,eAAe,GACf,mBAAmB,CAAC;AAExB,MAAM,WAAW,oBAAoB;IACnC,wCAAwC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,iDAAiD;IACjD,EAAE,EAAE,OAAO,CAAC;IACZ,8CAA8C;IAC9C,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,2BAA4B,SAAQ,oBAAoB;IACvE,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,gFAAgF;IAChF,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mEAAmE;IACnE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,qFAAqF;IACrF,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,wEAAwE;IACxE,kBAAkB,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAC5C,sFAAsF;IACtF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,sEAAsE;IACtE,IAAI,CAAC,EAAE,QAAQ,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,qDAAqD;IACrD,GAAG,EAAE,QAAQ,CAAC;IACd,6CAA6C;IAC7C,IAAI,EAAE,QAAQ,CAAC;IACf,+DAA+D;IAC/D,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAoLD,wBAAgB,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,oBAAoB,GAAG,QAAQ,CAGtF;AAkBD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,QAAQ,EACf,OAAO,EAAE,2BAA2B,GACnC,gBAAgB,CA0DlB;AA+CD,qBAAa,SAAU,SAAQ,KAAK;IAClC,YAAY,OAAO,EAAE,MAAM,EAG1B;CACF"}
|