@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.
Files changed (68) hide show
  1. package/README.md +3 -5
  2. package/dist/api/schemas/submissions.d.ts +8 -8
  3. package/dist/lib/bedrock.d.ts +10 -7
  4. package/dist/lib/bedrock.d.ts.map +1 -1
  5. package/dist/lib/bedrock.js +8 -5
  6. package/dist/lib/bedrock.js.map +1 -1
  7. package/dist/lib/http.d.ts +4 -3
  8. package/dist/lib/http.d.ts.map +1 -1
  9. package/dist/lib/http.js +25 -3
  10. package/dist/lib/http.js.map +1 -1
  11. package/dist/lib/llm/anthropic-client.d.ts +12 -0
  12. package/dist/lib/llm/anthropic-client.d.ts.map +1 -1
  13. package/dist/lib/llm/anthropic-client.js +25 -0
  14. package/dist/lib/llm/anthropic-client.js.map +1 -1
  15. package/dist/lib/telemetry/beacon-capture.d.ts +4 -3
  16. package/dist/lib/telemetry/beacon-capture.d.ts.map +1 -1
  17. package/dist/lib/telemetry/beacon-capture.js.map +1 -1
  18. package/dist/lib/telemetry/reconciliation-record.d.ts +15 -33
  19. package/dist/lib/telemetry/reconciliation-record.d.ts.map +1 -1
  20. package/dist/lib/telemetry/reconciliation-record.js +11 -49
  21. package/dist/lib/telemetry/reconciliation-record.js.map +1 -1
  22. package/dist/lib/telemetry/submission-capture.d.ts +8 -13
  23. package/dist/lib/telemetry/submission-capture.d.ts.map +1 -1
  24. package/dist/lib/telemetry/submission-capture.js +2 -4
  25. package/dist/lib/telemetry/submission-capture.js.map +1 -1
  26. package/dist/lib/telemetry/submission-reader.d.ts +3 -4
  27. package/dist/lib/telemetry/submission-reader.d.ts.map +1 -1
  28. package/dist/lib/telemetry/submission-reader.js +3 -4
  29. package/dist/lib/telemetry/submission-reader.js.map +1 -1
  30. package/dist/plugins/config-plugin.d.ts.map +1 -1
  31. package/dist/plugins/config-plugin.js +25 -3
  32. package/dist/plugins/config-plugin.js.map +1 -1
  33. package/dist/plugins/loader.d.ts +0 -7
  34. package/dist/plugins/loader.d.ts.map +1 -1
  35. package/dist/plugins/loader.js +0 -9
  36. package/dist/plugins/loader.js.map +1 -1
  37. package/dist/scraper/deep-locator-actuate.d.ts +24 -19
  38. package/dist/scraper/deep-locator-actuate.d.ts.map +1 -1
  39. package/dist/scraper/deep-locator-actuate.js +68 -23
  40. package/dist/scraper/deep-locator-actuate.js.map +1 -1
  41. package/dist/scraper/deep-locator-scan.d.ts +20 -0
  42. package/dist/scraper/deep-locator-scan.d.ts.map +1 -1
  43. package/dist/scraper/deep-locator-scan.js +25 -0
  44. package/dist/scraper/deep-locator-scan.js.map +1 -1
  45. package/dist/scraper/flow-runner.d.ts +86 -14
  46. package/dist/scraper/flow-runner.d.ts.map +1 -1
  47. package/dist/scraper/flow-runner.js +233 -87
  48. package/dist/scraper/flow-runner.js.map +1 -1
  49. package/dist/scripts/recon-browser.d.ts +6 -5
  50. package/dist/scripts/recon-browser.d.ts.map +1 -1
  51. package/dist/scripts/recon-browser.js +24 -21
  52. package/dist/scripts/recon-browser.js.map +1 -1
  53. package/dist/scripts/recon-generate.d.ts +2 -2
  54. package/dist/scripts/recon-generate.d.ts.map +1 -1
  55. package/dist/scripts/recon-generate.js +21 -88
  56. package/dist/scripts/recon-generate.js.map +1 -1
  57. package/dist/scripts/recon-shared.d.ts +0 -10
  58. package/dist/scripts/recon-shared.d.ts.map +1 -1
  59. package/dist/scripts/recon-shared.js +0 -11
  60. package/dist/scripts/recon-shared.js.map +1 -1
  61. package/dist/site-plugin.d.ts +3 -3
  62. package/dist/testing/coverage-guard-suite.d.mts +7 -7
  63. package/dist/testing/coverage-guard-suite.mjs +5 -5
  64. package/package.json +5 -2
  65. package/dist/scripts/migrate-telemetry-dir-names.d.ts +0 -57
  66. package/dist/scripts/migrate-telemetry-dir-names.d.ts.map +0 -1
  67. package/dist/scripts/migrate-telemetry-dir-names.js +0 -156
  68. 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;AAYH;;;;GAIG;AACH,eAAO,MAAM,YAAY,uBAAuB,CAAC;AACjD,eAAO,MAAM,WAAW,uBAAuB,CAAC;AAChD,eAAO,MAAM,OAAO,mBAAmB,CAAC;AACxC,eAAO,MAAM,iBAAiB,6BAA6B,CAAC;AAC5D,eAAO,MAAM,WAAW,uBAAuB,CAAC;AAKhD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;CACzB;AAgBD;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,IAAI,WAAW,CA0BhD;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CA2BjE;AAED,MAAM,WAAW,OAAO;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC;CAC5C;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,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;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC3C;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,MAAM,EAAO,GAAG,CAAC,EAAE,CASvE;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAelE;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAiCjF"}
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":"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"}
1
+ {"version":3,"file":"recon-shared.js","sourceRoot":"","sources":["../../src/scripts/recon-shared.ts"],"names":[],"mappings":"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"}
@@ -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
- * `SITE_PLUGINS` registry and `dispatch()` function against this interface so
233
- * adding a new site never requires changes to core — only a new file in
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 SITE_PLUGINS (or a
4
- * caller-supplied stub) and asserts that each registered plugin has its required
5
- * co-located test file — without hardcoding any site name. Safe to run on main
6
- * where SITE_PLUGINS ships empty (0 iterations → trivially green); branches that
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 `SITE_PLUGINS` from the loader for
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 SITE_PLUGINS (or a
4
- * caller-supplied stub) and asserts that each registered plugin has its required
5
- * co-located test file — without hardcoding any site name. Safe to run on main
6
- * where SITE_PLUGINS ships empty (0 iterations → trivially green); branches that
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.6.13",
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": "^5.0.17",
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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"}