harness-dispatch 0.7.9 → 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 (153) hide show
  1. package/CHANGELOG.md +1170 -1
  2. package/README.md +52 -6
  3. package/config.default.yaml +49 -5
  4. package/dist/auth.d.ts +29 -0
  5. package/dist/auth.d.ts.map +1 -1
  6. package/dist/auth.js +58 -5
  7. package/dist/auth.js.map +1 -1
  8. package/dist/billing.d.ts +24 -0
  9. package/dist/billing.d.ts.map +1 -1
  10. package/dist/billing.js +24 -0
  11. package/dist/billing.js.map +1 -1
  12. package/dist/bin.d.ts.map +1 -1
  13. package/dist/bin.js +529 -31
  14. package/dist/bin.js.map +1 -1
  15. package/dist/breaker-store.d.ts +25 -1
  16. package/dist/breaker-store.d.ts.map +1 -1
  17. package/dist/breaker-store.js +193 -25
  18. package/dist/breaker-store.js.map +1 -1
  19. package/dist/circuit-breaker.d.ts +9 -1
  20. package/dist/circuit-breaker.d.ts.map +1 -1
  21. package/dist/circuit-breaker.js +15 -1
  22. package/dist/circuit-breaker.js.map +1 -1
  23. package/dist/client-register.d.ts +157 -0
  24. package/dist/client-register.d.ts.map +1 -0
  25. package/dist/client-register.js +389 -0
  26. package/dist/client-register.js.map +1 -0
  27. package/dist/config/validation.d.ts +41 -0
  28. package/dist/config/validation.d.ts.map +1 -1
  29. package/dist/config/validation.js +215 -1
  30. package/dist/config/validation.js.map +1 -1
  31. package/dist/config.d.ts +4 -2
  32. package/dist/config.d.ts.map +1 -1
  33. package/dist/config.js +143 -6
  34. package/dist/config.js.map +1 -1
  35. package/dist/configure-yaml.d.ts +2 -0
  36. package/dist/configure-yaml.d.ts.map +1 -1
  37. package/dist/configure-yaml.js +69 -3
  38. package/dist/configure-yaml.js.map +1 -1
  39. package/dist/dispatch-log.d.ts +14 -0
  40. package/dist/dispatch-log.d.ts.map +1 -1
  41. package/dist/dispatch-log.js +3 -0
  42. package/dist/dispatch-log.js.map +1 -1
  43. package/dist/dispatchers/generic-cli.d.ts.map +1 -1
  44. package/dist/dispatchers/generic-cli.js +92 -15
  45. package/dist/dispatchers/generic-cli.js.map +1 -1
  46. package/dist/dispatchers/openai-compatible.d.ts +20 -4
  47. package/dist/dispatchers/openai-compatible.d.ts.map +1 -1
  48. package/dist/dispatchers/openai-compatible.js +167 -19
  49. package/dist/dispatchers/openai-compatible.js.map +1 -1
  50. package/dist/dispatchers/shared/harness-login.d.ts +25 -0
  51. package/dist/dispatchers/shared/harness-login.d.ts.map +1 -0
  52. package/dist/dispatchers/shared/harness-login.js +68 -0
  53. package/dist/dispatchers/shared/harness-login.js.map +1 -0
  54. package/dist/dispatchers/shared/stream-subprocess.d.ts.map +1 -1
  55. package/dist/dispatchers/shared/stream-subprocess.js +70 -4
  56. package/dist/dispatchers/shared/stream-subprocess.js.map +1 -1
  57. package/dist/file-lock.d.ts +29 -1
  58. package/dist/file-lock.d.ts.map +1 -1
  59. package/dist/file-lock.js +22 -1
  60. package/dist/file-lock.js.map +1 -1
  61. package/dist/http/answer-stream.d.ts +52 -0
  62. package/dist/http/answer-stream.d.ts.map +1 -0
  63. package/dist/http/answer-stream.js +47 -0
  64. package/dist/http/answer-stream.js.map +1 -0
  65. package/dist/http/parse.d.ts.map +1 -1
  66. package/dist/http/parse.js +41 -0
  67. package/dist/http/parse.js.map +1 -1
  68. package/dist/http/server.d.ts +2 -0
  69. package/dist/http/server.d.ts.map +1 -1
  70. package/dist/http/server.js +281 -23
  71. package/dist/http/server.js.map +1 -1
  72. package/dist/jobs/context.d.ts +0 -7
  73. package/dist/jobs/context.d.ts.map +1 -1
  74. package/dist/jobs/context.js +95 -7
  75. package/dist/jobs/context.js.map +1 -1
  76. package/dist/jobs/store.d.ts.map +1 -1
  77. package/dist/jobs/store.js +45 -4
  78. package/dist/jobs/store.js.map +1 -1
  79. package/dist/jobs/types.d.ts +8 -1
  80. package/dist/jobs/types.d.ts.map +1 -1
  81. package/dist/jobs.d.ts +39 -0
  82. package/dist/jobs.d.ts.map +1 -1
  83. package/dist/jobs.js +207 -15
  84. package/dist/jobs.js.map +1 -1
  85. package/dist/leaderboard.d.ts.map +1 -1
  86. package/dist/leaderboard.js +39 -27
  87. package/dist/leaderboard.js.map +1 -1
  88. package/dist/mcp/config-hot-reload.d.ts +14 -3
  89. package/dist/mcp/config-hot-reload.d.ts.map +1 -1
  90. package/dist/mcp/config-hot-reload.js +33 -5
  91. package/dist/mcp/config-hot-reload.js.map +1 -1
  92. package/dist/mcp/dispatcher-factory.d.ts.map +1 -1
  93. package/dist/mcp/dispatcher-factory.js +14 -3
  94. package/dist/mcp/dispatcher-factory.js.map +1 -1
  95. package/dist/mcp/near-miss-guard.d.ts +45 -0
  96. package/dist/mcp/near-miss-guard.d.ts.map +1 -0
  97. package/dist/mcp/near-miss-guard.js +98 -0
  98. package/dist/mcp/near-miss-guard.js.map +1 -0
  99. package/dist/mcp/server.d.ts.map +1 -1
  100. package/dist/mcp/server.js +36 -0
  101. package/dist/mcp/server.js.map +1 -1
  102. package/dist/mcp/tool-schemas.d.ts +1 -1
  103. package/dist/mcp/tool-schemas.d.ts.map +1 -1
  104. package/dist/mcp/tool-schemas.js +27 -7
  105. package/dist/mcp/tool-schemas.js.map +1 -1
  106. package/dist/mcp/tools.d.ts +33 -4
  107. package/dist/mcp/tools.d.ts.map +1 -1
  108. package/dist/mcp/tools.js +85 -8
  109. package/dist/mcp/tools.js.map +1 -1
  110. package/dist/mcp-clients.d.ts +72 -0
  111. package/dist/mcp-clients.d.ts.map +1 -0
  112. package/dist/mcp-clients.js +121 -0
  113. package/dist/mcp-clients.js.map +1 -0
  114. package/dist/near-miss.d.ts +63 -0
  115. package/dist/near-miss.d.ts.map +1 -0
  116. package/dist/near-miss.js +132 -0
  117. package/dist/near-miss.js.map +1 -0
  118. package/dist/quota.d.ts +31 -1
  119. package/dist/quota.d.ts.map +1 -1
  120. package/dist/quota.js +84 -8
  121. package/dist/quota.js.map +1 -1
  122. package/dist/route-policy.d.ts +12 -1
  123. package/dist/route-policy.d.ts.map +1 -1
  124. package/dist/route-policy.js +74 -2
  125. package/dist/route-policy.js.map +1 -1
  126. package/dist/router.d.ts +61 -2
  127. package/dist/router.d.ts.map +1 -1
  128. package/dist/router.js +160 -29
  129. package/dist/router.js.map +1 -1
  130. package/dist/safety.d.ts.map +1 -1
  131. package/dist/safety.js +37 -1
  132. package/dist/safety.js.map +1 -1
  133. package/dist/state-dir.d.ts +10 -0
  134. package/dist/state-dir.d.ts.map +1 -1
  135. package/dist/state-dir.js +12 -0
  136. package/dist/state-dir.js.map +1 -1
  137. package/dist/status.d.ts +30 -21
  138. package/dist/status.d.ts.map +1 -1
  139. package/dist/status.js +152 -8
  140. package/dist/status.js.map +1 -1
  141. package/dist/types.d.ts +49 -2
  142. package/dist/types.d.ts.map +1 -1
  143. package/dist/working-dir.d.ts.map +1 -1
  144. package/dist/working-dir.js +16 -0
  145. package/dist/working-dir.js.map +1 -1
  146. package/dist/workspace-resolve.d.ts.map +1 -1
  147. package/dist/workspace-resolve.js +196 -15
  148. package/dist/workspace-resolve.js.map +1 -1
  149. package/dist/workspaces.d.ts +98 -0
  150. package/dist/workspaces.d.ts.map +1 -1
  151. package/dist/workspaces.js +609 -20
  152. package/dist/workspaces.js.map +1 -1
  153. package/package.json +1 -1
@@ -1,13 +1,14 @@
1
1
  import { randomUUID } from "node:crypto";
2
2
  import { createServer } from "node:http";
3
3
  import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
4
- import { ensureHttpToken, isAuthorized } from "../auth.js";
4
+ import { ensureHttpToken, httpTokenMtimeMs, isAuthorized, readHttpTokenSync } from "../auth.js";
5
5
  import { buildMcpServer, buildMcpServerInstance, } from "../mcp/server.js";
6
+ import { createAnswerStream } from "./answer-stream.js";
6
7
  import { buildStatus, buildUsage } from "../status.js";
8
+ import { VERSION } from "../version.js";
7
9
  import { evaluateRoutePolicy } from "../route-policy.js";
8
- import { explicitOptsFromHints } from "../router.js";
9
10
  import { isIsolatedWorkspacePolicy } from "../workspaces.js";
10
- import { getAsyncJob, startAsyncJobTracked } from "../jobs.js";
11
+ import { getAsyncJob, orphanStrandedSlotQueue, startAsyncJobTracked } from "../jobs.js";
11
12
  import { BadRequestError, completionEnvelope, parseChatRequest, PayloadTooLargeError, readJson, } from "./parse.js";
12
13
  // Re-exported: BadRequestError is part of this module's public surface
13
14
  // (tests and the CLI import it from here) and moving its definition should
@@ -34,7 +35,7 @@ function isLoopbackHost(host) {
34
35
  return host === "127.0.0.1" || host === "localhost" || host === "::1";
35
36
  }
36
37
  /**
37
- * Run fanout arms to completion INDEPENDENTLY of one another.
38
+ * Run fanout arms to completion INDEPENDENTLY of one another, and DURABLY.
38
39
  *
39
40
  * Promise.all rejected the whole batch when one arm threw (workspace lock
40
41
  * timeout, worktree setup failure), discarding every other arm's completed —
@@ -42,18 +43,53 @@ function isLoopbackHost(host) {
42
43
  * own; a thrown arm becomes a failed row naming its route. One row shape for
43
44
  * the streaming and non-streaming branches on purpose: they used to differ
44
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.
45
61
  */
46
- async function runFanoutArms(router, routes, parsed) {
47
- 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
+ }));
48
76
  return settled.map((s, i) => {
49
77
  if (s.status === "fulfilled") {
50
- const r = s.value.result;
78
+ const { route, job } = s.value;
79
+ const r = job.result?.result;
51
80
  return {
52
- route: r.service,
53
- success: r.success,
54
- output: r.output,
55
- ...(r.error !== undefined ? { error: r.error } : {}),
56
- ...(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 } : {}),
57
93
  };
58
94
  }
59
95
  return {
@@ -113,6 +149,10 @@ async function handleChatCompletions(holder, parsed, res, sse) {
113
149
  ...(parsed.hints.routePolicy !== undefined
114
150
  ? { routePolicy: parsed.hints.routePolicy }
115
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 } : {}),
116
156
  });
117
157
  if (policy.skipped)
118
158
  skippedRoutes.push(policy.skipped);
@@ -139,6 +179,26 @@ async function handleChatCompletions(holder, parsed, res, sse) {
139
179
  ? parsed.models
140
180
  : Object.keys(state.config.services).filter((route) => route in state.dispatchers))
141
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
+ }
142
202
  res.writeHead(200, {
143
203
  "content-type": "text/event-stream; charset=utf-8",
144
204
  "cache-control": "no-cache",
@@ -147,7 +207,7 @@ async function handleChatCompletions(holder, parsed, res, sse) {
147
207
  sse.started = true;
148
208
  if (parsed.mode === "fanout") {
149
209
  const selected = preSelected;
150
- const rows = await runFanoutArms(state.router, selected.routes, parsed);
210
+ const rows = await runFanoutArms(holder, selected.routes, parsed);
151
211
  writeSse(res, sseContent(JSON.stringify(rows), {
152
212
  harness_dispatch: {
153
213
  mode: "fanout",
@@ -159,21 +219,81 @@ async function handleChatCompletions(holder, parsed, res, sse) {
159
219
  }));
160
220
  }
161
221
  else {
162
- for await (const { event, decision } of state.router.stream(parsed.prompt, parsed.files, parsed.workingDir, { hints: parsed.hints, maxFallbacks: 2 })) {
163
- if (event.type === "stdout") {
164
- writeSse(res, sseContent(event.chunk, {
222
+ // What reaches `delta.content` must be the ANSWER.
223
+ //
224
+ // This forwarded every stdout chunk, so a client concatenating deltas
225
+ // from a CLI harness received protocol JSONL and internal thread ids —
226
+ // `{"type":"thread.started",...}` — while the non-streaming call on this
227
+ // same endpoint returned "pong". Two answers to one question, and the
228
+ // streaming one was unusable by the clients this envelope exists for.
229
+ //
230
+ // An endpoint route streams real assistant text and marks it `text`;
231
+ // those chunks go out as they arrive, which is what streaming is for. A
232
+ // CLI harness produces protocol on stdout and its answer only once
233
+ // parsed, so it is sent at completion. Never both, or the answer would
234
+ // arrive twice.
235
+ const answer = createAnswerStream();
236
+ let succeeded = false;
237
+ let pendingFailure;
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 })) {
258
+ const text = answer.next(event);
259
+ if (text !== undefined) {
260
+ writeSse(res, sseContent(text, {
165
261
  harness_dispatch: decision ? { route: decision.service } : undefined,
166
262
  }));
167
263
  }
168
- else if (event.type === "completion" && !event.result.success) {
169
- writeSse(res, {
264
+ if (event.type === "completion" && event.result.success)
265
+ succeeded = true;
266
+ if (event.type === "completion" && !event.result.success) {
267
+ const frame = {
170
268
  error: {
171
269
  message: event.result.error ?? "routing failed",
172
270
  route: event.result.service,
173
271
  },
174
- });
272
+ };
273
+ // Once any answer text has gone out, this response is committed to
274
+ // that route: a fallback's answer cannot be spliced onto a half-sent
275
+ // one without garbling it, and the previous behaviour ran the
276
+ // fallback anyway and discarded what it produced — billed, and
277
+ // thrown away. Stop instead. Breaking here ends the router's
278
+ // iteration, so no further route is attempted.
279
+ if (answer.committed) {
280
+ writeSse(res, frame);
281
+ break;
282
+ }
283
+ // Not committed, so the router is about to try another route. The
284
+ // frame was written HERE, before that happened — so a request that
285
+ // then succeeded on the fallback still carried an `error` frame,
286
+ // ahead of the answer. The OpenAI streaming contract has no
287
+ // non-fatal error frame, so a client that treats one as terminal
288
+ // reported a failure for a request that worked. Reproduced by an
289
+ // acceptance pass. Held until the end, and sent only if nothing
290
+ // ever succeeded.
291
+ pendingFailure = frame;
175
292
  }
176
293
  }
294
+ // Nothing recovered it, so the failure was the outcome after all.
295
+ if (!succeeded && pendingFailure !== undefined)
296
+ writeSse(res, pendingFailure);
177
297
  }
178
298
  writeSse(res, sseStop());
179
299
  res.write("data: [DONE]\n\n");
@@ -185,7 +305,28 @@ async function handleChatCompletions(holder, parsed, res, sse) {
185
305
  ? parsed.models
186
306
  : Object.keys(state.config.services).filter((route) => route in state.dispatchers);
187
307
  const selected = eligibleRoutes(routes);
188
- 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);
189
330
  sendJson(res, 200, completionEnvelope(JSON.stringify(rows, null, 2), typeof parsed.hints.model === "string" ? parsed.hints.model : "harness-dispatch", {
190
331
  harness_dispatch: {
191
332
  mode: "fanout",
@@ -273,11 +414,64 @@ export async function startHttpServer(opts = {}) {
273
414
  const host = opts.host ?? "127.0.0.1";
274
415
  const port = opts.port ?? 0;
275
416
  const mcpRoute = opts.mcpRoute ?? "/mcp";
276
- const token = opts.token === undefined ? await ensureHttpToken() : opts.token;
417
+ // An explicitly supplied token is fixed for the life of the server (tests
418
+ // pass one, and a caller who hands us a value did not ask us to go looking
419
+ // for another). Otherwise the token is whatever is on disk NOW: it was read
420
+ // once at startup and held forever, which made `auth rotate` a lie in both
421
+ // directions — the old token kept working and the new one was refused.
422
+ // Re-read only when the file's mtime moves, so the common path is a stat.
423
+ const fixedToken = opts.token;
424
+ let diskToken = fixedToken === undefined ? await ensureHttpToken() : fixedToken;
425
+ let seenMtimeMs = fixedToken === undefined ? httpTokenMtimeMs() : 0;
426
+ const activeToken = () => {
427
+ if (fixedToken !== undefined)
428
+ return fixedToken;
429
+ const mtime = httpTokenMtimeMs();
430
+ if (mtime !== seenMtimeMs) {
431
+ seenMtimeMs = mtime;
432
+ diskToken = readHttpTokenSync() ?? diskToken;
433
+ }
434
+ return diskToken;
435
+ };
436
+ const token = diskToken;
277
437
  const transports = new Map();
278
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
+ };
279
473
  const requireAuth = (req, res) => {
280
- if (isAuthorized(req.headers.authorization, token))
474
+ if (isAuthorized(req.headers.authorization, activeToken()))
281
475
  return true;
282
476
  sendJson(res, 401, { error: "unauthorized" });
283
477
  return false;
@@ -292,6 +486,31 @@ export async function startHttpServer(opts = {}) {
292
486
  const sse = { started: false };
293
487
  try {
294
488
  const url = new URL(req.url ?? "/", urlBase);
489
+ // Liveness, and the ONLY route served without a token.
490
+ //
491
+ // Every other endpoint is authenticated, which meant a deploy gate or a
492
+ // container probe could not ask whether the process was up without being
493
+ // handed a credential — and a health check that needs a secret is one
494
+ // most orchestrators simply will not perform. `/v1/status` answers a
495
+ // richer question (routes, quota, breaker state) and stays behind the
496
+ // token precisely because that answer is not for strangers.
497
+ //
498
+ // What it discloses is bounded on purpose: that this is harness-dispatch,
499
+ // that it is running, and which version. No route ids, no endpoints, no
500
+ // quota, no config, no token. Version is here because verifying which
501
+ // build is live is the second thing an operator asks after "is it up",
502
+ // and it is already public in the npm registry, `--version`, and the MCP
503
+ // handshake. If that is more than you want exposed, bind to loopback —
504
+ // which is the default.
505
+ if (url.pathname === "/health" && (req.method === "GET" || req.method === "HEAD")) {
506
+ if (req.method === "HEAD") {
507
+ res.writeHead(200, { "content-type": "application/json; charset=utf-8" });
508
+ res.end();
509
+ return;
510
+ }
511
+ sendJson(res, 200, { status: "ok", service: "harness-dispatch", version: VERSION });
512
+ return;
513
+ }
295
514
  if (url.pathname === "/v1/models" && req.method === "GET") {
296
515
  if (!requireAuth(req, res))
297
516
  return;
@@ -349,18 +568,25 @@ export async function startHttpServer(opts = {}) {
349
568
  if (url.pathname === mcpRoute) {
350
569
  if (!requireAuth(req, res))
351
570
  return;
571
+ sweepIdleSessions();
352
572
  const sessionId = req.headers["mcp-session-id"] ?? undefined;
353
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;
354
577
  if (sessionId && transports.has(sessionId)) {
355
578
  transport = transports.get(sessionId);
579
+ sessionLastSeen.set(sessionId, Date.now());
356
580
  }
357
581
  else {
358
582
  const sessionServer = buildMcpServerInstance(holder, reloader);
583
+ freshServer = sessionServer;
359
584
  sessionServers.add(sessionServer);
360
585
  transport = new StreamableHTTPServerTransport({
361
586
  sessionIdGenerator: () => randomUUID(),
362
587
  onsessioninitialized: (sid) => {
363
588
  transports.set(sid, transport);
589
+ sessionLastSeen.set(sid, Date.now());
364
590
  },
365
591
  });
366
592
  // Bookkeeping only — do NOT call sessionServer.close() here.
@@ -372,13 +598,29 @@ export async function startHttpServer(opts = {}) {
372
598
  // initiated or via our shutdown path below) is sufficient on its
373
599
  // own to tear down sessionServer's Protocol-side state too.
374
600
  transport.onclose = () => {
375
- if (transport.sessionId)
601
+ if (transport.sessionId) {
376
602
  transports.delete(transport.sessionId);
603
+ sessionLastSeen.delete(transport.sessionId);
604
+ }
377
605
  sessionServers.delete(sessionServer);
378
606
  };
379
607
  await sessionServer.connect(transport);
380
608
  }
381
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
+ }
382
624
  return;
383
625
  }
384
626
  sendText(res, 404, "not found");
@@ -454,6 +696,12 @@ export async function startHttpServer(opts = {}) {
454
696
  });
455
697
  const addr = http.address();
456
698
  const actualPort = typeof addr === "object" && addr ? addr.port : port;
699
+ // Same reason as the stdio entry point: jobs left waiting for a concurrency
700
+ // slot when a server died are drained by nothing until a new dispatch
701
+ // happens to arrive, and unlike a running job they are exempt from orphan
702
+ // detection, so they simply read `queued` forever. Not awaited and never
703
+ // fatal — the server must still serve.
704
+ void orphanStrandedSlotQueue().catch(() => undefined);
457
705
  if (!isLoopbackHost(host)) {
458
706
  process.stderr.write(`WARNING: harness-dispatch is binding to ${host}, not loopback. This exposes ` +
459
707
  `a bearer-token-gated server — and everything the dispatched harness can ` +
@@ -465,6 +713,16 @@ export async function startHttpServer(opts = {}) {
465
713
  port: actualPort,
466
714
  host,
467
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,
468
726
  async close() {
469
727
  for (const transport of transports.values()) {
470
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":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAA4E,MAAM,WAAW,CAAC;AAEnH,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AAGnG,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEhG,OAAO,EACL,cAAc,EACd,sBAAsB,GAGvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAGzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAE7D,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACxF,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,QAAQ,GACT,MAAM,YAAY,CAAC;AAEpB,uEAAuE;AACvE,2EAA2E;AAC3E,sCAAsC;AACtC,OAAO,EAAE,eAAe,EAAE,CAAC;AAoB3B,SAAS,QAAQ,CAAC,GAAmB,EAAE,UAAkB,EAAE,IAAa;IACtE,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3C,GAAG,CAAC,SAAS,CAAC,UAAU,EAAE;QACxB,cAAc,EAAE,iCAAiC;QACjD,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;KAC1C,CAAC,CAAC;IACH,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,SAAS,QAAQ,CAAC,GAAmB,EAAE,UAAkB,EAAE,IAAY;IACrE,GAAG,CAAC,SAAS,CAAC,UAAU,EAAE;QACxB,cAAc,EAAE,2BAA2B;QAC3C,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;KAC1C,CAAC,CAAC;IACH,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,SAAS,cAAc,CAAC,IAAY;IAClC,qEAAqE;IACrE,uEAAuE;IACvE,OAAO,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,KAAK,CAAC;AACxE,CAAC;AAUD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,KAAK,UAAU,aAAa,CAC1B,MAAqB,EACrB,MAAgB,EAChB,MAAkF;IAWlF,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACzB,MAAM,OAAO,GAAG,MAAM,oBAAoB,CACxC,EAAE,MAAM,EAAE,EACV;YACE,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,OAAO,EAAE,KAAK;SACf,CACF,CAAC;QACF,sEAAsE;QACtE,4CAA4C;QAC5C,MAAM,OAAO,CAAC,UAAU,CAAC;QACzB,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;IACjE,CAAC,CAAC,CACH,CAAC;IACF,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC1B,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAC7B,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC;YAC/B,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;YAC7B,OAAO;gBACL,KAAK;gBACL,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK;gBACvB,OAAO,EAAE,CAAC,EAAE,OAAO,IAAI,KAAK;gBAC5B,qEAAqE;gBACrE,sDAAsD;gBACtD,MAAM,EAAE,CAAC,EAAE,MAAM,IAAI,GAAG,CAAC,aAAa,IAAI,EAAE;gBAC5C,GAAG,CAAC,CAAC,EAAE,KAAK,KAAK,SAAS;oBACxB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE;oBACpB,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS;wBAC9B,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE;wBAC7B,CAAC,CAAC,EAAE,CAAC;gBACT,GAAG,CAAC,CAAC,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAClE,CAAC;QACJ,CAAC;QACD,OAAO;YACL,KAAK,EAAE,MAAM,CAAC,CAAC,CAAE;YACjB,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,EAAE;YACV,KAAK,EAAE,CAAC,CAAC,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;SACvE,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAUD;;;;;GAKG;AACH,KAAK,UAAU,qBAAqB,CAClC,MAAqB,EACrB,MAA2C,EAC3C,GAAmB,EACnB,GAAa;IAEb,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC3B,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,mBAAmB,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,IAAI,WAAW,CAAC;QACtE,IACE,mBAAmB,KAAK,WAAW;YACnC,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,KAAK,SAAS;gBACzC,CAAC,yBAAyB,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,EAC3D,CAAC;YACD,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE;gBACjB,KAAK,EAAE;oBACL,OAAO,EACL,6IAA6I;oBAC/I,IAAI,EAAE,8BAA8B;iBACrC;aACF,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,aAAa,GAAG,mBAAmB,CAAC;IACnD,CAAC;IACD,MAAM,cAAc,GAAG,CAAC,eAAyB,EAAoD,EAAE;QACrG,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,aAAa,GAAgB,EAAE,CAAC;QACtC,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;YACpC,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACzC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,4DAA4D;gBAC5D,+DAA+D;gBAC/D,uDAAuD;gBACvD,MAAM,IAAI,eAAe,CACvB,0BAA0B,KAAK,qBAAqB;oBAClD,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACtD,CAAC;YACJ,CAAC;YACD,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAC/C,iEAAiE;YACjE,sEAAsE;YACtE,gEAAgE;YAChE,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,EAAE,GAAG,EAAE;gBAC7C,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnD,aAAa,EAAE,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC;gBAC1C,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,KAAK,SAAS;oBAC1C,CAAC,CAAC,EAAE,sBAAsB,EAAE,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE;oBACxD,CAAC,CAAC,EAAE,CAAC;gBACP,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS;oBACxC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE;oBAC3C,CAAC,CAAC,EAAE,CAAC;gBACP,qEAAqE;gBACrE,iEAAiE;gBACjE,2DAA2D;gBAC3D,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACpF,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,OAAO;gBAAE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACvD,IAAI,CAAC,MAAM,CAAC,OAAO;gBAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IACnC,CAAC,CAAC;IACF,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,qDAAqD;QACrD,EAAE;QACF,qEAAqE;QACrE,kEAAkE;QAClE,mEAAmE;QACnE,mEAAmE;QACnE,iDAAiD;QACjD,gEAAgE;QAChE,6DAA6D;QAC7D,qEAAqE;QACrE,kEAAkE;QAClE,+CAA+C;QAC/C,MAAM,WAAW,GACf,MAAM,CAAC,IAAI,KAAK,QAAQ;YACtB,CAAC,CAAC,cAAc,CACZ,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;gBACtB,CAAC,CAAC,MAAM,CAAC,MAAM;gBACf,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CACvC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,WAAW,CACtC,CACN;YACH,CAAC,CAAC,SAAS,CAAC;QAChB,wEAAwE;QACxE,EAAE;QACF,uEAAuE;QACvE,uEAAuE;QACvE,qEAAqE;QACrE,oEAAoE;QACpE,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjE,MAAM,GAAG,GAAG,WAAW,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpG,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE;gBACjB,KAAK,EAAE;oBACL,OAAO,EACL,uCAAuC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI;wBACjE,kFAAkF;oBACpF,IAAI,EAAE,uBAAuB;iBAC9B;gBACD,yDAAyD;gBACzD,qEAAqE;gBACrE,gBAAgB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,CAAC,aAAa,EAAE;aAC/E,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;YACjB,cAAc,EAAE,kCAAkC;YAClD,eAAe,EAAE,UAAU;YAC3B,UAAU,EAAE,YAAY;SACzB,CAAC,CAAC;QACH,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;QACnB,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG,WAAY,CAAC;YAC9B,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAClE,QAAQ,CACN,GAAG,EACH,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBAC/B,gBAAgB,EAAE;oBAChB,IAAI,EAAE,QAAQ;oBACd,aAAa,EAAE,QAAQ,CAAC,aAAa;oBACrC,GAAG,CAAC,MAAM,CAAC,iBAAiB,KAAK,SAAS;wBACxC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,iBAAiB,EAAE;wBACvC,CAAC,CAAC,EAAE,CAAC;iBACR;aACF,CAAC,CACH,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,mDAAmD;YACnD,EAAE;YACF,sEAAsE;YACtE,uEAAuE;YACvE,yEAAyE;YACzE,sEAAsE;YACtE,sEAAsE;YACtE,EAAE;YACF,qEAAqE;YACrE,wEAAwE;YACxE,mEAAmE;YACnE,uEAAuE;YACvE,gBAAgB;YAChB,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;YACpC,IAAI,SAAS,GAAG,KAAK,CAAC;YACtB,IAAI,cAAyE,CAAC;YAC9E,yCAAyC;YACzC,EAAE;YACF,mEAAmE;YACnE,mEAAmE;YACnE,oEAAoE;YACpE,wEAAwE;YACxE,qEAAqE;YACrE,sEAAsE;YACtE,oEAAoE;YACpE,qDAAqD;YACrD,EAAE;YACF,oEAAoE;YACpE,sEAAsE;YACtE,gEAAgE;YAChE,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;YACzC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACnB,IAAI,CAAC,GAAG,CAAC,aAAa;oBAAE,UAAU,CAAC,KAAK,EAAE,CAAC;YAC7C,CAAC,CAAC,CAAC;YACH,IAAI,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CACzD,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,UAAU,EACjB,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CACpE,EAAE,CAAC;gBACF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAChC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBACvB,QAAQ,CACN,GAAG,EACH,UAAU,CAAC,IAAI,EAAE;wBACf,gBAAgB,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS;qBACrE,CAAC,CACH,CAAC;gBACJ,CAAC;gBACD,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO;oBAAE,SAAS,GAAG,IAAI,CAAC;gBAC1E,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACzD,MAAM,KAAK,GAAG;wBACZ,KAAK,EAAE;4BACL,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,gBAAgB;4BAC/C,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO;yBAC5B;qBACF,CAAC;oBACF,mEAAmE;oBACnE,qEAAqE;oBACrE,8DAA8D;oBAC9D,+DAA+D;oBAC/D,6DAA6D;oBAC7D,+CAA+C;oBAC/C,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;wBACrB,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;wBACrB,MAAM;oBACR,CAAC;oBACD,kEAAkE;oBAClE,mEAAmE;oBACnE,iEAAiE;oBACjE,4DAA4D;oBAC5D,iEAAiE;oBACjE,iEAAiE;oBACjE,gEAAgE;oBAChE,kBAAkB;oBAClB,cAAc,GAAG,KAAK,CAAC;gBACzB,CAAC;YACH,CAAC;YACD,kEAAkE;YAClE,IAAI,CAAC,SAAS,IAAI,cAAc,KAAK,SAAS;gBAAE,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAChF,CAAC;QACD,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;QACzB,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC9B,GAAG,CAAC,GAAG,EAAE,CAAC;QACV,OAAO;IACT,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,MAAM,GACV,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;YACtB,CAAC,CAAC,MAAM,CAAC,MAAM;YACf,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;QACvF,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;QACxC,6DAA6D;QAC7D,EAAE;QACF,0EAA0E;QAC1E,2EAA2E;QAC3E,oEAAoE;QACpE,6DAA6D;QAC7D,0EAA0E;QAC1E,wEAAwE;QACxE,wBAAwB;QACxB,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjG,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE;gBACjB,KAAK,EAAE;oBACL,OAAO,EACL,uCAAuC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI;wBACjE,kFAAkF;oBACpF,IAAI,EAAE,uBAAuB;iBAC9B;gBACD,gBAAgB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,CAAC,aAAa,EAAE;aAC5E,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAClE,QAAQ,CACN,GAAG,EACH,GAAG,EACH,kBAAkB,CAChB,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAC7B,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB,EAChF;YACE,gBAAgB,EAAE;gBAChB,IAAI,EAAE,QAAQ;gBACd,aAAa,EAAE,QAAQ,CAAC,aAAa;gBACrC,GAAG,CAAC,MAAM,CAAC,iBAAiB,KAAK,SAAS;oBACxC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,iBAAiB,EAAE;oBACvC,CAAC,CAAC,EAAE,CAAC;aACR;SACF,CACF,CACF,CAAC;QACF,OAAO;IACT,CAAC;IAED,+DAA+D;IAC/D,sEAAsE;IACtE,sEAAsE;IACtE,mEAAmE;IACnE,iEAAiE;IACjE,oEAAoE;IACpE,+DAA+D;IAC/D,2BAA2B;IAC3B,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,MAAM,oBAAoB,CAClE,EAAE,MAAM,EAAE,EACV;QACE,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,KAAK,EAAE,MAAM,CAAC,KAAK;KACpB,CACF,CAAC;IACF,GAAG,CAAC,SAAS,CAAC,2BAA2B,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IAC5D,MAAM,UAAU,CAAC;IACjB,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAClC,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE,QAAQ,IAAI,SAAS,CAAC;IACnD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,4DAA4D;QAC5D,mDAAmD;QACnD,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE;YACjB,KAAK,EAAE,OAAO,SAAS,CAAC,KAAK,oCAAoC,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK;gBACrF,8BAA8B;YAChC,KAAK,EAAE,SAAS,CAAC,KAAK;SACvB,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IACD,QAAQ,CACN,GAAG,EACH,GAAG,EACH,kBAAkB,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,kBAAkB,EAAE;QAC7F,gBAAgB,EAAE;YAChB,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,KAAK,EAAE,MAAM,CAAC,OAAO;YACrB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,OAAO,EAAE,QAAQ;YACjB,aAAa,EAAE,QAAQ,EAAE,aAAa,IAAI,MAAM,CAAC,aAAa;YAC9D,GAAG,CAAC,MAAM,CAAC,iBAAiB,KAAK,SAAS;gBACxC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,iBAAiB,EAAE;gBACvC,CAAC,CAAC,EAAE,CAAC;SACR;KACF,CAAC,CACH,CAAC;IACF,OAAO;AACT,CAAC;AAGD;;;;;;;;GAQG;AACH,SAAS,UAAU,CAAC,OAAe,EAAE,KAA+B;IAClE,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;QAChE,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;KACjB,CAAC;AACJ,CAAC;AAED,kEAAkE;AAClE,SAAS,OAAO;IACd,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AACvE,CAAC;AAED,SAAS,QAAQ,CAAC,GAAmB,EAAE,OAAgB;IACrD,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAyB,EAAE;IAC/D,2EAA2E;IAC3E,0EAA0E;IAC1E,sEAAsE;IACtE,8DAA8D;IAC9D,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,WAAW,CAAC;IACtC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC;IACzC,0EAA0E;IAC1E,2EAA2E;IAC3E,4EAA4E;IAC5E,2EAA2E;IAC3E,uEAAuE;IACvE,0EAA0E;IAC1E,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;IAC9B,IAAI,SAAS,GAAG,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,eAAe,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;IAChF,IAAI,WAAW,GAAG,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,MAAM,WAAW,GAAG,GAAkB,EAAE;QACtC,IAAI,UAAU,KAAK,SAAS;YAAE,OAAO,UAAU,CAAC;QAChD,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC;QACjC,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;YAC1B,WAAW,GAAG,KAAK,CAAC;YACpB,SAAS,GAAG,iBAAiB,EAAE,IAAI,SAAS,CAAC;QAC/C,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,SAAS,CAAC;IAExB,MAAM,UAAU,GAAG,IAAI,GAAG,EAAyC,CAAC;IACpE,MAAM,cAAc,GAAG,IAAI,GAAG,EAAa,CAAC;IAC5C,sEAAsE;IACtE,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;IAElD;;;;;;;;;;;;OAYG;IACH,MAAM,eAAe,GAAG,EAAE,GAAG,MAAM,CAAC;IAEpC;;;;;OAKG;IACH,MAAM,iBAAiB,GAAG,GAAS,EAAE;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,eAAe,EAAE,CAAC;YAC1C,IAAI,GAAG,GAAG,IAAI,IAAI,eAAe;gBAAE,SAAS;YAC5C,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5B,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACjC,sEAAsE;YACtE,uCAAuC;YACvC,KAAK,IAAI,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,GAAoB,EAAE,GAAmB,EAAW,EAAE;QACzE,IAAI,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,WAAW,EAAE,CAAC;YAAE,OAAO,IAAI,CAAC;QACxE,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;QAC9C,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,+DAA+D;IAC/D,yEAAyE;IACzE,2EAA2E;IAC3E,sEAAsE;IACtE,MAAM,OAAO,GAAG,UAAU,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAE7F,MAAM,IAAI,GAAmB,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAC3D,8DAA8D;QAC9D,MAAM,GAAG,GAAa,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QACzC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,OAAO,CAAC,CAAC;YAE7C,uDAAuD;YACvD,EAAE;YACF,wEAAwE;YACxE,yEAAyE;YACzE,sEAAsE;YACtE,qEAAqE;YACrE,sEAAsE;YACtE,4DAA4D;YAC5D,EAAE;YACF,0EAA0E;YAC1E,wEAAwE;YACxE,sEAAsE;YACtE,uEAAuE;YACvE,yEAAyE;YACzE,uEAAuE;YACvE,wBAAwB;YACxB,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,CAAC;gBAClF,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;oBAC1B,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,iCAAiC,EAAE,CAAC,CAAC;oBAC1E,GAAG,CAAC,GAAG,EAAE,CAAC;oBACV,OAAO;gBACT,CAAC;gBACD,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;gBACpF,OAAO;YACT,CAAC;YAED,IAAI,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;gBAC1D,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;oBAAE,OAAO;gBACnC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;gBAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;gBAC3B,MAAM,MAAM,GAAG,MAAM,WAAW,CAC9B,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,WAAW,CAClB,CAAC;gBACF,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;gBAC9C,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE;oBACjB,MAAM,EAAE,MAAM;oBACd,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;wBAClC,EAAE,EAAE,KAAK,CAAC,EAAE;wBACZ,MAAM,EAAE,OAAO;wBACf,OAAO;wBACP,QAAQ,EAAE,kBAAkB;wBAC5B,gBAAgB,EAAE;4BAChB,OAAO,EAAE,KAAK,CAAC,OAAO;4BACtB,OAAO,EAAE,KAAK,CAAC,OAAO;4BACtB,SAAS,EAAE,KAAK,CAAC,SAAS;4BAC1B,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;4BACtC,IAAI,EAAE,KAAK,CAAC,IAAI;4BAChB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI;4BAC1B,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI;4BAC/B,aAAa,EAAE,KAAK,CAAC,sBAAsB;4BAC3C,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,IAAI;yBAC/B;qBACF,CAAC,CAAC;iBACJ,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAED,IAAI,GAAG,CAAC,QAAQ,KAAK,WAAW,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;gBACzD,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;oBAAE,OAAO;gBACnC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;gBAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;gBAC3B,MAAM,MAAM,GAAG,MAAM,WAAW,CAC9B,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,WAAW,CAClB,CAAC;gBACF,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;gBACvC,OAAO;YACT,CAAC;YAED,IAAI,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;gBAC1D,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;oBAAE,OAAO;gBACnC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;gBAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;gBAC3B,QAAQ,CACN,GAAG,EACH,GAAG,EACH,MAAM,WAAW,CACf,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,WAAW,CAClB,CACF,CAAC;gBACF,OAAO;YACT,CAAC;YAED,IAAI,GAAG,CAAC,QAAQ,KAAK,sBAAsB,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBACrE,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;oBAAE,OAAO;gBACnC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;gBAC7B,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;gBACrD,MAAM,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBACtD,OAAO;YACT,CAAC;YAED,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAC9B,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;oBAAE,OAAO;gBACnC,iBAAiB,EAAE,CAAC;gBACpB,MAAM,SAAS,GAAI,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAwB,IAAI,SAAS,CAAC;gBACrF,IAAI,SAAwC,CAAC;gBAC7C,qEAAqE;gBACrE,qCAAqC;gBACrC,IAAI,WAAkC,CAAC;gBACvC,IAAI,SAAS,IAAI,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC3C,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;oBACvC,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC7C,CAAC;qBAAM,CAAC;oBACN,MAAM,aAAa,GAAG,sBAAsB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;oBAC/D,WAAW,GAAG,aAAa,CAAC;oBAC5B,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;oBAClC,SAAS,GAAG,IAAI,6BAA6B,CAAC;wBAC5C,kBAAkB,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE;wBACtC,oBAAoB,EAAE,CAAC,GAAW,EAAE,EAAE;4BACpC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;4BAC/B,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;wBACvC,CAAC;qBACF,CAAC,CAAC;oBACH,6DAA6D;oBAC7D,oEAAoE;oBACpE,kEAAkE;oBAClE,4DAA4D;oBAC5D,+DAA+D;oBAC/D,8DAA8D;oBAC9D,iEAAiE;oBACjE,4DAA4D;oBAC5D,SAAS,CAAC,OAAO,GAAG,GAAG,EAAE;wBACvB,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;4BACxB,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;4BACvC,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;wBAC9C,CAAC;wBACD,cAAc,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;oBACvC,CAAC,CAAC;oBACF,MAAM,aAAa,CAAC,OAAO,CAAC,SAAiC,CAAC,CAAC;gBACjE,CAAC;gBACD,MAAM,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBACxC,uEAAuE;gBACvE,EAAE;gBACF,mEAAmE;gBACnE,qEAAqE;gBACrE,kDAAkD;gBAClD,uEAAuE;gBACvE,qEAAqE;gBACrE,uEAAuE;gBACvE,qEAAqE;gBACrE,4DAA4D;gBAC5D,IAAI,WAAW,KAAK,SAAS,IAAI,SAAS,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;oBACnE,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;oBACnC,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;gBACnD,CAAC;gBACD,OAAO;YACT,CAAC;YAED,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBAChB,kEAAkE;gBAClE,2DAA2D;gBAC3D,qEAAqE;gBACrE,4CAA4C;gBAC5C,IAAI,CAAC;oBACH,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;oBACxF,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;gBAChC,CAAC;gBAAC,MAAM,CAAC;oBACP,gDAAgD;gBAClD,CAAC;gBACD,GAAG,CAAC,GAAG,EAAE,CAAC;YACZ,CAAC;iBAAM,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;gBAC5B,IAAI,GAAG,YAAY,oBAAoB,EAAE,CAAC;oBACxC,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC7C,CAAC;qBAAM,IAAI,GAAG,YAAY,eAAe,EAAE,CAAC;oBAC1C,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC7C,CAAC;qBAAM,CAAC;oBACN,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAClF,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,GAAG,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,6EAA6E;IAC7E,wEAAwE;IACxE,uEAAuE;IACvE,uEAAuE;IACvE,2EAA2E;IAC3E,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,MAAM,OAAO,GAAG,CAAC,GAA0B,EAAQ,EAAE;YACnD,MAAM,KAAK,GAAG,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;YAChC,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC9B,MAAM,CACJ,IAAI,KAAK,CACP,QAAQ,IAAI,yBAAyB,IAAI,kCAAkC;oBACzE,+EAA+E,CAClF,CACF,CAAC;YACJ,CAAC;iBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACjC,qEAAqE;gBACrE,oEAAoE;gBACpE,oEAAoE;gBACpE,oEAAoE;gBACpE,sEAAsE;gBACtE,qEAAqE;gBACrE,uBAAuB;gBACvB,MAAM,CACJ,IAAI,KAAK,CACP,yBAAyB,KAAK,kDAAkD;oBAC9E,2EAA2E;oBAC3E,6EAA6E;oBAC7E,qCAAqC,CACxC,CACF,CAAC;YACJ,CAAC;iBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;gBACxC,MAAM,CAAC,IAAI,KAAK,CAAC,eAAe,KAAK,mDAAmD,CAAC,CAAC,CAAC;YAC7F,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,KAAK,CAAC,kBAAkB,KAAK,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE;YAC3B,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACtC,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IAC5B,MAAM,UAAU,GAAG,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAEvE,4EAA4E;IAC5E,sEAAsE;IACtE,0EAA0E;IAC1E,yEAAyE;IACzE,uCAAuC;IACvC,KAAK,uBAAuB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAEtD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,2CAA2C,IAAI,+BAA+B;YAC5E,0EAA0E;YAC1E,yEAAyE;YACzE,yEAAyE;YACzE,sBAAsB,CACzB,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,IAAI;QACJ,KAAK;QACL;;;;;;;;WAQG;QACH,eAAe,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI;QAC1C,KAAK,CAAC,KAAK;YACT,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC5C,IAAI,CAAC;oBACH,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;gBAC1B,CAAC;gBAAC,MAAM,CAAC;oBACP,cAAc;gBAChB,CAAC;YACH,CAAC;YACD,UAAU,CAAC,KAAK,EAAE,CAAC;YACnB,KAAK,MAAM,aAAa,IAAI,cAAc,EAAE,CAAC;gBAC3C,IAAI,CAAC;oBACH,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC;gBAC9B,CAAC;gBAAC,MAAM,CAAC;oBACP,cAAc;gBAChB,CAAC;YACH,CAAC;YACD,cAAc,CAAC,KAAK,EAAE,CAAC;YACvB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACpE,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAe,CAAC"}
@@ -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"}