@async/pipeline 0.1.5 → 0.2.3
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/LICENSE +21 -0
- package/README.md +2 -0
- package/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +5 -1
- package/dist/cli.js.map +1 -1
- package/dist/internal/core/index.d.ts +77 -41
- package/dist/internal/core/index.d.ts.map +1 -1
- package/dist/internal/core/index.js +150 -26
- package/dist/internal/core/index.js.map +1 -1
- package/dist/internal/lima/index.d.ts +1 -1
- package/dist/internal/lima/index.d.ts.map +1 -1
- package/dist/internal/lima/index.js +1 -1
- package/dist/internal/lima/index.js.map +1 -1
- package/dist/internal/node/cli.d.ts +5 -2
- package/dist/internal/node/cli.d.ts.map +1 -1
- package/dist/internal/node/cli.js +396 -89
- package/dist/internal/node/cli.js.map +1 -1
- package/dist/internal/node/doctor.d.ts +1 -1
- package/dist/internal/node/doctor.d.ts.map +1 -1
- package/dist/internal/node/doctor.js +50 -1
- package/dist/internal/node/doctor.js.map +1 -1
- package/dist/internal/node/github.d.ts +2 -0
- package/dist/internal/node/github.d.ts.map +1 -1
- package/dist/internal/node/github.js +59 -11
- package/dist/internal/node/github.js.map +1 -1
- package/dist/internal/node/index.d.ts +1 -0
- package/dist/internal/node/index.d.ts.map +1 -1
- package/dist/internal/node/index.js +1 -0
- package/dist/internal/node/index.js.map +1 -1
- package/dist/internal/node/loader.d.ts.map +1 -1
- package/dist/internal/node/loader.js +4 -0
- package/dist/internal/node/loader.js.map +1 -1
- package/dist/internal/node/mcp.d.ts +16 -0
- package/dist/internal/node/mcp.d.ts.map +1 -0
- package/dist/internal/node/mcp.js +243 -0
- package/dist/internal/node/mcp.js.map +1 -0
- package/dist/internal/node/runner.d.ts +64 -49
- package/dist/internal/node/runner.d.ts.map +1 -1
- package/dist/internal/node/runner.js +648 -138
- package/dist/internal/node/runner.js.map +1 -1
- package/dist/internal/node/sources.d.ts +3 -0
- package/dist/internal/node/sources.d.ts.map +1 -1
- package/dist/internal/node/sources.js +24 -7
- package/dist/internal/node/sources.js.map +1 -1
- package/dist/internal/node/store.d.ts +86 -0
- package/dist/internal/node/store.d.ts.map +1 -1
- package/dist/internal/node/store.js +322 -24
- package/dist/internal/node/store.js.map +1 -1
- package/package.json +7 -5
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
import { readFile, readdir } from "node:fs/promises";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { createInterface } from "node:readline";
|
|
4
|
+
import { buildGraph, tasksForJob } from "../core/index.js";
|
|
5
|
+
import { runJob } from "./runner.js";
|
|
6
|
+
import { readPipelineMetadata } from "./sources.js";
|
|
7
|
+
import { computeTaskInputManifest, diffInputManifests, readCacheInputManifest, readContextPacks, readTaskBaseline } from "./store.js";
|
|
8
|
+
/**
|
|
9
|
+
* ADR-0002: a hand-rolled MCP server over stdio. The protocol surface this
|
|
10
|
+
* server needs — initialize, ping, tools/list, tools/call as line-delimited
|
|
11
|
+
* JSON-RPC 2.0 — is small and pinned, which is what keeps the zero-runtime-
|
|
12
|
+
* dependency promise intact. Every tool delegates to the same internals the
|
|
13
|
+
* CLI uses, so the MCP surface cannot drift from `--format json` output.
|
|
14
|
+
*/
|
|
15
|
+
const MCP_PROTOCOL_VERSION = "2025-06-18";
|
|
16
|
+
const TOOLS = [
|
|
17
|
+
{
|
|
18
|
+
name: "list_tasks",
|
|
19
|
+
description: "List the pipeline's tasks and jobs: ids, descriptions, dependencies, inputs, outputs, cache settings, and job targets. Reads metadata only; executes nothing.",
|
|
20
|
+
inputSchema: { type: "object", properties: {}, additionalProperties: false },
|
|
21
|
+
readOnly: true
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
name: "graph",
|
|
25
|
+
description: "The dependency graph and deterministic execution order, for the whole pipeline or expanded from one job's targets.",
|
|
26
|
+
inputSchema: { type: "object", properties: { job: { type: "string", description: "Optional job id to expand" } }, additionalProperties: false },
|
|
27
|
+
readOnly: true
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: "explain_task",
|
|
31
|
+
description: "The full normalized definition of one task.",
|
|
32
|
+
inputSchema: { type: "object", properties: { task: { type: "string" } }, required: ["task"], additionalProperties: false },
|
|
33
|
+
readOnly: true
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
name: "metadata",
|
|
37
|
+
description: "Full pipeline metadata as JSON. Does not clone sources, run prepare, execute tasks, or evaluate deferred shell callbacks.",
|
|
38
|
+
inputSchema: { type: "object", properties: { includeSources: { type: "boolean" } }, additionalProperties: false },
|
|
39
|
+
readOnly: true
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: "list_runs",
|
|
43
|
+
description: "Recent run records under .async/runs: id, job, status, timings.",
|
|
44
|
+
inputSchema: { type: "object", properties: { limit: { type: "number", description: "Max records, newest first (default 20)" } }, additionalProperties: false },
|
|
45
|
+
readOnly: true
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
name: "read_run",
|
|
49
|
+
description: "One run's execution record plus any failure context packs (error, redacted log tail, input diff vs last passing state, reproduction command).",
|
|
50
|
+
inputSchema: { type: "object", properties: { runId: { type: "string" } }, required: ["runId"], additionalProperties: false },
|
|
51
|
+
readOnly: true
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
name: "diff_inputs",
|
|
55
|
+
description: "Which of a task's declared input files changed (content digests) since the task last passed. Reads files; executes nothing.",
|
|
56
|
+
inputSchema: { type: "object", properties: { task: { type: "string" } }, required: ["task"], additionalProperties: false },
|
|
57
|
+
readOnly: true
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
name: "run_job",
|
|
61
|
+
description: "Run a job through the scheduler: same run lock, cache, records, and evidence as the CLI. Only available when the server was started with --allow-run.",
|
|
62
|
+
inputSchema: {
|
|
63
|
+
type: "object",
|
|
64
|
+
properties: {
|
|
65
|
+
job: { type: "string" },
|
|
66
|
+
force: { type: "boolean", description: "Re-run tasks while still recording fresh cache entries" }
|
|
67
|
+
},
|
|
68
|
+
required: ["job"],
|
|
69
|
+
additionalProperties: false
|
|
70
|
+
},
|
|
71
|
+
readOnly: false
|
|
72
|
+
}
|
|
73
|
+
];
|
|
74
|
+
export async function runMcpServer(options) {
|
|
75
|
+
const lines = createInterface({ input: options.input, crlfDelay: Infinity });
|
|
76
|
+
for await (const line of lines) {
|
|
77
|
+
const trimmed = line.trim();
|
|
78
|
+
if (!trimmed)
|
|
79
|
+
continue;
|
|
80
|
+
let message;
|
|
81
|
+
try {
|
|
82
|
+
message = JSON.parse(trimmed);
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
options.write(JSON.stringify({ jsonrpc: "2.0", id: null, error: { code: -32700, message: "Parse error" } }));
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
const response = await handleMessage(message, options);
|
|
89
|
+
if (response !== undefined)
|
|
90
|
+
options.write(JSON.stringify(response));
|
|
91
|
+
}
|
|
92
|
+
return 0;
|
|
93
|
+
}
|
|
94
|
+
async function handleMessage(message, options) {
|
|
95
|
+
if (!message.method)
|
|
96
|
+
return undefined; // responses and malformed traffic are ignored
|
|
97
|
+
if (message.method.startsWith("notifications/"))
|
|
98
|
+
return undefined;
|
|
99
|
+
const id = message.id ?? null;
|
|
100
|
+
if (message.method === "initialize") {
|
|
101
|
+
return result(id, {
|
|
102
|
+
protocolVersion: MCP_PROTOCOL_VERSION,
|
|
103
|
+
capabilities: { tools: {} },
|
|
104
|
+
serverInfo: { name: "async-pipeline", version: options.serverVersion ?? "0.0.0" }
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
if (message.method === "ping")
|
|
108
|
+
return result(id, {});
|
|
109
|
+
if (message.method === "tools/list") {
|
|
110
|
+
const tools = TOOLS
|
|
111
|
+
.filter((tool) => tool.readOnly || options.allowRun)
|
|
112
|
+
.map(({ name, description, inputSchema }) => ({ name, description, inputSchema }));
|
|
113
|
+
return result(id, { tools });
|
|
114
|
+
}
|
|
115
|
+
if (message.method === "tools/call") {
|
|
116
|
+
const name = typeof message.params?.name === "string" ? message.params.name : "";
|
|
117
|
+
const args = (message.params?.arguments ?? {});
|
|
118
|
+
const tool = TOOLS.find((candidate) => candidate.name === name);
|
|
119
|
+
if (!tool) {
|
|
120
|
+
return error(id, -32602, `Unknown tool "${name}".`);
|
|
121
|
+
}
|
|
122
|
+
try {
|
|
123
|
+
const payload = await callTool(name, args, options);
|
|
124
|
+
return result(id, { content: [{ type: "text", text: JSON.stringify(payload, null, 2) }] });
|
|
125
|
+
}
|
|
126
|
+
catch (cause) {
|
|
127
|
+
const text = cause instanceof Error ? cause.message : String(cause);
|
|
128
|
+
return result(id, { content: [{ type: "text", text }], isError: true });
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
return error(id, -32601, `Method "${message.method}" not found.`);
|
|
132
|
+
}
|
|
133
|
+
async function callTool(name, args, options) {
|
|
134
|
+
const { pipeline, store } = options;
|
|
135
|
+
if (name === "list_tasks") {
|
|
136
|
+
return {
|
|
137
|
+
pipeline: pipeline.name,
|
|
138
|
+
tasks: Object.values(pipeline.tasks).map((task) => ({
|
|
139
|
+
id: task.id,
|
|
140
|
+
description: task.description,
|
|
141
|
+
dependsOn: task.dependsOn,
|
|
142
|
+
inputs: task.inputs,
|
|
143
|
+
outputs: task.outputs,
|
|
144
|
+
cache: task.cache.enabled
|
|
145
|
+
})),
|
|
146
|
+
jobs: Object.values(pipeline.jobs).map((job) => ({ id: job.id, target: job.target, trigger: job.trigger }))
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
if (name === "graph") {
|
|
150
|
+
const jobId = typeof args.job === "string" ? args.job : undefined;
|
|
151
|
+
const graph = jobId ? tasksForJob(pipeline, jobId) : buildGraph(pipeline);
|
|
152
|
+
return graph;
|
|
153
|
+
}
|
|
154
|
+
if (name === "explain_task") {
|
|
155
|
+
const task = pipeline.tasks[requireString(args, "task")];
|
|
156
|
+
if (!task)
|
|
157
|
+
throw new Error(`Unknown task "${String(args.task)}".`);
|
|
158
|
+
return JSON.parse(JSON.stringify(task, (_key, value) => (typeof value === "function" ? "[function]" : value)));
|
|
159
|
+
}
|
|
160
|
+
if (name === "metadata") {
|
|
161
|
+
return readPipelineMetadata(options.configPath, {
|
|
162
|
+
cwd: options.cwd,
|
|
163
|
+
includeSources: args.includeSources === true,
|
|
164
|
+
store
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
if (name === "list_runs") {
|
|
168
|
+
const limit = typeof args.limit === "number" && args.limit > 0 ? Math.floor(args.limit) : 20;
|
|
169
|
+
let entries;
|
|
170
|
+
try {
|
|
171
|
+
entries = (await readdir(store.runsDir)).sort().reverse();
|
|
172
|
+
}
|
|
173
|
+
catch {
|
|
174
|
+
return { runs: [] };
|
|
175
|
+
}
|
|
176
|
+
const runs = [];
|
|
177
|
+
for (const entry of entries.slice(0, limit)) {
|
|
178
|
+
try {
|
|
179
|
+
const record = JSON.parse(await readFile(join(store.runsDir, entry, "execution.json"), "utf8"));
|
|
180
|
+
runs.push({ id: record.id, jobId: record.jobId, status: record.status, startedAt: record.startedAt, finishedAt: record.finishedAt });
|
|
181
|
+
}
|
|
182
|
+
catch {
|
|
183
|
+
// Partial or foreign directories under runs/ are skipped, not fatal.
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
return { runs };
|
|
187
|
+
}
|
|
188
|
+
if (name === "read_run") {
|
|
189
|
+
const runId = requireString(args, "runId");
|
|
190
|
+
const record = JSON.parse(await readFile(join(store.runsDir, runId, "execution.json"), "utf8"));
|
|
191
|
+
const contextPacks = await readContextPacks(store, runId);
|
|
192
|
+
return { record, contextPacks };
|
|
193
|
+
}
|
|
194
|
+
if (name === "diff_inputs") {
|
|
195
|
+
const taskId = requireString(args, "task");
|
|
196
|
+
const task = pipeline.tasks[taskId];
|
|
197
|
+
if (!task)
|
|
198
|
+
throw new Error(`Unknown task "${taskId}".`);
|
|
199
|
+
const baseline = await readTaskBaseline(store, taskId);
|
|
200
|
+
const baselineManifest = baseline ? await readCacheInputManifest(store, baseline.cacheKey) : null;
|
|
201
|
+
const current = await computeTaskInputManifest(pipeline, task, options.cwd);
|
|
202
|
+
if (!baseline || !baselineManifest) {
|
|
203
|
+
return { task: taskId, baselineMissing: true, currentFiles: Object.keys(current.files).length };
|
|
204
|
+
}
|
|
205
|
+
return {
|
|
206
|
+
task: taskId,
|
|
207
|
+
baselineCacheKey: baseline.cacheKey,
|
|
208
|
+
baselineRecordedAt: baseline.recordedAt,
|
|
209
|
+
...diffInputManifests(baselineManifest, current)
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
if (name === "run_job") {
|
|
213
|
+
if (!options.allowRun) {
|
|
214
|
+
throw new Error("run_job is disabled. Start the server with `async-pipeline mcp --allow-run` to expose it.");
|
|
215
|
+
}
|
|
216
|
+
const jobId = requireString(args, "job");
|
|
217
|
+
return runJob(pipeline, {
|
|
218
|
+
id: jobId,
|
|
219
|
+
cwd: options.cwd,
|
|
220
|
+
env: options.env,
|
|
221
|
+
mode: options.env.CI ? "ci" : "manual",
|
|
222
|
+
force: args.force === true,
|
|
223
|
+
// stdout is the JSON-RPC channel: task output must never echo into it.
|
|
224
|
+
// It still lands in task logs and the execution record as always.
|
|
225
|
+
echo: false
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
throw new Error(`Unknown tool "${name}".`);
|
|
229
|
+
}
|
|
230
|
+
function requireString(args, key) {
|
|
231
|
+
const value = args[key];
|
|
232
|
+
if (typeof value !== "string" || value.length === 0) {
|
|
233
|
+
throw new Error(`Tool argument "${key}" must be a non-empty string.`);
|
|
234
|
+
}
|
|
235
|
+
return value;
|
|
236
|
+
}
|
|
237
|
+
function result(id, payload) {
|
|
238
|
+
return { jsonrpc: "2.0", id, result: payload };
|
|
239
|
+
}
|
|
240
|
+
function error(id, code, message) {
|
|
241
|
+
return { jsonrpc: "2.0", id, error: { code, message } };
|
|
242
|
+
}
|
|
243
|
+
//# sourceMappingURL=mcp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,26 @@
|
|
|
1
|
-
import type { CommandPolicy, ExecutionRecord, NormalizedPipeline, NormalizedTask } from "../core/index.js";
|
|
1
|
+
import type { CommandPolicy, ExecutionRecord, NormalizedPipeline, NormalizedTask, SandboxDefinition, SandboxId } from "../core/index.js";
|
|
2
2
|
export interface CommandResult {
|
|
3
3
|
code: number;
|
|
4
4
|
stdout: string;
|
|
5
5
|
stderr: string;
|
|
6
6
|
timedOut?: boolean;
|
|
7
7
|
}
|
|
8
|
+
export interface RunShellOptions {
|
|
9
|
+
cwd: string;
|
|
10
|
+
env: NodeJS.ProcessEnv;
|
|
11
|
+
task: NormalizedTask;
|
|
12
|
+
timeoutMs?: number;
|
|
13
|
+
echo?: boolean;
|
|
14
|
+
redactValues?: readonly string[];
|
|
15
|
+
/**
|
|
16
|
+
* Env keys safe to forward into isolated executors (docker). When omitted,
|
|
17
|
+
* isolating executors forward nothing beyond their own defaults.
|
|
18
|
+
*/
|
|
19
|
+
forwardEnvKeys?: readonly string[];
|
|
20
|
+
}
|
|
8
21
|
export interface CommandExecutor {
|
|
9
22
|
name: string;
|
|
10
|
-
runShell(command: string, options:
|
|
11
|
-
cwd: string;
|
|
12
|
-
env: NodeJS.ProcessEnv;
|
|
13
|
-
task: NormalizedTask;
|
|
14
|
-
timeoutMs?: number;
|
|
15
|
-
}): Promise<CommandResult>;
|
|
23
|
+
runShell(command: string, options: RunShellOptions): Promise<CommandResult>;
|
|
16
24
|
checkTool?(tool: string): Promise<boolean>;
|
|
17
25
|
}
|
|
18
26
|
export type CommandPolicyStatus = "allowed" | "mocked" | "denied" | "approval-required";
|
|
@@ -33,33 +41,23 @@ export interface CommandRecord {
|
|
|
33
41
|
finishedAt: string;
|
|
34
42
|
durationMs: number;
|
|
35
43
|
}
|
|
36
|
-
export interface
|
|
44
|
+
export interface PipelineCommands {
|
|
37
45
|
run(invocation: CommandInvocation, next: () => Promise<CommandResult>): Promise<CommandResult>;
|
|
38
46
|
records(): CommandRecord[];
|
|
39
47
|
}
|
|
40
48
|
export interface PipelineFileSystem {
|
|
41
49
|
kind: "host";
|
|
42
50
|
}
|
|
43
|
-
export interface
|
|
51
|
+
export interface ExecutionContext {
|
|
44
52
|
cwd: string;
|
|
45
53
|
env: NodeJS.ProcessEnv;
|
|
46
54
|
fs: PipelineFileSystem;
|
|
47
55
|
executor: CommandExecutor;
|
|
48
|
-
commands?:
|
|
49
|
-
}
|
|
50
|
-
export interface HostWorkspaceOptions {
|
|
51
|
-
cwd?: string;
|
|
52
|
-
env?: NodeJS.ProcessEnv;
|
|
53
|
-
executor?: CommandExecutor;
|
|
54
|
-
commands?: WorkspaceCommands;
|
|
56
|
+
commands?: PipelineCommands;
|
|
55
57
|
}
|
|
56
58
|
export declare class HostCommandExecutor implements CommandExecutor {
|
|
57
59
|
name: string;
|
|
58
|
-
runShell(command: string, options:
|
|
59
|
-
cwd: string;
|
|
60
|
-
env: NodeJS.ProcessEnv;
|
|
61
|
-
timeoutMs?: number;
|
|
62
|
-
}): Promise<CommandResult>;
|
|
60
|
+
runShell(command: string, options: RunShellOptions): Promise<CommandResult>;
|
|
63
61
|
checkTool(tool: string): Promise<boolean>;
|
|
64
62
|
}
|
|
65
63
|
export interface DockerVolume {
|
|
@@ -67,14 +65,6 @@ export interface DockerVolume {
|
|
|
67
65
|
target: string;
|
|
68
66
|
readonly?: boolean;
|
|
69
67
|
}
|
|
70
|
-
export interface DockerWorkspaceOptions {
|
|
71
|
-
image: string;
|
|
72
|
-
cwd?: string;
|
|
73
|
-
env?: NodeJS.ProcessEnv;
|
|
74
|
-
workdir?: string;
|
|
75
|
-
volumes?: DockerVolume[];
|
|
76
|
-
commands?: WorkspaceCommands;
|
|
77
|
-
}
|
|
78
68
|
export declare class DockerCommandExecutor implements CommandExecutor {
|
|
79
69
|
private readonly options;
|
|
80
70
|
name: string;
|
|
@@ -84,11 +74,7 @@ export declare class DockerCommandExecutor implements CommandExecutor {
|
|
|
84
74
|
workdir: string;
|
|
85
75
|
volumes: DockerVolume[];
|
|
86
76
|
});
|
|
87
|
-
runShell(command: string, options:
|
|
88
|
-
cwd: string;
|
|
89
|
-
env: NodeJS.ProcessEnv;
|
|
90
|
-
timeoutMs?: number;
|
|
91
|
-
}): Promise<CommandResult>;
|
|
77
|
+
runShell(command: string, options: RunShellOptions): Promise<CommandResult>;
|
|
92
78
|
checkTool(tool: string): Promise<boolean>;
|
|
93
79
|
private dockerCommand;
|
|
94
80
|
private containerCwd;
|
|
@@ -97,30 +83,59 @@ export declare class LimaCommandExecutor implements CommandExecutor {
|
|
|
97
83
|
private readonly vm;
|
|
98
84
|
name: string;
|
|
99
85
|
constructor(vm?: string);
|
|
100
|
-
runShell(command: string, options:
|
|
101
|
-
cwd: string;
|
|
102
|
-
env: NodeJS.ProcessEnv;
|
|
103
|
-
task: NormalizedTask;
|
|
104
|
-
timeoutMs?: number;
|
|
105
|
-
}): Promise<CommandResult>;
|
|
86
|
+
runShell(command: string, options: RunShellOptions): Promise<CommandResult>;
|
|
106
87
|
checkTool(tool: string): Promise<boolean>;
|
|
107
88
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
89
|
+
/**
|
|
90
|
+
* Resolve flat run options into the execution context a run uses: host by
|
|
91
|
+
* default, or the selected sandbox (by id from `pipeline.sandboxes`, or an
|
|
92
|
+
* inline definition).
|
|
93
|
+
*/
|
|
94
|
+
export declare function resolveExecutionContext(pipeline: NormalizedPipeline, target?: RunTarget): ExecutionContext;
|
|
95
|
+
export declare function commandProxy(policy?: CommandPolicy): PipelineCommands;
|
|
96
|
+
export interface RunTarget {
|
|
112
97
|
cwd?: string;
|
|
113
98
|
env?: NodeJS.ProcessEnv;
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
99
|
+
executor?: CommandExecutor;
|
|
100
|
+
commands?: PipelineCommands;
|
|
101
|
+
sandbox?: SandboxId | SandboxDefinition;
|
|
102
|
+
}
|
|
103
|
+
export interface RunOptions extends RunTarget {
|
|
118
104
|
id: string;
|
|
119
105
|
mode?: "manual" | "ci";
|
|
120
106
|
concurrency?: number;
|
|
121
|
-
|
|
107
|
+
force?: boolean;
|
|
108
|
+
echo?: boolean;
|
|
122
109
|
}
|
|
123
110
|
export type RunSingleTaskOptions = Omit<RunOptions, "id">;
|
|
124
111
|
export declare function runJob(pipeline: NormalizedPipeline, options: RunOptions): Promise<ExecutionRecord>;
|
|
112
|
+
export interface TaskPlanEntry {
|
|
113
|
+
id: string;
|
|
114
|
+
cacheEnabled: boolean;
|
|
115
|
+
predicted: "run" | "cached" | "unknown";
|
|
116
|
+
cacheKey?: string;
|
|
117
|
+
reason?: string;
|
|
118
|
+
}
|
|
119
|
+
export interface JobPlan {
|
|
120
|
+
jobId: string;
|
|
121
|
+
executionOrder: string[];
|
|
122
|
+
entries: TaskPlanEntry[];
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Computes the execution order and predicted cache behavior for a job without running it.
|
|
126
|
+
* Predictions reuse the real cache-key chain but do not validate cached output files.
|
|
127
|
+
*/
|
|
128
|
+
export declare function planJob(pipeline: NormalizedPipeline, options: {
|
|
129
|
+
id: string;
|
|
130
|
+
} & RunTarget): Promise<JobPlan>;
|
|
125
131
|
export declare function runSingleTask(pipeline: NormalizedPipeline, taskId: string, options?: RunSingleTaskOptions): Promise<ExecutionRecord>;
|
|
132
|
+
/**
|
|
133
|
+
* Abort the run: terminate every live task process group (SIGTERM-style
|
|
134
|
+
* signal first, SIGKILL after a grace period), refuse to start new task
|
|
135
|
+
* processes, and hard-exit if the run has not finalized its execution
|
|
136
|
+
* record by the deadline. Idempotent; the first caller wins.
|
|
137
|
+
*/
|
|
138
|
+
export declare function beginShutdown(signal: NodeJS.Signals, exitCode: number): void;
|
|
139
|
+
/** Exit code requested by an in-progress shutdown, if any. */
|
|
140
|
+
export declare function shutdownExitCode(): number | null;
|
|
126
141
|
//# sourceMappingURL=runner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
|