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,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).toString("utf8") });
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: buf.toString("utf8") });
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).toString("utf8") });
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: buf.toString("utf8") });
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":"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"}
1
+ {"version":3,"file":"stream-subprocess.js","sourceRoot":"","sources":["../../../src/dispatchers/shared/stream-subprocess.ts"],"names":[],"mappings":"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"}
@@ -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
- export declare function withFileLock<T>(file: string, fn: () => T): T;
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
@@ -1 +1 @@
1
- {"version":3,"file":"file-lock.d.ts","sourceRoot":"","sources":["../src/file-lock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAiDH,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CA0E5D"}
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
  }
@@ -1 +1 @@
1
- {"version":3,"file":"file-lock.js","sourceRoot":"","sources":["../src/file-lock.ts"],"names":[],"mappings":"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"}
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"}
@@ -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;AAI/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;AAgPD,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,CAiEA;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"}
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"}
@@ -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 {
@@ -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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"}
@@ -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;AAS1B,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;CACtB;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;AAgVD,wBAAsB,eAAe,CAAC,IAAI,GAAE,gBAAqB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAwP5F;AAED,eAAO,MAAM,kBAAkB,wBAAkB,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"}