instar 1.3.650 → 1.3.652

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 (55) hide show
  1. package/dist/commands/server.d.ts.map +1 -1
  2. package/dist/commands/server.js +142 -2
  3. package/dist/commands/server.js.map +1 -1
  4. package/dist/core/HttpLeaseTransport.d.ts +18 -0
  5. package/dist/core/HttpLeaseTransport.d.ts.map +1 -1
  6. package/dist/core/HttpLeaseTransport.js +16 -0
  7. package/dist/core/HttpLeaseTransport.js.map +1 -1
  8. package/dist/core/MeshEndpointValidator.d.ts +57 -0
  9. package/dist/core/MeshEndpointValidator.d.ts.map +1 -0
  10. package/dist/core/MeshEndpointValidator.js +110 -0
  11. package/dist/core/MeshEndpointValidator.js.map +1 -0
  12. package/dist/core/PeerEndpointRecorder.d.ts +49 -0
  13. package/dist/core/PeerEndpointRecorder.d.ts.map +1 -0
  14. package/dist/core/PeerEndpointRecorder.js +69 -0
  15. package/dist/core/PeerEndpointRecorder.js.map +1 -0
  16. package/dist/core/ReapGuard.d.ts +13 -1
  17. package/dist/core/ReapGuard.d.ts.map +1 -1
  18. package/dist/core/ReapGuard.js +86 -30
  19. package/dist/core/ReapGuard.js.map +1 -1
  20. package/dist/core/SessionManager.d.ts +11 -0
  21. package/dist/core/SessionManager.d.ts.map +1 -1
  22. package/dist/core/SessionManager.js +30 -4
  23. package/dist/core/SessionManager.js.map +1 -1
  24. package/dist/core/devGatedFeatures.d.ts.map +1 -1
  25. package/dist/core/devGatedFeatures.js +6 -0
  26. package/dist/core/devGatedFeatures.js.map +1 -1
  27. package/dist/core/gapBCommitmentEvidence.d.ts +9 -0
  28. package/dist/core/gapBCommitmentEvidence.d.ts.map +1 -1
  29. package/dist/core/gapBCommitmentEvidence.js +20 -0
  30. package/dist/core/gapBCommitmentEvidence.js.map +1 -1
  31. package/dist/core/types.d.ts +11 -0
  32. package/dist/core/types.d.ts.map +1 -1
  33. package/dist/core/types.js.map +1 -1
  34. package/dist/monitoring/SessionReaper.d.ts +118 -7
  35. package/dist/monitoring/SessionReaper.d.ts.map +1 -1
  36. package/dist/monitoring/SessionReaper.js +302 -101
  37. package/dist/monitoring/SessionReaper.js.map +1 -1
  38. package/dist/monitoring/closeoutLivenessSnapshot.d.ts +143 -0
  39. package/dist/monitoring/closeoutLivenessSnapshot.d.ts.map +1 -0
  40. package/dist/monitoring/closeoutLivenessSnapshot.js +207 -0
  41. package/dist/monitoring/closeoutLivenessSnapshot.js.map +1 -0
  42. package/dist/server/AgentServer.d.ts +11 -0
  43. package/dist/server/AgentServer.d.ts.map +1 -1
  44. package/dist/server/AgentServer.js +2 -0
  45. package/dist/server/AgentServer.js.map +1 -1
  46. package/dist/server/machineRoutes.d.ts +13 -0
  47. package/dist/server/machineRoutes.d.ts.map +1 -1
  48. package/dist/server/machineRoutes.js +18 -2
  49. package/dist/server/machineRoutes.js.map +1 -1
  50. package/package.json +1 -1
  51. package/src/data/builtin-manifest.json +5 -5
  52. package/upgrades/1.3.651.md +25 -0
  53. package/upgrades/1.3.652.md +18 -0
  54. package/upgrades/side-effects/mesh-endpoint-http-propagation.md +51 -0
  55. package/upgrades/side-effects/post-transfer-closeout-correctness.md +43 -0
@@ -17,6 +17,7 @@
17
17
  * logic is unit-testable without a network.
18
18
  */
19
19
  import type { PeerEndpointResolver } from './PeerEndpointResolver.js';
20
+ import type { PeerEndpointRecorder } from './PeerEndpointRecorder.js';
20
21
  import type { LeaseTransport } from './LeaseCoordinator.js';
21
22
  import type { LeaseRecord, MeshEndpoint } from './types.js';
22
23
  export interface LeasePeer {
@@ -80,6 +81,23 @@ export interface HttpLeaseTransportDeps {
80
81
  meshTransportEnabled?: () => boolean;
81
82
  /** Hedge delay before firing the remaining ropes in parallel. Default 1500ms. */
82
83
  hedgeDelayMs?: number;
84
+ /**
85
+ * mesh-endpoint-http-propagation — this machine's OWN validated self-endpoints,
86
+ * carried INSIDE the signed lease RPC body (broadcast + pull request bodies, and
87
+ * the pull RESPONSE the holder serves) so a git-less peer learns our fast ropes
88
+ * over the lease channel instead of via the inert git registry-sync path. Absent
89
+ * (or returns undefined/[]) ⇒ the field is simply omitted (un-upgraded behavior).
90
+ */
91
+ getSelfEndpoints?: () => MeshEndpoint[] | undefined;
92
+ /**
93
+ * mesh-endpoint-http-propagation — the chokepoint that records a peer's advertised
94
+ * endpoints into THIS machine's registry. Used on the pull RESPONSE path: after a
95
+ * CONFIRMED pull (responder identity cryptographically verified by interpretResponse),
96
+ * the holder's endpoints from the response body are recorded against the dialed
97
+ * `peer.machineId` (the verified responder). Absent ⇒ pull-response recording is a
98
+ * no-op (the receiver routes still record request-direction endpoints).
99
+ */
100
+ peerEndpointRecorder?: PeerEndpointRecorder;
83
101
  }
84
102
  export declare class HttpLeaseTransport implements LeaseTransport {
85
103
  private readonly d;
@@ -1 +1 @@
1
- {"version":3,"file":"HttpLeaseTransport.d.ts","sourceRoot":"","sources":["../../src/core/HttpLeaseTransport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,OAAO,KAAK,EAAE,oBAAoB,EAAoB,MAAM,2BAA2B,CAAC;AACxF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE5D,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,kFAAkF;IAClF,GAAG,EAAE,MAAM,CAAC;IACZ;;;;OAIG;IACH,SAAS,CAAC,EAAE,YAAY,EAAE,CAAC;IAC3B,+EAA+E;IAC/E,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;;;;;OAKG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,sBAAsB;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,kEAAkE;IAClE,KAAK,EAAE,MAAM,SAAS,EAAE,CAAC;IACzB,kFAAkF;IAClF,YAAY,EAAE,MAAM,MAAM,CAAC;IAC3B,iDAAiD;IACjD,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,qFAAqF;IACrF,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;;;;;;OAUG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,oHAAoH;IACpH,oBAAoB,CAAC,EAAE,MAAM,OAAO,CAAC;IACrC,iFAAiF;IACjF,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,kBAAmB,YAAW,cAAc;IACvD,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAyB;IAC3C,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,iBAAiB,CAA8B;IACvD,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,6EAA6E;IAC7E,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;gBAEjC,IAAI,EAAE,sBAAsB;IAOxC,uFAAuF;IACvF,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,GAAG;IAGX,OAAO,CAAC,GAAG;IAIX;;;;OAIG;IACG,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAerD,OAAO,CAAC,MAAM;IAKd;;;;;;;OAOG;YACW,QAAQ;IA0CtB,gFAAgF;YAClE,UAAU;IA+BxB,oEAAoE;IACpE,OAAO,CAAC,iBAAiB;IA8BzB;;;;OAIG;YACW,KAAK;IAsDnB,QAAQ,IAAI;QAAE,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE;IAIpF,WAAW,IAAI,OAAO;IAStB;;;;;;;;;;;;OAYG;IACH,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS;IAetD;;;;;;;;;;;;OAYG;IACG,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAa5D;;;;OAIG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;CAKpC"}
1
+ {"version":3,"file":"HttpLeaseTransport.d.ts","sourceRoot":"","sources":["../../src/core/HttpLeaseTransport.ts"],"names":[],"mappings":"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"}
@@ -84,6 +84,14 @@ export class HttpLeaseTransport {
84
84
  */
85
85
  async dialPeer(peer, path, bodyBase, sentEpoch) {
86
86
  const fetchImpl = this.d.fetchImpl ?? fetch;
87
+ // mesh-endpoint-http-propagation — carry our own validated self-endpoints inside
88
+ // the SIGNED body (covered by signRequest's body hash). Omit the field entirely
89
+ // when we have none, so an un-upgraded peer sees byte-for-byte today's body.
90
+ const selfEndpoints = this.d.getSelfEndpoints?.();
91
+ const withSelf = Array.isArray(selfEndpoints) && selfEndpoints.length > 0
92
+ ? { ...bodyBase, endpoints: selfEndpoints }
93
+ : bodyBase;
94
+ bodyBase = withSelf;
87
95
  if (!this.meshOn()) {
88
96
  return this.legacyDial(peer, path, bodyBase, fetchImpl);
89
97
  }
@@ -157,6 +165,14 @@ export class HttpLeaseTransport {
157
165
  if (!ackCapable)
158
166
  return { confirmed: true, lease: folded }; // legacy 2xx
159
167
  const idOk = verifyLeaseAckIdentity(data?.ack, data?.sig, peer.machineId, sentReqNonce, peer.publicKeyPem);
168
+ // mesh-endpoint-http-propagation (pull RESPONSE, the live-bug fix): record the
169
+ // HOLDER's advertised endpoints ONLY when the responder identity is verified
170
+ // (idOk). Bound to the DIALED `peer.machineId` — never a self-asserted body
171
+ // field — so a compromised responder can't inject a third machine's ropes. The
172
+ // recorder is itself gated (meshTransport), validating, and idempotent.
173
+ if (idOk && this.d.peerEndpointRecorder) {
174
+ this.d.peerEndpointRecorder.record(peer.machineId, data?.endpoints);
175
+ }
160
176
  return { confirmed: idOk, lease: idOk ? folded : null };
161
177
  }
162
178
  // /api/lease (broadcast) — epoch-equality confirmation.
@@ -1 +1 @@
1
- {"version":3,"file":"HttpLeaseTransport.js","sourceRoot":"","sources":["../../src/core/HttpLeaseTransport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HttpLeaseTransport.js","sourceRoot":"","sources":["../../src/core/HttpLeaseTransport.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * MeshEndpointValidator — shared ingest validation for advertised mesh endpoints
3
+ * (mesh-endpoint-http-propagation, defense-in-depth, NOT authority).
4
+ *
5
+ * When a machine receives a peer's advertised endpoint set inside the signed lease
6
+ * RPC body, this validates the set BEFORE it is recorded into the local registry,
7
+ * so the registry can never be poisoned by a malformed/hostile-but-authenticated
8
+ * advertisement. Ingest validation gates REGISTRY INTEGRITY (no garbage stored); it
9
+ * is NOT the trust authority — `PeerEndpointResolver` re-validates the SAME per-kind
10
+ * host rules at dial time (the final line), and its health map decides whether an
11
+ * endpoint is actually reachable/trusted. Both validate via the SAME pure helpers
12
+ * (the per-kind host functions exported from `PeerEndpointResolver`) so ingest and
13
+ * resolve can never diverge: ingest is the first line (no poisoning), resolve is the
14
+ * final line (no bypass). Signal vs. Authority (docs/signal-vs-authority.md).
15
+ *
16
+ * Spec: docs/specs/mesh-endpoint-http-propagation.md (Receiver §).
17
+ */
18
+ import type { MeshEndpoint } from './types.js';
19
+ /** A whole batch larger than this is treated as malformed and rejected outright. */
20
+ export declare const MAX_ENDPOINTS_BATCH: number;
21
+ /** Drop any single endpoint whose url exceeds this length (defends the registry + parser). */
22
+ export declare const MAX_ENDPOINT_URL_LEN = 2048;
23
+ /**
24
+ * Pure per-element shape + per-kind host validation — the NON-config-gated subset
25
+ * shared with `PeerEndpointResolver.resolve()` (the resolver additionally applies its
26
+ * own `tailscaleEnabled` + LAN-subnet gates, which are dial-time policy, not ingest
27
+ * integrity). Rejects: wrong shape, unknown kind, missing/oversized url, unparseable
28
+ * or forbidden host (loopback/link-local/metadata), a tailscale rope not in
29
+ * 100.64/10, a lan rope not in RFC-1918, a cloudflare rope that is not public https.
30
+ */
31
+ export declare function isValidMeshEndpointShape(e: unknown): e is MeshEndpoint;
32
+ /**
33
+ * Validate an UNTRUSTED advertised endpoint set into a clean, capped `MeshEndpoint[]`.
34
+ *
35
+ * Order (spec Receiver §3): (a) require an array; reject the whole batch as malformed
36
+ * if `length > MAX_ENDPOINTS_BATCH`, else clamp the working slice to `MAX_ENDPOINTS+1`
37
+ * BEFORE the per-element loop (bounds the O(N) walk); (b) drop each element that fails
38
+ * shape/url-length/per-kind-host validation (malformed ELEMENTS are dropped, not the
39
+ * whole batch); (c) cap the kept set to `MAX_ENDPOINTS`. Fail-closed: a non-array or a
40
+ * fully-invalid set returns `[]` (the caller treats `[]` as absence → a no-op, NEVER a
41
+ * wipe of the peer's prior ropes).
42
+ */
43
+ export declare function validateMeshEndpoints(input: unknown): MeshEndpoint[];
44
+ /**
45
+ * Canonicalize an endpoint url for idempotent comparison: lower-case host, strip a
46
+ * trailing slash, drop a redundant default port. Prevents a cosmetically-different but
47
+ * semantically-equal advertisement (`…:4042` vs `…:4042/`, `HOST` vs `host`) from
48
+ * defeating the unchanged-set check and churning the registry. Unparseable input is
49
+ * returned trimmed-lowercased (best-effort; it would have failed validation anyway).
50
+ */
51
+ export declare function normalizeEndpointUrl(url: string): string;
52
+ /**
53
+ * Order-independent value equality of two endpoint sets, normalizing each url first —
54
+ * the idempotency comparator for the receiver (skip the registry write when unchanged).
55
+ */
56
+ export declare function meshEndpointsEqual(a: MeshEndpoint[] | undefined, b: MeshEndpoint[] | undefined): boolean;
57
+ //# sourceMappingURL=MeshEndpointValidator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MeshEndpointValidator.d.ts","sourceRoot":"","sources":["../../src/core/MeshEndpointValidator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAU/C,oFAAoF;AACpF,eAAO,MAAM,mBAAmB,QAAoB,CAAC;AACrD,8FAA8F;AAC9F,eAAO,MAAM,oBAAoB,OAAO,CAAC;AAIzC;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,YAAY,CAWtE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,EAAE,CAUpE;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAYxD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,CAAC,EAAE,YAAY,EAAE,GAAG,SAAS,EAC7B,CAAC,EAAE,YAAY,EAAE,GAAG,SAAS,GAC5B,OAAO,CAOT"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * MeshEndpointValidator — shared ingest validation for advertised mesh endpoints
3
+ * (mesh-endpoint-http-propagation, defense-in-depth, NOT authority).
4
+ *
5
+ * When a machine receives a peer's advertised endpoint set inside the signed lease
6
+ * RPC body, this validates the set BEFORE it is recorded into the local registry,
7
+ * so the registry can never be poisoned by a malformed/hostile-but-authenticated
8
+ * advertisement. Ingest validation gates REGISTRY INTEGRITY (no garbage stored); it
9
+ * is NOT the trust authority — `PeerEndpointResolver` re-validates the SAME per-kind
10
+ * host rules at dial time (the final line), and its health map decides whether an
11
+ * endpoint is actually reachable/trusted. Both validate via the SAME pure helpers
12
+ * (the per-kind host functions exported from `PeerEndpointResolver`) so ingest and
13
+ * resolve can never diverge: ingest is the first line (no poisoning), resolve is the
14
+ * final line (no bypass). Signal vs. Authority (docs/signal-vs-authority.md).
15
+ *
16
+ * Spec: docs/specs/mesh-endpoint-http-propagation.md (Receiver §).
17
+ */
18
+ import { MAX_ENDPOINTS, hostOf, isForbiddenHost, isTailscaleCgnat, isRfc1918, isPublicHttps, } from './PeerEndpointResolver.js';
19
+ /** A whole batch larger than this is treated as malformed and rejected outright. */
20
+ export const MAX_ENDPOINTS_BATCH = MAX_ENDPOINTS * 2;
21
+ /** Drop any single endpoint whose url exceeds this length (defends the registry + parser). */
22
+ export const MAX_ENDPOINT_URL_LEN = 2048;
23
+ const KINDS = new Set(['tailscale', 'lan', 'cloudflare']);
24
+ /**
25
+ * Pure per-element shape + per-kind host validation — the NON-config-gated subset
26
+ * shared with `PeerEndpointResolver.resolve()` (the resolver additionally applies its
27
+ * own `tailscaleEnabled` + LAN-subnet gates, which are dial-time policy, not ingest
28
+ * integrity). Rejects: wrong shape, unknown kind, missing/oversized url, unparseable
29
+ * or forbidden host (loopback/link-local/metadata), a tailscale rope not in
30
+ * 100.64/10, a lan rope not in RFC-1918, a cloudflare rope that is not public https.
31
+ */
32
+ export function isValidMeshEndpointShape(e) {
33
+ if (!e || typeof e !== 'object')
34
+ return false;
35
+ const { kind, url } = e;
36
+ if (typeof kind !== 'string' || !KINDS.has(kind))
37
+ return false;
38
+ if (typeof url !== 'string' || url.length === 0 || url.length > MAX_ENDPOINT_URL_LEN)
39
+ return false;
40
+ if (kind === 'cloudflare')
41
+ return isPublicHttps(url);
42
+ const host = hostOf(url);
43
+ if (!host || isForbiddenHost(host))
44
+ return false;
45
+ if (kind === 'tailscale')
46
+ return isTailscaleCgnat(host);
47
+ if (kind === 'lan')
48
+ return isRfc1918(host);
49
+ return false;
50
+ }
51
+ /**
52
+ * Validate an UNTRUSTED advertised endpoint set into a clean, capped `MeshEndpoint[]`.
53
+ *
54
+ * Order (spec Receiver §3): (a) require an array; reject the whole batch as malformed
55
+ * if `length > MAX_ENDPOINTS_BATCH`, else clamp the working slice to `MAX_ENDPOINTS+1`
56
+ * BEFORE the per-element loop (bounds the O(N) walk); (b) drop each element that fails
57
+ * shape/url-length/per-kind-host validation (malformed ELEMENTS are dropped, not the
58
+ * whole batch); (c) cap the kept set to `MAX_ENDPOINTS`. Fail-closed: a non-array or a
59
+ * fully-invalid set returns `[]` (the caller treats `[]` as absence → a no-op, NEVER a
60
+ * wipe of the peer's prior ropes).
61
+ */
62
+ export function validateMeshEndpoints(input) {
63
+ if (!Array.isArray(input))
64
+ return [];
65
+ if (input.length > MAX_ENDPOINTS_BATCH)
66
+ return [];
67
+ const slice = input.length > MAX_ENDPOINTS + 1 ? input.slice(0, MAX_ENDPOINTS + 1) : input;
68
+ const kept = [];
69
+ for (const e of slice) {
70
+ if (isValidMeshEndpointShape(e))
71
+ kept.push({ kind: e.kind, url: e.url });
72
+ if (kept.length >= MAX_ENDPOINTS)
73
+ break;
74
+ }
75
+ return kept;
76
+ }
77
+ /**
78
+ * Canonicalize an endpoint url for idempotent comparison: lower-case host, strip a
79
+ * trailing slash, drop a redundant default port. Prevents a cosmetically-different but
80
+ * semantically-equal advertisement (`…:4042` vs `…:4042/`, `HOST` vs `host`) from
81
+ * defeating the unchanged-set check and churning the registry. Unparseable input is
82
+ * returned trimmed-lowercased (best-effort; it would have failed validation anyway).
83
+ */
84
+ export function normalizeEndpointUrl(url) {
85
+ try {
86
+ const u = new URL(url);
87
+ u.hostname = u.hostname.toLowerCase();
88
+ let out = u.toString();
89
+ if (out.endsWith('/') && !url.endsWith('/'))
90
+ out = out.slice(0, -1);
91
+ return out.replace(/\/$/, '');
92
+ }
93
+ catch {
94
+ // @silent-fallback-ok: a url that does not parse here also fails validation, so it
95
+ // never reaches a real record; this only keeps the comparator total.
96
+ return url.trim().toLowerCase().replace(/\/$/, '');
97
+ }
98
+ }
99
+ /**
100
+ * Order-independent value equality of two endpoint sets, normalizing each url first —
101
+ * the idempotency comparator for the receiver (skip the registry write when unchanged).
102
+ */
103
+ export function meshEndpointsEqual(a, b) {
104
+ const norm = (x) => (x ?? [])
105
+ .map((e) => `${e.kind} ${normalizeEndpointUrl(e.url)}`)
106
+ .sort()
107
+ .join('|');
108
+ return norm(a) === norm(b);
109
+ }
110
+ //# sourceMappingURL=MeshEndpointValidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MeshEndpointValidator.js","sourceRoot":"","sources":["../../src/core/MeshEndpointValidator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * PeerEndpointRecorder — records a peer's advertised mesh endpoints into THIS
3
+ * machine's registry, idempotently and fail-closed (mesh-endpoint-http-propagation).
4
+ *
5
+ * The single chokepoint for "I just learned a peer's fast ropes from the signed lease
6
+ * RPC body" — shared by BOTH directions so the gate + validation + idempotency live in
7
+ * exactly one place:
8
+ * - the receiver routes (`/api/lease`, `/api/lease/pull`) record the authenticated
9
+ * SENDER's / PULLER's endpoints, and
10
+ * - the puller transport records the holder's endpoints out of a pull RESPONSE,
11
+ * bound to the cryptographically-verified responder identity.
12
+ *
13
+ * Invariants (spec Receiver §):
14
+ * 1. meshTransport gate — a no-op when `multiMachine.meshTransport` is off.
15
+ * 2. Absence is a no-op, NEVER a wipe — undefined/null/`[]`/fully-invalid leaves the
16
+ * peer's prior ropes intact (a silent or un-upgraded sender must not erase them).
17
+ * 3. Synchronous per-kind validation BEFORE storage (defense-in-depth, not authority).
18
+ * 4. Idempotent — skip the write (and its `lastSeen` bump + registry-dirty mark) when
19
+ * the normalized set is unchanged, preventing ~720 no-op rewrites/day on a stable
20
+ * 2-machine setup.
21
+ * 5. Advisory — a peer set is recorded ONLY into THAT peer's entry; it never mutates
22
+ * this machine's own self-endpoints. The resolver remains the dial-time authority.
23
+ */
24
+ import type { MeshEndpoint } from './types.js';
25
+ export interface PeerEndpointRecorderDeps {
26
+ /** Read the peer's currently-recorded endpoint set (for the idempotency compare). */
27
+ getPeerEndpoints: (machineId: string) => MeshEndpoint[] | undefined;
28
+ /** Write the peer's endpoint set (bumps lastSeen + persists — only called when changed). */
29
+ updateMachineEndpoints: (machineId: string, endpoints: MeshEndpoint[]) => void;
30
+ /** Live read: false ⇒ recording is a strict no-op (the lease handling is unchanged). */
31
+ meshTransportEnabled: () => boolean;
32
+ logger?: (msg: string) => void;
33
+ }
34
+ export declare class PeerEndpointRecorder {
35
+ private readonly d;
36
+ constructor(deps: PeerEndpointRecorderDeps);
37
+ private log;
38
+ /**
39
+ * Validate + idempotently record `raw` (the untrusted advertised set) as `peerMachineId`'s
40
+ * endpoints. Returns true iff it actually wrote a new value. Never throws — a write to an
41
+ * unknown machine (or any registry error) is swallowed (the peer simply keeps its prior set).
42
+ *
43
+ * `peerMachineId` MUST be the AUTHENTICATED / cryptographically-verified identity of the
44
+ * advertising machine (the route's `auth.machineId`, or the pull-response ack's verified
45
+ * responder). Never pass a self-asserted body field — that is the load-bearing binding.
46
+ */
47
+ record(peerMachineId: string, raw: unknown): boolean;
48
+ }
49
+ //# sourceMappingURL=PeerEndpointRecorder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PeerEndpointRecorder.d.ts","sourceRoot":"","sources":["../../src/core/PeerEndpointRecorder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,MAAM,WAAW,wBAAwB;IACvC,qFAAqF;IACrF,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,YAAY,EAAE,GAAG,SAAS,CAAC;IACpE,4FAA4F;IAC5F,sBAAsB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,IAAI,CAAC;IAC/E,wFAAwF;IACxF,oBAAoB,EAAE,MAAM,OAAO,CAAC;IACpC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,CAAC,CAA2B;gBAEjC,IAAI,EAAE,wBAAwB;IAI1C,OAAO,CAAC,GAAG;IAIX;;;;;;;;OAQG;IACH,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO;CAoBrD"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * PeerEndpointRecorder — records a peer's advertised mesh endpoints into THIS
3
+ * machine's registry, idempotently and fail-closed (mesh-endpoint-http-propagation).
4
+ *
5
+ * The single chokepoint for "I just learned a peer's fast ropes from the signed lease
6
+ * RPC body" — shared by BOTH directions so the gate + validation + idempotency live in
7
+ * exactly one place:
8
+ * - the receiver routes (`/api/lease`, `/api/lease/pull`) record the authenticated
9
+ * SENDER's / PULLER's endpoints, and
10
+ * - the puller transport records the holder's endpoints out of a pull RESPONSE,
11
+ * bound to the cryptographically-verified responder identity.
12
+ *
13
+ * Invariants (spec Receiver §):
14
+ * 1. meshTransport gate — a no-op when `multiMachine.meshTransport` is off.
15
+ * 2. Absence is a no-op, NEVER a wipe — undefined/null/`[]`/fully-invalid leaves the
16
+ * peer's prior ropes intact (a silent or un-upgraded sender must not erase them).
17
+ * 3. Synchronous per-kind validation BEFORE storage (defense-in-depth, not authority).
18
+ * 4. Idempotent — skip the write (and its `lastSeen` bump + registry-dirty mark) when
19
+ * the normalized set is unchanged, preventing ~720 no-op rewrites/day on a stable
20
+ * 2-machine setup.
21
+ * 5. Advisory — a peer set is recorded ONLY into THAT peer's entry; it never mutates
22
+ * this machine's own self-endpoints. The resolver remains the dial-time authority.
23
+ */
24
+ import { validateMeshEndpoints, meshEndpointsEqual } from './MeshEndpointValidator.js';
25
+ export class PeerEndpointRecorder {
26
+ d;
27
+ constructor(deps) {
28
+ this.d = deps;
29
+ }
30
+ log(m) {
31
+ this.d.logger?.(`[mesh-endpoints] ${m}`);
32
+ }
33
+ /**
34
+ * Validate + idempotently record `raw` (the untrusted advertised set) as `peerMachineId`'s
35
+ * endpoints. Returns true iff it actually wrote a new value. Never throws — a write to an
36
+ * unknown machine (or any registry error) is swallowed (the peer simply keeps its prior set).
37
+ *
38
+ * `peerMachineId` MUST be the AUTHENTICATED / cryptographically-verified identity of the
39
+ * advertising machine (the route's `auth.machineId`, or the pull-response ack's verified
40
+ * responder). Never pass a self-asserted body field — that is the load-bearing binding.
41
+ */
42
+ record(peerMachineId, raw) {
43
+ if (!this.d.meshTransportEnabled())
44
+ return false;
45
+ if (!peerMachineId)
46
+ return false;
47
+ if (raw === undefined || raw === null)
48
+ return false; // absence → no-op
49
+ const validated = validateMeshEndpoints(raw);
50
+ if (validated.length === 0)
51
+ return false; // empty/fully-invalid → no-op, never a wipe
52
+ try {
53
+ const current = this.d.getPeerEndpoints(peerMachineId);
54
+ if (meshEndpointsEqual(current, validated))
55
+ return false; // idempotent — skip the write
56
+ this.d.updateMachineEndpoints(peerMachineId, validated);
57
+ this.log(`recorded ${validated.length} endpoint(s) for ${peerMachineId} [${validated.map((e) => e.kind).join(',')}]`);
58
+ return true;
59
+ }
60
+ catch (err) {
61
+ // @silent-fallback-ok: recording is best-effort enrichment. An unknown-machine write
62
+ // (MACHINE_NOT_FOUND) or a registry race means the peer keeps its prior endpoint set and
63
+ // the next lease RPC retries — strictly no worse than today's cloudflare-only behavior.
64
+ this.log(`skip record for ${peerMachineId}: ${err instanceof Error ? err.message : String(err)}`);
65
+ return false;
66
+ }
67
+ }
68
+ }
69
+ //# sourceMappingURL=PeerEndpointRecorder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PeerEndpointRecorder.js","sourceRoot":"","sources":["../../src/core/PeerEndpointRecorder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAYvF,MAAM,OAAO,oBAAoB;IACd,CAAC,CAA2B;IAE7C,YAAY,IAA8B;QACxC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;IAChB,CAAC;IAEO,GAAG,CAAC,CAAS;QACnB,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,aAAqB,EAAE,GAAY;QACxC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,oBAAoB,EAAE;YAAE,OAAO,KAAK,CAAC;QACjD,IAAI,CAAC,aAAa;YAAE,OAAO,KAAK,CAAC;QACjC,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC,CAAC,kBAAkB;QACvE,MAAM,SAAS,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC,CAAC,4CAA4C;QACtF,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;YACvD,IAAI,kBAAkB,CAAC,OAAO,EAAE,SAAS,CAAC;gBAAE,OAAO,KAAK,CAAC,CAAC,8BAA8B;YACxF,IAAI,CAAC,CAAC,CAAC,sBAAsB,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;YACxD,IAAI,CAAC,GAAG,CAAC,YAAY,SAAS,CAAC,MAAM,oBAAoB,aAAa,KAAK,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACtH,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,qFAAqF;YACrF,yFAAyF;YACzF,wFAAwF;YACxF,IAAI,CAAC,GAAG,CAAC,mBAAmB,aAAa,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClG,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;CACF"}
@@ -80,11 +80,23 @@ export declare class ReapGuard {
80
80
  * subprocess fork (process tree / main-process probe) so a guarded session is
81
81
  * rejected without paying for a capture.
82
82
  *
83
+ * `bypassedReasons` (post-transfer closeout correctness, Part E): an optional
84
+ * set of keep-reasons to TREAT AS BYPASSED. When the cascade would return a
85
+ * reason that is in this set, it is SKIPPED — evaluation continues to the
86
+ * lower-priority guards — so the returned reason is the first keep-reason that
87
+ * is NOT bypassed, or `null` if every remaining guard clears. This is what lets
88
+ * a narrow bypass flag (e.g. `bypassRecentUserMessageForConfirmedMove`) lift
89
+ * EXACTLY ONE reason while every OTHER KEEP-guard is still re-checked — the
90
+ * contract the spec promises. An empty/absent set is byte-identical to the
91
+ * legacy single-eval behavior, and the priority order of the non-bypassed
92
+ * reasons is preserved exactly. `protected` is #1 and must never be supplied as
93
+ * bypassable — the cascade still evaluates it first, so it always wins.
94
+ *
83
95
  * Never throws — a thrown signal source is caught and resolved to KEEP
84
96
  * ('guard-error'), because we can never reason about a session we cannot
85
97
  * inspect, and the safe answer is always "keep".
86
98
  */
87
- blockedReason(session: Session): ReapKeepReason | null;
99
+ blockedReason(session: Session, bypassedReasons?: ReadonlySet<string> | readonly string[]): ReapKeepReason | null;
88
100
  private evaluate;
89
101
  /**
90
102
  * Observe-only work-evidence collection (reap-notify spec R2.1) — the
@@ -1 +1 @@
1
- {"version":3,"file":"ReapGuard.d.ts","sourceRoot":"","sources":["../../src/core/ReapGuard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,KAAK,CAAC;AAE5C,+EAA+E;AAC/E,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,cAAc,CAAC;CAC5B;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,iBAAiB,EAAE,MAAM,MAAM,EAAE,CAAC;IAClC,gBAAgB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC;IAChD,mBAAmB,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC;IACtD,kBAAkB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IACnD,YAAY,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACrD,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;IAClE,wBAAwB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IACvD,mBAAmB,EAAE,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,KAAK,MAAM,CAAC;IACrE,uBAAuB,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,KAAK,OAAO,CAAC;IAC7D,kBAAkB,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC;IACrD,kFAAkF;IAClF,iBAAiB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,GAAG,SAAS,CAAC;IACjE,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,6EAA6E;IAC7E,QAAQ,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oEAAoE;IACpE,sBAAsB,EAAE,OAAO,CAAC;IAChC;;;;;;;;OAQG;IACH,uBAAuB,EAAE,MAAM,CAAC;CACjC;AAED,eAAO,MAAM,0BAA0B,EAAE,gBAKxC,CAAC;AAEF,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgB;IACrC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAmB;IACxC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;gBAEvB,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC;IAMjE;;;;;;;;;OASG;IACH,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,cAAc,GAAG,IAAI;IAQtD,OAAO,CAAC,QAAQ;IA6DhB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,gBAAgB,EAAE;CA8DxF"}
1
+ {"version":3,"file":"ReapGuard.d.ts","sourceRoot":"","sources":["../../src/core/ReapGuard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,KAAK,CAAC;AAE5C,+EAA+E;AAC/E,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,cAAc,CAAC;CAC5B;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,iBAAiB,EAAE,MAAM,MAAM,EAAE,CAAC;IAClC,gBAAgB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC;IAChD,mBAAmB,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC;IACtD,kBAAkB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IACnD,YAAY,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACrD,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;IAClE,wBAAwB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IACvD,mBAAmB,EAAE,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,KAAK,MAAM,CAAC;IACrE,uBAAuB,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,KAAK,OAAO,CAAC;IAC7D,kBAAkB,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC;IACrD,kFAAkF;IAClF,iBAAiB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,GAAG,SAAS,CAAC;IACjE,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,6EAA6E;IAC7E,QAAQ,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oEAAoE;IACpE,sBAAsB,EAAE,OAAO,CAAC;IAChC;;;;;;;;OAQG;IACH,uBAAuB,EAAE,MAAM,CAAC;CACjC;AAED,eAAO,MAAM,0BAA0B,EAAE,gBAKxC,CAAC;AAEF,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgB;IACrC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAmB;IACxC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;gBAEvB,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC;IAMjE;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,eAAe,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,MAAM,EAAE,GAAG,cAAc,GAAG,IAAI;IAcjH,OAAO,CAAC,QAAQ;IAgGhB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,gBAAgB,EAAE;CA8DxF"}