patchwork-os 1.2.0-beta.3.canary.875 → 1.2.0-beta.3.canary.877

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.
@@ -1,11 +1,10 @@
1
- import * as dns from "node:dns/promises";
2
1
  import { recordApprovalCompleted, recordApprovalPrompted, } from "./activationMetrics.js";
3
2
  import { computePersonalSignals } from "./approvalSignals.js";
4
3
  import { evaluateRules, loadCcPermissions, loadCcPermissionsAttributed, } from "./ccPermissions.js";
4
+ import { pinnedSend } from "./pinnedSend.js";
5
5
  import { captureForRunlog } from "./recipes/stepObservation.js";
6
6
  import { computeRiskSignals } from "./riskSignals.js";
7
7
  import { classifyTool } from "./riskTier.js";
8
- import { isPrivateHost } from "./ssrfGuard.js";
9
8
  // Tools CC allows in plan mode (read-only — no filesystem or network writes).
10
9
  const PLAN_MODE_READ_TOOLS = new Set([
11
10
  "Read",
@@ -329,51 +328,6 @@ export async function routeApprovalRequest(req, deps) {
329
328
  }
330
329
  return { status: 404, body: { error: "not found" } };
331
330
  }
332
- /**
333
- * Blocked IP patterns for SSRF defense (loopback, RFC-1918, link-local, ULA,
334
- * IPv4-mapped IPv6, 6to4-wrapped private, etc.).
335
- *
336
- * Delegates to the shared, tested `isPrivateHost` (audit 2026-06-03 HIGH #5).
337
- * The previous hand-rolled version split on "." and `Number()`-coerced the
338
- * parts, so IPv4-mapped IPv6 (`::ffff:127.0.0.1` → `Number("::ffff:127")`=NaN)
339
- * and every native IPv6 private range silently bypassed the guard.
340
- */
341
- function isBlockedIp(ip) {
342
- return isPrivateHost(ip);
343
- }
344
- /**
345
- * Resolve a hostname and return true if it should be blocked for SSRF defense.
346
- *
347
- * Audit 2026-06-03 (MEDIUM #26): resolve ALL addresses (`{ all: true }`) and
348
- * block if ANY is private. The previous single-address `dns.lookup(hostname)`
349
- * checked only the first result, so split-horizon DNS could return a public
350
- * address to the guard while the subsequent `fetch` resolved a private one.
351
- * DNS-resolution failure is treated as blocked (fail-closed), matching the
352
- * prior per-site catch-and-skip behavior. `label` (when set) reproduces the
353
- * per-dispatcher warn messages.
354
- */
355
- async function hostResolvesToBlockedIp(hostname, label) {
356
- let resolved;
357
- try {
358
- const r = await dns.lookup(hostname, { all: true });
359
- // `{ all: true }` always yields an array; coerce defensively so a single
360
- // LookupAddress (e.g. a test mock that forgot the array) can't throw on
361
- // `.find` and silently fail open vs closed.
362
- resolved = Array.isArray(r) ? r : [r];
363
- }
364
- catch (err) {
365
- if (label)
366
- console.warn(`[${label}] DNS resolution failed for ${hostname}: ${err instanceof Error ? err.message : String(err)}`);
367
- return true;
368
- }
369
- const blocked = resolved.find((r) => isBlockedIp(r.address));
370
- if (blocked) {
371
- if (label)
372
- console.warn(`[${label}] Blocked private/loopback IP: ${blocked.address}`);
373
- return true;
374
- }
375
- return false;
376
- }
377
331
  /**
378
332
  * Dispatch a JSON webhook notification when an approval is queued.
379
333
  * Failures are logged but never thrown — webhook errors must not block
@@ -398,13 +352,13 @@ async function dispatchApprovalWebhook(webhookUrl, payload) {
398
352
  console.warn(`[webhook] Blocked loopback webhook hostname: ${hostname}`);
399
353
  return;
400
354
  }
401
- // Resolve hostname and check EVERY resolved IP against the blocklist.
402
- if (await hostResolvesToBlockedIp(hostname, "webhook"))
403
- return;
404
355
  const controller = new AbortController();
405
356
  const timer = setTimeout(() => controller.abort(), 5_000);
406
357
  try {
407
- const res = await fetch(webhookUrl, {
358
+ // Every resolved IP checked, the checked address pinned, no redirects —
359
+ // shared with every notification sender (security sweep L3). null =
360
+ // refused before connecting, already warned as [webhook].
361
+ const res = await pinnedSend(webhookUrl, {
408
362
  method: "POST",
409
363
  headers: { "Content-Type": "application/json" },
410
364
  body: JSON.stringify({
@@ -415,7 +369,9 @@ async function dispatchApprovalWebhook(webhookUrl, payload) {
415
369
  : new Date(payload.expiresAt).toISOString(),
416
370
  }),
417
371
  signal: controller.signal,
418
- });
372
+ }, { label: "webhook" });
373
+ if (res === null)
374
+ return;
419
375
  if (!res.ok) {
420
376
  console.warn(`[webhook] Non-2xx response from webhook: ${res.status} ${res.statusText}`);
421
377
  }
@@ -448,12 +404,10 @@ async function dispatchPushNotification(pushServiceUrl, pushServiceToken, payloa
448
404
  console.warn(`[push] Blocked loopback push service hostname`);
449
405
  return;
450
406
  }
451
- if (!allowPrivate && (await hostResolvesToBlockedIp(hostname, "push")))
452
- return;
453
407
  const controller = new AbortController();
454
408
  const timer = setTimeout(() => controller.abort(), 5_000);
455
409
  try {
456
- const res = await fetch(`${pushServiceUrl}/push`, {
410
+ const res = await pinnedSend(`${pushServiceUrl}/push`, {
457
411
  method: "POST",
458
412
  headers: {
459
413
  "Content-Type": "application/json",
@@ -461,7 +415,9 @@ async function dispatchPushNotification(pushServiceUrl, pushServiceToken, payloa
461
415
  },
462
416
  body: JSON.stringify(payload),
463
417
  signal: controller.signal,
464
- });
418
+ }, { label: "push", allowPrivate });
419
+ if (res === null)
420
+ return;
465
421
  if (!res.ok) {
466
422
  console.warn(`[push] Non-2xx from push relay: ${res.status} ${res.statusText}`);
467
423
  }
@@ -500,12 +456,10 @@ export async function dispatchCancelPush(pushServiceUrl, pushServiceToken, callI
500
456
  console.warn(`[push] Blocked loopback push service hostname`);
501
457
  return;
502
458
  }
503
- if (!allowPrivate && (await hostResolvesToBlockedIp(hostname, "push")))
504
- return;
505
459
  const controller = new AbortController();
506
460
  const timer = setTimeout(() => controller.abort(), 5_000);
507
461
  try {
508
- const res = await fetch(`${pushServiceUrl}/push`, {
462
+ const res = await pinnedSend(`${pushServiceUrl}/push`, {
509
463
  method: "POST",
510
464
  headers: {
511
465
  "Content-Type": "application/json",
@@ -513,7 +467,9 @@ export async function dispatchCancelPush(pushServiceUrl, pushServiceToken, callI
513
467
  },
514
468
  body: JSON.stringify({ kind: "cancel", callId }),
515
469
  signal: controller.signal,
516
- });
470
+ }, { label: "push", allowPrivate });
471
+ if (res === null)
472
+ return;
517
473
  if (!res.ok) {
518
474
  console.warn(`[push] Non-2xx from push relay (cancel): ${res.status} ${res.statusText}`);
519
475
  }
@@ -555,8 +511,6 @@ async function dispatchNtfyApproval(ntfyServer, payload) {
555
511
  console.warn(`[ntfy] Blocked loopback ntfy server hostname`);
556
512
  return;
557
513
  }
558
- if (await hostResolvesToBlockedIp(hostname, "ntfy"))
559
- return;
560
514
  const callbackBase = payload.bridgeCallbackBase.replace(/\/+$/, "");
561
515
  const { createHmac } = await import("node:crypto");
562
516
  let approveUrl;
@@ -614,12 +568,14 @@ async function dispatchNtfyApproval(ntfyServer, payload) {
614
568
  const controller = new AbortController();
615
569
  const timer = setTimeout(() => controller.abort(), 5_000);
616
570
  try {
617
- const res = await fetch(`${ntfyServer.replace(/\/+$/, "")}/`, {
571
+ const res = await pinnedSend(`${ntfyServer.replace(/\/+$/, "")}/`, {
618
572
  method: "POST",
619
573
  headers: { "Content-Type": "application/json" },
620
574
  body,
621
575
  signal: controller.signal,
622
- });
576
+ }, { label: "ntfy" });
577
+ if (res === null)
578
+ return;
623
579
  if (!res.ok) {
624
580
  console.warn(`[ntfy] Non-2xx from ntfy server: ${res.status} ${res.statusText}`);
625
581
  }
@@ -648,8 +604,6 @@ async function dispatchNtfyConfirmation(ntfyServer, payload) {
648
604
  }
649
605
  if (hostname === "localhost")
650
606
  return;
651
- if (await hostResolvesToBlockedIp(hostname))
652
- return;
653
607
  const approved = payload.outcome === "approved";
654
608
  const body = JSON.stringify({
655
609
  topic: payload.topic,
@@ -665,12 +619,12 @@ async function dispatchNtfyConfirmation(ntfyServer, payload) {
665
619
  const controller = new AbortController();
666
620
  const timer = setTimeout(() => controller.abort(), 5_000);
667
621
  try {
668
- await fetch(`${ntfyServer.replace(/\/+$/, "")}/`, {
622
+ await pinnedSend(`${ntfyServer.replace(/\/+$/, "")}/`, {
669
623
  method: "POST",
670
624
  headers: { "Content-Type": "application/json" },
671
625
  body,
672
626
  signal: controller.signal,
673
- });
627
+ }, { label: "ntfy-confirm" });
674
628
  }
675
629
  catch {
676
630
  // best-effort
@@ -1 +1 @@
1
- {"version":3,"file":"approvalHttp.js","sourceRoot":"","sources":["../src/approvalHttp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,mBAAmB,CAAC;AACzC,OAAO,EACL,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,wBAAwB,CAAC;AAMhC,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,2BAA2B,GAC5B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,8EAA8E;AAC9E,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC;IACnC,MAAM;IACN,MAAM;IACN,MAAM;IACN,UAAU;IACV,WAAW;IACX,IAAI;CACL,CAAC,CAAC;AAoJH;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CACnC,GAAc,EACd,IAAqC,EACrC,aAA6B;IAE7B,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,cAAc,EAAE,mBAAmB;QACnC,eAAe,EAAE,UAAU;QAC3B,UAAU,EAAE,YAAY;QACxB,mBAAmB,EAAE,IAAI;KAC1B,CAAC,CAAC;IAEH,SAAS,YAAY;QACnB,IAAI,GAAG,CAAC,aAAa;YAAE,OAAO;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,aAAa;YAC5B,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,aAAa,CAAC;YACnD,CAAC,CAAC,IAAI,CAAC;QACT,GAAG,CAAC,KAAK,CAAC,0BAA0B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACtE,CAAC;IAED,YAAY,EAAE,CAAC;IAEf,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QAC5C,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;YACtB,WAAW,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,aAAa;YAC5B,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,aAAa,CAAC;YACnD,CAAC,CAAC,IAAI,CAAC;QACT,GAAG,CAAC,KAAK,CAAC,wBAAwB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;QACjC,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;YACtB,aAAa,CAAC,SAAS,CAAC,CAAC;YACzB,WAAW,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QACD,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC/B,CAAC,EAAE,MAAM,CAAC,CAAC;IAEX,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QACnB,aAAa,CAAC,SAAS,CAAC,CAAC;QACzB,WAAW,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,GAAgB,EAChB,IAAsB;IAEtB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;IAE7B,IAAI,MAAM,KAAK,KAAK,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;QAC9C,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,SAAS;YACxB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC;YAC/C,CAAC,CAAC,IAAI,CAAC;QACT,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IACzC,CAAC;IAED,IAAI,MAAM,KAAK,KAAK,IAAI,IAAI,KAAK,iBAAiB,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,iBAAiB,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE;YACjE,WAAW,EAAE,IAAI,CAAC,mBAAmB;SACtC,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,2BAA2B,CAAC,IAAI,CAAC,SAAS,EAAE;YAC7D,WAAW,EAAE,IAAI,CAAC,mBAAmB;SACtC,CAAC,CAAC;QACH,OAAO;YACL,MAAM,EAAE,GAAG;YACX,IAAI,EAAE;gBACJ,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,GAAG,EAAE,KAAK,CAAC,GAAG;gBACd,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,UAAU;aACX;SACF,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,KAAK,MAAM,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;QAC/C,OAAO,MAAM,qBAAqB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,YAAY,GAAG,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/D,IAAI,MAAM,KAAK,MAAM,IAAI,YAAY,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAW,CAAC;QACzC,0EAA0E;QAC1E,yEAAyE;QACzE,4EAA4E;QAC5E,qEAAqE;QACrE,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC;QACnD,IAAI,IAAI,CAAC,cAAc,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YACjD,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;YACpE,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC;iBACvD,MAAM,CAAC,WAAW,MAAM,EAAE,CAAC;iBAC3B,MAAM,CAAC,KAAK,CAAC,CAAC;YACjB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CACxB,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EACjD,KAAK,CACN,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC5C,MAAM,KAAK,GACT,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,IAAI,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACrE,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO;oBACL,MAAM,EAAE,GAAG;oBACX,IAAI,EAAE,EAAE,KAAK,EAAE,iCAAiC,EAAE;iBACnD,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YACjC,0EAA0E;YAC1E,yEAAyE;YACzE,2EAA2E;YAC3E,mEAAmE;YACnE,OAAO;gBACL,MAAM,EAAE,GAAG;gBACX,IAAI,EAAE;oBACJ,KAAK,EACH,gEAAgE;iBACnE;aACF,CAAC;QACJ,CAAC;aAAM,IAAI,GAAG,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YAC3C,wEAAwE;YACxE,2EAA2E;YAC3E,0EAA0E;YAC1E,6EAA6E;YAC7E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YAClE,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO;oBACL,MAAM,EAAE,GAAG;oBACX,IAAI,EAAE,EAAE,KAAK,EAAE,mCAAmC,EAAE;iBACrD,CAAC;YACJ,CAAC;QACH,CAAC;QACD,wEAAwE;QACxE,0EAA0E;QAC1E,iEAAiE;QACjE,sEAAsE;QACtE,0EAA0E;QAC1E,SAAS;QACT,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;QAC1E,MAAM,eAAe,GAAG,YAAY,EAAE,QAAQ,CAAC;QAC/C,MAAM,kBAAkB,GAAG,YAAY,EAAE,WAAW,CAAC;QACrD,MAAM,iBAAiB,GAAG,YAAY,EAAE,UAAU,CAAC;QACnD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,EAAE,EAAE,CAAC;YACP,qEAAqE;YACrE,iEAAiE;YACjE,8CAA8C;YAC9C,EAAE;YACF,sEAAsE;YACtE,yEAAyE;YACzE,yEAAyE;YACzE,uEAAuE;YACvE,2DAA2D;YAC3D,IAAI,QAEH,CAAC;YACF,IAAI,CAAC;gBACH,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAC7D,CAAC;YAAC,MAAM,CAAC;gBACP,QAAQ,GAAG,SAAS,CAAC;YACvB,CAAC;YACD,qEAAqE;YACrE,oEAAoE;YACpE,kEAAkE;YAClE,oEAAoE;YACpE,sEAAsE;YACtE,cAAc;YACd,EAAE;YACF,qEAAqE;YACrE,wEAAwE;YACxE,IAAI,QAAQ;gBAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC/D,sEAAsE;YACtE,uEAAuE;YACvE,0DAA0D;YAC1D,IAAI,CAAC,UAAU,EAAE,CAAC,mBAAmB,EAAE;gBACrC,MAAM;gBACN,QAAQ,EAAE,OAAO;gBACjB,oEAAoE;gBACpE,gEAAgE;gBAChE,+DAA+D;gBAC/D,oEAAoE;gBACpE,oCAAoC;gBACpC,OAAO,EAAE,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW;gBAChE,GAAG,CAAC,eAAe,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC;gBACnE,GAAG,CAAC,kBAAkB,KAAK,SAAS,IAAI;oBACtC,WAAW,EAAE,kBAAkB;iBAChC,CAAC;gBACF,iEAAiE;gBACjE,wDAAwD;gBACxD,wDAAwD;gBACxD,GAAG,CAAC,iBAAiB,KAAK,SAAS,IAAI;oBACrC,UAAU,EAAE,iBAAiB;iBAC9B,CAAC;gBACF,oEAAoE;gBACpE,oEAAoE;gBACpE,+DAA+D;gBAC/D,GAAG,CAAC,QAAQ,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;aACrC,CAAC,CAAC;YACH,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC;QAC9D,CAAC;QACD,mEAAmE;QACnE,mEAAmE;QACnE,2CAA2C;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACnD,IAAI,KAAK,EAAE,CAAC;YACV,OAAO;gBACL,MAAM,EAAE,GAAG;gBACX,IAAI,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE;aAC5D,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE,CAAC;IAC5D,CAAC;IAED,MAAM,WAAW,GAAG,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7D,IAAI,MAAM,KAAK,MAAM,IAAI,WAAW,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAW,CAAC;QACxC,+DAA+D;QAC/D,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC;QACnD,IAAI,IAAI,CAAC,cAAc,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YACjD,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;YACpE,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC;iBACvD,MAAM,CAAC,UAAU,MAAM,EAAE,CAAC;iBAC1B,MAAM,CAAC,KAAK,CAAC,CAAC;YACjB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CACxB,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EACjD,KAAK,CACN,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC5C,MAAM,KAAK,GACT,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,IAAI,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACrE,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO;oBACL,MAAM,EAAE,GAAG;oBACX,IAAI,EAAE,EAAE,KAAK,EAAE,iCAAiC,EAAE;iBACnD,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YACjC,0EAA0E;YAC1E,wEAAwE;YACxE,qEAAqE;YACrE,gDAAgD;YAChD,OAAO;gBACL,MAAM,EAAE,GAAG;gBACX,IAAI,EAAE;oBACJ,KAAK,EACH,gEAAgE;iBACnE;aACF,CAAC;QACJ,CAAC;aAAM,IAAI,GAAG,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YAC3C,wEAAwE;YACxE,2EAA2E;YAC3E,0EAA0E;YAC1E,6EAA6E;YAC7E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YAClE,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO;oBACL,MAAM,EAAE,GAAG;oBACX,IAAI,EAAE,EAAE,KAAK,EAAE,mCAAmC,EAAE;iBACrD,CAAC;YACJ,CAAC;QACH,CAAC;QACD,sEAAsE;QACtE,uEAAuE;QACvE,yDAAyD;QACzD,IAAI,MAA0B,CAAC;QAC/B,MAAM,GAAG,GAAI,GAAG,CAAC,IAA4C,EAAE,MAAM,CAAC;QACtE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACzC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;gBAAE,MAAM,GAAG,OAAO,CAAC;QAC3C,CAAC;QACD,wEAAwE;QACxE,4EAA4E;QAC5E,uBAAuB;QACvB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;QACzE,MAAM,cAAc,GAAG,WAAW,EAAE,QAAQ,CAAC;QAC7C,MAAM,iBAAiB,GAAG,WAAW,EAAE,WAAW,CAAC;QACnD,MAAM,gBAAgB,GAAG,WAAW,EAAE,UAAU,CAAC;QACjD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACrC,IAAI,EAAE,EAAE,CAAC;YACP,wEAAwE;YACxE,uEAAuE;YACvE,uEAAuE;YACvE,gCAAgC;YAChC,EAAE;YACF,oEAAoE;YACpE,IAAI,QAEH,CAAC;YACF,IAAI,CAAC;gBACH,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAC7D,CAAC;YAAC,MAAM,CAAC;gBACP,QAAQ,GAAG,SAAS,CAAC;YACvB,CAAC;YACD,gEAAgE;YAChE,IAAI,QAAQ;gBAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC/D,IAAI,CAAC,UAAU,EAAE,CAAC,mBAAmB,EAAE;gBACrC,MAAM;gBACN,QAAQ,EAAE,MAAM;gBAChB,GAAG,CAAC,QAAQ,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;gBACpC,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,CAAC;gBACvC,mEAAmE;gBACnE,OAAO,EAAE,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW;gBAChE,GAAG,CAAC,cAAc,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;gBACjE,GAAG,CAAC,iBAAiB,KAAK,SAAS,IAAI;oBACrC,WAAW,EAAE,iBAAiB;iBAC/B,CAAC;gBACF,GAAG,CAAC,gBAAgB,KAAK,SAAS,IAAI;oBACpC,UAAU,EAAE,gBAAgB;iBAC7B,CAAC;aACH,CAAC,CAAC;YACH,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;QAC7D,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACnD,IAAI,KAAK,EAAE,CAAC;YACV,OAAO;gBACL,MAAM,EAAE,GAAG;gBACX,IAAI,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE;aAC5D,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE,CAAC;IAC5D,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,CAAC;AACvD,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,WAAW,CAAC,EAAU;IAC7B,OAAO,aAAa,CAAC,EAAE,CAAC,CAAC;AAC3B,CAAC;AAED;;;;;;;;;;GAUG;AACH,KAAK,UAAU,uBAAuB,CACpC,QAAgB,EAChB,KAAc;IAEd,IAAI,QAAoC,CAAC;IACzC,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,yEAAyE;QACzE,wEAAwE;QACxE,4CAA4C;QAC5C,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAwB,CAAC,CAAC;IAC/D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,KAAK;YACP,OAAO,CAAC,IAAI,CACV,IAAI,KAAK,+BAA+B,QAAQ,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACxG,CAAC;QACJ,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7D,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,KAAK;YACP,OAAO,CAAC,IAAI,CACV,IAAI,KAAK,kCAAkC,OAAO,CAAC,OAAO,EAAE,CAC7D,CAAC;QACJ,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,uBAAuB,CACpC,UAAkB,EAClB,OAQC;IAED,6BAA6B;IAC7B,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACvC,OAAO,CAAC,IAAI,CACV,6CAA6C,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CACvE,CAAC;QACF,OAAO;IACT,CAAC;IAED,IAAI,QAAgB,CAAC;IACrB,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;QACpE,OAAO;IACT,CAAC;IAED,yDAAyD;IACzD,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,gDAAgD,QAAQ,EAAE,CAAC,CAAC;QACzE,OAAO;IACT,CAAC;IAED,sEAAsE;IACtE,IAAI,MAAM,uBAAuB,CAAC,QAAQ,EAAE,SAAS,CAAC;QAAE,OAAO;IAE/D,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC;IAC1D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,UAAU,EAAE;YAClC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,GAAG,OAAO;gBACV,WAAW,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE;gBACxD,SAAS,EACP,OAAO,CAAC,SAAS,KAAK,IAAI;oBACxB,CAAC,CAAC,IAAI;oBACN,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;aAChD,CAAC;YACF,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CACV,4CAA4C,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAC3E,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CACV,8BAA8B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACjF,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,wBAAwB,CACrC,cAAsB,EACtB,gBAAwB,EACxB,OAWC,EACD,eAAwB,KAAK;IAE7B,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QAC3D,OAAO;IACT,CAAC;IACD,IAAI,QAAgB,CAAC;IACrB,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;QAC7D,OAAO;IACT,CAAC;IACD,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;QAC9D,OAAO;IACT,CAAC;IACD,IAAI,CAAC,YAAY,IAAI,CAAC,MAAM,uBAAuB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACpE,OAAO;IAET,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC;IAC1D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,cAAc,OAAO,EAAE;YAChD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,gBAAgB,EAAE;aAC5C;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAC7B,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CACV,mCAAmC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAClE,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CACV,2BAA2B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAC9E,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,cAAsB,EACtB,gBAAwB,EACxB,MAAc,EACd,eAAwB,KAAK;IAE7B,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QAC3D,OAAO;IACT,CAAC;IACD,IAAI,QAAgB,CAAC;IACrB,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;QAC7D,OAAO;IACT,CAAC;IACD,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;QAC9D,OAAO;IACT,CAAC;IACD,IAAI,CAAC,YAAY,IAAI,CAAC,MAAM,uBAAuB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACpE,OAAO;IAET,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC;IAC1D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,cAAc,OAAO,EAAE;YAChD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,gBAAgB,EAAE;aAC5C;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;YAChD,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CACV,4CAA4C,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAC3E,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CACV,kCAAkC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACrF,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,KAAK,UAAU,oBAAoB,CACjC,UAAkB,EAClB,OAUC;IAED,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACvC,OAAO,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;QAC1D,OAAO;IACT,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACvD,OAAO,CAAC,IAAI,CACV,sFAAsF,CACvF,CAAC;QACF,OAAO;IACT,CAAC;IACD,IAAI,QAAgB,CAAC;IACrB,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;QAC5D,OAAO;IACT,CAAC;IACD,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;QAC7D,OAAO;IACT,CAAC;IACD,IAAI,MAAM,uBAAuB,CAAC,QAAQ,EAAE,MAAM,CAAC;QAAE,OAAO;IAE5D,MAAM,YAAY,GAAG,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACpE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;IACnD,IAAI,UAAkB,CAAC;IACvB,IAAI,SAAiB,CAAC;IACtB,IAAI,aAAqC,CAAC;IAE1C,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,uEAAuE;QACvE,4EAA4E;QAC5E,wEAAwE;QACxE,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC;aACxD,MAAM,CAAC,WAAW,OAAO,CAAC,MAAM,EAAE,CAAC;aACnC,MAAM,CAAC,KAAK,CAAC,CAAC;QACjB,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC;aACvD,MAAM,CAAC,UAAU,OAAO,CAAC,MAAM,EAAE,CAAC;aAClC,MAAM,CAAC,KAAK,CAAC,CAAC;QACjB,UAAU,GAAG,GAAG,YAAY,YAAY,OAAO,CAAC,MAAM,QAAQ,UAAU,EAAE,CAAC;QAC3E,SAAS,GAAG,GAAG,YAAY,WAAW,OAAO,CAAC,MAAM,QAAQ,SAAS,EAAE,CAAC;QACxE,aAAa,GAAG,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;IACzD,CAAC;SAAM,CAAC;QACN,sEAAsE;QACtE,yEAAyE;QACzE,UAAU,GAAG,GAAG,YAAY,YAAY,OAAO,CAAC,MAAM,EAAE,CAAC;QACzD,SAAS,GAAG,GAAG,YAAY,WAAW,OAAO,CAAC,MAAM,EAAE,CAAC;QACvD,aAAa,GAAG;YACd,cAAc,EAAE,kBAAkB;YAClC,kBAAkB,EAAE,OAAO,CAAC,aAAa;SAC1C,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,KAAK,EAAE,WAAW,OAAO,CAAC,QAAQ,MAAM,OAAO,CAAC,IAAI,GAAG;QACvD,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,qBAAqB,OAAO,CAAC,MAAM,EAAE;QACjE,IAAI,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;QACzB,QAAQ,EAAE,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,OAAO,EAAE;YACP;gBACE,MAAM,EAAE,MAAM;gBACd,KAAK,EAAE,SAAS;gBAChB,MAAM,EAAE,MAAM;gBACd,GAAG,EAAE,UAAU;gBACf,OAAO,EAAE,aAAa;gBACtB,KAAK,EAAE,IAAI;aACZ;YACD;gBACE,MAAM,EAAE,MAAM;gBACd,KAAK,EAAE,QAAQ;gBACf,MAAM,EAAE,MAAM;gBACd,GAAG,EAAE,SAAS;gBACd,OAAO,EAAE,aAAa;gBACtB,KAAK,EAAE,IAAI;aACZ;SACF;KACF,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC;IAC1D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,EAAE;YAC5D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI;YACJ,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CACV,oCAAoC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CACnE,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CACV,2BAA2B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAC9E,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,wBAAwB,CACrC,UAAkB,EAClB,OAA6D;IAE7D,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO;IAC/C,IAAI,QAAgB,CAAC;IACrB,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;IACT,CAAC;IACD,IAAI,QAAQ,KAAK,WAAW;QAAE,OAAO;IACrC,IAAI,MAAM,uBAAuB,CAAC,QAAQ,CAAC;QAAE,OAAO;IACpD,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,KAAK,UAAU,CAAC;IAChD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,KAAK,EAAE,QAAQ;YACb,CAAC,CAAC,cAAc,OAAO,CAAC,QAAQ,EAAE;YAClC,CAAC,CAAC,cAAc,OAAO,CAAC,QAAQ,EAAE;QACpC,OAAO,EAAE,QAAQ;YACf,CAAC,CAAC,yCAAyC;YAC3C,CAAC,CAAC,wCAAwC;QAC5C,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC;QAC3C,QAAQ,EAAE,CAAC;KACZ,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC;IAC1D,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,EAAE;YAChD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI;YACJ,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,cAAc;IAChB,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAiBD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,2BAA2B,CACzC,IAAwB,EACxB,OAgBC;AACD;;;;;GAKG;AACH,OAAkE,EAAE;IAMpE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAC5E,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,sBAAsB,EAAE,OAAO,EAAE,GAC9D,IAAI,CAAC,KAAK,CAAC,OAAO,CAChB;QACE,QAAQ;QACR,MAAM;QACN,IAAI;QACJ,OAAO;QACP,SAAS;QACT,WAAW;QACX,sEAAsE;QACtE,yEAAyE;QACzE,+DAA+D;QAC/D,GAAG,CAAC,OAAO,CAAC,aAAa,KAAK,SAAS,IAAI;YACzC,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC,CAAC;QACF,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,IAAI;YACtC,UAAU,EAAE,OAAO,CAAC,UAAU;SAC/B,CAAC;QACF,GAAG,CAAC,OAAO,CAAC,eAAe,KAAK,SAAS,IAAI;YAC3C,eAAe,EAAE,OAAO,CAAC,eAAe;SACzC,CAAC;KACH,EACD;QACE,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS;QACpD,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;QACzD,GAAG,CAAC,IAAI,CAAC,sBAAsB,KAAK,SAAS,IAAI;YAC/C,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;SACpD,CAAC;KACH,CACF,CAAC;IACJ,sBAAsB,EAAE,CAAC;IAEzB,wEAAwE;IACxE,uEAAuE;IACvE,2EAA2E;IAC3E,EAAE;IACF,0EAA0E;IAC1E,wEAAwE;IACxE,yEAAyE;IACzE,sEAAsE;IACtE,uEAAuE;IACvE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,IAAI,IAAI,CAAC;IAE7D,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,uBAAuB,CAAC,IAAI,CAAC,UAAU,EAAE;YACvC,QAAQ;YACR,IAAI;YACJ,MAAM;YACN,WAAW,EAAE,GAAG;YAChB,SAAS;YACT,OAAO;SACR,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACrB,CAAC;IAED,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,gBAAgB,IAAI,aAAa,EAAE,CAAC;QAClE,wBAAwB,CACtB,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,gBAAgB,EACrB;YACE,QAAQ;YACR,IAAI;YACJ,MAAM;YACN,WAAW,EAAE,GAAG;YAChB,SAAS;YACT,OAAO;YACP,WAAW;YACX,aAAa;YACb,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,IAAI,EAAE;SAClD,EACD,IAAI,CAAC,uBAAuB,IAAI,KAAK,CACtC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,IAAI,IAAI,CAAC,SAAS,IAAI,aAAa,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC/D,oBAAoB,CAAC,IAAI,CAAC,UAAU,IAAI,iBAAiB,EAAE;YACzD,KAAK,EAAE,IAAI,CAAC,SAAS;YACrB,QAAQ;YACR,IAAI;YACJ,MAAM;YACN,OAAO;YACP,aAAa;YACb,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,UAAU,EAAE,IAAI,CAAC,cAAc;SAChC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACrB,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,sBAAsB,EAAE,OAAO,EAAE,CAAC;AACrD,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,GAAgB,EAChB,IAAsB;IAEtB,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;IAC5B,MAAM,QAAQ,GAAG,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IACxE,MAAM,SAAS,GACb,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IAClE,MAAM,MAAM,GACV,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI;QACrD,CAAC,CAAE,IAAI,CAAC,MAAkC;QAC1C,CAAC,CAAC,EAAE,CAAC;IACT,MAAM,OAAO,GAAG,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5E,MAAM,cAAc,GAClB,OAAO,IAAI,CAAC,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5E,MAAM,SAAS,GACb,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IAElE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE,CAAC;IAC/D,CAAC;IAED,yEAAyE;IACzE,4EAA4E;IAC5E,wEAAwE;IACxE,0EAA0E;IAC1E,8BAA8B;IAC9B,EAAE;IACF,0EAA0E;IAC1E,2EAA2E;IAC3E,yEAAyE;IACzE,qBAAqB;IACrB,EAAE;IACF,yEAAyE;IACzE,uEAAuE;IACvE,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACpC,MAAM,WAAW,GAAG,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACzE,MAAM,cAAc,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAEhD,MAAM,IAAI,GAAG,CACX,QAAgB,EAChB,MAAc,EACd,MASC,EACD,EAAE,CACF,IAAI,CAAC,UAAU,EAAE,CAAC,mBAAmB,EAAE;QACrC,QAAQ;QACR,SAAS;QACT,QAAQ;QACR,MAAM;QACN,cAAc;QACd,SAAS;QACT,IAAI;QACJ,kEAAkE;QAClE,kEAAkE;QAClE,gEAAgE;QAChE,kEAAkE;QAClE,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,GAAG,CAAC,cAAc,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;QAC/D,GAAG,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC;QAC9C,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,CAAC;QACzC,GAAG,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;QAChD,GAAG,CAAC,MAAM,EAAE,WAAW,KAAK,SAAS,IAAI;YACvC,WAAW,EAAE,MAAM,CAAC,WAAW;SAChC,CAAC;KACH,CAAC,CAAC;IAEL,8BAA8B;IAC9B,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,iBAAiB,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE;QACjE,WAAW,EAAE,IAAI,CAAC,mBAAmB;KACtC,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAC3D,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QACxB,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAC7B,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,CAAC;IAC7E,CAAC;IACD,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QAC/B,OAAO;YACL,MAAM,EAAE,GAAG;YACX,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE;SACrD,CAAC;IACJ,CAAC;IAED,0EAA0E;IAC1E,uEAAuE;IACvE,uEAAuE;IACvE,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAC7B,OAAO;YACL,MAAM,EAAE,GAAG;YACX,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE;SACnD,CAAC;IACJ,CAAC;IAED,gEAAgE;IAChE,wDAAwD;IACxD,0EAA0E;IAC1E,iEAAiE;IACjE,IAAI,cAAc,KAAK,MAAM,EAAE,CAAC;QAC9B,IAAI,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;YAChC,OAAO;gBACL,MAAM,EAAE,GAAG;gBACX,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE;aACtD,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;QAChC,OAAO;YACL,MAAM,EAAE,GAAG;YACX,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE;SACtD,CAAC;IACJ,CAAC;IAED,sEAAsE;IACtE,uEAAuE;IACvE,mEAAmE;IAEnE,oFAAoF;IACpF,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC;IACxC,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAC1B,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC;IAC1E,CAAC;IACD,wEAAwE;IACxE,sEAAsE;IACtE,2EAA2E;IAC3E,oEAAoE;IACpE,8EAA8E;IAC9E,MAAM,eAAe,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC;IACvE,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC3D,IAAI,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC;QACtC,OAAO;YACL,MAAM,EAAE,GAAG;YACX,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,sBAAsB,EAAE;SAC5D,CAAC;IACJ,CAAC;IAED,sEAAsE;IACtE,iEAAiE;IACjE,yDAAyD;IACzD,EAAE;IACF,iEAAiE;IACjE,4DAA4D;IAC5D,yDAAyD;IACzD,+DAA+D;IAC/D,qEAAqE;IACrE,oEAAoE;IACpE,mEAAmE;IACnE,mEAAmE;IACnE,0CAA0C;IAC1C,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW;QACtC,CAAC,CAAC,sBAAsB,CAAC;YACrB,QAAQ;YACR,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,IAAI;YACjB,gBAAgB,EAAE,IAAI,CAAC,SAAS;YAChC,aAAa,EAAE,MAAM;YACrB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;SACpD,CAAC;QACJ,CAAC,CAAC,SAAS,CAAC;IAEd,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,2BAA2B,CAAC,IAAI,EAAE;QAC5D,QAAQ;QACR,MAAM;QACN,IAAI;QACJ,WAAW;QACX,OAAO;QACP,SAAS;QACT,eAAe;KAChB,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC;IAC9B,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,uBAAuB,EAAE,CAAC;IAC5B,CAAC;IACD,IAAI,CAAC,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE;QACvD,MAAM;QACN,WAAW,EAAE,GAAG;KACjB,CAAC,CAAC;IAEH,wEAAwE;IACxE,wEAAwE;IACxE,wEAAwE;IACxE,sEAAsE;IACtE,qEAAqE;IACrE,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,kBAAkB,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACvE,wBAAwB,CAAC,IAAI,CAAC,UAAU,IAAI,iBAAiB,EAAE;YAC7D,KAAK,EAAE,IAAI,CAAC,SAAS;YACrB,QAAQ;YACR,OAAO;SACR,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACrB,CAAC;IACD,OAAO;QACL,MAAM,EAAE,GAAG;QACX,IAAI,EAAE;YACJ,QAAQ,EAAE,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;YACnD,MAAM,EAAE,OAAO;YACf,MAAM;SACP;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"approvalHttp.js","sourceRoot":"","sources":["../src/approvalHttp.ts"],"names":[],"mappings":"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"}
@@ -6,10 +6,12 @@
6
6
  * (a hosted push service or the dashboard's `/api/relay/halt` route)
7
7
  * fans it out to every subscribed browser via Web Push.
8
8
  *
9
- * SSRF guard mirrors the approval dispatcher: HTTPS-only, hostname
10
- * blocklist (localhost / loopback / private IPs after DNS resolve),
11
- * 5s abort timeout, fire-and-forget so the recipe runner is never
12
- * blocked on a push relay outage.
9
+ * Outbound safety is `pinnedSend`, shared with every approval-notification
10
+ * sender: HTTPS-only (checked here), every resolved address checked against
11
+ * the private ranges, the checked address pinned for the connection so DNS
12
+ * is never re-resolved, no redirects followed. 5s abort timeout,
13
+ * fire-and-forget so the recipe runner is never blocked on a push relay
14
+ * outage.
13
15
  *
14
16
  * Wired via `wireHaltPushDispatch` (subscribes to ActivityLog) — keeps
15
17
  * the runner itself ignorant of push transport.
@@ -6,26 +6,17 @@
6
6
  * (a hosted push service or the dashboard's `/api/relay/halt` route)
7
7
  * fans it out to every subscribed browser via Web Push.
8
8
  *
9
- * SSRF guard mirrors the approval dispatcher: HTTPS-only, hostname
10
- * blocklist (localhost / loopback / private IPs after DNS resolve),
11
- * 5s abort timeout, fire-and-forget so the recipe runner is never
12
- * blocked on a push relay outage.
9
+ * Outbound safety is `pinnedSend`, shared with every approval-notification
10
+ * sender: HTTPS-only (checked here), every resolved address checked against
11
+ * the private ranges, the checked address pinned for the connection so DNS
12
+ * is never re-resolved, no redirects followed. 5s abort timeout,
13
+ * fire-and-forget so the recipe runner is never blocked on a push relay
14
+ * outage.
13
15
  *
14
16
  * Wired via `wireHaltPushDispatch` (subscribes to ActivityLog) — keeps
15
17
  * the runner itself ignorant of push transport.
16
18
  */
17
- import dns from "node:dns/promises";
18
- import { isPrivateHost } from "./ssrfGuard.js";
19
- /**
20
- * SSRF blocklist — delegates to the shared, tested `isPrivateHost`
21
- * (audit 2026-06-03 HIGH #5). Previously an inline copy that, like the
22
- * approvalHttp version, missed IPv4-mapped IPv6 (`::ffff:127.0.0.1`) and
23
- * every native IPv6 private range because it split on "." and Number()-
24
- * coerced the octets.
25
- */
26
- function isBlockedIp(ip) {
27
- return isPrivateHost(ip);
28
- }
19
+ import { pinnedSend } from "./pinnedSend.js";
29
20
  /**
30
21
  * Fire-and-forget dispatch. Never throws — caller cannot recover from a
31
22
  * push relay outage. Logged via console.warn for ops visibility.
@@ -47,23 +38,13 @@ export async function dispatchHaltPushNotification(pushServiceUrl, pushServiceTo
47
38
  console.warn(`[halt-push] Blocked loopback push service hostname`);
48
39
  return;
49
40
  }
50
- if (!allowPrivate) {
51
- try {
52
- const resolved = await dns.lookup(hostname);
53
- if (isBlockedIp(resolved.address)) {
54
- console.warn(`[halt-push] Blocked private/loopback IP for push service: ${resolved.address}`);
55
- return;
56
- }
57
- }
58
- catch (err) {
59
- console.warn(`[halt-push] DNS resolution failed for ${hostname}: ${err instanceof Error ? err.message : String(err)}`);
60
- return;
61
- }
62
- }
63
41
  const controller = new AbortController();
64
42
  const timer = setTimeout(() => controller.abort(), 5_000);
65
43
  try {
66
- const res = await fetch(`${pushServiceUrl}/halt`, {
44
+ // DNS check + connection pin + no redirects, in one place shared with
45
+ // every approval-notification sender (security sweep L3). Returns null
46
+ // when refused before connecting — already warned as [halt-push].
47
+ const res = await pinnedSend(`${pushServiceUrl}/halt`, {
67
48
  method: "POST",
68
49
  headers: {
69
50
  "Content-Type": "application/json",
@@ -71,7 +52,9 @@ export async function dispatchHaltPushNotification(pushServiceUrl, pushServiceTo
71
52
  },
72
53
  body: JSON.stringify(payload),
73
54
  signal: controller.signal,
74
- });
55
+ }, { label: "halt-push", allowPrivate });
56
+ if (res === null)
57
+ return;
75
58
  if (!res.ok) {
76
59
  // 404 is informational ("no subscribers yet") — same relay
77
60
  // contract as the approval path. Anything else is worth a warn.
@@ -1 +1 @@
1
- {"version":3,"file":"haltPushDispatch.js","sourceRoot":"","sources":["../src/haltPushDispatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,GAAG,MAAM,mBAAmB,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C;;;;;;GAMG;AACH,SAAS,WAAW,CAAC,EAAU;IAC7B,OAAO,aAAa,CAAC,EAAE,CAAC,CAAC;AAC3B,CAAC;AAmBD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,cAAsB,EACtB,gBAAwB,EACxB,OAAwB,EACxB,eAAwB,KAAK;IAE7B,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;QAChE,OAAO;IACT,CAAC;IACD,IAAI,QAAgB,CAAC;IACrB,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;QAClE,OAAO;IACT,CAAC;IACD,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;QACnE,OAAO;IACT,CAAC;IACD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC5C,IAAI,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAClC,OAAO,CAAC,IAAI,CACV,6DAA6D,QAAQ,CAAC,OAAO,EAAE,CAChF,CAAC;gBACF,OAAO;YACT,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CACV,yCAAyC,QAAQ,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACzG,CAAC;YACF,OAAO;QACT,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC;IAC1D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,cAAc,OAAO,EAAE;YAChD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,gBAAgB,EAAE;aAC5C;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAC7B,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,2DAA2D;YAC3D,gEAAgE;YAChE,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACvB,OAAO,CAAC,IAAI,CACV,wCAAwC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CACvE,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CACV,gCAAgC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACnF,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"haltPushDispatch.js","sourceRoot":"","sources":["../src/haltPushDispatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAmB7C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,cAAsB,EACtB,gBAAwB,EACxB,OAAwB,EACxB,eAAwB,KAAK;IAE7B,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;QAChE,OAAO;IACT,CAAC;IACD,IAAI,QAAgB,CAAC;IACrB,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;QAClE,OAAO;IACT,CAAC;IACD,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;QACnE,OAAO;IACT,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC;IAC1D,IAAI,CAAC;QACH,sEAAsE;QACtE,uEAAuE;QACvE,kEAAkE;QAClE,MAAM,GAAG,GAAG,MAAM,UAAU,CAC1B,GAAG,cAAc,OAAO,EACxB;YACE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,gBAAgB,EAAE;aAC5C;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAC7B,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,EACD,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,CACrC,CAAC;QACF,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO;QACzB,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,2DAA2D;YAC3D,gEAAgE;YAChE,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACvB,OAAO,CAAC,IAAI,CACV,wCAAwC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CACvE,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CACV,gCAAgC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACnF,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * The one outbound path for the bridge's notification senders — approval
3
+ * webhook, push send, push dismiss, halt push and both ntfy calls.
4
+ *
5
+ * Security sweep 2026-10-01, L3. Each sender used to resolve DNS, check the
6
+ * answer, and then call bare `fetch`, which resolved the name AGAIN: a
7
+ * DNS-rebinding window between the check and the connection. They also let
8
+ * `fetch` follow redirects with no re-validation. They were the last outbound
9
+ * sinks not on `safeFetch`.
10
+ *
11
+ * Two deliberate differences from `safeFetch`'s defaults, both inherited from
12
+ * the senders' own check and both STRICTER:
13
+ * - ALL addresses are resolved and the send is refused if ANY is private
14
+ * (safeFetch resolves one), and
15
+ * - a DNS failure refuses the send (safeFetch proceeds unpinned and lets the
16
+ * transport report it).
17
+ * The address this check accepted then becomes the pin, via a fixed resolver,
18
+ * so nothing resolves the name a second time.
19
+ *
20
+ * Redirects are NOT followed. A push relay, approval webhook or ntfy server
21
+ * has no reason to redirect a POST, and following one is a way to be steered
22
+ * after the check. A 3xx comes back to the caller as a non-2xx response.
23
+ *
24
+ * Returns `null` when the send was refused before any connection was made
25
+ * (already warned with `[label]`). Transport errors propagate, so each
26
+ * caller's existing catch-and-warn keeps working unchanged.
27
+ */
28
+ export interface PinnedSendInit {
29
+ method?: string;
30
+ headers?: Record<string, string>;
31
+ body?: string;
32
+ signal?: AbortSignal;
33
+ }
34
+ export interface PinnedSendOptions {
35
+ /** Log prefix, e.g. "push" → `[push] …`. */
36
+ label: string;
37
+ /** Operator opt-in to private targets; the address is still pinned. */
38
+ allowPrivate?: boolean;
39
+ }
40
+ export declare function pinnedSend(url: string, init: PinnedSendInit, opts: PinnedSendOptions): Promise<Response | null>;
@@ -0,0 +1,97 @@
1
+ /**
2
+ * The one outbound path for the bridge's notification senders — approval
3
+ * webhook, push send, push dismiss, halt push and both ntfy calls.
4
+ *
5
+ * Security sweep 2026-10-01, L3. Each sender used to resolve DNS, check the
6
+ * answer, and then call bare `fetch`, which resolved the name AGAIN: a
7
+ * DNS-rebinding window between the check and the connection. They also let
8
+ * `fetch` follow redirects with no re-validation. They were the last outbound
9
+ * sinks not on `safeFetch`.
10
+ *
11
+ * Two deliberate differences from `safeFetch`'s defaults, both inherited from
12
+ * the senders' own check and both STRICTER:
13
+ * - ALL addresses are resolved and the send is refused if ANY is private
14
+ * (safeFetch resolves one), and
15
+ * - a DNS failure refuses the send (safeFetch proceeds unpinned and lets the
16
+ * transport report it).
17
+ * The address this check accepted then becomes the pin, via a fixed resolver,
18
+ * so nothing resolves the name a second time.
19
+ *
20
+ * Redirects are NOT followed. A push relay, approval webhook or ntfy server
21
+ * has no reason to redirect a POST, and following one is a way to be steered
22
+ * after the check. A 3xx comes back to the caller as a non-2xx response.
23
+ *
24
+ * Returns `null` when the send was refused before any connection was made
25
+ * (already warned with `[label]`). Transport errors propagate, so each
26
+ * caller's existing catch-and-warn keeps working unchanged.
27
+ */
28
+ import * as dnsNs from "node:dns/promises";
29
+ import { isPrivateHost } from "./privateHost.js";
30
+ import { safeFetch } from "./ssrfGuard.js";
31
+ /**
32
+ * The module's default object when it has a usable `lookup`, else the
33
+ * namespace. The read is guarded because vitest's module-mock proxy THROWS on
34
+ * access to an export the mock factory did not define — an unguarded
35
+ * `.default` read escaped the DNS try/catch and every send failed.
36
+ */
37
+ function dnsApi() {
38
+ try {
39
+ const d = dnsNs.default;
40
+ if (d && typeof d.lookup === "function")
41
+ return d;
42
+ }
43
+ catch {
44
+ // mocked module without a default export
45
+ }
46
+ return dnsNs;
47
+ }
48
+ export async function pinnedSend(url, init, opts) {
49
+ let hostname;
50
+ try {
51
+ hostname = new URL(url).hostname;
52
+ }
53
+ catch {
54
+ console.warn(`[${opts.label}] Malformed URL — skipping`);
55
+ return null;
56
+ }
57
+ // Resolved at call time through the module's default object when it has
58
+ // one, else the namespace. In production both are the same `lookup`. The
59
+ // distinction is for tests: some suites `vi.spyOn(dns, "lookup")` on the
60
+ // DEFAULT object (which a namespace binding would not see), others
61
+ // `vi.mock("node:dns/promises", () => ({ lookup }))` with NO default (which
62
+ // a default import would see as undefined — and then every send would be
63
+ // refused, fail-closed, looking exactly like a DNS outage).
64
+ const dns = dnsApi();
65
+ let addresses;
66
+ try {
67
+ const r = await dns.lookup(hostname, { all: true });
68
+ // `{ all: true }` always yields an array; coerce defensively so a mock
69
+ // that returns one LookupAddress cannot make this throw and fail open.
70
+ addresses = Array.isArray(r) ? r : [r];
71
+ }
72
+ catch (err) {
73
+ console.warn(`[${opts.label}] DNS resolution failed for ${hostname}: ${err instanceof Error ? err.message : String(err)}`);
74
+ return null;
75
+ }
76
+ const first = addresses[0]?.address;
77
+ if (first === undefined) {
78
+ console.warn(`[${opts.label}] DNS returned no address for ${hostname}`);
79
+ return null;
80
+ }
81
+ if (!opts.allowPrivate) {
82
+ const blocked = addresses.find((a) => isPrivateHost(a.address));
83
+ if (blocked) {
84
+ console.warn(`[${opts.label}] Blocked private/loopback IP: ${blocked.address}`);
85
+ return null;
86
+ }
87
+ }
88
+ const { response } = await safeFetch(url, { ...init }, {
89
+ allowPrivate: opts.allowPrivate,
90
+ // The address checked above IS the pin: no second resolution, so no
91
+ // rebinding window between check and connect.
92
+ resolveDns: async () => first,
93
+ followRedirects: false,
94
+ });
95
+ return response;
96
+ }
97
+ //# sourceMappingURL=pinnedSend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pinnedSend.js","sourceRoot":"","sources":["../src/pinnedSend.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Lexical private-range checks for hostnames and IP literals — pure string
3
+ * work, no DNS and no network.
4
+ *
5
+ * Split out of `ssrfGuard.ts` (2026-10-02) so code that only needs the range
6
+ * decision does not inherit ssrfGuard's I/O dependencies. The trigger: the
7
+ * dashboard's push-endpoint validator imports `isPrivateHost`, and once
8
+ * ssrfGuard imported `undici` (to pin connections) the dashboard package —
9
+ * which does not depend on undici — failed to typecheck. `ssrfGuard.ts`
10
+ * re-exports everything here, so every existing importer is unchanged.
11
+ */
12
+ /**
13
+ * Block requests to private/loopback addresses. Lexical-only check.
14
+ *
15
+ * Mirrors the predicate previously inlined in `tools/httpClient.ts`. Updates
16
+ * here MUST stay in sync with the test fixtures in
17
+ * `src/tools/__tests__/httpClient.test.ts`.
18
+ */
19
+ export declare function isPrivateHost(hostname: string): boolean;
20
+ /**
21
+ * Loopback-only check (127.0.0.0/8, ::1, localhost). Lexical-only.
22
+ *
23
+ * Used by `isPrivateNonLoopbackHost` and by automation webhook fan-out, which
24
+ * intentionally ALLOWS loopback (sidecars) but blocks every other private
25
+ * range (RFC 1918, link-local, ULA, IMDS, 6to4-wrapped private, etc.).
26
+ */
27
+ export declare function isLoopbackHost(hostname: string): boolean;
28
+ /**
29
+ * Private host MINUS loopback. Lexical-only.
30
+ *
31
+ * Use when a sink intentionally allows loopback (e.g. webhook fan-out to local
32
+ * sidecars) but must still block RFC 1918, link-local, IMDS, ULA, 6to4-wrapped
33
+ * private, and IPv4-mapped/translated private addresses.
34
+ */
35
+ export declare function isPrivateNonLoopbackHost(hostname: string): boolean;