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
|
@@ -1,3 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Streaming subprocess runner.
|
|
3
|
+
*
|
|
4
|
+
* Companion to `runSubprocess` — same spawn/kill/timeout semantics but emits
|
|
5
|
+
* stdout and stderr chunks as the child writes them via an `AsyncIterable`.
|
|
6
|
+
* A bounded internal queue protects against runaway processes flooding memory
|
|
7
|
+
* (exceeding the bound kills the child).
|
|
8
|
+
*
|
|
9
|
+
* There is NO backpressure, and this said there was ("consumers drive
|
|
10
|
+
* backpressure by how fast they iterate"). Nothing pauses the child's stdout,
|
|
11
|
+
* so a slow consumer does not slow the producer — the queue grows instead,
|
|
12
|
+
* and past `maxBufferedChunks` the child is killed and the iterator REJECTS,
|
|
13
|
+
* which in the job runner marks a healthy run failed and discards its result.
|
|
14
|
+
* Not reached at the shipped bound of 1000 in measurement, but the behaviour
|
|
15
|
+
* when it is reached is wrong, and the reader deserves to know which of the
|
|
16
|
+
* two it is relying on.
|
|
17
|
+
*
|
|
18
|
+
* The iterator yields `{ stream, chunk }` tuples until the child exits,
|
|
19
|
+
* whereupon it yields a single terminal `{ kind: "end", exitCode, timedOut,
|
|
20
|
+
* durationMs }` event before signalling completion to the consumer.
|
|
21
|
+
*
|
|
22
|
+
* Cancellation: calling `.return()` on the iterator (which `for await ... of`
|
|
23
|
+
* does automatically when you `break` or throw) sends SIGTERM to the child
|
|
24
|
+
* and drains any remaining buffered chunks. If the child doesn't exit within
|
|
25
|
+
* a grace window, SIGKILL is sent.
|
|
26
|
+
*
|
|
27
|
+
* Test compatibility: if `runSubprocess` from `./subprocess.js` has been
|
|
28
|
+
* replaced with a vi.fn() mock, `streamSubprocess` delegates to it and
|
|
29
|
+
* synthesises a single `stdout` + `end` event from the buffered result. This
|
|
30
|
+
* lets the existing dispatcher test suites (which mock `runSubprocess`) keep
|
|
31
|
+
* working without modification while still exercising the streaming code
|
|
32
|
+
* path in production.
|
|
33
|
+
*/
|
|
34
|
+
import { StringDecoder } from "node:string_decoder";
|
|
1
35
|
import spawn from "cross-spawn";
|
|
2
36
|
import { killTree } from "./kill-tree.js";
|
|
3
37
|
import { runSubprocess } from "./subprocess.js";
|
|
@@ -96,7 +130,39 @@ function realStreamSubprocess(command, args, opts) {
|
|
|
96
130
|
}
|
|
97
131
|
}
|
|
98
132
|
}
|
|
133
|
+
// One decoder per stream, held across chunks.
|
|
134
|
+
//
|
|
135
|
+
// Each `data` buffer used to be decoded on its own with `buf.toString()`, so
|
|
136
|
+
// any multi-byte character straddling two reads became replacement
|
|
137
|
+
// characters. Reproduced: a child writing "price: € done", split inside
|
|
138
|
+
// the euro sign, arrived as "price: ��� done".
|
|
139
|
+
//
|
|
140
|
+
// This is the path every MCP job uses — partialOutput, stdout.log, result.md
|
|
141
|
+
// — so accented text, CJK, emoji and box-drawing were being corrupted in
|
|
142
|
+
// delivered work product. The buffered sibling in subprocess.ts concatenates
|
|
143
|
+
// before decoding and was always correct, which is why only the path nothing
|
|
144
|
+
// but tests exercise looked right.
|
|
145
|
+
//
|
|
146
|
+
// StringDecoder holds an incomplete sequence back until the bytes that
|
|
147
|
+
// finish it arrive; `end()` at teardown flushes whatever never completed.
|
|
148
|
+
const stdoutDecoder = new StringDecoder("utf8");
|
|
149
|
+
const stderrDecoder = new StringDecoder("utf8");
|
|
99
150
|
function finish() {
|
|
151
|
+
// Flush whatever the decoders were holding back.
|
|
152
|
+
//
|
|
153
|
+
// A StringDecoder withholds an incomplete multi-byte sequence until the
|
|
154
|
+
// bytes completing it arrive. If the child exits mid-character — a
|
|
155
|
+
// truncated run, a kill, a crash partway through a write — those bytes
|
|
156
|
+
// would otherwise be dropped silently, which is the same class of loss the
|
|
157
|
+
// decoders were added to prevent, just at the end instead of the middle.
|
|
158
|
+
// `end()` returns them as replacement characters: visibly wrong beats
|
|
159
|
+
// invisibly absent.
|
|
160
|
+
const tailOut = stdoutDecoder.end();
|
|
161
|
+
if (tailOut !== "")
|
|
162
|
+
push({ stream: "stdout", chunk: tailOut });
|
|
163
|
+
const tailErr = stderrDecoder.end();
|
|
164
|
+
if (tailErr !== "")
|
|
165
|
+
push({ stream: "stderr", chunk: tailErr });
|
|
100
166
|
done = true;
|
|
101
167
|
while (waiters.length > 0) {
|
|
102
168
|
const w = waiters.shift();
|
|
@@ -160,7 +226,7 @@ function realStreamSubprocess(command, args, opts) {
|
|
|
160
226
|
if (stdoutBytes + buf.length > maxOutputBytes) {
|
|
161
227
|
const remaining = Math.max(0, maxOutputBytes - stdoutBytes);
|
|
162
228
|
if (remaining > 0) {
|
|
163
|
-
push({ stream: "stdout", chunk: buf.subarray(0, remaining)
|
|
229
|
+
push({ stream: "stdout", chunk: stdoutDecoder.write(buf.subarray(0, remaining)) });
|
|
164
230
|
}
|
|
165
231
|
stdoutBytes = maxOutputBytes;
|
|
166
232
|
truncated = true;
|
|
@@ -168,7 +234,7 @@ function realStreamSubprocess(command, args, opts) {
|
|
|
168
234
|
return;
|
|
169
235
|
}
|
|
170
236
|
stdoutBytes += buf.length;
|
|
171
|
-
push({ stream: "stdout", chunk:
|
|
237
|
+
push({ stream: "stdout", chunk: stdoutDecoder.write(buf) });
|
|
172
238
|
});
|
|
173
239
|
child.stderr?.on("data", (buf) => {
|
|
174
240
|
if (truncated)
|
|
@@ -176,7 +242,7 @@ function realStreamSubprocess(command, args, opts) {
|
|
|
176
242
|
if (stderrBytes + buf.length > maxOutputBytes) {
|
|
177
243
|
const remaining = Math.max(0, maxOutputBytes - stderrBytes);
|
|
178
244
|
if (remaining > 0) {
|
|
179
|
-
push({ stream: "stderr", chunk: buf.subarray(0, remaining)
|
|
245
|
+
push({ stream: "stderr", chunk: stderrDecoder.write(buf.subarray(0, remaining)) });
|
|
180
246
|
}
|
|
181
247
|
stderrBytes = maxOutputBytes;
|
|
182
248
|
truncated = true;
|
|
@@ -184,7 +250,7 @@ function realStreamSubprocess(command, args, opts) {
|
|
|
184
250
|
return;
|
|
185
251
|
}
|
|
186
252
|
stderrBytes += buf.length;
|
|
187
|
-
push({ stream: "stderr", chunk:
|
|
253
|
+
push({ stream: "stderr", chunk: stderrDecoder.write(buf) });
|
|
188
254
|
});
|
|
189
255
|
child.on("error", (err) => {
|
|
190
256
|
if (settled)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream-subprocess.js","sourceRoot":"","sources":["../../../src/dispatchers/shared/stream-subprocess.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stream-subprocess.js","sourceRoot":"","sources":["../../../src/dispatchers/shared/stream-subprocess.ts"],"names":[],"mappings":"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"}
|
package/dist/file-lock.d.ts
CHANGED
|
@@ -13,5 +13,33 @@
|
|
|
13
13
|
* section. Both callers here do; getting that wrong is what made the first
|
|
14
14
|
* attempt at each of these fixes ineffective.
|
|
15
15
|
*/
|
|
16
|
-
|
|
16
|
+
/**
|
|
17
|
+
* Run `fn` holding an exclusive cross-process lock on one route's file.
|
|
18
|
+
*
|
|
19
|
+
* mkdir is the atomic test-and-set here: it fails if the directory exists, on
|
|
20
|
+
* every platform, and unlike `writeFile` with `wx` it needs no cleanup path
|
|
21
|
+
* distinct from the directory itself. Synchronous on purpose — the callers
|
|
22
|
+
* (BreakerStore.update via Router.handleResult, and CLI paths that exit
|
|
23
|
+
* immediately afterwards) are sync, and making them async to acquire a lock
|
|
24
|
+
* would ripple through the whole dispatch return path for no benefit.
|
|
25
|
+
*
|
|
26
|
+
* Failing to acquire runs `fn` anyway rather than dropping the update: an
|
|
27
|
+
* un-serialised write is what we had before, so the fallback is no worse than
|
|
28
|
+
* the old behaviour, while a dropped failure would be strictly worse.
|
|
29
|
+
*
|
|
30
|
+
* That reasoning holds for a caller with NOTHING to fall back on, and it is
|
|
31
|
+
* why BreakerStore still uses the default. It does not hold for a caller that
|
|
32
|
+
* can retry: QuotaCache accumulates a pending delta and only clears it once a
|
|
33
|
+
* write succeeds, so for it a deferred write loses nothing while an
|
|
34
|
+
* unserialised one silently loses counts — it clears the delta believing the
|
|
35
|
+
* write was serialised, and the real lock holder then overwrites the file with
|
|
36
|
+
* a value computed before that write existed. `requireLock` is for that case:
|
|
37
|
+
* throw instead of running unserialised, and let the caller try again.
|
|
38
|
+
*/
|
|
39
|
+
export declare class LockNotAcquiredError extends Error {
|
|
40
|
+
constructor(file: string);
|
|
41
|
+
}
|
|
42
|
+
export declare function withFileLock<T>(file: string, fn: () => T, opts?: {
|
|
43
|
+
requireLock?: boolean;
|
|
44
|
+
}): T;
|
|
17
45
|
//# sourceMappingURL=file-lock.d.ts.map
|
package/dist/file-lock.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-lock.d.ts","sourceRoot":"","sources":["../src/file-lock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;
|
|
1
|
+
{"version":3,"file":"file-lock.d.ts","sourceRoot":"","sources":["../src/file-lock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAmBH;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,IAAI,EAAE,MAAM;CAOzB;AAiBD,wBAAgB,YAAY,CAAC,CAAC,EAC5B,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,CAAC,EACX,IAAI,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,GACnC,CAAC,CA+EH"}
|
package/dist/file-lock.js
CHANGED
|
@@ -39,7 +39,23 @@ const LOCK_TIMEOUT_MS = 2_000;
|
|
|
39
39
|
* Failing to acquire runs `fn` anyway rather than dropping the update: an
|
|
40
40
|
* un-serialised write is what we had before, so the fallback is no worse than
|
|
41
41
|
* the old behaviour, while a dropped failure would be strictly worse.
|
|
42
|
+
*
|
|
43
|
+
* That reasoning holds for a caller with NOTHING to fall back on, and it is
|
|
44
|
+
* why BreakerStore still uses the default. It does not hold for a caller that
|
|
45
|
+
* can retry: QuotaCache accumulates a pending delta and only clears it once a
|
|
46
|
+
* write succeeds, so for it a deferred write loses nothing while an
|
|
47
|
+
* unserialised one silently loses counts — it clears the delta believing the
|
|
48
|
+
* write was serialised, and the real lock holder then overwrites the file with
|
|
49
|
+
* a value computed before that write existed. `requireLock` is for that case:
|
|
50
|
+
* throw instead of running unserialised, and let the caller try again.
|
|
42
51
|
*/
|
|
52
|
+
export class LockNotAcquiredError extends Error {
|
|
53
|
+
constructor(file) {
|
|
54
|
+
super(`Could not acquire the lock on ${file} within ${LOCK_TIMEOUT_MS}ms — not running ` +
|
|
55
|
+
`unserialised, because this caller can retry.`);
|
|
56
|
+
this.name = "LockNotAcquiredError";
|
|
57
|
+
}
|
|
58
|
+
}
|
|
43
59
|
/**
|
|
44
60
|
* Block this thread briefly without spinning.
|
|
45
61
|
*
|
|
@@ -56,7 +72,7 @@ function sleepSync(ms) {
|
|
|
56
72
|
// immediately; the deadline still bounds the loop.
|
|
57
73
|
}
|
|
58
74
|
}
|
|
59
|
-
export function withFileLock(file, fn) {
|
|
75
|
+
export function withFileLock(file, fn, opts = {}) {
|
|
60
76
|
const lockDir = `${file}.lock`;
|
|
61
77
|
// Ensure the parent exists before trying to lock inside it: a caller whose
|
|
62
78
|
// state directory has not been created yet would otherwise spin against an
|
|
@@ -126,6 +142,11 @@ export function withFileLock(file, fn) {
|
|
|
126
142
|
sleepSync(RETRY_MS);
|
|
127
143
|
}
|
|
128
144
|
}
|
|
145
|
+
if (!held && opts.requireLock === true) {
|
|
146
|
+
// Nothing to clean up: the lock was never taken, and the directory that
|
|
147
|
+
// blocked us belongs to whoever is holding it.
|
|
148
|
+
throw new LockNotAcquiredError(file);
|
|
149
|
+
}
|
|
129
150
|
try {
|
|
130
151
|
return fn();
|
|
131
152
|
}
|
package/dist/file-lock.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-lock.js","sourceRoot":"","sources":["../src/file-lock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACrE,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B;;;;;GAKG;AACH,MAAM,aAAa,GAAG,MAAM,CAAC;AAE7B,mEAAmE;AACnE,MAAM,QAAQ,GAAG,EAAE,CAAC;AAEpB,yDAAyD;AACzD,MAAM,eAAe,GAAG,KAAK,CAAC;AAE9B
|
|
1
|
+
{"version":3,"file":"file-lock.js","sourceRoot":"","sources":["../src/file-lock.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a streaming HTTP client should be shown, from what a dispatcher emits.
|
|
3
|
+
*
|
|
4
|
+
* WHY THIS IS A SEPARATE FUNCTION. The streaming branch forwarded every stdout
|
|
5
|
+
* chunk into `delta.content`. For an OpenAI-compatible endpoint that is
|
|
6
|
+
* correct — those chunks ARE the assistant's text. For a CLI harness they are
|
|
7
|
+
* protocol: a client concatenating deltas received
|
|
8
|
+
* `{"type":"thread.started",...}` and internal ids, while the non-streaming
|
|
9
|
+
* call on the same endpoint returned the parsed answer.
|
|
10
|
+
*
|
|
11
|
+
* It lives here, apart from the request handler, because the bug is only
|
|
12
|
+
* visible in the DIFFERENCE between those two event shapes — and a test that
|
|
13
|
+
* drives the HTTP server can only produce one of them per machine. An
|
|
14
|
+
* endpoint-backed test cannot tell "forward everything" from "forward the
|
|
15
|
+
* answer" (both look right), and a CLI-backed one depends on which harnesses
|
|
16
|
+
* happen to be installed, which is how a green test ends up proving nothing.
|
|
17
|
+
* As a function over an event sequence, both shapes are ordinary inputs.
|
|
18
|
+
*/
|
|
19
|
+
import type { DispatcherEvent } from "../types.js";
|
|
20
|
+
/**
|
|
21
|
+
* Returns the text to emit for one event, or undefined for events a user
|
|
22
|
+
* should not see.
|
|
23
|
+
*
|
|
24
|
+
* Stateful by necessity: whether the final parsed answer should be sent
|
|
25
|
+
* depends on whether anything was already streamed. Sending both would deliver
|
|
26
|
+
* the answer twice.
|
|
27
|
+
*/
|
|
28
|
+
export declare function createAnswerStream(): AnswerStream;
|
|
29
|
+
export interface AnswerStream {
|
|
30
|
+
/** Text to emit for this event, or undefined for events a user should not see. */
|
|
31
|
+
next(event: DispatcherEvent): string | undefined;
|
|
32
|
+
/**
|
|
33
|
+
* True once any answer text has been sent to the client.
|
|
34
|
+
*
|
|
35
|
+
* Once it is, this request is COMMITTED to the route that sent it, and a
|
|
36
|
+
* failure has to end the response rather than fall back.
|
|
37
|
+
*
|
|
38
|
+
* Falling back after streaming produced the worst of both: an acceptance
|
|
39
|
+
* pass measured an endpoint streaming "he", "llo ", then dying — the client
|
|
40
|
+
* got those two deltas and an error frame, while the dispatch log showed the
|
|
41
|
+
* fallback route had succeeded with 49 characters of output. The answer was
|
|
42
|
+
* produced, charged for, and thrown away, because a fresh answer cannot be
|
|
43
|
+
* spliced onto a half-sent one without garbling it.
|
|
44
|
+
*
|
|
45
|
+
* Stopping is the honest resolution: the client gets a truthful error
|
|
46
|
+
* instead of a mangled message, and no second route is billed for work that
|
|
47
|
+
* could never be delivered. Falling back BEFORE anything is sent still
|
|
48
|
+
* happens, which is the case fallback exists for.
|
|
49
|
+
*/
|
|
50
|
+
readonly committed: boolean;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=answer-stream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"answer-stream.d.ts","sourceRoot":"","sources":["../../src/http/answer-stream.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,IAAI,YAAY,CAkBjD;AAED,MAAM,WAAW,YAAY;IAC3B,kFAAkF;IAClF,IAAI,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,GAAG,SAAS,CAAC;IACjD;;;;;;;;;;;;;;;;;OAiBG;IACH,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a streaming HTTP client should be shown, from what a dispatcher emits.
|
|
3
|
+
*
|
|
4
|
+
* WHY THIS IS A SEPARATE FUNCTION. The streaming branch forwarded every stdout
|
|
5
|
+
* chunk into `delta.content`. For an OpenAI-compatible endpoint that is
|
|
6
|
+
* correct — those chunks ARE the assistant's text. For a CLI harness they are
|
|
7
|
+
* protocol: a client concatenating deltas received
|
|
8
|
+
* `{"type":"thread.started",...}` and internal ids, while the non-streaming
|
|
9
|
+
* call on the same endpoint returned the parsed answer.
|
|
10
|
+
*
|
|
11
|
+
* It lives here, apart from the request handler, because the bug is only
|
|
12
|
+
* visible in the DIFFERENCE between those two event shapes — and a test that
|
|
13
|
+
* drives the HTTP server can only produce one of them per machine. An
|
|
14
|
+
* endpoint-backed test cannot tell "forward everything" from "forward the
|
|
15
|
+
* answer" (both look right), and a CLI-backed one depends on which harnesses
|
|
16
|
+
* happen to be installed, which is how a green test ends up proving nothing.
|
|
17
|
+
* As a function over an event sequence, both shapes are ordinary inputs.
|
|
18
|
+
*/
|
|
19
|
+
/**
|
|
20
|
+
* Returns the text to emit for one event, or undefined for events a user
|
|
21
|
+
* should not see.
|
|
22
|
+
*
|
|
23
|
+
* Stateful by necessity: whether the final parsed answer should be sent
|
|
24
|
+
* depends on whether anything was already streamed. Sending both would deliver
|
|
25
|
+
* the answer twice.
|
|
26
|
+
*/
|
|
27
|
+
export function createAnswerStream() {
|
|
28
|
+
let streamedAnswer = false;
|
|
29
|
+
return {
|
|
30
|
+
next(event) {
|
|
31
|
+
if (event.type === "stdout" && event.text === true) {
|
|
32
|
+
streamedAnswer = true;
|
|
33
|
+
return event.chunk;
|
|
34
|
+
}
|
|
35
|
+
if (event.type === "completion" && event.result.success) {
|
|
36
|
+
if (streamedAnswer || event.result.output === "")
|
|
37
|
+
return undefined;
|
|
38
|
+
return event.result.output;
|
|
39
|
+
}
|
|
40
|
+
return undefined;
|
|
41
|
+
},
|
|
42
|
+
get committed() {
|
|
43
|
+
return streamedAnswer;
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=answer-stream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"answer-stream.js","sourceRoot":"","sources":["../../src/http/answer-stream.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB;IAChC,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,OAAO;QACL,IAAI,CAAC,KAAK;YACR,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBACnD,cAAc,GAAG,IAAI,CAAC;gBACtB,OAAO,KAAK,CAAC,KAAK,CAAC;YACrB,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACxD,IAAI,cAAc,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,EAAE;oBAAE,OAAO,SAAS,CAAC;gBACnE,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;YAC7B,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,SAAS;YACX,OAAO,cAAc,CAAC;QACxB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/http/parse.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/http/parse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAGjD,OAAO,KAAK,EAAE,UAAU,EAAmB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/http/parse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAGjD,OAAO,KAAK,EAAE,UAAU,EAAmB,MAAM,aAAa,CAAC;AAK/D,gFAAgF;AAChF,qBAAa,oBAAqB,SAAQ,KAAK;CAAG;AAElD,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAGhB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAKD,eAAO,MAAM,sBAAsB,QAAmB,CAAC;AAEvD;;;;;;;;GAQG;AACH,qBAAa,eAAgB,SAAQ,KAAK;CAAG;AAE7C,+EAA+E;AAC/E,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAEzC,wBAAsB,QAAQ,CAC5B,GAAG,EAAE,eAAe,EACpB,QAAQ,GAAE,MAA+B,GACxC,OAAO,CAAC,OAAO,CAAC,CAwBlB;AA2ED;;;;;;;GAOG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAIxD;AA+QD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC1B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,UAAU,CAAC;CACnB,CA4EA;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAezB"}
|
package/dist/http/parse.js
CHANGED
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
* refusal to HTTP 400 rather than letting it fail later as a 500.
|
|
15
15
|
*/
|
|
16
16
|
import { randomUUID } from "node:crypto";
|
|
17
|
+
import { nearMissHintKey, nearMissMessage } from "../near-miss.js";
|
|
17
18
|
import { resolveWorkingDir, validateWorkingDir, workingDirWarning } from "../working-dir.js";
|
|
18
19
|
import { MAX_TIMEOUT_MS } from "../mcp/tool-schemas.js";
|
|
19
20
|
/** Raised for anything the caller can fix; mapped to HTTP 400 by the server. */
|
|
@@ -236,6 +237,20 @@ function parseHints(body) {
|
|
|
236
237
|
["timeout_ms", "this API spells it timeoutMs"],
|
|
237
238
|
["working_dir", "this API spells it workingDir"],
|
|
238
239
|
["context_jobs", "contextJobs is an MCP tool parameter and is not supported here"],
|
|
240
|
+
// The key this endpoint uses in its OWN responses (http/server.ts), so
|
|
241
|
+
// wrapping a request's hints in it is the natural wrong guess — an
|
|
242
|
+
// acceptance pass reached for it first. Wrapped that way every hint
|
|
243
|
+
// vanished on a 200, and the dispatch ran at the default workspace_edit:
|
|
244
|
+
// more access than the caller asked for, with no signal.
|
|
245
|
+
["harness_dispatch", "put hints at the top level or inside `hints`"],
|
|
246
|
+
["harnessDispatch", "put hints at the top level or inside `hints`"],
|
|
247
|
+
// This product's OWN CLI flag is `--safety`, which makes the bare name the
|
|
248
|
+
// most plausible slip anyone will make here — and it is seven edits from
|
|
249
|
+
// `safetyProfile`, so the near-miss rule correctly declines to guess. It
|
|
250
|
+
// was accepted and dropped, and the dispatch ran at the default profile:
|
|
251
|
+
// the "more access than you asked for" class this whole mechanism exists
|
|
252
|
+
// for, reachable by typing the name the CLI taught you.
|
|
253
|
+
["safety", "this API spells it safetyProfile"],
|
|
239
254
|
]) {
|
|
240
255
|
if (body[wrong] !== undefined) {
|
|
241
256
|
throw new BadRequestError(`${wrong} is not a field — ${advice}. It was previously accepted and ` +
|
|
@@ -243,6 +258,23 @@ function parseHints(body) {
|
|
|
243
258
|
`with MORE access than you asked for.`);
|
|
244
259
|
}
|
|
245
260
|
}
|
|
261
|
+
// A near-miss of a hint name, at the top level.
|
|
262
|
+
//
|
|
263
|
+
// The named list above catches the snake_case spellings, which are the
|
|
264
|
+
// predictable slip. A plain typo is not predictable and had the same
|
|
265
|
+
// consequence: `safteyProfile` was accepted and dropped, so the dispatch ran
|
|
266
|
+
// at the looser default and answered 200. The outer object cannot be strict
|
|
267
|
+
// — it carries OpenAI's own fields — so this asks a narrower question: is
|
|
268
|
+
// this key ALMOST one of ours? None of OpenAI's field names come near one,
|
|
269
|
+
// and a key that is genuinely unrelated stays legitimate.
|
|
270
|
+
for (const key of Object.keys(body)) {
|
|
271
|
+
const meant = nearMissHintKey(key);
|
|
272
|
+
if (meant !== undefined) {
|
|
273
|
+
// All seven hint names are read from the top level here, so the advice
|
|
274
|
+
// is "top level" — the opposite of what MCP needs for five of them.
|
|
275
|
+
throw new BadRequestError(nearMissMessage(key, meant, { surface: "http" }));
|
|
276
|
+
}
|
|
277
|
+
}
|
|
246
278
|
// MCP parameters this surface does not implement. Both were accepted and
|
|
247
279
|
// DISCARDED on a 200: `contextJobs` meant the delegate ran without the prior
|
|
248
280
|
// work the caller believed it had sent — the same harm that justified
|
|
@@ -410,6 +442,15 @@ export function parseChatRequest(raw) {
|
|
|
410
442
|
// never got. MCP rejects both arrays by name.
|
|
411
443
|
const files = stringArray(body.files, "files");
|
|
412
444
|
const models = stringArray(body.models, "models");
|
|
445
|
+
// An explicit `models: []` is refused here exactly as MCP refuses it: it
|
|
446
|
+
// fell through to the same branch as "omitted" and fanned out to every
|
|
447
|
+
// eligible route. A caller who sent an empty array built a list that came
|
|
448
|
+
// out empty; omitting the field is how you ask for everything.
|
|
449
|
+
if (Array.isArray(body.models) && models.length === 0) {
|
|
450
|
+
throw new BadRequestError("models: [] selects no routes. Omit `models` entirely to fan out to every " +
|
|
451
|
+
"eligible route (expensive — one dispatch per route), or name at least one. " +
|
|
452
|
+
"An empty list is usually a filter that matched nothing.");
|
|
453
|
+
}
|
|
413
454
|
const resolvedWorkingDir = resolveWorkingDir(typeof body.workingDir === "string" ? body.workingDir : undefined);
|
|
414
455
|
const warning = workingDirWarning(resolvedWorkingDir);
|
|
415
456
|
return {
|
package/dist/http/parse.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../../src/http/parse.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../../src/http/parse.ts"],"names":[],"mappings":"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"}
|
package/dist/http/server.d.ts
CHANGED
|
@@ -5,6 +5,8 @@ export interface HttpServerHandle extends McpHandle {
|
|
|
5
5
|
port: number;
|
|
6
6
|
host: string;
|
|
7
7
|
token: string | null;
|
|
8
|
+
/** Live per-session MCP servers. See the implementation for why it is exposed. */
|
|
9
|
+
openMcpSessions: () => number;
|
|
8
10
|
}
|
|
9
11
|
export interface StartHttpOptions extends BuildMcpOptions {
|
|
10
12
|
port?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/http/server.ts"],"names":[],"mappings":"AAQA,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,SAAS,EACf,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/http/server.ts"],"names":[],"mappings":"AAQA,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,SAAS,EACf,MAAM,kBAAkB,CAAC;AAW1B,OAAO,EACL,eAAe,EAKhB,MAAM,YAAY,CAAC;AAKpB,OAAO,EAAE,eAAe,EAAE,CAAC;AAG3B,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,kFAAkF;IAClF,eAAe,EAAE,MAAM,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,gBAAiB,SAAQ,eAAe;IACvD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AA8dD,wBAAsB,eAAe,CAAC,IAAI,GAAE,gBAAqB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAiX5F;AAED,eAAO,MAAM,kBAAkB,wBAAkB,CAAC"}
|