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.
- package/CHANGELOG.md +1170 -1
- package/README.md +52 -6
- package/config.default.yaml +49 -5
- package/dist/auth.d.ts +29 -0
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +58 -5
- package/dist/auth.js.map +1 -1
- package/dist/billing.d.ts +24 -0
- package/dist/billing.d.ts.map +1 -1
- package/dist/billing.js +24 -0
- package/dist/billing.js.map +1 -1
- package/dist/bin.d.ts.map +1 -1
- package/dist/bin.js +529 -31
- package/dist/bin.js.map +1 -1
- package/dist/breaker-store.d.ts +25 -1
- package/dist/breaker-store.d.ts.map +1 -1
- package/dist/breaker-store.js +193 -25
- package/dist/breaker-store.js.map +1 -1
- package/dist/circuit-breaker.d.ts +9 -1
- package/dist/circuit-breaker.d.ts.map +1 -1
- package/dist/circuit-breaker.js +15 -1
- package/dist/circuit-breaker.js.map +1 -1
- package/dist/client-register.d.ts +157 -0
- package/dist/client-register.d.ts.map +1 -0
- package/dist/client-register.js +389 -0
- package/dist/client-register.js.map +1 -0
- package/dist/config/validation.d.ts +41 -0
- package/dist/config/validation.d.ts.map +1 -1
- package/dist/config/validation.js +215 -1
- package/dist/config/validation.js.map +1 -1
- package/dist/config.d.ts +4 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +143 -6
- package/dist/config.js.map +1 -1
- package/dist/configure-yaml.d.ts +2 -0
- package/dist/configure-yaml.d.ts.map +1 -1
- package/dist/configure-yaml.js +69 -3
- package/dist/configure-yaml.js.map +1 -1
- package/dist/dispatch-log.d.ts +14 -0
- package/dist/dispatch-log.d.ts.map +1 -1
- package/dist/dispatch-log.js +3 -0
- package/dist/dispatch-log.js.map +1 -1
- package/dist/dispatchers/generic-cli.d.ts.map +1 -1
- package/dist/dispatchers/generic-cli.js +92 -15
- package/dist/dispatchers/generic-cli.js.map +1 -1
- package/dist/dispatchers/openai-compatible.d.ts +20 -4
- package/dist/dispatchers/openai-compatible.d.ts.map +1 -1
- package/dist/dispatchers/openai-compatible.js +167 -19
- package/dist/dispatchers/openai-compatible.js.map +1 -1
- package/dist/dispatchers/shared/harness-login.d.ts +25 -0
- package/dist/dispatchers/shared/harness-login.d.ts.map +1 -0
- package/dist/dispatchers/shared/harness-login.js +68 -0
- package/dist/dispatchers/shared/harness-login.js.map +1 -0
- package/dist/dispatchers/shared/stream-subprocess.d.ts.map +1 -1
- package/dist/dispatchers/shared/stream-subprocess.js +70 -4
- package/dist/dispatchers/shared/stream-subprocess.js.map +1 -1
- package/dist/file-lock.d.ts +29 -1
- package/dist/file-lock.d.ts.map +1 -1
- package/dist/file-lock.js +22 -1
- package/dist/file-lock.js.map +1 -1
- package/dist/http/answer-stream.d.ts +52 -0
- package/dist/http/answer-stream.d.ts.map +1 -0
- package/dist/http/answer-stream.js +47 -0
- package/dist/http/answer-stream.js.map +1 -0
- package/dist/http/parse.d.ts.map +1 -1
- package/dist/http/parse.js +41 -0
- package/dist/http/parse.js.map +1 -1
- package/dist/http/server.d.ts +2 -0
- package/dist/http/server.d.ts.map +1 -1
- package/dist/http/server.js +281 -23
- package/dist/http/server.js.map +1 -1
- package/dist/jobs/context.d.ts +0 -7
- package/dist/jobs/context.d.ts.map +1 -1
- package/dist/jobs/context.js +95 -7
- package/dist/jobs/context.js.map +1 -1
- package/dist/jobs/store.d.ts.map +1 -1
- package/dist/jobs/store.js +45 -4
- package/dist/jobs/store.js.map +1 -1
- package/dist/jobs/types.d.ts +8 -1
- package/dist/jobs/types.d.ts.map +1 -1
- package/dist/jobs.d.ts +39 -0
- package/dist/jobs.d.ts.map +1 -1
- package/dist/jobs.js +207 -15
- package/dist/jobs.js.map +1 -1
- package/dist/leaderboard.d.ts.map +1 -1
- package/dist/leaderboard.js +39 -27
- package/dist/leaderboard.js.map +1 -1
- package/dist/mcp/config-hot-reload.d.ts +14 -3
- package/dist/mcp/config-hot-reload.d.ts.map +1 -1
- package/dist/mcp/config-hot-reload.js +33 -5
- package/dist/mcp/config-hot-reload.js.map +1 -1
- package/dist/mcp/dispatcher-factory.d.ts.map +1 -1
- package/dist/mcp/dispatcher-factory.js +14 -3
- package/dist/mcp/dispatcher-factory.js.map +1 -1
- package/dist/mcp/near-miss-guard.d.ts +45 -0
- package/dist/mcp/near-miss-guard.d.ts.map +1 -0
- package/dist/mcp/near-miss-guard.js +98 -0
- package/dist/mcp/near-miss-guard.js.map +1 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +36 -0
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tool-schemas.d.ts +1 -1
- package/dist/mcp/tool-schemas.d.ts.map +1 -1
- package/dist/mcp/tool-schemas.js +27 -7
- package/dist/mcp/tool-schemas.js.map +1 -1
- package/dist/mcp/tools.d.ts +33 -4
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +85 -8
- package/dist/mcp/tools.js.map +1 -1
- package/dist/mcp-clients.d.ts +72 -0
- package/dist/mcp-clients.d.ts.map +1 -0
- package/dist/mcp-clients.js +121 -0
- package/dist/mcp-clients.js.map +1 -0
- package/dist/near-miss.d.ts +63 -0
- package/dist/near-miss.d.ts.map +1 -0
- package/dist/near-miss.js +132 -0
- package/dist/near-miss.js.map +1 -0
- package/dist/quota.d.ts +31 -1
- package/dist/quota.d.ts.map +1 -1
- package/dist/quota.js +84 -8
- package/dist/quota.js.map +1 -1
- package/dist/route-policy.d.ts +12 -1
- package/dist/route-policy.d.ts.map +1 -1
- package/dist/route-policy.js +74 -2
- package/dist/route-policy.js.map +1 -1
- package/dist/router.d.ts +61 -2
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +160 -29
- package/dist/router.js.map +1 -1
- package/dist/safety.d.ts.map +1 -1
- package/dist/safety.js +37 -1
- package/dist/safety.js.map +1 -1
- package/dist/state-dir.d.ts +10 -0
- package/dist/state-dir.d.ts.map +1 -1
- package/dist/state-dir.js +12 -0
- package/dist/state-dir.js.map +1 -1
- package/dist/status.d.ts +30 -21
- package/dist/status.d.ts.map +1 -1
- package/dist/status.js +152 -8
- package/dist/status.js.map +1 -1
- package/dist/types.d.ts +49 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/working-dir.d.ts.map +1 -1
- package/dist/working-dir.js +16 -0
- package/dist/working-dir.js.map +1 -1
- package/dist/workspace-resolve.d.ts.map +1 -1
- package/dist/workspace-resolve.js +196 -15
- package/dist/workspace-resolve.js.map +1 -1
- package/dist/workspaces.d.ts +98 -0
- package/dist/workspaces.d.ts.map +1 -1
- package/dist/workspaces.js +609 -20
- package/dist/workspaces.js.map +1 -1
- package/package.json +1 -1
package/dist/http/server.js
CHANGED
|
@@ -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(
|
|
47
|
-
const settled = await Promise.allSettled(routes.map((route) =>
|
|
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
|
|
78
|
+
const { route, job } = s.value;
|
|
79
|
+
const r = job.result?.result;
|
|
51
80
|
return {
|
|
52
|
-
route
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
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(
|
|
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
|
-
|
|
163
|
-
|
|
164
|
-
|
|
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
|
-
|
|
169
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
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 {
|
package/dist/http/server.js.map
CHANGED
|
@@ -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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"}
|
package/dist/jobs/context.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|