harness-dispatch 0.8.0 → 0.9.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 (110) hide show
  1. package/CHANGELOG.md +514 -1
  2. package/README.md +29 -4
  3. package/config.default.yaml +19 -3
  4. package/dist/billing.d.ts +24 -0
  5. package/dist/billing.d.ts.map +1 -1
  6. package/dist/billing.js +24 -0
  7. package/dist/billing.js.map +1 -1
  8. package/dist/bin.d.ts.map +1 -1
  9. package/dist/bin.js +136 -22
  10. package/dist/bin.js.map +1 -1
  11. package/dist/circuit-breaker.d.ts +9 -1
  12. package/dist/circuit-breaker.d.ts.map +1 -1
  13. package/dist/circuit-breaker.js +15 -1
  14. package/dist/circuit-breaker.js.map +1 -1
  15. package/dist/client-register.d.ts +11 -1
  16. package/dist/client-register.d.ts.map +1 -1
  17. package/dist/client-register.js +15 -6
  18. package/dist/client-register.js.map +1 -1
  19. package/dist/config/validation.d.ts +12 -0
  20. package/dist/config/validation.d.ts.map +1 -1
  21. package/dist/config/validation.js +133 -7
  22. package/dist/config/validation.js.map +1 -1
  23. package/dist/config.d.ts +4 -2
  24. package/dist/config.d.ts.map +1 -1
  25. package/dist/config.js +88 -4
  26. package/dist/config.js.map +1 -1
  27. package/dist/configure-yaml.d.ts +2 -0
  28. package/dist/configure-yaml.d.ts.map +1 -1
  29. package/dist/configure-yaml.js +69 -3
  30. package/dist/configure-yaml.js.map +1 -1
  31. package/dist/dispatchers/generic-cli.d.ts.map +1 -1
  32. package/dist/dispatchers/generic-cli.js +92 -15
  33. package/dist/dispatchers/generic-cli.js.map +1 -1
  34. package/dist/dispatchers/openai-compatible.d.ts.map +1 -1
  35. package/dist/dispatchers/openai-compatible.js +22 -2
  36. package/dist/dispatchers/openai-compatible.js.map +1 -1
  37. package/dist/dispatchers/shared/harness-login.d.ts +25 -0
  38. package/dist/dispatchers/shared/harness-login.d.ts.map +1 -0
  39. package/dist/dispatchers/shared/harness-login.js +68 -0
  40. package/dist/dispatchers/shared/harness-login.js.map +1 -0
  41. package/dist/dispatchers/shared/stream-subprocess.d.ts.map +1 -1
  42. package/dist/dispatchers/shared/stream-subprocess.js +70 -4
  43. package/dist/dispatchers/shared/stream-subprocess.js.map +1 -1
  44. package/dist/file-lock.d.ts +29 -1
  45. package/dist/file-lock.d.ts.map +1 -1
  46. package/dist/file-lock.js +22 -1
  47. package/dist/file-lock.js.map +1 -1
  48. package/dist/http/server.d.ts +2 -0
  49. package/dist/http/server.d.ts.map +1 -1
  50. package/dist/http/server.js +179 -14
  51. package/dist/http/server.js.map +1 -1
  52. package/dist/jobs/context.d.ts +0 -7
  53. package/dist/jobs/context.d.ts.map +1 -1
  54. package/dist/jobs/context.js +95 -7
  55. package/dist/jobs/context.js.map +1 -1
  56. package/dist/jobs/types.d.ts +8 -1
  57. package/dist/jobs/types.d.ts.map +1 -1
  58. package/dist/jobs.d.ts +15 -0
  59. package/dist/jobs.d.ts.map +1 -1
  60. package/dist/jobs.js +106 -14
  61. package/dist/jobs.js.map +1 -1
  62. package/dist/leaderboard.d.ts.map +1 -1
  63. package/dist/leaderboard.js +39 -27
  64. package/dist/leaderboard.js.map +1 -1
  65. package/dist/mcp/config-hot-reload.d.ts +14 -3
  66. package/dist/mcp/config-hot-reload.d.ts.map +1 -1
  67. package/dist/mcp/config-hot-reload.js +23 -5
  68. package/dist/mcp/config-hot-reload.js.map +1 -1
  69. package/dist/mcp/dispatcher-factory.d.ts.map +1 -1
  70. package/dist/mcp/dispatcher-factory.js +14 -3
  71. package/dist/mcp/dispatcher-factory.js.map +1 -1
  72. package/dist/mcp/tool-schemas.d.ts +1 -1
  73. package/dist/mcp/tool-schemas.d.ts.map +1 -1
  74. package/dist/mcp/tool-schemas.js +6 -3
  75. package/dist/mcp/tool-schemas.js.map +1 -1
  76. package/dist/mcp/tools.d.ts +11 -4
  77. package/dist/mcp/tools.d.ts.map +1 -1
  78. package/dist/mcp/tools.js +47 -8
  79. package/dist/mcp/tools.js.map +1 -1
  80. package/dist/mcp-clients.d.ts +9 -0
  81. package/dist/mcp-clients.d.ts.map +1 -1
  82. package/dist/mcp-clients.js +4 -0
  83. package/dist/mcp-clients.js.map +1 -1
  84. package/dist/quota.d.ts.map +1 -1
  85. package/dist/quota.js +16 -2
  86. package/dist/quota.js.map +1 -1
  87. package/dist/route-policy.d.ts +2 -1
  88. package/dist/route-policy.d.ts.map +1 -1
  89. package/dist/route-policy.js +54 -0
  90. package/dist/route-policy.js.map +1 -1
  91. package/dist/router.d.ts.map +1 -1
  92. package/dist/router.js +4 -0
  93. package/dist/router.js.map +1 -1
  94. package/dist/safety.d.ts.map +1 -1
  95. package/dist/safety.js +7 -1
  96. package/dist/safety.js.map +1 -1
  97. package/dist/state-dir.d.ts +10 -0
  98. package/dist/state-dir.d.ts.map +1 -1
  99. package/dist/state-dir.js +12 -0
  100. package/dist/state-dir.js.map +1 -1
  101. package/dist/types.d.ts +24 -1
  102. package/dist/types.d.ts.map +1 -1
  103. package/dist/workspace-resolve.d.ts.map +1 -1
  104. package/dist/workspace-resolve.js +77 -0
  105. package/dist/workspace-resolve.js.map +1 -1
  106. package/dist/workspaces.d.ts +15 -0
  107. package/dist/workspaces.d.ts.map +1 -1
  108. package/dist/workspaces.js +329 -13
  109. package/dist/workspaces.js.map +1 -1
  110. package/package.json +1 -1
@@ -7,7 +7,6 @@ import { createAnswerStream } from "./answer-stream.js";
7
7
  import { buildStatus, buildUsage } from "../status.js";
8
8
  import { VERSION } from "../version.js";
9
9
  import { evaluateRoutePolicy } from "../route-policy.js";
10
- import { explicitOptsFromHints } from "../router.js";
11
10
  import { isIsolatedWorkspacePolicy } from "../workspaces.js";
12
11
  import { getAsyncJob, orphanStrandedSlotQueue, startAsyncJobTracked } from "../jobs.js";
13
12
  import { BadRequestError, completionEnvelope, parseChatRequest, PayloadTooLargeError, readJson, } from "./parse.js";
@@ -36,7 +35,7 @@ function isLoopbackHost(host) {
36
35
  return host === "127.0.0.1" || host === "localhost" || host === "::1";
37
36
  }
38
37
  /**
39
- * Run fanout arms to completion INDEPENDENTLY of one another.
38
+ * Run fanout arms to completion INDEPENDENTLY of one another, and DURABLY.
40
39
  *
41
40
  * Promise.all rejected the whole batch when one arm threw (workspace lock
42
41
  * timeout, worktree setup failure), discarding every other arm's completed —
@@ -44,18 +43,53 @@ function isLoopbackHost(host) {
44
43
  * own; a thrown arm becomes a failed row naming its route. One row shape for
45
44
  * the streaming and non-streaming branches on purpose: they used to differ
46
45
  * (streaming omitted success/error), the one-sibling-guarded pattern again.
46
+ *
47
+ * JOB-BACKED, like the MCP fanout. These arms called `router.routeTo`
48
+ * directly, so an arm's work existed ONLY inside the HTTP request: no job
49
+ * directory, no manifest, no partial log. Kill the client — or the server —
50
+ * mid-fanout and every arm's output was gone, with nothing on disk to salvage.
51
+ * PRODUCT.md names that as the defining failure ("a wasted attempt with no
52
+ * trail"), and the MCP surface had been durable all along; an acceptance pass
53
+ * caught the two surfaces disagreeing about the product's central promise.
54
+ *
55
+ * The RESPONSE SHAPE IS UNCHANGED. This awaits each arm's completion and
56
+ * returns the same rows it always did, so an OpenAI-compatible client sees
57
+ * exactly what it saw before — durability was never a contract change, which
58
+ * is what made deferring this to a breaking release the wrong call. The one
59
+ * addition is `jobId` per row: additive, inside the `harness_dispatch`
60
+ * extension namespace, and the thing that makes salvage possible at all.
47
61
  */
48
- async function runFanoutArms(router, routes, parsed) {
49
- const settled = await Promise.allSettled(routes.map((route) => router.routeTo(route, parsed.prompt, parsed.files, parsed.workingDir, explicitOptsFromHints(parsed.hints))));
62
+ async function runFanoutArms(holder, routes, parsed) {
63
+ const settled = await Promise.allSettled(routes.map(async (route) => {
64
+ const started = await startAsyncJobTracked({ holder }, {
65
+ prompt: parsed.prompt,
66
+ files: parsed.files,
67
+ workingDir: parsed.workingDir,
68
+ hints: parsed.hints,
69
+ service: route,
70
+ });
71
+ // `completion` never rejects and resolves on a terminal state, so the
72
+ // await below cannot hang on a crashed arm.
73
+ await started.completion;
74
+ return { route, job: await getAsyncJob(started.status.jobId) };
75
+ }));
50
76
  return settled.map((s, i) => {
51
77
  if (s.status === "fulfilled") {
52
- const r = s.value.result;
78
+ const { route, job } = s.value;
79
+ const r = job.result?.result;
53
80
  return {
54
- route: r.service,
55
- success: r.success,
56
- output: r.output,
57
- ...(r.error !== undefined ? { error: r.error } : {}),
58
- ...(r.workspace !== undefined ? { workspace: r.workspace } : {}),
81
+ route,
82
+ jobId: job.status.jobId,
83
+ success: r?.success ?? false,
84
+ // A job that ended without a result still hands back whatever it got
85
+ // to the same salvage rule the orphan path follows.
86
+ output: r?.output ?? job.partialOutput ?? "",
87
+ ...(r?.error !== undefined
88
+ ? { error: r.error }
89
+ : job.status.error !== undefined
90
+ ? { error: job.status.error }
91
+ : {}),
92
+ ...(r?.workspace !== undefined ? { workspace: r.workspace } : {}),
59
93
  };
60
94
  }
61
95
  return {
@@ -115,6 +149,10 @@ async function handleChatCompletions(holder, parsed, res, sse) {
115
149
  ...(parsed.hints.routePolicy !== undefined
116
150
  ? { routePolicy: parsed.hints.routePolicy }
117
151
  : {}),
152
+ // Same refusal as every other surface: an HTTP endpoint route cannot
153
+ // carry an `execute` task. Omitted here, this surface would keep
154
+ // routing execution to endpoints after the others stopped.
155
+ ...(parsed.hints.taskType !== undefined ? { taskType: parsed.hints.taskType } : {}),
118
156
  });
119
157
  if (policy.skipped)
120
158
  skippedRoutes.push(policy.skipped);
@@ -141,6 +179,26 @@ async function handleChatCompletions(holder, parsed, res, sse) {
141
179
  ? parsed.models
142
180
  : Object.keys(state.config.services).filter((route) => route in state.dispatchers))
143
181
  : undefined;
182
+ // Refuse BEFORE writeHead, while a real status code is still available.
183
+ //
184
+ // The non-streaming branch has the same check; this one is here rather
185
+ // than beside it because once the 200 and the SSE headers are out, the
186
+ // only way to report a refusal is an error frame inside a successful
187
+ // stream — which is exactly the "vacuously true" shape being fixed.
188
+ if (preSelected !== undefined && preSelected.routes.length === 0) {
189
+ const why = preSelected.skippedRoutes.map((s) => `${s.route} (${s.code}): ${s.message}`).join("; ");
190
+ sendJson(res, 400, {
191
+ error: {
192
+ message: `No fanout route can run this request${why ? ` — ${why}` : ""}. ` +
193
+ `Check /v1/usage for route readiness, or adjust models/safetyProfile/routePolicy.`,
194
+ type: "invalid_request_error",
195
+ },
196
+ // Structured as well as prose: a caller that was reading
197
+ // `skippedRoutes` off the old 200 keeps its machine-readable reason.
198
+ harness_dispatch: { mode: "fanout", skippedRoutes: preSelected.skippedRoutes },
199
+ });
200
+ return;
201
+ }
144
202
  res.writeHead(200, {
145
203
  "content-type": "text/event-stream; charset=utf-8",
146
204
  "cache-control": "no-cache",
@@ -149,7 +207,7 @@ async function handleChatCompletions(holder, parsed, res, sse) {
149
207
  sse.started = true;
150
208
  if (parsed.mode === "fanout") {
151
209
  const selected = preSelected;
152
- const rows = await runFanoutArms(state.router, selected.routes, parsed);
210
+ const rows = await runFanoutArms(holder, selected.routes, parsed);
153
211
  writeSse(res, sseContent(JSON.stringify(rows), {
154
212
  harness_dispatch: {
155
213
  mode: "fanout",
@@ -177,7 +235,26 @@ async function handleChatCompletions(holder, parsed, res, sse) {
177
235
  const answer = createAnswerStream();
178
236
  let succeeded = false;
179
237
  let pendingFailure;
180
- for await (const { event, decision } of state.router.stream(parsed.prompt, parsed.files, parsed.workingDir, { hints: parsed.hints, maxFallbacks: 2 })) {
238
+ // Stop the run when the caller hangs up.
239
+ //
240
+ // Nothing connected the client's disconnect to the dispatch, so an
241
+ // aborted stream left the harness running to completion — measured
242
+ // still producing output twelve seconds after the client went away.
243
+ // This is the ONE dispatch path with no job record, so there is also no
244
+ // `jobId` to cancel it with: on a CLI route that means an agent with
245
+ // file access still working in the user's directory for a caller that
246
+ // no longer exists. OPERATIONS.md claimed "the run is lost with the
247
+ // connection"; it was not lost, it was unsupervised.
248
+ //
249
+ // `close` fires on normal completion too, hence the `writableEnded`
250
+ // guard — aborting a finished response would cancel nothing but would
251
+ // make every clean stream look like a cancellation in the logs.
252
+ const clientGone = new AbortController();
253
+ res.on("close", () => {
254
+ if (!res.writableEnded)
255
+ clientGone.abort();
256
+ });
257
+ for await (const { event, decision } of state.router.stream(parsed.prompt, parsed.files, parsed.workingDir, { hints: parsed.hints, maxFallbacks: 2, signal: clientGone.signal })) {
181
258
  const text = answer.next(event);
182
259
  if (text !== undefined) {
183
260
  writeSse(res, sseContent(text, {
@@ -228,7 +305,28 @@ async function handleChatCompletions(holder, parsed, res, sse) {
228
305
  ? parsed.models
229
306
  : Object.keys(state.config.services).filter((route) => route in state.dispatchers);
230
307
  const selected = eligibleRoutes(routes);
231
- const rows = await runFanoutArms(state.router, selected.routes, parsed);
308
+ // An empty candidate set is a REFUSAL, not an empty success.
309
+ //
310
+ // This answered 200 with `"[]"` as the content — vacuously true over zero
311
+ // arms, on the surface PRODUCT.md points CI and cron at, which read 200 as
312
+ // "it worked". MCP already refuses the identical input by name. The
313
+ // no-`models` sub-case of this class was closed earlier; the
314
+ // empty-ELIGIBLE-SET case beside it was not, which is the same defect one
315
+ // branch over. Same wording as the MCP path, so the two surfaces answer
316
+ // one question one way.
317
+ if (selected.routes.length === 0) {
318
+ const why = selected.skippedRoutes.map((s) => `${s.route} (${s.code}): ${s.message}`).join("; ");
319
+ sendJson(res, 400, {
320
+ error: {
321
+ message: `No fanout route can run this request${why ? ` — ${why}` : ""}. ` +
322
+ `Check /v1/usage for route readiness, or adjust models/safetyProfile/routePolicy.`,
323
+ type: "invalid_request_error",
324
+ },
325
+ harness_dispatch: { mode: "fanout", skippedRoutes: selected.skippedRoutes },
326
+ });
327
+ return;
328
+ }
329
+ const rows = await runFanoutArms(holder, selected.routes, parsed);
232
330
  sendJson(res, 200, completionEnvelope(JSON.stringify(rows, null, 2), typeof parsed.hints.model === "string" ? parsed.hints.model : "harness-dispatch", {
233
331
  harness_dispatch: {
234
332
  mode: "fanout",
@@ -338,6 +436,40 @@ export async function startHttpServer(opts = {}) {
338
436
  const token = diskToken;
339
437
  const transports = new Map();
340
438
  const sessionServers = new Set();
439
+ /** Last time each live session was used, for the idle sweep below. */
440
+ const sessionLastSeen = new Map();
441
+ /**
442
+ * How long an MCP session may sit unused before it is closed.
443
+ *
444
+ * Sessions were never expired or capped. `transports` is pruned only by
445
+ * `transport.onclose`, and the SDK fires that only on an explicit HTTP
446
+ * DELETE — which `StreamableHTTPClientTransport.close()` does not send. So a
447
+ * client that shuts down cleanly left its session, and its whole `McpServer`
448
+ * instance, resident for the lifetime of the process. This surface exists
449
+ * for CI, cron and scripts, i.e. exactly the callers that connect and go.
450
+ *
451
+ * Thirty minutes is far longer than any dispatch grace window, so it cannot
452
+ * reap a session a caller is still polling on.
453
+ */
454
+ const SESSION_IDLE_MS = 30 * 60_000;
455
+ /**
456
+ * Close sessions idle past the ceiling. Runs on request rather than on a
457
+ * timer, deliberately: an interval would keep the process alive and need
458
+ * unref'ing plus teardown, for a sweep that only matters when requests are
459
+ * arriving anyway.
460
+ */
461
+ const sweepIdleSessions = () => {
462
+ const now = Date.now();
463
+ for (const [sid, seen] of sessionLastSeen) {
464
+ if (now - seen <= SESSION_IDLE_MS)
465
+ continue;
466
+ sessionLastSeen.delete(sid);
467
+ const idle = transports.get(sid);
468
+ // close() fires onclose, which removes it from `transports` and drops
469
+ // the McpServer from `sessionServers`.
470
+ void idle?.close().catch(() => undefined);
471
+ }
472
+ };
341
473
  const requireAuth = (req, res) => {
342
474
  if (isAuthorized(req.headers.authorization, activeToken()))
343
475
  return true;
@@ -436,18 +568,25 @@ export async function startHttpServer(opts = {}) {
436
568
  if (url.pathname === mcpRoute) {
437
569
  if (!requireAuth(req, res))
438
570
  return;
571
+ sweepIdleSessions();
439
572
  const sessionId = req.headers["mcp-session-id"] ?? undefined;
440
573
  let transport;
574
+ // Held so the post-request check below can dispose of a server whose
575
+ // session never came into existence.
576
+ let freshServer;
441
577
  if (sessionId && transports.has(sessionId)) {
442
578
  transport = transports.get(sessionId);
579
+ sessionLastSeen.set(sessionId, Date.now());
443
580
  }
444
581
  else {
445
582
  const sessionServer = buildMcpServerInstance(holder, reloader);
583
+ freshServer = sessionServer;
446
584
  sessionServers.add(sessionServer);
447
585
  transport = new StreamableHTTPServerTransport({
448
586
  sessionIdGenerator: () => randomUUID(),
449
587
  onsessioninitialized: (sid) => {
450
588
  transports.set(sid, transport);
589
+ sessionLastSeen.set(sid, Date.now());
451
590
  },
452
591
  });
453
592
  // Bookkeeping only — do NOT call sessionServer.close() here.
@@ -459,13 +598,29 @@ export async function startHttpServer(opts = {}) {
459
598
  // initiated or via our shutdown path below) is sufficient on its
460
599
  // own to tear down sessionServer's Protocol-side state too.
461
600
  transport.onclose = () => {
462
- if (transport.sessionId)
601
+ if (transport.sessionId) {
463
602
  transports.delete(transport.sessionId);
603
+ sessionLastSeen.delete(transport.sessionId);
604
+ }
464
605
  sessionServers.delete(sessionServer);
465
606
  };
466
607
  await sessionServer.connect(transport);
467
608
  }
468
609
  await transport.handleRequest(req, res);
610
+ // A session that never came into existence still left a server behind.
611
+ //
612
+ // The McpServer and transport are built BEFORE it is known whether
613
+ // this is an `initialize`. For anything else with an unknown session
614
+ // id the SDK answers 400 without initialising, so
615
+ // `onsessioninitialized` never fires (nothing enters `transports`) and
616
+ // `onclose` never fires (nothing leaves `sessionServers`). Measured:
617
+ // five POSTs with unknown session ids left five orphaned servers alive
618
+ // until shutdown. Anyone can trigger it with a wrong header, and the
619
+ // auth check above does not help — a valid token is enough.
620
+ if (freshServer !== undefined && transport.sessionId === undefined) {
621
+ sessionServers.delete(freshServer);
622
+ await freshServer.close().catch(() => undefined);
623
+ }
469
624
  return;
470
625
  }
471
626
  sendText(res, 404, "not found");
@@ -558,6 +713,16 @@ export async function startHttpServer(opts = {}) {
558
713
  port: actualPort,
559
714
  host,
560
715
  token,
716
+ /**
717
+ * How many per-session MCP servers are alive.
718
+ *
719
+ * Exposed because a leak here is invisible from outside: a request that
720
+ * never initialises a session used to leave its `McpServer` resident with
721
+ * nothing to observe it by. There is no other seam — the count lives in a
722
+ * closure — and a test that reimplemented the bookkeeping would pin its
723
+ * own copy rather than this one.
724
+ */
725
+ openMcpSessions: () => sessionServers.size,
561
726
  async close() {
562
727
  for (const transport of transports.values()) {
563
728
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/http/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/http/server.ts"],"names":[],"mappings":"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"}
@@ -6,12 +6,5 @@
6
6
  * runs produced and render it as a preamble. It reads the job store and
7
7
  * nothing in the dispatch path calls back into it, so it lifts out whole.
8
8
  */
9
- /**
10
- * Render earlier jobs' prompts and results as a prompt preamble.
11
- *
12
- * Unknown or unfinished jobs are reported inline rather than skipped silently:
13
- * a delegate told "here is what came before" while a step is quietly missing
14
- * would reason from an incomplete picture and never know.
15
- */
16
9
  export declare function buildContextPreamble(contextJobs: string[]): Promise<string>;
17
10
  //# sourceMappingURL=context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/jobs/context.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA+BH;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA8CjF"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/jobs/context.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAiGH,wBAAsB,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAkFjF"}
@@ -15,9 +15,13 @@ import { assertValidJobId, jobsRoot, readJson } from "./store.js";
15
15
  * Every character here is a character the delegate's model must read before it
16
16
  * reaches the actual instruction, and agent CLIs are already carrying a system
17
17
  * prompt and file contents. 24k is roughly six pages: enough for several prior
18
- * results, small enough that it cannot crowd out the task itself. Oldest
19
- * entries are truncated first, since the most recent step is usually the one
20
- * being built on.
18
+ * results, small enough that it cannot crowd out the task itself.
19
+ *
20
+ * Entries are filled in the order the CALLER listed them, and it is the LAST
21
+ * ones that get truncated or omitted when the budget runs out. This comment
22
+ * claimed the opposite — "oldest entries are truncated first" — which was
23
+ * never true of the loop below and would be the wrong policy to infer: the
24
+ * caller controls the order, so put the job you most want carried first.
21
25
  */
22
26
  /** Newline, named so the templates below stay readable. */
23
27
  const NL = "\n";
@@ -36,12 +40,63 @@ function clip(text, limit) {
36
40
  * a delegate told "here is what came before" while a step is quietly missing
37
41
  * would reason from an incomplete picture and never know.
38
42
  */
43
+ /**
44
+ * Where a prior job ran, as a header suffix — or "" when it cannot be read.
45
+ *
46
+ * `contextJobs` takes any jobId from the machine-wide jobs root and inlines
47
+ * that job's prompt and output verbatim, with no working-directory scoping.
48
+ * Reproduced: a job recorded against one project chained cleanly into a
49
+ * dispatch for another, its prompt and output carried across with nothing
50
+ * saying they came from somewhere else.
51
+ *
52
+ * Deliberately DISCLOSED rather than blocked. Chaining across projects is a
53
+ * legitimate thing to want — a review job informing work in a sibling
54
+ * checkout — and the jobId has to be passed explicitly by the orchestrator, so
55
+ * this is a missing guardrail, not an injection route. What was actually
56
+ * wrong is that neither the orchestrator nor the delegate could SEE it: an
57
+ * agent that passed the wrong id got another project's source in its prompt
58
+ * and no hint of it. Naming the directory is also plainly useful when the
59
+ * chaining is intended.
60
+ */
61
+ async function ranIn(jobId) {
62
+ try {
63
+ const manifest = await readJson(path.join(jobsRoot(), jobId, "manifest.json"));
64
+ const dir = manifest.workingDir;
65
+ return typeof dir === "string" && dir !== "" ? `, ran in ${dir}` : "";
66
+ }
67
+ catch {
68
+ return "";
69
+ }
70
+ }
71
+ /**
72
+ * A prior job's PARTIAL output, when it has no result.json.
73
+ *
74
+ * Returns undefined when there is nothing on disk, so the caller can fall
75
+ * through to its "no result available" wording — the partial log is the
76
+ * salvage path, not a replacement for a real result.
77
+ */
78
+ async function partialSection(jobId) {
79
+ const partialPath = path.join(jobsRoot(), jobId, "output", "stdout.partial.log");
80
+ const partial = await readFile(partialPath, "utf8").catch(() => undefined);
81
+ if (partial === undefined || partial.trim() === "")
82
+ return undefined;
83
+ const priorPrompt = await readFile(path.join(jobsRoot(), jobId, "prompt.md"), "utf8").catch(() => "(prompt unavailable)");
84
+ return [
85
+ `### ${jobId} (INCOMPLETE — no final result; this is how far it got${await ranIn(jobId)})`,
86
+ "",
87
+ "Task it was given:",
88
+ clip(priorPrompt.trim(), 1_000),
89
+ "",
90
+ "Partial output before it stopped:",
91
+ clip(partial.trim(), MAX_CONTEXT_CHARS_PER_JOB),
92
+ ].join(NL);
93
+ }
39
94
  export async function buildContextPreamble(contextJobs) {
40
95
  if (contextJobs.length === 0)
41
96
  return "";
42
97
  const sections = [];
43
98
  let budget = MAX_CONTEXT_CHARS;
44
- for (const jobId of contextJobs) {
99
+ for (const [index, jobId] of contextJobs.entries()) {
45
100
  let section;
46
101
  try {
47
102
  assertValidJobId(jobId);
@@ -50,7 +105,7 @@ export async function buildContextPreamble(contextJobs) {
50
105
  const priorPrompt = await readFile(path.join(jobDir, "prompt.md"), "utf8").catch(() => "(prompt unavailable)");
51
106
  const output = payload.result?.output ?? "";
52
107
  section = [
53
- `### ${jobId} (${payload.result?.success === false ? "FAILED" : "completed"})`,
108
+ `### ${jobId} (${payload.result?.success === false ? "FAILED" : "completed"}${await ranIn(jobId)})`,
54
109
  "",
55
110
  "Task it was given:",
56
111
  clip(priorPrompt.trim(), 1_000),
@@ -60,14 +115,47 @@ export async function buildContextPreamble(contextJobs) {
60
115
  ].join(NL);
61
116
  }
62
117
  catch {
63
- section = `### ${jobId}${NL}${NL}(no result available this job is unknown, still running, or was pruned)`;
118
+ // No result.jsonbut a job whose supervisor died leaves its progress
119
+ // in stdout.partial.log, and chaining on "what the last job got to" is
120
+ // exactly what a caller wants after an orphaned run. Reporting "no
121
+ // result available" while that file sits on disk discards the trail
122
+ // PRODUCT.md names as the thing that must never be lost.
123
+ section = await partialSection(jobId).catch(() => undefined) ??
124
+ `### ${jobId}${NL}${NL}(no result available — this job is unknown, still running, or was pruned)`;
64
125
  }
65
126
  if (section.length > budget)
66
127
  section = clip(section, Math.max(0, budget));
67
128
  budget -= section.length;
68
129
  sections.push(section);
69
- if (budget <= 0)
130
+ if (budget <= 0) {
131
+ // Name what did not fit, rather than stopping silently.
132
+ //
133
+ // This loop dropped every remaining job with no header and no note —
134
+ // measured with five 8KB results: three appeared, jobs 4 and 5 were
135
+ // absent from the output entirely. That contradicts this module's own
136
+ // contract two functions up: "Unknown or unfinished jobs are reported
137
+ // inline rather than skipped silently: a delegate ... would reason from
138
+ // an incomplete picture and never know." A job dropped for want of
139
+ // budget is exactly that case, and it is worse than an unknown one,
140
+ // because the caller explicitly asked for it.
141
+ // Slice from the LOOP's position, not `indexOf`.
142
+ //
143
+ // `indexOf` returns the FIRST occurrence, so a repeated jobId made the
144
+ // notice describe the wrong point in the list: with [j1,j2,j1,j3,j4] it
145
+ // named four jobs omitted — including j1 and j2, whose output was
146
+ // rendered directly above it — and told the delegate to fetch them.
147
+ // Only j3 and j4 were actually dropped. A duplicate id is a plausible
148
+ // thing for an orchestrator to pass, and the notice was added in this
149
+ // same release, so this is that fix being wrong one case over.
150
+ const dropped = contextJobs.slice(index + 1);
151
+ if (dropped.length > 0) {
152
+ sections.push(`### ${dropped.length} earlier job(s) omitted` +
153
+ `${NL}${NL}The ${MAX_CONTEXT_CHARS}-character context budget ran out before these: ` +
154
+ `${dropped.join(", ")}. Their output is NOT below. Ask for it with job_status if ` +
155
+ `you need it.`);
156
+ }
70
157
  break;
158
+ }
71
159
  }
72
160
  return [
73
161
  "## Context from earlier delegated work",
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/jobs/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/jobs/context.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGlE;;;;;;;;;;;;;GAaG;AACH,2DAA2D;AAC3D,MAAM,EAAE,GAAG,IAAI,CAAC;AAEhB,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAEjC,iFAAiF;AACjF,MAAM,yBAAyB,GAAG,KAAK,CAAC;AAExC,SAAS,IAAI,CAAC,IAAY,EAAE,KAAa;IACvC,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK;QAAE,OAAO,IAAI,CAAC;IACtC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,EAAE,mBAAmB,IAAI,CAAC,MAAM,GAAG,KAAK,mBAAmB,CAAC;AAC/F,CAAC;AAED;;;;;;GAMG;AACH;;;;;;;;;;;;;;;;;GAiBG;AACH,KAAK,UAAU,KAAK,CAAC,KAAa;IAChC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAC7B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,eAAe,CAAC,CAC9C,CAAC;QACF,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC;QAChC,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACxE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,cAAc,CAAC,KAAa;IACzC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,oBAAoB,CAAC,CAAC;IACjF,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC3E,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IACrE,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CACzF,GAAG,EAAE,CAAC,sBAAsB,CAC7B,CAAC;IACF,OAAO;QACL,OAAO,KAAK,yDAAyD,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG;QAC1F,EAAE;QACF,oBAAoB;QACpB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC;QAC/B,EAAE;QACF,mCAAmC;QACnC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,yBAAyB,CAAC;KAChD,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,WAAqB;IAC9D,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACxC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,MAAM,GAAG,iBAAiB,CAAC;IAE/B,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC;QACnD,IAAI,OAAe,CAAC;QACpB,IAAI,CAAC;YACH,gBAAgB,CAAC,KAAK,CAAC,CAAC;YACxB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAC;YAC5C,MAAM,OAAO,GAAG,MAAM,QAAQ,CAC5B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,aAAa,CAAC,CAC3C,CAAC;YACF,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAC9E,GAAG,EAAE,CAAC,sBAAsB,CAC7B,CAAC;YACF,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC;YAC5C,OAAO,GAAG;gBACR,OAAO,KAAK,KAAK,OAAO,CAAC,MAAM,EAAE,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG;gBACnG,EAAE;gBACF,oBAAoB;gBACpB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC;gBAC/B,EAAE;gBACF,mBAAmB;gBACnB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,aAAa,EAAE,yBAAyB,CAAC;aAChE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACb,CAAC;QAAC,MAAM,CAAC;YACP,uEAAuE;YACvE,uEAAuE;YACvE,mEAAmE;YACnE,oEAAoE;YACpE,yDAAyD;YACzD,OAAO,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;gBAC1D,OAAO,KAAK,GAAG,EAAE,GAAG,EAAE,2EAA2E,CAAC;QACtG,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,GAAG,MAAM;YAAE,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QAC1E,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;QACzB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;YAChB,wDAAwD;YACxD,EAAE;YACF,qEAAqE;YACrE,oEAAoE;YACpE,sEAAsE;YACtE,sEAAsE;YACtE,wEAAwE;YACxE,mEAAmE;YACnE,oEAAoE;YACpE,8CAA8C;YAC9C,iDAAiD;YACjD,EAAE;YACF,uEAAuE;YACvE,wEAAwE;YACxE,kEAAkE;YAClE,oEAAoE;YACpE,sEAAsE;YACtE,sEAAsE;YACtE,+DAA+D;YAC/D,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAC7C,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,QAAQ,CAAC,IAAI,CACX,OAAO,OAAO,CAAC,MAAM,yBAAyB;oBAC5C,GAAG,EAAE,GAAG,EAAE,OAAO,iBAAiB,kDAAkD;oBACpF,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,6DAA6D;oBAClF,cAAc,CACjB,CAAC;YACJ,CAAC;YACD,MAAM;QACR,CAAC;IACH,CAAC;IAED,OAAO;QACL,wCAAwC;QACxC,EAAE;QACF,4EAA4E;QAC5E,gCAAgC;QAChC,EAAE;QACF,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACtB,EAAE;QACF,KAAK;QACL,EAAE;KACH,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACb,CAAC"}
@@ -53,11 +53,18 @@ export interface StartJobInput {
53
53
  export interface JobStatus {
54
54
  jobId: string;
55
55
  /**
56
- * "orphaned" is never written to disk it's computed on read: a job
56
+ * "orphaned" is USUALLY computed on read rather than written: a job
57
57
  * whose status file says "running" but whose heartbeat (updatedAt) has
58
58
  * gone stale means the server process that owned the background run
59
59
  * exited (session restart, crash) and the run died with it. Reporting it
60
60
  * as still "running" forever is a lie that makes callers poll a corpse.
61
+ *
62
+ * The one exception, and the comment said "never" until it misled a reader:
63
+ * `drainSlotQueue` DOES write this status for a job still waiting for a
64
+ * concurrency slot when the server exited. That one is terminal on disk and
65
+ * is not resumed automatically; the derived kind above is not terminal at
66
+ * all, because the file still says `queued`/`running` and a supervisor can
67
+ * still claim it. `cancelJob` distinguishes them by reading the raw file.
61
68
  */
62
69
  /**
63
70
  * "cancelled" is terminal and deliberate: someone asked for this run to
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/jobs/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACjH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,aAAa,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;;;;;;;;OAaG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;CAC5C;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd;;;;;;OAMG;IACH;;;;;OAKG;IACH,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,GAAG,WAAW,CAAC;IACjF,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iEAAiE;IACjE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,0DAA0D;IAC1D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,IAAI,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,KAAK,CAAC;QACX,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IACH,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,SAAS,CAAC;IAClB;;;;;;OAMG;IACH,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/jobs/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACjH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,aAAa,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;;;;;;;;OAaG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;CAC5C;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd;;;;;;;;;;;;;OAaG;IACH;;;;;OAKG;IACH,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,GAAG,WAAW,CAAC;IACjF,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iEAAiE;IACjE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,0DAA0D;IAC1D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,IAAI,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,KAAK,CAAC;QACX,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IACH,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,SAAS,CAAC;IAClB;;;;;;OAMG;IACH,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B"}
package/dist/jobs.d.ts CHANGED
@@ -126,6 +126,21 @@ export declare function runSupervisor(deps: JobDeps, supervisorId?: string): Pro
126
126
  */
127
127
  export declare function orphanStrandedSlotQueue(): Promise<number>;
128
128
  export declare function drainSlotQueue(config: RouterConfig | undefined, configPath: string | undefined): Promise<void>;
129
+ /**
130
+ * Supervisors currently alive, counted from their heartbeat files.
131
+ *
132
+ * Approximate on purpose: over-counting briefly means the pool runs one short
133
+ * until the next drain, and under-counting means one extra supervisor that
134
+ * finds no work and exits within SUPERVISOR_IDLE_EXIT_MS. Neither warrants a
135
+ * lock, and both self-correct.
136
+ */
137
+ declare function countLiveSupervisors(): Promise<number>;
138
+ /**
139
+ * Exported for the cleanup test, which must exercise the REAL sweep rather
140
+ * than a copy of its logic — the bug being pinned is that a stale heartbeat
141
+ * was never removed, and a reimplementation in the test would pin nothing.
142
+ */
143
+ export declare const countLiveSupervisorsForTest: typeof countLiveSupervisors;
129
144
  export declare function startAsyncJob(deps: JobDeps, input: StartJobInput): Promise<JobStatus>;
130
145
  export declare function startAsyncJobTracked(deps: JobDeps, input: StartJobInput): Promise<StartedJob>;
131
146
  export declare function getAsyncJob(jobId: string): Promise<{