taskflow-core 0.2.2 → 0.2.4
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 +4 -3
- package/dist/agents.d.ts +2 -2
- package/dist/agents.d.ts.map +1 -1
- package/dist/build-info.json +2 -2
- package/dist/compile.d.ts +8 -1
- package/dist/compile.d.ts.map +1 -1
- package/dist/compile.js +75 -9
- package/dist/compile.js.map +1 -1
- package/dist/detached-control.d.ts +52 -0
- package/dist/detached-control.d.ts.map +1 -0
- package/dist/detached-control.js +251 -0
- package/dist/detached-control.js.map +1 -0
- package/dist/detached-runner.js +183 -30
- package/dist/detached-runner.js.map +1 -1
- package/dist/exec/driver.d.ts +5 -0
- package/dist/exec/driver.d.ts.map +1 -1
- package/dist/exec/driver.js +98 -52
- package/dist/exec/driver.js.map +1 -1
- package/dist/exec/kernel-policy.d.ts.map +1 -1
- package/dist/exec/kernel-policy.js +20 -20
- package/dist/exec/kernel-policy.js.map +1 -1
- package/dist/exec/step-kinds.d.ts.map +1 -1
- package/dist/exec/step-kinds.js +59 -22
- package/dist/exec/step-kinds.js.map +1 -1
- package/dist/exec/step.d.ts.map +1 -1
- package/dist/exec/step.js +44 -10
- package/dist/exec/step.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/runner-core.d.ts.map +1 -1
- package/dist/runner-core.js +10 -0
- package/dist/runner-core.js.map +1 -1
- package/dist/runtime.d.ts +13 -0
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +81 -38
- package/dist/runtime.js.map +1 -1
- package/dist/store.d.ts +41 -2
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +489 -180
- package/dist/store.js.map +1 -1
- package/dist/verifiers/discover.d.ts +44 -0
- package/dist/verifiers/discover.d.ts.map +1 -0
- package/dist/verifiers/discover.js +152 -0
- package/dist/verifiers/discover.js.map +1 -0
- package/dist/verifiers/index.d.ts +12 -0
- package/dist/verifiers/index.d.ts.map +1 -0
- package/dist/verifiers/index.js +12 -0
- package/dist/verifiers/index.js.map +1 -0
- package/dist/verifiers/script-lint.d.ts +24 -0
- package/dist/verifiers/script-lint.d.ts.map +1 -0
- package/dist/verifiers/script-lint.js +311 -0
- package/dist/verifiers/script-lint.js.map +1 -0
- package/dist/verify.d.ts +55 -3
- package/dist/verify.d.ts.map +1 -1
- package/dist/verify.js +201 -2
- package/dist/verify.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -131,7 +131,7 @@ Save it as `.pi/taskflows/audit-api.json`, then run:
|
|
|
131
131
|
/tf:audit-api dir=src/api
|
|
132
132
|
```
|
|
133
133
|
|
|
134
|
-
On Codex, Claude Code, OpenCode, and Grok Build, run the same saved definition by name through `taskflow_run`.
|
|
134
|
+
On Codex, Claude Code, OpenCode, and Grok Build, run the same saved definition by name through `taskflow_run`. For long DAGs, use `mode: "background"`, then manage the durable run with `taskflow_runs` (`list` / `status` / `wait` / `cancel`); list output reports active concurrency and can filter `running` or `terminal` runs.
|
|
135
135
|
|
|
136
136
|
[Follow the full quickstart →](https://heggria.github.io/taskflow/en/docs/getting-started)
|
|
137
137
|
|
|
@@ -315,7 +315,7 @@ claude plugin install claude-taskflow@taskflow
|
|
|
315
315
|
|
|
316
316
|
```bash
|
|
317
317
|
opencode mcp add taskflow -- \
|
|
318
|
-
npx -y -p opencode-taskflow@0.2.
|
|
318
|
+
npx -y -p opencode-taskflow@0.2.3 opencode-taskflow-mcp
|
|
319
319
|
```
|
|
320
320
|
|
|
321
321
|
[OpenCode guide →](https://heggria.github.io/taskflow/en/docs/guides/opencode)
|
|
@@ -324,7 +324,7 @@ opencode mcp add taskflow -- \
|
|
|
324
324
|
|
|
325
325
|
```bash
|
|
326
326
|
grok mcp add taskflow -- \
|
|
327
|
-
npx -y -p grok-taskflow@0.2.
|
|
327
|
+
npx -y -p grok-taskflow@0.2.3 grok-taskflow-mcp
|
|
328
328
|
```
|
|
329
329
|
|
|
330
330
|
Grok Build support is new in 0.2. Its CLI stream does not report token/cost usage, so budget-declaring flows are rejected rather than silently running without enforcement.
|
|
@@ -365,6 +365,7 @@ The test suite covers orchestration semantics, persistence and file-lock races,
|
|
|
365
365
|
| [Host Guides](https://heggria.github.io/taskflow/en/docs/guides/) | Pi, Codex, Claude Code, OpenCode, and Grok setup |
|
|
366
366
|
| [Reference](https://heggria.github.io/taskflow/en/docs/reference/) | Commands, shorthand, and exact tool surfaces |
|
|
367
367
|
| [Showcase](https://heggria.github.io/taskflow/en/docs/showcase/) | Real flows and case studies |
|
|
368
|
+
| [0.2.0 Frontier Assessment](https://github.com/heggria/taskflow/blob/main/docs/taskflow-0.2.0-frontier-assessment.zh-CN.md) | Independent, evidence-based technical assessment (Chinese) |
|
|
368
369
|
|
|
369
370
|
Also see [`examples/`](https://github.com/heggria/taskflow/blob/main/examples), the [changelog](https://github.com/heggria/taskflow/blob/main/CHANGELOG.md), and the [release guide](https://github.com/heggria/taskflow/blob/main/RELEASE.md).
|
|
370
371
|
|
package/dist/agents.d.ts
CHANGED
|
@@ -18,9 +18,9 @@ export interface TaskflowSettings {
|
|
|
18
18
|
builtInAgents: boolean;
|
|
19
19
|
/** Whether package-local built-ins are copied into the current project's .pi/agents/. */
|
|
20
20
|
syncBuiltinAgentsToProject: boolean;
|
|
21
|
-
/** Maximum
|
|
21
|
+
/** Maximum inactive runs to keep. Running runs are never pruned. 0 disables cleanup. */
|
|
22
22
|
maxKeptRuns: number;
|
|
23
|
-
/** Maximum age (days) for
|
|
23
|
+
/** Maximum age (days) for inactive runs. Running runs are never pruned. 0 disables age cleanup. */
|
|
24
24
|
maxRunAgeDays: number;
|
|
25
25
|
/** Library (reusable-flow asset layer) settings. RFC: docs/rfc-library-reuse.md */
|
|
26
26
|
library: LibrarySettings;
|
package/dist/agents.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;AAErD,MAAM,MAAM,sBAAsB,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,CAAC;AAE1E;iFACiF;AACjF,MAAM,WAAW,eAAe;IAC/B,eAAe,EAAE,sBAAsB,CAAC;IACxC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,yBAAyB,EAAE,eAIvC,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAChC,+EAA+E;IAC/E,aAAa,EAAE,OAAO,CAAC;IACvB,yFAAyF;IACzF,0BAA0B,EAAE,OAAO,CAAC;IACpC,
|
|
1
|
+
{"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;AAErD,MAAM,MAAM,sBAAsB,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,CAAC;AAE1E;iFACiF;AACjF,MAAM,WAAW,eAAe;IAC/B,eAAe,EAAE,sBAAsB,CAAC;IACxC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,yBAAyB,EAAE,eAIvC,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAChC,+EAA+E;IAC/E,aAAa,EAAE,OAAO,CAAC;IACvB,yFAAyF;IACzF,0BAA0B,EAAE,OAAO,CAAC;IACpC,wFAAwF;IACxF,WAAW,EAAE,MAAM,CAAC;IACpB,mGAAmG;IACnG,aAAa,EAAE,MAAM,CAAC;IACtB,mFAAmF;IACnF,OAAO,EAAE,eAAe,CAAC;IACzB,yGAAyG;IACzG,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,sDAAsD;IACtD,OAAO,EAAE,eAAe,CAAC;CACzB;AAGD,OAAO,EAA4B,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAEpF,eAAO,MAAM,yBAAyB,EAAE,gBAOvC,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe,CAkBtE;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,OAAO,GAAG,gBAAgB,CAiCxE;AAED;0DAC0D;AAC1D,MAAM,MAAM,cAAc,GACvB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAClF;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9D,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe,CAiBtE;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS,CAmBhF;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,GAAE,gBAA4C,GAAG,OAAO,CAEvG;AAED,wBAAgB,gCAAgC,CAAC,QAAQ,GAAE,gBAA4C,GAAG,OAAO,CAEhH;AAED,MAAM,WAAW,WAAW;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;IACxC,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,gBAAgB;AAChB,MAAM,WAAW,oBAAoB;IACpC,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAyFD,wBAAgB,cAAc,CAC7B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,UAAU,EACjB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACnC,gBAAgB,GAAE,gBAA4C,GAC5D,oBAAoB,CAwCtB;AAED,MAAM,WAAW,gBAAgB;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,QAAQ,EAAE,gBAAgB,CAAC;CAC3B;AAoBD,mGAAmG;AACnG,wBAAgB,oBAAoB,IAAI,gBAAgB,CAavD;AAED;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAmC5D"}
|
package/dist/build-info.json
CHANGED
package/dist/compile.d.ts
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* a structural audit without spending a token. It is a pure function — no I/O.
|
|
15
15
|
*/
|
|
16
16
|
import type { Taskflow } from "./schema.ts";
|
|
17
|
-
import { type VerificationResult } from "./verify.ts";
|
|
17
|
+
import { type TaskflowVerifier, type VerificationResult } from "./verify.ts";
|
|
18
18
|
export interface CompileResult {
|
|
19
19
|
/** A Mermaid `flowchart` source block (no fences). */
|
|
20
20
|
mermaid: string;
|
|
@@ -28,6 +28,13 @@ export interface CompileOptions {
|
|
|
28
28
|
direction?: "TD" | "LR";
|
|
29
29
|
/** Document title (defaults to the flow name). */
|
|
30
30
|
title?: string;
|
|
31
|
+
/** Caller-supplied verifiers forwarded into `verifyTaskflow`; their issues
|
|
32
|
+
* overlay on the Mermaid diagram + report exactly like built-in issues. */
|
|
33
|
+
verifiers?: TaskflowVerifier[];
|
|
34
|
+
/** Include the built-in script-lint verifier. Default `true`. Set `false`
|
|
35
|
+
* to disable (e.g. when the host registers its own verifiers and wants
|
|
36
|
+
* full control). */
|
|
37
|
+
lint?: boolean;
|
|
31
38
|
}
|
|
32
39
|
/**
|
|
33
40
|
* Compile a (already schema-valid) taskflow into a Mermaid diagram + verification
|
package/dist/compile.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAS,QAAQ,EAAE,MAAM,aAAa,CAAC;AAMnD,OAAO,
|
|
1
|
+
{"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAS,QAAQ,EAAE,MAAM,aAAa,CAAC;AAMnD,OAAO,EAAkB,KAAK,gBAAgB,EAA0B,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAOrH,MAAM,WAAW,aAAa;IAC7B,sDAAsD;IACtD,OAAO,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,YAAY,EAAE,kBAAkB,CAAC;IACjC,kFAAkF;IAClF,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC9B,0EAA0E;IAC1E,SAAS,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACxB,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;gFAC4E;IAC5E,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B;;yBAEqB;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;CACf;AAqXD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,GAAE,cAAmB,GAAG,aAAa,CAsCxF"}
|
package/dist/compile.js
CHANGED
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import { asArray, LOOP_DEFAULT_MAX_ITERATIONS, TOURNAMENT_DEFAULT_VARIANTS, } from "./schema.js";
|
|
17
17
|
import { verifyTaskflow } from "./verify.js";
|
|
18
|
+
import { scriptLintVerifier } from "./verifiers/script-lint.js";
|
|
18
19
|
// ---------------------------------------------------------------------------
|
|
19
20
|
// Label / id sanitization
|
|
20
21
|
// ---------------------------------------------------------------------------
|
|
@@ -137,6 +138,34 @@ function typeTag(p) {
|
|
|
137
138
|
return "▸ agent";
|
|
138
139
|
}
|
|
139
140
|
}
|
|
141
|
+
/** Extract an inline flow definition from a flow phase's `def` field (0.2.4
|
|
142
|
+
* subgraph rendering). Returns undefined for saved-use flows or unparseable
|
|
143
|
+
* defs. */
|
|
144
|
+
function extractInlineDef(p) {
|
|
145
|
+
const raw = p.def;
|
|
146
|
+
if (!raw)
|
|
147
|
+
return undefined;
|
|
148
|
+
if (typeof raw === "string") {
|
|
149
|
+
try {
|
|
150
|
+
const parsed = JSON.parse(raw);
|
|
151
|
+
if (Array.isArray(parsed))
|
|
152
|
+
return { phases: parsed };
|
|
153
|
+
if (parsed && typeof parsed === "object" && Array.isArray(parsed.phases)) {
|
|
154
|
+
return parsed;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
catch {
|
|
158
|
+
return undefined;
|
|
159
|
+
}
|
|
160
|
+
return undefined;
|
|
161
|
+
}
|
|
162
|
+
if (Array.isArray(raw))
|
|
163
|
+
return { phases: raw };
|
|
164
|
+
if (raw && typeof raw === "object" && Array.isArray(raw.phases)) {
|
|
165
|
+
return raw;
|
|
166
|
+
}
|
|
167
|
+
return undefined;
|
|
168
|
+
}
|
|
140
169
|
/** The body text inside a node: id, type tag, a task summary, agent. */
|
|
141
170
|
function nodeBody(p) {
|
|
142
171
|
const lines = [];
|
|
@@ -250,9 +279,27 @@ function buildMermaid(flow, verification, opts) {
|
|
|
250
279
|
const sev = severityByPhase(verification.issues);
|
|
251
280
|
const lines = [];
|
|
252
281
|
lines.push(`flowchart ${dir}`);
|
|
253
|
-
// Nodes
|
|
254
|
-
for (const p of phases)
|
|
255
|
-
|
|
282
|
+
// Nodes — flow phases with inline defs get a subgraph (0.2.4).
|
|
283
|
+
for (const p of phases) {
|
|
284
|
+
const childDef = (p.type ?? "agent") === "flow"
|
|
285
|
+
? extractInlineDef(p)
|
|
286
|
+
: undefined;
|
|
287
|
+
if (childDef && Array.isArray(childDef.phases) && childDef.phases.length > 0) {
|
|
288
|
+
const subId = idMap.get(p.id) ?? p.id;
|
|
289
|
+
lines.push(`\tsubgraph ${subId} ["${label(p.id)}: ${mdInline(childDef.name ?? p.use ?? "flow")}"]`);
|
|
290
|
+
const childIdMap = buildNodeIds(childDef.phases);
|
|
291
|
+
for (const cp of childDef.phases) {
|
|
292
|
+
lines.push(`\t\t${nodeShape(cp, childIdMap)}`);
|
|
293
|
+
}
|
|
294
|
+
const childEdges = edges(childDef.phases, childIdMap);
|
|
295
|
+
for (const ce of childEdges)
|
|
296
|
+
lines.push(`\t\t${ce}`);
|
|
297
|
+
lines.push("\tend");
|
|
298
|
+
}
|
|
299
|
+
else {
|
|
300
|
+
lines.push(`\t${nodeShape(p, idMap)}`);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
256
303
|
// Edges
|
|
257
304
|
const e = edges(phases, idMap);
|
|
258
305
|
if (e.length) {
|
|
@@ -268,11 +315,24 @@ function buildMermaid(flow, verification, opts) {
|
|
|
268
315
|
lines.push(`\tclassDef ${CLASS_FINAL} stroke:#43d9ad,stroke-width:3px;`);
|
|
269
316
|
// Final phases get a distinct border (unless they already carry an issue,
|
|
270
317
|
// where the issue color wins — a final node that's broken should read red).
|
|
271
|
-
|
|
318
|
+
// Overlays are applied ONLY to phase ids present in `idMap`: a plugin-supplied
|
|
319
|
+
// `phaseId` that names no real phase (or carries newlines/Mermaid syntax) must
|
|
320
|
+
// never reach a `class` statement, where it could inject extra directives.
|
|
321
|
+
// Such findings still appear as escaped text in the report below.
|
|
322
|
+
const finals = phases
|
|
323
|
+
.filter((p) => p.final && !sev.has(p.id))
|
|
324
|
+
.map((p) => idMap.get(p.id))
|
|
325
|
+
.filter((id) => id !== undefined);
|
|
272
326
|
if (finals.length)
|
|
273
327
|
lines.push(`\tclass ${finals.join(",")} ${CLASS_FINAL};`);
|
|
274
|
-
const errNodes = [...sev]
|
|
275
|
-
|
|
328
|
+
const errNodes = [...sev]
|
|
329
|
+
.filter(([, s]) => s === "error")
|
|
330
|
+
.map(([id]) => idMap.get(id))
|
|
331
|
+
.filter((id) => id !== undefined);
|
|
332
|
+
const warnNodes = [...sev]
|
|
333
|
+
.filter(([, s]) => s === "warning")
|
|
334
|
+
.map(([id]) => idMap.get(id))
|
|
335
|
+
.filter((id) => id !== undefined);
|
|
276
336
|
if (errNodes.length)
|
|
277
337
|
lines.push(`\tclass ${errNodes.join(",")} ${CLASS_ERROR};`);
|
|
278
338
|
if (warnNodes.length)
|
|
@@ -297,13 +357,13 @@ function buildReport(flow, verification) {
|
|
|
297
357
|
lines.push("");
|
|
298
358
|
lines.push(`### ❌ Errors (${errors.length})`);
|
|
299
359
|
for (const e of errors)
|
|
300
|
-
lines.push(`- **${e.category}**${e.phaseId ? ` \`${mdInline(e.phaseId)}\`` : ""}: ${mdInline(e.message)}`);
|
|
360
|
+
lines.push(`- **${e.category}**${e.phaseId ? ` \`${mdInline(e.phaseId)}\`` : ""}${e.source ? ` _(${mdInline(e.source)})_` : ""}: ${mdInline(e.message)}`);
|
|
301
361
|
}
|
|
302
362
|
if (warnings.length) {
|
|
303
363
|
lines.push("");
|
|
304
364
|
lines.push(`### ⚠️ Warnings (${warnings.length})`);
|
|
305
365
|
for (const w of warnings)
|
|
306
|
-
lines.push(`- **${w.category}**${w.phaseId ? ` \`${mdInline(w.phaseId)}\`` : ""}: ${mdInline(w.message)}`);
|
|
366
|
+
lines.push(`- **${w.category}**${w.phaseId ? ` \`${mdInline(w.phaseId)}\`` : ""}${w.source ? ` _(${mdInline(w.source)})_` : ""}: ${mdInline(w.message)}`);
|
|
307
367
|
}
|
|
308
368
|
return lines.join("\n");
|
|
309
369
|
}
|
|
@@ -315,12 +375,18 @@ function buildReport(flow, verification) {
|
|
|
315
375
|
* report. Pure function — zero tokens, no LLM, no I/O.
|
|
316
376
|
*/
|
|
317
377
|
export function compileTaskflow(flow, opts = {}) {
|
|
378
|
+
// Merge built-in script-lint (default ON) with caller-supplied verifiers.
|
|
379
|
+
const verifiers = [];
|
|
380
|
+
if (opts.lint !== false)
|
|
381
|
+
verifiers.push(scriptLintVerifier);
|
|
382
|
+
if (opts.verifiers)
|
|
383
|
+
verifiers.push(...opts.verifiers);
|
|
318
384
|
const verification = verifyTaskflow({
|
|
319
385
|
name: flow.name ?? "taskflow",
|
|
320
386
|
phases: flow.phases ?? [],
|
|
321
387
|
budget: flow.budget,
|
|
322
388
|
concurrency: flow.concurrency,
|
|
323
|
-
});
|
|
389
|
+
}, { verifiers: verifiers.length ? verifiers : undefined });
|
|
324
390
|
const mermaid = buildMermaid(flow, verification, opts);
|
|
325
391
|
const report = buildReport(flow, verification);
|
|
326
392
|
const title = opts.title ?? flow.name ?? "taskflow";
|
package/dist/compile.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile.js","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"compile.js","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File-backed control plane for detached Taskflow runs.
|
|
3
|
+
*
|
|
4
|
+
* A detached runner cannot rely on an IPC channel surviving its parent MCP
|
|
5
|
+
* process. Cancellation is therefore requested through a small durable marker
|
|
6
|
+
* in a user-private control directory keyed by the canonical invocation root.
|
|
7
|
+
* The child polls that marker and aborts the normal RuntimeDeps signal,
|
|
8
|
+
* preserving the runtime's existing paused semantics and process-tree cleanup.
|
|
9
|
+
*/
|
|
10
|
+
export interface DetachedCancelRequest {
|
|
11
|
+
requestedAt: number;
|
|
12
|
+
reason?: string;
|
|
13
|
+
}
|
|
14
|
+
export declare const DETACHED_CONTROL_VERSION = 1;
|
|
15
|
+
export declare const DETACHED_CONTROL_CWD_ENV = "TASKFLOW_DETACHED_CONTROL_CWD";
|
|
16
|
+
export declare const DETACHED_CONTROL_RUN_ID_ENV = "TASKFLOW_DETACHED_CONTROL_RUN_ID";
|
|
17
|
+
export declare const DETACHED_CONTROL_INSTANCE_ENV = "TASKFLOW_DETACHED_CONTROL_INSTANCE";
|
|
18
|
+
export declare const DETACHED_CONTROL_OWNER_PID_ENV = "TASKFLOW_DETACHED_CONTROL_OWNER_PID";
|
|
19
|
+
export declare const DETACHED_CONTROL_SIGNAL_READY_ENV = "TASKFLOW_DETACHED_CONTROL_SIGNAL_READY";
|
|
20
|
+
export interface DetachedProcessRegistry {
|
|
21
|
+
version: number;
|
|
22
|
+
instanceId: string;
|
|
23
|
+
ownerPid: number;
|
|
24
|
+
heartbeatAt: number;
|
|
25
|
+
pids: number[];
|
|
26
|
+
}
|
|
27
|
+
/** Resolve the cancel marker for a run without accepting caller-selected paths. */
|
|
28
|
+
export declare function detachedCancelRequestPath(cwd: string, runId: string): string;
|
|
29
|
+
/** Persist an idempotent cancellation request for a detached runner. */
|
|
30
|
+
export declare function requestDetachedCancel(cwd: string, runId: string, reason?: string): DetachedCancelRequest;
|
|
31
|
+
/** Read a cancellation request. Corrupt markers still mean "cancel" fail-safe. */
|
|
32
|
+
export declare function readDetachedCancelRequest(cwd: string, runId: string): DetachedCancelRequest | null;
|
|
33
|
+
export declare function clearDetachedCancelRequest(cwd: string, runId: string): void;
|
|
34
|
+
export declare function detachedProcessRegistryPath(cwd: string, runId: string): string;
|
|
35
|
+
export declare function readDetachedProcessRegistry(cwd: string, runId: string): DetachedProcessRegistry | null;
|
|
36
|
+
export declare function heartbeatDetachedProcessRegistry(cwd: string, runId: string, instanceId: string, ownerPid?: number): void;
|
|
37
|
+
/** True only after this exact detached owner installed its persistence-aware signal bridge. */
|
|
38
|
+
export declare function isDetachedSignalOwnerReady(): boolean;
|
|
39
|
+
/** Best-effort hook used by runner-core whenever a Host CLI process group starts. */
|
|
40
|
+
export declare function registerDetachedProcessTreeFromEnv(pid: number): void;
|
|
41
|
+
/** Best-effort hook used by runner-core after a Host CLI process group is reaped. */
|
|
42
|
+
export declare function unregisterDetachedProcessTreeFromEnv(pid: number): void;
|
|
43
|
+
/** Reap every Host CLI process group owned by exactly this worker instance. */
|
|
44
|
+
export declare function terminateDetachedProcessTrees(cwd: string, runId: string, instanceId: string): number[];
|
|
45
|
+
export declare function clearDetachedProcessRegistry(cwd: string, runId: string, instanceId?: string): void;
|
|
46
|
+
/**
|
|
47
|
+
* Poll a detached cancellation marker and bridge it into an AbortController.
|
|
48
|
+
* Returns a cleanup callback. The timer is unref'd so it never keeps a
|
|
49
|
+
* completed detached runner alive by itself.
|
|
50
|
+
*/
|
|
51
|
+
export declare function watchDetachedCancel(cwd: string, runId: string, controller: AbortController, pollMs?: number, onRequest?: (request: DetachedCancelRequest) => void): () => void;
|
|
52
|
+
//# sourceMappingURL=detached-control.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detached-control.d.ts","sourceRoot":"","sources":["../src/detached-control.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,MAAM,WAAW,qBAAqB;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAKD,eAAO,MAAM,wBAAwB,IAAkB,CAAC;AACxD,eAAO,MAAM,wBAAwB,kCAAkC,CAAC;AACxE,eAAO,MAAM,2BAA2B,qCAAqC,CAAC;AAC9E,eAAO,MAAM,6BAA6B,uCAAuC,CAAC;AAClF,eAAO,MAAM,8BAA8B,wCAAwC,CAAC;AACpF,eAAO,MAAM,iCAAiC,2CAA2C,CAAC;AAE1F,MAAM,WAAW,uBAAuB;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,EAAE,CAAC;CACf;AAkBD,mFAAmF;AACnF,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE5E;AAED,wEAAwE;AACxE,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,qBAAqB,CAUxG;AAED,kFAAkF;AAClF,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,qBAAqB,GAAG,IAAI,CAiBlG;AAED,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAO3E;AAED,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,uBAAuB,GAAG,IAAI,CAuBtG;AAOD,wBAAgB,gCAAgC,CAC/C,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,QAAQ,SAAc,GACpB,IAAI,CAUN;AAcD,+FAA+F;AAC/F,wBAAgB,0BAA0B,IAAI,OAAO,CAGpD;AAED,qFAAqF;AACrF,wBAAgB,kCAAkC,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAcpE;AAED,qFAAqF;AACrF,wBAAgB,oCAAoC,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAYtE;AAmBD,+EAA+E;AAC/E,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAKtG;AAED,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAOlG;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAClC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,eAAe,EAC3B,MAAM,SAAkB,EACxB,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,IAAI,GAClD,MAAM,IAAI,CAaZ"}
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File-backed control plane for detached Taskflow runs.
|
|
3
|
+
*
|
|
4
|
+
* A detached runner cannot rely on an IPC channel surviving its parent MCP
|
|
5
|
+
* process. Cancellation is therefore requested through a small durable marker
|
|
6
|
+
* in a user-private control directory keyed by the canonical invocation root.
|
|
7
|
+
* The child polls that marker and aborts the normal RuntimeDeps signal,
|
|
8
|
+
* preserving the runtime's existing paused semantics and process-tree cleanup.
|
|
9
|
+
*/
|
|
10
|
+
import * as fs from "node:fs";
|
|
11
|
+
import * as path from "node:path";
|
|
12
|
+
import { spawnSync } from "node:child_process";
|
|
13
|
+
import { detachedControlDir, validateRunId, writeFileAtomic } from "./store.js";
|
|
14
|
+
const DEFAULT_POLL_MS = 250;
|
|
15
|
+
const CONTROL_VERSION = 1;
|
|
16
|
+
export const DETACHED_CONTROL_VERSION = CONTROL_VERSION;
|
|
17
|
+
export const DETACHED_CONTROL_CWD_ENV = "TASKFLOW_DETACHED_CONTROL_CWD";
|
|
18
|
+
export const DETACHED_CONTROL_RUN_ID_ENV = "TASKFLOW_DETACHED_CONTROL_RUN_ID";
|
|
19
|
+
export const DETACHED_CONTROL_INSTANCE_ENV = "TASKFLOW_DETACHED_CONTROL_INSTANCE";
|
|
20
|
+
export const DETACHED_CONTROL_OWNER_PID_ENV = "TASKFLOW_DETACHED_CONTROL_OWNER_PID";
|
|
21
|
+
export const DETACHED_CONTROL_SIGNAL_READY_ENV = "TASKFLOW_DETACHED_CONTROL_SIGNAL_READY";
|
|
22
|
+
function ensureControlDir(cwd) {
|
|
23
|
+
const dir = detachedControlDir(cwd);
|
|
24
|
+
fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
25
|
+
const stat = fs.lstatSync(dir);
|
|
26
|
+
if (!stat.isDirectory() || stat.isSymbolicLink()) {
|
|
27
|
+
throw new Error("Detached control root must be a private physical directory");
|
|
28
|
+
}
|
|
29
|
+
try {
|
|
30
|
+
fs.chmodSync(dir, 0o700);
|
|
31
|
+
}
|
|
32
|
+
catch { /* Windows / restrictive filesystem */ }
|
|
33
|
+
return dir;
|
|
34
|
+
}
|
|
35
|
+
function controlPath(cwd, runId, suffix) {
|
|
36
|
+
if (!validateRunId(runId))
|
|
37
|
+
throw new Error("Invalid runId for detached control");
|
|
38
|
+
return path.join(detachedControlDir(cwd), `${runId}.${suffix}.json`);
|
|
39
|
+
}
|
|
40
|
+
/** Resolve the cancel marker for a run without accepting caller-selected paths. */
|
|
41
|
+
export function detachedCancelRequestPath(cwd, runId) {
|
|
42
|
+
return controlPath(cwd, runId, "cancel");
|
|
43
|
+
}
|
|
44
|
+
/** Persist an idempotent cancellation request for a detached runner. */
|
|
45
|
+
export function requestDetachedCancel(cwd, runId, reason) {
|
|
46
|
+
ensureControlDir(cwd);
|
|
47
|
+
const request = {
|
|
48
|
+
requestedAt: Date.now(),
|
|
49
|
+
...(typeof reason === "string" && reason.trim()
|
|
50
|
+
? { reason: reason.trim().slice(0, 500) }
|
|
51
|
+
: {}),
|
|
52
|
+
};
|
|
53
|
+
writeFileAtomic(detachedCancelRequestPath(cwd, runId), `${JSON.stringify(request)}\n`);
|
|
54
|
+
return request;
|
|
55
|
+
}
|
|
56
|
+
/** Read a cancellation request. Corrupt markers still mean "cancel" fail-safe. */
|
|
57
|
+
export function readDetachedCancelRequest(cwd, runId) {
|
|
58
|
+
const filePath = detachedCancelRequestPath(cwd, runId);
|
|
59
|
+
if (!fs.existsSync(filePath))
|
|
60
|
+
return null;
|
|
61
|
+
try {
|
|
62
|
+
const parsed = JSON.parse(fs.readFileSync(filePath, "utf8"));
|
|
63
|
+
if (typeof parsed === "object" && parsed !== null) {
|
|
64
|
+
const record = parsed;
|
|
65
|
+
return {
|
|
66
|
+
requestedAt: typeof record.requestedAt === "number" ? record.requestedAt : Date.now(),
|
|
67
|
+
...(typeof record.reason === "string" ? { reason: record.reason } : {}),
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
// The marker exists, so fail safe and cancel even if its optional metadata
|
|
73
|
+
// was truncated or externally corrupted.
|
|
74
|
+
}
|
|
75
|
+
return { requestedAt: Date.now(), reason: "Cancellation marker was unreadable" };
|
|
76
|
+
}
|
|
77
|
+
export function clearDetachedCancelRequest(cwd, runId) {
|
|
78
|
+
try {
|
|
79
|
+
fs.unlinkSync(detachedCancelRequestPath(cwd, runId));
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
/* missing/already consumed */
|
|
83
|
+
}
|
|
84
|
+
try {
|
|
85
|
+
fs.rmdirSync(detachedControlDir(cwd));
|
|
86
|
+
}
|
|
87
|
+
catch { /* other markers / missing */ }
|
|
88
|
+
}
|
|
89
|
+
export function detachedProcessRegistryPath(cwd, runId) {
|
|
90
|
+
return controlPath(cwd, runId, "processes");
|
|
91
|
+
}
|
|
92
|
+
export function readDetachedProcessRegistry(cwd, runId) {
|
|
93
|
+
const filePath = detachedProcessRegistryPath(cwd, runId);
|
|
94
|
+
try {
|
|
95
|
+
const parsed = JSON.parse(fs.readFileSync(filePath, "utf8"));
|
|
96
|
+
if (typeof parsed !== "object" || parsed === null)
|
|
97
|
+
return null;
|
|
98
|
+
const value = parsed;
|
|
99
|
+
if (value.version !== CONTROL_VERSION ||
|
|
100
|
+
typeof value.instanceId !== "string" ||
|
|
101
|
+
!Number.isSafeInteger(value.ownerPid) ||
|
|
102
|
+
typeof value.heartbeatAt !== "number" ||
|
|
103
|
+
!Array.isArray(value.pids))
|
|
104
|
+
return null;
|
|
105
|
+
return {
|
|
106
|
+
version: CONTROL_VERSION,
|
|
107
|
+
instanceId: value.instanceId,
|
|
108
|
+
ownerPid: value.ownerPid,
|
|
109
|
+
heartbeatAt: value.heartbeatAt,
|
|
110
|
+
pids: value.pids.filter((pid) => Number.isSafeInteger(pid) && Number(pid) > 0),
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
function writeDetachedProcessRegistry(cwd, runId, registry) {
|
|
118
|
+
ensureControlDir(cwd);
|
|
119
|
+
writeFileAtomic(detachedProcessRegistryPath(cwd, runId), `${JSON.stringify(registry)}\n`);
|
|
120
|
+
}
|
|
121
|
+
export function heartbeatDetachedProcessRegistry(cwd, runId, instanceId, ownerPid = process.pid) {
|
|
122
|
+
const existing = readDetachedProcessRegistry(cwd, runId);
|
|
123
|
+
const pids = existing?.instanceId === instanceId ? existing.pids : [];
|
|
124
|
+
writeDetachedProcessRegistry(cwd, runId, {
|
|
125
|
+
version: CONTROL_VERSION,
|
|
126
|
+
instanceId,
|
|
127
|
+
ownerPid,
|
|
128
|
+
heartbeatAt: Date.now(),
|
|
129
|
+
pids,
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
function processRegistryContextFromEnv() {
|
|
133
|
+
const cwd = process.env[DETACHED_CONTROL_CWD_ENV];
|
|
134
|
+
const runId = process.env[DETACHED_CONTROL_RUN_ID_ENV];
|
|
135
|
+
const instanceId = process.env[DETACHED_CONTROL_INSTANCE_ENV];
|
|
136
|
+
// Host CLIs inherit the detached worker's environment. Only the process that
|
|
137
|
+
// owns this exact PID token may mutate the outer worker's registry; nested
|
|
138
|
+
// Taskflow instances must not overwrite its heartbeat/owner identity.
|
|
139
|
+
if (process.env[DETACHED_CONTROL_OWNER_PID_ENV] !== String(process.pid))
|
|
140
|
+
return null;
|
|
141
|
+
if (!cwd || !runId || !instanceId || !validateRunId(runId))
|
|
142
|
+
return null;
|
|
143
|
+
return { cwd, runId, instanceId };
|
|
144
|
+
}
|
|
145
|
+
/** True only after this exact detached owner installed its persistence-aware signal bridge. */
|
|
146
|
+
export function isDetachedSignalOwnerReady() {
|
|
147
|
+
return process.env[DETACHED_CONTROL_OWNER_PID_ENV] === String(process.pid) &&
|
|
148
|
+
process.env[DETACHED_CONTROL_SIGNAL_READY_ENV] === "1";
|
|
149
|
+
}
|
|
150
|
+
/** Best-effort hook used by runner-core whenever a Host CLI process group starts. */
|
|
151
|
+
export function registerDetachedProcessTreeFromEnv(pid) {
|
|
152
|
+
const context = processRegistryContextFromEnv();
|
|
153
|
+
if (!context || !Number.isSafeInteger(pid) || pid <= 0)
|
|
154
|
+
return;
|
|
155
|
+
try {
|
|
156
|
+
const existing = readDetachedProcessRegistry(context.cwd, context.runId);
|
|
157
|
+
const pids = existing?.instanceId === context.instanceId ? existing.pids : [];
|
|
158
|
+
writeDetachedProcessRegistry(context.cwd, context.runId, {
|
|
159
|
+
version: CONTROL_VERSION,
|
|
160
|
+
instanceId: context.instanceId,
|
|
161
|
+
ownerPid: process.pid,
|
|
162
|
+
heartbeatAt: Date.now(),
|
|
163
|
+
pids: [...new Set([...pids, pid])],
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
catch { /* lifecycle diagnostics must never replace phase execution */ }
|
|
167
|
+
}
|
|
168
|
+
/** Best-effort hook used by runner-core after a Host CLI process group is reaped. */
|
|
169
|
+
export function unregisterDetachedProcessTreeFromEnv(pid) {
|
|
170
|
+
const context = processRegistryContextFromEnv();
|
|
171
|
+
if (!context)
|
|
172
|
+
return;
|
|
173
|
+
try {
|
|
174
|
+
const existing = readDetachedProcessRegistry(context.cwd, context.runId);
|
|
175
|
+
if (!existing || existing.instanceId !== context.instanceId)
|
|
176
|
+
return;
|
|
177
|
+
writeDetachedProcessRegistry(context.cwd, context.runId, {
|
|
178
|
+
...existing,
|
|
179
|
+
heartbeatAt: Date.now(),
|
|
180
|
+
pids: existing.pids.filter((candidate) => candidate !== pid),
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
catch { /* lifecycle diagnostics must never replace phase execution */ }
|
|
184
|
+
}
|
|
185
|
+
function killRegisteredProcessTree(pid) {
|
|
186
|
+
if (!Number.isSafeInteger(pid) || pid <= 0 || pid === process.pid)
|
|
187
|
+
return;
|
|
188
|
+
if (process.platform === "win32") {
|
|
189
|
+
try {
|
|
190
|
+
spawnSync("taskkill", ["/PID", String(pid), "/T", "/F"], {
|
|
191
|
+
shell: false,
|
|
192
|
+
stdio: "ignore",
|
|
193
|
+
windowsHide: true,
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
catch { /* already gone / taskkill unavailable */ }
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
try {
|
|
200
|
+
process.kill(-pid, "SIGKILL");
|
|
201
|
+
}
|
|
202
|
+
catch {
|
|
203
|
+
try {
|
|
204
|
+
process.kill(pid, "SIGKILL");
|
|
205
|
+
}
|
|
206
|
+
catch { /* already gone */ }
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
/** Reap every Host CLI process group owned by exactly this worker instance. */
|
|
210
|
+
export function terminateDetachedProcessTrees(cwd, runId, instanceId) {
|
|
211
|
+
const registry = readDetachedProcessRegistry(cwd, runId);
|
|
212
|
+
if (!registry || registry.instanceId !== instanceId)
|
|
213
|
+
return [];
|
|
214
|
+
for (const pid of registry.pids)
|
|
215
|
+
killRegisteredProcessTree(pid);
|
|
216
|
+
return registry.pids;
|
|
217
|
+
}
|
|
218
|
+
export function clearDetachedProcessRegistry(cwd, runId, instanceId) {
|
|
219
|
+
try {
|
|
220
|
+
const existing = readDetachedProcessRegistry(cwd, runId);
|
|
221
|
+
if (instanceId && existing && existing.instanceId !== instanceId)
|
|
222
|
+
return;
|
|
223
|
+
fs.unlinkSync(detachedProcessRegistryPath(cwd, runId));
|
|
224
|
+
}
|
|
225
|
+
catch { /* missing/already cleared */ }
|
|
226
|
+
try {
|
|
227
|
+
fs.rmdirSync(detachedControlDir(cwd));
|
|
228
|
+
}
|
|
229
|
+
catch { /* other markers / missing */ }
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Poll a detached cancellation marker and bridge it into an AbortController.
|
|
233
|
+
* Returns a cleanup callback. The timer is unref'd so it never keeps a
|
|
234
|
+
* completed detached runner alive by itself.
|
|
235
|
+
*/
|
|
236
|
+
export function watchDetachedCancel(cwd, runId, controller, pollMs = DEFAULT_POLL_MS, onRequest) {
|
|
237
|
+
const check = () => {
|
|
238
|
+
if (controller.signal.aborted)
|
|
239
|
+
return;
|
|
240
|
+
const request = readDetachedCancelRequest(cwd, runId);
|
|
241
|
+
if (request) {
|
|
242
|
+
onRequest?.(request);
|
|
243
|
+
controller.abort(request);
|
|
244
|
+
}
|
|
245
|
+
};
|
|
246
|
+
check();
|
|
247
|
+
const timer = setInterval(check, Math.max(50, pollMs));
|
|
248
|
+
timer.unref();
|
|
249
|
+
return () => clearInterval(timer);
|
|
250
|
+
}
|
|
251
|
+
//# sourceMappingURL=detached-control.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detached-control.js","sourceRoot":"","sources":["../src/detached-control.ts"],"names":[],"mappings":"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"}
|