@db-lyon/flowkit 0.11.2 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/README.md +386 -375
  2. package/dist/.tsbuildinfo +1 -0
  3. package/dist/flow/runner.d.ts +23 -2
  4. package/dist/flow/runner.d.ts.map +1 -1
  5. package/dist/flow/runner.js +89 -29
  6. package/dist/flow/runner.js.map +1 -1
  7. package/dist/index.d.ts +2 -2
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +2 -1
  10. package/dist/index.js.map +1 -1
  11. package/dist/references.d.ts +41 -0
  12. package/dist/references.d.ts.map +1 -0
  13. package/dist/references.js +110 -0
  14. package/dist/references.js.map +1 -0
  15. package/dist/task/agent-task.d.ts.map +1 -1
  16. package/dist/task/agent-task.js +1 -7
  17. package/dist/task/agent-task.js.map +1 -1
  18. package/dist/task/base-task.d.ts +28 -3
  19. package/dist/task/base-task.d.ts.map +1 -1
  20. package/dist/task/base-task.js +13 -4
  21. package/dist/task/base-task.js.map +1 -1
  22. package/dist/task/shell-task.d.ts +2 -0
  23. package/dist/task/shell-task.d.ts.map +1 -1
  24. package/dist/task/shell-task.js +186 -40
  25. package/dist/task/shell-task.js.map +1 -1
  26. package/dist/task/shell-termination.d.ts +34 -0
  27. package/dist/task/shell-termination.d.ts.map +1 -0
  28. package/dist/task/shell-termination.js +179 -0
  29. package/dist/task/shell-termination.js.map +1 -0
  30. package/dist/task/task-resolution.d.ts +33 -0
  31. package/dist/task/task-resolution.d.ts.map +1 -0
  32. package/dist/task/task-resolution.js +34 -0
  33. package/dist/task/task-resolution.js.map +1 -0
  34. package/docs/ai-agents.md +368 -368
  35. package/docs/api-reference.md +458 -430
  36. package/docs/configuration.md +347 -343
  37. package/docs/custom-tasks.md +258 -203
  38. package/package.json +53 -52
@@ -1 +1 @@
1
- {"version":3,"file":"agent-task.js","sourceRoot":"","sources":["../../src/task/agent-task.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-task.js","sourceRoot":"","sources":["../../src/task/agent-task.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,16 @@ import type { TaskRegistry } from './registry.js';
3
3
  import type { LLMProvider, LLMToolHandler } from './llm-provider.js';
4
4
  import type { TaskDefinition } from '../config/schema.js';
5
5
  import type { TokenLedger } from './token-ledger.js';
6
+ import type { ReferenceContext } from '../references.js';
7
+ /**
8
+ * Ambient state handed to a task at construction.
9
+ *
10
+ * `FlowRunner` derives a fresh context per invocation so each task carries its
11
+ * own `taskReferenceContext` (see below). Treat it as **read-only**: writing a
12
+ * key onto `ctx` inside a task does not reach the next step, another task, or a
13
+ * sub-agent. Share state through a mutable object placed on the context by the
14
+ * host instead, e.g. `context: { cache: new Map() }`.
15
+ */
6
16
  export interface TaskContext {
7
17
  logger?: Logger;
8
18
  registry?: TaskRegistry;
@@ -15,6 +25,14 @@ export interface TaskContext {
15
25
  * as agent tools inherit their configured `class_path` and `options` defaults.
16
26
  */
17
27
  taskDefinitions?: Record<string, TaskDefinition>;
28
+ /**
29
+ * Reference scope for `${ns.path}` interpolation of a called task's
30
+ * *configured defaults*. Supplied by `FlowRunner` and propagated into nested
31
+ * tasks and sub-agents, so a task resolves the same references however deep
32
+ * it is invoked. Options passed at the call site are runtime data and are
33
+ * never interpolated.
34
+ */
35
+ taskReferenceContext?: ReferenceContext;
18
36
  /**
19
37
  * Run a configured flow as an agent tool. Wired by `FlowRunner`; absent when
20
38
  * a task runs outside one. Returns a task-shaped result whose `data.steps`
@@ -62,9 +80,16 @@ export declare abstract class BaseTask<TOpts = Record<string, unknown>> {
62
80
  /** Override for option validation — called before execute(). */
63
81
  protected validate(): void;
64
82
  /**
65
- * Resolve another task by name from the registry.
66
- * Returns an unexecuted task instance — call `.run()` on it yourself
67
- * when you need to inspect or configure the task before running.
83
+ * Resolve another task by its configured name or class path from the registry.
84
+ *
85
+ * A FlowRunner supplies configured definitions on the context. Honor that
86
+ * indirection here too: task-to-task calls must use the same class_path and
87
+ * default options as an ordinary flow step or an agent tool, including
88
+ * `${ns.path}` interpolation of those defaults. `options` are this task's own
89
+ * runtime data and stay literal (see `resolveTaskCall`).
90
+ *
91
+ * Returns an unexecuted task instance — call `.run()` on it yourself when you
92
+ * need to inspect or configure the task before running.
68
93
  */
69
94
  protected resolve<T extends BaseTask = BaseTask>(taskName: string, options?: Record<string, unknown>): Promise<T>;
70
95
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"base-task.d.ts","sourceRoot":"","sources":["../../src/task/base-task.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,gEAAgE;IAChE,GAAG,CAAC,EAAE,WAAW,CAAC;IAClB,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC5C;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACjD;;;;OAIG;IACH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IACtF;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CACT,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,WAAW,KACjB,OAAO,CAAC,UAAU,CAAC,CAAC;IACzB,wEAAwE;IACxE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,aAAa,CAAC,EAAE,WAAW,CAAC;IAC5B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAED,8BAAsB,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAI1D,SAAS,CAAC,GAAG,EAAE,WAAW;IAC1B,SAAS,CAAC,OAAO,EAAE,KAAK;IAJ1B,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;gBAGb,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,KAAK;IAM1B,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC;IAEhC,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC;IAEvC,gEAAgE;IAChE,SAAS,CAAC,QAAQ,IAAI,IAAI;IAE1B;;;;OAIG;cACa,OAAO,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ,EACnD,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,OAAO,CAAC,CAAC,CAAC;IAWb;;;OAGG;cACa,IAAI,CAClB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,OAAO,CAAC,UAAU,CAAC;IAKtB;;;OAGG;IACG,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC;CA2BjC"}
1
+ {"version":3,"file":"base-task.d.ts","sourceRoot":"","sources":["../../src/task/base-task.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { noopLogger } from '../logger.js';
2
+ import { resolveTaskCall } from './task-resolution.js';
2
3
  export class BaseTask {
3
4
  ctx;
4
5
  options;
@@ -12,9 +13,16 @@ export class BaseTask {
12
13
  /** Override for option validation — called before execute(). */
13
14
  validate() { }
14
15
  /**
15
- * Resolve another task by name from the registry.
16
- * Returns an unexecuted task instance — call `.run()` on it yourself
17
- * when you need to inspect or configure the task before running.
16
+ * Resolve another task by its configured name or class path from the registry.
17
+ *
18
+ * A FlowRunner supplies configured definitions on the context. Honor that
19
+ * indirection here too: task-to-task calls must use the same class_path and
20
+ * default options as an ordinary flow step or an agent tool, including
21
+ * `${ns.path}` interpolation of those defaults. `options` are this task's own
22
+ * runtime data and stay literal (see `resolveTaskCall`).
23
+ *
24
+ * Returns an unexecuted task instance — call `.run()` on it yourself when you
25
+ * need to inspect or configure the task before running.
18
26
  */
19
27
  async resolve(taskName, options) {
20
28
  const registry = this.ctx.registry;
@@ -22,7 +30,8 @@ export class BaseTask {
22
30
  throw new Error(`Cannot resolve task "${taskName}" — no registry in context. ` +
23
31
  'Tasks can only resolve other tasks when run via FlowRunner.');
24
32
  }
25
- return registry.create(taskName, this.ctx, options ?? {});
33
+ const resolved = resolveTaskCall(taskName, this.ctx.taskDefinitions, options, this.ctx.taskReferenceContext);
34
+ return registry.create(resolved.classPath, this.ctx, resolved.options);
26
35
  }
27
36
  /**
28
37
  * Resolve and execute another task by name in a single call.
@@ -1 +1 @@
1
- {"version":3,"file":"base-task.js","sourceRoot":"","sources":["../../src/task/base-task.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AA+D1C,MAAM,OAAgB,QAAQ;IAIhB;IACA;IAJF,MAAM,CAAS;IAEzB,YACY,GAAgB,EAChB,OAAc;QADd,QAAG,GAAH,GAAG,CAAa;QAChB,YAAO,GAAP,OAAO,CAAO;QAExB,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,IAAI,UAAU,CAAC;QAC9C,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;IACpE,CAAC;IAMD,gEAAgE;IACtD,QAAQ,KAAU,CAAC;IAE7B;;;;OAIG;IACO,KAAK,CAAC,OAAO,CACrB,QAAgB,EAChB,OAAiC;QAEjC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;QACnC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CACb,wBAAwB,QAAQ,8BAA8B;gBAC5D,6DAA6D,CAChE,CAAC;QACJ,CAAC;QACD,OAAO,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,IAAI,EAAE,CAAe,CAAC;IAC1E,CAAC;IAED;;;OAGG;IACO,KAAK,CAAC,IAAI,CAClB,QAAgB,EAChB,OAAiC;QAEjC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;IACpB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,GAAG;QACP,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,kBAAkB,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEhF,IAAI,CAAC;YACH,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YACpC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAEzC,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,EACtD,mBAAmB,IAAI,CAAC,QAAQ,EAAE,CACnC,CAAC;YAEF,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YACxC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,gBAAgB,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAExE,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChE,QAAQ;aACT,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"base-task.js","sourceRoot":"","sources":["../../src/task/base-task.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAM1C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AA4EvD,MAAM,OAAgB,QAAQ;IAIhB;IACA;IAJF,MAAM,CAAS;IAEzB,YACY,GAAgB,EAChB,OAAc;QADd,QAAG,GAAH,GAAG,CAAa;QAChB,YAAO,GAAP,OAAO,CAAO;QAExB,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,IAAI,UAAU,CAAC;QAC9C,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;IACpE,CAAC;IAMD,gEAAgE;IACtD,QAAQ,KAAU,CAAC;IAE7B;;;;;;;;;;;OAWG;IACO,KAAK,CAAC,OAAO,CACrB,QAAgB,EAChB,OAAiC;QAEjC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;QACnC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CACb,wBAAwB,QAAQ,8BAA8B;gBAC5D,6DAA6D,CAChE,CAAC;QACJ,CAAC;QACD,MAAM,QAAQ,GAAG,eAAe,CAC9B,QAAQ,EACR,IAAI,CAAC,GAAG,CAAC,eAAe,EACxB,OAAO,EACP,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAC9B,CAAC;QACF,OAAO,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAe,CAAC;IACvF,CAAC;IAED;;;OAGG;IACO,KAAK,CAAC,IAAI,CAClB,QAAgB,EAChB,OAAiC;QAEjC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;IACpB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,GAAG;QACP,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,kBAAkB,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEhF,IAAI,CAAC;YACH,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YACpC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAEzC,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,EACtD,mBAAmB,IAAI,CAAC,QAAQ,EAAE,CACnC,CAAC;YAEF,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YACxC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,gBAAgB,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAExE,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChE,QAAQ;aACT,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
@@ -3,6 +3,8 @@ export interface ShellTaskOptions {
3
3
  command: string;
4
4
  cwd?: string;
5
5
  timeout?: number;
6
+ /** Cancels this individual shell invocation when aborted. */
7
+ signal?: AbortSignal;
6
8
  }
7
9
  /**
8
10
  * Task that executes a shell command.
@@ -1 +1 @@
1
- {"version":3,"file":"shell-task.d.ts","sourceRoot":"","sources":["../../src/task/shell-task.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE3D,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,SAAU,SAAQ,QAAQ,CAAC,gBAAgB,CAAC;IACvD,IAAI,QAAQ,WAEX;IAED,SAAS,CAAC,QAAQ,IAAI,IAAI;IAMpB,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC;CA8GrC"}
1
+ {"version":3,"file":"shell-task.d.ts","sourceRoot":"","sources":["../../src/task/shell-task.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAQ3D,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6DAA6D;IAC7D,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAWD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,SAAU,SAAQ,QAAQ,CAAC,gBAAgB,CAAC;IACvD,IAAI,QAAQ,WAEX;IAED,SAAS,CAAC,QAAQ,IAAI,IAAI;IASpB,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC;CA6PrC"}
@@ -1,5 +1,13 @@
1
1
  import { spawn } from 'node:child_process';
2
2
  import { BaseTask } from './base-task.js';
3
+ import { beginShellTermination, POSIX_SIGTERM_GRACE_MS, terminationGraceMs, } from './shell-termination.js';
4
+ /** Stable internal error text returned when a shell invocation is cancelled. */
5
+ const SHELL_TASK_CANCELLED_MESSAGE = 'Shell command cancelled';
6
+ function isAbortSignal(value) {
7
+ // A structural check can admit a lookalike whose addEventListener throws
8
+ // after spawn, recreating the detached-child leak this validation prevents.
9
+ return value instanceof AbortSignal;
10
+ }
3
11
  /**
4
12
  * Task that executes a shell command.
5
13
  *
@@ -30,9 +38,21 @@ export class ShellTask extends BaseTask {
30
38
  if (!this.options.command || typeof this.options.command !== 'string') {
31
39
  throw new Error('ShellTask requires a "command" option');
32
40
  }
41
+ if (this.options.signal !== undefined && !isAbortSignal(this.options.signal)) {
42
+ throw new Error('ShellTask "signal" must be an AbortSignal');
43
+ }
33
44
  }
34
45
  async execute() {
35
- const { command, cwd, timeout = 300_000 } = this.options;
46
+ const { command, cwd, timeout = 300_000, signal } = this.options;
47
+ // Do this before creating the Promise (and, importantly, before spawn) so
48
+ // an already-cancelled run cannot launch a process at all.
49
+ if (signal?.aborted) {
50
+ return {
51
+ success: false,
52
+ error: new Error(SHELL_TASK_CANCELLED_MESSAGE),
53
+ data: { exitCode: null, signal: null, stderr: '', stdout: '' },
54
+ };
55
+ }
36
56
  return new Promise((resolve) => {
37
57
  // Cross-platform: route through the platform shell so command strings
38
58
  // like "npm run build" or "echo $HOME && ls" work the same way they
@@ -41,12 +61,36 @@ export class ShellTask extends BaseTask {
41
61
  cwd,
42
62
  shell: true,
43
63
  stdio: ['ignore', 'pipe', 'pipe'],
64
+ // A signal-bearing POSIX invocation gets its own process group so its
65
+ // shell and ordinary descendants can be terminated together. Keep the
66
+ // legacy spawn behavior unchanged when no signal was supplied.
67
+ ...(signal && process.platform !== 'win32' ? { detached: true } : {}),
44
68
  });
45
69
  let stdoutBuf = '';
46
70
  let stderrBuf = '';
47
71
  let stdoutTail = '';
48
72
  let stderrTail = '';
49
- let timedOut = false;
73
+ let terminalCause = 'running';
74
+ let settled = false;
75
+ let abortListenerRegistered = false;
76
+ let timeoutTimer;
77
+ let terminationTimer;
78
+ let escalationTimer;
79
+ let terminator;
80
+ let terminationEscalated = false;
81
+ let pendingTerminalClose;
82
+ const onStdoutData = (chunk) => {
83
+ stdoutBuf += chunk;
84
+ emitLines(chunk, 'stdout', (line) => {
85
+ this.logger.info({ stream: 'stdout' }, line);
86
+ });
87
+ };
88
+ const onStderrData = (chunk) => {
89
+ stderrBuf += chunk;
90
+ emitLines(chunk, 'stderr', (line) => {
91
+ this.logger.warn({ stream: 'stderr' }, line);
92
+ });
93
+ };
50
94
  const emitLines = (chunk, tailRef, emit) => {
51
95
  // Maintain a small tail buffer so we never emit a partial line.
52
96
  // Each newline we see flushes everything before it as one line;
@@ -65,65 +109,167 @@ export class ShellTask extends BaseTask {
65
109
  };
66
110
  child.stdout?.setEncoding('utf-8');
67
111
  child.stderr?.setEncoding('utf-8');
68
- child.stdout?.on('data', (chunk) => {
69
- stdoutBuf += chunk;
70
- emitLines(chunk, 'stdout', (line) => {
71
- this.logger.info({ stream: 'stdout' }, line);
72
- });
73
- });
74
- child.stderr?.on('data', (chunk) => {
75
- stderrBuf += chunk;
76
- emitLines(chunk, 'stderr', (line) => {
77
- this.logger.warn({ stream: 'stderr' }, line);
78
- });
79
- });
80
- const timer = setTimeout(() => {
81
- timedOut = true;
82
- // SIGKILL on Windows is mapped to TerminateProcess by libuv.
83
- child.kill('SIGKILL');
84
- }, timeout);
112
+ child.stdout?.on('data', onStdoutData);
113
+ child.stderr?.on('data', onStderrData);
85
114
  const flushTails = () => {
86
115
  if (stdoutTail.length > 0) {
87
116
  this.logger.info({ stream: 'stdout' }, stdoutTail);
88
- stdoutBuf += stdoutTail;
89
117
  stdoutTail = '';
90
118
  }
91
119
  if (stderrTail.length > 0) {
92
120
  this.logger.warn({ stream: 'stderr' }, stderrTail);
93
- stderrBuf += stderrTail;
94
121
  stderrTail = '';
95
122
  }
96
123
  };
97
- child.on('error', (err) => {
98
- clearTimeout(timer);
124
+ const removeAbortListener = () => {
125
+ if (!abortListenerRegistered)
126
+ return;
127
+ abortListenerRegistered = false;
128
+ signal?.removeEventListener('abort', onAbort);
129
+ };
130
+ const cleanup = () => {
131
+ if (timeoutTimer)
132
+ clearTimeout(timeoutTimer);
133
+ if (terminationTimer)
134
+ clearTimeout(terminationTimer);
135
+ if (escalationTimer)
136
+ clearTimeout(escalationTimer);
137
+ removeAbortListener();
138
+ // A bounded fallback may settle before a misbehaving child closes.
139
+ // Stop capturing output then, while retaining the child error handler
140
+ // until Node finishes closing it.
141
+ child.stdout?.removeListener('data', onStdoutData);
142
+ child.stderr?.removeListener('data', onStderrData);
143
+ terminator?.dispose();
144
+ };
145
+ const resultData = (exitCode, exitSignal, includeSignal = true) => {
99
146
  flushTails();
100
- resolve({
147
+ return {
148
+ exitCode,
149
+ ...(includeSignal ? { signal: exitSignal } : {}),
150
+ stderr: stderrBuf.trimEnd(),
151
+ stdout: stdoutBuf.trimEnd(),
152
+ };
153
+ };
154
+ const settle = (result) => {
155
+ if (settled)
156
+ return;
157
+ settled = true;
158
+ cleanup();
159
+ resolve(result);
160
+ };
161
+ const settleTerminal = (exitCode, exitSignal) => {
162
+ const data = resultData(exitCode, exitSignal);
163
+ settle({
164
+ success: false,
165
+ error: new Error(terminalCause === 'cancelled'
166
+ ? SHELL_TASK_CANCELLED_MESSAGE
167
+ : `Shell command timed out after ${timeout}ms`),
168
+ data,
169
+ });
170
+ };
171
+ const requestTermination = (cause) => {
172
+ if (settled || terminalCause !== 'running')
173
+ return;
174
+ terminalCause = cause;
175
+ if (timeoutTimer)
176
+ clearTimeout(timeoutTimer);
177
+ removeAbortListener();
178
+ // Preserve the legacy no-signal timeout path exactly: kill the shell
179
+ // and wait for close. The bounded cancellation contract applies only
180
+ // when a caller supplied an AbortSignal.
181
+ if (cause === 'timedOut' && !signal) {
182
+ try {
183
+ child.kill('SIGKILL');
184
+ }
185
+ catch {
186
+ // The existing error/close handlers retain responsibility for the
187
+ // final task result.
188
+ }
189
+ return;
190
+ }
191
+ try {
192
+ terminator = beginShellTermination(child);
193
+ terminator.onTreeKillComplete(() => {
194
+ if (!pendingTerminalClose || settled || terminalCause === 'running')
195
+ return;
196
+ const pending = pendingTerminalClose;
197
+ pendingTerminalClose = undefined;
198
+ settleTerminal(pending.exitCode, pending.exitSignal);
199
+ });
200
+ if (terminator.platform !== 'win32') {
201
+ escalationTimer = setTimeout(() => {
202
+ terminationEscalated = true;
203
+ terminator?.escalate();
204
+ if (pendingTerminalClose) {
205
+ const pending = pendingTerminalClose;
206
+ pendingTerminalClose = undefined;
207
+ settleTerminal(pending.exitCode, pending.exitSignal);
208
+ }
209
+ }, POSIX_SIGTERM_GRACE_MS);
210
+ }
211
+ terminationTimer = setTimeout(() => {
212
+ terminator?.release();
213
+ settleTerminal(null, null);
214
+ }, terminationGraceMs(terminator.platform));
215
+ }
216
+ catch {
217
+ // `close` or the bounded fallback below will settle the terminal
218
+ // result; a kill race must not escape as an unhandled exception.
219
+ }
220
+ };
221
+ const onAbort = () => requestTermination('cancelled');
222
+ timeoutTimer = setTimeout(() => requestTermination('timedOut'), timeout);
223
+ signal?.addEventListener('abort', onAbort, { once: true });
224
+ abortListenerRegistered = Boolean(signal);
225
+ child.on('error', (err) => {
226
+ if (terminalCause !== 'running') {
227
+ // Preserve the legacy no-signal timeout result if the kill itself
228
+ // errors and no `close` follows. Without this, a timeout could leave
229
+ // the task pending indefinitely; the original error and data shape
230
+ // remain intact for compatibility.
231
+ if (terminalCause === 'timedOut' && !signal) {
232
+ settle({
233
+ success: false,
234
+ error: err instanceof Error ? err : new Error(String(err)),
235
+ data: resultData(null, null, false),
236
+ });
237
+ }
238
+ return;
239
+ }
240
+ settle({
101
241
  success: false,
102
242
  error: err instanceof Error ? err : new Error(String(err)),
103
- data: { exitCode: null, stderr: stderrBuf.trimEnd(), stdout: stdoutBuf.trimEnd() },
243
+ data: resultData(null, null, Boolean(signal)),
104
244
  });
105
245
  });
106
- child.on('close', (code, signal) => {
107
- clearTimeout(timer);
108
- flushTails();
109
- const trimmedOut = stdoutBuf.trimEnd();
110
- const trimmedErr = stderrBuf.trimEnd();
111
- if (timedOut) {
112
- resolve({
113
- success: false,
114
- error: new Error(`Shell command timed out after ${timeout}ms`),
115
- data: { exitCode: code, signal, stderr: trimmedErr, stdout: trimmedOut },
116
- });
246
+ child.on('close', (code, exitSignal) => {
247
+ if (settled)
248
+ return;
249
+ if (terminalCause !== 'running') {
250
+ const waitsForPosixEscalation = terminator !== undefined &&
251
+ terminator.platform !== 'win32' &&
252
+ !terminationEscalated;
253
+ const waitsForWindowsTree = terminator?.platform === 'win32' && !terminator.isTreeKillComplete();
254
+ if (waitsForPosixEscalation || waitsForWindowsTree) {
255
+ // A root shell may close before its descendants are finished.
256
+ // Keep the POSIX escalation or Windows taskkill operation owned
257
+ // until it finishes or reaches the bounded terminal deadline.
258
+ pendingTerminalClose = { exitCode: code, exitSignal };
259
+ return;
260
+ }
261
+ settleTerminal(code, exitSignal);
117
262
  return;
118
263
  }
264
+ const data = resultData(code, exitSignal);
119
265
  if (code === 0) {
120
- resolve({ success: true, data: { output: trimmedOut } });
266
+ settle({ success: true, data: { output: data.stdout } });
121
267
  return;
122
268
  }
123
- resolve({
269
+ settle({
124
270
  success: false,
125
- error: new Error(`Shell command failed (exit ${code}): ${(trimmedErr || trimmedOut).trimEnd()}`),
126
- data: { exitCode: code, signal, stderr: trimmedErr, stdout: trimmedOut },
271
+ error: new Error(`Shell command failed (exit ${code}): ${(data.stderr || data.stdout).trimEnd()}`),
272
+ data,
127
273
  });
128
274
  });
129
275
  });
@@ -1 +1 @@
1
- {"version":3,"file":"shell-task.js","sourceRoot":"","sources":["../../src/task/shell-task.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shell-task.js","sourceRoot":"","sources":["../../src/task/shell-task.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import { type ChildProcess, type SpawnOptions } from 'node:child_process';
2
+ export declare const POSIX_SIGTERM_GRACE_MS = 250;
3
+ export declare const POSIX_TERMINATION_GRACE_MS = 1000;
4
+ export declare const WINDOWS_TERMINATION_GRACE_MS = 3000;
5
+ type SpawnProcess = (command: string, args: readonly string[], options: SpawnOptions) => ChildProcess;
6
+ export interface ShellTerminationDependencies {
7
+ platform?: NodeJS.Platform;
8
+ spawnProcess?: SpawnProcess;
9
+ killProcessGroup?: (pid: number, signal: NodeJS.Signals) => void;
10
+ }
11
+ export interface ShellTerminationHandle {
12
+ readonly platform: NodeJS.Platform;
13
+ /** Whether the Windows tree helper has finished or failed. */
14
+ isTreeKillComplete(): boolean;
15
+ /** Notify ShellTask when it is safe to combine tree and root completion. */
16
+ onTreeKillComplete(listener: () => void): void;
17
+ /** Escalate a cooperative POSIX stop, or force the Windows root/helper. */
18
+ escalate(): void;
19
+ /** Release handles after the bounded terminal deadline. */
20
+ release(): void;
21
+ /** Stop helper ownership after the shell has closed normally. */
22
+ dispose(): void;
23
+ }
24
+ export declare function terminationGraceMs(platform: NodeJS.Platform): number;
25
+ /**
26
+ * Start termination for one shell invocation.
27
+ *
28
+ * This module is deliberately internal. Passing the platform and process
29
+ * functions as dependencies makes the policy testable on every CI platform
30
+ * without changing ShellTask's public API or relying on global mutable state.
31
+ */
32
+ export declare function beginShellTermination(child: ChildProcess, dependencies?: ShellTerminationDependencies): ShellTerminationHandle;
33
+ export {};
34
+ //# sourceMappingURL=shell-termination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell-termination.d.ts","sourceRoot":"","sources":["../../src/task/shell-termination.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEjF,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAC1C,eAAO,MAAM,0BAA0B,OAAQ,CAAC;AAChD,eAAO,MAAM,4BAA4B,OAAQ,CAAC;AAElD,KAAK,YAAY,GAAG,CAClB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,EAAE,YAAY,KAClB,YAAY,CAAC;AAElB,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC;CAClE;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IACnC,8DAA8D;IAC9D,kBAAkB,IAAI,OAAO,CAAC;IAC9B,4EAA4E;IAC5E,kBAAkB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IAC/C,2EAA2E;IAC3E,QAAQ,IAAI,IAAI,CAAC;IACjB,2DAA2D;IAC3D,OAAO,IAAI,IAAI,CAAC;IAChB,iEAAiE;IACjE,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,GAAG,MAAM,CAEpE;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,YAAY,EACnB,YAAY,GAAE,4BAAiC,GAC9C,sBAAsB,CAyJxB"}