@clemrig/flow 0.4.0 → 0.5.1
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/README.md +2 -0
- package/dist/app/run.d.ts +17 -1
- package/dist/app/run.js +122 -41
- package/dist/app/run.js.map +1 -1
- package/dist/engine/metrics.d.ts +10 -3
- package/dist/engine/metrics.js +12 -5
- package/dist/engine/metrics.js.map +1 -1
- package/dist/engine/profiles.js +2 -1
- package/dist/engine/profiles.js.map +1 -1
- package/dist/engine/runner.d.ts +5 -1
- package/dist/engine/runner.js +21 -9
- package/dist/engine/runner.js.map +1 -1
- package/dist/engine/types.d.ts +12 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/system/process.d.ts +6 -0
- package/dist/system/process.js +18 -5
- package/dist/system/process.js.map +1 -1
- package/dist/system/runtimes/agent-runtime.d.ts +2 -0
- package/dist/system/runtimes/agent-runtime.js +3 -0
- package/dist/system/runtimes/agent-runtime.js.map +1 -1
- package/dist/system/runtimes/protocol.d.ts +1 -0
- package/dist/system/runtimes/protocol.js +10 -0
- package/dist/system/runtimes/protocol.js.map +1 -1
- package/dist/system/store.d.ts +6 -0
- package/dist/system/store.js +25 -0
- package/dist/system/store.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -47,6 +47,8 @@ A workflow may declare `steps`: ordered groups of its stages that show how far a
|
|
|
47
47
|
|
|
48
48
|
Before it creates the run, `startRun` checks, in this order, `dir` (an existing directory), the budget (`maxCostUsd`, in USD, replaces the workflow's; refused when an agent stage uses Codex, which announces no cost), the input against the workflow's `input` (an `InvalidInputError` lists every problem), the prompts (a non-empty text for each agent stage's prompt) and each runtime the workflow uses, its version and connection checked in `dir`; the first failing check rejects it with its reasons. It then returns the run, its end (`done`) and `stop(reason)`, which fails the run before its next stage. Runs are kept in `runsDir` when it is given. The engine never changes the process's current directory: stage code reaches the working directory through `dir`. While child processes run (agents, commands), a SIGINT or SIGTERM to the program interrupts them, each agent with the signal on which it ends its own commands, so that none outlives it, and stops each run before its next stage, even if a stage catches the interruption. A program about to quit at once can call `killChildProcesses()`, which kills the child processes of every run, but not the commands Codex runs in their own process groups.
|
|
49
49
|
|
|
50
|
+
`resumeRun({ workflow, runId, maxCostUsd, prompts, dir, configDir, runsDir }, hooks)` resumes a failed run at the stage where it stopped, with the same ID, input, data, corrections, measures and agent conversations: that stage runs again, journals why the run had stopped (`Resumed after: …`) and passes it on to its agent, which is asked to continue rather than start over. It refuses, changing nothing, a run that did not fail (a run left `running` after its process was killed included), a run of another workflow, a stage the workflow no longer has, a run that already spent its budget, and whatever the workflow's optional `resumeProblem({ state, dir })` returns, for instance a working directory that is no longer as the stage left it; then it checks prompts and runtimes like `startRun`, takes the run over (two resumptions never both run it: the state is reloaded and marked `running` under a `run.lock` file created atomically in the run's folder) and returns the same handle. The budget is the `maxCostUsd` given, else the one the run was started or last resumed with (`state.maxCostUsd`), else the workflow's. The stage starts over: what it did before it failed must be safe to do again, or `resumeProblem` must refuse. Calls that announced no cost before the resumption (a call stopped by its timeout) no longer fail the budget; later ones do. The time a run spent stopped is not part of its duration (`state.pausedMs`, left out by `elapsedMs`).
|
|
51
|
+
|
|
50
52
|
The stages, gates, corrections, agent profiles, sessions and prompts are described in the "Write a workflow" section of [`@clemrig/factory`'s README](https://www.npmjs.com/package/@clemrig/factory); import them from `@clemrig/flow` here. What it says of `.factory/`, prompt files and `factory run` options belongs to the factory: with the engine alone, the program gives the input, the prompt texts and the directories to `startRun`.
|
|
51
53
|
|
|
52
54
|
## Runs
|
package/dist/app/run.d.ts
CHANGED
|
@@ -16,11 +16,15 @@ export interface RunSetup {
|
|
|
16
16
|
/** Where runs are kept, one directory per run; `.flow/runs/` of `dir` by default. */
|
|
17
17
|
runsDir?: string;
|
|
18
18
|
}
|
|
19
|
+
/** What resuming a failed run needs: the run, and its workflow with its options, prompts and directories. */
|
|
20
|
+
export interface ResumeSetup extends Omit<RunSetup, "input"> {
|
|
21
|
+
runId: string;
|
|
22
|
+
}
|
|
19
23
|
export interface RunHooks {
|
|
20
24
|
/** Each stage, journal and agent event, once recorded. */
|
|
21
25
|
onEvent(event: RunEvent): void;
|
|
22
26
|
}
|
|
23
|
-
/** A created run, executing in the foreground. */
|
|
27
|
+
/** A created or resumed run, executing in the foreground. */
|
|
24
28
|
export interface StartedRun {
|
|
25
29
|
state: Readonly<RunState>;
|
|
26
30
|
/** Each runtime the run uses: version, executable and connection. */
|
|
@@ -36,3 +40,15 @@ export interface StartedRun {
|
|
|
36
40
|
* as it is.
|
|
37
41
|
*/
|
|
38
42
|
export declare function startRun(setup: RunSetup, hooks: RunHooks): Promise<StartedRun>;
|
|
43
|
+
/**
|
|
44
|
+
* Resumes a failed run at the stage where it stopped, with its input, data,
|
|
45
|
+
* corrections, measures and agent conversations: the stage runs again, told
|
|
46
|
+
* why the run had stopped. Refused, leaving the run as it is, unless the run
|
|
47
|
+
* failed, belongs to `workflow`, stopped at a stage the workflow still has,
|
|
48
|
+
* has not spent its budget (its own, unless `maxCostUsd` gives another, or
|
|
49
|
+
* the workflow's) and the workflow finds nothing against it; prompts and
|
|
50
|
+
* runtimes are then checked as for a new run, and the run is taken over by
|
|
51
|
+
* this process alone. The time the run spent stopped is not part of its
|
|
52
|
+
* duration.
|
|
53
|
+
*/
|
|
54
|
+
export declare function resumeRun(setup: ResumeSetup, hooks: RunHooks): Promise<StartedRun>;
|
package/dist/app/run.js
CHANGED
|
@@ -5,68 +5,59 @@ import { whenInterrupted } from "../system/process.js";
|
|
|
5
5
|
import { AgentRuntime } from "../system/runtimes/agent-runtime.js";
|
|
6
6
|
import { inspectRuntimes, } from "../system/runtimes/inspect.js";
|
|
7
7
|
import { createFlowDirectory, defaultRunsDir, FileRunStore, isDirectory, newRunId, } from "../system/store.js";
|
|
8
|
-
|
|
9
|
-
* Checks input, budget, prompts and runtimes before creating the run, then runs
|
|
10
|
-
* it: stages and agents work in `dir`; the process's current directory is left
|
|
11
|
-
* as it is.
|
|
12
|
-
*/
|
|
13
|
-
export async function startRun(setup, hooks) {
|
|
14
|
-
const { workflow, dir, configDir } = setup;
|
|
8
|
+
async function workingDirectory(dir) {
|
|
15
9
|
if (!(await isDirectory(dir)))
|
|
16
10
|
throw new Error(`dir is not an existing directory: ${dir}`);
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
11
|
+
}
|
|
12
|
+
/** The budget in force, the run's or the workflow's, refused when its agents' runtimes cannot check it. */
|
|
13
|
+
function budgetOf(workflow, maxCostUsd) {
|
|
14
|
+
if (maxCostUsd !== undefined &&
|
|
15
|
+
!(Number.isFinite(maxCostUsd) && maxCostUsd > 0))
|
|
16
|
+
throw new Error(`maxCostUsd must be a positive number of USD, got ${typeof maxCostUsd === "string" ? JSON.stringify(maxCostUsd) : String(maxCostUsd)}`);
|
|
21
17
|
// The budget in force, the run's or the workflow's, whoever built the workflow.
|
|
22
|
-
const
|
|
18
|
+
const budget = maxCostUsd ?? workflow.maxCostUsd;
|
|
19
|
+
const unbudgetable = budget === undefined ? undefined : budgetRefusal(workflow.agents);
|
|
23
20
|
if (unbudgetable)
|
|
24
21
|
throw new Error(unbudgetable);
|
|
25
|
-
|
|
22
|
+
return budget;
|
|
23
|
+
}
|
|
24
|
+
async function prerequisites(workflow, setup) {
|
|
26
25
|
const prompts = await setup.prompts();
|
|
27
26
|
const unprompted = [
|
|
28
27
|
...new Set(Object.values(workflow.agents).map(({ prompt }) => prompt)),
|
|
29
28
|
].filter((name) => !(Object.hasOwn(prompts, name) && prompts[name]?.trim()));
|
|
30
29
|
if (unprompted.length)
|
|
31
30
|
throw new Error(unprompted.map((name) => `Missing or empty prompt: ${name}`).join("; "));
|
|
32
|
-
const { runtimes, problems, executables } = await inspectRuntimes(workflow.agents, dir);
|
|
31
|
+
const { runtimes, problems, executables } = await inspectRuntimes(workflow.agents, setup.dir);
|
|
33
32
|
if (problems.length)
|
|
34
33
|
throw new Error(`Missing prerequisites: ${problems.map(({ stage, runtime, reason }) => `stage ${stage} (${runtime}): ${reason}`).join("; ")}`);
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
runtime,
|
|
49
|
-
detail,
|
|
50
|
-
])),
|
|
51
|
-
};
|
|
52
|
-
if (setup.runsDir === undefined)
|
|
53
|
-
await createFlowDirectory(dir);
|
|
54
|
-
else if ((await isDirectory(setup.runsDir)) === false)
|
|
55
|
-
throw new Error(`runsDir is not a directory: ${setup.runsDir}`);
|
|
56
|
-
const store = new FileRunStore(setup.runsDir ?? defaultRunsDir(dir), state.id);
|
|
34
|
+
return { prompts, runtimes, executables };
|
|
35
|
+
}
|
|
36
|
+
function runtimeDetails(runtimes) {
|
|
37
|
+
return Object.fromEntries(Object.entries(runtimes).map(([runtime, { detail }]) => [runtime, detail]));
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Saves the run, then executes it from its current stage. The run fails once
|
|
41
|
+
* its budget is exceeded, or once a call announced no cost; calls without a
|
|
42
|
+
* cost recorded before it executes, by an earlier execution, do not count.
|
|
43
|
+
*/
|
|
44
|
+
async function execute(state, store, setup, checked, hooks, resumedAfter) {
|
|
45
|
+
const { workflow, dir, configDir } = setup;
|
|
46
|
+
const { maxCostUsd } = checked;
|
|
57
47
|
const agent = new AgentRuntime({
|
|
58
48
|
dir,
|
|
59
49
|
configDir,
|
|
60
|
-
prompts,
|
|
50
|
+
prompts: checked.prompts,
|
|
61
51
|
onUsage: async (report) => {
|
|
62
52
|
if (state.metrics)
|
|
63
53
|
recordUsage(state.metrics, report);
|
|
64
54
|
await store.save(state);
|
|
65
55
|
},
|
|
66
56
|
run: { id: state.id, directory: store.directory },
|
|
67
|
-
executables,
|
|
57
|
+
executables: checked.executables,
|
|
68
58
|
});
|
|
69
59
|
await store.save(state);
|
|
60
|
+
const accepted = state.metrics?.usage.missing ?? 0;
|
|
70
61
|
const controller = new AbortController();
|
|
71
62
|
/**
|
|
72
63
|
* Past its budget, the run stops: the abort fails it at its next stage
|
|
@@ -75,7 +66,7 @@ export async function startRun(setup, hooks) {
|
|
|
75
66
|
const overBudget = () => {
|
|
76
67
|
const problem = maxCostUsd === undefined || !state.metrics
|
|
77
68
|
? undefined
|
|
78
|
-
: budgetProblem(state.metrics, maxCostUsd);
|
|
69
|
+
: budgetProblem(state.metrics, maxCostUsd, accepted);
|
|
79
70
|
if (problem)
|
|
80
71
|
controller.abort(new Error(problem));
|
|
81
72
|
return problem;
|
|
@@ -97,12 +88,102 @@ export async function startRun(setup, hooks) {
|
|
|
97
88
|
};
|
|
98
89
|
// The signal that interrupts its processes also stops the run, even if a stage catches the interruption.
|
|
99
90
|
const release = whenInterrupted((signal) => controller.abort(new Error(`Run interrupted by ${signal}`)));
|
|
100
|
-
const done = executeWorkflow(workflow, state, { agent: budgeted, dir }, store, {
|
|
91
|
+
const done = executeWorkflow(workflow, state, { agent: budgeted, dir }, store, {
|
|
92
|
+
onEvent: hooks.onEvent,
|
|
93
|
+
signal: controller.signal,
|
|
94
|
+
...(resumedAfter === undefined ? {} : { resumedAfter }),
|
|
95
|
+
}).finally(release);
|
|
101
96
|
return {
|
|
102
97
|
state,
|
|
103
|
-
runtimes: Object.values(runtimes),
|
|
98
|
+
runtimes: Object.values(checked.runtimes),
|
|
104
99
|
done,
|
|
105
100
|
stop: (reason) => controller.abort(reason),
|
|
106
101
|
};
|
|
107
102
|
}
|
|
103
|
+
/**
|
|
104
|
+
* Checks input, budget, prompts and runtimes before creating the run, then runs
|
|
105
|
+
* it: stages and agents work in `dir`; the process's current directory is left
|
|
106
|
+
* as it is.
|
|
107
|
+
*/
|
|
108
|
+
export async function startRun(setup, hooks) {
|
|
109
|
+
const { workflow, dir } = setup;
|
|
110
|
+
await workingDirectory(dir);
|
|
111
|
+
const maxCostUsd = budgetOf(workflow, setup.maxCostUsd);
|
|
112
|
+
const input = parseInput(workflow, setup.input ?? {});
|
|
113
|
+
const checked = await prerequisites(workflow, setup);
|
|
114
|
+
const now = new Date().toISOString();
|
|
115
|
+
const state = {
|
|
116
|
+
version: 4,
|
|
117
|
+
id: newRunId(),
|
|
118
|
+
workflow: workflow.name,
|
|
119
|
+
input,
|
|
120
|
+
stage: workflow.initial,
|
|
121
|
+
status: "running",
|
|
122
|
+
data: {},
|
|
123
|
+
createdAt: now,
|
|
124
|
+
updatedAt: now,
|
|
125
|
+
...(setup.maxCostUsd === undefined ? {} : { maxCostUsd: setup.maxCostUsd }),
|
|
126
|
+
metrics: emptyMetrics(),
|
|
127
|
+
runtimes: runtimeDetails(checked.runtimes),
|
|
128
|
+
};
|
|
129
|
+
if (setup.runsDir === undefined)
|
|
130
|
+
await createFlowDirectory(dir);
|
|
131
|
+
else if ((await isDirectory(setup.runsDir)) === false)
|
|
132
|
+
throw new Error(`runsDir is not a directory: ${setup.runsDir}`);
|
|
133
|
+
const store = new FileRunStore(setup.runsDir ?? defaultRunsDir(dir), state.id);
|
|
134
|
+
return execute(state, store, setup, { ...checked, maxCostUsd }, hooks);
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Resumes a failed run at the stage where it stopped, with its input, data,
|
|
138
|
+
* corrections, measures and agent conversations: the stage runs again, told
|
|
139
|
+
* why the run had stopped. Refused, leaving the run as it is, unless the run
|
|
140
|
+
* failed, belongs to `workflow`, stopped at a stage the workflow still has,
|
|
141
|
+
* has not spent its budget (its own, unless `maxCostUsd` gives another, or
|
|
142
|
+
* the workflow's) and the workflow finds nothing against it; prompts and
|
|
143
|
+
* runtimes are then checked as for a new run, and the run is taken over by
|
|
144
|
+
* this process alone. The time the run spent stopped is not part of its
|
|
145
|
+
* duration.
|
|
146
|
+
*/
|
|
147
|
+
export async function resumeRun(setup, hooks) {
|
|
148
|
+
const { workflow, dir, runId } = setup;
|
|
149
|
+
await workingDirectory(dir);
|
|
150
|
+
const store = new FileRunStore(setup.runsDir ?? defaultRunsDir(dir), runId);
|
|
151
|
+
const found = await store.load();
|
|
152
|
+
if (found.status !== "failed")
|
|
153
|
+
throw new Error(`Run ${runId} is ${found.status}: only a failed run can be resumed`);
|
|
154
|
+
if (found.workflow !== workflow.name)
|
|
155
|
+
throw new Error(`Run ${runId} is a run of ${found.workflow}, not of ${workflow.name}`);
|
|
156
|
+
if (!Object.hasOwn(workflow.nodes, found.stage))
|
|
157
|
+
throw new Error(`Run ${runId} stopped at stage ${found.stage}, which ${workflow.name} no longer has`);
|
|
158
|
+
const maxCostUsd = budgetOf(workflow, setup.maxCostUsd ?? found.maxCostUsd);
|
|
159
|
+
const spent = maxCostUsd === undefined || !found.metrics
|
|
160
|
+
? undefined
|
|
161
|
+
: budgetProblem(found.metrics, maxCostUsd, found.metrics.usage.missing);
|
|
162
|
+
if (spent)
|
|
163
|
+
throw new Error(`Cannot resume run ${runId}: ${spent}; resume it with a higher budget`);
|
|
164
|
+
const problem = await workflow.resumeProblem?.({ state: found, dir });
|
|
165
|
+
if (problem)
|
|
166
|
+
throw new Error(`Cannot resume run ${runId}: ${problem}`);
|
|
167
|
+
const checked = await prerequisites(workflow, setup);
|
|
168
|
+
const resumedAfter = found.error ?? "no cause recorded";
|
|
169
|
+
// Two resumptions of the run never both take it over.
|
|
170
|
+
const state = await store.exclusively(async () => {
|
|
171
|
+
const current = await store.load();
|
|
172
|
+
if (current.status !== "failed" || current.updatedAt !== found.updatedAt)
|
|
173
|
+
throw new Error(`Run ${runId} changed while it was being resumed: it is ${current.status}`);
|
|
174
|
+
const now = new Date();
|
|
175
|
+
const paused = now.getTime() - Date.parse(current.updatedAt);
|
|
176
|
+
if (paused > 0)
|
|
177
|
+
current.pausedMs = (current.pausedMs ?? 0) + paused;
|
|
178
|
+
if (setup.maxCostUsd !== undefined)
|
|
179
|
+
current.maxCostUsd = setup.maxCostUsd;
|
|
180
|
+
current.status = "running";
|
|
181
|
+
delete current.error;
|
|
182
|
+
current.updatedAt = now.toISOString();
|
|
183
|
+
current.runtimes = runtimeDetails(checked.runtimes);
|
|
184
|
+
await store.save(current);
|
|
185
|
+
return current;
|
|
186
|
+
});
|
|
187
|
+
return execute(state, store, setup, { ...checked, maxCostUsd }, hooks, resumedAfter);
|
|
188
|
+
}
|
|
108
189
|
//# sourceMappingURL=run.js.map
|
package/dist/app/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/app/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/app/run.ts"],"names":[],"mappings":"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"}
|
package/dist/engine/metrics.d.ts
CHANGED
|
@@ -46,7 +46,14 @@ export declare function emptyMetrics(): RunMetrics;
|
|
|
46
46
|
export declare function recordUsage(metrics: RunMetrics, report: UsageReport): void;
|
|
47
47
|
/** The cost the run's agents announced; `null` while none announced any. */
|
|
48
48
|
export declare function knownCost(metrics: RunMetrics | undefined): number | null;
|
|
49
|
-
/**
|
|
50
|
-
|
|
51
|
-
|
|
49
|
+
/**
|
|
50
|
+
* Why a run past its budget must stop: its announced cost exceeds it, or a call
|
|
51
|
+
* announced none. The first `accepted` calls without a cost no longer stop it:
|
|
52
|
+
* they ended before the run was resumed.
|
|
53
|
+
*/
|
|
54
|
+
export declare function budgetProblem(metrics: RunMetrics, maxCostUsd: number, accepted?: number): string | undefined;
|
|
55
|
+
/**
|
|
56
|
+
* From creation to now while running, to the last update once completed or
|
|
57
|
+
* failed, without the pauses between a failure and its resumption.
|
|
58
|
+
*/
|
|
52
59
|
export declare function elapsedMs(state: RunState, now?: number): number | null;
|
package/dist/engine/metrics.js
CHANGED
|
@@ -57,18 +57,25 @@ export function knownCost(metrics) {
|
|
|
57
57
|
: metrics.usage.responses > 0;
|
|
58
58
|
return priced ? metrics.usage.costUsd : null;
|
|
59
59
|
}
|
|
60
|
-
/**
|
|
61
|
-
|
|
62
|
-
|
|
60
|
+
/**
|
|
61
|
+
* Why a run past its budget must stop: its announced cost exceeds it, or a call
|
|
62
|
+
* announced none. The first `accepted` calls without a cost no longer stop it:
|
|
63
|
+
* they ended before the run was resumed.
|
|
64
|
+
*/
|
|
65
|
+
export function budgetProblem(metrics, maxCostUsd, accepted = 0) {
|
|
66
|
+
if (metrics.usage.missing > accepted)
|
|
63
67
|
return `Budget of ${maxCostUsd} USD cannot be checked: an agent call announced no cost`;
|
|
64
68
|
if (metrics.usage.costUsd > maxCostUsd)
|
|
65
69
|
return `Budget exceeded: ${metrics.usage.costUsd.toFixed(6)} USD spent, maximum ${maxCostUsd.toFixed(6)} USD`;
|
|
66
70
|
return undefined;
|
|
67
71
|
}
|
|
68
|
-
/**
|
|
72
|
+
/**
|
|
73
|
+
* From creation to now while running, to the last update once completed or
|
|
74
|
+
* failed, without the pauses between a failure and its resumption.
|
|
75
|
+
*/
|
|
69
76
|
export function elapsedMs(state, now = Date.now()) {
|
|
70
77
|
const end = state.status === "running" ? now : Date.parse(state.updatedAt);
|
|
71
|
-
const elapsed = end - Date.parse(state.createdAt);
|
|
78
|
+
const elapsed = end - Date.parse(state.createdAt) - (state.pausedMs ?? 0);
|
|
72
79
|
return Number.isFinite(elapsed) && elapsed >= 0 ? elapsed : null;
|
|
73
80
|
}
|
|
74
81
|
//# sourceMappingURL=metrics.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/engine/metrics.ts"],"names":[],"mappings":"AAyCA,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,CAAU,CAAC;AAE5E,MAAM,QAAQ,GAAG,GAAgB,EAAE,CAAC,CAAC;IACnC,KAAK,EAAE,CAAC;IACR,MAAM,EAAE,CAAC;IACT,SAAS,EAAE,CAAC;IACZ,UAAU,EAAE,CAAC;CACd,CAAC,CAAC;AAEH,mFAAmF;AACnF,MAAM,UAAU,QAAQ,CAAC,QAAsB;IAC7C,MAAM,KAAK,GAAe,QAAQ,EAAE,CAAC;IACrC,KAAK,MAAM,OAAO,IAAI,QAAQ;QAC5B,KAAK,MAAM,KAAK,IAAI,WAAW;YAAE,KAAK,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;IAClE,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,KAAK,SAAS,CAAC;QACxD,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAC,MAAM,CAC7B,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,EAC1C,CAAC,CACF,CAAC;IACJ,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO;QACL,KAAK,EAAE,EAAE,GAAG,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;QAC9D,QAAQ,EAAE,EAAE;KACb,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,OAAmB,EAAE,MAAmB;IAClE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACxB,OAAO;IACT,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;IAC1B,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS;QAAE,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IAChE,OAAO,CAAC,QAAQ,KAAK,EAAE,CAAC;IACxB,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAC7B,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC1C,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;QACtB,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,QAAQ;YACrC,CAAC,CAAC,MAAM,CAAC,KAAK;YACd,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACzC,KAAK,MAAM,KAAK,IAAI,WAAW;QAC7B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,MAAM,CACpC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,EACtC,CAAC,CACF,CAAC;IACJ,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAC,MAAM,CACrC,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,EAC1C,CAAC,CACF,CAAC;AACJ,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,SAAS,CAAC,OAA+B;IACvD,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,iFAAiF;IACjF,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ;QAC7B,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAClC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,KAAK,SAAS,CACvC;QACH,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;IAChC,OAAO,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/C,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/engine/metrics.ts"],"names":[],"mappings":"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"}
|
package/dist/engine/profiles.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
|
|
2
|
+
/** An agent call's timeout: 15 minutes unless its profile gives another, at least a second, without a maximum. */
|
|
3
|
+
const timeoutMs = z.number().int().min(1000).default(900_000);
|
|
3
4
|
/**
|
|
4
5
|
* Pi, with the provider whose connection it uses. Without `tools`, Pi keeps its
|
|
5
6
|
* default tools; extensions, skills and context files of the machine load as usual.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../src/engine/profiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../src/engine/profiles.ts"],"names":[],"mappings":"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"}
|
package/dist/engine/runner.d.ts
CHANGED
|
@@ -2,7 +2,9 @@ import type { AgentPort, RunEvent, RunState, RunStore, Workflow } from "./types.
|
|
|
2
2
|
/**
|
|
3
3
|
* Deterministic graph runner. Stages report outcomes; the graph routes them.
|
|
4
4
|
* Each retry edge is taken at most its maximum; an aborted run stops before its
|
|
5
|
-
* next stage, or fails instead of completing.
|
|
5
|
+
* next stage, or fails instead of completing. A resumed run starts again with
|
|
6
|
+
* its current stage, which journals why the run had stopped and passes it on
|
|
7
|
+
* to its agent requests.
|
|
6
8
|
*/
|
|
7
9
|
export declare function executeWorkflow(workflow: Pick<Workflow, "nodes">, state: RunState, runtime: {
|
|
8
10
|
agent: AgentPort;
|
|
@@ -10,4 +12,6 @@ export declare function executeWorkflow(workflow: Pick<Workflow, "nodes">, state
|
|
|
10
12
|
}, store: RunStore, options?: {
|
|
11
13
|
onEvent?: (event: RunEvent) => void;
|
|
12
14
|
signal?: AbortSignal;
|
|
15
|
+
/** Why the run had stopped, when it is resumed. */
|
|
16
|
+
resumedAfter?: string;
|
|
13
17
|
}): Promise<RunState>;
|
package/dist/engine/runner.js
CHANGED
|
@@ -37,7 +37,9 @@ function errorMessage(error) {
|
|
|
37
37
|
/**
|
|
38
38
|
* Deterministic graph runner. Stages report outcomes; the graph routes them.
|
|
39
39
|
* Each retry edge is taken at most its maximum; an aborted run stops before its
|
|
40
|
-
* next stage, or fails instead of completing.
|
|
40
|
+
* next stage, or fails instead of completing. A resumed run starts again with
|
|
41
|
+
* its current stage, which journals why the run had stopped and passes it on
|
|
42
|
+
* to its agent requests.
|
|
41
43
|
*/
|
|
42
44
|
export async function executeWorkflow(workflow, state, runtime, store, options = {}) {
|
|
43
45
|
const emit = async (event) => {
|
|
@@ -49,6 +51,7 @@ export async function executeWorkflow(workflow, state, runtime, store, options =
|
|
|
49
51
|
await store.event(full);
|
|
50
52
|
options.onEvent?.(full);
|
|
51
53
|
};
|
|
54
|
+
let resumedAfter = options.resumedAfter;
|
|
52
55
|
while (state.status === "running") {
|
|
53
56
|
const node = workflow.nodes[state.stage];
|
|
54
57
|
if (!node)
|
|
@@ -61,11 +64,17 @@ export async function executeWorkflow(workflow, state, runtime, store, options =
|
|
|
61
64
|
if (options.signal?.aborted)
|
|
62
65
|
throw options.signal.reason ?? new Error("Run aborted");
|
|
63
66
|
await emit({ type: "stage", stage: current, kind, status: "started" });
|
|
67
|
+
const resumed = resumedAfter;
|
|
68
|
+
resumedAfter = undefined;
|
|
69
|
+
if (resumed !== undefined)
|
|
70
|
+
journal.log(`Resumed after: ${resumed}`);
|
|
64
71
|
const context = {
|
|
65
72
|
state,
|
|
66
73
|
dir: runtime.dir,
|
|
67
74
|
agent: {
|
|
68
|
-
execute: (request) => runtime.agent.execute(
|
|
75
|
+
execute: (request) => runtime.agent.execute(resumed === undefined
|
|
76
|
+
? request
|
|
77
|
+
: { ...request, resumedAfter: resumed }, journal.activity),
|
|
69
78
|
},
|
|
70
79
|
log: journal.log,
|
|
71
80
|
};
|
|
@@ -90,14 +99,19 @@ export async function executeWorkflow(workflow, state, runtime, store, options =
|
|
|
90
99
|
...(decision ? { decision } : {}),
|
|
91
100
|
...(result.detail ? { detail: result.detail } : {}),
|
|
92
101
|
};
|
|
93
|
-
let retry;
|
|
94
102
|
if (correction) {
|
|
95
103
|
const key = `${current}.${result.outcome}`;
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
104
|
+
const retry = {
|
|
105
|
+
key,
|
|
106
|
+
count: (state.retries?.[key] ?? 0) + 1,
|
|
107
|
+
max: correction.max,
|
|
108
|
+
};
|
|
100
109
|
outcome.retry = retry;
|
|
110
|
+
// A correction past its maximum is not taken: the run fails as the
|
|
111
|
+
// stage found it, without its data, feedback or count.
|
|
112
|
+
if (retry.count > retry.max)
|
|
113
|
+
throw new Error(`Retry ${key} → ${next} exceeded its maximum of ${retry.max}`);
|
|
114
|
+
state.retries = { ...state.retries, [key]: retry.count };
|
|
101
115
|
}
|
|
102
116
|
Object.assign(state.data, result.data);
|
|
103
117
|
if (Object.hasOwn(result, "output"))
|
|
@@ -108,8 +122,6 @@ export async function executeWorkflow(workflow, state, runtime, store, options =
|
|
|
108
122
|
delete state.feedback;
|
|
109
123
|
delete state.output;
|
|
110
124
|
}
|
|
111
|
-
if (retry && retry.count > retry.max)
|
|
112
|
-
throw new Error(`Retry ${retry.key} → ${next} exceeded its maximum of ${retry.max}`);
|
|
113
125
|
// The end of the run is a stage boundary too: an interrupted run never completes.
|
|
114
126
|
if (next === null && options.signal?.aborted)
|
|
115
127
|
throw options.signal.reason ?? new Error("Run aborted");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/engine/runner.ts"],"names":[],"mappings":"AAmBA;;;;GAIG;AACH,SAAS,YAAY,CACnB,KAA0E,EAC1E,KAAa,EACb,IAAe;IAEf,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAChC,IAAI,OAAuC,CAAC;IAC5C,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,MAAM,MAAM,GAAG,CAAC,KAAgD,EAAE,EAAE;QAClE,IAAI,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,wBAAwB,CAAC,CAAC;QACpE,OAAO,GAAG,OAAO;aACd,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;aACxB,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YACxB,OAAO,KAAK,EAAE,KAAK,EAAE,CAAC;QACxB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;IACF,OAAO;QACL,GAAG,CAAC,OAAO,EAAE,IAAI;YACf,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC3E,CAAC;QACD,QAAQ,CAAC,QAAQ;YACf,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACnD,CAAC;QACD,KAAK,CAAC,KAAK;YACT,MAAM,GAAG,IAAI,CAAC;YACd,MAAM,OAAO,CAAC;YACd,IAAI,OAAO;gBAAE,MAAM,OAAO,CAAC,KAAK,CAAC;QACnC,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/engine/runner.ts"],"names":[],"mappings":"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"}
|
package/dist/engine/types.d.ts
CHANGED
|
@@ -12,6 +12,8 @@ export interface AgentRequest {
|
|
|
12
12
|
session: string;
|
|
13
13
|
context: unknown;
|
|
14
14
|
schema: Record<string, unknown>;
|
|
15
|
+
/** Why the run had stopped, on the requests of the stage a resumed run starts again with. */
|
|
16
|
+
resumedAfter?: string;
|
|
15
17
|
}
|
|
16
18
|
/** Adds a message to the run journal (`events.jsonl`), with optional data. */
|
|
17
19
|
export type Log = (message: string, data?: Record<string, unknown>) => void;
|
|
@@ -78,8 +80,12 @@ export interface RunState {
|
|
|
78
80
|
error?: string;
|
|
79
81
|
createdAt: string;
|
|
80
82
|
updatedAt: string;
|
|
83
|
+
/** Time between each failure and the resumption that followed it, in ms; not part of the run's duration. */
|
|
84
|
+
pausedMs?: number;
|
|
85
|
+
/** The run's own budget in USD, given instead of its workflow's; kept when it is resumed without another. */
|
|
86
|
+
maxCostUsd?: number;
|
|
81
87
|
metrics?: RunMetrics;
|
|
82
|
-
/** Each runtime the run used, with its version and connection, as checked before it started. */
|
|
88
|
+
/** Each runtime the run used, with its version and connection, as checked before it started or was last resumed. */
|
|
83
89
|
runtimes?: Partial<Record<Runtime, string>>;
|
|
84
90
|
}
|
|
85
91
|
export interface WorkflowDecision {
|
|
@@ -147,6 +153,11 @@ export interface WorkflowDefinition {
|
|
|
147
153
|
steps?: WorkflowStep[];
|
|
148
154
|
/** Result lines; by default the run's validated data as JSON. */
|
|
149
155
|
presentResult?(state: Readonly<RunState>): string[];
|
|
156
|
+
/**
|
|
157
|
+
* Why a failed run cannot be resumed at its stage, with the directory as it
|
|
158
|
+
* is now; without it, a failed run resumes at any stage.
|
|
159
|
+
*/
|
|
160
|
+
resumeProblem?(context: Pick<StageContext, "state" | "dir">): string | undefined | Promise<string | undefined>;
|
|
150
161
|
}
|
|
151
162
|
/** A named group of stages, shown as one step of a run's progress. */
|
|
152
163
|
export interface WorkflowStep {
|
package/dist/index.d.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Zod instance.
|
|
5
5
|
*/
|
|
6
6
|
export { z } from "zod";
|
|
7
|
-
export { type RunHooks, type RunSetup, type StartedRun, startRun, } from "./app/run.js";
|
|
7
|
+
export { type ResumeSetup, type RunHooks, type RunSetup, resumeRun, type StartedRun, startRun, } from "./app/run.js";
|
|
8
8
|
export { type Correction, listRuns, loadRun, loadRunEvents, presentResult, type RunEntry, summarizeCorrections, summarizeRun, } from "./app/runs.js";
|
|
9
9
|
export { type AgentUsage, elapsedMs, type TokenCounts, } from "./engine/metrics.js";
|
|
10
10
|
export { agent, type Check, code, END, gate, node, pick, retry, schemaGate, step, } from "./engine/primitives.js";
|
package/dist/index.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Zod instance.
|
|
5
5
|
*/
|
|
6
6
|
export { z } from "zod";
|
|
7
|
-
export { startRun, } from "./app/run.js";
|
|
7
|
+
export { resumeRun, startRun, } from "./app/run.js";
|
|
8
8
|
export { listRuns, loadRun, loadRunEvents, presentResult, summarizeCorrections, summarizeRun, } from "./app/runs.js";
|
|
9
9
|
export { elapsedMs, } from "./engine/metrics.js";
|
|
10
10
|
export { agent, code, END, gate, node, pick, retry, schemaGate, step, } from "./engine/primitives.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAIL,QAAQ,GACT,MAAM,cAAc,CAAC;AACtB,OAAO,EAEL,QAAQ,EACR,OAAO,EACP,aAAa,EACb,aAAa,EAEb,oBAAoB,EACpB,YAAY,GACb,MAAM,eAAe,CAAC;AACvB,OAAO,EAEL,SAAS,GAEV,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,KAAK,EAEL,IAAI,EACJ,GAAG,EACH,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,UAAU,EACV,IAAI,GACL,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAGL,eAAe,EAEf,aAAa,GACd,MAAM,sBAAsB,CAAC;AAe9B,OAAO,EACL,cAAc,EAEd,iBAAiB,EACjB,UAAU,EACV,UAAU,GACX,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,UAAU,GACX,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,WAAW,EACX,eAAe,GAEhB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAIL,SAAS,EAET,QAAQ,GACT,MAAM,cAAc,CAAC;AACtB,OAAO,EAEL,QAAQ,EACR,OAAO,EACP,aAAa,EACb,aAAa,EAEb,oBAAoB,EACpB,YAAY,GACb,MAAM,eAAe,CAAC;AACvB,OAAO,EAEL,SAAS,GAEV,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,KAAK,EAEL,IAAI,EACJ,GAAG,EACH,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,UAAU,EACV,IAAI,GACL,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAGL,eAAe,EAEf,aAAa,GACd,MAAM,sBAAsB,CAAC;AAe9B,OAAO,EACL,cAAc,EAEd,iBAAiB,EACjB,UAAU,EACV,UAAU,GACX,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,UAAU,GACX,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,WAAW,EACX,eAAe,GAEhB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/system/process.d.ts
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calls `work` once `ms` have passed, however long, by chaining timers past
|
|
3
|
+
* the longest one Node allows; the wait never keeps the process alive.
|
|
4
|
+
* Returns its cancellation.
|
|
5
|
+
*/
|
|
6
|
+
export declare function after(ms: number, work: () => void): () => void;
|
|
1
7
|
export declare class ProcessStartError extends Error {
|
|
2
8
|
constructor(executable: string, cause: Error);
|
|
3
9
|
}
|
package/dist/system/process.js
CHANGED
|
@@ -2,6 +2,22 @@ import { spawn } from "node:child_process";
|
|
|
2
2
|
const MAX_CAPTURE_BYTES = 2 * 1024 * 1024;
|
|
3
3
|
const MAX_LINE_BYTES = 32 * 1024 * 1024;
|
|
4
4
|
const KILL_GRACE_MS = 1_000;
|
|
5
|
+
/** The longest wait of one Node timer, about 24.8 days: a longer one fires at once. */
|
|
6
|
+
const MAX_TIMER_MS = 2 ** 31 - 1;
|
|
7
|
+
/**
|
|
8
|
+
* Calls `work` once `ms` have passed, however long, by chaining timers past
|
|
9
|
+
* the longest one Node allows; the wait never keeps the process alive.
|
|
10
|
+
* Returns its cancellation.
|
|
11
|
+
*/
|
|
12
|
+
export function after(ms, work) {
|
|
13
|
+
let timer;
|
|
14
|
+
const wait = (left) => {
|
|
15
|
+
timer = setTimeout(() => (left > MAX_TIMER_MS ? wait(left - MAX_TIMER_MS) : work()), Math.min(left, MAX_TIMER_MS));
|
|
16
|
+
timer.unref();
|
|
17
|
+
};
|
|
18
|
+
wait(ms);
|
|
19
|
+
return () => clearTimeout(timer);
|
|
20
|
+
}
|
|
5
21
|
export class ProcessStartError extends Error {
|
|
6
22
|
constructor(executable, cause) {
|
|
7
23
|
super(`Could not start ${executable}: ${cause.message}`, { cause });
|
|
@@ -166,7 +182,7 @@ export async function runCommand(command, options) {
|
|
|
166
182
|
};
|
|
167
183
|
const cleanup = () => {
|
|
168
184
|
untrack(child);
|
|
169
|
-
|
|
185
|
+
cancelTimeout();
|
|
170
186
|
if (killTimer)
|
|
171
187
|
clearTimeout(killTimer);
|
|
172
188
|
};
|
|
@@ -206,10 +222,7 @@ export async function runCommand(command, options) {
|
|
|
206
222
|
signalGroup(child, stopSignal);
|
|
207
223
|
killTimer = setTimeout(sendKill, KILL_GRACE_MS);
|
|
208
224
|
};
|
|
209
|
-
const
|
|
210
|
-
requestTermination(new ProcessTimeoutError(timeoutMs, executable));
|
|
211
|
-
}, timeoutMs);
|
|
212
|
-
timeout.unref();
|
|
225
|
+
const cancelTimeout = after(timeoutMs, () => requestTermination(new ProcessTimeoutError(timeoutMs, executable)));
|
|
213
226
|
track(child, onParentSignal);
|
|
214
227
|
child.once("error", (error) => {
|
|
215
228
|
requestTermination(new ProcessStartError(executable, error));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process.js","sourceRoot":"","sources":["../../src/system/process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,MAAM,iBAAiB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAC1C,MAAM,cAAc,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AACxC,MAAM,aAAa,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"process.js","sourceRoot":"","sources":["../../src/system/process.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,8 @@ export interface CallOptions {
|
|
|
21
21
|
export declare function runCall<R extends Runtime>(adapter: RuntimeAdapter<R>, call: RuntimeCall<R> & {
|
|
22
22
|
context: unknown;
|
|
23
23
|
schema: Record<string, unknown>;
|
|
24
|
+
/** Why the run had stopped, when it was resumed at this call's stage. */
|
|
25
|
+
resumedAfter?: string;
|
|
24
26
|
/** Recorded when the call starts. */
|
|
25
27
|
settings: AgentSettings;
|
|
26
28
|
}, options: CallOptions): Promise<unknown>;
|
|
@@ -160,6 +160,9 @@ export class AgentRuntime {
|
|
|
160
160
|
},
|
|
161
161
|
context: request.context,
|
|
162
162
|
schema: request.schema,
|
|
163
|
+
...(request.resumedAfter === undefined
|
|
164
|
+
? {}
|
|
165
|
+
: { resumedAfter: request.resumedAfter }),
|
|
163
166
|
// Paths as the workflow declares them, not as resolved on this machine.
|
|
164
167
|
settings: agentSettings(declared),
|
|
165
168
|
}, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-runtime.js","sourceRoot":"","sources":["../../../src/system/runtimes/agent-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAEL,QAAQ,GAET,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAEL,aAAa,EAEb,cAAc,GACf,MAAM,0BAA0B,CAAC;AAMlC,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE9D,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAazC,4FAA4F;AAC5F,SAAS,SAAS,CAAC,OAAsB;IAIvC,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAC9B,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,CACvD,CAAC;IACF,IAAI,OAAO,EAAE,KAAK;QAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;IACtE,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzE,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/E,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,OAA0B,EAC1B,
|
|
1
|
+
{"version":3,"file":"agent-runtime.js","sourceRoot":"","sources":["../../../src/system/runtimes/agent-runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
export declare function agentPrompt(request: {
|
|
3
3
|
context: unknown;
|
|
4
4
|
schema: Record<string, unknown>;
|
|
5
|
+
resumedAfter?: string;
|
|
5
6
|
}): string;
|
|
6
7
|
/** Accepts exact JSON or a single fenced JSON block, never prose surrounding a result. */
|
|
7
8
|
export declare function parseAgentJson(text: string): unknown;
|
|
@@ -3,10 +3,20 @@ const outputProtocol = `# Response format
|
|
|
3
3
|
|
|
4
4
|
- Return exactly one JSON value matching the requested schema.
|
|
5
5
|
- Do not use Markdown or add prose.`;
|
|
6
|
+
/** Why the run had stopped, for a stage that a resumed run starts again with. */
|
|
7
|
+
function resumedRun(cause) {
|
|
8
|
+
return `# Resumed run
|
|
9
|
+
|
|
10
|
+
The run stopped at or just before this stage and was resumed. It had stopped because: ${cause}
|
|
11
|
+
The work done before it stopped is kept: if this conversation already holds work on this request, continue it instead of starting over.`;
|
|
12
|
+
}
|
|
6
13
|
/** The complete request every runtime receives through standard input. */
|
|
7
14
|
export function agentPrompt(request) {
|
|
8
15
|
return [
|
|
9
16
|
outputProtocol,
|
|
17
|
+
...(request.resumedAfter === undefined
|
|
18
|
+
? []
|
|
19
|
+
: [resumedRun(request.resumedAfter)]),
|
|
10
20
|
"Workflow request:",
|
|
11
21
|
JSON.stringify({ context: request.context, outputSchema: request.schema }),
|
|
12
22
|
].join("\n\n");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../../src/system/runtimes/protocol.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,MAAM,cAAc,GAAG;;;oCAGa,CAAC;AAErC,0EAA0E;AAC1E,MAAM,UAAU,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../../src/system/runtimes/protocol.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,MAAM,cAAc,GAAG;;;oCAGa,CAAC;AAErC,iFAAiF;AACjF,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO;;wFAE+E,KAAK;wIAC2C,CAAC;AACzI,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,WAAW,CAAC,OAI3B;IACC,OAAO;QACL,cAAc;QACd,GAAG,CAAC,OAAO,CAAC,YAAY,KAAK,SAAS;YACpC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;QACvC,mBAAmB;QACnB,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;KAC3E,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACjB,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAG,qCAAqC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACnE,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;IAC9D,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC1E,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,oDAAoD,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC7G,CAAC;IACJ,CAAC;AACH,CAAC;AAED,8FAA8F;AAC9F,MAAM,OAAO,GAAG,6CAA6C,CAAC;AAE9D,+DAA+D;AAC/D,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAE,OAAe;IAC7D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAC9E,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;QACvD,MAAM,IAAI,KAAK,CAAC,+BAA+B,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACpE,OAAO,GAAG,KAAK,IAAI,OAAO,EAAE,CAAC;AAC/B,CAAC"}
|
package/dist/system/store.d.ts
CHANGED
|
@@ -20,6 +20,12 @@ export declare class FileRunStore implements RunStore {
|
|
|
20
20
|
static list(runsDir: string): Promise<string[]>;
|
|
21
21
|
save(state: RunState): Promise<void>;
|
|
22
22
|
load(): Promise<RunState>;
|
|
23
|
+
/**
|
|
24
|
+
* Runs `work` while no other process holds the run: a lock file created
|
|
25
|
+
* atomically in its directory and removed afterwards. Another holder is not
|
|
26
|
+
* waited for: the call fails, naming the file to remove if none is running.
|
|
27
|
+
*/
|
|
28
|
+
exclusively<T>(work: () => Promise<T>): Promise<T>;
|
|
23
29
|
event(event: RunEvent): Promise<void>;
|
|
24
30
|
/** Recorded events; a last line still being written is ignored. */
|
|
25
31
|
events(): Promise<RunEvent[]>;
|
package/dist/system/store.js
CHANGED
|
@@ -128,11 +128,36 @@ export class FileRunStore {
|
|
|
128
128
|
!isRecord(state.input) ||
|
|
129
129
|
!isRecord(state.data) ||
|
|
130
130
|
(state.retries !== undefined && !isRetryCounts(state.retries)) ||
|
|
131
|
+
(state.pausedMs !== undefined && !finiteNonnegative(state.pausedMs)) ||
|
|
132
|
+
(state.maxCostUsd !== undefined &&
|
|
133
|
+
!(finiteNonnegative(state.maxCostUsd) && state.maxCostUsd > 0)) ||
|
|
131
134
|
(state.metrics !== undefined && !isRunMetrics(state.metrics)) ||
|
|
132
135
|
(state.runtimes !== undefined && !isRuntimes(state.runtimes)))
|
|
133
136
|
throw new Error("Unsupported or mismatched persisted run; runs created by earlier flow versions are not readable");
|
|
134
137
|
return state;
|
|
135
138
|
}
|
|
139
|
+
/**
|
|
140
|
+
* Runs `work` while no other process holds the run: a lock file created
|
|
141
|
+
* atomically in its directory and removed afterwards. Another holder is not
|
|
142
|
+
* waited for: the call fails, naming the file to remove if none is running.
|
|
143
|
+
*/
|
|
144
|
+
async exclusively(work) {
|
|
145
|
+
const lock = join(this.directory, "run.lock");
|
|
146
|
+
try {
|
|
147
|
+
await writeFile(lock, "", { flag: "wx", mode: 0o600 });
|
|
148
|
+
}
|
|
149
|
+
catch (error) {
|
|
150
|
+
if (error.code === "EEXIST")
|
|
151
|
+
throw new Error(`Run ${this.runId} is held by another process; if none is running, remove ${lock}`);
|
|
152
|
+
throw error;
|
|
153
|
+
}
|
|
154
|
+
try {
|
|
155
|
+
return await work();
|
|
156
|
+
}
|
|
157
|
+
finally {
|
|
158
|
+
await rm(lock, { force: true });
|
|
159
|
+
}
|
|
160
|
+
}
|
|
136
161
|
async event(event) {
|
|
137
162
|
if (event.runId !== this.runId)
|
|
138
163
|
throw new Error("Event run ID does not match store");
|
package/dist/system/store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/system/store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/system/store.ts"],"names":[],"mappings":"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"}
|