botmux 3.18.3 → 3.18.4

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 (63) hide show
  1. package/dist/.runtime-build-id +1 -1
  2. package/dist/adapters/hook-installer.d.ts.map +1 -1
  3. package/dist/adapters/hook-installer.js +75 -2
  4. package/dist/adapters/hook-installer.js.map +1 -1
  5. package/dist/cli/current-actor.d.ts.map +1 -1
  6. package/dist/cli/current-actor.js +2 -1
  7. package/dist/cli/current-actor.js.map +1 -1
  8. package/dist/cli/dashboard-endpoint.d.ts.map +1 -1
  9. package/dist/cli/dashboard-endpoint.js +5 -2
  10. package/dist/cli/dashboard-endpoint.js.map +1 -1
  11. package/dist/cli/exact-chat-grant-client.d.ts.map +1 -1
  12. package/dist/cli/exact-chat-grant-client.js +2 -1
  13. package/dist/cli/exact-chat-grant-client.js.map +1 -1
  14. package/dist/cli/vc-agent.d.ts.map +1 -1
  15. package/dist/cli/vc-agent.js +2 -1
  16. package/dist/cli/vc-agent.js.map +1 -1
  17. package/dist/cli.d.ts.map +1 -1
  18. package/dist/cli.js +7 -6
  19. package/dist/cli.js.map +1 -1
  20. package/dist/core/daemon-ipc-auth.d.ts +9 -1
  21. package/dist/core/daemon-ipc-auth.d.ts.map +1 -1
  22. package/dist/core/daemon-ipc-auth.js +14 -3
  23. package/dist/core/daemon-ipc-auth.js.map +1 -1
  24. package/dist/core/loopback-fetch.d.ts +59 -0
  25. package/dist/core/loopback-fetch.d.ts.map +1 -0
  26. package/dist/core/loopback-fetch.js +347 -0
  27. package/dist/core/loopback-fetch.js.map +1 -0
  28. package/dist/core/managed-origin-attestation.d.ts.map +1 -1
  29. package/dist/core/managed-origin-attestation.js +2 -1
  30. package/dist/core/managed-origin-attestation.js.map +1 -1
  31. package/dist/daemon.d.ts.map +1 -1
  32. package/dist/daemon.js +2 -1
  33. package/dist/daemon.js.map +1 -1
  34. package/dist/dashboard/aggregator.d.ts.map +1 -1
  35. package/dist/dashboard/aggregator.js +2 -1
  36. package/dist/dashboard/aggregator.js.map +1 -1
  37. package/dist/dashboard/daemon-internal-client.d.ts.map +1 -1
  38. package/dist/dashboard/daemon-internal-client.js +6 -1
  39. package/dist/dashboard/daemon-internal-client.js.map +1 -1
  40. package/dist/dashboard/groups-action-helpers.d.ts +0 -10
  41. package/dist/dashboard/groups-action-helpers.d.ts.map +1 -1
  42. package/dist/dashboard/groups-action-helpers.js +3 -2
  43. package/dist/dashboard/groups-action-helpers.js.map +1 -1
  44. package/dist/dashboard.js +2 -1
  45. package/dist/dashboard.js.map +1 -1
  46. package/dist/services/hook-runner.d.ts.map +1 -1
  47. package/dist/services/hook-runner.js +2 -1
  48. package/dist/services/hook-runner.js.map +1 -1
  49. package/dist/services/voice/openai.d.ts.map +1 -1
  50. package/dist/services/voice/openai.js +10 -1
  51. package/dist/services/voice/openai.js.map +1 -1
  52. package/dist/services/worktree-slug-ai.d.ts.map +1 -1
  53. package/dist/services/worktree-slug-ai.js +8 -1
  54. package/dist/services/worktree-slug-ai.js.map +1 -1
  55. package/dist/workflows/v3/daemon-ipc-client.d.ts.map +1 -1
  56. package/dist/workflows/v3/daemon-ipc-client.js +2 -1
  57. package/dist/workflows/v3/daemon-ipc-client.js.map +1 -1
  58. package/dist/workflows/v3/session-relay-client.d.ts.map +1 -1
  59. package/dist/workflows/v3/session-relay-client.js +2 -1
  60. package/dist/workflows/v3/session-relay-client.js.map +1 -1
  61. package/package.json +8 -7
  62. package/scripts/install-path-entry.mjs +263 -0
  63. package/scripts/postinstall-bin.mjs +41 -7
@@ -15,6 +15,14 @@ export declare function daemonIpcAuthHeaders(input: {
15
15
  /** Read the host-only daemon IPC secret. Sandboxed callers fail closed because
16
16
  * ~/.botmux is masked by the bwrap plan. */
17
17
  export declare function loadDaemonIpcSecret(secretPath?: string): string;
18
- /** Trusted-host fetch wrapper for daemon IPC. */
18
+ /** Trusted-host fetch wrapper for daemon IPC.
19
+ *
20
+ * ⚠️ Uses {@link loopbackFetch}, never the global `fetch`: under Bun the global
21
+ * one routes 127.0.0.1 through `$http_proxy` whenever `no_proxy` does not name
22
+ * that literal address (CIDR and `localhost` do not count), and the corporate
23
+ * proxy answers an nginx HTML 403. Verified against this wrapper with a real Bun
24
+ * process and a stand-in proxy: global fetch → 403 from the proxy;
25
+ * `loopbackFetch` → straight to the daemon. See src/core/loopback-fetch.ts.
26
+ */
19
27
  export declare function fetchDaemonIpc(port: number, path: string, init?: RequestInit, secret?: string): Promise<Response>;
20
28
  //# sourceMappingURL=daemon-ipc-auth.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"daemon-ipc-auth.d.ts","sourceRoot":"","sources":["../../src/core/daemon-ipc-auth.ts"],"names":[],"mappings":"AAUA;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB,GAAG,OAAO,CAWV;AAED;4CAC4C;AAC5C,wBAAgB,mBAAmB,CAAC,UAAU,SAAsB,GAAG,MAAM,CAI5E;AAED,iDAAiD;AACjD,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,WAAgB,EACtB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,QAAQ,CAAC,CAanB"}
1
+ {"version":3,"file":"daemon-ipc-auth.d.ts","sourceRoot":"","sources":["../../src/core/daemon-ipc-auth.ts"],"names":[],"mappings":"AAWA;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB,GAAG,OAAO,CAWV;AAED;4CAC4C;AAC5C,wBAAgB,mBAAmB,CAAC,UAAU,SAAsB,GAAG,MAAM,CAI5E;AAED;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,WAAgB,EACtB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,QAAQ,CAAC,CAenB"}
@@ -1,6 +1,7 @@
1
1
  import { homedir } from 'node:os';
2
2
  import { join } from 'node:path';
3
3
  import { cliAuthBind, loadDashboardSecret, signCliAuth, } from '../dashboard/auth.js';
4
+ import { loopbackFetch } from './loopback-fetch.js';
4
5
  const DEFAULT_SECRET_PATH = join(homedir(), '.botmux', '.dashboard-secret');
5
6
  /**
6
7
  * Build a route- and port-bound authorization header for the daemon's
@@ -26,12 +27,22 @@ export function loadDaemonIpcSecret(secretPath = DEFAULT_SECRET_PATH) {
26
27
  throw new Error(`daemon IPC secret is missing or empty: ${secretPath}`);
27
28
  return secret;
28
29
  }
29
- /** Trusted-host fetch wrapper for daemon IPC. */
30
+ /** Trusted-host fetch wrapper for daemon IPC.
31
+ *
32
+ * ⚠️ Uses {@link loopbackFetch}, never the global `fetch`: under Bun the global
33
+ * one routes 127.0.0.1 through `$http_proxy` whenever `no_proxy` does not name
34
+ * that literal address (CIDR and `localhost` do not count), and the corporate
35
+ * proxy answers an nginx HTML 403. Verified against this wrapper with a real Bun
36
+ * process and a stand-in proxy: global fetch → 403 from the proxy;
37
+ * `loopbackFetch` → straight to the daemon. See src/core/loopback-fetch.ts.
38
+ */
30
39
  export async function fetchDaemonIpc(port, path, init = {}, secret) {
31
40
  const resolvedSecret = secret ?? loadDaemonIpcSecret();
32
41
  const method = init.method ?? 'GET';
33
- return fetch(`http://127.0.0.1:${port}${path}`, {
34
- ...init,
42
+ return loopbackFetch(`http://127.0.0.1:${port}${path}`, {
43
+ method,
44
+ body: init.body,
45
+ signal: init.signal ?? undefined,
35
46
  headers: daemonIpcAuthHeaders({
36
47
  secret: resolvedSecret,
37
48
  port,
@@ -1 +1 @@
1
- {"version":3,"file":"daemon-ipc-auth.js","sourceRoot":"","sources":["../../src/core/daemon-ipc-auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAE9B,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,mBAAmB,CAAC,CAAC;AAE5E;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAMpC;IACC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,oBAAoB,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC;IAChF,MAAM,IAAI,GAAG,WAAW,CACtB,KAAK,CAAC,MAAM,EACZ,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAChD,CAAC;IACF,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3C,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;4CAC4C;AAC5C,MAAM,UAAU,mBAAmB,CAAC,UAAU,GAAG,mBAAmB;IAClE,MAAM,MAAM,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAC/C,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,UAAU,EAAE,CAAC,CAAC;IACrF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,iDAAiD;AACjD,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAAY,EACZ,IAAY,EACZ,OAAoB,EAAE,EACtB,MAAe;IAEf,MAAM,cAAc,GAAG,MAAM,IAAI,mBAAmB,EAAE,CAAC;IACvD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC;IACpC,OAAO,KAAK,CAAC,oBAAoB,IAAI,GAAG,IAAI,EAAE,EAAE;QAC9C,GAAG,IAAI;QACP,OAAO,EAAE,oBAAoB,CAAC;YAC5B,MAAM,EAAE,cAAc;YACtB,IAAI;YACJ,MAAM;YACN,IAAI;YACJ,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC;KACH,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"daemon-ipc-auth.js","sourceRoot":"","sources":["../../src/core/daemon-ipc-auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,aAAa,EAA0B,MAAM,qBAAqB,CAAC;AAE5E,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,mBAAmB,CAAC,CAAC;AAE5E;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAMpC;IACC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,oBAAoB,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC;IAChF,MAAM,IAAI,GAAG,WAAW,CACtB,KAAK,CAAC,MAAM,EACZ,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAChD,CAAC;IACF,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3C,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;4CAC4C;AAC5C,MAAM,UAAU,mBAAmB,CAAC,UAAU,GAAG,mBAAmB;IAClE,MAAM,MAAM,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAC/C,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,UAAU,EAAE,CAAC,CAAC;IACrF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAAY,EACZ,IAAY,EACZ,OAAoB,EAAE,EACtB,MAAe;IAEf,MAAM,cAAc,GAAG,MAAM,IAAI,mBAAmB,EAAE,CAAC;IACvD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC;IACpC,OAAO,aAAa,CAAC,oBAAoB,IAAI,GAAG,IAAI,EAAE,EAAE;QACtD,MAAM;QACN,IAAI,EAAE,IAAI,CAAC,IAAiC;QAC5C,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,SAAS;QAChC,OAAO,EAAE,oBAAoB,CAAC;YAC5B,MAAM,EAAE,cAAc;YACtB,IAAI;YACJ,MAAM;YACN,IAAI;YACJ,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC;KACH,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * `fetch`-shaped client for **loopback-only** HTTP, built on `node:http`.
3
+ *
4
+ * ⚠️ WHY THIS EXISTS — DO NOT "SIMPLIFY" ANY CALLER BACK TO THE GLOBAL `fetch`.
5
+ *
6
+ * Bun's `fetch` automatically routes through `$http_proxy`, and its `no_proxy`
7
+ * handling is **literal-match only**: it does not parse CIDR notation and does
8
+ * not treat `localhost` as covering `127.0.0.1`. Corporate dev machines commonly
9
+ * export exactly that shape (`http_proxy=…` plus `no_proxy=…,127.0.0.0/8,…`), so
10
+ * a request to our OWN loopback port gets handed to the corporate proxy, which
11
+ * refuses to forward an internal address and answers with an nginx HTML
12
+ * `403 Forbidden`. The user sees a failure naming a service that is running
13
+ * perfectly well two ports away.
14
+ *
15
+ * Measured on Bun 1.4.0 (source AND `bun build --compile`), one fresh process per
16
+ * row because Bun snapshots proxy configuration at startup:
17
+ *
18
+ * no_proxy unset / "" → proxied
19
+ * no_proxy=127.0.0.0/8 → proxied ← the common corporate shape
20
+ * no_proxy=localhost → proxied ← does NOT cover 127.0.0.1
21
+ * no_proxy=127.0.0.1 → direct
22
+ * no_proxy=* → direct
23
+ *
24
+ * And the obvious escapes do not work:
25
+ *
26
+ * fetch(…, {proxy: ''|undefined|null}) → still proxied (option exists ≠ works)
27
+ * delete process.env.http_proxy at run → still proxied (startup snapshot)
28
+ * setting process.env.http_proxy later → still direct (same reason)
29
+ *
30
+ * `node:http` ignores proxy environment variables entirely, in both Node and Bun,
31
+ * which is the only reliable way to guarantee a loopback dial stays loopback.
32
+ * Related precedent: `platform/platform-http.ts` (deliberately avoids undici) and
33
+ * `dashboard/hd2d-assets.ts` (the reverse case — it WANTS the proxy).
34
+ */
35
+ /** The subset of RequestInit our loopback callers use. */
36
+ export interface LoopbackFetchInit {
37
+ method?: string;
38
+ headers?: HeadersInit;
39
+ /** Accepts what `fetch` accepts; streams are the one thing we cannot forward. */
40
+ body?: BodyInit | null;
41
+ signal?: AbortSignal | null;
42
+ }
43
+ /** Install (or clear, with `undefined`) the test transport. Returns the previous one. */
44
+ export declare function __setLoopbackTransportForTests(next: ((url: string, init: LoopbackFetchInit) => Promise<Response>) | undefined): ((url: string, init: LoopbackFetchInit) => Promise<Response>) | undefined;
45
+ export declare function loopbackFetch(url: string, init?: LoopbackFetchInit): Promise<Response>;
46
+ /** `typeof fetch`-compatible view, for defaulting an injectable `fetchImpl`. */
47
+ export declare const loopbackFetchImpl: typeof fetch;
48
+ /**
49
+ * Is this URL a literal loopback target, i.e. safe (and necessary) to send through
50
+ * {@link loopbackFetch}? For call sites whose base URL is configurable and may
51
+ * legitimately point at a remote host — those must keep using the global fetch,
52
+ * which handles TLS, redirects and real proxying.
53
+ *
54
+ * Literal only, deliberately: a DNS name that currently resolves to 127.0.0.1
55
+ * is not a loopback guarantee (it can be re-pointed), and `loopbackFetch`'s own
56
+ * guard would reject it anyway.
57
+ */
58
+ export declare function isLoopbackUrl(url: string): boolean;
59
+ //# sourceMappingURL=loopback-fetch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loopback-fetch.d.ts","sourceRoot":"","sources":["../../src/core/loopback-fetch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAKH,0DAA0D;AAC1D,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,iFAAiF;IACjF,IAAI,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IACvB,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;CAC7B;AA4FD,yFAAyF;AACzF,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,SAAS,GAC9E,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,SAAS,CAI3E;AAED,wBAAgB,aAAa,CAC3B,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,iBAAsB,GAC3B,OAAO,CAAC,QAAQ,CAAC,CAyJnB;AAED,gFAAgF;AAChF,eAAO,MAAM,iBAAiB,EAA+B,OAAO,KAAK,CAAC;AAE1E;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAWlD"}
@@ -0,0 +1,347 @@
1
+ /**
2
+ * `fetch`-shaped client for **loopback-only** HTTP, built on `node:http`.
3
+ *
4
+ * ⚠️ WHY THIS EXISTS — DO NOT "SIMPLIFY" ANY CALLER BACK TO THE GLOBAL `fetch`.
5
+ *
6
+ * Bun's `fetch` automatically routes through `$http_proxy`, and its `no_proxy`
7
+ * handling is **literal-match only**: it does not parse CIDR notation and does
8
+ * not treat `localhost` as covering `127.0.0.1`. Corporate dev machines commonly
9
+ * export exactly that shape (`http_proxy=…` plus `no_proxy=…,127.0.0.0/8,…`), so
10
+ * a request to our OWN loopback port gets handed to the corporate proxy, which
11
+ * refuses to forward an internal address and answers with an nginx HTML
12
+ * `403 Forbidden`. The user sees a failure naming a service that is running
13
+ * perfectly well two ports away.
14
+ *
15
+ * Measured on Bun 1.4.0 (source AND `bun build --compile`), one fresh process per
16
+ * row because Bun snapshots proxy configuration at startup:
17
+ *
18
+ * no_proxy unset / "" → proxied
19
+ * no_proxy=127.0.0.0/8 → proxied ← the common corporate shape
20
+ * no_proxy=localhost → proxied ← does NOT cover 127.0.0.1
21
+ * no_proxy=127.0.0.1 → direct
22
+ * no_proxy=* → direct
23
+ *
24
+ * And the obvious escapes do not work:
25
+ *
26
+ * fetch(…, {proxy: ''|undefined|null}) → still proxied (option exists ≠ works)
27
+ * delete process.env.http_proxy at run → still proxied (startup snapshot)
28
+ * setting process.env.http_proxy later → still direct (same reason)
29
+ *
30
+ * `node:http` ignores proxy environment variables entirely, in both Node and Bun,
31
+ * which is the only reliable way to guarantee a loopback dial stays loopback.
32
+ * Related precedent: `platform/platform-http.ts` (deliberately avoids undici) and
33
+ * `dashboard/hd2d-assets.ts` (the reverse case — it WANTS the proxy).
34
+ */
35
+ import { Buffer } from 'node:buffer';
36
+ import { requestLiteralLoopback } from './loopback-target.js';
37
+ /** Normalise a fetch-style body to bytes. Streams are rejected loudly rather
38
+ * than silently sent as "[object ReadableStream]". */
39
+ function bodyToBuffer(body) {
40
+ if (body == null)
41
+ return undefined;
42
+ if (typeof body === 'string')
43
+ return Buffer.from(body);
44
+ if (Buffer.isBuffer(body))
45
+ return body;
46
+ if (body instanceof URLSearchParams)
47
+ return Buffer.from(body.toString());
48
+ if (body instanceof ArrayBuffer)
49
+ return Buffer.from(new Uint8Array(body));
50
+ if (ArrayBuffer.isView(body)) {
51
+ return Buffer.from(body.buffer, body.byteOffset, body.byteLength);
52
+ }
53
+ throw new TypeError('loopbackFetch: unsupported body type (streams/FormData are not forwarded)');
54
+ }
55
+ function headerEntries(headers) {
56
+ if (!headers)
57
+ return {};
58
+ // `Headers` (and anything iterable of pairs) normalises casing for us; a plain
59
+ // object is passed through as written.
60
+ const out = {};
61
+ if (headers instanceof Headers) {
62
+ headers.forEach((value, key) => { out[key] = value; });
63
+ return out;
64
+ }
65
+ if (Array.isArray(headers)) {
66
+ for (const [k, v] of headers)
67
+ out[k] = String(v);
68
+ return out;
69
+ }
70
+ for (const [k, v] of Object.entries(headers))
71
+ out[k] = String(v);
72
+ return out;
73
+ }
74
+ /**
75
+ * The error an aborted request must fail with.
76
+ *
77
+ * ⚠️ Callers branch on `err.name === 'AbortError'` to tell "timed out" from
78
+ * "nothing listening" — e.g. daemon.ts returns 504 `wait_timeout` vs 503
79
+ * `daemon_offline`, and command-handler.ts reports `busy` vs `failed`. A plain
80
+ * `new Error('aborted')` (or node:http's own ECONNRESET) silently sends every
81
+ * timeout down the wrong branch. Measured against the global fetch these replace:
82
+ * it rejects with `name=AbortError`, while the first version of this module gave
83
+ * `name=Error, code=ECONNRESET`.
84
+ *
85
+ * `signal.reason` is what the platform puts there (a DOMException named
86
+ * AbortError, or whatever the caller passed to `abort(reason)`); we only
87
+ * synthesise an equivalent when it is somehow absent.
88
+ */
89
+ function abortError(signal) {
90
+ const reason = signal?.reason;
91
+ if (reason !== undefined && reason !== null)
92
+ return reason;
93
+ // Node and browsers both expose DOMException; fall back to a shaped Error.
94
+ if (typeof DOMException === 'function') {
95
+ return new DOMException('The operation was aborted.', 'AbortError');
96
+ }
97
+ const err = new Error('The operation was aborted.');
98
+ err.name = 'AbortError';
99
+ return err;
100
+ }
101
+ /**
102
+ * Issue one request to a literal loopback host and resolve a real `Response`, so
103
+ * call sites keep using `.ok` / `.status` / `.json()` / `.text()` unchanged.
104
+ *
105
+ * ⚠️ Resolves as soon as the response HEADERS arrive, with the body exposed as a
106
+ * `ReadableStream` — it must NOT buffer to completion first. `dashboard/aggregator.ts`
107
+ * subscribes to a never-ending SSE stream (`/api/events`) and reads frames off
108
+ * `res.body`; a buffer-all implementation never resolves for those callers and the
109
+ * whole session/event aggregation silently stops. Measured: a server that writes
110
+ * one frame and holds the connection open produced no Response at all until this
111
+ * was made streaming. `.text()`/`.json()` still work, because `Response` drains
112
+ * the stream for them.
113
+ *
114
+ * Rejects the way `fetch` does (a transport failure) rather than resolving a
115
+ * synthetic error status, because callers distinguish "no server there" from
116
+ * "server said no".
117
+ */
118
+ /**
119
+ * Test-only transport override.
120
+ *
121
+ * ⚠️ Why this seam exists: several suites drive loopback code paths by replacing
122
+ * `globalThis.fetch`. Moving those call sites onto node:http silently bypassed
123
+ * that stub, so the tests began making REAL connections to ports like 4310/39003
124
+ * — `fetchMock` recorded 0 calls and the assertions failed for a reason unrelated
125
+ * to what they test. Rather than push every caller back onto the global fetch (the
126
+ * whole defect), the transport itself is injectable: production keeps node:http,
127
+ * tests install a mock here.
128
+ *
129
+ * Not for production use — `__setLoopbackTransportForTests(undefined)` restores the default.
130
+ */
131
+ let transportOverride;
132
+ /** Install (or clear, with `undefined`) the test transport. Returns the previous one. */
133
+ export function __setLoopbackTransportForTests(next) {
134
+ const previous = transportOverride;
135
+ transportOverride = next;
136
+ return previous;
137
+ }
138
+ export function loopbackFetch(url, init = {}) {
139
+ if (transportOverride)
140
+ return transportOverride(url, init);
141
+ const target = new URL(url);
142
+ // ⚠️ FAIL CLOSED on the scheme. This transport IS node:http, so an `https:` URL
143
+ // would be dialled as PLAINTEXT — measured: `loopbackFetch('https://127.0.0.1:P')`
144
+ // against a plain HTTP server returned `200 PLAIN`, i.e. a caller that believed it
145
+ // was using TLS would have sent its credentials in the clear. `isLoopbackUrl`
146
+ // already refuses https, but a public helper must not depend on callers routing
147
+ // through a predicate first.
148
+ if (target.protocol !== 'http:') {
149
+ return Promise.reject(new TypeError(`loopbackFetch: only http: is supported (got ${target.protocol})`));
150
+ }
151
+ // `URL.hostname` keeps IPv6 in brackets (`[::1]`), but node:http — and
152
+ // requestLiteralLoopback's allow-list — want the bare address. Passing the
153
+ // bracketed form through was rejected as `remote_host_forbidden`, i.e. a legal
154
+ // IPv6 loopback URL could never be dialled (measured against a `::1` server).
155
+ const host = normaliseLoopbackHost(target.hostname);
156
+ // `URL` normalises away a scheme's DEFAULT port, so both `http://127.0.0.1/x` and
157
+ // an explicit `http://127.0.0.1:80/x` yield `port === ''` — `Number('')` is 0 and
158
+ // was rejected as `invalid_port` (measured against a local server on :80, which the
159
+ // native fetch reaches fine). Fill in the scheme default.
160
+ const port = target.port ? Number(target.port) : 80;
161
+ const method = (init.method ?? 'GET').toUpperCase();
162
+ const headers = headerEntries(init.headers);
163
+ const body = bodyToBuffer(init.body);
164
+ // A body without a length makes some servers wait for more; be explicit.
165
+ if (body && headers['content-length'] === undefined && headers['Content-Length'] === undefined) {
166
+ headers['content-length'] = String(body.byteLength);
167
+ }
168
+ return new Promise((resolve, reject) => {
169
+ let settled = false;
170
+ const finish = (fn) => { if (!settled) {
171
+ settled = true;
172
+ fn();
173
+ } };
174
+ // Set once the signal fires, so the body stream can fail with the SAME
175
+ // AbortError instead of the socket's ECONNRESET.
176
+ let aborted;
177
+ // ⚠️ The abort listener MUST be removed once this request can no longer be
178
+ // aborted. `{ once: true }` only fires-and-forgets on a real abort; a request
179
+ // that simply COMPLETED left its listener attached, and `dashboard/aggregator.ts`
180
+ // reuses one AbortController across an unbounded SSE reconnect loop — measured,
181
+ // 12 completed requests left 12 listeners, each pinning a finished req/res and
182
+ // its closure, and a later abort would destroy every stale request in turn.
183
+ let detachAbort = () => { };
184
+ let req;
185
+ try {
186
+ req = requestLiteralLoopback(
187
+ // Dial the parsed host/port explicitly (and validated as loopback) rather
188
+ // than handing over the URL, so nothing can re-target the request.
189
+ { host, port }, {
190
+ path: `${target.pathname}${target.search}`,
191
+ method,
192
+ headers,
193
+ }, res => {
194
+ const status = res.statusCode ?? 0;
195
+ // Fetch's null-body statuses that can actually ARRIVE HERE are 204/205/304,
196
+ // plus any HEAD response. 101 is deliberately absent: node:http never calls
197
+ // this callback for it (it emits `upgrade` instead — handled below), so a
198
+ // `status === 101` branch here would be dead code that reads as covered. `new Response(stream, {status:205})` THROWS,
199
+ // and it throws inside this async callback — on Node that escaped as an
200
+ // uncaught exception and killed the process, while Bun happens to tolerate
201
+ // 205, which is exactly why it went unnoticed.
202
+ const bodyless = status === 204 || status === 205
203
+ || status === 304 || method === 'HEAD';
204
+ const stream = bodyless ? null : new ReadableStream({
205
+ start(controller) {
206
+ res.on('data', (chunk) => {
207
+ try {
208
+ controller.enqueue(new Uint8Array(Buffer.from(chunk)));
209
+ }
210
+ catch { /* already closed by a cancel() */ }
211
+ });
212
+ res.on('end', () => {
213
+ detachAbort();
214
+ try {
215
+ controller.close();
216
+ }
217
+ catch { /* already closed */ }
218
+ });
219
+ res.on('error', err => {
220
+ detachAbort();
221
+ // An abort must surface as AbortError, not the ECONNRESET that
222
+ // destroying the socket produces.
223
+ try {
224
+ controller.error(aborted ?? err);
225
+ }
226
+ catch { /* already errored */ }
227
+ });
228
+ },
229
+ // A consumer that stops reading (or aborts) must tear the socket down,
230
+ // otherwise a never-ending SSE keeps the connection and the process alive.
231
+ cancel() { detachAbort(); res.destroy(); req.destroy(); },
232
+ });
233
+ if (bodyless)
234
+ detachAbort();
235
+ // Wrapped: any status the Response constructor refuses (an upstream
236
+ // sending something illegal) must reject this promise, never escape as an
237
+ // uncaught exception out of an HTTP event callback.
238
+ let response;
239
+ try {
240
+ response = new Response(stream, {
241
+ status,
242
+ statusText: res.statusMessage ?? '',
243
+ headers: Object.fromEntries(Object.entries(res.headers)
244
+ .filter((entry) => typeof entry[1] === 'string')),
245
+ });
246
+ }
247
+ catch (err) {
248
+ detachAbort();
249
+ res.destroy();
250
+ finish(() => reject(err));
251
+ return;
252
+ }
253
+ finish(() => resolve(response));
254
+ });
255
+ }
256
+ catch (err) {
257
+ // Invalid host/port (the loopback guard) — surface it, do not hang.
258
+ detachAbort();
259
+ finish(() => reject(err));
260
+ return;
261
+ }
262
+ // ⚠️ A 101 arrives as `upgrade`, NOT as a response. Without this listener the
263
+ // promise never settles: measured against a server answering 101, the call only
264
+ // ended when an external AbortSignal fired at 800ms (and `requestDashboardAt`
265
+ // passes no signal at all, so it would hang forever if the recorded port happened
266
+ // to be a WebSocket service). The native fetch rejects such a response in ~1ms;
267
+ // do the same, since a fetch-shaped client cannot express a protocol switch.
268
+ req.on('upgrade', (_res, socket) => {
269
+ socket.destroy();
270
+ req.destroy();
271
+ detachAbort();
272
+ finish(() => reject(new TypeError('loopbackFetch: server switched protocols (101); this client does not support upgrades')));
273
+ });
274
+ // Only a failure BEFORE the response headers can reject the promise; once the
275
+ // Response exists, later socket errors surface through the stream instead.
276
+ req.on('error', err => { detachAbort(); finish(() => reject(aborted ?? err)); });
277
+ if (init.signal) {
278
+ const signal = init.signal;
279
+ const onAbort = () => {
280
+ aborted = abortError(signal);
281
+ req.destroy();
282
+ finish(() => reject(aborted));
283
+ };
284
+ if (signal.aborted) {
285
+ onAbort();
286
+ return;
287
+ }
288
+ signal.addEventListener('abort', onAbort, { once: true });
289
+ detachAbort = () => {
290
+ signal.removeEventListener('abort', onAbort);
291
+ detachAbort = () => { };
292
+ };
293
+ }
294
+ if (body)
295
+ req.end(body);
296
+ else
297
+ req.end();
298
+ });
299
+ }
300
+ /** `typeof fetch`-compatible view, for defaulting an injectable `fetchImpl`. */
301
+ export const loopbackFetchImpl = loopbackFetch;
302
+ /**
303
+ * Is this URL a literal loopback target, i.e. safe (and necessary) to send through
304
+ * {@link loopbackFetch}? For call sites whose base URL is configurable and may
305
+ * legitimately point at a remote host — those must keep using the global fetch,
306
+ * which handles TLS, redirects and real proxying.
307
+ *
308
+ * Literal only, deliberately: a DNS name that currently resolves to 127.0.0.1
309
+ * is not a loopback guarantee (it can be re-pointed), and `loopbackFetch`'s own
310
+ * guard would reject it anyway.
311
+ */
312
+ export function isLoopbackUrl(url) {
313
+ try {
314
+ const parsed = new URL(url);
315
+ // `http:` only — this transport IS node:http, so reporting an `https:` URL as
316
+ // loopback-safe would steer a caller onto a transport that cannot serve it.
317
+ if (parsed.protocol !== 'http:')
318
+ return false;
319
+ const host = normaliseLoopbackHost(parsed.hostname);
320
+ return host === '127.0.0.1' || host === '::1';
321
+ }
322
+ catch {
323
+ return false;
324
+ }
325
+ }
326
+ /**
327
+ * Canonicalise a hostname for the loopback allow-list.
328
+ *
329
+ * · Strips the brackets `URL.hostname` keeps around IPv6 literals.
330
+ * · Maps `localhost` to `127.0.0.1`.
331
+ *
332
+ * ⚠️ `localhost` USED to be rejected here, on the reasoning that "a DNS name is
333
+ * not a loopback guarantee". That was backwards: refusing it did not avoid a
334
+ * lookup, it pushed the request onto the GLOBAL fetch, which then proxied it —
335
+ * measured with a self-hosted TTS endpoint, the `Authorization: Bearer …` header
336
+ * arrived at the stand-in proxy. `localhost` is reserved for loopback by RFC 6761,
337
+ * and mapping it here means we dial the literal address and never resolve DNS at
338
+ * all, which is strictly safer than the alternative. Every OTHER hostname stays
339
+ * rejected — that is where the rebinding concern actually applies.
340
+ */
341
+ function normaliseLoopbackHost(hostname) {
342
+ const bare = hostname.startsWith('[') && hostname.endsWith(']')
343
+ ? hostname.slice(1, -1)
344
+ : hostname;
345
+ return bare === 'localhost' ? '127.0.0.1' : bare;
346
+ }
347
+ //# sourceMappingURL=loopback-fetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loopback-fetch.js","sourceRoot":"","sources":["../../src/core/loopback-fetch.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"managed-origin-attestation.d.ts","sourceRoot":"","sources":["../../src/core/managed-origin-attestation.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,2BAA2B,+BAA+B,CAAC;AACxE,eAAO,MAAM,2BAA2B,yCAAyC,CAAC;AAClF,eAAO,MAAM,2BAA2B,OAAQ,CAAC;AAGjD,MAAM,WAAW,+BAA+B;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sBAAsB,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,6BAA8B,SAAQ,wBAAwB;IAC7E,MAAM,EAAE,OAAO,2BAA2B,CAAC;IAC3C,OAAO,EAAE,CAAC,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,6BAA8B,SAAQ,KAAK;gBAC1C,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAIpD;AAED;;4EAE4E;AAC5E,wBAAgB,kCAAkC,CAAC,KAAK,EAAE;IACxD,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,6BAA6B,CAAC;CACtC,GAAG,MAAM,CAkDT;AAqED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,KAAK,EAAE;IAC/C,OAAO,EAAE,+BAA+B,CAAC;IACzC,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,KAAK,MAAM,GAAG,SAAS,CAAC;IACvE,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3C,GAAG,OAAO,CAAC,wBAAwB,CAAC,CA4EpC"}
1
+ {"version":3,"file":"managed-origin-attestation.d.ts","sourceRoot":"","sources":["../../src/core/managed-origin-attestation.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,2BAA2B,+BAA+B,CAAC;AACxE,eAAO,MAAM,2BAA2B,yCAAyC,CAAC;AAClF,eAAO,MAAM,2BAA2B,OAAQ,CAAC;AAGjD,MAAM,WAAW,+BAA+B;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sBAAsB,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,6BAA8B,SAAQ,wBAAwB;IAC7E,MAAM,EAAE,OAAO,2BAA2B,CAAC;IAC3C,OAAO,EAAE,CAAC,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,6BAA8B,SAAQ,KAAK;gBAC1C,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAIpD;AAED;;4EAE4E;AAC5E,wBAAgB,kCAAkC,CAAC,KAAK,EAAE;IACxD,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,6BAA6B,CAAC;CACtC,GAAG,MAAM,CAkDT;AAqED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,KAAK,EAAE;IAC/C,OAAO,EAAE,+BAA+B,CAAC;IACzC,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,KAAK,MAAM,GAAG,SAAS,CAAC;IACvE,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3C,GAAG,OAAO,CAAC,wBAAwB,CAAC,CA4EpC"}
@@ -1,4 +1,5 @@
1
1
  import { randomBytes } from 'node:crypto';
2
+ import { loopbackFetchImpl } from './loopback-fetch.js';
2
3
  import { closeSync, constants as fsConstants, fstatSync, openSync, readSync, unlinkSync, writeSync, } from 'node:fs';
3
4
  import { ensureManagedOriginAttestationDirectory, managedOriginAttestationProofPath, } from './managed-origin-capability.js';
4
5
  export const MANAGED_ORIGIN_ATTEST_ROUTE = '/api/session-origin/attest';
@@ -156,7 +157,7 @@ export async function attestManagedOrigin(input) {
156
157
  timer.unref?.();
157
158
  let response;
158
159
  try {
159
- response = await (input.fetchImpl ?? fetch)(`http://127.0.0.1:${port}${MANAGED_ORIGIN_ATTEST_ROUTE}`, {
160
+ response = await (input.fetchImpl ?? loopbackFetchImpl)(`http://127.0.0.1:${port}${MANAGED_ORIGIN_ATTEST_ROUTE}`, {
160
161
  method: 'POST',
161
162
  headers: { 'content-type': 'application/json' },
162
163
  body: JSON.stringify({
@@ -1 +1 @@
1
- {"version":3,"file":"managed-origin-attestation.js","sourceRoot":"","sources":["../../src/core/managed-origin-attestation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"managed-origin-attestation.js","sourceRoot":"","sources":["../../src/core/managed-origin-attestation.ts"],"names":[],"mappings":"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"}