@enricai/barnacle 1.6.1 → 1.6.2
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.
- package/README.md +13 -11
- package/dist/scraper/deep-query.d.ts +36 -0
- package/dist/scraper/deep-query.d.ts.map +1 -0
- package/dist/scraper/deep-query.js +87 -0
- package/dist/scraper/deep-query.js.map +1 -0
- package/dist/scraper/errors.d.ts +11 -2
- package/dist/scraper/errors.d.ts.map +1 -1
- package/dist/scraper/errors.js +10 -1
- package/dist/scraper/errors.js.map +1 -1
- package/dist/scraper/flow-runner.d.ts +55 -4
- package/dist/scraper/flow-runner.d.ts.map +1 -1
- package/dist/scraper/flow-runner.js +240 -50
- package/dist/scraper/flow-runner.js.map +1 -1
- package/dist/scraper/phantom-click.d.ts +45 -0
- package/dist/scraper/phantom-click.d.ts.map +1 -0
- package/dist/scraper/phantom-click.js +37 -0
- package/dist/scraper/phantom-click.js.map +1 -0
- package/dist/scraper/session-browserbase.d.ts +48 -0
- package/dist/scraper/session-browserbase.d.ts.map +1 -1
- package/dist/scraper/session-browserbase.js +10 -5
- package/dist/scraper/session-browserbase.js.map +1 -1
- package/dist/scraper/session-shared.d.ts +6 -0
- package/dist/scraper/session-shared.d.ts.map +1 -1
- package/dist/scraper/session-shared.js.map +1 -1
- package/dist/scraper/submit-control.d.ts +51 -0
- package/dist/scraper/submit-control.d.ts.map +1 -0
- package/dist/scraper/submit-control.js +142 -0
- package/dist/scraper/submit-control.js.map +1 -0
- package/dist/scripts/recon-browser.d.ts +23 -18
- package/dist/scripts/recon-browser.d.ts.map +1 -1
- package/dist/scripts/recon-browser.js +51 -42
- package/dist/scripts/recon-browser.js.map +1 -1
- package/dist/scripts/recon-generate.d.ts +28 -7
- package/dist/scripts/recon-generate.d.ts.map +1 -1
- package/dist/scripts/recon-generate.js +50 -24
- package/dist/scripts/recon-generate.js.map +1 -1
- package/dist/scripts/recon-http.d.ts +36 -5
- package/dist/scripts/recon-http.d.ts.map +1 -1
- package/dist/scripts/recon-http.js +77 -47
- package/dist/scripts/recon-http.js.map +1 -1
- package/dist/scripts/recon-replay-jobs.d.ts +25 -1
- package/dist/scripts/recon-replay-jobs.d.ts.map +1 -1
- package/dist/scripts/recon-replay-jobs.js +33 -23
- package/dist/scripts/recon-replay-jobs.js.map +1 -1
- package/dist/scripts/recon-shared.d.ts +35 -0
- package/dist/scripts/recon-shared.d.ts.map +1 -1
- package/dist/scripts/recon-shared.js +92 -0
- package/dist/scripts/recon-shared.js.map +1 -1
- package/dist/scripts/recon-summarize.d.ts +5 -1
- package/dist/scripts/recon-summarize.d.ts.map +1 -1
- package/dist/scripts/recon-summarize.js +19 -7
- package/dist/scripts/recon-summarize.js.map +1 -1
- package/package.json +1 -1
|
@@ -11,12 +11,43 @@
|
|
|
11
11
|
* - Rate-limit probe (1 → 3 → 5 rps, stops at first 429/403)
|
|
12
12
|
*
|
|
13
13
|
* Usage:
|
|
14
|
-
* pnpm tsx src/scripts/recon-http.ts [--captures-dir
|
|
14
|
+
* pnpm tsx src/scripts/recon-http.ts [--captures-dir <path>] [--out-dir <path>]
|
|
15
15
|
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
16
|
+
* Output lands under the run-scoped root resolved by `resolveReconRunDir()`
|
|
17
|
+
* (`@/scripts/recon-shared`) — `/tmp/recon/<runId>/` by default, rooted
|
|
18
|
+
* elsewhere via `--out-dir <path>` / `RECON_OUT_DIR`:
|
|
19
|
+
* replays/<filename>.json — one replay result per unique capture
|
|
20
|
+
* aux/<basename>.json — downloaded static fixture per auxiliary endpoint
|
|
21
|
+
* replays/rate-limit.json — rate-limit probe findings
|
|
22
|
+
*
|
|
23
|
+
* `--captures-dir` overrides only the *read* path for captures (e.g. to
|
|
24
|
+
* replay a prior run's captures into a fresh output root) and defaults to
|
|
25
|
+
* this run's own `graphqlDir`.
|
|
26
|
+
*/
|
|
27
|
+
interface ReplayResult {
|
|
28
|
+
sourceCapture: string;
|
|
29
|
+
url: string;
|
|
30
|
+
method: string;
|
|
31
|
+
operationName: string | null;
|
|
32
|
+
requestBody: string | null;
|
|
33
|
+
replayStatus: number | null;
|
|
34
|
+
replayHeaders: Record<string, string>;
|
|
35
|
+
replayBody: unknown;
|
|
36
|
+
success: boolean;
|
|
37
|
+
error: string | null;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Builds the rate-limit probe's target set from replay results. Applies
|
|
41
|
+
* `isNoiseUrl` directly rather than trusting that `replays` was pre-filtered
|
|
42
|
+
* upstream — the probe fires 60 requests per target, so a noise host reaching
|
|
43
|
+
* this function must never silently slip through on a caller's say-so.
|
|
20
44
|
*/
|
|
45
|
+
export declare function selectRateLimitTargets(replays: ReplayResult[]): {
|
|
46
|
+
targets: Map<string, {
|
|
47
|
+
method: string;
|
|
48
|
+
body: string | null;
|
|
49
|
+
}>;
|
|
50
|
+
skipped: number;
|
|
51
|
+
};
|
|
21
52
|
export {};
|
|
22
53
|
//# sourceMappingURL=recon-http.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recon-http.d.ts","sourceRoot":"","sources":["../../src/scripts/recon-http.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"recon-http.d.ts","sourceRoot":"","sources":["../../src/scripts/recon-http.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAuCH,UAAU,YAAY;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAgTD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG;IAC/D,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IAC9D,OAAO,EAAE,MAAM,CAAC;CACjB,CA4BA"}
|
|
@@ -12,24 +12,30 @@
|
|
|
12
12
|
* - Rate-limit probe (1 → 3 → 5 rps, stops at first 429/403)
|
|
13
13
|
*
|
|
14
14
|
* Usage:
|
|
15
|
-
* pnpm tsx src/scripts/recon-http.ts [--captures-dir
|
|
15
|
+
* pnpm tsx src/scripts/recon-http.ts [--captures-dir <path>] [--out-dir <path>]
|
|
16
16
|
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
17
|
+
* Output lands under the run-scoped root resolved by `resolveReconRunDir()`
|
|
18
|
+
* (`@/scripts/recon-shared`) — `/tmp/recon/<runId>/` by default, rooted
|
|
19
|
+
* elsewhere via `--out-dir <path>` / `RECON_OUT_DIR`:
|
|
20
|
+
* replays/<filename>.json — one replay result per unique capture
|
|
21
|
+
* aux/<basename>.json — downloaded static fixture per auxiliary endpoint
|
|
22
|
+
* replays/rate-limit.json — rate-limit probe findings
|
|
23
|
+
*
|
|
24
|
+
* `--captures-dir` overrides only the *read* path for captures (e.g. to
|
|
25
|
+
* replay a prior run's captures into a fresh output root) and defaults to
|
|
26
|
+
* this run's own `graphqlDir`.
|
|
21
27
|
*/
|
|
22
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.selectRateLimitTargets = selectRateLimitTargets;
|
|
23
30
|
const node_fs_1 = require("node:fs");
|
|
24
31
|
const node_path_1 = require("node:path");
|
|
25
32
|
const errors_1 = require("../lib/errors");
|
|
26
33
|
const http_1 = require("../lib/http");
|
|
27
34
|
const logging_1 = require("../lib/logging");
|
|
28
35
|
const capture_filters_1 = require("../recon/capture-filters");
|
|
36
|
+
const recon_shared_1 = require("../scripts/recon-shared");
|
|
29
37
|
(0, http_1.configureHttpDispatcher)();
|
|
30
38
|
const logger = (0, logging_1.getScriptLogger)("recon-http");
|
|
31
|
-
const CAPTURES_DIR = "/tmp/recon/graphql";
|
|
32
|
-
const REPLAYS_DIR = "/tmp/recon/replays";
|
|
33
39
|
/** Load-bearing headers — minimal set that proves the endpoint works standalone. */
|
|
34
40
|
const RC_HEADERS = {
|
|
35
41
|
"Content-Type": "application/json",
|
|
@@ -150,7 +156,7 @@ async function replayCapture(filename, capture) {
|
|
|
150
156
|
};
|
|
151
157
|
}
|
|
152
158
|
}
|
|
153
|
-
async function probeIntrospection(endpoint) {
|
|
159
|
+
async function probeIntrospection(endpoint, replaysDir) {
|
|
154
160
|
logger.info(`introspection probe: ${endpoint}`);
|
|
155
161
|
const origin = new URL(endpoint).origin;
|
|
156
162
|
const headers = {
|
|
@@ -167,7 +173,7 @@ async function probeIntrospection(endpoint) {
|
|
|
167
173
|
const body = (await response.json());
|
|
168
174
|
if (body.data) {
|
|
169
175
|
logger.info(" → introspection ENABLED — full schema available");
|
|
170
|
-
(0, node_fs_1.writeFileSync)((0, node_path_1.join)(
|
|
176
|
+
(0, node_fs_1.writeFileSync)((0, node_path_1.join)(replaysDir, "introspection-schema.json"), JSON.stringify(body, null, 2));
|
|
171
177
|
}
|
|
172
178
|
else {
|
|
173
179
|
logger.info(" → introspection DISABLED — write Zod schemas by hand from captured JSON");
|
|
@@ -177,15 +183,14 @@ async function probeIntrospection(endpoint) {
|
|
|
177
183
|
logger.error(` → introspection error: ${(0, errors_1.toErrorMessage)(err)}`);
|
|
178
184
|
}
|
|
179
185
|
}
|
|
180
|
-
const AUX_DIR = "/tmp/recon/aux";
|
|
181
186
|
/**
|
|
182
187
|
* Finds static JSON endpoints in successful replays (markets, currencies,
|
|
183
188
|
* labels, dictionaries, config) and downloads them as committed fixtures.
|
|
184
189
|
* These rarely change and are cheaper to serve from a snapshot than to
|
|
185
190
|
* re-fetch on every production call.
|
|
186
191
|
*/
|
|
187
|
-
async function probeAuxiliaryEndpoints(replays) {
|
|
188
|
-
(0, node_fs_1.mkdirSync)(
|
|
192
|
+
async function probeAuxiliaryEndpoints(replays, auxDir) {
|
|
193
|
+
(0, node_fs_1.mkdirSync)(auxDir, { recursive: true });
|
|
189
194
|
const writtenInRun = new Set();
|
|
190
195
|
const candidates = replays.filter((r) => {
|
|
191
196
|
if (!r.success || r.operationName !== null)
|
|
@@ -221,9 +226,9 @@ async function probeAuxiliaryEndpoints(replays) {
|
|
|
221
226
|
const rawBase = parsed.pathname.split("/").pop() ?? "aux";
|
|
222
227
|
const base = rawBase.endsWith(".json") ? rawBase : `${rawBase}.json`;
|
|
223
228
|
const filename = writtenInRun.has(base) ? `${parsed.hostname}-${base}` : base;
|
|
224
|
-
(0, node_fs_1.writeFileSync)((0, node_path_1.join)(
|
|
229
|
+
(0, node_fs_1.writeFileSync)((0, node_path_1.join)(auxDir, filename), JSON.stringify(body, null, 2));
|
|
225
230
|
writtenInRun.add(base);
|
|
226
|
-
logger.info(`[fixture] ${candidate.url} → ${
|
|
231
|
+
logger.info(`[fixture] ${candidate.url} → ${auxDir}/${filename} — commit as static fixture`);
|
|
227
232
|
}
|
|
228
233
|
catch (err) {
|
|
229
234
|
logger.error(`[aux err] ${candidate.url}: ${(0, errors_1.toErrorMessage)(err)}`);
|
|
@@ -300,14 +305,55 @@ async function probeRateLimit(endpoint, method, body) {
|
|
|
300
305
|
}
|
|
301
306
|
return finding;
|
|
302
307
|
}
|
|
308
|
+
/**
|
|
309
|
+
* Builds the rate-limit probe's target set from replay results. Applies
|
|
310
|
+
* `isNoiseUrl` directly rather than trusting that `replays` was pre-filtered
|
|
311
|
+
* upstream — the probe fires 60 requests per target, so a noise host reaching
|
|
312
|
+
* this function must never silently slip through on a caller's say-so.
|
|
313
|
+
*/
|
|
314
|
+
function selectRateLimitTargets(replays) {
|
|
315
|
+
const targets = new Map();
|
|
316
|
+
let skipped = 0;
|
|
317
|
+
for (const replay of replays) {
|
|
318
|
+
if (!replay.success)
|
|
319
|
+
continue;
|
|
320
|
+
if ((0, capture_filters_1.isNoiseUrl)(replay.url)) {
|
|
321
|
+
skipped++;
|
|
322
|
+
continue;
|
|
323
|
+
}
|
|
324
|
+
try {
|
|
325
|
+
const u = new URL(replay.url);
|
|
326
|
+
if (u.protocol !== "http:" && u.protocol !== "https:")
|
|
327
|
+
continue;
|
|
328
|
+
const pathname = u.pathname.toLowerCase();
|
|
329
|
+
// Skip static fixture endpoints — probing them 60+ times could ban the CDN egress IP
|
|
330
|
+
if (pathname.endsWith(".json") ||
|
|
331
|
+
/\/(markets|currencies|labels|dictionaries|config|locales|i18n)/.test(pathname))
|
|
332
|
+
continue;
|
|
333
|
+
const key = `${u.origin}${u.pathname}`;
|
|
334
|
+
if (!targets.has(key)) {
|
|
335
|
+
targets.set(key, { method: replay.method, body: replay.requestBody });
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
catch {
|
|
339
|
+
// skip unparseable urls
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
return { targets, skipped };
|
|
343
|
+
}
|
|
303
344
|
async function main() {
|
|
304
345
|
const args = process.argv.slice(2);
|
|
305
|
-
let
|
|
346
|
+
for (let i = 0; i < args.length; i++) {
|
|
347
|
+
if (args[i] === "--out-dir" && args[i + 1])
|
|
348
|
+
process.env.RECON_OUT_DIR = args[++i];
|
|
349
|
+
}
|
|
350
|
+
const runDir = (0, recon_shared_1.resolveReconRunDir)();
|
|
351
|
+
let capturesDir = runDir.graphqlDir;
|
|
306
352
|
for (let i = 0; i < args.length; i++) {
|
|
307
353
|
if (args[i] === "--captures-dir" && args[i + 1])
|
|
308
354
|
capturesDir = args[++i];
|
|
309
355
|
}
|
|
310
|
-
(0, node_fs_1.mkdirSync)(
|
|
356
|
+
(0, node_fs_1.mkdirSync)(runDir.replaysDir, { recursive: true });
|
|
311
357
|
logger.info("=== PHASE 2: HTTP REPLAY ===");
|
|
312
358
|
const all = loadCaptures(capturesDir);
|
|
313
359
|
const unique = deduplicateCaptures(all);
|
|
@@ -324,7 +370,7 @@ async function main() {
|
|
|
324
370
|
for (const { filename, capture } of probeworthy) {
|
|
325
371
|
const result = await replayCapture(filename, capture);
|
|
326
372
|
replays.push(result);
|
|
327
|
-
(0, node_fs_1.writeFileSync)((0, node_path_1.join)(
|
|
373
|
+
(0, node_fs_1.writeFileSync)((0, node_path_1.join)(runDir.replaysDir, filename), JSON.stringify(result, null, 2));
|
|
328
374
|
}
|
|
329
375
|
const passed = replays.filter((r) => r.success).length;
|
|
330
376
|
logger.info(`replay complete: ${passed}/${replays.length} passed`);
|
|
@@ -345,45 +391,29 @@ async function main() {
|
|
|
345
391
|
logger.info("no GraphQL endpoints found in captures");
|
|
346
392
|
}
|
|
347
393
|
for (const endpoint of graphqlEndpoints) {
|
|
348
|
-
await probeIntrospection(endpoint);
|
|
394
|
+
await probeIntrospection(endpoint, runDir.replaysDir);
|
|
349
395
|
}
|
|
350
396
|
// Auxiliary endpoint probe
|
|
351
397
|
logger.info("=== PHASE 3B: AUXILIARY ENDPOINTS ===");
|
|
352
|
-
await probeAuxiliaryEndpoints(replays);
|
|
398
|
+
await probeAuxiliaryEndpoints(replays, runDir.auxDir);
|
|
353
399
|
// Rate-limit probe — runs last
|
|
354
400
|
logger.info("=== PHASE 3C: RATE-LIMIT PROBE (runs last — may trigger ban) ===");
|
|
355
|
-
const probeTargets =
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
continue;
|
|
359
|
-
try {
|
|
360
|
-
const u = new URL(replay.url);
|
|
361
|
-
if (u.protocol !== "http:" && u.protocol !== "https:")
|
|
362
|
-
continue;
|
|
363
|
-
const pathname = u.pathname.toLowerCase();
|
|
364
|
-
// Skip static fixture endpoints — probing them 60+ times could ban the CDN egress IP
|
|
365
|
-
if (pathname.endsWith(".json") ||
|
|
366
|
-
/\/(markets|currencies|labels|dictionaries|config|locales|i18n)/.test(pathname))
|
|
367
|
-
continue;
|
|
368
|
-
const key = `${u.origin}${u.pathname}`;
|
|
369
|
-
if (!probeTargets.has(key)) {
|
|
370
|
-
probeTargets.set(key, { method: replay.method, body: replay.requestBody });
|
|
371
|
-
}
|
|
372
|
-
}
|
|
373
|
-
catch {
|
|
374
|
-
// skip unparseable urls
|
|
375
|
-
}
|
|
376
|
-
}
|
|
401
|
+
const { targets: probeTargets, skipped: skippedAsNoise } = selectRateLimitTargets(replays);
|
|
402
|
+
logger.info(`rate-limit targets: ${probeTargets.size}` +
|
|
403
|
+
(skippedAsNoise > 0 ? ` (${skippedAsNoise} skipped as noise)` : ""));
|
|
377
404
|
const rateLimitFindings = [];
|
|
378
405
|
for (const [endpoint, { method, body }] of probeTargets) {
|
|
379
406
|
const finding = await probeRateLimit(endpoint, method, body);
|
|
380
407
|
rateLimitFindings.push(finding);
|
|
381
408
|
}
|
|
382
|
-
(0, node_fs_1.writeFileSync)((0, node_path_1.join)(
|
|
383
|
-
logger.info(`recon-http complete — replays in ${
|
|
409
|
+
(0, node_fs_1.writeFileSync)((0, node_path_1.join)(runDir.replaysDir, "rate-limit.json"), JSON.stringify(rateLimitFindings, null, 2));
|
|
410
|
+
logger.info(`recon-http complete — replays in ${runDir.replaysDir}`);
|
|
411
|
+
}
|
|
412
|
+
if (process.argv[1] !== undefined &&
|
|
413
|
+
(process.argv[1].endsWith("recon-http.ts") || process.argv[1].endsWith("recon-http.js"))) {
|
|
414
|
+
main().catch((err) => {
|
|
415
|
+
logger.error(`recon-http failed: ${(0, errors_1.toErrorMessage)(err)}`);
|
|
416
|
+
process.exit(1);
|
|
417
|
+
});
|
|
384
418
|
}
|
|
385
|
-
main().catch((err) => {
|
|
386
|
-
logger.error(`recon-http failed: ${(0, errors_1.toErrorMessage)(err)}`);
|
|
387
|
-
process.exit(1);
|
|
388
|
-
});
|
|
389
419
|
//# sourceMappingURL=recon-http.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recon-http.js","sourceRoot":"","sources":["../../src/scripts/recon-http.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"recon-http.js","sourceRoot":"","sources":["../../src/scripts/recon-http.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,5 +17,29 @@
|
|
|
17
17
|
* --flow-file src/sites/appcast/recon-flow.json \
|
|
18
18
|
* --report /tmp/recon/replay-report.json
|
|
19
19
|
*/
|
|
20
|
-
|
|
20
|
+
/**
|
|
21
|
+
* Spawns recon-browser as a child process with RECON_EMAIL and RECON_RUN_ID
|
|
22
|
+
* pre-bound in the child's env. The flow-file's `${RECON_EMAIL}` token
|
|
23
|
+
* resolves to this address via the engine's existing substituteFlowEnvVars
|
|
24
|
+
* step. Pinning RECON_RUN_ID forces the child's own resolveReconRunDir()
|
|
25
|
+
* call to reuse the parent's run root instead of minting its own — without
|
|
26
|
+
* this, the parent and child disagree on where captures land and the
|
|
27
|
+
* before/after capture diff always sees an empty directory.
|
|
28
|
+
*/
|
|
29
|
+
export declare function runReconForJob(url: string, flowFile: string, email: string, runId: string, graphqlDir: string): Promise<{
|
|
30
|
+
exitCode: number | null;
|
|
31
|
+
capturesBefore: Set<string>;
|
|
32
|
+
billingError: boolean;
|
|
33
|
+
}>;
|
|
34
|
+
/**
|
|
35
|
+
* Scans the recon's graphql capture directory for files written during
|
|
36
|
+
* this job's run, returning whether the AppCast integrated_apply
|
|
37
|
+
* endpoint captured a 200 and the SPA's terminal URL.
|
|
38
|
+
*/
|
|
39
|
+
export declare function readJobOutcome(capturesBefore: Set<string>, graphqlDir: string): {
|
|
40
|
+
integratedApply200: boolean;
|
|
41
|
+
serverRejected: boolean;
|
|
42
|
+
serverRejectionReason: string | null;
|
|
43
|
+
terminalUrl: string | null;
|
|
44
|
+
};
|
|
21
45
|
//# sourceMappingURL=recon-replay-jobs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recon-replay-jobs.d.ts","sourceRoot":"","sources":["../../src/scripts/recon-replay-jobs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG"}
|
|
1
|
+
{"version":3,"file":"recon-replay-jobs.d.ts","sourceRoot":"","sources":["../../src/scripts/recon-replay-jobs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAmEH;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAAC,YAAY,EAAE,OAAO,CAAA;CAAE,CAAC,CAmE1F;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,EAC3B,UAAU,EAAE,MAAM,GACjB;IACD,kBAAkB,EAAE,OAAO,CAAC;IAC5B,cAAc,EAAE,OAAO,CAAC;IACxB,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,CAgDA"}
|
|
@@ -19,19 +19,22 @@
|
|
|
19
19
|
* --report /tmp/recon/replay-report.json
|
|
20
20
|
*/
|
|
21
21
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.runReconForJob = runReconForJob;
|
|
23
|
+
exports.readJobOutcome = readJobOutcome;
|
|
22
24
|
const node_child_process_1 = require("node:child_process");
|
|
23
25
|
const node_fs_1 = require("node:fs");
|
|
24
26
|
const node_path_1 = require("node:path");
|
|
25
27
|
const promises_1 = require("node:timers/promises");
|
|
26
28
|
const logging_1 = require("../lib/logging");
|
|
27
29
|
const recon_browser_1 = require("../scripts/recon-browser");
|
|
30
|
+
const recon_shared_1 = require("../scripts/recon-shared");
|
|
28
31
|
const client_1 = require("../testmail/client");
|
|
29
32
|
const logger = (0, logging_1.getScriptLogger)("recon-replay-jobs");
|
|
30
|
-
function parseArgs() {
|
|
33
|
+
function parseArgs(runDirRoot) {
|
|
31
34
|
const args = process.argv.slice(2);
|
|
32
35
|
let jobsPath = null;
|
|
33
36
|
let flowFile = null;
|
|
34
|
-
let reportPath = "
|
|
37
|
+
let reportPath = (0, node_path_1.join)(runDirRoot, "replay-report.json");
|
|
35
38
|
for (let i = 0; i < args.length; i++) {
|
|
36
39
|
if (args[i] === "--jobs" && args[i + 1])
|
|
37
40
|
jobsPath = (0, node_path_1.resolve)(args[++i]);
|
|
@@ -47,14 +50,17 @@ function parseArgs() {
|
|
|
47
50
|
return { jobsPath, flowFile, reportPath };
|
|
48
51
|
}
|
|
49
52
|
/**
|
|
50
|
-
* Spawns recon-browser as a child process with RECON_EMAIL
|
|
51
|
-
* the child's env. The flow-file's `${RECON_EMAIL}` token
|
|
52
|
-
* this address via the engine's existing substituteFlowEnvVars
|
|
53
|
+
* Spawns recon-browser as a child process with RECON_EMAIL and RECON_RUN_ID
|
|
54
|
+
* pre-bound in the child's env. The flow-file's `${RECON_EMAIL}` token
|
|
55
|
+
* resolves to this address via the engine's existing substituteFlowEnvVars
|
|
56
|
+
* step. Pinning RECON_RUN_ID forces the child's own resolveReconRunDir()
|
|
57
|
+
* call to reuse the parent's run root instead of minting its own — without
|
|
58
|
+
* this, the parent and child disagree on where captures land and the
|
|
59
|
+
* before/after capture diff always sees an empty directory.
|
|
53
60
|
*/
|
|
54
|
-
async function runReconForJob(url, flowFile, email) {
|
|
55
|
-
|
|
56
|
-
(0, node_fs_1.
|
|
57
|
-
const capturesBefore = new Set((0, node_fs_1.readdirSync)(capturesDir));
|
|
61
|
+
async function runReconForJob(url, flowFile, email, runId, graphqlDir) {
|
|
62
|
+
(0, node_fs_1.mkdirSync)(graphqlDir, { recursive: true });
|
|
63
|
+
const capturesBefore = new Set((0, node_fs_1.readdirSync)(graphqlDir));
|
|
58
64
|
// Flow-file ENOENT retry. If the flow file is transiently unreadable
|
|
59
65
|
// (git stash mid-sweep, file system race), wait briefly and retry up
|
|
60
66
|
// to 3 times before giving up. Covers the 2026-06-09 sweep where
|
|
@@ -90,7 +96,7 @@ async function runReconForJob(url, flowFile, email) {
|
|
|
90
96
|
"--advanced-stealth",
|
|
91
97
|
], {
|
|
92
98
|
stdio: ["inherit", "pipe", "pipe"],
|
|
93
|
-
env: { ...process.env, RECON_EMAIL: email },
|
|
99
|
+
env: { ...process.env, RECON_EMAIL: email, RECON_RUN_ID: runId },
|
|
94
100
|
});
|
|
95
101
|
const scan = (chunk, sink) => {
|
|
96
102
|
sink.write(chunk);
|
|
@@ -113,9 +119,8 @@ async function runReconForJob(url, flowFile, email) {
|
|
|
113
119
|
* this job's run, returning whether the AppCast integrated_apply
|
|
114
120
|
* endpoint captured a 200 and the SPA's terminal URL.
|
|
115
121
|
*/
|
|
116
|
-
function readJobOutcome(capturesBefore) {
|
|
117
|
-
const
|
|
118
|
-
const after = (0, node_fs_1.readdirSync)(capturesDir);
|
|
122
|
+
function readJobOutcome(capturesBefore, graphqlDir) {
|
|
123
|
+
const after = (0, node_fs_1.readdirSync)(graphqlDir);
|
|
119
124
|
const newCaptures = after.filter((f) => !capturesBefore.has(f));
|
|
120
125
|
let integratedApply200 = false;
|
|
121
126
|
let serverRejected = false;
|
|
@@ -123,7 +128,7 @@ function readJobOutcome(capturesBefore) {
|
|
|
123
128
|
let terminalUrl = null;
|
|
124
129
|
for (const f of newCaptures) {
|
|
125
130
|
try {
|
|
126
|
-
const data = JSON.parse((0, node_fs_1.readFileSync)((0, node_path_1.resolve)(
|
|
131
|
+
const data = JSON.parse((0, node_fs_1.readFileSync)((0, node_path_1.resolve)(graphqlDir, f), "utf8"));
|
|
127
132
|
if (typeof data.url === "string" &&
|
|
128
133
|
/\/api\/jobs\/\d+\/(integrated_apply|apply)(\?|$)/.test(data.url) &&
|
|
129
134
|
data.status === 200) {
|
|
@@ -159,17 +164,18 @@ function readJobOutcome(capturesBefore) {
|
|
|
159
164
|
return { integratedApply200, serverRejected, serverRejectionReason, terminalUrl };
|
|
160
165
|
}
|
|
161
166
|
async function main() {
|
|
162
|
-
const
|
|
167
|
+
const runDir = (0, recon_shared_1.resolveReconRunDir)();
|
|
168
|
+
const { jobsPath, flowFile, reportPath } = parseArgs(runDir.root);
|
|
163
169
|
const jobs = JSON.parse((0, node_fs_1.readFileSync)(jobsPath, "utf8"));
|
|
164
|
-
logger.info(`replay: ${jobs.length} jobs from ${jobsPath}, flow=${flowFile}`);
|
|
170
|
+
logger.info(`replay: ${jobs.length} jobs from ${jobsPath}, flow=${flowFile}, runId=${runDir.runId}`);
|
|
165
171
|
const verdicts = [];
|
|
166
172
|
for (let i = 0; i < jobs.length; i++) {
|
|
167
173
|
const job = jobs[i];
|
|
168
174
|
const inbox = (0, client_1.allocateTestmailInbox)();
|
|
169
175
|
const start = Date.now();
|
|
170
176
|
logger.info(`[${i + 1}/${jobs.length}] jobId=${job.jobId} inbox=${inbox.address}`);
|
|
171
|
-
const { exitCode, capturesBefore, billingError } = await runReconForJob(job.resolvedUrl, flowFile, inbox.address);
|
|
172
|
-
const { integratedApply200, serverRejected, serverRejectionReason, terminalUrl } = readJobOutcome(capturesBefore);
|
|
177
|
+
const { exitCode, capturesBefore, billingError } = await runReconForJob(job.resolvedUrl, flowFile, inbox.address, runDir.runId, runDir.graphqlDir);
|
|
178
|
+
const { integratedApply200, serverRejected, serverRejectionReason, terminalUrl } = readJobOutcome(capturesBefore, runDir.graphqlDir);
|
|
173
179
|
let emailReceived = false;
|
|
174
180
|
let emailSubject = null;
|
|
175
181
|
try {
|
|
@@ -191,7 +197,7 @@ async function main() {
|
|
|
191
197
|
terminalUrl,
|
|
192
198
|
emailReceived,
|
|
193
199
|
emailSubject,
|
|
194
|
-
capturesDir:
|
|
200
|
+
capturesDir: runDir.graphqlDir,
|
|
195
201
|
durationMs: Date.now() - start,
|
|
196
202
|
};
|
|
197
203
|
verdicts.push(verdict);
|
|
@@ -214,8 +220,12 @@ async function main() {
|
|
|
214
220
|
logger.info(`replay complete: ${httpAccepted}/${verdicts.length} accepted (HTTP 200 + no rejection envelope); ${httpRejected} rejected by ATS qualification filter; ${httpAcceptedWithEmail} also received confirmation email`);
|
|
215
221
|
logger.info(`report: ${reportPath}`);
|
|
216
222
|
}
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
223
|
+
if (process.argv[1] !== undefined &&
|
|
224
|
+
(process.argv[1].endsWith("recon-replay-jobs.ts") ||
|
|
225
|
+
process.argv[1].endsWith("recon-replay-jobs.js"))) {
|
|
226
|
+
main().catch((err) => {
|
|
227
|
+
logger.error(`replay failed: ${err.stack ?? String(err)}`);
|
|
228
|
+
process.exit(1);
|
|
229
|
+
});
|
|
230
|
+
}
|
|
221
231
|
//# sourceMappingURL=recon-replay-jobs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recon-replay-jobs.js","sourceRoot":"","sources":["../../src/scripts/recon-replay-jobs.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG
|
|
1
|
+
{"version":3,"file":"recon-replay-jobs.js","sourceRoot":"","sources":["../../src/scripts/recon-replay-jobs.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,11 +3,46 @@
|
|
|
3
3
|
* Extracted so recon-summarize.ts and recon-generate.ts stay consistent
|
|
4
4
|
* without duplicating the core data model or header-tally logic.
|
|
5
5
|
*/
|
|
6
|
+
/**
|
|
7
|
+
* Legacy process-global paths, kept exported for back-compat since
|
|
8
|
+
* `recon-shared` is a published package subpath. New callers should use
|
|
9
|
+
* {@link resolveReconRunDir} instead — these do not get per-run namespacing.
|
|
10
|
+
*/
|
|
6
11
|
export declare const CAPTURES_DIR = "/tmp/recon/graphql";
|
|
7
12
|
export declare const REPLAYS_DIR = "/tmp/recon/replays";
|
|
8
13
|
export declare const AUX_DIR = "/tmp/recon/aux";
|
|
9
14
|
export declare const STEP_FAILURES_DIR = "/tmp/recon/step-failures";
|
|
10
15
|
export declare const COOKIES_DIR = "/tmp/recon/cookies";
|
|
16
|
+
export interface ReconRunDir {
|
|
17
|
+
runId: string;
|
|
18
|
+
root: string;
|
|
19
|
+
graphqlDir: string;
|
|
20
|
+
cookiesDir: string;
|
|
21
|
+
replaysDir: string;
|
|
22
|
+
auxDir: string;
|
|
23
|
+
stepFailuresDir: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Resolves (and creates) the run-scoped root directory recon scripts should
|
|
27
|
+
* write output under, namespacing every run so concurrent or repeated runs
|
|
28
|
+
* stop silently colliding in a shared `/tmp/recon` tree. Memoized per
|
|
29
|
+
* process so a run's counter-based filenames stay in one namespace across
|
|
30
|
+
* every call site.
|
|
31
|
+
*
|
|
32
|
+
* `RECON_RUN_ID` pins a deterministic runId (e.g. for tests or replays of a
|
|
33
|
+
* known run); `RECON_OUT_DIR` overrides the base directory runs are rooted
|
|
34
|
+
* under (default `/tmp/recon`).
|
|
35
|
+
*/
|
|
36
|
+
export declare function resolveReconRunDir(): ReconRunDir;
|
|
37
|
+
/**
|
|
38
|
+
* Resolves the run root a reader (recon-generate, recon-summarize) should
|
|
39
|
+
* read from: an explicit `runDir` wins, `RECON_RUN_ID` pins a specific run
|
|
40
|
+
* under the base dir, and otherwise this picks the most recently modified
|
|
41
|
+
* run subdirectory — the run root recon-browser/recon-http just wrote to —
|
|
42
|
+
* so the existing "recon, then generate" two-command workflow keeps working
|
|
43
|
+
* without operators passing a run dir by hand.
|
|
44
|
+
*/
|
|
45
|
+
export declare function resolveLatestReconRunRoot(runDir?: string): string;
|
|
11
46
|
export interface Capture {
|
|
12
47
|
timestamp: string;
|
|
13
48
|
phase: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recon-shared.d.ts","sourceRoot":"","sources":["../../src/scripts/recon-shared.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"recon-shared.d.ts","sourceRoot":"","sources":["../../src/scripts/recon-shared.ts"],"names":[],"mappings":"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"}
|