@enricai/barnacle 1.6.2 → 1.6.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/README.md +23 -18
  2. package/dist/api/errors.d.ts +3 -3
  3. package/dist/api/errors.d.ts.map +1 -1
  4. package/dist/api/errors.js +4 -4
  5. package/dist/api/errors.js.map +1 -1
  6. package/dist/api/helpers/reply.d.ts +1 -1
  7. package/dist/api/helpers/reply.js +1 -1
  8. package/dist/cache/keyed-ttl-cache.d.ts +4 -4
  9. package/dist/cache/keyed-ttl-cache.js +2 -2
  10. package/dist/lib/applicant-payload.d.ts +4 -4
  11. package/dist/lib/applicant-payload.js +4 -4
  12. package/dist/lib/application-address.d.ts +3 -3
  13. package/dist/lib/application-address.js +5 -5
  14. package/dist/lib/application-address.js.map +1 -1
  15. package/dist/lib/application-resume.d.ts +4 -4
  16. package/dist/lib/application-resume.js +4 -4
  17. package/dist/lib/dispatch-metrics.js +1 -1
  18. package/dist/lib/llm/judges/verify-submit.d.ts +1 -1
  19. package/dist/lib/llm/judges/verify-submit.js +1 -1
  20. package/dist/lib/llm/schemas.js +3 -3
  21. package/dist/lib/phone.d.ts +1 -1
  22. package/dist/lib/phone.js +1 -1
  23. package/dist/lib/telemetry/call-types.d.ts +1 -1
  24. package/dist/lib/telemetry/call-types.js +1 -1
  25. package/dist/lib/tracking-click.d.ts +5 -3
  26. package/dist/lib/tracking-click.d.ts.map +1 -1
  27. package/dist/lib/tracking-click.js +5 -3
  28. package/dist/lib/tracking-click.js.map +1 -1
  29. package/dist/lib/us-states.d.ts +1 -1
  30. package/dist/lib/us-states.js +1 -1
  31. package/dist/plugins/loader.js +2 -2
  32. package/dist/scraper/cookie-jar.d.ts +2 -2
  33. package/dist/scraper/cookie-jar.js +2 -2
  34. package/dist/scraper/errors.d.ts +1 -12
  35. package/dist/scraper/errors.d.ts.map +1 -1
  36. package/dist/scraper/errors.js +2 -16
  37. package/dist/scraper/errors.js.map +1 -1
  38. package/dist/scraper/flow-runner.d.ts +43 -27
  39. package/dist/scraper/flow-runner.d.ts.map +1 -1
  40. package/dist/scraper/flow-runner.js +70 -60
  41. package/dist/scraper/flow-runner.js.map +1 -1
  42. package/dist/scraper/http-client.d.ts +25 -3
  43. package/dist/scraper/http-client.d.ts.map +1 -1
  44. package/dist/scraper/http-client.js +95 -4
  45. package/dist/scraper/http-client.js.map +1 -1
  46. package/dist/scraper/rate-limited-json-client.d.ts +1 -1
  47. package/dist/scraper/rate-limited-json-client.d.ts.map +1 -1
  48. package/dist/scraper/raw-fetch.d.ts +2 -2
  49. package/dist/scraper/raw-fetch.js +1 -1
  50. package/dist/scraper/require-response-field.d.ts +1 -1
  51. package/dist/scraper/require-response-field.js +1 -1
  52. package/dist/scraper/session-warmup.d.ts +1 -1
  53. package/dist/scraper/session-warmup.js +1 -1
  54. package/dist/scripts/migrate-telemetry-dir-names.d.ts +2 -2
  55. package/dist/scripts/migrate-telemetry-dir-names.d.ts.map +1 -1
  56. package/dist/scripts/migrate-telemetry-dir-names.js +1 -1
  57. package/dist/scripts/recon-browser.d.ts +2 -2
  58. package/dist/scripts/recon-browser.js +14 -14
  59. package/dist/scripts/recon-browser.js.map +1 -1
  60. package/dist/scripts/recon-generate-multicall-fixture.d.ts +36 -0
  61. package/dist/scripts/recon-generate-multicall-fixture.d.ts.map +1 -0
  62. package/dist/scripts/recon-generate-multicall-fixture.js +102 -0
  63. package/dist/scripts/recon-generate-multicall-fixture.js.map +1 -0
  64. package/dist/scripts/recon-generate.d.ts +49 -0
  65. package/dist/scripts/recon-generate.d.ts.map +1 -1
  66. package/dist/scripts/recon-generate.js +129 -45
  67. package/dist/scripts/recon-generate.js.map +1 -1
  68. package/dist/scripts/recon-replay-jobs.d.ts +9 -4
  69. package/dist/scripts/recon-replay-jobs.d.ts.map +1 -1
  70. package/dist/scripts/recon-replay-jobs.js +15 -8
  71. package/dist/scripts/recon-replay-jobs.js.map +1 -1
  72. package/dist/scripts/recon-shared.d.ts +10 -0
  73. package/dist/scripts/recon-shared.d.ts.map +1 -1
  74. package/dist/scripts/recon-shared.js +25 -0
  75. package/dist/scripts/recon-shared.js.map +1 -1
  76. package/dist/site-plugin.d.ts +4 -4
  77. package/dist/testing/persona-fixture.d.ts +4 -4
  78. package/dist/testing/persona-fixture.d.ts.map +1 -1
  79. package/dist/testing/persona-fixture.js +4 -4
  80. package/dist/testing/persona-fixture.js.map +1 -1
  81. package/dist/types/dispatch-metrics.d.ts +1 -1
  82. package/dist/types/dispatch-metrics.js +1 -1
  83. package/package.json +1 -1
@@ -38,7 +38,17 @@ export interface HttpResponseBinding {
38
38
  * whose raw value is bound as-is.
39
39
  */
40
40
  cookieName?: string;
41
- /** Outbound request header to populate on subsequent calls, e.g. `"Cookie"`. */
41
+ /**
42
+ * Outbound request header to populate on subsequent calls, e.g. `"Cookie"`.
43
+ * Compared case-insensitively (HTTP header names are), so bindings whose
44
+ * `targetHeader` differs only by casing (e.g. `"Cookie"` vs `"cookie"`)
45
+ * are treated as the same target. Multiple bindings with a `cookieName`
46
+ * may share the same `targetHeader` (the `Cookie` header carries many
47
+ * cookies) — each is tracked separately and materialized joined by `"; "`.
48
+ * Bindings without `cookieName` bind a raw header value as-is and keep
49
+ * overwrite semantics: a second such binding sharing a `targetHeader`
50
+ * replaces the first.
51
+ */
42
52
  targetHeader: string;
43
53
  }
44
54
  /**
@@ -88,8 +98,12 @@ export interface HttpClientOptions<TResponse> {
88
98
  * the browser `RequestInit` API — keeps the interface portable and prevents
89
99
  * callers from bypassing the Bottleneck or Zod layers by passing raw fetch
90
100
  * options that the client doesn't know about.
101
+ *
102
+ * `TOverride` defaults to `unknown` for callers that don't need the per-call
103
+ * `schema` escape hatch — `HttpRequestInit` (no type argument) still behaves
104
+ * exactly as before.
91
105
  */
92
- export interface HttpRequestInit {
106
+ export interface HttpRequestInit<TOverride = unknown> {
93
107
  method?: string;
94
108
  headers?: Record<string, string>;
95
109
  body?: string;
@@ -102,6 +116,14 @@ export interface HttpRequestInit {
102
116
  * until the server closes it (~15min for testmail livequery).
103
117
  */
104
118
  signal?: AbortSignal;
119
+ /**
120
+ * Validates this call's response against `schema` instead of the client's
121
+ * default schema — the escape hatch a multi-call chain with heterogeneous
122
+ * response shapes needs, since `createHttpClient`'s `schema` option is a
123
+ * single client-wide default (see `HttpClientOptions.schema`). Omitted
124
+ * calls keep validating against the client default exactly as before.
125
+ */
126
+ schema?: ZodType<TOverride>;
105
127
  }
106
128
  /**
107
129
  * Factory that creates a typed direct-HTTP request function pre-wired with
@@ -124,5 +146,5 @@ export interface HttpRequestInit {
124
146
  * Wraps transient network errors in `UnknownScraperError` and retries up to
125
147
  * 2 times with exponential backoff before propagating.
126
148
  */
127
- export declare function createHttpClient<TResponse>(options: HttpClientOptions<TResponse>): (url: string, init?: HttpRequestInit) => Promise<TResponse>;
149
+ export declare function createHttpClient<TResponse>(options: HttpClientOptions<TResponse>): <TOverride = TResponse>(url: string, init?: HttpRequestInit<TOverride>) => Promise<TOverride>;
128
150
  //# sourceMappingURL=http-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../src/scraper/http-client.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,UAAU,MAAM,YAAY,CAAC;AAEzC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGtC,OAAO,EAKL,KAAK,YAAY,EAElB,MAAM,kBAAkB,CAAC;AAc1B;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;OAKG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gFAAgF;IAChF,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB,CAAC,SAAS;IAC1C,+DAA+D;IAC/D,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC3B,yEAAyE;IACzE,UAAU,EAAE,UAAU,CAAC;IACvB,oFAAoF;IACpF,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC9C;;;;;;;;;OASG;IACH,IAAI,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAC7B;;;;;;;OAOG;IACH,oBAAoB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,KAAK,YAAY,GAAG,SAAS,CAAC;CAC5F;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAoDD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EACxC,OAAO,EAAE,iBAAiB,CAAC,SAAS,CAAC,GACpC,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,eAAe,KAAK,OAAO,CAAC,SAAS,CAAC,CAqJ7D"}
1
+ {"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../src/scraper/http-client.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,UAAU,MAAM,YAAY,CAAC;AAEzC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGtC,OAAO,EAKL,KAAK,YAAY,EAElB,MAAM,kBAAkB,CAAC;AAc1B;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;OAKG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;;;OAUG;IACH,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB,CAAC,SAAS;IAC1C,+DAA+D;IAC/D,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC3B,yEAAyE;IACzE,UAAU,EAAE,UAAU,CAAC;IACvB,oFAAoF;IACpF,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC9C;;;;;;;;;OASG;IACH,IAAI,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAC7B;;;;;;;OAOG;IACH,oBAAoB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,KAAK,YAAY,GAAG,SAAS,CAAC;CAC5F;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,eAAe,CAAC,SAAS,GAAG,OAAO;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;CAC7B;AA+GD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EACxC,OAAO,EAAE,iBAAiB,CAAC,SAAS,CAAC,GACpC,CAAC,SAAS,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,eAAe,CAAC,SAAS,CAAC,KAAK,OAAO,CAAC,SAAS,CAAC,CA+L/F"}
@@ -83,6 +83,58 @@ function extractCookieValue(setCookieHeaders, cookieName) {
83
83
  }
84
84
  return undefined;
85
85
  }
86
+ /**
87
+ * Finds a header's value by case-insensitive key lookup — `baseHeaders` and
88
+ * `init.headers` are operator-supplied with arbitrary casing (unlike
89
+ * `boundHeaders`, which is normalized via `targetHeaderCasing`), so a plain
90
+ * `headers["Cookie"]` lookup would miss a `"cookie"` or `"COOKIE"` key.
91
+ */
92
+ function findHeaderCaseInsensitive(headers, name) {
93
+ const lower = name.toLowerCase();
94
+ const key = Object.keys(headers).find((k) => k.toLowerCase() === lower);
95
+ return key === undefined ? undefined : headers[key];
96
+ }
97
+ /**
98
+ * Parses a `name=value; name=value` Cookie header string into per-cookie
99
+ * entries, mirroring the pair-splitting `extractCookieValue` already does
100
+ * for `Set-Cookie`. Skips malformed segments (no `=`) rather than throwing —
101
+ * an operator-authored `baseHeaders` or per-call `init.headers` Cookie value
102
+ * is untrusted input, not a value this module produced.
103
+ */
104
+ function parseCookiePairs(cookieHeader) {
105
+ return cookieHeader
106
+ .split(";")
107
+ .map((pair) => pair.trim())
108
+ .filter(Boolean)
109
+ .flatMap((pair) => {
110
+ const eq = pair.indexOf("=");
111
+ return eq === -1 ? [] : [[pair.slice(0, eq).trim(), pair.slice(eq + 1).trim()]];
112
+ });
113
+ }
114
+ /**
115
+ * Merges the Cookie header across `baseHeaders`, the live `boundHeaders`
116
+ * accumulator, and per-call `init.headers` by individual cookie name instead
117
+ * of the last-wins overwrite plain object spread gives every other header —
118
+ * see the http-client.ts module docblock and CLAUDE.md "battle-tested
119
+ * libraries only" for why the Cookie header specifically needs pair-level
120
+ * merging. Precedence on a name collision: a freshly bound value (the live
121
+ * session state a response just handed back) wins over a per-call override,
122
+ * which wins over the plugin's static default — bound values are the most
123
+ * current source of truth for a cookie in active rotation.
124
+ */
125
+ function mergeCookieHeader(baseHeaders, boundHeaders, initHeaders) {
126
+ const merged = new Map();
127
+ for (const source of [baseHeaders, initHeaders, boundHeaders]) {
128
+ const cookieHeader = findHeaderCaseInsensitive(source, "Cookie");
129
+ if (cookieHeader === undefined)
130
+ continue;
131
+ for (const [name, value] of parseCookiePairs(cookieHeader))
132
+ merged.set(name, value);
133
+ }
134
+ if (merged.size === 0)
135
+ return undefined;
136
+ return [...merged.entries()].map(([name, value]) => `${name}=${value}`).join("; ");
137
+ }
86
138
  /**
87
139
  * Resolves one {@link HttpResponseBinding} against a response's headers.
88
140
  * Returns `undefined` on a miss (source header/cookie absent) so the caller
@@ -125,10 +177,37 @@ function createHttpClient(options) {
125
177
  // targetHeader. Lives for the lifetime of this client instance so a later
126
178
  // call can pick up what an earlier call captured — see HttpResponseBinding.
127
179
  const boundHeaders = {};
180
+ // Per-cookie values for targetHeaders that carry multiple cookies (e.g.
181
+ // "Cookie"), keyed by targetHeader.toLowerCase() then cookieName so
182
+ // several bindings sharing one targetHeader — even across differing
183
+ // casing, since HTTP header names are case-insensitive — accumulate
184
+ // instead of overwriting or splitting into two outbound headers — see
185
+ // HttpResponseBinding.targetHeader. Materialized into boundHeaders
186
+ // (joined by "; ") whenever an entry changes.
187
+ const boundCookiesByTarget = new Map();
188
+ // Canonical (first-seen) casing of each targetHeader, keyed by
189
+ // targetHeader.toLowerCase() — lets both branches below write
190
+ // boundHeaders under one stable key regardless of which casing a later
191
+ // binding declares.
192
+ const targetHeaderCasing = new Map();
128
193
  return async (url, init = {}) => {
194
+ // A per-call `init.schema` supersedes the client-level default for this
195
+ // call only — see HttpRequestInit.schema for why a multi-call chain with
196
+ // heterogeneous response shapes needs this escape hatch.
197
+ const activeSchema = init.schema ?? schema;
129
198
  return bottleneck.schedule(() => (0, p_retry_1.default)(async () => {
130
199
  const method = init.method ?? "GET";
131
- const headers = { ...baseHeaders, ...boundHeaders, ...(init.headers ?? {}) };
200
+ const initHeaders = init.headers ?? {};
201
+ const mergedCookie = mergeCookieHeader(baseHeaders, boundHeaders, initHeaders);
202
+ const headers = {
203
+ ...baseHeaders,
204
+ ...boundHeaders,
205
+ ...initHeaders,
206
+ };
207
+ if (mergedCookie !== undefined) {
208
+ const cookieKey = Object.keys(headers).find((k) => k.toLowerCase() === "cookie") ?? "Cookie";
209
+ headers[cookieKey] = mergedCookie;
210
+ }
132
211
  let response;
133
212
  try {
134
213
  response = await fetch(url, {
@@ -157,9 +236,21 @@ function createHttpClient(options) {
157
236
  // clearing it — and if nothing has ever been bound, the target
158
237
  // header stays absent from `boundHeaders` entirely, so later
159
238
  // requests never send it as an empty string.
160
- if (value !== undefined) {
161
- boundHeaders[binding.targetHeader] = value;
239
+ if (value === undefined)
240
+ continue;
241
+ const targetKey = binding.targetHeader.toLowerCase();
242
+ const canonicalTarget = targetHeaderCasing.get(targetKey) ?? binding.targetHeader;
243
+ targetHeaderCasing.set(targetKey, canonicalTarget);
244
+ if (binding.cookieName === undefined) {
245
+ boundHeaders[canonicalTarget] = value;
246
+ continue;
162
247
  }
248
+ const cookies = boundCookiesByTarget.get(targetKey) ?? new Map();
249
+ cookies.set(binding.cookieName, value);
250
+ boundCookiesByTarget.set(targetKey, cookies);
251
+ boundHeaders[canonicalTarget] = [...cookies.entries()]
252
+ .map(([name, cookieValue]) => `${name}=${cookieValue}`)
253
+ .join("; ");
163
254
  }
164
255
  if (response.status === 401 || response.status === 403) {
165
256
  // Bot challenge / auth wall — not a transient failure, abort retry.
@@ -209,7 +300,7 @@ function createHttpClient(options) {
209
300
  throw classified.retryable ? classified : new p_retry_1.AbortError(classified);
210
301
  }
211
302
  const body = parseJsonOrThrowRetryable(rawText, url);
212
- const parsed = schema.safeParse(body);
303
+ const parsed = activeSchema.safeParse(body);
213
304
  if (!parsed.success) {
214
305
  logger.warn(`http schema mismatch from ${url}: ${parsed.error.issues.map((i) => i.message).join("; ")}`);
215
306
  // Schema mismatch — not transient, abort retry.
@@ -1 +1 @@
1
- {"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../src/scraper/http-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../src/scraper/http-client.ts"],"names":[],"mappings":"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"}
@@ -38,5 +38,5 @@ export interface RateLimitedJsonClientOptions<TResponse> {
38
38
  * and site-specific `extraHeaders`; the factory owns the limiter lifecycle and
39
39
  * the header merge order (hints first, extraHeaders on top).
40
40
  */
41
- export declare function createRateLimitedJsonClient<TResponse>(opts: RateLimitedJsonClientOptions<TResponse>): (url: string, init?: HttpRequestInit) => Promise<TResponse>;
41
+ export declare function createRateLimitedJsonClient<TResponse>(opts: RateLimitedJsonClientOptions<TResponse>): <TOverride = TResponse>(url: string, init?: HttpRequestInit<TOverride>) => Promise<TOverride>;
42
42
  //# sourceMappingURL=rate-limited-json-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rate-limited-json-client.d.ts","sourceRoot":"","sources":["../../src/scraper/rate-limited-json-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGtC,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGhF;;;;;GAKG;AACH,MAAM,WAAW,4BAA4B,CAAC,SAAS;IACrD,qFAAqF;IACrF,SAAS,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,sDAAsD;IACtD,OAAO,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,gEAAgE;IAChE,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC3B;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC,sBAAsB,CAAC,CAAC;CAC7E;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAAC,SAAS,EACnD,IAAI,EAAE,4BAA4B,CAAC,SAAS,CAAC,GAC5C,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,eAAe,KAAK,OAAO,CAAC,SAAS,CAAC,CAgB7D"}
1
+ {"version":3,"file":"rate-limited-json-client.d.ts","sourceRoot":"","sources":["../../src/scraper/rate-limited-json-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGtC,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGhF;;;;;GAKG;AACH,MAAM,WAAW,4BAA4B,CAAC,SAAS;IACrD,qFAAqF;IACrF,SAAS,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,sDAAsD;IACtD,OAAO,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,gEAAgE;IAChE,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC3B;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC,sBAAsB,CAAC,CAAC;CAC7E;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAAC,SAAS,EACnD,IAAI,EAAE,4BAA4B,CAAC,SAAS,CAAC,GAC5C,CAAC,SAAS,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,eAAe,CAAC,SAAS,CAAC,KAAK,OAAO,CAAC,SAAS,CAAC,CAgB/F"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Site-agnostic fetch scaffold shared by plugins that cannot use
3
3
  * `createHttpClient` — typically because they need multipart Buffer bodies
4
- * or per-response header rotation (appcast token churn). Owns the
4
+ * or per-response header rotation (per-site token churn). Owns the
5
5
  * try/catch network-error conversion, the onResponse hook, and the
6
6
  * classifyHttpStatus call so callers only supply the what (URL, headers,
7
7
  * body) and the where (their token-rotation / audit hook and context label).
@@ -47,7 +47,7 @@ export interface RawFetchOptions {
47
47
  onResponse: (headers: Headers) => void;
48
48
  /**
49
49
  * Short label used in error messages from `classifyHttpStatus`, e.g.
50
- * `"appcast /integrated_questions"`. Should identify the endpoint so
50
+ * `"<site> /integrated_questions"`. Should identify the endpoint so
51
51
  * logs and error surfaces are actionable.
52
52
  */
53
53
  contextLabel: string;
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Site-agnostic fetch scaffold shared by plugins that cannot use
4
4
  * `createHttpClient` — typically because they need multipart Buffer bodies
5
- * or per-response header rotation (appcast token churn). Owns the
5
+ * or per-response header rotation (per-site token churn). Owns the
6
6
  * try/catch network-error conversion, the onResponse hook, and the
7
7
  * classifyHttpStatus call so callers only supply the what (URL, headers,
8
8
  * body) and the where (their token-rotation / audit hook and context label).
@@ -14,7 +14,7 @@ export declare function requireResponseField<T>(obj: Record<string, unknown>, ke
14
14
  /**
15
15
  * Returns `resp.items[0][key]` cast to `T`. Throws {@link HttpSchemaError}
16
16
  * when `items` is absent or empty, or when the field itself is nullish.
17
- * Covers the Oracle HCM `?finder=...` pattern where results always arrive as
17
+ * Covers the `?finder=...` pattern used by some ATS APIs where results arrive as
18
18
  * `{ items: [...] }` and the first element carries the required field.
19
19
  */
20
20
  export declare function requireFirstItemField<T>(resp: {
@@ -25,7 +25,7 @@ function requireResponseField(obj, key, contextLabel) {
25
25
  /**
26
26
  * Returns `resp.items[0][key]` cast to `T`. Throws {@link HttpSchemaError}
27
27
  * when `items` is absent or empty, or when the field itself is nullish.
28
- * Covers the Oracle HCM `?finder=...` pattern where results always arrive as
28
+ * Covers the `?finder=...` pattern used by some ATS APIs where results arrive as
29
29
  * `{ items: [...] }` and the first element carries the required field.
30
30
  */
31
31
  function requireFirstItemField(resp, key, contextLabel) {
@@ -5,7 +5,7 @@
5
5
  * the caller-supplied pRetry options. On exhaustion, wraps the last error in
6
6
  * the caller-supplied `exhaustionError`.
7
7
  *
8
- * Extracted from appcast/tokens/warmup.ts so any future recon→generate warmup
8
+ * Extracted from a plugin's token warmup so any future recon→generate warmup
9
9
  * flow can reuse the session-lifecycle shell without re-hand-rolling pRetry +
10
10
  * finally-close + error-mapping each time.
11
11
  */
@@ -6,7 +6,7 @@
6
6
  * the caller-supplied pRetry options. On exhaustion, wraps the last error in
7
7
  * the caller-supplied `exhaustionError`.
8
8
  *
9
- * Extracted from appcast/tokens/warmup.ts so any future recon→generate warmup
9
+ * Extracted from a plugin's token warmup so any future recon→generate warmup
10
10
  * flow can reuse the session-lifecycle shell without re-hand-rolling pRetry +
11
11
  * finally-close + error-mapping each time.
12
12
  */
@@ -23,12 +23,12 @@
23
23
  * Usage:
24
24
  * pnpm tsx src/scripts/migrate-telemetry-dir-names.ts
25
25
  * pnpm tsx src/scripts/migrate-telemetry-dir-names.ts --apply
26
- * pnpm tsx src/scripts/migrate-telemetry-dir-names.ts --site appcast --apply
26
+ * pnpm tsx src/scripts/migrate-telemetry-dir-names.ts --site <siteId> --apply
27
27
  */
28
28
  interface MigrateOptions {
29
29
  /** Path to the project root containing `src/sites/`. */
30
30
  sitesRoot: string;
31
- /** Optional: restrict to one site directory by name (e.g. "appcast"). */
31
+ /** Optional: restrict to one site directory by name (e.g. "acme-jobs"). */
32
32
  siteFilter: string | null;
33
33
  /** If false, log planned renames but do not execute them. */
34
34
  apply: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"migrate-telemetry-dir-names.d.ts","sourceRoot":"","sources":["../../src/scripts/migrate-telemetry-dir-names.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAYH,UAAU,cAAc;IACtB,wDAAwD;IACxD,SAAS,EAAE,MAAM,CAAC;IAClB,yEAAyE;IACzE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,6DAA6D;IAC7D,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,UAAU,gBAAgB;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,cAAc,GAAG,gBAAgB,CAiB3E;AAqED,UAAU,UAAU;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAapD"}
1
+ {"version":3,"file":"migrate-telemetry-dir-names.d.ts","sourceRoot":"","sources":["../../src/scripts/migrate-telemetry-dir-names.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAYH,UAAU,cAAc;IACtB,wDAAwD;IACxD,SAAS,EAAE,MAAM,CAAC;IAClB,2EAA2E;IAC3E,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,6DAA6D;IAC7D,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,UAAU,gBAAgB;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,cAAc,GAAG,gBAAgB,CAiB3E;AAqED,UAAU,UAAU;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAapD"}
@@ -24,7 +24,7 @@
24
24
  * Usage:
25
25
  * pnpm tsx src/scripts/migrate-telemetry-dir-names.ts
26
26
  * pnpm tsx src/scripts/migrate-telemetry-dir-names.ts --apply
27
- * pnpm tsx src/scripts/migrate-telemetry-dir-names.ts --site appcast --apply
27
+ * pnpm tsx src/scripts/migrate-telemetry-dir-names.ts --site <siteId> --apply
28
28
  */
29
29
  Object.defineProperty(exports, "__esModule", { value: true });
30
30
  exports.migrateTelemetryDirs = migrateTelemetryDirs;
@@ -120,8 +120,8 @@ export declare function isReplanCycle(priorReplans: readonly ReplanEvent[], newS
120
120
  * false. `origin` distinguishes hand-authored steps from steps the LLM
121
121
  * replanner appended at cascade-exhausted recovery points — persistReplannedFlow
122
122
  * uses it to force replan-origin steps to optional on write-back, preventing
123
- * cross-employer regressions when a Presbyterian-specific replanned question
124
- * gets persisted and the next run is on Encompass.
123
+ * cross-employer regressions when an employer-specific replanned question
124
+ * gets persisted and the next run is on a different tenant.
125
125
  */
126
126
  interface NormalizedStep {
127
127
  instruction: string;
@@ -238,7 +238,7 @@ function detectRejectionInResponseBody(body) {
238
238
  *
239
239
  * Previous version of this helper assumed string-only and returned null for
240
240
  * the object case — causing Q1's audit to miss 100% of rejection envelopes
241
- * because AppCast (and any JSON-serving ATS) lands in the object case.
241
+ * because JSON-serving ATSs land in the object case.
242
242
  * Verified 2026-06-15 against capture 122-...-a4ab5256.json:
243
243
  * `jq '.responseBody | type'` returned `"object"`, the broken helper
244
244
  * returned null, the audit declared "PASSED" while the body contained
@@ -273,14 +273,14 @@ function normalizeResponseBodyForAudit(data) {
273
273
  * The audit is independent of the per-step verifier — the verifier may
274
274
  * have accepted a DOM-fallback or URL-change signal as proof, but if
275
275
  * the configured submit endpoint never returned 2xx, OR returned 2xx
276
- * with a rejection envelope (e.g. AppCast's `not_qualified: true`), the
276
+ * with a rejection envelope (e.g. `not_qualified: true`), the
277
277
  * application data didn't actually reach the employer's ATS.
278
278
  *
279
279
  * Site-agnostic: rejection detection is via `detectRejectionInResponseBody`
280
280
  * which knows the union of common ATS rejection-envelope shapes
281
- * (AppCast/Greenhouse/Lever/Workday). New ATSs extend the union.
281
+ * (Greenhouse/Lever/Workday and JSON-envelope ATSs). New ATSs extend the union.
282
282
  *
283
- * Pre-existing AppCast-specific equivalent: readJobOutcome in
283
+ * Pre-existing site-specific equivalent: readJobOutcome in
284
284
  * recon-replay-jobs.ts. This is the agnostic engine-side version using
285
285
  * the flow file's declared pattern.
286
286
  */
@@ -423,7 +423,7 @@ const RECON_FLOW_SCHEMA = v4_1.z.array(schemas_1.RECON_FLOW_STEP_SCHEMA).min(1);
423
423
  * the self-healing cascade can detect "the click fired tracking but
424
424
  * not the real submit XHR."
425
425
  * - `submittedStateSelectors`: DOM-level fallback when the submit POST
426
- * lands outside the per-attempt capture window. SPAs (e.g. AppCast)
426
+ * lands outside the per-attempt capture window. Some SPAs
427
427
  * can swap the form for a thank-you component (`<uapp-universal-
428
428
  * submitted-page>`) faster than the network capture pipeline records
429
429
  * the POST. If any selector in this list matches via
@@ -454,7 +454,7 @@ const RECON_FLOW_FILE_SCHEMA = v4_1.z.union([
454
454
  * Surfaced to the Haiku verifySubmit judge as evidence — when the page
455
455
  * URL after the click contains any of these, that's one of the strong
456
456
  * signals required for verified=true. Examples: ["/applied",
457
- * "/applyboard/applied", "/confirmation", "/thank-you"]. Site-specific
457
+ * "/apply-portal/applied", "/confirmation", "/thank-you"]. Site-specific
458
458
  * since URL conventions vary across ATS tenants.
459
459
  */
460
460
  successUrlFragments: v4_1.z.array(v4_1.z.string().min(1)).optional(),
@@ -472,7 +472,7 @@ const RECON_FLOW_FILE_SCHEMA = v4_1.z.union([
472
472
  * hostnames as a corroborating network signal — anything else (e.g.
473
473
  * analytics, third-party trackers, CDNs) is ignored. Without this
474
474
  * list the judge falls back to the URL alone, which is weaker.
475
- * Examples: ["apply.appcast.io"], ["careers.<ats>.com",
475
+ * Examples: ["apply.<ats>.com"], ["careers.<ats>.com",
476
476
  * "<tenant>.<ats>.com"].
477
477
  */
478
478
  ownBackendHostnames: v4_1.z.array(v4_1.z.string().min(1)).optional(),
@@ -480,8 +480,8 @@ const RECON_FLOW_FILE_SCHEMA = v4_1.z.union([
480
480
  * Optional site-specific class-name prefixes that wrap form/error
481
481
  * state. The Haiku invalid-fields judge uses these as additional
482
482
  * structural evidence beyond framework-conventional patterns
483
- * (ng-invalid, aria-invalid, data-invalid). Examples for AppCast:
484
- * ["uapp-", "app-"]. When omitted, the judge falls back to framework
483
+ * (ng-invalid, aria-invalid, data-invalid). Examples for an Angular
484
+ * apply SPA: ["uapp-", "app-"]. When omitted, the judge falls back to framework
485
485
  * conventions alone.
486
486
  */
487
487
  knownErrorClassPrefixes: v4_1.z.array(v4_1.z.string().min(1)).optional(),
@@ -506,7 +506,7 @@ const RECON_FLOW_FILE_SCHEMA = v4_1.z.union([
506
506
  * captures to prove an interior (non-submit) "advance"/"Next" step actually
507
507
  * moved the wizard forward — not merely fired some other same-origin POST.
508
508
  * Needed for SPAs where advance and non-advance mutations share one endpoint
509
- * URL (e.g. Talemetry's `/gq`: a real page advance is a `TransitionWorklet`
509
+ * URL (e.g. a wizard ATS's `/gq`: a real page advance is a `TransitionWorklet`
510
510
  * mutation, while `EditQuestionItem` is just a field edit — byte-identical
511
511
  * URLs, only the body differs). When set, an advance step's `networkFired`
512
512
  * signal is trusted ONLY if a capture body in the step's window matches this
@@ -1471,7 +1471,7 @@ async function main() {
1471
1471
  let lastSuccessNetworkCount = signalCounter.n;
1472
1472
  let lastSuccessUrl = page.url();
1473
1473
  // Track the page origin so a cross-origin navigation mid-flow (e.g. the
1474
- // Apply click taking careers.hcahealthcare.com → apply.talemetry.com) can
1474
+ // Apply click taking careers.<employer>.com → apply.<ats>.com) can
1475
1475
  // re-gate on SPA hydration. The initial goto's readiness gate only covers
1476
1476
  // the landing page; the wizard app boots on a DIFFERENT origin with no gate,
1477
1477
  // so its first steps would otherwise probe an un-hydrated shell and skip.
@@ -1495,7 +1495,7 @@ async function main() {
1495
1495
  logger.info(`${(0, flow_runner_1.formatStepPrefix)(i, () => plan.length)} [${currentPhase}]${step.optional ? " (optional)" : ""}: ${step.instruction}`);
1496
1496
  await snapshotAndPersistCookieJar(page, jarCounter, "pre-step", currentPhase, i);
1497
1497
  // Re-gate on SPA hydration when the origin changed since the last step —
1498
- // the wizard SPA (e.g. apply.talemetry.com after the Apply click) boots on
1498
+ // the wizard SPA (e.g. apply.<ats>.com after the Apply click) boots on
1499
1499
  // a new origin the initial-goto readiness gate never covered, so wait for
1500
1500
  // its body to render before probing rather than skipping a shell page.
1501
1501
  const currentOrigin = originOf(page.url());
@@ -1561,7 +1561,7 @@ async function main() {
1561
1561
  });
1562
1562
  await snapshotAndPersistCookieJar(page, jarCounter, "post-step", currentPhase, i);
1563
1563
  // Wizard-restart detection: if a configured restart-signal URL (e.g.
1564
- // Talemetry's `init-apply?...&application_canceled=true`) landed during
1564
+ // a wizard ATS's `init-apply?...&application_canceled=true`) landed during
1565
1565
  // this step, the multi-page wizard reset to page 1. Remaining steps now
1566
1566
  // target a reset page and replanning against the restarted wizard is
1567
1567
  // futile — abort with a diagnostic instead of silently cycling.
@@ -1627,7 +1627,7 @@ async function main() {
1627
1627
  // googletagmanager) that fire on form interaction events. Those look
1628
1628
  // exactly like real submissions by HTTP signal but don't represent the
1629
1629
  // actual application landing. Verified by reading captures from
1630
- // /tmp/recon/graphql/ during a sweep: Presbyterian jobs hit this exact
1630
+ // /tmp/recon/graphql/ during a sweep: some tenants hit this exact
1631
1631
  // failure — only interruption_check + GA tracking POSTs fired, no
1632
1632
  // integrated_apply, yet trailing-grace declared success.
1633
1633
  if (step.optional && i >= plan.length - flow_runner_1.TRAILING_GRACE_WINDOW) {