@enricai/barnacle 1.6.13 → 1.7.0
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 +3 -5
- package/dist/api/schemas/submissions.d.ts +8 -8
- package/dist/lib/bedrock.d.ts +10 -7
- package/dist/lib/bedrock.d.ts.map +1 -1
- package/dist/lib/bedrock.js +8 -5
- package/dist/lib/bedrock.js.map +1 -1
- package/dist/lib/http.d.ts +4 -3
- package/dist/lib/http.d.ts.map +1 -1
- package/dist/lib/http.js +25 -3
- package/dist/lib/http.js.map +1 -1
- package/dist/lib/llm/anthropic-client.d.ts +12 -0
- package/dist/lib/llm/anthropic-client.d.ts.map +1 -1
- package/dist/lib/llm/anthropic-client.js +25 -0
- package/dist/lib/llm/anthropic-client.js.map +1 -1
- package/dist/lib/telemetry/beacon-capture.d.ts +4 -3
- package/dist/lib/telemetry/beacon-capture.d.ts.map +1 -1
- package/dist/lib/telemetry/beacon-capture.js.map +1 -1
- package/dist/lib/telemetry/reconciliation-record.d.ts +15 -33
- package/dist/lib/telemetry/reconciliation-record.d.ts.map +1 -1
- package/dist/lib/telemetry/reconciliation-record.js +11 -49
- package/dist/lib/telemetry/reconciliation-record.js.map +1 -1
- package/dist/lib/telemetry/submission-capture.d.ts +8 -13
- package/dist/lib/telemetry/submission-capture.d.ts.map +1 -1
- package/dist/lib/telemetry/submission-capture.js +2 -4
- package/dist/lib/telemetry/submission-capture.js.map +1 -1
- package/dist/lib/telemetry/submission-reader.d.ts +3 -4
- package/dist/lib/telemetry/submission-reader.d.ts.map +1 -1
- package/dist/lib/telemetry/submission-reader.js +3 -4
- package/dist/lib/telemetry/submission-reader.js.map +1 -1
- package/dist/plugins/config-plugin.d.ts.map +1 -1
- package/dist/plugins/config-plugin.js +25 -3
- package/dist/plugins/config-plugin.js.map +1 -1
- package/dist/plugins/loader.d.ts +0 -7
- package/dist/plugins/loader.d.ts.map +1 -1
- package/dist/plugins/loader.js +0 -9
- package/dist/plugins/loader.js.map +1 -1
- package/dist/scraper/deep-locator-actuate.d.ts +24 -19
- package/dist/scraper/deep-locator-actuate.d.ts.map +1 -1
- package/dist/scraper/deep-locator-actuate.js +68 -23
- package/dist/scraper/deep-locator-actuate.js.map +1 -1
- package/dist/scraper/deep-locator-scan.d.ts +20 -0
- package/dist/scraper/deep-locator-scan.d.ts.map +1 -1
- package/dist/scraper/deep-locator-scan.js +25 -0
- package/dist/scraper/deep-locator-scan.js.map +1 -1
- package/dist/scraper/flow-runner.d.ts +86 -14
- package/dist/scraper/flow-runner.d.ts.map +1 -1
- package/dist/scraper/flow-runner.js +233 -87
- package/dist/scraper/flow-runner.js.map +1 -1
- package/dist/scripts/recon-browser.d.ts +6 -5
- package/dist/scripts/recon-browser.d.ts.map +1 -1
- package/dist/scripts/recon-browser.js +24 -21
- package/dist/scripts/recon-browser.js.map +1 -1
- package/dist/scripts/recon-generate.d.ts +2 -2
- package/dist/scripts/recon-generate.d.ts.map +1 -1
- package/dist/scripts/recon-generate.js +21 -88
- package/dist/scripts/recon-generate.js.map +1 -1
- package/dist/scripts/recon-shared.d.ts +0 -10
- package/dist/scripts/recon-shared.d.ts.map +1 -1
- package/dist/scripts/recon-shared.js +0 -11
- package/dist/scripts/recon-shared.js.map +1 -1
- package/dist/site-plugin.d.ts +3 -3
- package/dist/testing/coverage-guard-suite.d.mts +7 -7
- package/dist/testing/coverage-guard-suite.mjs +5 -5
- package/package.json +5 -2
- package/dist/scripts/migrate-telemetry-dir-names.d.ts +0 -57
- package/dist/scripts/migrate-telemetry-dir-names.d.ts.map +0 -1
- package/dist/scripts/migrate-telemetry-dir-names.js +0 -156
- package/dist/scripts/migrate-telemetry-dir-names.js.map +0 -1
|
@@ -3,16 +3,6 @@
|
|
|
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
|
-
*/
|
|
11
|
-
export declare const CAPTURES_DIR = "/tmp/recon/graphql";
|
|
12
|
-
export declare const REPLAYS_DIR = "/tmp/recon/replays";
|
|
13
|
-
export declare const AUX_DIR = "/tmp/recon/aux";
|
|
14
|
-
export declare const STEP_FAILURES_DIR = "/tmp/recon/step-failures";
|
|
15
|
-
export declare const COOKIES_DIR = "/tmp/recon/cookies";
|
|
16
6
|
export interface ReconRunDir {
|
|
17
7
|
runId: string;
|
|
18
8
|
root: 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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"}
|
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
* without duplicating the core data model or header-tally logic.
|
|
6
6
|
*/
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.COOKIES_DIR = exports.STEP_FAILURES_DIR = exports.AUX_DIR = exports.REPLAYS_DIR = exports.CAPTURES_DIR = void 0;
|
|
9
8
|
exports.resolveReconRunDir = resolveReconRunDir;
|
|
10
9
|
exports.resolveLatestReconRunRoot = resolveLatestReconRunRoot;
|
|
11
10
|
exports.readJsonDir = readJsonDir;
|
|
@@ -17,16 +16,6 @@ const node_path_1 = require("node:path");
|
|
|
17
16
|
const date_fns_1 = require("date-fns");
|
|
18
17
|
const logging_1 = require("../lib/logging");
|
|
19
18
|
const logger = (0, logging_1.getScriptLogger)("recon-shared");
|
|
20
|
-
/**
|
|
21
|
-
* Legacy process-global paths, kept exported for back-compat since
|
|
22
|
-
* `recon-shared` is a published package subpath. New callers should use
|
|
23
|
-
* {@link resolveReconRunDir} instead — these do not get per-run namespacing.
|
|
24
|
-
*/
|
|
25
|
-
exports.CAPTURES_DIR = "/tmp/recon/graphql";
|
|
26
|
-
exports.REPLAYS_DIR = "/tmp/recon/replays";
|
|
27
|
-
exports.AUX_DIR = "/tmp/recon/aux";
|
|
28
|
-
exports.STEP_FAILURES_DIR = "/tmp/recon/step-failures";
|
|
29
|
-
exports.COOKIES_DIR = "/tmp/recon/cookies";
|
|
30
19
|
/** Subdirectory names created under every resolved recon run root. */
|
|
31
20
|
const RUN_SUBDIRS = ["graphql", "cookies", "replays", "aux", "step-failures"];
|
|
32
21
|
/** Memoized so repeated calls within one process share a single run root and runId. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recon-shared.js","sourceRoot":"","sources":["../../src/scripts/recon-shared.ts"],"names":[],"mappings":";AAAA;;;;GAIG
|
|
1
|
+
{"version":3,"file":"recon-shared.js","sourceRoot":"","sources":["../../src/scripts/recon-shared.ts"],"names":[],"mappings":"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"}
|
package/dist/site-plugin.d.ts
CHANGED
|
@@ -229,9 +229,9 @@ export interface SitePluginResult<TData = Record<string, unknown>> {
|
|
|
229
229
|
}
|
|
230
230
|
/**
|
|
231
231
|
* Contract every site plugin must satisfy. Core's dispatch layer types its
|
|
232
|
-
* `
|
|
233
|
-
* adding a new site never requires changes to core — only a new
|
|
234
|
-
* `src/sites/<id>/`.
|
|
232
|
+
* `BUILTIN_SITE_PLUGINS` registry and `dispatch()` function against this
|
|
233
|
+
* interface so adding a new site never requires changes to core — only a new
|
|
234
|
+
* file in `src/sites/<id>/`.
|
|
235
235
|
*/
|
|
236
236
|
export interface SitePlugin<TPayload = unknown, TResult = Record<string, unknown>> {
|
|
237
237
|
/** Static metadata used by the loader to register this plugin's Fastify route. */
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Provides a registry-driven structural coverage guard for site plugins.
|
|
3
|
-
* Mirrors the registry-first design of the loader: iterates
|
|
4
|
-
* caller-supplied stub) and asserts that each registered plugin has its
|
|
5
|
-
* co-located test file — without hardcoding any site name. Safe to run
|
|
6
|
-
* where
|
|
7
|
-
* populate the registry gain coverage automatically.
|
|
3
|
+
* Mirrors the registry-first design of the loader: iterates BUILTIN_SITE_PLUGINS
|
|
4
|
+
* (or a caller-supplied stub) and asserts that each registered plugin has its
|
|
5
|
+
* required co-located test file — without hardcoding any site name. Safe to run
|
|
6
|
+
* on main where BUILTIN_SITE_PLUGINS ships empty (0 iterations → trivially
|
|
7
|
+
* green); branches that populate the registry gain coverage automatically.
|
|
8
8
|
*/
|
|
9
9
|
/** Minimal plugin shape required by the guard — only `meta.siteId` is needed. */
|
|
10
10
|
export interface CoverageGuardPlugin {
|
|
@@ -16,8 +16,8 @@ export interface CoverageGuardSuiteOptions {
|
|
|
16
16
|
/** Human-readable suite name, passed to `describe`. */
|
|
17
17
|
suiteName: string;
|
|
18
18
|
/**
|
|
19
|
-
* Registry of plugins to guard. Pass `
|
|
20
|
-
* production coverage, or a stub array in unit tests.
|
|
19
|
+
* Registry of plugins to guard. Pass `BUILTIN_SITE_PLUGINS` from
|
|
20
|
+
* `discover.ts` for production coverage, or a stub array in unit tests.
|
|
21
21
|
*/
|
|
22
22
|
plugins: CoverageGuardPlugin[];
|
|
23
23
|
/**
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Provides a registry-driven structural coverage guard for site plugins.
|
|
3
|
-
* Mirrors the registry-first design of the loader: iterates
|
|
4
|
-
* caller-supplied stub) and asserts that each registered plugin has its
|
|
5
|
-
* co-located test file — without hardcoding any site name. Safe to run
|
|
6
|
-
* where
|
|
7
|
-
* populate the registry gain coverage automatically.
|
|
3
|
+
* Mirrors the registry-first design of the loader: iterates BUILTIN_SITE_PLUGINS
|
|
4
|
+
* (or a caller-supplied stub) and asserts that each registered plugin has its
|
|
5
|
+
* required co-located test file — without hardcoding any site name. Safe to run
|
|
6
|
+
* on main where BUILTIN_SITE_PLUGINS ships empty (0 iterations → trivially
|
|
7
|
+
* green); branches that populate the registry gain coverage automatically.
|
|
8
8
|
*/
|
|
9
9
|
import { existsSync } from "node:fs";
|
|
10
10
|
import { resolve } from "node:path";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@enricai/barnacle",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.0",
|
|
4
4
|
"description": "Site-agnostic browser automation engine. POST a structured payload to a typed endpoint; Barnacle drives a Steel + Stagehand session through the target site and returns a structured result.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Enricai",
|
|
@@ -264,9 +264,11 @@
|
|
|
264
264
|
"probe:warmup": "tsx --env-file=.env src/scripts/probe-warmup-reliability.ts"
|
|
265
265
|
},
|
|
266
266
|
"dependencies": {
|
|
267
|
-
"@ai-sdk/amazon-bedrock": "^
|
|
267
|
+
"@ai-sdk/amazon-bedrock": "^3.0.112",
|
|
268
|
+
"@ai-sdk/anthropic": "^2.0.92",
|
|
268
269
|
"@anthropic-ai/sdk": "^0.112.3",
|
|
269
270
|
"@aws-sdk/client-s3": "^3.1085.0",
|
|
271
|
+
"@browserbasehq/sdk": "^2.16.0",
|
|
270
272
|
"@browserbasehq/stagehand": "^3.6.0",
|
|
271
273
|
"@fastify/compress": "^9.0.0",
|
|
272
274
|
"@fastify/helmet": "^13.1.0",
|
|
@@ -274,6 +276,7 @@
|
|
|
274
276
|
"@fastify/rate-limit": "^11.1.0",
|
|
275
277
|
"@fastify/swagger": "^9.8.0",
|
|
276
278
|
"@fastify/swagger-ui": "^6.1.0",
|
|
279
|
+
"ai": "^5.0.216",
|
|
277
280
|
"bcryptjs": "^3.0.3",
|
|
278
281
|
"bottleneck": "^2.19.5",
|
|
279
282
|
"date-fns": "^4.4.0",
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* One-off migration: rename existing base64-encoded telemetry run directories
|
|
3
|
-
* to the new `<unix-ms>-<short-hash>` scheme introduced in commit ce63526.
|
|
4
|
-
*
|
|
5
|
-
* Background: until ce63526, per-URL telemetry partitions were named
|
|
6
|
-
* `runs/<base64url-canonical-url>/` (e.g.
|
|
7
|
-
* `aHR0cHM6Ly9jbGljay5hcHBjYXN0Lmlv...`). After ce63526, new runs create
|
|
8
|
-
* `runs/<unix-ms>-<sha1-hex-8>/` directories. The engine reads both styles
|
|
9
|
-
* (readSiteCallsNdjson walks all dirs blindly), so mixed naming is
|
|
10
|
-
* functionally harmless — but visually inconsistent and prevents the new
|
|
11
|
-
* `awk -F- '{print $NF}' | sort | uniq -c` URL-grouping pattern from
|
|
12
|
-
* working on historical data.
|
|
13
|
-
*
|
|
14
|
-
* This script walks every `src/sites/<site>/telemetry/runs/` tree, reads
|
|
15
|
-
* each partition's `url.txt` sidecar to recover the original URL, and
|
|
16
|
-
* renames the dir to the new scheme. The timestamp is sourced from the
|
|
17
|
-
* mtime of the partition's `calls.ndjson` (when this run actually wrote
|
|
18
|
-
* data) or falls back to the dir's mtime when there's no NDJSON yet.
|
|
19
|
-
*
|
|
20
|
-
* Idempotent: dirs already in the new shape are skipped.
|
|
21
|
-
* Safe: dry-run is the default; `--apply` is required to actually rename.
|
|
22
|
-
*
|
|
23
|
-
* Usage:
|
|
24
|
-
* pnpm tsx src/scripts/migrate-telemetry-dir-names.ts
|
|
25
|
-
* pnpm tsx src/scripts/migrate-telemetry-dir-names.ts --apply
|
|
26
|
-
* pnpm tsx src/scripts/migrate-telemetry-dir-names.ts --site <siteId> --apply
|
|
27
|
-
*/
|
|
28
|
-
interface MigrateOptions {
|
|
29
|
-
/** Path to the project root containing `src/sites/`. */
|
|
30
|
-
sitesRoot: string;
|
|
31
|
-
/** Optional: restrict to one site directory by name (e.g. "acme-jobs"). */
|
|
32
|
-
siteFilter: string | null;
|
|
33
|
-
/** If false, log planned renames but do not execute them. */
|
|
34
|
-
apply: boolean;
|
|
35
|
-
}
|
|
36
|
-
interface MigrationOutcome {
|
|
37
|
-
migrated: number;
|
|
38
|
-
alreadyMigrated: number;
|
|
39
|
-
warnings: number;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Drive the migration end-to-end across every site under `sitesRoot`.
|
|
43
|
-
* Returns a tally so callers (CLI + tests) can assert outcomes without
|
|
44
|
-
* scraping log output.
|
|
45
|
-
*/
|
|
46
|
-
export declare function migrateTelemetryDirs(opts: MigrateOptions): MigrationOutcome;
|
|
47
|
-
interface ParsedArgs {
|
|
48
|
-
apply: boolean;
|
|
49
|
-
siteFilter: string | null;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Tiny argv parser matching the rest of the scripts in this dir. Exposed
|
|
53
|
-
* for unit tests; defaults to dry-run (apply=false).
|
|
54
|
-
*/
|
|
55
|
-
export declare function parseArgs(argv: string[]): ParsedArgs;
|
|
56
|
-
export {};
|
|
57
|
-
//# sourceMappingURL=migrate-telemetry-dir-names.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* One-off migration: rename existing base64-encoded telemetry run directories
|
|
4
|
-
* to the new `<unix-ms>-<short-hash>` scheme introduced in commit ce63526.
|
|
5
|
-
*
|
|
6
|
-
* Background: until ce63526, per-URL telemetry partitions were named
|
|
7
|
-
* `runs/<base64url-canonical-url>/` (e.g.
|
|
8
|
-
* `aHR0cHM6Ly9jbGljay5hcHBjYXN0Lmlv...`). After ce63526, new runs create
|
|
9
|
-
* `runs/<unix-ms>-<sha1-hex-8>/` directories. The engine reads both styles
|
|
10
|
-
* (readSiteCallsNdjson walks all dirs blindly), so mixed naming is
|
|
11
|
-
* functionally harmless — but visually inconsistent and prevents the new
|
|
12
|
-
* `awk -F- '{print $NF}' | sort | uniq -c` URL-grouping pattern from
|
|
13
|
-
* working on historical data.
|
|
14
|
-
*
|
|
15
|
-
* This script walks every `src/sites/<site>/telemetry/runs/` tree, reads
|
|
16
|
-
* each partition's `url.txt` sidecar to recover the original URL, and
|
|
17
|
-
* renames the dir to the new scheme. The timestamp is sourced from the
|
|
18
|
-
* mtime of the partition's `calls.ndjson` (when this run actually wrote
|
|
19
|
-
* data) or falls back to the dir's mtime when there's no NDJSON yet.
|
|
20
|
-
*
|
|
21
|
-
* Idempotent: dirs already in the new shape are skipped.
|
|
22
|
-
* Safe: dry-run is the default; `--apply` is required to actually rename.
|
|
23
|
-
*
|
|
24
|
-
* Usage:
|
|
25
|
-
* pnpm tsx src/scripts/migrate-telemetry-dir-names.ts
|
|
26
|
-
* pnpm tsx src/scripts/migrate-telemetry-dir-names.ts --apply
|
|
27
|
-
* pnpm tsx src/scripts/migrate-telemetry-dir-names.ts --site <siteId> --apply
|
|
28
|
-
*/
|
|
29
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
-
exports.migrateTelemetryDirs = migrateTelemetryDirs;
|
|
31
|
-
exports.parseArgs = parseArgs;
|
|
32
|
-
const node_fs_1 = require("node:fs");
|
|
33
|
-
const node_path_1 = require("node:path");
|
|
34
|
-
const logging_1 = require("../lib/logging");
|
|
35
|
-
const telemetry_paths_1 = require("../lib/telemetry/telemetry-paths");
|
|
36
|
-
const logger = (0, logging_1.getScriptLogger)("migrate-telemetry-dir-names");
|
|
37
|
-
const ALREADY_MIGRATED_RX = /^\d+-[0-9a-f]{8}$/;
|
|
38
|
-
/**
|
|
39
|
-
* Drive the migration end-to-end across every site under `sitesRoot`.
|
|
40
|
-
* Returns a tally so callers (CLI + tests) can assert outcomes without
|
|
41
|
-
* scraping log output.
|
|
42
|
-
*/
|
|
43
|
-
function migrateTelemetryDirs(opts) {
|
|
44
|
-
const outcome = { migrated: 0, alreadyMigrated: 0, warnings: 0 };
|
|
45
|
-
if (!(0, node_fs_1.existsSync)(opts.sitesRoot)) {
|
|
46
|
-
logger.warn(`sites root not found: ${opts.sitesRoot}`);
|
|
47
|
-
outcome.warnings++;
|
|
48
|
-
return outcome;
|
|
49
|
-
}
|
|
50
|
-
const siteDirs = (0, node_fs_1.readdirSync)(opts.sitesRoot, { withFileTypes: true })
|
|
51
|
-
.filter((d) => d.isDirectory())
|
|
52
|
-
.filter((d) => opts.siteFilter === null || d.name === opts.siteFilter)
|
|
53
|
-
.map((d) => (0, node_path_1.join)(opts.sitesRoot, d.name));
|
|
54
|
-
for (const siteDir of siteDirs) {
|
|
55
|
-
const runsDir = (0, node_path_1.join)(siteDir, "telemetry", "runs");
|
|
56
|
-
if (!(0, node_fs_1.existsSync)(runsDir))
|
|
57
|
-
continue;
|
|
58
|
-
migrateRunsDir(runsDir, opts.apply, outcome);
|
|
59
|
-
}
|
|
60
|
-
return outcome;
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Per-`runs/` walker. Inspects every child entry; rename-eligible ones get
|
|
64
|
-
* routed to renamePartition, which is also where dry-run vs apply is gated.
|
|
65
|
-
*/
|
|
66
|
-
function migrateRunsDir(runsDir, apply, outcome) {
|
|
67
|
-
const partitions = (0, node_fs_1.readdirSync)(runsDir, { withFileTypes: true }).filter((d) => d.isDirectory());
|
|
68
|
-
for (const partition of partitions) {
|
|
69
|
-
const partitionPath = (0, node_path_1.join)(runsDir, partition.name);
|
|
70
|
-
if (ALREADY_MIGRATED_RX.test(partition.name)) {
|
|
71
|
-
logger.info(`skip (already migrated): ${partitionPath}`);
|
|
72
|
-
outcome.alreadyMigrated++;
|
|
73
|
-
continue;
|
|
74
|
-
}
|
|
75
|
-
renamePartition(runsDir, partition.name, apply, outcome);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Compute the target name from `url.txt` + mtime, then dry-run-or-rename.
|
|
80
|
-
* Skips with a warning when the partition is missing the sidecar (can't
|
|
81
|
-
* recover URL), when the target already exists (collision; needs manual
|
|
82
|
-
* triage), or when mtime can't be read.
|
|
83
|
-
*/
|
|
84
|
-
function renamePartition(runsDir, oldName, apply, outcome) {
|
|
85
|
-
const partitionPath = (0, node_path_1.join)(runsDir, oldName);
|
|
86
|
-
const urlTxtPath = (0, node_path_1.join)(partitionPath, "url.txt");
|
|
87
|
-
if (!(0, node_fs_1.existsSync)(urlTxtPath)) {
|
|
88
|
-
logger.warn(`skip (no url.txt): ${partitionPath}`);
|
|
89
|
-
outcome.warnings++;
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
|
-
const url = (0, node_fs_1.readFileSync)(urlTxtPath, "utf8").trim();
|
|
93
|
-
if (url.length === 0) {
|
|
94
|
-
logger.warn(`skip (empty url.txt): ${partitionPath}`);
|
|
95
|
-
outcome.warnings++;
|
|
96
|
-
return;
|
|
97
|
-
}
|
|
98
|
-
const callsPath = (0, node_path_1.join)(partitionPath, "calls.ndjson");
|
|
99
|
-
const mtimeMs = (0, node_fs_1.existsSync)(callsPath)
|
|
100
|
-
? Math.round((0, node_fs_1.statSync)(callsPath).mtimeMs)
|
|
101
|
-
: Math.round((0, node_fs_1.statSync)(partitionPath).mtimeMs);
|
|
102
|
-
const newName = (0, telemetry_paths_1.urlDirName)(mtimeMs, url);
|
|
103
|
-
if (newName === oldName) {
|
|
104
|
-
logger.info(`skip (same name): ${partitionPath}`);
|
|
105
|
-
outcome.alreadyMigrated++;
|
|
106
|
-
return;
|
|
107
|
-
}
|
|
108
|
-
const newPath = (0, node_path_1.join)(runsDir, newName);
|
|
109
|
-
if ((0, node_fs_1.existsSync)(newPath)) {
|
|
110
|
-
logger.warn(`skip (target collision): ${partitionPath} → ${newPath}`);
|
|
111
|
-
outcome.warnings++;
|
|
112
|
-
return;
|
|
113
|
-
}
|
|
114
|
-
if (apply) {
|
|
115
|
-
(0, node_fs_1.renameSync)(partitionPath, newPath);
|
|
116
|
-
logger.info(`renamed: ${oldName} → ${newName} (in ${runsDir})`);
|
|
117
|
-
}
|
|
118
|
-
else {
|
|
119
|
-
logger.info(`dry-run: ${oldName} → ${newName} (in ${runsDir})`);
|
|
120
|
-
}
|
|
121
|
-
outcome.migrated++;
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* Tiny argv parser matching the rest of the scripts in this dir. Exposed
|
|
125
|
-
* for unit tests; defaults to dry-run (apply=false).
|
|
126
|
-
*/
|
|
127
|
-
function parseArgs(argv) {
|
|
128
|
-
const args = argv.slice(2);
|
|
129
|
-
let apply = false;
|
|
130
|
-
let siteFilter = null;
|
|
131
|
-
for (let i = 0; i < args.length; i++) {
|
|
132
|
-
const arg = args[i];
|
|
133
|
-
if (arg === "--apply") {
|
|
134
|
-
apply = true;
|
|
135
|
-
}
|
|
136
|
-
else if (arg === "--site" && args[i + 1]) {
|
|
137
|
-
siteFilter = args[++i] ?? null;
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
return { apply, siteFilter };
|
|
141
|
-
}
|
|
142
|
-
async function main() {
|
|
143
|
-
const { apply, siteFilter } = parseArgs(process.argv);
|
|
144
|
-
const sitesRoot = (0, node_path_1.join)(process.cwd(), "src", "sites");
|
|
145
|
-
logger.info(`migrate-telemetry-dir-names: sitesRoot=${sitesRoot} siteFilter=${siteFilter ?? "(all)"} apply=${apply}`);
|
|
146
|
-
const outcome = migrateTelemetryDirs({ sitesRoot, siteFilter, apply });
|
|
147
|
-
logger.info(`summary: ${outcome.migrated} ${apply ? "renamed" : "planned"}, ${outcome.alreadyMigrated} skipped (already migrated), ${outcome.warnings} warning(s)`);
|
|
148
|
-
if (!apply && outcome.migrated > 0) {
|
|
149
|
-
logger.info(`re-run with --apply to execute the renames`);
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
main().catch((err) => {
|
|
153
|
-
logger.error(`migrate-telemetry-dir-names failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
154
|
-
process.exit(1);
|
|
155
|
-
});
|
|
156
|
-
//# sourceMappingURL=migrate-telemetry-dir-names.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"migrate-telemetry-dir-names.js","sourceRoot":"","sources":["../../src/scripts/migrate-telemetry-dir-names.ts"],"names":[],"mappings":"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"}
|