@animalabs/agent-framework 0.22.4 → 0.23.1

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 (234) hide show
  1. package/README.md +105 -3
  2. package/dist/src/agent.d.ts +36 -10
  3. package/dist/src/agent.d.ts.map +1 -1
  4. package/dist/src/agent.js +76 -32
  5. package/dist/src/agent.js.map +1 -1
  6. package/dist/src/code-execution/index.d.ts +1 -1
  7. package/dist/src/code-execution/index.d.ts.map +1 -1
  8. package/dist/src/code-execution/index.js.map +1 -1
  9. package/dist/src/code-execution/py-runner.d.ts +34 -2
  10. package/dist/src/code-execution/py-runner.d.ts.map +1 -1
  11. package/dist/src/code-execution/py-runner.js +72 -16
  12. package/dist/src/code-execution/py-runner.js.map +1 -1
  13. package/dist/src/code-execution/runtime-py.d.ts +3 -2
  14. package/dist/src/code-execution/runtime-py.d.ts.map +1 -1
  15. package/dist/src/code-execution/runtime-py.js +47 -7
  16. package/dist/src/code-execution/runtime-py.js.map +1 -1
  17. package/dist/src/code-execution/tool-definition.d.ts +12 -7
  18. package/dist/src/code-execution/tool-definition.d.ts.map +1 -1
  19. package/dist/src/code-execution/tool-definition.js +59 -11
  20. package/dist/src/code-execution/tool-definition.js.map +1 -1
  21. package/dist/src/config-checks.d.ts +2 -2
  22. package/dist/src/config-checks.d.ts.map +1 -1
  23. package/dist/src/config-checks.js +6 -2
  24. package/dist/src/config-checks.js.map +1 -1
  25. package/dist/src/framework.d.ts +744 -120
  26. package/dist/src/framework.d.ts.map +1 -1
  27. package/dist/src/framework.js +3546 -906
  28. package/dist/src/framework.js.map +1 -1
  29. package/dist/src/gate/event-gate.d.ts.map +1 -1
  30. package/dist/src/gate/event-gate.js +13 -6
  31. package/dist/src/gate/event-gate.js.map +1 -1
  32. package/dist/src/held-writes.d.ts +16 -0
  33. package/dist/src/held-writes.d.ts.map +1 -0
  34. package/dist/src/held-writes.js +56 -0
  35. package/dist/src/held-writes.js.map +1 -0
  36. package/dist/src/index.d.ts +7 -3
  37. package/dist/src/index.d.ts.map +1 -1
  38. package/dist/src/index.js +8 -4
  39. package/dist/src/index.js.map +1 -1
  40. package/dist/src/mcpl/capability-grant.d.ts +4 -0
  41. package/dist/src/mcpl/capability-grant.d.ts.map +1 -1
  42. package/dist/src/mcpl/capability-grant.js +1 -1
  43. package/dist/src/mcpl/capability-grant.js.map +1 -1
  44. package/dist/src/mcpl/channel-registry.d.ts +95 -18
  45. package/dist/src/mcpl/channel-registry.d.ts.map +1 -1
  46. package/dist/src/mcpl/channel-registry.js +578 -150
  47. package/dist/src/mcpl/channel-registry.js.map +1 -1
  48. package/dist/src/mcpl/convert-block.d.ts +2 -2
  49. package/dist/src/mcpl/convert-block.d.ts.map +1 -1
  50. package/dist/src/mcpl/convert-block.js +6 -7
  51. package/dist/src/mcpl/convert-block.js.map +1 -1
  52. package/dist/src/mcpl/index.d.ts +5 -1
  53. package/dist/src/mcpl/index.d.ts.map +1 -1
  54. package/dist/src/mcpl/index.js +3 -1
  55. package/dist/src/mcpl/index.js.map +1 -1
  56. package/dist/src/mcpl/inference-router.d.ts +4 -2
  57. package/dist/src/mcpl/inference-router.d.ts.map +1 -1
  58. package/dist/src/mcpl/inference-router.js +6 -7
  59. package/dist/src/mcpl/inference-router.js.map +1 -1
  60. package/dist/src/mcpl/log-value.d.ts +7 -0
  61. package/dist/src/mcpl/log-value.d.ts.map +1 -1
  62. package/dist/src/mcpl/log-value.js +9 -0
  63. package/dist/src/mcpl/log-value.js.map +1 -1
  64. package/dist/src/mcpl/modern-connection.d.ts +227 -0
  65. package/dist/src/mcpl/modern-connection.d.ts.map +1 -0
  66. package/dist/src/mcpl/modern-connection.js +1088 -0
  67. package/dist/src/mcpl/modern-connection.js.map +1 -0
  68. package/dist/src/mcpl/prefix-rule.d.ts +18 -0
  69. package/dist/src/mcpl/prefix-rule.d.ts.map +1 -0
  70. package/dist/src/mcpl/prefix-rule.js +25 -0
  71. package/dist/src/mcpl/prefix-rule.js.map +1 -0
  72. package/dist/src/mcpl/protocol-family.d.ts +179 -0
  73. package/dist/src/mcpl/protocol-family.d.ts.map +1 -0
  74. package/dist/src/mcpl/protocol-family.js +697 -0
  75. package/dist/src/mcpl/protocol-family.js.map +1 -0
  76. package/dist/src/mcpl/push-coalescer.d.ts +38 -19
  77. package/dist/src/mcpl/push-coalescer.d.ts.map +1 -1
  78. package/dist/src/mcpl/push-coalescer.js +52 -23
  79. package/dist/src/mcpl/push-coalescer.js.map +1 -1
  80. package/dist/src/mcpl/reference-fetcher.d.ts +66 -15
  81. package/dist/src/mcpl/reference-fetcher.d.ts.map +1 -1
  82. package/dist/src/mcpl/reference-fetcher.js +243 -76
  83. package/dist/src/mcpl/reference-fetcher.js.map +1 -1
  84. package/dist/src/mcpl/references.d.ts +63 -18
  85. package/dist/src/mcpl/references.d.ts.map +1 -1
  86. package/dist/src/mcpl/references.js +117 -32
  87. package/dist/src/mcpl/references.js.map +1 -1
  88. package/dist/src/mcpl/server-connection.d.ts +326 -30
  89. package/dist/src/mcpl/server-connection.d.ts.map +1 -1
  90. package/dist/src/mcpl/server-connection.js +995 -212
  91. package/dist/src/mcpl/server-connection.js.map +1 -1
  92. package/dist/src/mcpl/server-registry.d.ts +25 -5
  93. package/dist/src/mcpl/server-registry.d.ts.map +1 -1
  94. package/dist/src/mcpl/server-registry.js +51 -12
  95. package/dist/src/mcpl/server-registry.js.map +1 -1
  96. package/dist/src/mcpl/tool-result-normalize.d.ts +54 -0
  97. package/dist/src/mcpl/tool-result-normalize.d.ts.map +1 -0
  98. package/dist/src/mcpl/tool-result-normalize.js +232 -0
  99. package/dist/src/mcpl/tool-result-normalize.js.map +1 -0
  100. package/dist/src/mcpl/transport.d.ts +56 -13
  101. package/dist/src/mcpl/transport.d.ts.map +1 -1
  102. package/dist/src/mcpl/transport.js +206 -70
  103. package/dist/src/mcpl/transport.js.map +1 -1
  104. package/dist/src/mcpl/types.d.ts +66 -20
  105. package/dist/src/mcpl/types.d.ts.map +1 -1
  106. package/dist/src/mcpl/types.js.map +1 -1
  107. package/dist/src/mcpl/visible-content.d.ts +2 -1
  108. package/dist/src/mcpl/visible-content.d.ts.map +1 -1
  109. package/dist/src/mcpl/visible-content.js +2 -1
  110. package/dist/src/mcpl/visible-content.js.map +1 -1
  111. package/dist/src/module-registry.d.ts +16 -6
  112. package/dist/src/module-registry.d.ts.map +1 -1
  113. package/dist/src/module-registry.js +65 -6
  114. package/dist/src/module-registry.js.map +1 -1
  115. package/dist/src/modules/api/index.d.ts +1 -1
  116. package/dist/src/modules/api/index.d.ts.map +1 -1
  117. package/dist/src/modules/api/index.js +3 -2
  118. package/dist/src/modules/api/index.js.map +1 -1
  119. package/dist/src/modules/discord/discord-js-client.d.ts +42 -2
  120. package/dist/src/modules/discord/discord-js-client.d.ts.map +1 -1
  121. package/dist/src/modules/discord/discord-js-client.js +268 -65
  122. package/dist/src/modules/discord/discord-js-client.js.map +1 -1
  123. package/dist/src/modules/discord/index.d.ts +27 -5
  124. package/dist/src/modules/discord/index.d.ts.map +1 -1
  125. package/dist/src/modules/discord/index.js +366 -76
  126. package/dist/src/modules/discord/index.js.map +1 -1
  127. package/dist/src/modules/discord/refusal.d.ts +14 -0
  128. package/dist/src/modules/discord/refusal.d.ts.map +1 -0
  129. package/dist/src/modules/discord/refusal.js +14 -0
  130. package/dist/src/modules/discord/refusal.js.map +1 -0
  131. package/dist/src/modules/discord/types.d.ts +17 -7
  132. package/dist/src/modules/discord/types.d.ts.map +1 -1
  133. package/dist/src/modules/health/index.d.ts.map +1 -1
  134. package/dist/src/modules/health/index.js +6 -2
  135. package/dist/src/modules/health/index.js.map +1 -1
  136. package/dist/src/modules/index.d.ts +1 -1
  137. package/dist/src/modules/index.d.ts.map +1 -1
  138. package/dist/src/modules/index.js +1 -1
  139. package/dist/src/modules/index.js.map +1 -1
  140. package/dist/src/modules/workspace/disk-agreement.d.ts +25 -2
  141. package/dist/src/modules/workspace/disk-agreement.d.ts.map +1 -1
  142. package/dist/src/modules/workspace/disk-agreement.js +45 -5
  143. package/dist/src/modules/workspace/disk-agreement.js.map +1 -1
  144. package/dist/src/modules/workspace/effects.d.ts +2 -1
  145. package/dist/src/modules/workspace/effects.d.ts.map +1 -1
  146. package/dist/src/modules/workspace/effects.js +19 -9
  147. package/dist/src/modules/workspace/effects.js.map +1 -1
  148. package/dist/src/modules/workspace/index.d.ts +214 -42
  149. package/dist/src/modules/workspace/index.d.ts.map +1 -1
  150. package/dist/src/modules/workspace/index.js +667 -113
  151. package/dist/src/modules/workspace/index.js.map +1 -1
  152. package/dist/src/modules/workspace/observe.d.ts +240 -8
  153. package/dist/src/modules/workspace/observe.d.ts.map +1 -1
  154. package/dist/src/modules/workspace/observe.js +554 -24
  155. package/dist/src/modules/workspace/observe.js.map +1 -1
  156. package/dist/src/modules/workspace/types.d.ts +10 -1
  157. package/dist/src/modules/workspace/types.d.ts.map +1 -1
  158. package/dist/src/modules/workspace/types.js.map +1 -1
  159. package/dist/src/modules/workspace/watcher.d.ts +42 -0
  160. package/dist/src/modules/workspace/watcher.d.ts.map +1 -1
  161. package/dist/src/modules/workspace/watcher.js +130 -25
  162. package/dist/src/modules/workspace/watcher.js.map +1 -1
  163. package/dist/src/silent-heartbeat.d.ts +112 -39
  164. package/dist/src/silent-heartbeat.d.ts.map +1 -1
  165. package/dist/src/silent-heartbeat.js +100 -29
  166. package/dist/src/silent-heartbeat.js.map +1 -1
  167. package/dist/src/tool-args.d.ts +40 -0
  168. package/dist/src/tool-args.d.ts.map +1 -0
  169. package/dist/src/tool-args.js +207 -0
  170. package/dist/src/tool-args.js.map +1 -0
  171. package/dist/src/tool-presentation.d.ts.map +1 -1
  172. package/dist/src/tool-presentation.js +9 -2
  173. package/dist/src/tool-presentation.js.map +1 -1
  174. package/dist/src/types/agent.d.ts +27 -17
  175. package/dist/src/types/agent.d.ts.map +1 -1
  176. package/dist/src/types/events.d.ts +8 -0
  177. package/dist/src/types/events.d.ts.map +1 -1
  178. package/dist/src/types/framework.d.ts +17 -2
  179. package/dist/src/types/framework.d.ts.map +1 -1
  180. package/dist/src/types/module.d.ts +54 -10
  181. package/dist/src/types/module.d.ts.map +1 -1
  182. package/dist/src/types/trace.d.ts +2 -2
  183. package/dist/src/types/trace.d.ts.map +1 -1
  184. package/package.json +3 -4
  185. package/src/agent.ts +99 -36
  186. package/src/code-execution/index.ts +1 -0
  187. package/src/code-execution/py-runner.ts +104 -17
  188. package/src/code-execution/runtime-py.ts +47 -7
  189. package/src/code-execution/tool-definition.ts +65 -11
  190. package/src/config-checks.ts +4 -2
  191. package/src/framework.ts +3633 -956
  192. package/src/gate/event-gate.ts +14 -6
  193. package/src/held-writes.ts +59 -0
  194. package/src/index.ts +19 -4
  195. package/src/mcpl/capability-grant.ts +1 -1
  196. package/src/mcpl/channel-registry.ts +613 -160
  197. package/src/mcpl/convert-block.ts +15 -7
  198. package/src/mcpl/index.ts +14 -1
  199. package/src/mcpl/inference-router.ts +8 -7
  200. package/src/mcpl/log-value.ts +10 -0
  201. package/src/mcpl/modern-connection.ts +1182 -0
  202. package/src/mcpl/prefix-rule.ts +32 -0
  203. package/src/mcpl/protocol-family.ts +691 -0
  204. package/src/mcpl/push-coalescer.ts +67 -29
  205. package/src/mcpl/reference-fetcher.ts +288 -82
  206. package/src/mcpl/references.ts +123 -33
  207. package/src/mcpl/server-connection.ts +1050 -221
  208. package/src/mcpl/server-registry.ts +50 -12
  209. package/src/mcpl/tool-result-normalize.ts +294 -0
  210. package/src/mcpl/transport.ts +204 -62
  211. package/src/mcpl/types.ts +67 -20
  212. package/src/mcpl/visible-content.ts +2 -1
  213. package/src/module-registry.ts +68 -13
  214. package/src/modules/api/index.ts +3 -2
  215. package/src/modules/discord/discord-js-client.ts +288 -72
  216. package/src/modules/discord/index.ts +380 -77
  217. package/src/modules/discord/refusal.ts +13 -0
  218. package/src/modules/discord/types.ts +17 -9
  219. package/src/modules/health/index.ts +6 -2
  220. package/src/modules/index.ts +1 -1
  221. package/src/modules/workspace/disk-agreement.ts +46 -5
  222. package/src/modules/workspace/effects.ts +18 -7
  223. package/src/modules/workspace/index.ts +722 -124
  224. package/src/modules/workspace/observe.ts +591 -22
  225. package/src/modules/workspace/types.ts +10 -1
  226. package/src/modules/workspace/watcher.ts +126 -25
  227. package/src/silent-heartbeat.ts +184 -59
  228. package/src/tool-args.ts +213 -0
  229. package/src/tool-presentation.ts +9 -2
  230. package/src/types/agent.ts +27 -17
  231. package/src/types/events.ts +8 -0
  232. package/src/types/framework.ts +17 -2
  233. package/src/types/module.ts +55 -10
  234. package/src/types/trace.ts +2 -2
@@ -20,6 +20,7 @@ import { createInterface } from 'node:readline';
20
20
  import { EventEmitter } from 'node:events';
21
21
  import { StringDecoder } from 'node:string_decoder';
22
22
  import WebSocket from 'ws';
23
+ import { describeCredentialError, noteDialSent, redactUrl, resolveServerBinding, urlAsDialed } from './protocol-family.js';
23
24
  import { assertBooleanSetting } from '../config-checks.js';
24
25
  import { logDetail } from './log-value.js';
25
26
  /**
@@ -30,6 +31,9 @@ import { logDetail } from './log-value.js';
30
31
  * - `'stderr'` `(line: string)` diagnostic line (stdio child stderr; never WS)
31
32
  * - `'error'` `(err: Error)` transport-level error
32
33
  * - `'close'` `(info: TransportCloseInfo)` transport closed (once)
34
+ * - `'unreaped'` `(failure: Error)` a stdio child whose pipe failed
35
+ * outlived SIGKILL too: the transport stays open, owning the child, and
36
+ * close() retries the reap (never WS)
33
37
  *
34
38
  * Inbound `'line'`/`'stderr'` events are buffered until the first matching
35
39
  * listener attaches (and re-buffered whenever there are none), so no message is
@@ -74,6 +78,16 @@ export class McplTransport extends EventEmitter {
74
78
  get stderrTail() {
75
79
  return '';
76
80
  }
81
+ /**
82
+ * The error a stdio child's stdin or stdout failed with, once one has. The
83
+ * transport is ending the child then, and stays open until it exits, but
84
+ * writes nothing more to it: writeLine drops each line, and both engines
85
+ * refuse a request as not sent. Undefined while writes go out, and always
86
+ * for a transport that has no pipes.
87
+ */
88
+ get pipeFailure() {
89
+ return undefined;
90
+ }
77
91
  /**
78
92
  * Resolves once the server's diagnostic stream has ended or closed, so that
79
93
  * {@link stderrTail} holds what arrived on it, or once `ms` have passed while
@@ -145,7 +159,8 @@ export const CHILD_ENV_ALLOWLIST = [
145
159
  'http_proxy', 'https_proxy', 'no_proxy',
146
160
  '__CF_USER_TEXT_ENCODING',
147
161
  // Windows equivalents, harmless elsewhere.
148
- 'SYSTEMROOT', 'WINDIR', 'COMSPEC', 'PATHEXT', 'APPDATA', 'LOCALAPPDATA', 'USERPROFILE',
162
+ // USERNAME is Windows' USER, which Python's getpass.getuser() reads there.
163
+ 'SYSTEMROOT', 'WINDIR', 'COMSPEC', 'PATHEXT', 'APPDATA', 'LOCALAPPDATA', 'USERPROFILE', 'USERNAME',
149
164
  ];
150
165
  /** Environment for a stdio child: allowlisted host vars (+ LC_*), then the
151
166
  * server's declared `env` on top. Windows names merge case-insensitively;
@@ -218,6 +233,9 @@ export class StdioTransport extends McplTransport {
218
233
  get stderrTail() {
219
234
  return (this.stderrCut ? '…' : '') + this.stderrEnd;
220
235
  }
236
+ get pipeFailure() {
237
+ return this.pipeError;
238
+ }
221
239
  stderrEnded(ms) {
222
240
  const stderr = this.child.stderr;
223
241
  if (!stderr || this.stderrDone)
@@ -237,7 +255,10 @@ export class StdioTransport extends McplTransport {
237
255
  timer = setTimeout(done, ms);
238
256
  });
239
257
  }
240
- constructor(child, rl, serverId) {
258
+ constructor(child, rl,
259
+ /** The server this child serves, named in its stderr lines and in what
260
+ * its reaping reports. */
261
+ serverId) {
241
262
  super(serverId);
242
263
  this.child = child;
243
264
  this.rl = rl;
@@ -274,17 +295,28 @@ export class StdioTransport extends McplTransport {
274
295
  this.child.on('error', (err) => this.reportError(err));
275
296
  // The child's stdin and stdout carry the protocol, so after an error on
276
297
  // either, a write's EPIPE or a read error, this transport can't reach the
277
- // child even if it's still running. The handler sends a running child
278
- // SIGTERM, and the exit's close names the error, so the connection handles
279
- // it as any other exit. The close is the report: no 'error' is emitted,
280
- // nothing is thrown. Nothing here escalates to SIGKILL, so a child that
281
- // ignores SIGTERM keeps running, unreported. A child that stops reading
282
- // without closing its stdin raises no error: the writes are buffered, and
283
- // only request timeouts bound it (McplServerConfig.requestTimeoutMs).
298
+ // child even if it's still running. The handler ends the child as close()
299
+ // does, SIGTERM and then SIGKILL, in the one attempt close() shares, and
300
+ // the exit's close names the error, so the connection handles it as any
301
+ // other exit. The close is the report: no 'error' is emitted, nothing is
302
+ // thrown, and nothing more is written meanwhile (pipeFailure). The first
303
+ // error starts that one attempt, and a later one, from either pipe, adds
304
+ // nothing to it. A child that outlives SIGKILL too stays this
305
+ // transport's: 'unreaped' says so, unless the host is closing it, whose
306
+ // close() reports the failure itself. A child that stops reading without
307
+ // closing its stdin raises no error: the writes are buffered, and only
308
+ // request timeouts bound it (McplServerConfig.requestTimeoutMs). Under
309
+ // Bun a child that closes its stdin isn't reported either: Bun emits no
310
+ // 'error' for the writes to it (checked on 1.3.10, 1.4.3 and 1.4.4's
311
+ // canary), so request timeouts are its only bound too.
284
312
  const endOnPipeError = (err) => {
285
- this.pipeError ??= err;
286
- if (this.child.exitCode === null && this.child.signalCode === null)
287
- this.child.kill();
313
+ if (this.pipeError)
314
+ return;
315
+ this.pipeError = err;
316
+ void this.terminate().catch((failure) => {
317
+ if (!this.closed)
318
+ this.emit('unreaped', failure instanceof Error ? failure : new Error(String(failure)));
319
+ });
288
320
  };
289
321
  this.child.stdin?.on('error', endOnPipeError);
290
322
  // On the stream itself, since close() closes readline, which takes its own
@@ -337,35 +369,101 @@ export class StdioTransport extends McplTransport {
337
369
  return new StdioTransport(child, rl, config.id);
338
370
  }
339
371
  writeLine(json) {
372
+ // Nothing more goes to a child whose stdin or stdout has failed: this
373
+ // transport is ending it.
374
+ if (this.pipeError)
375
+ return;
340
376
  // stdin may be gone if the child died between the closed-check and here.
341
377
  this.child.stdin?.write(json + '\n');
342
378
  }
343
- async close() {
379
+ closing = null;
380
+ /**
381
+ * Close and reap: resolves once the child has actually exited, not merely
382
+ * been signalled (`child.killed` is true as soon as a signal is sent). A
383
+ * child that outlives SIGTERM by {@link STDIO_EXIT_GRACE_MS} gets SIGKILL.
384
+ * If it still hasn't exited after that bound again, close rejects: an
385
+ * explicit cleanup failure, rather than waiting forever or claiming an
386
+ * exit that wasn't seen. Calls share one attempt, and so does a pipe
387
+ * failure that is already ending the child; a later call succeeds if the
388
+ * child has exited since.
389
+ */
390
+ close() {
391
+ if (!this.closing) {
392
+ this.closing = this.reap();
393
+ return this.closing;
394
+ }
395
+ // A later call re-checks a failed verdict: a child that has exited since
396
+ // is reaped now. No new signals are sent.
397
+ return this.closing.catch((error) => {
398
+ if (this.exited())
399
+ return;
400
+ throw error;
401
+ });
402
+ }
403
+ async reap() {
344
404
  this.markClosed({ reason: 'closed by host' });
345
405
  this.rl.close();
346
- if (this.child && !this.child.killed) {
347
- this.child.kill();
348
- }
349
- await new Promise((resolve) => {
350
- // Once Node has seen a child exit, it has its exitCode set, or its
351
- // signalCode when a signal ended it, and its 'exit' event has fired. A
352
- // signal that didn't come through kill() (an OOM kill, a crash) leaves
353
- // `killed` false. A child that has exited but isn't reaped yet still
354
- // takes the kill() above, which sets `killed`.
355
- if (!this.child || this.child.exitCode !== null || this.child.signalCode !== null || this.child.killed) {
356
- resolve();
357
- }
358
- else {
359
- this.child.once('exit', () => resolve());
360
- }
406
+ await this.terminate();
407
+ }
408
+ /** Whether the child has exited, or never started (a spawn error). */
409
+ exited() {
410
+ return this.child.pid === undefined || this.child.exitCode !== null || this.child.signalCode !== null;
411
+ }
412
+ terminating = null;
413
+ /**
414
+ * End the child: SIGTERM, then SIGKILL once it has outlived SIGTERM by
415
+ * {@link STDIO_EXIT_GRACE_MS}. Resolves once it has exited; rejects if it
416
+ * still hasn't that long after SIGKILL. close() and a pipe failure share
417
+ * one attempt, so no second signal or timer goes out. A failed attempt is
418
+ * re-checked, not repeated: a child that has exited since resolves it.
419
+ */
420
+ terminate() {
421
+ this.terminating ??= this.escalate();
422
+ return this.terminating.catch((error) => {
423
+ if (this.exited())
424
+ return;
425
+ throw error;
361
426
  });
362
427
  }
428
+ async escalate() {
429
+ const child = this.child;
430
+ if (this.exited())
431
+ return;
432
+ const exited = new Promise((resolve) => child.once('exit', () => resolve()));
433
+ const exitWithin = (ms) => new Promise((resolve) => {
434
+ const timer = setTimeout(() => resolve(false), ms);
435
+ void exited.then(() => { clearTimeout(timer); resolve(true); });
436
+ });
437
+ child.kill('SIGTERM');
438
+ if (await exitWithin(STDIO_EXIT_GRACE_MS))
439
+ return;
440
+ const named = `stdio child ${child.pid} of MCP server "${this.serverId}"`;
441
+ console.error(`[mcpl] ${named} ignored SIGTERM for ${STDIO_EXIT_GRACE_MS}ms — sending SIGKILL`);
442
+ child.kill('SIGKILL');
443
+ if (await exitWithin(STDIO_EXIT_GRACE_MS))
444
+ return;
445
+ throw new Error(`${named} did not exit within ${STDIO_EXIT_GRACE_MS}ms of SIGKILL; it could not be reaped`);
446
+ }
363
447
  }
448
+ /** How long a stdio child gets to exit after SIGTERM, and again after SIGKILL. */
449
+ const STDIO_EXIT_GRACE_MS = 2_000;
364
450
  // ---------------------------------------------------------------------------
365
451
  // WebSocket
366
452
  // ---------------------------------------------------------------------------
367
453
  /** Timeout for the WebSocket to reach OPEN before we give up (ms). */
368
454
  const WS_OPEN_TIMEOUT_MS = 15_000;
455
+ /** `work`, or `signal`'s reason once it aborts, whichever comes first. The
456
+ * listener comes off the signal when `work` settles, so a long-lived signal,
457
+ * such as a reconnect loop's, doesn't gather one per dial. */
458
+ function raceAbort(work, signal) {
459
+ if (signal.aborted)
460
+ return Promise.reject(signal.reason);
461
+ return new Promise((resolve, reject) => {
462
+ const onAbort = () => reject(signal.reason);
463
+ signal.addEventListener('abort', onAbort, { once: true });
464
+ work.then(resolve, reject).finally(() => signal.removeEventListener('abort', onAbort));
465
+ });
466
+ }
369
467
  export class WebSocketTransport extends McplTransport {
370
468
  ws;
371
469
  kind = 'websocket';
@@ -391,27 +489,43 @@ export class WebSocketTransport extends McplTransport {
391
489
  /**
392
490
  * Dial `config.url` and resolve once the socket is OPEN. Appends `?token=`
393
491
  * when `config.token` is set. Rejects on connect error / timeout (and tears
394
- * the socket down) so a failed dial never leaks an open handle.
492
+ * the socket down) so a failed dial never leaks an open handle. `signal`
493
+ * ends a dial whose connection is closed meanwhile, at once, rather than
494
+ * at the open timeout.
395
495
  */
396
- static async open(config) {
496
+ static async open(config, signal) {
397
497
  // Resolve the per-dial credential first: the provider runs on every
398
498
  // connect AND reconnect, so rotation happens at the transport layer and
399
499
  // nothing above it ever holds a credential.
400
500
  let token = config.token ?? null;
501
+ const abandoned = () => new Error(`MCPL server "${config.id}" WebSocket connect abandoned: the connection was closed (${redactUrl(config.url)})`);
401
502
  if (config.accessProvider) {
503
+ if (signal?.aborted)
504
+ throw abandoned();
402
505
  try {
403
- token = (await config.accessProvider()) ?? token;
506
+ // A dial whose connection is closed meanwhile stops waiting for the
507
+ // provider; whatever the provider does later is ignored.
508
+ const provided = Promise.resolve(config.accessProvider());
509
+ provided.catch(() => { });
510
+ token = (signal ? await raceAbort(provided, signal) : await provided) ?? token;
404
511
  }
405
512
  catch (err) {
513
+ if (signal?.aborted)
514
+ throw abandoned();
406
515
  // Fall back to the static token (if any) rather than failing the dial
407
516
  // outright — the server will refuse a stale credential loudly anyway.
408
- console.error(`[mcpl] server "${config.id}": access provider failed (${err instanceof Error ? err.message : err}) — dialing with configured fallback`);
517
+ // The provider's own text may quote the credential, so it isn't logged.
518
+ console.error(`[mcpl] server "${config.id}": access provider failed (${describeCredentialError(err)}) — dialing with configured fallback`);
409
519
  }
410
520
  }
411
521
  const url = buildWebSocketUrl(config, token);
522
+ // A provider's token is in this url, and the query may be re-encoded:
523
+ // the server's text is recorded with what the dial sent, the token in
524
+ // each form a token is replaced in.
525
+ noteDialSent(config, { url, token: token ?? undefined });
412
526
  // Error strings travel: traces, logs, tool results the model reads. They
413
527
  // get the endpoint, never the credential.
414
- const redacted = buildWebSocketUrl({ ...config, token: undefined }, null);
528
+ const redacted = redactUrl(config.url);
415
529
  const ws = new WebSocket(url);
416
530
  // A failed dial can emit 'error' MORE THAN ONCE on the raw socket (seen
417
531
  // live 2026-08-03: an HTTP 502 upgrade-reject emits the "Expected 101"
@@ -423,38 +537,41 @@ export class WebSocketTransport extends McplTransport {
423
537
  const swallowLateErrors = () => { };
424
538
  return new Promise((resolve, reject) => {
425
539
  let settled = false;
426
- const timer = setTimeout(() => {
540
+ const abandon = (error) => {
427
541
  if (settled)
428
542
  return;
429
543
  settled = true;
544
+ clearTimeout(timer);
545
+ signal?.removeEventListener('abort', onAbort);
430
546
  ws.removeAllListeners();
431
547
  ws.on('error', swallowLateErrors);
432
548
  try {
433
549
  ws.terminate();
434
550
  }
435
551
  catch { /* already gone */ }
436
- reject(new Error(`MCPL server "${config.id}" WebSocket connect timed out after ${WS_OPEN_TIMEOUT_MS}ms (${redacted})`));
552
+ reject(error);
553
+ };
554
+ const timer = setTimeout(() => {
555
+ abandon(new Error(`MCPL server "${config.id}" WebSocket connect timed out after ${WS_OPEN_TIMEOUT_MS}ms (${redacted})`));
437
556
  }, WS_OPEN_TIMEOUT_MS);
557
+ const onAbort = () => {
558
+ abandon(new Error(`MCPL server "${config.id}" WebSocket connect abandoned: the connection was closed (${redacted})`));
559
+ };
560
+ if (signal?.aborted)
561
+ onAbort();
562
+ else
563
+ signal?.addEventListener('abort', onAbort, { once: true });
438
564
  ws.once('open', () => {
439
565
  if (settled)
440
566
  return;
441
567
  settled = true;
442
568
  clearTimeout(timer);
569
+ signal?.removeEventListener('abort', onAbort);
443
570
  ws.removeAllListeners('error'); // the instance re-attaches its own handlers
444
571
  resolve(new WebSocketTransport(ws, config.id));
445
572
  });
446
573
  ws.once('error', (err) => {
447
- if (settled)
448
- return;
449
- settled = true;
450
- clearTimeout(timer);
451
- ws.removeAllListeners();
452
- ws.on('error', swallowLateErrors);
453
- try {
454
- ws.terminate();
455
- }
456
- catch { /* already gone */ }
457
- reject(new Error(`MCPL server "${config.id}" WebSocket connect failed: ${err.message} (${redacted})`));
574
+ abandon(new Error(`MCPL server "${config.id}" WebSocket connect failed: ${err.message} (${redacted})`));
458
575
  });
459
576
  });
460
577
  }
@@ -485,8 +602,9 @@ export class WebSocketTransport extends McplTransport {
485
602
  }
486
603
  }
487
604
  /**
488
- * Build the dial URL: validate it's a ws(s):// URL and append the auth token as
489
- * a `token` query param when provided (preserving any existing query).
605
+ * Build the dial URL: validate it's a ws(s):// URL the ws library will dial,
606
+ * which refuses one with a fragment, and append the auth token as a `token`
607
+ * query param when provided (preserving any existing query).
490
608
  */
491
609
  export function buildWebSocketUrl(config, tokenOverride) {
492
610
  if (!config.url) {
@@ -497,28 +615,42 @@ export function buildWebSocketUrl(config, tokenOverride) {
497
615
  parsed = new URL(config.url);
498
616
  }
499
617
  catch {
500
- throw new Error(`MCPL server "${config.id}": invalid WebSocket url "${config.url}"`);
618
+ // Not echoed: a url that doesn't parse can't be redacted.
619
+ throw new Error(`MCPL server "${config.id}": invalid WebSocket url (it isn't shown, since it may carry a credential)`);
501
620
  }
502
621
  if (parsed.protocol !== 'ws:' && parsed.protocol !== 'wss:') {
503
622
  throw new Error(`MCPL server "${config.id}": websocket url must be ws:// or wss://, got "${parsed.protocol}"`);
504
623
  }
505
- const token = tokenOverride !== undefined ? tokenOverride : config.token;
506
- if (token) {
507
- parsed.searchParams.set('token', token);
624
+ if (parsed.hash) {
625
+ throw new Error(`MCPL server "${config.id}": websocket url must not have a fragment, got "${parsed.hash}"`);
508
626
  }
509
- return parsed.toString();
627
+ const token = tokenOverride !== undefined ? tokenOverride : config.token;
628
+ return urlAsDialed(parsed, token).toString();
510
629
  }
511
630
  // ---------------------------------------------------------------------------
512
631
  // Factory
513
632
  // ---------------------------------------------------------------------------
514
- /** True when the config selects the WebSocket transport (explicit `transport`,
515
- * or a `url` with no `command`). */
633
+ /** True when the config selects the WebSocket transport, as
634
+ * {@link resolveServerBinding} decides it; false for any other transport and
635
+ * for a configuration it refuses. */
516
636
  export function isWebSocketTransport(config) {
517
- if (config.transport === 'websocket')
518
- return true;
519
- if (config.transport === 'stdio')
637
+ try {
638
+ return resolveServerBinding(config).transport === 'websocket';
639
+ }
640
+ catch {
520
641
  return false;
521
- return Boolean(config.url) && !config.command;
642
+ }
643
+ }
644
+ /** Whether a server's binding dials it, over WebSocket or HTTP. False for a
645
+ * stdio launch, and for a configuration whose binding can't be resolved,
646
+ * which the family check refuses. */
647
+ function dialsNetwork(config) {
648
+ try {
649
+ return resolveServerBinding(config).transport !== 'stdio';
650
+ }
651
+ catch {
652
+ return false;
653
+ }
522
654
  }
523
655
  /** What `true` does for each boolean setting, as its refusal says it. A
524
656
  * boolean setting added to McplServerConfig doesn't compile until it has
@@ -535,26 +667,30 @@ const SERVER_CONFIG_BOOLEANS = {
535
667
  * only `true` as on, so the quotes would hide what the value does. null counts
536
668
  * as not set, so a generated config that writes an unset setting as null
537
669
  * keeps working. `inheritEnv` is checked only for a stdio server, since a
538
- * WebSocket server never reads it. The error names the server, the setting
539
- * and the value's kind, not the value, which could be a secret pasted into
540
- * the wrong field.
670
+ * network server, WebSocket or HTTP, never reads it. The error names the
671
+ * server, the setting and the value's kind, not the value, which could be a
672
+ * secret pasted into the wrong field.
541
673
  */
542
674
  export function assertServerConfigBooleans(config) {
543
675
  for (const [setting, whatTrueDoes] of Object.entries(SERVER_CONFIG_BOOLEANS)) {
544
- if (setting === 'inheritEnv' && isWebSocketTransport(config))
676
+ if (setting === 'inheritEnv' && dialsNetwork(config))
545
677
  continue;
546
678
  assertBooleanSetting(`MCPL server "${config.id}" ${setting}`, config[setting], whatTrueDoes);
547
679
  }
548
680
  }
549
681
  /**
550
- * Open the transport selected by `config` (WebSocket when `transport` is
551
- * 'websocket' or a bare `url` is given; stdio otherwise). The returned transport
552
- * is connected at the byte level but has NOT performed the MCPL handshake.
682
+ * Open the legacy transport `config` selects, as {@link resolveServerBinding}
683
+ * decides it: stdio for a `command`, MCPL's WebSocket binding for a ws(s)://
684
+ * url. A configuration it refuses, or one for the modern family (an http(s)
685
+ * url, or `protocol: 'modern'`), throws before anything is spawned or dialed.
686
+ * The returned transport is connected at the byte level but has NOT
687
+ * performed the MCPL handshake.
553
688
  */
554
- export async function openTransport(config) {
555
- if (isWebSocketTransport(config)) {
556
- return WebSocketTransport.open(config);
689
+ export async function openTransport(config, signal) {
690
+ const binding = resolveServerBinding(config);
691
+ if (binding.family !== 'legacy') {
692
+ throw new Error(`MCP server "${config.id}" is configured for modern MCP; the legacy transports can't open it`);
557
693
  }
558
- return StdioTransport.spawn(config);
694
+ return binding.transport === 'websocket' ? WebSocketTransport.open(config, signal) : StdioTransport.spawn(config);
559
695
  }
560
696
  //# sourceMappingURL=transport.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/mcpl/transport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/mcpl/transport.ts"],"names":[],"mappings":"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"}