@mindfoldhq/trellis 0.6.0-beta.17 → 0.6.0-beta.18

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 (70) hide show
  1. package/README.md +1 -1
  2. package/dist/commands/channel/adapters/claude.d.ts +7 -16
  3. package/dist/commands/channel/adapters/claude.d.ts.map +1 -1
  4. package/dist/commands/channel/adapters/claude.js +19 -25
  5. package/dist/commands/channel/adapters/claude.js.map +1 -1
  6. package/dist/commands/channel/adapters/codex.d.ts +5 -1
  7. package/dist/commands/channel/adapters/codex.d.ts.map +1 -1
  8. package/dist/commands/channel/adapters/codex.js +8 -15
  9. package/dist/commands/channel/adapters/codex.js.map +1 -1
  10. package/dist/commands/channel/adapters/index.d.ts +6 -1
  11. package/dist/commands/channel/adapters/index.d.ts.map +1 -1
  12. package/dist/commands/channel/adapters/index.js +12 -6
  13. package/dist/commands/channel/adapters/index.js.map +1 -1
  14. package/dist/commands/channel/guard.d.ts +150 -0
  15. package/dist/commands/channel/guard.d.ts.map +1 -0
  16. package/dist/commands/channel/guard.js +474 -0
  17. package/dist/commands/channel/guard.js.map +1 -0
  18. package/dist/commands/channel/index.d.ts +1 -1
  19. package/dist/commands/channel/index.d.ts.map +1 -1
  20. package/dist/commands/channel/index.js +38 -10
  21. package/dist/commands/channel/index.js.map +1 -1
  22. package/dist/commands/channel/interrupt.d.ts +10 -0
  23. package/dist/commands/channel/interrupt.d.ts.map +1 -0
  24. package/dist/commands/channel/interrupt.js +22 -0
  25. package/dist/commands/channel/interrupt.js.map +1 -0
  26. package/dist/commands/channel/messages.d.ts +0 -1
  27. package/dist/commands/channel/messages.d.ts.map +1 -1
  28. package/dist/commands/channel/messages.js +2 -6
  29. package/dist/commands/channel/messages.js.map +1 -1
  30. package/dist/commands/channel/run.d.ts +0 -1
  31. package/dist/commands/channel/run.d.ts.map +1 -1
  32. package/dist/commands/channel/run.js +5 -12
  33. package/dist/commands/channel/run.js.map +1 -1
  34. package/dist/commands/channel/send.d.ts +0 -2
  35. package/dist/commands/channel/send.d.ts.map +1 -1
  36. package/dist/commands/channel/send.js +0 -2
  37. package/dist/commands/channel/send.js.map +1 -1
  38. package/dist/commands/channel/spawn.d.ts +10 -0
  39. package/dist/commands/channel/spawn.d.ts.map +1 -1
  40. package/dist/commands/channel/spawn.js +57 -7
  41. package/dist/commands/channel/spawn.js.map +1 -1
  42. package/dist/commands/channel/supervisor/idle.d.ts +46 -0
  43. package/dist/commands/channel/supervisor/idle.d.ts.map +1 -0
  44. package/dist/commands/channel/supervisor/idle.js +72 -0
  45. package/dist/commands/channel/supervisor/idle.js.map +1 -0
  46. package/dist/commands/channel/supervisor/inbox.d.ts +4 -4
  47. package/dist/commands/channel/supervisor/inbox.d.ts.map +1 -1
  48. package/dist/commands/channel/supervisor/inbox.js +22 -22
  49. package/dist/commands/channel/supervisor/inbox.js.map +1 -1
  50. package/dist/commands/channel/supervisor/shutdown.d.ts +3 -1
  51. package/dist/commands/channel/supervisor/shutdown.d.ts.map +1 -1
  52. package/dist/commands/channel/supervisor/shutdown.js +4 -1
  53. package/dist/commands/channel/supervisor/shutdown.js.map +1 -1
  54. package/dist/commands/channel/supervisor/turns.d.ts +11 -0
  55. package/dist/commands/channel/supervisor/turns.d.ts.map +1 -1
  56. package/dist/commands/channel/supervisor/turns.js +19 -2
  57. package/dist/commands/channel/supervisor/turns.js.map +1 -1
  58. package/dist/commands/channel/supervisor.d.ts +6 -0
  59. package/dist/commands/channel/supervisor.d.ts.map +1 -1
  60. package/dist/commands/channel/supervisor.js +43 -3
  61. package/dist/commands/channel/supervisor.js.map +1 -1
  62. package/dist/commands/channel/wait.d.ts +0 -1
  63. package/dist/commands/channel/wait.d.ts.map +1 -1
  64. package/dist/commands/channel/wait.js +0 -1
  65. package/dist/commands/channel/wait.js.map +1 -1
  66. package/dist/migrations/manifests/0.5.16.json +9 -0
  67. package/dist/migrations/manifests/0.6.0-beta.18.json +16 -0
  68. package/dist/templates/trellis/config.yaml +20 -0
  69. package/dist/templates/trellis/scripts/common/task_store.py +24 -7
  70. package/package.json +2 -2
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Supervisor-side idle-timeout timer.
3
+ *
4
+ * Complements the spawn-time guard: each running worker self-terminates
5
+ * after its own idle TTL so a long-lived supervisor can't keep an
6
+ * otherwise-idle worker alive indefinitely.
7
+ *
8
+ * Behavior:
9
+ * - Start an idle timer right after `spawned`.
10
+ * - Reset / restart on `turn_finished` and `interrupted` (worker
11
+ * transitioned back to idle).
12
+ * - Pause on `turn_started` (worker is mid-turn; never kill mid-turn).
13
+ * - On idle timeout, call `shutdown.request("SIGTERM", "idle-timeout")`.
14
+ *
15
+ * Lives outside `createShutdown` so the shutdown funnel only owns the
16
+ * kill ladder + `killed` append. Cancellation is via the returned
17
+ * handle (used on supervisor teardown).
18
+ */
19
+ /**
20
+ * Schedule a self-resetting idle timer. `idleTimeoutMs <= 0` short-
21
+ * circuits to a no-op handle (idle cleanup disabled).
22
+ */
23
+ export function scheduleSupervisorIdleTimer(args) {
24
+ const { idleTimeoutMs, shutdown, isChildExited, log } = args;
25
+ if (idleTimeoutMs <= 0) {
26
+ return {
27
+ reset: () => undefined,
28
+ pause: () => undefined,
29
+ cancel: () => undefined,
30
+ };
31
+ }
32
+ let timer;
33
+ let cancelled = false;
34
+ const clear = () => {
35
+ if (timer) {
36
+ clearTimeout(timer);
37
+ timer = undefined;
38
+ }
39
+ };
40
+ const fire = () => {
41
+ timer = undefined;
42
+ if (cancelled)
43
+ return;
44
+ if (shutdown.isShuttingDown() ||
45
+ shutdown.hasTerminalEvent() ||
46
+ isChildExited()) {
47
+ return;
48
+ }
49
+ log.write(`[supervisor] idle timeout ${idleTimeoutMs}ms reached, requesting shutdown\n`);
50
+ void shutdown.request("SIGTERM", "idle-timeout");
51
+ };
52
+ const start = () => {
53
+ if (cancelled)
54
+ return;
55
+ clear();
56
+ timer = setTimeout(fire, idleTimeoutMs);
57
+ // Don't keep the supervisor alive solely for the idle timer; if
58
+ // every other handle has gone away the worker has nothing to do.
59
+ timer.unref?.();
60
+ };
61
+ // Initial schedule: worker just spawned, currently idle.
62
+ start();
63
+ return {
64
+ reset: start,
65
+ pause: clear,
66
+ cancel: () => {
67
+ cancelled = true;
68
+ clear();
69
+ },
70
+ };
71
+ }
72
+ //# sourceMappingURL=idle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idle.js","sourceRoot":"","sources":["../../../../src/commands/channel/supervisor/idle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AA0BH;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CACzC,IAA2B;IAE3B,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAC7D,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;QACvB,OAAO;YACL,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS;YACtB,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS;YACtB,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS;SACxB,CAAC;IACJ,CAAC;IAED,IAAI,KAAgD,CAAC;IACrD,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,MAAM,KAAK,GAAG,GAAS,EAAE;QACvB,IAAI,KAAK,EAAE,CAAC;YACV,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,KAAK,GAAG,SAAS,CAAC;QACpB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,GAAS,EAAE;QACtB,KAAK,GAAG,SAAS,CAAC;QAClB,IAAI,SAAS;YAAE,OAAO;QACtB,IACE,QAAQ,CAAC,cAAc,EAAE;YACzB,QAAQ,CAAC,gBAAgB,EAAE;YAC3B,aAAa,EAAE,EACf,CAAC;YACD,OAAO;QACT,CAAC;QACD,GAAG,CAAC,KAAK,CACP,6BAA6B,aAAa,mCAAmC,CAC9E,CAAC;QACF,KAAK,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IACnD,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,GAAS,EAAE;QACvB,IAAI,SAAS;YAAE,OAAO;QACtB,KAAK,EAAE,CAAC;QACR,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QACxC,gEAAgE;QAChE,iEAAiE;QACjE,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;IAClB,CAAC,CAAC;IAEF,yDAAyD;IACzD,KAAK,EAAE,CAAC;IAER,OAAO;QACL,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,KAAK;QACZ,MAAM,EAAE,GAAG,EAAE;YACX,SAAS,GAAG,IAAI,CAAC;YACjB,KAAK,EAAE,CAAC;QACV,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,8 +1,8 @@
1
1
  /**
2
- * Inbox watcher: tails events.jsonl for `kind:message` events addressed
3
- * to this worker and forwards them into the worker's stdin via the
4
- * adapter's `encodeUserMessage`. A persisted cursor file keeps respawns
5
- * from replaying messages the previous supervisor already delivered.
2
+ * Inbox watcher: tails events.jsonl for worker-addressed messages and
3
+ * interrupt requests, then forwards accepted input into the worker's stdin.
4
+ * A persisted cursor file keeps respawns from replaying events the previous
5
+ * supervisor already delivered.
6
6
  *
7
7
  * Step 3 of the supervisor refactor: pulled out of supervisor.ts so the
8
8
  * orchestrator only needs to call `runInboxWatcher(...)`. Cursor
@@ -1 +1 @@
1
- {"version":3,"file":"inbox.d.ts","sourceRoot":"","sources":["../../../../src/commands/channel/supervisor/inbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEtD,OAAO,EAGL,KAAK,WAAW,EACjB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAI1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,KAAK,KAAK,GAAG,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAE/D,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,aAAa,CAAC;IACvB,GAAG,EAAE,OAAO,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,WAAW,CAAC;IACpB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmH3E"}
1
+ {"version":3,"file":"inbox.d.ts","sourceRoot":"","sources":["../../../../src/commands/channel/supervisor/inbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEtD,OAAO,EAGL,KAAK,WAAW,EACjB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAI1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,KAAK,KAAK,GAAG,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAE/D,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,aAAa,CAAC;IACvB,GAAG,EAAE,OAAO,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,WAAW,CAAC;IACpB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoH3E"}
@@ -1,8 +1,8 @@
1
1
  /**
2
- * Inbox watcher: tails events.jsonl for `kind:message` events addressed
3
- * to this worker and forwards them into the worker's stdin via the
4
- * adapter's `encodeUserMessage`. A persisted cursor file keeps respawns
5
- * from replaying messages the previous supervisor already delivered.
2
+ * Inbox watcher: tails events.jsonl for worker-addressed messages and
3
+ * interrupt requests, then forwards accepted input into the worker's stdin.
4
+ * A persisted cursor file keeps respawns from replaying events the previous
5
+ * supervisor already delivered.
6
6
  *
7
7
  * Step 3 of the supervisor refactor: pulled out of supervisor.ts so the
8
8
  * orchestrator only needs to call `runInboxWatcher(...)`. Cursor
@@ -21,8 +21,7 @@ export async function runInboxWatcher(args) {
21
21
  let cursor = readInboxCursor(channelName, workerName);
22
22
  for await (const ev of watchEvents(channelName, {
23
23
  self: workerName, // ignore our own events
24
- to: workerName, // explicit-to-other is filtered here; broadcasts pass
25
- kind: "message",
24
+ kind: ["message", "interrupt_requested"],
26
25
  },
27
26
  // First run with cursor=0 reads backlog from start; subsequent runs
28
27
  // use sinceSeq to skip already-processed events. Both cases tail
@@ -30,15 +29,21 @@ export async function runInboxWatcher(args) {
30
29
  { signal, sinceSeq: cursor, fromStart: cursor === 0 ? true : undefined })) {
31
30
  if (signal.aborted)
32
31
  return;
33
- // Core decides delivery from the worker's inbox policy: explicitOnly
34
- // (default) consumes only targeted messages; broadcastAndExplicit
35
- // also consumes broadcasts.
36
- if (!matchesInboxPolicy(ev, workerName, inboxPolicy))
32
+ if (ev.kind === "message") {
33
+ // Core decides delivery from the worker's inbox policy: explicitOnly
34
+ // (default) consumes only targeted messages; broadcastAndExplicit
35
+ // also consumes broadcasts.
36
+ if (!matchesInboxPolicy(ev, workerName, inboxPolicy))
37
+ continue;
38
+ }
39
+ else if (ev.worker !== workerName) {
37
40
  continue;
41
+ }
38
42
  const text = (ev.text ?? "").trim();
39
- if (!text)
43
+ const interruptText = (ev.message ?? "").trim();
44
+ const isInterrupt = ev.kind === "interrupt_requested";
45
+ if (!text && (!isInterrupt || !interruptText))
40
46
  continue;
41
- const tag = ev.tag;
42
47
  // Block until the adapter says it can accept input (e.g. codex
43
48
  // thread/start has produced a threadId). Drop the message if we
44
49
  // never get ready before being aborted.
@@ -57,19 +62,12 @@ export async function runInboxWatcher(args) {
57
62
  continue;
58
63
  }
59
64
  }
60
- if (tag !== "interrupt") {
65
+ if (!isInterrupt) {
61
66
  await waitForActiveTurnToFinish(args.turnTracker, signal);
62
67
  if (signal.aborted)
63
68
  return;
64
69
  }
65
- if (tag === "interrupt") {
66
- await appendEvent(channelName, {
67
- kind: "interrupt_requested",
68
- by: ev.by,
69
- worker: workerName,
70
- reason: "user",
71
- message: text,
72
- });
70
+ if (isInterrupt) {
73
71
  const aborted = args.turnTracker?.abortCurrent();
74
72
  if (aborted) {
75
73
  await appendEvent(channelName, {
@@ -102,7 +100,9 @@ export async function runInboxWatcher(args) {
102
100
  turnId: turn.turnId,
103
101
  });
104
102
  }
105
- child.stdin.write(adapter.encodeUserMessage(text, tag, ctx));
103
+ child.stdin.write(isInterrupt
104
+ ? adapter.encodeInterruptMessage(interruptText, ctx)
105
+ : adapter.encodeUserMessage(text, ctx));
106
106
  cursor = ev.seq;
107
107
  writeInboxCursor(channelName, workerName, cursor);
108
108
  }
@@ -1 +1 @@
1
- {"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../../../src/commands/channel/supervisor/inbox.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../../../src/commands/channel/supervisor/inbox.ts"],"names":[],"mappings":"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"}
@@ -22,7 +22,7 @@
22
22
  import type { ChildProcessByStdio } from "node:child_process";
23
23
  import type { Readable, Writable } from "node:stream";
24
24
  type Child = ChildProcessByStdio<Writable, Readable, Readable>;
25
- export type ShutdownReason = "explicit-kill" | "timeout" | "crash";
25
+ export type ShutdownReason = "explicit-kill" | "timeout" | "crash" | "idle-timeout";
26
26
  export interface ShutdownController {
27
27
  /** Idempotent: only the first call wins. Returns the killed-append
28
28
  * promise so callers can await ordering if they need to. */
@@ -60,6 +60,8 @@ export interface CreateShutdownArgs {
60
60
  graceMs: number;
61
61
  /** Recorded on the `killed` event for the timeout reason. */
62
62
  timeoutMs?: number;
63
+ /** Recorded on the `killed` event when reason is `"idle-timeout"`. */
64
+ idleTimeoutMs?: number;
63
65
  }
64
66
  export declare function createShutdown(args: CreateShutdownArgs): ShutdownController;
65
67
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"shutdown.d.ts","sourceRoot":"","sources":["../../../../src/commands/channel/supervisor/shutdown.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAItD,KAAK,KAAK,GAAG,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAE/D,MAAM,MAAM,cAAc,GAAG,eAAe,GAAG,SAAS,GAAG,OAAO,CAAC;AAEnE,MAAM,WAAW,kBAAkB;IACjC;iEAC6D;IAC7D,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvE;;;;;4EAKwE;IACxE,KAAK,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC;IACvC,cAAc,IAAI,OAAO,CAAC;IAC1B,MAAM,IAAI,cAAc,GAAG,IAAI,CAAC;IAEhC;wDACoD;IACpD,mBAAmB,IAAI,IAAI,CAAC;IAC5B,gBAAgB,IAAI,OAAO,CAAC;IAE5B;;qEAEiE;IACjE,cAAc,CACZ,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,GAC5B,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;2EACuE;IACvE,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE;QAAE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,CAAC;IACvC;iEAC6D;IAC7D,QAAQ,EAAE,MAAM,KAAK,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,kBAAkB,GAAG,kBAAkB,CAuI3E"}
1
+ {"version":3,"file":"shutdown.d.ts","sourceRoot":"","sources":["../../../../src/commands/channel/supervisor/shutdown.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAItD,KAAK,KAAK,GAAG,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAE/D,MAAM,MAAM,cAAc,GACtB,eAAe,GACf,SAAS,GACT,OAAO,GACP,cAAc,CAAC;AAEnB,MAAM,WAAW,kBAAkB;IACjC;iEAC6D;IAC7D,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvE;;;;;4EAKwE;IACxE,KAAK,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC;IACvC,cAAc,IAAI,OAAO,CAAC;IAC1B,MAAM,IAAI,cAAc,GAAG,IAAI,CAAC;IAEhC;wDACoD;IACpD,mBAAmB,IAAI,IAAI,CAAC;IAC5B,gBAAgB,IAAI,OAAO,CAAC;IAE5B;;qEAEiE;IACjE,cAAc,CACZ,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,GAC5B,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;2EACuE;IACvE,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE;QAAE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,CAAC;IACvC;iEAC6D;IAC7D,QAAQ,EAAE,MAAM,KAAK,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sEAAsE;IACtE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,kBAAkB,GAAG,kBAAkB,CAkJ3E"}
@@ -21,7 +21,7 @@
21
21
  */
22
22
  import { appendEvent } from "../store/events.js";
23
23
  export function createShutdown(args) {
24
- const { channelName, workerName, log, getChild, graceMs, timeoutMs } = args;
24
+ const { channelName, workerName, log, getChild, graceMs, timeoutMs, idleTimeoutMs, } = args;
25
25
  let shutdownReason = null;
26
26
  let requestSignal = null;
27
27
  let terminalEmitted = false;
@@ -64,6 +64,9 @@ export function createShutdown(args) {
64
64
  reason,
65
65
  signal,
66
66
  ...(reason === "timeout" && timeoutMs ? { timeout_ms: timeoutMs } : {}),
67
+ ...(reason === "idle-timeout" && idleTimeoutMs
68
+ ? { idle_timeout_ms: idleTimeoutMs }
69
+ : {}),
67
70
  });
68
71
  };
69
72
  const claim = (reason) => {
@@ -1 +1 @@
1
- {"version":3,"file":"shutdown.js","sourceRoot":"","sources":["../../../../src/commands/channel/supervisor/shutdown.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shutdown.js","sourceRoot":"","sources":["../../../../src/commands/channel/supervisor/shutdown.ts"],"names":[],"mappings":"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"}
@@ -3,15 +3,26 @@ export interface ActiveTurn {
3
3
  turnId: string;
4
4
  }
5
5
  export type TurnOutcome = "done" | "error" | "aborted";
6
+ export interface TurnTrackerHooks {
7
+ /** Called when the tracker transitions from idle to mid-turn. */
8
+ onIdleExit?: () => void;
9
+ /** Called when the tracker transitions back to idle. */
10
+ onIdleEnter?: () => void;
11
+ }
6
12
  /**
7
13
  * Host-local turn tracker for one supervisor process.
8
14
  *
9
15
  * The durable SOT is events.jsonl. This object only remembers the input
10
16
  * message seq long enough for the inbox watcher and stdout pump to emit
11
17
  * matching `turn_started` / `turn_finished` events.
18
+ *
19
+ * Optional hooks fire on the idle ↔ mid-turn transition so the
20
+ * supervisor idle-timer (OOM guard) can pause / reset without each
21
+ * inbox or stdout call site having to know about it.
12
22
  */
13
23
  export declare class TurnTracker {
14
24
  #private;
25
+ constructor(hooks?: TurnTrackerHooks);
15
26
  begin(inputSeq: number): ActiveTurn;
16
27
  finish(): ActiveTurn | undefined;
17
28
  abortCurrent(): ActiveTurn | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"turns.d.ts","sourceRoot":"","sources":["../../../../src/commands/channel/supervisor/turns.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;AAEvD;;;;;;GAMG;AACH,qBAAa,WAAW;;IAGtB,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU;IASnC,MAAM,IAAI,UAAU,GAAG,SAAS;IAIhC,YAAY,IAAI,UAAU,GAAG,SAAS;IAItC,OAAO,IAAI,UAAU,GAAG,SAAS;CAGlC"}
1
+ {"version":3,"file":"turns.d.ts","sourceRoot":"","sources":["../../../../src/commands/channel/supervisor/turns.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;AAEvD,MAAM,WAAW,gBAAgB;IAC/B,iEAAiE;IACjE,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED;;;;;;;;;;GAUG;AACH,qBAAa,WAAW;;gBAIV,KAAK,GAAE,gBAAqB;IAIxC,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU;IAWnC,MAAM,IAAI,UAAU,GAAG,SAAS;IAMhC,YAAY,IAAI,UAAU,GAAG,SAAS;IAMtC,OAAO,IAAI,UAAU,GAAG,SAAS;CAGlC"}
@@ -4,22 +4,39 @@
4
4
  * The durable SOT is events.jsonl. This object only remembers the input
5
5
  * message seq long enough for the inbox watcher and stdout pump to emit
6
6
  * matching `turn_started` / `turn_finished` events.
7
+ *
8
+ * Optional hooks fire on the idle ↔ mid-turn transition so the
9
+ * supervisor idle-timer (OOM guard) can pause / reset without each
10
+ * inbox or stdout call site having to know about it.
7
11
  */
8
12
  export class TurnTracker {
9
13
  #turns = [];
14
+ #hooks;
15
+ constructor(hooks = {}) {
16
+ this.#hooks = hooks;
17
+ }
10
18
  begin(inputSeq) {
19
+ const wasIdle = this.#turns.length === 0;
11
20
  const turn = {
12
21
  inputSeq,
13
22
  turnId: `msg:${inputSeq}`,
14
23
  };
15
24
  this.#turns.push(turn);
25
+ if (wasIdle)
26
+ this.#hooks.onIdleExit?.();
16
27
  return turn;
17
28
  }
18
29
  finish() {
19
- return this.#turns.pop();
30
+ const turn = this.#turns.pop();
31
+ if (turn && this.#turns.length === 0)
32
+ this.#hooks.onIdleEnter?.();
33
+ return turn;
20
34
  }
21
35
  abortCurrent() {
22
- return this.#turns.pop();
36
+ const turn = this.#turns.pop();
37
+ if (turn && this.#turns.length === 0)
38
+ this.#hooks.onIdleEnter?.();
39
+ return turn;
23
40
  }
24
41
  current() {
25
42
  return this.#turns.at(-1);
@@ -1 +1 @@
1
- {"version":3,"file":"turns.js","sourceRoot":"","sources":["../../../../src/commands/channel/supervisor/turns.ts"],"names":[],"mappings":"AAOA;;;;;;GAMG;AACH,MAAM,OAAO,WAAW;IACtB,MAAM,GAAiB,EAAE,CAAC;IAE1B,KAAK,CAAC,QAAgB;QACpB,MAAM,IAAI,GAAe;YACvB,QAAQ;YACR,MAAM,EAAE,OAAO,QAAQ,EAAE;SAC1B,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;IAC3B,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;IAC3B,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;CACF"}
1
+ {"version":3,"file":"turns.js","sourceRoot":"","sources":["../../../../src/commands/channel/supervisor/turns.ts"],"names":[],"mappings":"AAcA;;;;;;;;;;GAUG;AACH,MAAM,OAAO,WAAW;IACtB,MAAM,GAAiB,EAAE,CAAC;IAC1B,MAAM,CAAmB;IAEzB,YAAY,QAA0B,EAAE;QACtC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,QAAgB;QACpB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;QACzC,MAAM,IAAI,GAAe;YACvB,QAAQ;YACR,MAAM,EAAE,OAAO,QAAQ,EAAE;SAC1B,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,IAAI,OAAO;YAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM;QACJ,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAC/B,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;QAClE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAAY;QACV,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAC/B,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;QAClE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;CACF"}
@@ -31,6 +31,12 @@ export interface SupervisorConfig {
31
31
  timeoutMs?: number;
32
32
  /** Emit supervisor_warning this many ms before timeout. `<=0` disables it. */
33
33
  warnBeforeMs?: number;
34
+ /**
35
+ * OOM-guard idle-cleanup TTL in ms. When a running worker stays idle
36
+ * for this long (no active turn), the supervisor self-terminates with
37
+ * `killed{reason:"idle-timeout"}`. `<=0` or undefined disables.
38
+ */
39
+ idleTimeoutMs?: number;
34
40
  /** Caller identity recorded on the `spawned` event (default "main"). */
35
41
  spawnedBy?: string;
36
42
  /** Agent definition name loaded for this worker, if any (recorded on `spawned`). */
@@ -1 +1 @@
1
- {"version":3,"file":"supervisor.d.ts","sourceRoot":"","sources":["../../../src/commands/channel/supervisor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAOH,OAAO,EAEL,KAAK,WAAW,EACjB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAc,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAShE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,QAAQ,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ;;;8CAG0C;IAC1C,YAAY,EAAE,MAAM,CAAC;IACrB,qEAAqE;IACrE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oFAAoF;IACpF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;yCAEqC;IACrC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B;2BACuB;IACvB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAMD;;GAEG;AACH,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CA4Rf;AA+BD,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,gBAAgB,EACxB,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,CAKR"}
1
+ {"version":3,"file":"supervisor.d.ts","sourceRoot":"","sources":["../../../src/commands/channel/supervisor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAOH,OAAO,EAEL,KAAK,WAAW,EACjB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAc,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAUhE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,QAAQ,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ;;;8CAG0C;IAC1C,YAAY,EAAE,MAAM,CAAC;IACrB,qEAAqE;IACrE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oFAAoF;IACpF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;yCAEqC;IACrC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B;2BACuB;IACvB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAMD;;GAEG;AACH,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAgTf;AAsDD,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,gBAAgB,EACxB,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,CAKR"}
@@ -18,6 +18,7 @@ import { DEFAULT_INBOX_POLICY, } from "@mindfoldhq/trellis-core/channel";
18
18
  import { getAdapter } from "./adapters/index.js";
19
19
  import { appendEvent } from "./store/events.js";
20
20
  import { workerFile } from "./store/paths.js";
21
+ import { scheduleSupervisorIdleTimer } from "./supervisor/idle.js";
21
22
  import { runInboxWatcher } from "./supervisor/inbox.js";
22
23
  import { createShutdown } from "./supervisor/shutdown.js";
23
24
  import { startStdoutPump } from "./supervisor/stdout.js";
@@ -68,6 +69,9 @@ export async function runSupervisor(channelName, workerName, configPath) {
68
69
  getChild: () => child,
69
70
  graceMs: SHUTDOWN_GRACE_MS,
70
71
  timeoutMs: config.timeoutMs,
72
+ ...(config.idleTimeoutMs !== undefined
73
+ ? { idleTimeoutMs: config.idleTimeoutMs }
74
+ : {}),
71
75
  });
72
76
  // Gate the `spawned` event behind whichever child lifecycle event fires
73
77
  // first: `spawn` (success) or `error` (launch failure, e.g. ENOENT).
@@ -159,7 +163,9 @@ export async function runSupervisor(channelName, workerName, configPath) {
159
163
  // arriving during the spawn-settle / spawned-append window funnels
160
164
  // into `shutdown.request` instead of using Node's default behaviour
161
165
  // (which would orphan the child and skip the `killed` event).
162
- process.on("SIGTERM", () => void shutdown.request("SIGTERM", "explicit-kill"));
166
+ process.on("SIGTERM", () => {
167
+ void shutdown.request("SIGTERM", readExternalShutdownReason(channelName, workerName, project));
168
+ });
163
169
  process.on("SIGINT", () => void shutdown.request("SIGINT", "explicit-kill"));
164
170
  // SIGHUP arrives when the parent terminal closes — without this
165
171
  // handler Node's default behaviour exits the supervisor before the
@@ -180,7 +186,6 @@ export async function runSupervisor(channelName, workerName, configPath) {
180
186
  return;
181
187
  }
182
188
  fs.writeFileSync(workerFile(channelName, workerName, "worker-pid", project), String(child.pid));
183
- const turnTracker = new TurnTracker();
184
189
  await appendEvent(channelName, {
185
190
  kind: "spawned",
186
191
  by: config.spawnedBy ?? "main",
@@ -196,6 +201,21 @@ export async function runSupervisor(channelName, workerName, configPath) {
196
201
  ? { manifests: config.contextManifests }
197
202
  : {}),
198
203
  }, project);
204
+ // OOM-guard idle timer: start only after `spawned` is durable. Hooks
205
+ // wired through the TurnTracker pause it mid-turn and reset it on
206
+ // turn finish / interrupted (the same transitions that drive durable
207
+ // `idleSince`). `<=0` short-circuits the timer to a no-op.
208
+ const idleTimer = scheduleSupervisorIdleTimer({
209
+ idleTimeoutMs: config.idleTimeoutMs ?? 0,
210
+ shutdown,
211
+ isChildExited: () => child.exitCode !== null || child.signalCode !== null,
212
+ log,
213
+ });
214
+ const turnTracker = new TurnTracker({
215
+ onIdleExit: () => idleTimer.pause(),
216
+ onIdleEnter: () => idleTimer.reset(),
217
+ });
218
+ process.on("exit", () => idleTimer.cancel());
199
219
  // ── 1. stdout reader ──
200
220
  startStdoutPump({
201
221
  channelName,
@@ -282,7 +302,14 @@ async function cleanup(channelName, workerName) {
282
302
  // Keep `log` (forensic), `session-id` / `thread-id` (future resume).
283
303
  // `inbox-cursor` is kept so a respawn (same worker name without
284
304
  // killing the channel) doesn't replay messages.
285
- for (const suffix of ["pid", "worker-pid", "config", "spawnlock"]) {
305
+ for (const suffix of [
306
+ "pid",
307
+ "worker-pid",
308
+ "config",
309
+ "spawnlock",
310
+ "shutdown-reason",
311
+ "reservation",
312
+ ]) {
286
313
  try {
287
314
  fs.unlinkSync(workerFile(channelName, workerName, suffix, process.env.TRELLIS_CHANNEL_PROJECT));
288
315
  }
@@ -291,6 +318,19 @@ async function cleanup(channelName, workerName) {
291
318
  }
292
319
  }
293
320
  }
321
+ function readExternalShutdownReason(channelName, workerName, project) {
322
+ const file = workerFile(channelName, workerName, "shutdown-reason", project);
323
+ try {
324
+ const reason = fs.readFileSync(file, "utf-8").trim();
325
+ fs.unlinkSync(file);
326
+ if (reason === "idle-timeout")
327
+ return "idle-timeout";
328
+ }
329
+ catch {
330
+ // No sidecar: ordinary external SIGTERM remains an explicit kill.
331
+ }
332
+ return "explicit-kill";
333
+ }
294
334
  function readConfig(p) {
295
335
  return JSON.parse(fs.readFileSync(p, "utf-8"));
296
336
  }
@@ -1 +1 @@
1
- {"version":3,"file":"supervisor.js","sourceRoot":"","sources":["../../../src/commands/channel/supervisor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"supervisor.js","sourceRoot":"","sources":["../../../src/commands/channel/supervisor.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,6 @@ export interface WaitOptions {
3
3
  timeoutMs?: number;
4
4
  from?: string;
5
5
  kind?: string;
6
- tag?: string;
7
6
  to?: string;
8
7
  scope?: string;
9
8
  thread?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"wait.d.ts","sourceRoot":"","sources":["../../../src/commands/channel/wait.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,sEAAsE;IACtE,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAID,wBAAsB,WAAW,CAC/B,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,IAAI,CAAC,CAkDf;AAED,iEAAiE;AACjE,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAmBvE"}
1
+ {"version":3,"file":"wait.d.ts","sourceRoot":"","sources":["../../../src/commands/channel/wait.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,sEAAsE;IACtE,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAID,wBAAsB,WAAW,CAC/B,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,IAAI,CAAC,CAiDf;AAED,iEAAiE;AACjE,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAmBvE"}
@@ -15,7 +15,6 @@ export async function channelWait(channelName, opts) {
15
15
  self: opts.as,
16
16
  from: fromList,
17
17
  kind: parseChannelKinds(opts.kind),
18
- tag: opts.tag,
19
18
  to: opts.to ?? opts.as, // default: broadcasts to me + explicit-to-me
20
19
  thread: opts.thread ? normalizeThreadKey(opts.thread) : undefined,
21
20
  action: opts.action ? parseThreadAction(opts.action) : undefined,
@@ -1 +1 @@
1
- {"version":3,"file":"wait.js","sourceRoot":"","sources":["../../../src/commands/channel/wait.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wait.js","sourceRoot":"","sources":["../../../src/commands/channel/wait.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": "0.5.16",
3
+ "description": "Patch: align Cursor sessionStart hook output with Cursor's supported schema and remove the unsupported beforeSubmitPrompt injector.",
4
+ "breaking": false,
5
+ "recommendMigrate": false,
6
+ "changelog": "**Bug Fixes:**\n- fix(hooks): Cursor `sessionStart` hooks now emit top-level `additional_context`, matching Cursor's supported hook schema.\n- fix(hooks): Cursor templates no longer install the unsupported `beforeSubmitPrompt` workflow-state injector or `.cursor/hooks/inject-workflow-state.py`.",
7
+ "migrations": [],
8
+ "notes": "Run `trellis update` to refresh Cursor hook templates. No migration required because Trellis removes the unsupported Cursor workflow-state hook from generated templates."
9
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "version": "0.6.0-beta.18",
3
+ "description": "Beta patch: channel worker OOM guard, simplified channel message routing, bundled Trellis spec bootstrap skill docs, and safer task archive auto-commit failures.",
4
+ "breaking": false,
5
+ "recommendMigrate": false,
6
+ "changelog": "**Enhancements:**\n- feat(channel): default OOM guard for `trellis channel spawn`. Workers that stay continuously idle past `channel.worker_guard.idle_timeout` (default `5m`) are self-terminated with `killed{reason:\"idle-timeout\"}`. Mid-turn workers are not killed by idle cleanup.\n- feat(channel): spawn-time live-worker budget per project/scope. Default `channel.worker_guard.max_live_workers: 6`. Expired idle workers are cleaned first; if the budget is still exhausted, `spawn` rejects with live-worker details and kill / override hints.\n- feat(channel): simplified worker message routing by removing message tags from channel send/wait/run internals.\n- feat(config): `.trellis/config.yaml` gains a `channel.worker_guard` section via `trellis update`.\n- feat(skills): Trellis beta bundle includes the built-in `trellis-spec-bootstarp` skill for bootstrapping `.trellis/spec/` from the real codebase.\n**Bug Fixes:**\n- fix(cli): `task.py archive` now fails when its auto-commit fails instead of reporting a successful archive with uncommitted changes.",
7
+ "migrations": [],
8
+ "configSectionsAdded": [
9
+ {
10
+ "file": ".trellis/config.yaml",
11
+ "sentinel": "worker_guard:",
12
+ "sectionHeading": "Channel worker OOM guard"
13
+ }
14
+ ],
15
+ "notes": "Beta patch on top of 0.6.0-beta.17. `trellis update` appends `channel.worker_guard` defaults for existing projects. To opt out, set `channel.worker_guard.idle_timeout: 0` and / or `channel.worker_guard.max_live_workers: 0`, or pass `--idle-timeout 0` / `--max-live-workers 0` per spawn."
16
+ }
@@ -76,6 +76,26 @@ max_journal_lines: 2000
76
76
  # Default package used when --package is not specified.
77
77
  # default_package: frontend
78
78
 
79
+ #-------------------------------------------------------------------------------
80
+ # Channel worker OOM guard
81
+ #-------------------------------------------------------------------------------
82
+ # Default safeguards for `trellis channel spawn` workers. The guard runs
83
+ # at spawn time (cleans expired idle workers, then enforces the live-worker
84
+ # budget) and inside each supervisor (self-terminates a worker that stays
85
+ # continuously idle past `idle_timeout`).
86
+ #
87
+ # Precedence: CLI flag > env var (TRELLIS_CHANNEL_WORKER_IDLE_TIMEOUT /
88
+ # TRELLIS_CHANNEL_MAX_LIVE_WORKERS) > this config > built-in default.
89
+ #
90
+ # `idle_timeout: 0` disables idle cleanup (workers can sit idle forever
91
+ # unless explicitly killed or given `--timeout`).
92
+ # `max_live_workers: 0` disables the spawn-time budget check.
93
+ #
94
+ channel:
95
+ worker_guard:
96
+ idle_timeout: 5m
97
+ max_live_workers: 6
98
+
79
99
  #-------------------------------------------------------------------------------
80
100
  # Codex (dispatch behavior)
81
101
  #-------------------------------------------------------------------------------