@enricai/barnacle 1.12.78 → 1.12.80

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 (168) hide show
  1. package/dist/api/helpers/reply.d.ts.map +1 -1
  2. package/dist/api/helpers/reply.js +5 -2
  3. package/dist/api/helpers/reply.js.map +1 -1
  4. package/dist/config.d.ts +10 -0
  5. package/dist/config.d.ts.map +1 -1
  6. package/dist/config.js +2 -0
  7. package/dist/config.js.map +1 -1
  8. package/dist/lib/llm/judge.d.ts.map +1 -1
  9. package/dist/lib/llm/judge.js +6 -1
  10. package/dist/lib/llm/judge.js.map +1 -1
  11. package/dist/lib/llm/judges/verify-step-advanced.d.ts +30 -0
  12. package/dist/lib/llm/judges/verify-step-advanced.d.ts.map +1 -0
  13. package/dist/lib/llm/judges/verify-step-advanced.js +62 -0
  14. package/dist/lib/llm/judges/verify-step-advanced.js.map +1 -0
  15. package/dist/lib/llm/judges/verify-submit.d.ts +7 -1
  16. package/dist/lib/llm/judges/verify-submit.d.ts.map +1 -1
  17. package/dist/lib/llm/judges/verify-submit.js +29 -8
  18. package/dist/lib/llm/judges/verify-submit.js.map +1 -1
  19. package/dist/lib/llm/schemas.d.ts +8 -0
  20. package/dist/lib/llm/schemas.d.ts.map +1 -1
  21. package/dist/lib/llm/schemas.js +21 -13
  22. package/dist/lib/llm/schemas.js.map +1 -1
  23. package/dist/lib/logging.d.ts +7 -0
  24. package/dist/lib/logging.d.ts.map +1 -1
  25. package/dist/lib/logging.js +19 -1
  26. package/dist/lib/logging.js.map +1 -1
  27. package/dist/lib/pii-redaction.d.ts +104 -0
  28. package/dist/lib/pii-redaction.d.ts.map +1 -0
  29. package/dist/lib/pii-redaction.js +397 -0
  30. package/dist/lib/pii-redaction.js.map +1 -0
  31. package/dist/lib/random.d.ts +3 -1
  32. package/dist/lib/random.d.ts.map +1 -1
  33. package/dist/lib/random.js +7 -2
  34. package/dist/lib/random.js.map +1 -1
  35. package/dist/lib/telemetry/beacon-capture.d.ts.map +1 -1
  36. package/dist/lib/telemetry/beacon-capture.js +2 -0
  37. package/dist/lib/telemetry/beacon-capture.js.map +1 -1
  38. package/dist/lib/telemetry/call-capture.d.ts.map +1 -1
  39. package/dist/lib/telemetry/call-capture.js +4 -1
  40. package/dist/lib/telemetry/call-capture.js.map +1 -1
  41. package/dist/lib/telemetry/submission-capture.d.ts +11 -1
  42. package/dist/lib/telemetry/submission-capture.d.ts.map +1 -1
  43. package/dist/lib/telemetry/submission-capture.js +32 -3
  44. package/dist/lib/telemetry/submission-capture.js.map +1 -1
  45. package/dist/plugins/config-plugin.d.ts +8 -0
  46. package/dist/plugins/config-plugin.d.ts.map +1 -1
  47. package/dist/plugins/config-plugin.js +6 -1
  48. package/dist/plugins/config-plugin.js.map +1 -1
  49. package/dist/plugins/discover.d.ts.map +1 -1
  50. package/dist/plugins/discover.js +2 -0
  51. package/dist/plugins/discover.js.map +1 -1
  52. package/dist/plugins/loader.d.ts.map +1 -1
  53. package/dist/plugins/loader.js +23 -6
  54. package/dist/plugins/loader.js.map +1 -1
  55. package/dist/scraper/actionable-visibility-expr.d.ts +12 -0
  56. package/dist/scraper/actionable-visibility-expr.d.ts.map +1 -0
  57. package/dist/scraper/actionable-visibility-expr.js +22 -0
  58. package/dist/scraper/actionable-visibility-expr.js.map +1 -0
  59. package/dist/scraper/active-page.d.ts +18 -0
  60. package/dist/scraper/active-page.d.ts.map +1 -0
  61. package/dist/scraper/active-page.js +53 -0
  62. package/dist/scraper/active-page.js.map +1 -0
  63. package/dist/scraper/browser-click-expr.d.ts +1 -1
  64. package/dist/scraper/browser-click-expr.d.ts.map +1 -1
  65. package/dist/scraper/browser-click-expr.js +2 -6
  66. package/dist/scraper/browser-click-expr.js.map +1 -1
  67. package/dist/scraper/click-settle.d.ts +19 -0
  68. package/dist/scraper/click-settle.d.ts.map +1 -0
  69. package/dist/scraper/click-settle.js +65 -0
  70. package/dist/scraper/click-settle.js.map +1 -0
  71. package/dist/scraper/deep-locator-candidates.d.ts +20 -1
  72. package/dist/scraper/deep-locator-candidates.d.ts.map +1 -1
  73. package/dist/scraper/deep-locator-candidates.js +110 -22
  74. package/dist/scraper/deep-locator-candidates.js.map +1 -1
  75. package/dist/scraper/deep-locator-scan.d.ts +12 -0
  76. package/dist/scraper/deep-locator-scan.d.ts.map +1 -1
  77. package/dist/scraper/deep-locator-scan.js +42 -13
  78. package/dist/scraper/deep-locator-scan.js.map +1 -1
  79. package/dist/scraper/errors.d.ts +10 -0
  80. package/dist/scraper/errors.d.ts.map +1 -1
  81. package/dist/scraper/errors.js +19 -1
  82. package/dist/scraper/errors.js.map +1 -1
  83. package/dist/scraper/flow-runner.d.ts +355 -6
  84. package/dist/scraper/flow-runner.d.ts.map +1 -1
  85. package/dist/scraper/flow-runner.js +2255 -350
  86. package/dist/scraper/flow-runner.js.map +1 -1
  87. package/dist/scraper/navigate.d.ts +3 -3
  88. package/dist/scraper/navigate.js +4 -4
  89. package/dist/scraper/navigate.js.map +1 -1
  90. package/dist/scraper/phantom-click.d.ts +34 -2
  91. package/dist/scraper/phantom-click.d.ts.map +1 -1
  92. package/dist/scraper/phantom-click.js +80 -6
  93. package/dist/scraper/phantom-click.js.map +1 -1
  94. package/dist/scraper/pool.d.ts.map +1 -1
  95. package/dist/scraper/pool.js +8 -1
  96. package/dist/scraper/pool.js.map +1 -1
  97. package/dist/scraper/quoted-spans.d.ts +35 -0
  98. package/dist/scraper/quoted-spans.d.ts.map +1 -0
  99. package/dist/scraper/quoted-spans.js +83 -0
  100. package/dist/scraper/quoted-spans.js.map +1 -0
  101. package/dist/scraper/retry.d.ts +1 -1
  102. package/dist/scraper/retry.d.ts.map +1 -1
  103. package/dist/scraper/retry.js +5 -1
  104. package/dist/scraper/retry.js.map +1 -1
  105. package/dist/scraper/session-browserbase.d.ts +4 -2
  106. package/dist/scraper/session-browserbase.d.ts.map +1 -1
  107. package/dist/scraper/session-browserbase.js +63 -20
  108. package/dist/scraper/session-browserbase.js.map +1 -1
  109. package/dist/scraper/session-shared.d.ts +5 -0
  110. package/dist/scraper/session-shared.d.ts.map +1 -1
  111. package/dist/scraper/session-shared.js.map +1 -1
  112. package/dist/scraper/session-steel.d.ts.map +1 -1
  113. package/dist/scraper/session-steel.js +16 -2
  114. package/dist/scraper/session-steel.js.map +1 -1
  115. package/dist/scraper/session-teardown.d.ts +31 -1
  116. package/dist/scraper/session-teardown.d.ts.map +1 -1
  117. package/dist/scraper/session-teardown.js +60 -4
  118. package/dist/scraper/session-teardown.js.map +1 -1
  119. package/dist/scraper/spa-readiness.d.ts +13 -1
  120. package/dist/scraper/spa-readiness.d.ts.map +1 -1
  121. package/dist/scraper/spa-readiness.js +31 -1
  122. package/dist/scraper/spa-readiness.js.map +1 -1
  123. package/dist/scraper/stagehand-guard.d.ts +8 -3
  124. package/dist/scraper/stagehand-guard.d.ts.map +1 -1
  125. package/dist/scraper/stagehand-guard.js +181 -13
  126. package/dist/scraper/stagehand-guard.js.map +1 -1
  127. package/dist/scraper/submit-control.d.ts +2 -2
  128. package/dist/scraper/submit-control.d.ts.map +1 -1
  129. package/dist/scraper/submit-control.js +5 -21
  130. package/dist/scraper/submit-control.js.map +1 -1
  131. package/dist/scraper/target-resolution-diagnostic.d.ts.map +1 -1
  132. package/dist/scraper/target-resolution-diagnostic.js +6 -11
  133. package/dist/scraper/target-resolution-diagnostic.js.map +1 -1
  134. package/dist/scraper/transient-provider-error.d.ts +19 -0
  135. package/dist/scraper/transient-provider-error.d.ts.map +1 -0
  136. package/dist/scraper/transient-provider-error.js +59 -0
  137. package/dist/scraper/transient-provider-error.js.map +1 -0
  138. package/dist/scraper/trusted-click.d.ts +122 -0
  139. package/dist/scraper/trusted-click.d.ts.map +1 -0
  140. package/dist/scraper/trusted-click.js +201 -0
  141. package/dist/scraper/trusted-click.js.map +1 -0
  142. package/dist/scraper/upload-affordance-expr.d.ts +33 -0
  143. package/dist/scraper/upload-affordance-expr.d.ts.map +1 -0
  144. package/dist/scraper/upload-affordance-expr.js +91 -0
  145. package/dist/scraper/upload-affordance-expr.js.map +1 -0
  146. package/dist/scripts/recon-browser.d.ts +30 -2
  147. package/dist/scripts/recon-browser.d.ts.map +1 -1
  148. package/dist/scripts/recon-browser.js +133 -27
  149. package/dist/scripts/recon-browser.js.map +1 -1
  150. package/dist/scripts/recon-capture-rebind.d.ts +11 -0
  151. package/dist/scripts/recon-capture-rebind.d.ts.map +1 -0
  152. package/dist/scripts/recon-capture-rebind.js +26 -0
  153. package/dist/scripts/recon-capture-rebind.js.map +1 -0
  154. package/dist/scripts/recon-generate.d.ts +159 -8
  155. package/dist/scripts/recon-generate.d.ts.map +1 -1
  156. package/dist/scripts/recon-generate.js +998 -182
  157. package/dist/scripts/recon-generate.js.map +1 -1
  158. package/dist/scripts/recon-shared.d.ts +7 -0
  159. package/dist/scripts/recon-shared.d.ts.map +1 -1
  160. package/dist/scripts/recon-shared.js +19 -0
  161. package/dist/scripts/recon-shared.js.map +1 -1
  162. package/dist/site-plugin.d.ts +8 -0
  163. package/dist/site-plugin.d.ts.map +1 -1
  164. package/dist/types/pii-redaction.d.ts +39 -0
  165. package/dist/types/pii-redaction.d.ts.map +1 -0
  166. package/dist/types/pii-redaction.js +3 -0
  167. package/dist/types/pii-redaction.js.map +1 -0
  168. package/package.json +14 -1
@@ -3,6 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.PII_REDACTING_LOG_HOOKS = void 0;
6
7
  exports.splitLargeMessage = splitLargeMessage;
7
8
  exports.extendLogger = extendLogger;
8
9
  exports.getScriptLogger = getScriptLogger;
@@ -11,6 +12,7 @@ const date_fns_1 = require("date-fns");
11
12
  const pino_1 = __importDefault(require("pino"));
12
13
  const datadog_1 = require("./datadog");
13
14
  const env_1 = require("./env");
15
+ const pii_redaction_1 = require("./pii-redaction");
14
16
  const nodeEnv = (0, env_1.getNodeEnv)();
15
17
  const isDevelopment = nodeEnv === "development";
16
18
  const isTest = nodeEnv === "test";
@@ -60,6 +62,17 @@ const formatters = {
60
62
  return { level: label };
61
63
  },
62
64
  };
65
+ /**
66
+ * Scrubs registered request values from every argument before pino formats
67
+ * the line. `redact` only matches object keys; log messages are interpolated
68
+ * strings, so values have to be matched by content. Child loggers (e.g.
69
+ * Fastify's `request.log`) inherit pino hooks. Exported for direct testing.
70
+ */
71
+ exports.PII_REDACTING_LOG_HOOKS = {
72
+ logMethod(args, method) {
73
+ method.apply(this, args.map((arg) => (0, pii_redaction_1.redactPiiDeep)(arg)));
74
+ },
75
+ };
63
76
  /**
64
77
  * Splits a message that exceeds CloudWatch's 256KB per-event cap. Prefers
65
78
  * newline / space boundaries so chunks stay readable; falls back to a
@@ -117,7 +130,10 @@ function getChunkPrefix(index, totalChunks) {
117
130
  }
118
131
  function logWithSplitting(originalLogFn, obj, ...args) {
119
132
  if (typeof obj === "string") {
120
- const chunks = splitLargeMessage(obj);
133
+ // The redaction hook sees one chunk at a time, so a value cut in half by
134
+ // the split would match in neither; scrub the whole message first.
135
+ const whole = splitLargeMessage(obj);
136
+ const chunks = whole.length > 1 ? splitLargeMessage((0, pii_redaction_1.redactPii)(obj)) : whole;
121
137
  chunks.forEach((chunk, index) => {
122
138
  const prefix = getChunkPrefix(index, chunks.length);
123
139
  originalLogFn(`${prefix}${chunk}`, ...args);
@@ -174,6 +190,7 @@ function getScriptLogger(name) {
174
190
  return extendLogger((0, pino_1.default)({
175
191
  name: getLogName(name, defaultAppName),
176
192
  level: process.env.LOG_LEVEL ?? "info",
193
+ hooks: exports.PII_REDACTING_LOG_HOOKS,
177
194
  transport,
178
195
  }));
179
196
  }
@@ -200,6 +217,7 @@ function getLogger({ name, level }) {
200
217
  },
201
218
  timestamp: getTimestamp,
202
219
  formatters,
220
+ hooks: exports.PII_REDACTING_LOG_HOOKS,
203
221
  mixin: ddEnabled ? ddMixin : undefined,
204
222
  redact: {
205
223
  paths: redactPaths,
@@ -1 +1 @@
1
- {"version":3,"file":"logging.js","sourceRoot":"","sources":["../../src/lib/logging.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logging.js","sourceRoot":"","sources":["../../src/lib/logging.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Value-aware redaction of request data from every string barnacle writes out
3
+ * (logs, telemetry NDJSON/S3, error envelopes).
4
+ *
5
+ * Flow instructions, log lines and error messages carry request values as free
6
+ * text ("Fill in the Email field with 'x@y.com'"), so key-based redaction (pino
7
+ * `redact`) never sees them. Instead, each dispatch registers its request
8
+ * body's values here and every sink scrubs occurrences of them. How each field
9
+ * is matched comes from the plugin's {@link RedactionPolicy}; the engine itself
10
+ * knows no field names.
11
+ *
12
+ * The registry is process-global rather than request-scoped: pooled browser
13
+ * sessions and Stagehand callbacks log outside the request's async context,
14
+ * and scrubbing one run's values from another concurrent run's output is a
15
+ * harmless over-redaction.
16
+ */
17
+ import { z } from "zod/v4";
18
+ import type { RedactionPolicy, SensitiveVariables, TokenizedText } from "../types/pii-redaction";
19
+ /**
20
+ * Runtime mirror of {@link RedactionPolicy} for plugins the type system cannot
21
+ * check (plain-JS modules, JSON manifests). Strict, because a mistyped field
22
+ * would silently leave values unprotected, and a string where an array belongs
23
+ * would be substring-matched by `includes`.
24
+ */
25
+ export declare const REDACTION_POLICY_SCHEMA: z.ZodObject<{
26
+ persistKeys: z.ZodOptional<z.ZodArray<z.ZodString>>;
27
+ publicKeys: z.ZodOptional<z.ZodArray<z.ZodString>>;
28
+ skipKeys: z.ZodOptional<z.ZodArray<z.ZodString>>;
29
+ wordKeys: z.ZodOptional<z.ZodArray<z.ZodString>>;
30
+ digitKeys: z.ZodOptional<z.ZodArray<z.ZodString>>;
31
+ tokenizeKeys: z.ZodOptional<z.ZodArray<z.ZodString>>;
32
+ }, z.core.$strict>;
33
+ /**
34
+ * Records a plugin's redaction policy so sinks that only see a `siteId`
35
+ * (submission telemetry) can apply it. Called once per plugin at route
36
+ * registration.
37
+ */
38
+ export declare function registerRedactionPolicy(siteId: string, policy: RedactionPolicy | undefined): void;
39
+ /** The policy a plugin declared, or `undefined` (fail-closed defaults). */
40
+ export declare function redactionPolicyFor(siteId: string): RedactionPolicy | undefined;
41
+ /**
42
+ * Registers a request body so its values are scrubbed from all output until
43
+ * {@link releaseSensitiveValues} plus a grace period. The body is the one
44
+ * place the engine sees the caller's data; the plugin's policy says how each
45
+ * field should be matched, and unlisted fields are matched as literals.
46
+ */
47
+ export declare function registerSensitiveValues(runId: string, payload: unknown, policy?: RedactionPolicy): void;
48
+ /**
49
+ * Schedules a run's values for removal. The grace period keeps late output
50
+ * (teardown logs, deferred telemetry, pooled-session callbacks) scrubbed.
51
+ */
52
+ export declare function releaseSensitiveValues(runId: string, graceMs?: number): void;
53
+ /**
54
+ * Registers a value minted inside the engine (e.g. a throwaway account
55
+ * password) that never appears in the inbound payload but must never be
56
+ * written out either.
57
+ */
58
+ export declare function registerSecretValue(value: string, ttlMs?: number): void;
59
+ /**
60
+ * Replaces only the registered secrets (see {@link registerSecretValue}) in
61
+ * `text` with `<Secret>`. For prompts that must keep the applicant's ordinary
62
+ * values — an LLM judge deciding whether "Ann" landed in First Name needs
63
+ * "Ann" — but must never carry a credential.
64
+ */
65
+ export declare function redactSecrets(text: string): string;
66
+ /**
67
+ * Replaces every registered sensitive value in `text` with `<FieldName>`.
68
+ * Cheap no-op when nothing is registered, so it is safe on every log line.
69
+ */
70
+ export declare function redactPii(text: string): string;
71
+ /**
72
+ * Structural variant of {@link redactPii} for log/telemetry objects. Errors
73
+ * become plain `{ type, message, stack }` objects (the shape pino's err
74
+ * serializer emits) so their messages can be scrubbed too. Other class
75
+ * instances (Fastify's request/reply, Buffers, URLs) are returned untouched:
76
+ * their pino serializers read prototype getters a plain copy would drop.
77
+ */
78
+ export declare function redactPiiDeep(value: unknown, depth?: number): unknown;
79
+ /**
80
+ * Reduces a typed/selected value to its shape (`Aaaa`, `99/99/9999`) for
81
+ * diagnostics: format mismatches stay debuggable (and usable as rephrase
82
+ * evidence) without the value itself — including short answers like "Yes"
83
+ * that are too common to register for redaction.
84
+ */
85
+ export declare function maskValueShape(text: string, maxLength?: number): string;
86
+ /**
87
+ * Swaps registered request values (and engine-minted secrets) in a Stagehand
88
+ * instruction for `%Name%` tokens, returning the `variables` map Stagehand
89
+ * substitutes back only when it performs the action — so the values never
90
+ * reach the LLM prompt, Browserbase's instruction cache or the call telemetry.
91
+ * Each token maps to the exact text it replaced, so the typed value is
92
+ * byte-identical to the untokenized instruction's.
93
+ */
94
+ export declare function tokenizeSensitiveValues(text: string): TokenizedText;
95
+ /** Replaces `%Name%` tokens with their values (names matched case-insensitively — LLMs re-case them). */
96
+ export declare function detokenize(text: string, variables: SensitiveVariables): string;
97
+ /**
98
+ * Tokens left in `text` that `variables` cannot resolve — an LLM-invented
99
+ * `%Name%` would otherwise be typed into the form verbatim.
100
+ */
101
+ export declare function unresolvedTokens(text: string, variables: SensitiveVariables): string[];
102
+ /** Test-only: clears the registry between cases. */
103
+ export declare function resetSensitiveValuesForTests(): void;
104
+ //# sourceMappingURL=pii-redaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pii-redaction.d.ts","sourceRoot":"","sources":["../../src/lib/pii-redaction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AA0ChG;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB;;;;;;;kBASzB,CAAC;AAIZ;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,SAAS,GAAG,IAAI,CAGjG;AAED,2EAA2E;AAC3E,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAE9E;AAmHD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,EAChB,MAAM,CAAC,EAAE,eAAe,GACvB,IAAI,CAUN;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,MAAiC,GACzC,IAAI,CAQN;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAgC,GAAG,IAAI,CAQhG;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAWlD;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQ9C;AAOD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,SAAI,GAAG,OAAO,CAqBhE;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,SAAK,GAAG,MAAM,CAMnE;AAkDD;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAiBnE;AAED,yGAAyG;AACzG,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,kBAAkB,GAAG,MAAM,CAO9E;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,kBAAkB,GAAG,MAAM,EAAE,CAKtF;AAED,oDAAoD;AACpD,wBAAgB,4BAA4B,IAAI,IAAI,CAInD"}
@@ -0,0 +1,397 @@
1
+ "use strict";
2
+ /**
3
+ * Value-aware redaction of request data from every string barnacle writes out
4
+ * (logs, telemetry NDJSON/S3, error envelopes).
5
+ *
6
+ * Flow instructions, log lines and error messages carry request values as free
7
+ * text ("Fill in the Email field with 'x@y.com'"), so key-based redaction (pino
8
+ * `redact`) never sees them. Instead, each dispatch registers its request
9
+ * body's values here and every sink scrubs occurrences of them. How each field
10
+ * is matched comes from the plugin's {@link RedactionPolicy}; the engine itself
11
+ * knows no field names.
12
+ *
13
+ * The registry is process-global rather than request-scoped: pooled browser
14
+ * sessions and Stagehand callbacks log outside the request's async context,
15
+ * and scrubbing one run's values from another concurrent run's output is a
16
+ * harmless over-redaction.
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.REDACTION_POLICY_SCHEMA = void 0;
20
+ exports.registerRedactionPolicy = registerRedactionPolicy;
21
+ exports.redactionPolicyFor = redactionPolicyFor;
22
+ exports.registerSensitiveValues = registerSensitiveValues;
23
+ exports.releaseSensitiveValues = releaseSensitiveValues;
24
+ exports.registerSecretValue = registerSecretValue;
25
+ exports.redactSecrets = redactSecrets;
26
+ exports.redactPii = redactPii;
27
+ exports.redactPiiDeep = redactPiiDeep;
28
+ exports.maskValueShape = maskValueShape;
29
+ exports.tokenizeSensitiveValues = tokenizeSensitiveValues;
30
+ exports.detokenize = detokenize;
31
+ exports.unresolvedTokens = unresolvedTokens;
32
+ exports.resetSensitiveValuesForTests = resetSensitiveValuesForTests;
33
+ const min_1 = require("libphonenumber-js/min");
34
+ const lru_cache_1 = require("lru-cache");
35
+ const v4_1 = require("zod/v4");
36
+ const MIN_WORD_LENGTH = 2;
37
+ const MIN_LITERAL_LENGTH = 4;
38
+ /** Registry key prefix for {@link registerSecretValue} entries. */
39
+ const SECRET_KEY_PREFIX = "secret:";
40
+ const MIN_DIGITS = 4;
41
+ const DEFAULT_RELEASE_GRACE_MS = 10 * 60 * 1000;
42
+ /** Upper bound on any registration — far beyond a run's task timeout, so a run that never releases (crash) still ages out. */
43
+ const MAX_REGISTRATION_TTL_MS = 2 * 60 * 60 * 1000;
44
+ /** Far above concurrent runs + their grace windows + minted secrets; only bounds memory. */
45
+ const MAX_REGISTRY_ENTRIES = 10_000;
46
+ const MAX_DEEP_REDACT_DEPTH = 6;
47
+ let compiled = null;
48
+ const registry = new lru_cache_1.LRUCache({
49
+ max: MAX_REGISTRY_ENTRIES,
50
+ ttlAutopurge: true,
51
+ dispose: () => {
52
+ compiled = null;
53
+ },
54
+ });
55
+ /**
56
+ * Runtime mirror of {@link RedactionPolicy} for plugins the type system cannot
57
+ * check (plain-JS modules, JSON manifests). Strict, because a mistyped field
58
+ * would silently leave values unprotected, and a string where an array belongs
59
+ * would be substring-matched by `includes`.
60
+ */
61
+ exports.REDACTION_POLICY_SCHEMA = v4_1.z
62
+ .object({
63
+ persistKeys: v4_1.z.array(v4_1.z.string()).optional(),
64
+ publicKeys: v4_1.z.array(v4_1.z.string()).optional(),
65
+ skipKeys: v4_1.z.array(v4_1.z.string()).optional(),
66
+ wordKeys: v4_1.z.array(v4_1.z.string()).optional(),
67
+ digitKeys: v4_1.z.array(v4_1.z.string()).optional(),
68
+ tokenizeKeys: v4_1.z.array(v4_1.z.string()).optional(),
69
+ })
70
+ .strict();
71
+ const policies = new Map();
72
+ /**
73
+ * Records a plugin's redaction policy so sinks that only see a `siteId`
74
+ * (submission telemetry) can apply it. Called once per plugin at route
75
+ * registration.
76
+ */
77
+ function registerRedactionPolicy(siteId, policy) {
78
+ if (policy)
79
+ policies.set(siteId, policy);
80
+ else
81
+ policies.delete(siteId);
82
+ }
83
+ /** The policy a plugin declared, or `undefined` (fail-closed defaults). */
84
+ function redactionPolicyFor(siteId) {
85
+ return policies.get(siteId);
86
+ }
87
+ function escapeRegExp(value) {
88
+ return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
89
+ }
90
+ function wordMatcher(value, label) {
91
+ return {
92
+ pattern: new RegExp(`(?<![\\p{L}\\p{N}])${escapeRegExp(value)}(?![\\p{L}\\p{N}])`, "giu"),
93
+ label,
94
+ valueLength: value.length,
95
+ };
96
+ }
97
+ const DIGIT_SEPARATOR = "[\\s().\\-]*";
98
+ function digitRun(digits) {
99
+ return digits.split("").join(DIGIT_SEPARATOR);
100
+ }
101
+ /**
102
+ * Matches a value by its digits however they are formatted. An international
103
+ * (`+…`) value also matches its national number with or without the country
104
+ * code, and its national format (e.g. a UK trunk `0`), since country codes
105
+ * vary in length and only a numbering-plan library can split them.
106
+ */
107
+ function digitMatcher(value, label) {
108
+ const digits = value.replace(/\D/g, "");
109
+ if (digits.length < MIN_DIGITS)
110
+ return null;
111
+ const alternatives = new Set([digitRun(digits)]);
112
+ const phone = value.trim().startsWith("+") ? (0, min_1.parsePhoneNumberFromString)(value) : undefined;
113
+ if (phone) {
114
+ alternatives.add(`(?:\\+?${phone.countryCallingCode}${DIGIT_SEPARATOR})?(?:\\(0\\)${DIGIT_SEPARATOR})?${digitRun(phone.nationalNumber)}`);
115
+ alternatives.add(digitRun(phone.formatNational().replace(/\D/g, "")));
116
+ }
117
+ return {
118
+ // The optional leading "+(" is consumed so "(555) 123-4567" is replaced whole.
119
+ pattern: new RegExp(`(?<!\\d)\\+?\\(?(?:${[...alternatives].join("|")})(?!\\d)`, "g"),
120
+ label,
121
+ valueLength: value.length,
122
+ };
123
+ }
124
+ function literalMatcher(value, label) {
125
+ return { pattern: new RegExp(escapeRegExp(value), "g"), label, valueLength: value.length };
126
+ }
127
+ function baseMatcherFor(kind, value, label) {
128
+ if (kind === "digit")
129
+ return digitMatcher(value, label) ?? literalMatcher(value, label);
130
+ if (kind === "word")
131
+ return value.length >= MIN_WORD_LENGTH ? wordMatcher(value, label) : null;
132
+ return value.length >= MIN_LITERAL_LENGTH ? literalMatcher(value, label) : null;
133
+ }
134
+ function tokenScopeFor(kind, value, tokenize) {
135
+ if (!tokenize)
136
+ return "never";
137
+ return kind === "digit" || /[\d@\s]/.test(value) ? "anywhere" : "value-span";
138
+ }
139
+ function matcherFor(kind, value, label, tokenize) {
140
+ const base = baseMatcherFor(kind, value, label);
141
+ return base ? { ...base, tokenScope: tokenScopeFor(kind, value, tokenize) } : null;
142
+ }
143
+ function collectMatchers(value, kind, label, tokenize, out) {
144
+ if (typeof value === "string") {
145
+ const matcher = matcherFor(kind, value.trim(), label, tokenize);
146
+ if (matcher)
147
+ out.push(matcher);
148
+ return;
149
+ }
150
+ if (Array.isArray(value)) {
151
+ for (const item of value)
152
+ collectMatchers(item, kind, label, tokenize, out);
153
+ return;
154
+ }
155
+ if (value !== null && typeof value === "object" && !Buffer.isBuffer(value)) {
156
+ for (const nested of Object.values(value)) {
157
+ collectMatchers(nested, kind, label, tokenize, out);
158
+ }
159
+ }
160
+ }
161
+ function matchKindFor(key, policy) {
162
+ if (policy?.persistKeys?.includes(key) ||
163
+ policy?.publicKeys?.includes(key) ||
164
+ policy?.skipKeys?.includes(key)) {
165
+ return null;
166
+ }
167
+ if (policy?.digitKeys?.includes(key))
168
+ return "digit";
169
+ if (policy?.wordKeys?.includes(key))
170
+ return "word";
171
+ return "literal";
172
+ }
173
+ function activeMatchers() {
174
+ if (compiled)
175
+ return compiled;
176
+ // Longest literals first so "Mary Ann" is replaced before "Mary".
177
+ compiled = [...registry.values()].flat().sort((a, b) => b.valueLength - a.valueLength);
178
+ return compiled;
179
+ }
180
+ /**
181
+ * Registers a request body so its values are scrubbed from all output until
182
+ * {@link releaseSensitiveValues} plus a grace period. The body is the one
183
+ * place the engine sees the caller's data; the plugin's policy says how each
184
+ * field should be matched, and unlisted fields are matched as literals.
185
+ */
186
+ function registerSensitiveValues(runId, payload, policy) {
187
+ if (payload === null || typeof payload !== "object")
188
+ return;
189
+ const matchers = [];
190
+ for (const [key, value] of Object.entries(payload)) {
191
+ const kind = matchKindFor(key, policy);
192
+ const tokenize = policy?.tokenizeKeys?.includes(key) ?? false;
193
+ if (kind)
194
+ collectMatchers(value, kind, key, tokenize, matchers);
195
+ }
196
+ registry.set(runId, matchers, { ttl: MAX_REGISTRATION_TTL_MS });
197
+ compiled = null;
198
+ }
199
+ /**
200
+ * Schedules a run's values for removal. The grace period keeps late output
201
+ * (teardown logs, deferred telemetry, pooled-session callbacks) scrubbed.
202
+ */
203
+ function releaseSensitiveValues(runId, graceMs = DEFAULT_RELEASE_GRACE_MS) {
204
+ const matchers = registry.get(runId);
205
+ if (!matchers)
206
+ return;
207
+ if (graceMs <= 0) {
208
+ registry.delete(runId);
209
+ return;
210
+ }
211
+ registry.set(runId, matchers, { ttl: graceMs });
212
+ }
213
+ /**
214
+ * Registers a value minted inside the engine (e.g. a throwaway account
215
+ * password) that never appears in the inbound payload but must never be
216
+ * written out either.
217
+ */
218
+ function registerSecretValue(value, ttlMs = MAX_REGISTRATION_TTL_MS) {
219
+ if (value.length < MIN_LITERAL_LENGTH)
220
+ return;
221
+ registry.set(`${SECRET_KEY_PREFIX}${value}`, [{ ...literalMatcher(value, "Secret"), tokenScope: "anywhere" }], { ttl: ttlMs });
222
+ compiled = null;
223
+ }
224
+ /**
225
+ * Replaces only the registered secrets (see {@link registerSecretValue}) in
226
+ * `text` with `<Secret>`. For prompts that must keep the applicant's ordinary
227
+ * values — an LLM judge deciding whether "Ann" landed in First Name needs
228
+ * "Ann" — but must never carry a credential.
229
+ */
230
+ function redactSecrets(text) {
231
+ if (registry.size === 0 || text.length === 0)
232
+ return text;
233
+ let out = text;
234
+ for (const [key, matchers] of registry.entries()) {
235
+ if (!key.startsWith(SECRET_KEY_PREFIX))
236
+ continue;
237
+ for (const { pattern, label } of matchers) {
238
+ pattern.lastIndex = 0;
239
+ out = out.replace(pattern, `<${label}>`);
240
+ }
241
+ }
242
+ return out;
243
+ }
244
+ /**
245
+ * Replaces every registered sensitive value in `text` with `<FieldName>`.
246
+ * Cheap no-op when nothing is registered, so it is safe on every log line.
247
+ */
248
+ function redactPii(text) {
249
+ if (registry.size === 0 || text.length === 0)
250
+ return text;
251
+ let out = text;
252
+ for (const { pattern, label } of activeMatchers()) {
253
+ pattern.lastIndex = 0;
254
+ out = out.replace(pattern, `<${label}>`);
255
+ }
256
+ return out;
257
+ }
258
+ function isPlainObject(value) {
259
+ const proto = Object.getPrototypeOf(value);
260
+ return proto === Object.prototype || proto === null;
261
+ }
262
+ /**
263
+ * Structural variant of {@link redactPii} for log/telemetry objects. Errors
264
+ * become plain `{ type, message, stack }` objects (the shape pino's err
265
+ * serializer emits) so their messages can be scrubbed too. Other class
266
+ * instances (Fastify's request/reply, Buffers, URLs) are returned untouched:
267
+ * their pino serializers read prototype getters a plain copy would drop.
268
+ */
269
+ function redactPiiDeep(value, depth = 0) {
270
+ if (registry.size === 0)
271
+ return value;
272
+ if (typeof value === "string")
273
+ return redactPii(value);
274
+ if (depth >= MAX_DEEP_REDACT_DEPTH || value === null || typeof value !== "object")
275
+ return value;
276
+ if (value instanceof Error) {
277
+ return {
278
+ type: value.name,
279
+ message: redactPii(value.message),
280
+ stack: value.stack ? redactPii(value.stack) : undefined,
281
+ ...(value.cause === undefined ? {} : { cause: redactPiiDeep(value.cause, depth + 1) }),
282
+ ...redactPiiDeep({ ...value }, depth + 1),
283
+ };
284
+ }
285
+ if (Array.isArray(value))
286
+ return value.map((item) => redactPiiDeep(item, depth + 1));
287
+ if (!isPlainObject(value))
288
+ return value;
289
+ return Object.fromEntries(Object.entries(value).map(([key, nested]) => [
290
+ key,
291
+ redactPiiDeep(nested, depth + 1),
292
+ ]));
293
+ }
294
+ /**
295
+ * Reduces a typed/selected value to its shape (`Aaaa`, `99/99/9999`) for
296
+ * diagnostics: format mismatches stay debuggable (and usable as rephrase
297
+ * evidence) without the value itself — including short answers like "Yes"
298
+ * that are too common to register for redaction.
299
+ */
300
+ function maskValueShape(text, maxLength = 40) {
301
+ return text
302
+ .slice(0, maxLength)
303
+ .replace(/\p{Lu}/gu, "A")
304
+ .replace(/\p{Ll}/gu, "a")
305
+ .replace(/\p{N}/gu, "9");
306
+ }
307
+ /**
308
+ * Value positions in an instruction: a quoted or bare value introduced by
309
+ * with/type/enter, e.g. "fill it with 'Ann'", "Fill in Last Name with Smith".
310
+ */
311
+ const VALUE_SPAN = /\b(?:with|type|enter)\s+(?:'[^']*'|"[^"]*"|[^\s'",;.][^'",;]*?(?=\s*(?:$|[,;]|\.(?:\s|$)|\s(?:in|into|if|then|and|on)\b)))/giu;
312
+ const TOKEN_REFERENCE = /%([A-Za-z][A-Za-z0-9_]*)%/g;
313
+ /** `%E2%`-style percent-encoded bytes look like tokens but are URL text. */
314
+ const PERCENT_ENCODED_BYTE = /^[0-9A-Fa-f]{2}$/;
315
+ function valueSpans(text) {
316
+ return [...text.matchAll(VALUE_SPAN)].map((m) => [m.index, m.index + m[0].length]);
317
+ }
318
+ /** Non-overlapping value occurrences in `text`, longest registered value first. */
319
+ function claimTokenRanges(text) {
320
+ const spans = valueSpans(text);
321
+ const claims = [];
322
+ for (const matcher of activeMatchers()) {
323
+ if (matcher.tokenScope === "never")
324
+ continue;
325
+ for (const m of text.matchAll(matcher.pattern)) {
326
+ const start = m.index;
327
+ const end = start + m[0].length;
328
+ const inSpan = spans.some(([s, e]) => start >= s && end <= e);
329
+ if (matcher.tokenScope === "value-span" && !inSpan)
330
+ continue;
331
+ if (claims.some((c) => start < c.end && end > c.start))
332
+ continue;
333
+ claims.push({ start, end, label: matcher.label });
334
+ }
335
+ }
336
+ return claims.sort((a, b) => a.start - b.start);
337
+ }
338
+ /** `Email`, then `Email_2`, `Email_3`… for further distinct texts under one label. */
339
+ function nextVariableName(label, taken) {
340
+ const base = label.replace(/[^A-Za-z0-9_]/g, "") || "Value";
341
+ if (!(base in taken))
342
+ return base;
343
+ const siblings = Object.keys(taken).filter((n) => n === base || n.startsWith(`${base}_`));
344
+ return `${base}_${siblings.length + 1}`;
345
+ }
346
+ /**
347
+ * Swaps registered request values (and engine-minted secrets) in a Stagehand
348
+ * instruction for `%Name%` tokens, returning the `variables` map Stagehand
349
+ * substitutes back only when it performs the action — so the values never
350
+ * reach the LLM prompt, Browserbase's instruction cache or the call telemetry.
351
+ * Each token maps to the exact text it replaced, so the typed value is
352
+ * byte-identical to the untokenized instruction's.
353
+ */
354
+ function tokenizeSensitiveValues(text) {
355
+ if (registry.size === 0 || text.length === 0)
356
+ return { text, variables: {} };
357
+ const claims = claimTokenRanges(text);
358
+ if (claims.length === 0)
359
+ return { text, variables: {} };
360
+ const variables = {};
361
+ const nameByText = new Map();
362
+ let out = "";
363
+ let cursor = 0;
364
+ for (const { start, end, label } of claims) {
365
+ const matched = text.slice(start, end);
366
+ const name = nameByText.get(matched) ?? nextVariableName(label, variables);
367
+ nameByText.set(matched, name);
368
+ variables[name] = matched;
369
+ out += `${text.slice(cursor, start)}%${name}%`;
370
+ cursor = end;
371
+ }
372
+ return { text: out + text.slice(cursor), variables };
373
+ }
374
+ /** Replaces `%Name%` tokens with their values (names matched case-insensitively — LLMs re-case them). */
375
+ function detokenize(text, variables) {
376
+ if (Object.keys(variables).length === 0)
377
+ return text;
378
+ const byLowerName = new Map(Object.entries(variables).map(([k, v]) => [k.toLowerCase(), v]));
379
+ return text.replace(TOKEN_REFERENCE, (m, name) => byLowerName.get(name.toLowerCase()) ?? m);
380
+ }
381
+ /**
382
+ * Tokens left in `text` that `variables` cannot resolve — an LLM-invented
383
+ * `%Name%` would otherwise be typed into the form verbatim.
384
+ */
385
+ function unresolvedTokens(text, variables) {
386
+ const known = new Set(Object.keys(variables).map((k) => k.toLowerCase()));
387
+ return [...text.matchAll(TOKEN_REFERENCE)]
388
+ .map((m) => m[1] ?? "")
389
+ .filter((name) => !PERCENT_ENCODED_BYTE.test(name) && !known.has(name.toLowerCase()));
390
+ }
391
+ /** Test-only: clears the registry between cases. */
392
+ function resetSensitiveValuesForTests() {
393
+ registry.clear();
394
+ policies.clear();
395
+ compiled = null;
396
+ }
397
+ //# sourceMappingURL=pii-redaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pii-redaction.js","sourceRoot":"","sources":["../../src/lib/pii-redaction.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;;;;;;;;;;;;;;AAEH,+CAAmE;AACnE,yCAAqC;AACrC,+BAA2B;AAI3B,MAAM,eAAe,GAAG,CAAC,CAAC;AAC1B,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAC7B,mEAAmE;AACnE,MAAM,iBAAiB,GAAG,SAAS,CAAC;AACpC,MAAM,UAAU,GAAG,CAAC,CAAC;AACrB,MAAM,wBAAwB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAChD,8HAA8H;AAC9H,MAAM,uBAAuB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACnD,4FAA4F;AAC5F,MAAM,oBAAoB,GAAG,MAAM,CAAC;AACpC,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAoBhC,IAAI,QAAQ,GAA8B,IAAI,CAAC;AAE/C,MAAM,QAAQ,GAAG,IAAI,oBAAQ,CAA6B;IACxD,GAAG,EAAE,oBAAoB;IACzB,YAAY,EAAE,IAAI;IAClB,OAAO,EAAE,GAAG,EAAE;QACZ,QAAQ,GAAG,IAAI,CAAC;IAClB,CAAC;CACF,CAAC,CAAC;AAEH;;;;;GAKG;AACU,QAAA,uBAAuB,GAAG,MAAC;KACrC,MAAM,CAAC;IACN,WAAW,EAAE,MAAC,CAAC,KAAK,CAAC,MAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC3C,UAAU,EAAE,MAAC,CAAC,KAAK,CAAC,MAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC1C,QAAQ,EAAE,MAAC,CAAC,KAAK,CAAC,MAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACxC,QAAQ,EAAE,MAAC,CAAC,KAAK,CAAC,MAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACxC,SAAS,EAAE,MAAC,CAAC,KAAK,CAAC,MAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACzC,YAAY,EAAE,MAAC,CAAC,KAAK,CAAC,MAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC7C,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA2B,CAAC;AAEpD;;;;GAIG;AACH,iCAAwC,MAAc,EAAE,MAAmC;IACzF,IAAI,MAAM;QAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;;QACpC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED,2EAA2E;AAC3E,4BAAmC,MAAc;IAC/C,OAAO,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,OAAO,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,WAAW,CAAC,KAAa,EAAE,KAAa;IAC/C,OAAO;QACL,OAAO,EAAE,IAAI,MAAM,CAAC,sBAAsB,YAAY,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC;QACzF,KAAK;QACL,WAAW,EAAE,KAAK,CAAC,MAAM;KAC1B,CAAC;AACJ,CAAC;AAED,MAAM,eAAe,GAAG,cAAc,CAAC;AAEvC,SAAS,QAAQ,CAAC,MAAc;IAC9B,OAAO,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAChD,CAAC;AAED;;;;;GAKG;AACH,SAAS,YAAY,CAAC,KAAa,EAAE,KAAa;IAChD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACxC,IAAI,MAAM,CAAC,MAAM,GAAG,UAAU;QAAE,OAAO,IAAI,CAAC;IAC5C,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAA,gCAA0B,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3F,IAAI,KAAK,EAAE,CAAC;QACV,YAAY,CAAC,GAAG,CACd,UAAU,KAAK,CAAC,kBAAkB,GAAG,eAAe,eAAe,eAAe,KAAK,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CACxH,CAAC;QACF,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACxE,CAAC;IACD,OAAO;QACL,+EAA+E;QAC/E,OAAO,EAAE,IAAI,MAAM,CAAC,sBAAsB,CAAC,GAAG,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC;QACrF,KAAK;QACL,WAAW,EAAE,KAAK,CAAC,MAAM;KAC1B,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,KAAa,EAAE,KAAa;IAClD,OAAO,EAAE,OAAO,EAAE,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;AAC7F,CAAC;AAID,SAAS,cAAc,CAAC,IAAe,EAAE,KAAa,EAAE,KAAa;IACnE,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACxF,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC,MAAM,IAAI,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/F,OAAO,KAAK,CAAC,MAAM,IAAI,kBAAkB,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAClF,CAAC;AAED,SAAS,aAAa,CAAC,IAAe,EAAE,KAAa,EAAE,QAAiB;IACtE,IAAI,CAAC,QAAQ;QAAE,OAAO,OAAO,CAAC;IAC9B,OAAO,IAAI,KAAK,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC;AAC/E,CAAC;AAED,SAAS,UAAU,CACjB,IAAe,EACf,KAAa,EACb,KAAa,EACb,QAAiB;IAEjB,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAChD,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACrF,CAAC;AAED,SAAS,eAAe,CACtB,KAAc,EACd,IAAe,EACf,KAAa,EACb,QAAiB,EACjB,GAAuB;IAEvB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QAChE,IAAI,OAAO;YAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,OAAO;IACT,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,KAAK,MAAM,IAAI,IAAI,KAAK;YAAE,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC5E,OAAO;IACT,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3E,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,KAAgC,CAAC,EAAE,CAAC;YACrE,eAAe,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,GAAW,EAAE,MAAmC;IACpE,IACE,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,GAAG,CAAC;QAClC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,GAAG,CAAC;QACjC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,EAC/B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC;IACrD,IAAI,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,MAAM,CAAC;IACnD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,cAAc;IACrB,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,kEAAkE;IAClE,QAAQ,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC;IACvF,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,iCACE,KAAa,EACb,OAAgB,EAChB,MAAwB;IAExB,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO;IAC5D,MAAM,QAAQ,GAAuB,EAAE,CAAC;IACxC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAkC,CAAC,EAAE,CAAC;QAC9E,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,MAAM,EAAE,YAAY,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;QAC9D,IAAI,IAAI;YAAE,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAClE,CAAC;IACD,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,uBAAuB,EAAE,CAAC,CAAC;IAChE,QAAQ,GAAG,IAAI,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,gCACE,KAAa,EACb,OAAO,GAAW,wBAAwB;IAE1C,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACrC,IAAI,CAAC,QAAQ;QAAE,OAAO;IACtB,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;QACjB,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvB,OAAO;IACT,CAAC;IACD,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;AAClD,CAAC;AAED;;;;GAIG;AACH,6BAAoC,KAAa,EAAE,KAAK,GAAW,uBAAuB;IACxF,IAAI,KAAK,CAAC,MAAM,GAAG,kBAAkB;QAAE,OAAO;IAC9C,QAAQ,CAAC,GAAG,CACV,GAAG,iBAAiB,GAAG,KAAK,EAAE,EAC9B,CAAC,EAAE,GAAG,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,EAChE,EAAE,GAAG,EAAE,KAAK,EAAE,CACf,CAAC;IACF,QAAQ,GAAG,IAAI,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,uBAA8B,IAAY;IACxC,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1D,IAAI,GAAG,GAAG,IAAI,CAAC;IACf,KAAK,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;QACjD,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,iBAAiB,CAAC;YAAE,SAAS;QACjD,KAAK,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1C,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;YACtB,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,mBAA0B,IAAY;IACpC,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1D,IAAI,GAAG,GAAG,IAAI,CAAC;IACf,KAAK,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,cAAc,EAAE,EAAE,CAAC;QAClD,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;QACtB,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IAClC,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC3C,OAAO,KAAK,KAAK,MAAM,CAAC,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC;AACtD,CAAC;AAED;;;;;;GAMG;AACH,uBAA8B,KAAc,EAAE,KAAK,GAAG,CAAC;IACrD,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACtC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;IACvD,IAAI,KAAK,IAAI,qBAAqB,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAChG,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO;YACL,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC;YACjC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;YACvD,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;YACtF,GAAI,aAAa,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,GAAG,CAAC,CAA6B;SACvE,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;IACrF,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;QACtE,GAAG;QACH,aAAa,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC;KACjC,CAAC,CACH,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,wBAA+B,IAAY,EAAE,SAAS,GAAG,EAAE;IACzD,OAAO,IAAI;SACR,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC;SACnB,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC;SACxB,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC;SACxB,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,GACd,+HAA+H,CAAC;AAElI,MAAM,eAAe,GAAG,4BAA4B,CAAC;AAErD,4EAA4E;AAC5E,MAAM,oBAAoB,GAAG,kBAAkB,CAAC;AAQhD,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACrF,CAAC;AAED,mFAAmF;AACnF,SAAS,gBAAgB,CAAC,IAAY;IACpC,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,EAAE,CAAC;QACvC,IAAI,OAAO,CAAC,UAAU,KAAK,OAAO;YAAE,SAAS;QAC7C,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/C,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;YACtB,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YAChC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;YAC9D,IAAI,OAAO,CAAC,UAAU,KAAK,YAAY,IAAI,CAAC,MAAM;gBAAE,SAAS;YAC7D,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC;gBAAE,SAAS;YACjE,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;AAClD,CAAC;AAED,sFAAsF;AACtF,SAAS,gBAAgB,CAAC,KAAa,EAAE,KAAyB;IAChE,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC;IAC5D,IAAI,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAClC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;IAC1F,OAAO,GAAG,IAAI,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;AAC1C,CAAC;AAED;;;;;;;GAOG;AACH,iCAAwC,IAAY;IAClD,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IAC7E,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IACxD,MAAM,SAAS,GAAuB,EAAE,CAAC;IACzC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC7C,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,MAAM,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAC3E,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC9B,SAAS,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;QAC1B,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,IAAI,GAAG,CAAC;QAC/C,MAAM,GAAG,GAAG,CAAC;IACf,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;AACvD,CAAC;AAED,yGAAyG;AACzG,oBAA2B,IAAY,EAAE,SAA6B;IACpE,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACrD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7F,OAAO,IAAI,CAAC,OAAO,CACjB,eAAe,EACf,CAAC,CAAC,EAAE,IAAY,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAC9D,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,0BAAiC,IAAY,EAAE,SAA6B;IAC1E,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAC1E,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;SACvC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACtB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AAC1F,CAAC;AAED,oDAAoD;AACpD;IACE,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,QAAQ,GAAG,IAAI,CAAC;AAClB,CAAC"}
@@ -24,7 +24,9 @@ export declare function pickRandom<T>(arr: readonly T[]): T;
24
24
  * password field but has no caller-supplied secret to splice — recon-captured
25
25
  * credentials must never leak into a generated flow, and a fixed literal would
26
26
  * be a shared secret across every run. `node:crypto`'s CSPRNG (not `Math.random`,
27
- * which backs the jitter helpers above) keeps the value unguessable.
27
+ * which backs the jitter helpers above) keeps the value unguessable. The value
28
+ * is registered for redaction because flows embed it in step instructions that
29
+ * reach logs and telemetry.
28
30
  */
29
31
  export declare function generateThrowawayPassword(): string;
30
32
  //# sourceMappingURL=random.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"random.d.ts","sourceRoot":"","sources":["../../src/lib/random.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAGnE;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,CAGlD;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,CAElD"}
1
+ {"version":3,"file":"random.d.ts","sourceRoot":"","sources":["../../src/lib/random.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAGnE;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,CAGlD;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,CAIlD"}