@tagma/sdk 0.7.3 → 0.7.5
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 +85 -57
- package/dist/approval.d.ts +2 -12
- package/dist/approval.d.ts.map +1 -1
- package/dist/approval.js +1 -90
- package/dist/approval.js.map +1 -1
- package/dist/bootstrap.d.ts +1 -1
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/completions/file-exists.js +1 -1
- package/dist/completions/file-exists.js.map +1 -1
- package/dist/completions/output-check.d.ts.map +1 -1
- package/dist/completions/output-check.js +17 -4
- package/dist/completions/output-check.js.map +1 -1
- package/dist/config.d.ts +4 -4
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +2 -2
- package/dist/config.js.map +1 -1
- package/dist/dataflow.d.ts +3 -0
- package/dist/dataflow.d.ts.map +1 -0
- package/dist/dataflow.js +2 -0
- package/dist/dataflow.js.map +1 -0
- package/dist/drivers/opencode.d.ts.map +1 -1
- package/dist/drivers/opencode.js +23 -71
- package/dist/drivers/opencode.js.map +1 -1
- package/dist/engine.d.ts +5 -56
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +7 -297
- package/dist/engine.js.map +1 -1
- package/dist/index.d.ts +4 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -4
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts +2 -60
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +1 -153
- package/dist/logger.js.map +1 -1
- package/dist/middlewares/static-context.d.ts.map +1 -1
- package/dist/middlewares/static-context.js +1 -2
- package/dist/middlewares/static-context.js.map +1 -1
- package/dist/pipeline-runner.d.ts.map +1 -1
- package/dist/pipeline-runner.js +2 -2
- package/dist/pipeline-runner.js.map +1 -1
- package/dist/plugins.d.ts +2 -2
- package/dist/plugins.d.ts.map +1 -1
- package/dist/plugins.js +1 -1
- package/dist/plugins.js.map +1 -1
- package/dist/runner.d.ts +1 -35
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +1 -610
- package/dist/runner.js.map +1 -1
- package/dist/runtime/adapters/stdin-approval.d.ts +2 -0
- package/dist/runtime/adapters/stdin-approval.d.ts.map +1 -0
- package/dist/runtime/adapters/stdin-approval.js +2 -0
- package/dist/runtime/adapters/stdin-approval.js.map +1 -0
- package/dist/runtime/adapters/websocket-approval.d.ts +2 -0
- package/dist/runtime/adapters/websocket-approval.d.ts.map +1 -0
- package/dist/runtime/adapters/websocket-approval.js +2 -0
- package/dist/runtime/adapters/websocket-approval.js.map +1 -0
- package/dist/runtime/bun-process-runner.d.ts +2 -0
- package/dist/runtime/bun-process-runner.d.ts.map +1 -0
- package/dist/runtime/bun-process-runner.js +2 -0
- package/dist/runtime/bun-process-runner.js.map +1 -0
- package/dist/runtime.d.ts +2 -8
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +1 -7
- package/dist/runtime.js.map +1 -1
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +3 -4
- package/dist/schema.js.map +1 -1
- package/dist/tagma.d.ts +3 -4
- package/dist/tagma.d.ts.map +1 -1
- package/dist/tagma.js +2 -3
- package/dist/tagma.js.map +1 -1
- package/dist/triggers/file.d.ts.map +1 -1
- package/dist/triggers/file.js +74 -108
- package/dist/triggers/file.js.map +1 -1
- package/dist/triggers/manual.d.ts.map +1 -1
- package/dist/triggers/manual.js +1 -2
- package/dist/triggers/manual.js.map +1 -1
- package/dist/types.d.ts +1 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -12
- package/dist/types.js.map +1 -1
- package/dist/utils-api.d.ts +1 -1
- package/dist/utils-api.d.ts.map +1 -1
- package/dist/utils-api.js +1 -1
- package/dist/utils-api.js.map +1 -1
- package/dist/validate-raw.d.ts.map +1 -1
- package/dist/validate-raw.js +5 -12
- package/dist/validate-raw.js.map +1 -1
- package/package.json +20 -22
- package/dist/adapters/stdin-approval.d.ts +0 -6
- package/dist/adapters/stdin-approval.d.ts.map +0 -1
- package/dist/adapters/stdin-approval.js +0 -90
- package/dist/adapters/stdin-approval.js.map +0 -1
- package/dist/adapters/websocket-approval.d.ts +0 -28
- package/dist/adapters/websocket-approval.d.ts.map +0 -1
- package/dist/adapters/websocket-approval.js +0 -147
- package/dist/adapters/websocket-approval.js.map +0 -1
- package/dist/core/dataflow.d.ts +0 -23
- package/dist/core/dataflow.d.ts.map +0 -1
- package/dist/core/dataflow.js +0 -99
- package/dist/core/dataflow.js.map +0 -1
- package/dist/core/log-prune.d.ts +0 -16
- package/dist/core/log-prune.d.ts.map +0 -1
- package/dist/core/log-prune.js +0 -34
- package/dist/core/log-prune.js.map +0 -1
- package/dist/core/preflight.d.ts +0 -13
- package/dist/core/preflight.d.ts.map +0 -1
- package/dist/core/preflight.js +0 -61
- package/dist/core/preflight.js.map +0 -1
- package/dist/core/run-context.d.ts +0 -55
- package/dist/core/run-context.d.ts.map +0 -1
- package/dist/core/run-context.js +0 -158
- package/dist/core/run-context.js.map +0 -1
- package/dist/core/run-state.d.ts +0 -25
- package/dist/core/run-state.d.ts.map +0 -1
- package/dist/core/run-state.js +0 -93
- package/dist/core/run-state.js.map +0 -1
- package/dist/core/scheduler.d.ts +0 -13
- package/dist/core/scheduler.d.ts.map +0 -1
- package/dist/core/scheduler.js +0 -35
- package/dist/core/scheduler.js.map +0 -1
- package/dist/core/task-executor.d.ts +0 -13
- package/dist/core/task-executor.d.ts.map +0 -1
- package/dist/core/task-executor.js +0 -601
- package/dist/core/task-executor.js.map +0 -1
- package/dist/core/trigger-errors.d.ts +0 -9
- package/dist/core/trigger-errors.d.ts.map +0 -1
- package/dist/core/trigger-errors.js +0 -15
- package/dist/core/trigger-errors.js.map +0 -1
- package/dist/dag.d.ts +0 -45
- package/dist/dag.d.ts.map +0 -1
- package/dist/dag.js +0 -177
- package/dist/dag.js.map +0 -1
- package/dist/hooks.d.ts +0 -73
- package/dist/hooks.d.ts.map +0 -1
- package/dist/hooks.js +0 -106
- package/dist/hooks.js.map +0 -1
- package/dist/pipeline-definition.d.ts +0 -3
- package/dist/pipeline-definition.d.ts.map +0 -1
- package/dist/pipeline-definition.js +0 -4
- package/dist/pipeline-definition.js.map +0 -1
- package/dist/ports.d.ts +0 -196
- package/dist/ports.d.ts.map +0 -1
- package/dist/ports.js +0 -688
- package/dist/ports.js.map +0 -1
- package/dist/prompt-doc.d.ts +0 -70
- package/dist/prompt-doc.d.ts.map +0 -1
- package/dist/prompt-doc.js +0 -154
- package/dist/prompt-doc.js.map +0 -1
- package/dist/registry.d.ts +0 -67
- package/dist/registry.d.ts.map +0 -1
- package/dist/registry.js +0 -293
- package/dist/registry.js.map +0 -1
- package/dist/task-ref.d.ts +0 -55
- package/dist/task-ref.d.ts.map +0 -1
- package/dist/task-ref.js +0 -103
- package/dist/task-ref.js.map +0 -1
- package/dist/utils.d.ts +0 -13
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js +0 -177
- package/dist/utils.js.map +0 -1
- package/src/adapters/stdin-approval.ts +0 -106
- package/src/adapters/websocket-approval.ts +0 -224
- package/src/approval.ts +0 -131
- package/src/bootstrap.ts +0 -55
- package/src/completions/exit-code.ts +0 -34
- package/src/completions/file-exists.ts +0 -66
- package/src/completions/output-check.test.ts +0 -50
- package/src/completions/output-check.ts +0 -92
- package/src/config-ops.test.ts +0 -70
- package/src/config-ops.ts +0 -328
- package/src/config.ts +0 -26
- package/src/core/dataflow.test.ts +0 -166
- package/src/core/dataflow.ts +0 -161
- package/src/core/log-prune.test.ts +0 -58
- package/src/core/log-prune.ts +0 -43
- package/src/core/preflight.test.ts +0 -49
- package/src/core/preflight.ts +0 -89
- package/src/core/run-context.test.ts +0 -256
- package/src/core/run-context.ts +0 -211
- package/src/core/run-state.test.ts +0 -98
- package/src/core/run-state.ts +0 -122
- package/src/core/scheduler.test.ts +0 -83
- package/src/core/scheduler.ts +0 -42
- package/src/core/task-executor.ts +0 -743
- package/src/core/trigger-errors.ts +0 -15
- package/src/dag.test.ts +0 -56
- package/src/dag.ts +0 -245
- package/src/drivers/opencode.ts +0 -410
- package/src/engine-ports-mixed.test.ts +0 -156
- package/src/engine-ports.test.ts +0 -166
- package/src/engine-task-type.test.ts +0 -56
- package/src/engine.ts +0 -458
- package/src/hooks.ts +0 -193
- package/src/index.ts +0 -33
- package/src/logger.ts +0 -182
- package/src/middlewares/static-context.ts +0 -49
- package/src/pipeline-definition.ts +0 -5
- package/src/pipeline-runner.test.ts +0 -91
- package/src/pipeline-runner.ts +0 -194
- package/src/plugin-registry.test.ts +0 -382
- package/src/plugins.ts +0 -21
- package/src/ports.test.ts +0 -678
- package/src/ports.ts +0 -925
- package/src/prompt-doc.test.ts +0 -174
- package/src/prompt-doc.ts +0 -169
- package/src/registry.ts +0 -353
- package/src/runner.test.ts +0 -142
- package/src/runner.ts +0 -666
- package/src/runtime.ts +0 -20
- package/src/schema-ports.test.ts +0 -172
- package/src/schema.test.ts +0 -213
- package/src/schema.ts +0 -379
- package/src/tagma.test.ts +0 -155
- package/src/tagma.ts +0 -62
- package/src/task-ref.test.ts +0 -401
- package/src/task-ref.ts +0 -121
- package/src/triggers/file.ts +0 -164
- package/src/triggers/manual.ts +0 -86
- package/src/types.ts +0 -18
- package/src/utils-api.ts +0 -8
- package/src/utils.test.ts +0 -28
- package/src/utils.ts +0 -203
- package/src/validate-raw-plugin-types.test.ts +0 -60
- package/src/validate-raw-ports.test.ts +0 -136
- package/src/validate-raw.ts +0 -852
- package/src/yaml-compiler.test.ts +0 -108
- package/src/yaml-compiler.ts +0 -110
- package/src/yaml.ts +0 -11
package/dist/drivers/opencode.js
CHANGED
|
@@ -8,9 +8,9 @@ const DEFAULT_MODEL = 'opencode/big-pickle';
|
|
|
8
8
|
// tagma uses a provider-neutral reasoning_effort vocabulary (low|medium|high)
|
|
9
9
|
// but opencode's `--variant` is provider-specific (e.g. high|max|minimal).
|
|
10
10
|
// Map the tagma values to the closest opencode variant:
|
|
11
|
-
// low
|
|
12
|
-
// medium
|
|
13
|
-
// high
|
|
11
|
+
// low 闂?minimal (least thinking)
|
|
12
|
+
// medium 闂?<no flag, provider default>
|
|
13
|
+
// high 闂?high (most thinking)
|
|
14
14
|
// Unknown values pass through unchanged so users who target a specific
|
|
15
15
|
// opencode variant (e.g. "max") still work.
|
|
16
16
|
const EFFORT_TO_VARIANT = {
|
|
@@ -18,10 +18,8 @@ const EFFORT_TO_VARIANT = {
|
|
|
18
18
|
medium: null,
|
|
19
19
|
high: 'high',
|
|
20
20
|
};
|
|
21
|
-
// Memoize
|
|
22
|
-
//
|
|
23
|
-
// the bun-install probe for each task of a failed run would just be slow and
|
|
24
|
-
// produce confusing interleaved stderr.
|
|
21
|
+
// Memoize both success and failure so every task in a failed run reports
|
|
22
|
+
// the same setup error without re-probing.
|
|
25
23
|
let opencodeReady;
|
|
26
24
|
let opencodeReadyError;
|
|
27
25
|
let cachedDefaultModel;
|
|
@@ -39,11 +37,9 @@ async function runCapture(args) {
|
|
|
39
37
|
return { code: -1, stdout: '', stderr: '' };
|
|
40
38
|
}
|
|
41
39
|
}
|
|
42
|
-
// Shared tail for every failure message
|
|
43
|
-
//
|
|
44
|
-
|
|
45
|
-
// see the manual bun/npm hint.
|
|
46
|
-
const SETUP_HINT = 'If you are using the Tagma desktop app, open Editor Settings → OpenCode CLI to install or update the bundled binary. ' +
|
|
40
|
+
// Shared tail for every failure message. Desktop users get the in-app setup
|
|
41
|
+
// path first; direct SDK users still see the manual bun/npm install hint.
|
|
42
|
+
const SETUP_HINT = 'If you are using the Tagma desktop app, open Editor Settings -> OpenCode CLI to install or update the bundled binary. ' +
|
|
47
43
|
'Otherwise install it manually: `bun install -g opencode-ai` or `npm install -g opencode-ai`.';
|
|
48
44
|
async function ensureOpencodeInstalled() {
|
|
49
45
|
if (opencodeReady === true)
|
|
@@ -51,59 +47,16 @@ async function ensureOpencodeInstalled() {
|
|
|
51
47
|
if (opencodeReady === false && opencodeReadyError) {
|
|
52
48
|
throw new Error(opencodeReadyError);
|
|
53
49
|
}
|
|
54
|
-
// Probe existing install first
|
|
50
|
+
// Probe existing install first 闂?this is the hot path for desktop users
|
|
55
51
|
// (bundled binary in PATH) and for anyone who already has opencode.
|
|
56
52
|
const probe = await runCapture(['opencode', '--version']);
|
|
57
53
|
if (probe.code === 0) {
|
|
58
54
|
opencodeReady = true;
|
|
59
55
|
return;
|
|
60
56
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
// would just ENOENT inside runCapture's catch and look identical to a
|
|
65
|
-
// failed install.
|
|
66
|
-
const bunProbe = await runCapture(['bun', '--version']);
|
|
67
|
-
if (bunProbe.code !== 0) {
|
|
68
|
-
opencodeReady = false;
|
|
69
|
-
opencodeReadyError = `OpenCode CLI is not available and \`bun\` is not installed. ${SETUP_HINT}`;
|
|
70
|
-
throw new Error(opencodeReadyError);
|
|
71
|
-
}
|
|
72
|
-
console.error('[driver:opencode] opencode CLI not found — installing via `bun install -g opencode-ai`... (this may take up to a minute)');
|
|
73
|
-
// Use inherit here so the user sees bun's own progress during the one-time
|
|
74
|
-
// install; runCapture would swallow it.
|
|
75
|
-
const install = Bun.spawn(['bun', 'install', '-g', 'opencode-ai'], {
|
|
76
|
-
stdout: 'inherit',
|
|
77
|
-
stderr: 'inherit',
|
|
78
|
-
});
|
|
79
|
-
const installCode = await install.exited;
|
|
80
|
-
if (installCode !== 0) {
|
|
81
|
-
opencodeReady = false;
|
|
82
|
-
opencodeReadyError = `\`bun install -g opencode-ai\` failed (exit code ${installCode}). ${SETUP_HINT}`;
|
|
83
|
-
throw new Error(opencodeReadyError);
|
|
84
|
-
}
|
|
85
|
-
// Bun installs globals under `~/.bun/bin` (or `%USERPROFILE%\.bun\bin`),
|
|
86
|
-
// which isn't on this process's cached PATH unless the user already has
|
|
87
|
-
// bun set up. Ask bun for the directory and prepend it so bare `opencode`
|
|
88
|
-
// resolves in this process without requiring a shell reload.
|
|
89
|
-
const bin = await runCapture(['bun', 'pm', 'bin', '-g']);
|
|
90
|
-
if (bin.code === 0) {
|
|
91
|
-
const dir = bin.stdout.trim();
|
|
92
|
-
const sep = process.platform === 'win32' ? ';' : ':';
|
|
93
|
-
const current = process.env.PATH ?? '';
|
|
94
|
-
if (dir && !current.split(sep).includes(dir)) {
|
|
95
|
-
process.env.PATH = `${dir}${sep}${current}`;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
const verify = await runCapture(['opencode', '--version']);
|
|
99
|
-
if (verify.code !== 0) {
|
|
100
|
-
opencodeReady = false;
|
|
101
|
-
opencodeReadyError =
|
|
102
|
-
'`opencode` is not resolvable after `bun install -g opencode-ai` completed. ' +
|
|
103
|
-
"Bun's global bin directory is probably not on PATH — add it manually or restart the app.";
|
|
104
|
-
throw new Error(opencodeReadyError);
|
|
105
|
-
}
|
|
106
|
-
opencodeReady = true;
|
|
57
|
+
opencodeReady = false;
|
|
58
|
+
opencodeReadyError = `OpenCode CLI is not available on PATH. ${SETUP_HINT}`;
|
|
59
|
+
throw new Error(opencodeReadyError);
|
|
107
60
|
}
|
|
108
61
|
// `opencode models --verbose` emits "<provider>/<id>\n{...json...}\n" pairs.
|
|
109
62
|
// Walk balanced braces rather than split on newlines so we survive any
|
|
@@ -149,7 +102,7 @@ function pickFreeModel(models) {
|
|
|
149
102
|
return false;
|
|
150
103
|
return true;
|
|
151
104
|
});
|
|
152
|
-
// Prefer models explicitly labelled "-free" by the provider
|
|
105
|
+
// Prefer models explicitly labelled "-free" by the provider 闂?those are
|
|
153
106
|
// a stronger stability signal than "cost happens to be 0 right now".
|
|
154
107
|
const preferred = eligible.filter((m) => m.id?.endsWith('-free'));
|
|
155
108
|
const pool = preferred.length > 0 ? preferred : eligible;
|
|
@@ -191,17 +144,16 @@ export const OpenCodeDriver = {
|
|
|
191
144
|
},
|
|
192
145
|
async buildCommand(task, track, ctx) {
|
|
193
146
|
const explicitModel = task.model ?? track.model;
|
|
194
|
-
// Always make sure the opencode CLI is usable before we spawn it
|
|
147
|
+
// Always make sure the opencode CLI is usable before we spawn it, even
|
|
195
148
|
// when the user pinned a model. ensureOpencodeInstalled throws with an
|
|
196
|
-
// actionable message when the binary is
|
|
197
|
-
// bundles it there via runtime-paths.ts) nor installable via bun.
|
|
149
|
+
// actionable message when the binary is not present on PATH.
|
|
198
150
|
if (explicitModel)
|
|
199
151
|
await ensureOpencodeInstalled();
|
|
200
152
|
// Otherwise resolveDefaultModel both ensures the CLI and picks a free
|
|
201
153
|
// model from `opencode models --verbose` (cached per-process).
|
|
202
154
|
const model = explicitModel ?? (await resolveDefaultModel());
|
|
203
|
-
// Resolve reasoning_effort
|
|
204
|
-
// resolved task
|
|
155
|
+
// Resolve reasoning_effort 闂?opencode --variant. SDK schema layer already
|
|
156
|
+
// resolved task 闂?track 闂?pipeline inheritance, so we only need to read
|
|
205
157
|
// task.reasoning_effort here.
|
|
206
158
|
const rawEffort = task.reasoning_effort ?? track.reasoning_effort;
|
|
207
159
|
const variant = rawEffort
|
|
@@ -220,7 +172,7 @@ export const OpenCodeDriver = {
|
|
|
220
172
|
if (task.continue_from) {
|
|
221
173
|
sessionId = ctx.sessionMap.get(task.continue_from) ?? null;
|
|
222
174
|
if (!sessionId) {
|
|
223
|
-
// no session
|
|
175
|
+
// no session 闂?degrade to text context passthrough
|
|
224
176
|
let prev = null;
|
|
225
177
|
if (ctx.normalizedMap.has(task.continue_from)) {
|
|
226
178
|
prev = ctx.normalizedMap.get(task.continue_from);
|
|
@@ -236,7 +188,7 @@ export const OpenCodeDriver = {
|
|
|
236
188
|
// misread by opencode's argument parser (flag-injection mitigation).
|
|
237
189
|
// Shell-level injection is already prevented by Bun.spawn's direct argv array.
|
|
238
190
|
// Windows cmd.exe argv truncation on the `.cmd` wrapper is handled by the
|
|
239
|
-
// SDK runner's shim unwrapping
|
|
191
|
+
// SDK runner's shim unwrapping 闂?see note at the top of this file.
|
|
240
192
|
const args = [
|
|
241
193
|
'opencode',
|
|
242
194
|
'run',
|
|
@@ -259,8 +211,8 @@ export const OpenCodeDriver = {
|
|
|
259
211
|
return { args, cwd: task.cwd ?? ctx.workDir };
|
|
260
212
|
},
|
|
261
213
|
parseResult(stdout) {
|
|
262
|
-
// opencode --format json emits NDJSON
|
|
263
|
-
// (step_start / text / step_finish /
|
|
214
|
+
// opencode --format json emits NDJSON 闂?one JSON object per line
|
|
215
|
+
// (step_start / text / step_finish / 闂?. The previous single
|
|
264
216
|
// `JSON.parse(stdout)` always threw on this shape and fell through to
|
|
265
217
|
// the catch, returning sessionId:null and losing session resume.
|
|
266
218
|
// Walk line-by-line, pick up the first sessionID we see, concatenate
|
|
@@ -299,11 +251,11 @@ export const OpenCodeDriver = {
|
|
|
299
251
|
// D21: stop at the first error. Continuing meant subsequent text
|
|
300
252
|
// lines got accumulated into `textParts` only to be discarded by
|
|
301
253
|
// the error-return below, and a later `{type:"error"}` would
|
|
302
|
-
// silently overwrite the original cause
|
|
254
|
+
// silently overwrite the original cause 闂?operators then debugged
|
|
303
255
|
// a downstream symptom while the root-cause line scrolled past.
|
|
304
256
|
break;
|
|
305
257
|
}
|
|
306
|
-
// Session id
|
|
258
|
+
// Session id 闂?opencode uses `sessionID` (camelCase with capital D).
|
|
307
259
|
// Keep `session_id` / `sessionId` as fallbacks for forward/backward
|
|
308
260
|
// compatibility with other shapes.
|
|
309
261
|
if (!sessionId) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../src/drivers/opencode.ts"],"names":[],"mappings":"AAUA,MAAM,aAAa,GAAG,qBAAqB,CAAC;AAE5C,6EAA6E;AAC7E,2EAA2E;AAC3E,yEAAyE;AACzE,2EAA2E;AAC3E,yEAAyE;AACzE,yDAAyD;AAEzD,8EAA8E;AAC9E,2EAA2E;AAC3E,wDAAwD;AACxD,uCAAuC;AACvC,yCAAyC;AACzC,sCAAsC;AACtC,uEAAuE;AACvE,4CAA4C;AAC5C,MAAM,iBAAiB,GAAkC;IACvD,GAAG,EAAE,SAAS;IACd,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE,MAAM;CACb,CAAC;
|
|
1
|
+
{"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../src/drivers/opencode.ts"],"names":[],"mappings":"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"}
|
package/dist/engine.d.ts
CHANGED
|
@@ -1,59 +1,8 @@
|
|
|
1
|
-
import
|
|
2
|
-
import type {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export
|
|
6
|
-
export interface EngineResult {
|
|
7
|
-
readonly success: boolean;
|
|
8
|
-
readonly runId: string;
|
|
9
|
-
readonly logPath: string;
|
|
10
|
-
readonly summary: {
|
|
11
|
-
total: number;
|
|
12
|
-
success: number;
|
|
13
|
-
failed: number;
|
|
14
|
-
skipped: number;
|
|
15
|
-
timeout: number;
|
|
16
|
-
blocked: number;
|
|
17
|
-
};
|
|
18
|
-
readonly states: ReadonlyMap<string, TaskState>;
|
|
19
|
-
}
|
|
20
|
-
export type { RunEventPayload } from './types';
|
|
21
|
-
export interface RunPipelineOptions {
|
|
22
|
-
readonly approvalGateway?: ApprovalGateway;
|
|
23
|
-
/**
|
|
24
|
-
* Maximum number of per-run log directories to retain under `<workDir>/.tagma/logs/`.
|
|
25
|
-
* Oldest directories are deleted after each run. Defaults to 20. Set to 0 to disable cleanup.
|
|
26
|
-
*/
|
|
27
|
-
readonly maxLogRuns?: number;
|
|
28
|
-
/**
|
|
29
|
-
* Caller-supplied run ID. When provided the engine uses this instead of
|
|
30
|
-
* generating its own via `generateRunId()`, keeping the editor and SDK
|
|
31
|
-
* log directories aligned on the same ID.
|
|
32
|
-
*/
|
|
33
|
-
readonly runId?: string;
|
|
34
|
-
/**
|
|
35
|
-
* External AbortSignal — aborting it cancels the pipeline immediately.
|
|
36
|
-
* Equivalent to the pipeline timeout firing, but caller-controlled.
|
|
37
|
-
*/
|
|
38
|
-
readonly signal?: AbortSignal;
|
|
39
|
-
/**
|
|
40
|
-
* Called on every pipeline/task status transition.
|
|
41
|
-
* Use for real-time UI updates (e.g. updating a visual workflow graph).
|
|
42
|
-
*/
|
|
43
|
-
readonly onEvent?: (event: RunEventPayload) => void;
|
|
44
|
-
/**
|
|
45
|
-
* Skip the engine's built-in `loadPlugins(config.plugins)` call.
|
|
46
|
-
* Use this when the host has already pre-loaded plugins from a custom
|
|
47
|
-
* resolution path (e.g. a user workspace's node_modules) so the engine
|
|
48
|
-
* doesn't re-resolve them via Node's default cwd-based import.
|
|
49
|
-
*/
|
|
50
|
-
readonly skipPluginLoading?: boolean;
|
|
51
|
-
/**
|
|
52
|
-
* Plugin registry to resolve drivers/triggers/completions/middlewares from.
|
|
53
|
-
* Callers pass a per-instance or per-workspace registry so concurrent runs
|
|
54
|
-
* do not share handler state.
|
|
55
|
-
*/
|
|
56
|
-
readonly registry: PluginRegistry;
|
|
1
|
+
import { TriggerBlockedError, TriggerTimeoutError, type EngineResult, type RunEventPayload, type RunPipelineOptions as CoreRunPipelineOptions } from '@tagma/core';
|
|
2
|
+
import type { PipelineConfig, TagmaRuntime } from './types';
|
|
3
|
+
export { TriggerBlockedError, TriggerTimeoutError };
|
|
4
|
+
export type { EngineResult, RunEventPayload };
|
|
5
|
+
export interface RunPipelineOptions extends Omit<CoreRunPipelineOptions, 'runtime'> {
|
|
57
6
|
/**
|
|
58
7
|
* Runtime implementation for command and driver process execution.
|
|
59
8
|
* Defaults to the SDK's Bun runtime.
|
package/dist/engine.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,mBAAmB,EACnB,mBAAmB,EACnB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,kBAAkB,IAAI,sBAAsB,EAClD,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5D,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,CAAC;AACpD,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,CAAC;AAE9C,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAAC,sBAAsB,EAAE,SAAS,CAAC;IACjF;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC;CACjC;AAED,wBAAgB,WAAW,CACzB,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC,CAKvB"}
|
package/dist/engine.js
CHANGED
|
@@ -1,300 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
import { preflight } from './core/preflight';
|
|
9
|
-
import { pruneLogDirs } from './core/log-prune';
|
|
10
|
-
import { RunContext } from './core/run-context';
|
|
11
|
-
import { allTasksTerminal, findLaunchableTasks, skipNonTerminalTasks, } from './core/scheduler';
|
|
12
|
-
import { executeTask } from './core/task-executor';
|
|
13
|
-
import { bunRuntime } from './runtime';
|
|
14
|
-
export { TriggerBlockedError, TriggerTimeoutError } from './core/trigger-errors';
|
|
15
|
-
function isPromptTaskConfig(task) {
|
|
16
|
-
return task.prompt !== undefined && task.command === undefined;
|
|
17
|
-
}
|
|
18
|
-
// Poll interval when no tasks are in-flight but non-terminal tasks remain
|
|
19
|
-
// (e.g. tasks waiting on a file or manual trigger).
|
|
20
|
-
const POLL_INTERVAL_MS = 50;
|
|
21
|
-
// R15: cap on each normalized-output entry stored in normalizedMap so a
|
|
22
|
-
// runaway parseResult can't accumulate hundreds of MB across tasks. 1 MB
|
|
23
|
-
// is generous for any text-context handoff between AI tasks.
|
|
24
|
-
const MAX_NORMALIZED_BYTES = 1_000_000;
|
|
25
|
-
export async function runPipeline(config, workDir, options) {
|
|
26
|
-
const approvalGateway = options.approvalGateway ?? new InMemoryApprovalGateway();
|
|
27
|
-
const maxLogRuns = options.maxLogRuns ?? 20;
|
|
28
|
-
const registry = options.registry;
|
|
29
|
-
const runtime = options.runtime ?? bunRuntime();
|
|
30
|
-
if (!registry) {
|
|
31
|
-
throw new Error('runPipeline requires options.registry. Use createTagma().run(...) for the public SDK API.');
|
|
32
|
-
}
|
|
33
|
-
// Load any plugins declared in the pipeline config before preflight so that
|
|
34
|
-
// drivers, completions, and middlewares referenced in YAML are registered.
|
|
35
|
-
// Hosts that pre-load plugins from a custom path (e.g. the editor loading
|
|
36
|
-
// from the user's workspace node_modules) pass skipPluginLoading: true so
|
|
37
|
-
// we don't re-resolve via Node's cwd-based default import.
|
|
38
|
-
if (!options.skipPluginLoading && config.plugins?.length) {
|
|
39
|
-
await registry.loadPlugins(config.plugins);
|
|
40
|
-
}
|
|
41
|
-
const dag = buildDag(config);
|
|
42
|
-
const runId = options.runId ?? generateRunId();
|
|
43
|
-
preflight(config, dag, registry);
|
|
44
|
-
const startedAt = nowISO();
|
|
45
|
-
const pipelineInfo = { name: config.name, run_id: runId, started_at: startedAt };
|
|
46
|
-
// Forward every structured log line to subscribers as task_log events.
|
|
47
|
-
// Reading options.onEvent inside the callback (vs. capturing it once) keeps
|
|
48
|
-
// the SDK behavior correct if callers pass a fresh onEvent on each run.
|
|
49
|
-
const log = new Logger(workDir, runId, (record) => {
|
|
50
|
-
options.onEvent?.({
|
|
51
|
-
type: 'task_log',
|
|
52
|
-
runId,
|
|
53
|
-
taskId: record.taskId,
|
|
54
|
-
level: record.level,
|
|
55
|
-
timestamp: record.timestamp,
|
|
56
|
-
text: record.text,
|
|
57
|
-
});
|
|
1
|
+
import { runPipeline as runCorePipeline, TriggerBlockedError, TriggerTimeoutError, } from '@tagma/core';
|
|
2
|
+
import { bunRuntime } from '@tagma/runtime-bun';
|
|
3
|
+
export { TriggerBlockedError, TriggerTimeoutError };
|
|
4
|
+
export function runPipeline(config, workDir, options) {
|
|
5
|
+
return runCorePipeline(config, workDir, {
|
|
6
|
+
...options,
|
|
7
|
+
runtime: options.runtime ?? bunRuntime(),
|
|
58
8
|
});
|
|
59
|
-
try {
|
|
60
|
-
log.info('[pipeline]', `start "${config.name}" run_id=${runId}`);
|
|
61
|
-
// File-only: dump the resolved pipeline shape + DAG topology for post-mortem.
|
|
62
|
-
log.section('Pipeline configuration');
|
|
63
|
-
log.quiet(`name: ${config.name}`);
|
|
64
|
-
log.quiet(`driver: ${config.driver ?? '(default: opencode)'}`);
|
|
65
|
-
log.quiet(`timeout: ${config.timeout ?? '(none)'}`);
|
|
66
|
-
log.quiet(`tracks: ${config.tracks.length}`);
|
|
67
|
-
log.quiet(`tasks (total): ${dag.nodes.size}`);
|
|
68
|
-
log.quiet(`plugins: ${(config.plugins ?? []).join(', ') || '(none)'}`);
|
|
69
|
-
log.quiet(`hooks: ${config.hooks ? Object.keys(config.hooks).join(', ') || '(none)' : '(none)'}`);
|
|
70
|
-
log.section('DAG topology');
|
|
71
|
-
for (const [id, node] of dag.nodes) {
|
|
72
|
-
const deps = node.dependsOn.length ? node.dependsOn.join(', ') : '(root)';
|
|
73
|
-
const kind = isPromptTaskConfig(node.task) ? 'ai' : 'cmd';
|
|
74
|
-
log.quiet(` • ${id} [${kind}] track=${node.track.id} deps=[${deps}]`);
|
|
75
|
-
}
|
|
76
|
-
log.quiet('');
|
|
77
|
-
// Per-run state container. Constructed before the pipeline_start hook
|
|
78
|
-
// so the early-return path (blocked pipeline) can call freezeStates on
|
|
79
|
-
// the populated idle-state map. The constructor has no side effects —
|
|
80
|
-
// no listeners installed, no events emitted.
|
|
81
|
-
const ctx = new RunContext({
|
|
82
|
-
runId,
|
|
83
|
-
dag,
|
|
84
|
-
config,
|
|
85
|
-
workDir,
|
|
86
|
-
pipelineInfo,
|
|
87
|
-
onEvent: options.onEvent,
|
|
88
|
-
runtime,
|
|
89
|
-
});
|
|
90
|
-
// Pipeline start hook (gate). Runs BEFORE the engine emits run_start so
|
|
91
|
-
// a blocked pipeline produces zero wire events (the server treats the
|
|
92
|
-
// thrown error as run_error). Hosts get a rich error message; nothing
|
|
93
|
-
// is ever half-broadcast.
|
|
94
|
-
const startHook = await executeHook(config.hooks, 'pipeline_start', buildPipelineStartContext(pipelineInfo), workDir);
|
|
95
|
-
if (!startHook.allowed) {
|
|
96
|
-
console.error(`Pipeline blocked by pipeline_start hook (exit code ${startHook.exitCode})`);
|
|
97
|
-
await executeHook(config.hooks, 'pipeline_error', buildPipelineErrorContext(pipelineInfo, 'pipeline_blocked', 'pipeline_blocked'), workDir);
|
|
98
|
-
return {
|
|
99
|
-
success: false,
|
|
100
|
-
runId,
|
|
101
|
-
logPath: log.path,
|
|
102
|
-
summary: {
|
|
103
|
-
total: dag.nodes.size,
|
|
104
|
-
success: 0,
|
|
105
|
-
failed: 0,
|
|
106
|
-
skipped: 0,
|
|
107
|
-
timeout: 0,
|
|
108
|
-
blocked: 0,
|
|
109
|
-
},
|
|
110
|
-
states: freezeStates(ctx.states),
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
// Pipeline approved — transition all tasks to waiting.
|
|
114
|
-
for (const [, state] of ctx.states) {
|
|
115
|
-
state.status = 'waiting';
|
|
116
|
-
}
|
|
117
|
-
// Emit run_start with a wire-shape snapshot so SSE subscribers can
|
|
118
|
-
// initialize their task maps on the same event stream that carries
|
|
119
|
-
// updates. No separate "server pre-broadcasts run_start" ceremony —
|
|
120
|
-
// the engine owns the lifecycle boundary.
|
|
121
|
-
const runStartTasks = [];
|
|
122
|
-
for (const [id, node] of dag.nodes) {
|
|
123
|
-
const s = ctx.states.get(id);
|
|
124
|
-
runStartTasks.push(toRunTaskState(id, node.track.id, node.task.name ?? id, s));
|
|
125
|
-
}
|
|
126
|
-
ctx.emit({ type: 'run_start', runId, tasks: runStartTasks });
|
|
127
|
-
// Pipeline timeout. `ctx.abortReason` carries the concrete cause
|
|
128
|
-
// (timeout / stop_all / external) through to run_end and the
|
|
129
|
-
// pipeline_error hook so downstream consumers can distinguish them
|
|
130
|
-
// without scraping message strings.
|
|
131
|
-
const pipelineTimeoutMs = config.timeout ? parseDuration(config.timeout) : 0;
|
|
132
|
-
let pipelineTimer = null;
|
|
133
|
-
if (pipelineTimeoutMs > 0) {
|
|
134
|
-
pipelineTimer = setTimeout(() => {
|
|
135
|
-
if (ctx.abortReason === null)
|
|
136
|
-
ctx.abortReason = 'timeout';
|
|
137
|
-
ctx.abortController.abort();
|
|
138
|
-
}, pipelineTimeoutMs);
|
|
139
|
-
}
|
|
140
|
-
// When the pipeline is aborted (timeout, stop_all, external), drain
|
|
141
|
-
// all pending approvals so waiting triggers unblock immediately.
|
|
142
|
-
ctx.abortController.signal.addEventListener('abort', () => {
|
|
143
|
-
approvalGateway.abortAll('pipeline aborted');
|
|
144
|
-
});
|
|
145
|
-
// Wire external cancel signal into the internal abort controller.
|
|
146
|
-
const externalAbortHandler = () => {
|
|
147
|
-
if (ctx.abortReason === null)
|
|
148
|
-
ctx.abortReason = 'external';
|
|
149
|
-
ctx.abortController.abort();
|
|
150
|
-
};
|
|
151
|
-
if (options.signal) {
|
|
152
|
-
if (options.signal.aborted) {
|
|
153
|
-
externalAbortHandler();
|
|
154
|
-
}
|
|
155
|
-
else {
|
|
156
|
-
options.signal.addEventListener('abort', externalAbortHandler, { once: true });
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
// Bridge approval gateway events onto the wire stream so hosts (editor
|
|
160
|
-
// server, CLI adapters) see approvals on the same channel as task
|
|
161
|
-
// updates. The server no longer needs its own gateway subscription.
|
|
162
|
-
const unsubscribeApprovals = approvalGateway.subscribe((ev) => {
|
|
163
|
-
if (ev.type === 'requested') {
|
|
164
|
-
ctx.emit({
|
|
165
|
-
type: 'approval_request',
|
|
166
|
-
runId,
|
|
167
|
-
request: {
|
|
168
|
-
id: ev.request.id,
|
|
169
|
-
taskId: ev.request.taskId,
|
|
170
|
-
trackId: ev.request.trackId,
|
|
171
|
-
message: ev.request.message,
|
|
172
|
-
createdAt: ev.request.createdAt,
|
|
173
|
-
timeoutMs: ev.request.timeoutMs,
|
|
174
|
-
metadata: ev.request.metadata,
|
|
175
|
-
},
|
|
176
|
-
});
|
|
177
|
-
return;
|
|
178
|
-
}
|
|
179
|
-
if (ev.type === 'resolved' || ev.type === 'expired' || ev.type === 'aborted') {
|
|
180
|
-
const outcome = ev.type === 'resolved'
|
|
181
|
-
? ev.decision.outcome
|
|
182
|
-
: ev.type === 'expired'
|
|
183
|
-
? 'timeout'
|
|
184
|
-
: 'aborted';
|
|
185
|
-
ctx.emit({
|
|
186
|
-
type: 'approval_resolved',
|
|
187
|
-
runId,
|
|
188
|
-
requestId: ev.request.id,
|
|
189
|
-
outcome,
|
|
190
|
-
});
|
|
191
|
-
}
|
|
192
|
-
});
|
|
193
|
-
// ── Process a single task ──
|
|
194
|
-
// ── Event loop ──
|
|
195
|
-
// Each task is launched as soon as ALL its deps reach a terminal state.
|
|
196
|
-
// We track in-flight tasks in `running` so a task completing mid-batch
|
|
197
|
-
// immediately unblocks its dependents without waiting for sibling tasks.
|
|
198
|
-
const running = new Map();
|
|
199
|
-
try {
|
|
200
|
-
while (ctx.abortReason === null) {
|
|
201
|
-
// Launch every task whose deps are all terminal and that isn't already in-flight
|
|
202
|
-
for (const id of findLaunchableTasks(ctx, new Set(running.keys()))) {
|
|
203
|
-
const p = executeTask({
|
|
204
|
-
taskId: id,
|
|
205
|
-
ctx,
|
|
206
|
-
registry,
|
|
207
|
-
log,
|
|
208
|
-
approvalGateway,
|
|
209
|
-
}).finally(() => running.delete(id));
|
|
210
|
-
running.set(id, p);
|
|
211
|
-
}
|
|
212
|
-
// All tasks terminal — done
|
|
213
|
-
if (allTasksTerminal(ctx))
|
|
214
|
-
break;
|
|
215
|
-
if (running.size === 0) {
|
|
216
|
-
// Nothing in-flight but non-terminal tasks exist (e.g. trigger-wait states
|
|
217
|
-
// that processTask hasn't been called for yet). Poll briefly.
|
|
218
|
-
await new Promise((r) => setTimeout(r, POLL_INTERVAL_MS));
|
|
219
|
-
}
|
|
220
|
-
else {
|
|
221
|
-
// Wait for any one task to finish, then re-scan for new launchables.
|
|
222
|
-
await Promise.race(running.values());
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
if (ctx.abortReason !== null) {
|
|
226
|
-
// Wait for in-flight tasks to honour the abort signal before marking states.
|
|
227
|
-
if (running.size > 0)
|
|
228
|
-
await Promise.allSettled(running.values());
|
|
229
|
-
// By the time allSettled resolves, processTask's try/finally has already
|
|
230
|
-
// set running tasks to success/failed/timeout. The only non-terminal
|
|
231
|
-
// statuses remaining here are waiting/idle tasks that were never started.
|
|
232
|
-
skipNonTerminalTasks(ctx);
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
finally {
|
|
236
|
-
if (pipelineTimer)
|
|
237
|
-
clearTimeout(pipelineTimer);
|
|
238
|
-
// Clean up the external abort signal listener to prevent dead references
|
|
239
|
-
// accumulating on long-lived shared AbortControllers.
|
|
240
|
-
if (options.signal) {
|
|
241
|
-
options.signal.removeEventListener('abort', externalAbortHandler);
|
|
242
|
-
}
|
|
243
|
-
// Safety net: drain any approvals still pending at shutdown (e.g. crash path).
|
|
244
|
-
if (approvalGateway.pending().length > 0) {
|
|
245
|
-
approvalGateway.abortAll('pipeline finished');
|
|
246
|
-
}
|
|
247
|
-
// Detach gateway → onEvent bridge so a long-lived gateway (host-supplied)
|
|
248
|
-
// doesn't keep firing into a dead run.
|
|
249
|
-
unsubscribeApprovals();
|
|
250
|
-
}
|
|
251
|
-
// ── Summary ──
|
|
252
|
-
const summary = summarizeStates(ctx.states);
|
|
253
|
-
const finishedAt = nowISO();
|
|
254
|
-
const durationMs = new Date(finishedAt).getTime() - new Date(startedAt).getTime();
|
|
255
|
-
if (ctx.abortReason !== null) {
|
|
256
|
-
const reasonText = ctx.abortReason === 'timeout'
|
|
257
|
-
? 'Pipeline timeout exceeded'
|
|
258
|
-
: ctx.abortReason === 'stop_all'
|
|
259
|
-
? 'Pipeline stopped (on_failure: stop_all)'
|
|
260
|
-
: 'Pipeline aborted by host';
|
|
261
|
-
await executeHook(config.hooks, 'pipeline_error', buildPipelineErrorContext(pipelineInfo, reasonText, undefined, ctx.abortReason), workDir);
|
|
262
|
-
}
|
|
263
|
-
else {
|
|
264
|
-
await executeHook(config.hooks, 'pipeline_complete', buildPipelineCompleteContext({ ...pipelineInfo, finished_at: finishedAt, duration_ms: durationMs }, summary), workDir);
|
|
265
|
-
}
|
|
266
|
-
const allSuccess = ctx.abortReason === null &&
|
|
267
|
-
summary.failed === 0 &&
|
|
268
|
-
summary.timeout === 0 &&
|
|
269
|
-
summary.blocked === 0;
|
|
270
|
-
log.section('Pipeline summary');
|
|
271
|
-
log.quiet(`status: ${ctx.abortReason !== null ? `aborted (${ctx.abortReason})` : 'completed'}`);
|
|
272
|
-
log.quiet(`duration: ${(durationMs / 1000).toFixed(1)}s`);
|
|
273
|
-
log.quiet(`counts: total=${summary.total} success=${summary.success} ` +
|
|
274
|
-
`failed=${summary.failed} skipped=${summary.skipped} ` +
|
|
275
|
-
`timeout=${summary.timeout} blocked=${summary.blocked}`);
|
|
276
|
-
log.quiet('');
|
|
277
|
-
log.quiet('per-task:');
|
|
278
|
-
for (const [id, state] of ctx.states) {
|
|
279
|
-
const dur = state.result?.durationMs != null ? `${(state.result.durationMs / 1000).toFixed(1)}s` : '-';
|
|
280
|
-
const exit = state.result?.exitCode ?? '-';
|
|
281
|
-
log.quiet(` ${state.status.padEnd(8)} ${id} (exit=${exit}, ${dur})`);
|
|
282
|
-
}
|
|
283
|
-
log.info('[pipeline]', `completed "${config.name}"`);
|
|
284
|
-
log.info('[pipeline]', `Total: ${summary.total} | Success: ${summary.success} | Failed: ${summary.failed} | Skipped: ${summary.skipped} | Timeout: ${summary.timeout} | Blocked: ${summary.blocked}`);
|
|
285
|
-
log.info('[pipeline]', `Duration: ${(durationMs / 1000).toFixed(1)}s`);
|
|
286
|
-
log.info('[pipeline]', `Log: ${log.path}`);
|
|
287
|
-
ctx.emit({ type: 'run_end', runId, success: allSuccess, abortReason: ctx.abortReason });
|
|
288
|
-
return { success: allSuccess, runId, logPath: log.path, summary, states: freezeStates(ctx.states) };
|
|
289
|
-
}
|
|
290
|
-
finally {
|
|
291
|
-
// Close the persistent log file handle before pruning.
|
|
292
|
-
log.close();
|
|
293
|
-
// Prune old per-run log directories on every exit path (normal, blocked, or thrown).
|
|
294
|
-
// Exclude the current runId so a concurrent run cannot delete its own live directory.
|
|
295
|
-
if (maxLogRuns > 0) {
|
|
296
|
-
await pruneLogDirs(resolve(workDir, '.tagma', 'logs'), maxLogRuns, runId);
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
9
|
}
|
|
300
10
|
//# sourceMappingURL=engine.js.map
|
package/dist/engine.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,IAAI,eAAe,EAC9B,mBAAmB,EACnB,mBAAmB,GAIpB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,CAAC;AAWpD,MAAM,UAAU,WAAW,CACzB,MAAsB,EACtB,OAAe,EACf,OAA2B;IAE3B,OAAO,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE;QACtC,GAAG,OAAO;QACV,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,UAAU,EAAE;KACzC,CAAC,CAAC;AACL,CAAC"}
|