@alwaysmeticulous/cli 2.313.1 → 2.316.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 (80) hide show
  1. package/dist/commands/agent/index.d.ts.map +1 -1
  2. package/dist/commands/agent/index.js +4 -2
  3. package/dist/commands/agent/index.js.map +1 -1
  4. package/dist/commands/agent/js-coverage.command.d.ts +29 -0
  5. package/dist/commands/agent/js-coverage.command.d.ts.map +1 -1
  6. package/dist/commands/agent/js-coverage.command.handler.spec.d.ts +2 -0
  7. package/dist/commands/agent/js-coverage.command.handler.spec.d.ts.map +1 -0
  8. package/dist/commands/agent/js-coverage.command.handler.spec.js +148 -0
  9. package/dist/commands/agent/js-coverage.command.handler.spec.js.map +1 -0
  10. package/dist/commands/agent/js-coverage.command.js +120 -22
  11. package/dist/commands/agent/js-coverage.command.js.map +1 -1
  12. package/dist/commands/agent/js-coverage.command.spec.js +83 -2
  13. package/dist/commands/agent/js-coverage.command.spec.js.map +1 -1
  14. package/dist/commands/agent/submit-feedback.command.d.ts +15 -0
  15. package/dist/commands/agent/submit-feedback.command.d.ts.map +1 -0
  16. package/dist/commands/agent/submit-feedback.command.js +74 -0
  17. package/dist/commands/agent/submit-feedback.command.js.map +1 -0
  18. package/dist/commands/agent/test-run-diffs.command.d.ts.map +1 -1
  19. package/dist/commands/agent/test-run-diffs.command.js +10 -5
  20. package/dist/commands/agent/test-run-diffs.command.js.map +1 -1
  21. package/dist/commands/agent/test-run-diffs.command.spec.js +17 -2
  22. package/dist/commands/agent/test-run-diffs.command.spec.js.map +1 -1
  23. package/dist/commands/all-commands.d.ts.map +1 -1
  24. package/dist/commands/all-commands.js +4 -2
  25. package/dist/commands/all-commands.js.map +1 -1
  26. package/dist/commands/auth/__tests__/get-project.command.spec.js +9 -3
  27. package/dist/commands/auth/__tests__/get-project.command.spec.js.map +1 -1
  28. package/dist/commands/auth/__tests__/set-project.command.spec.js +9 -4
  29. package/dist/commands/auth/__tests__/set-project.command.spec.js.map +1 -1
  30. package/dist/commands/auth/__tests__/whoami.command.spec.js +40 -2
  31. package/dist/commands/auth/__tests__/whoami.command.spec.js.map +1 -1
  32. package/dist/commands/ci/agent-test.command.d.ts +1 -0
  33. package/dist/commands/ci/agent-test.command.d.ts.map +1 -1
  34. package/dist/commands/ci/agent-test.command.js +19 -4
  35. package/dist/commands/ci/agent-test.command.js.map +1 -1
  36. package/dist/commands/crawl.command.d.ts +11 -0
  37. package/dist/commands/crawl.command.d.ts.map +1 -0
  38. package/dist/commands/crawl.command.js +118 -0
  39. package/dist/commands/crawl.command.js.map +1 -0
  40. package/dist/commands/record/__tests__/backend-dev-command.utils.spec.d.ts +2 -0
  41. package/dist/commands/record/__tests__/backend-dev-command.utils.spec.d.ts.map +1 -0
  42. package/dist/commands/record/__tests__/backend-dev-command.utils.spec.js +94 -0
  43. package/dist/commands/record/__tests__/backend-dev-command.utils.spec.js.map +1 -0
  44. package/dist/commands/record/__tests__/backend-sidecar.utils.spec.d.ts +2 -0
  45. package/dist/commands/record/__tests__/backend-sidecar.utils.spec.d.ts.map +1 -0
  46. package/dist/commands/record/__tests__/backend-sidecar.utils.spec.js +183 -0
  47. package/dist/commands/record/__tests__/backend-sidecar.utils.spec.js.map +1 -0
  48. package/dist/commands/record/__tests__/backend.command.spec.d.ts +2 -0
  49. package/dist/commands/record/__tests__/backend.command.spec.d.ts.map +1 -0
  50. package/dist/commands/record/__tests__/backend.command.spec.js +219 -0
  51. package/dist/commands/record/__tests__/backend.command.spec.js.map +1 -0
  52. package/dist/commands/record/backend-dev-command.utils.d.ts +29 -0
  53. package/dist/commands/record/backend-dev-command.utils.d.ts.map +1 -0
  54. package/dist/commands/record/backend-dev-command.utils.js +91 -0
  55. package/dist/commands/record/backend-dev-command.utils.js.map +1 -0
  56. package/dist/commands/record/backend-sidecar.utils.d.ts +39 -0
  57. package/dist/commands/record/backend-sidecar.utils.d.ts.map +1 -0
  58. package/dist/commands/record/backend-sidecar.utils.js +273 -0
  59. package/dist/commands/record/backend-sidecar.utils.js.map +1 -0
  60. package/dist/commands/record/backend.command.d.ts +14 -0
  61. package/dist/commands/record/backend.command.d.ts.map +1 -0
  62. package/dist/commands/record/backend.command.js +189 -0
  63. package/dist/commands/record/backend.command.js.map +1 -0
  64. package/dist/commands/record/index.d.ts.map +1 -1
  65. package/dist/commands/record/index.js +4 -2
  66. package/dist/commands/record/index.js.map +1 -1
  67. package/dist/main.d.ts.map +1 -1
  68. package/dist/main.js +6 -2
  69. package/dist/main.js.map +1 -1
  70. package/dist/utils/__tests__/resolve-test-run-from-commit.spec.js +7 -4
  71. package/dist/utils/__tests__/resolve-test-run-from-commit.spec.js.map +1 -1
  72. package/dist/utils/constants.d.ts +1 -0
  73. package/dist/utils/constants.d.ts.map +1 -1
  74. package/dist/utils/constants.js +4 -3
  75. package/dist/utils/constants.js.map +1 -1
  76. package/dist/utils/resolve-test-run-from-commit.d.ts +8 -4
  77. package/dist/utils/resolve-test-run-from-commit.d.ts.map +1 -1
  78. package/dist/utils/resolve-test-run-from-commit.js +10 -9
  79. package/dist/utils/resolve-test-run-from-commit.js.map +1 -1
  80. package/package.json +10 -10
@@ -0,0 +1,273 @@
1
+ "use strict";
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="d54ed918-653d-5c03-aa56-431d0e23e8f4")}catch(e){}}();
3
+
4
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
5
+ if (k2 === undefined) k2 = k;
6
+ var desc = Object.getOwnPropertyDescriptor(m, k);
7
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
8
+ desc = { enumerable: true, get: function() { return m[k]; } };
9
+ }
10
+ Object.defineProperty(o, k2, desc);
11
+ }) : (function(o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ o[k2] = m[k];
14
+ }));
15
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
16
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
17
+ }) : function(o, v) {
18
+ o["default"] = v;
19
+ });
20
+ var __importStar = (this && this.__importStar) || (function () {
21
+ var ownKeys = function(o) {
22
+ ownKeys = Object.getOwnPropertyNames || function (o) {
23
+ var ar = [];
24
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
25
+ return ar;
26
+ };
27
+ return ownKeys(o);
28
+ };
29
+ return function (mod) {
30
+ if (mod && mod.__esModule) return mod;
31
+ var result = {};
32
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
33
+ __setModuleDefault(result, mod);
34
+ return result;
35
+ };
36
+ })();
37
+ var __importDefault = (this && this.__importDefault) || function (mod) {
38
+ return (mod && mod.__esModule) ? mod : { "default": mod };
39
+ };
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ exports.startSidecar = exports.resolveSidecarPort = exports.DEFAULT_SIDECAR_PORT = void 0;
42
+ const child_process_1 = require("child_process");
43
+ const net = __importStar(require("net"));
44
+ const readline = __importStar(require("readline"));
45
+ const common_1 = require("@alwaysmeticulous/common");
46
+ const chalk_1 = __importDefault(require("chalk"));
47
+ const cli_user_error_1 = require("../../utils/cli-user-error");
48
+ exports.DEFAULT_SIDECAR_PORT = 9670;
49
+ const HEALTH_POLL_INTERVAL_MS = 250;
50
+ const HEALTH_TIMEOUT_MS = 15_000;
51
+ const FLUSH_TIMEOUT_MS = 10_000;
52
+ const STOP_SIGTERM_TIMEOUT_MS = 5_000;
53
+ const STDERR_TAIL_LINES = 20;
54
+ const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
55
+ const canBind = (port) => new Promise((resolve) => {
56
+ const probe = net.createServer();
57
+ probe.once("error", () => resolve(false));
58
+ probe.listen(port, "127.0.0.1", () => {
59
+ probe.close(() => resolve(true));
60
+ });
61
+ });
62
+ const findEphemeralPort = () => new Promise((resolve, reject) => {
63
+ const probe = net.createServer();
64
+ probe.once("error", reject);
65
+ probe.listen(0, "127.0.0.1", () => {
66
+ const address = probe.address();
67
+ if (address === null || typeof address !== "object") {
68
+ probe.close(() => reject(new Error("Could not resolve a free port")));
69
+ return;
70
+ }
71
+ const port = address.port;
72
+ probe.close(() => resolve(port));
73
+ });
74
+ });
75
+ /**
76
+ * Resolves the port the sidecar will listen on. `requested === 0` always
77
+ * picks an ephemeral port. A busy requested port falls back to an ephemeral
78
+ * one in wrapped mode (the CLI controls the URL injected into the worker) but
79
+ * is a hard error in sidecar-only mode, where the user is about to configure
80
+ * the printed URL by hand and needs it predictable.
81
+ */
82
+ const resolveSidecarPort = async (requested, mode) => {
83
+ if (requested === 0) {
84
+ return findEphemeralPort();
85
+ }
86
+ if (await canBind(requested)) {
87
+ return requested;
88
+ }
89
+ if (mode === "wrapped") {
90
+ const fallback = await findEphemeralPort();
91
+ (0, common_1.initLogger)().warn(`Port ${requested} is in use — using port ${fallback} for the Meticulous sidecar instead.`);
92
+ return fallback;
93
+ }
94
+ throw new cli_user_error_1.CliUserError(`Port ${requested} is already in use. Pass --port to choose a different sidecar port.`);
95
+ };
96
+ exports.resolveSidecarPort = resolveSidecarPort;
97
+ const prefixPipe = (stream, onLine) => {
98
+ readline.createInterface({ input: stream }).on("line", onLine);
99
+ };
100
+ const fetchWithTimeout = async (url, init, timeoutMs) => {
101
+ const controller = new AbortController();
102
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
103
+ try {
104
+ return await fetch(url, { ...init, signal: controller.signal });
105
+ }
106
+ finally {
107
+ clearTimeout(timer);
108
+ }
109
+ };
110
+ const spawnSidecarProcess = (options) => {
111
+ const logger = (0, common_1.initLogger)();
112
+ const child = (0, child_process_1.spawn)(process.execPath, [options.bundlePath], {
113
+ env: {
114
+ ...process.env,
115
+ ...options.env,
116
+ METICULOUS_SIDECAR_PORT: String(options.port),
117
+ },
118
+ stdio: ["ignore", "pipe", "pipe"],
119
+ // Own process group (POSIX) so terminal Ctrl-C reaches the CLI and the
120
+ // wrapped dev command but NOT the sidecar — the CLI drains the dev
121
+ // command first, flushes, and only then stops the sidecar, so capture
122
+ // events emitted during the dev server's teardown are not lost.
123
+ detached: process.platform !== "win32",
124
+ });
125
+ const stderrTail = [];
126
+ const prefix = chalk_1.default.dim("[meticulous sidecar]");
127
+ if (child.stdout) {
128
+ prefixPipe(child.stdout, (line) => logger.info(`${prefix} ${line}`));
129
+ }
130
+ if (child.stderr) {
131
+ prefixPipe(child.stderr, (line) => {
132
+ stderrTail.push(line);
133
+ if (stderrTail.length > STDERR_TAIL_LINES) {
134
+ stderrTail.shift();
135
+ }
136
+ logger.warn(`${prefix} ${line}`);
137
+ });
138
+ }
139
+ return { child, stderrTail };
140
+ };
141
+ const awaitHealthy = async (spawned, url) => {
142
+ const deadline = Date.now() + HEALTH_TIMEOUT_MS;
143
+ let exited = false;
144
+ let exitCode = null;
145
+ spawned.child.once("exit", (code) => {
146
+ exited = true;
147
+ exitCode = code;
148
+ });
149
+ while (Date.now() < deadline) {
150
+ if (exited) {
151
+ throw new cli_user_error_1.CliUserError(`The Meticulous sidecar exited during startup (exit code ${String(exitCode)}).${spawned.stderrTail.length > 0
152
+ ? `\n${spawned.stderrTail.join("\n")}`
153
+ : ""}`);
154
+ }
155
+ try {
156
+ const response = await fetchWithTimeout(`${url}/v1/health`, { method: "GET" }, 1_000);
157
+ if (response.ok) {
158
+ return;
159
+ }
160
+ }
161
+ catch {
162
+ // Not up yet — keep polling.
163
+ }
164
+ await sleep(HEALTH_POLL_INTERVAL_MS);
165
+ }
166
+ throw new cli_user_error_1.CliUserError(`The Meticulous sidecar did not become healthy within ${HEALTH_TIMEOUT_MS / 1000}s.${spawned.stderrTail.length > 0 ? `\n${spawned.stderrTail.join("\n")}` : ""}`);
167
+ };
168
+ const terminateChild = async (child) => {
169
+ if (child.exitCode !== null || child.signalCode !== null) {
170
+ return;
171
+ }
172
+ const exited = new Promise((resolve) => child.once("exit", () => resolve()));
173
+ child.kill("SIGTERM");
174
+ const timedOut = await Promise.race([
175
+ exited.then(() => false),
176
+ sleep(STOP_SIGTERM_TIMEOUT_MS).then(() => true),
177
+ ]);
178
+ if (timedOut) {
179
+ child.kill("SIGKILL");
180
+ await Promise.race([exited, sleep(2_000)]);
181
+ }
182
+ };
183
+ /**
184
+ * Spawns the sidecar bundle as a detached child process, waits for it to
185
+ * become healthy, and supervises it: one automatic restart on the same port
186
+ * if it dies unexpectedly (the worker holds the old URL, so the port must be
187
+ * reused), after which recording is declared stopped without affecting the
188
+ * wrapped dev command.
189
+ */
190
+ const startSidecar = async (options) => {
191
+ const logger = (0, common_1.initLogger)();
192
+ const url = `http://127.0.0.1:${options.port}`;
193
+ let current = spawnSidecarProcess(options);
194
+ let restarted = false;
195
+ let stopping = false;
196
+ const watchExit = (spawned) => {
197
+ spawned.child.once("exit", (code) => {
198
+ if (stopping) {
199
+ return;
200
+ }
201
+ if (!restarted) {
202
+ restarted = true;
203
+ logger.warn(`The Meticulous sidecar exited unexpectedly (exit code ${String(code)}) — restarting it once...`);
204
+ void (async () => {
205
+ try {
206
+ current = spawnSidecarProcess(options);
207
+ await awaitHealthy(current, url);
208
+ // Only supervise the restarted process once it is healthy — an
209
+ // exit during its startup is handled by awaitHealthy rejecting.
210
+ watchExit(current);
211
+ logger.warn("Meticulous sidecar restarted.");
212
+ }
213
+ catch (error) {
214
+ current.child.kill("SIGKILL");
215
+ logger.error(`Could not restart the Meticulous sidecar — backend recording has stopped. Your dev server is unaffected. ${String(error)}`);
216
+ options.onRecordingStopped?.();
217
+ }
218
+ })();
219
+ }
220
+ else {
221
+ logger.error("The Meticulous sidecar exited again — backend recording has stopped. Your dev server is unaffected.");
222
+ options.onRecordingStopped?.();
223
+ }
224
+ });
225
+ };
226
+ try {
227
+ await awaitHealthy(current, url);
228
+ }
229
+ catch (error) {
230
+ // Never leave a half-started detached sidecar behind — it would outlive
231
+ // the failed CLI run and hold the port. (No-op if it already exited.)
232
+ current.child.kill("SIGKILL");
233
+ throw error;
234
+ }
235
+ // Supervision starts only once the sidecar is healthy: an exit during
236
+ // startup is a startup failure (reported above), not a crash to restart.
237
+ watchExit(current);
238
+ // Don't let a crashed CLI orphan the detached sidecar.
239
+ process.once("exit", () => {
240
+ try {
241
+ current.child.kill("SIGTERM");
242
+ }
243
+ catch {
244
+ // Already gone.
245
+ }
246
+ });
247
+ const flush = async () => {
248
+ try {
249
+ await fetchWithTimeout(`${url}/v1/flush`, { method: "POST" }, FLUSH_TIMEOUT_MS);
250
+ }
251
+ catch (error) {
252
+ logger.warn(`Could not flush the Meticulous sidecar — some captured requests may not have been uploaded. ${String(error)}`);
253
+ }
254
+ };
255
+ return {
256
+ url,
257
+ port: options.port,
258
+ flush,
259
+ stop: async () => {
260
+ if (stopping) {
261
+ return;
262
+ }
263
+ stopping = true;
264
+ await flush();
265
+ // The sidecar's own SIGTERM handler also flushes before exiting, so
266
+ // this is belt-and-braces.
267
+ await terminateChild(current.child);
268
+ },
269
+ };
270
+ };
271
+ exports.startSidecar = startSidecar;
272
+ //# sourceMappingURL=backend-sidecar.utils.js.map
273
+ //# debugId=d54ed918-653d-5c03-aa56-431d0e23e8f4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend-sidecar.utils.js","sources":["../../../src/commands/record/backend-sidecar.utils.ts"],"sourceRoot":"","names":[],"mappings":"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","debugId":"d54ed918-653d-5c03-aa56-431d0e23e8f4"}
@@ -0,0 +1,14 @@
1
+ import type { CommandModule } from "yargs";
2
+ interface Options {
3
+ apiToken: string | null | undefined;
4
+ recordingToken: string | null | undefined;
5
+ port: number;
6
+ exportMode: string;
7
+ localOutputDir: string | null | undefined;
8
+ injectSidecarVar: boolean;
9
+ /** Positional tokens yargs collected — only valid when passed after `--`. */
10
+ devCommand: (string | number)[] | undefined;
11
+ }
12
+ export declare const recordBackendCommand: CommandModule<unknown, Options>;
13
+ export {};
14
+ //# sourceMappingURL=backend.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend.command.d.ts","sourceRoot":"","sources":["../../../src/commands/record/backend.command.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAoB3C,UAAU,OAAO;IACf,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACpC,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC1C,gBAAgB,EAAE,OAAO,CAAC;IAC1B,6EAA6E;IAC7E,UAAU,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,SAAS,CAAC;CAC7C;AAqLD,eAAO,MAAM,oBAAoB,EAAE,aAAa,CAAC,OAAO,EAAE,OAAO,CAqChE,CAAC"}
@@ -0,0 +1,189 @@
1
+ "use strict";
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="92c2f965-765b-58d4-bf09-9eeac162ecee")}catch(e){}}();
3
+
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.recordBackendCommand = void 0;
6
+ const child_process_1 = require("child_process");
7
+ const client_1 = require("@alwaysmeticulous/client");
8
+ const common_1 = require("@alwaysmeticulous/common");
9
+ const downloading_helpers_1 = require("@alwaysmeticulous/downloading-helpers");
10
+ const common_options_1 = require("../../command-utils/common-options");
11
+ const sentry_utils_1 = require("../../command-utils/sentry.utils");
12
+ const cli_user_error_1 = require("../../utils/cli-user-error");
13
+ const constants_1 = require("../../utils/constants");
14
+ const resolve_project_identifier_1 = require("../../utils/resolve-project-identifier");
15
+ const backend_dev_command_utils_1 = require("./backend-dev-command.utils");
16
+ const backend_sidecar_utils_1 = require("./backend-sidecar.utils");
17
+ const DEV_COMMAND_SIGTERM_TIMEOUT_MS = 10_000;
18
+ const resolveRecordingTarget = async (options) => {
19
+ const logger = (0, common_1.initLogger)();
20
+ if (options.recordingToken) {
21
+ return { recordingToken: options.recordingToken, projectName: undefined };
22
+ }
23
+ const apiToken = await (0, client_1.resolveApiTokenWithOAuth)({
24
+ apiToken: options.apiToken,
25
+ enableOAuthLogin: true,
26
+ });
27
+ const { projectId } = await (0, resolve_project_identifier_1.resolveProjectIdentifier)(apiToken);
28
+ const client = await (0, client_1.createClientWithOAuth)({
29
+ apiToken: options.apiToken,
30
+ enableOAuthLogin: true,
31
+ });
32
+ const project = await (0, client_1.getProject)(client, projectId);
33
+ if (!project) {
34
+ throw new cli_user_error_1.CliUserError("Could not retrieve project data. Is the API token correct?");
35
+ }
36
+ if (!project.recordingToken) {
37
+ throw new cli_user_error_1.CliUserError("Could not retrieve recording token.");
38
+ }
39
+ logger.info(`Recording backend sessions for ${project.organization.name}/${project.name}`);
40
+ return {
41
+ recordingToken: project.recordingToken,
42
+ projectName: project.name,
43
+ };
44
+ };
45
+ const printWorkerInstructions = (sidecarUrl) => {
46
+ const logger = (0, common_1.initLogger)();
47
+ logger.info("");
48
+ logger.info(`Meticulous sidecar running at ${sidecarUrl}. To record your worker:`);
49
+ logger.info(" 1. Wrap your handler with withMeticulous from @alwaysmeticulous/backend-recorder-workerd");
50
+ logger.info(' 2. Enable the "nodejs_als" (or "nodejs_compat") compatibility flag');
51
+ logger.info(" 3. Expose the sidecar URL to the worker (workerd cannot see host environment variables):");
52
+ logger.info(` npx wrangler dev --var ${backend_dev_command_utils_1.SIDECAR_URL_VAR_NAME}:${sidecarUrl}`);
53
+ logger.info(` or add to .dev.vars: ${backend_dev_command_utils_1.SIDECAR_URL_VAR_NAME}=${sidecarUrl}`);
54
+ logger.info("");
55
+ };
56
+ const handler = async (options) => {
57
+ const logger = (0, common_1.initLogger)();
58
+ const devCommand = (0, backend_dev_command_utils_1.extractPassthroughCommand)(process.argv);
59
+ if (!devCommand && (options.devCommand?.length ?? 0) > 0) {
60
+ // Without the separator, yargs would swallow the dev command's own flags
61
+ // (e.g. its --port) as our options — refuse rather than silently starting
62
+ // in sidecar-only mode.
63
+ throw new cli_user_error_1.CliUserError("Pass the dev command after a -- separator, e.g.: meticulous record backend -- npx wrangler dev");
64
+ }
65
+ const mode = devCommand ? "wrapped" : "sidecar-only";
66
+ // Fail fast on auth before spawning anything.
67
+ const { recordingToken, projectName } = await resolveRecordingTarget(options);
68
+ logger.info("Fetching the Meticulous backend recorder sidecar...");
69
+ const bundlePath = await (0, downloading_helpers_1.fetchAsset)(constants_1.BACKEND_SIDECAR_BUNDLE_PATH);
70
+ const port = await (0, backend_sidecar_utils_1.resolveSidecarPort)(options.port, mode);
71
+ const done = (0, common_1.defer)();
72
+ const sidecar = await (0, backend_sidecar_utils_1.startSidecar)({
73
+ bundlePath,
74
+ port,
75
+ env: {
76
+ METICULOUS_RECORDING_TOKEN: recordingToken,
77
+ METICULOUS_EXPORT_MODE: options.exportMode,
78
+ ...(options.localOutputDir
79
+ ? { METICULOUS_LOCAL_OUTPUT_DIR: options.localOutputDir }
80
+ : {}),
81
+ ...(projectName ? { METICULOUS_PROJECT_NAME: projectName } : {}),
82
+ },
83
+ // Recording stopping is not fatal to the user's dev loop — keep the dev
84
+ // command (or the wait in sidecar-only mode) running.
85
+ onRecordingStopped: () => { },
86
+ });
87
+ let shuttingDown = false;
88
+ const shutdown = async (exitCode) => {
89
+ if (shuttingDown) {
90
+ return;
91
+ }
92
+ shuttingDown = true;
93
+ await sidecar.stop();
94
+ done.resolve(exitCode);
95
+ };
96
+ if (devCommand) {
97
+ const kind = (0, backend_dev_command_utils_1.classifyDevCommand)(devCommand);
98
+ const argv = options.injectSidecarVar && kind !== "unknown"
99
+ ? (0, backend_dev_command_utils_1.injectSidecarVar)(devCommand, kind, sidecar.url)
100
+ : devCommand;
101
+ if (options.injectSidecarVar && kind !== "unknown") {
102
+ logger.info(`Passing ${backend_dev_command_utils_1.SIDECAR_URL_VAR_NAME}=${sidecar.url} to ${kind === "wrangler-dev" ? "wrangler dev" : "wrangler pages dev"}`);
103
+ }
104
+ else {
105
+ printWorkerInstructions(sidecar.url);
106
+ }
107
+ const child = (0, child_process_1.spawn)(argv[0], argv.slice(1), {
108
+ stdio: "inherit",
109
+ env: {
110
+ ...process.env,
111
+ // Harmless for workerd (host env is invisible inside the isolate) but
112
+ // lets non-workerd tooling in the dev command see the URL.
113
+ [backend_dev_command_utils_1.SIDECAR_URL_VAR_NAME]: sidecar.url,
114
+ },
115
+ // npx/pnpm/yarn shims on Windows are .cmd files, which require a shell.
116
+ shell: process.platform === "win32",
117
+ });
118
+ child.on("error", (error) => {
119
+ logger.error(`Could not start dev command: ${String(error)}`);
120
+ void shutdown(1);
121
+ });
122
+ child.on("exit", (code, signal) => {
123
+ // Wrangler teardown may still emit late waitUntil capture events; the
124
+ // sidecar is flushed and stopped only now, after the dev command exited.
125
+ void shutdown(code ?? (signal ? 1 : 0));
126
+ });
127
+ const forwardSignal = (signal) => {
128
+ // On terminal Ctrl-C the child receives SIGINT alongside us (same
129
+ // process group); forwarding covers direct kills of the CLI process.
130
+ // The dev command's own exit then drives the shutdown path above.
131
+ if (child.exitCode === null && child.signalCode === null) {
132
+ child.kill(signal);
133
+ setTimeout(() => {
134
+ if (child.exitCode === null && child.signalCode === null) {
135
+ child.kill("SIGKILL");
136
+ }
137
+ }, DEV_COMMAND_SIGTERM_TIMEOUT_MS).unref();
138
+ }
139
+ };
140
+ process.on("SIGINT", () => forwardSignal("SIGINT"));
141
+ process.on("SIGTERM", () => forwardSignal("SIGTERM"));
142
+ }
143
+ else {
144
+ printWorkerInstructions(sidecar.url);
145
+ logger.info("Press Ctrl-C to stop recording.");
146
+ process.on("SIGINT", () => void shutdown(0));
147
+ process.on("SIGTERM", () => void shutdown(0));
148
+ }
149
+ const exitCode = await done.promise;
150
+ if (exitCode !== 0) {
151
+ process.exit(exitCode);
152
+ }
153
+ };
154
+ exports.recordBackendCommand = {
155
+ command: "backend [devCommand...]",
156
+ describe: "Record backend sessions from a Cloudflare Workers (workerd) app during local development. " +
157
+ "Starts the Meticulous recorder sidecar and optionally wraps your dev command: " +
158
+ "meticulous record backend -- npx wrangler dev",
159
+ builder: {
160
+ apiToken: common_options_1.OPTIONS.apiToken,
161
+ recordingToken: {
162
+ string: true,
163
+ description: "Recording token to upload with (skips API authentication). Defaults to the project's recording token resolved via the API token.",
164
+ },
165
+ port: {
166
+ number: true,
167
+ default: backend_sidecar_utils_1.DEFAULT_SIDECAR_PORT,
168
+ description: `Port for the sidecar to listen on (0 picks a free port; default ${backend_sidecar_utils_1.DEFAULT_SIDECAR_PORT})`,
169
+ },
170
+ exportMode: {
171
+ string: true,
172
+ choices: ["s3", "local"],
173
+ default: "s3",
174
+ description: 'Where the sidecar exports recorded sessions: "s3" uploads to Meticulous, "local" writes to disk for debugging',
175
+ },
176
+ localOutputDir: {
177
+ string: true,
178
+ description: "Directory for exported sessions when --exportMode is local",
179
+ },
180
+ injectSidecarVar: {
181
+ boolean: true,
182
+ default: true,
183
+ description: "Automatically pass the sidecar URL to a recognized wrangler dev command via --var/--binding",
184
+ },
185
+ },
186
+ handler: (0, sentry_utils_1.wrapHandler)(handler),
187
+ };
188
+ //# sourceMappingURL=backend.command.js.map
189
+ //# debugId=92c2f965-765b-58d4-bf09-9eeac162ecee
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend.command.js","sources":["../../../src/commands/record/backend.command.ts"],"sourceRoot":"","names":[],"mappings":"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","debugId":"92c2f965-765b-58d4-bf09-9eeac162ecee"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/record/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAI3C,eAAO,MAAM,aAAa,EAAE,aAY3B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/record/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAK3C,eAAO,MAAM,aAAa,EAAE,aAa3B,CAAC"}
@@ -1,8 +1,9 @@
1
1
  "use strict";
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="93d2232d-990c-5aaf-904d-4b5d1f75b086")}catch(e){}}();
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="2abf8c2d-a23f-51b5-8af9-09241c9b4b8d")}catch(e){}}();
3
3
 
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
5
  exports.recordCommand = void 0;
6
+ const backend_command_1 = require("./backend.command");
6
7
  const login_command_1 = require("./login.command");
7
8
  const session_command_1 = require("./session.command");
8
9
  exports.recordCommand = {
@@ -11,6 +12,7 @@ exports.recordCommand = {
11
12
  builder: (yargs) => yargs
12
13
  .command(session_command_1.recordSessionCommand)
13
14
  .command(login_command_1.recordLoginCommand)
15
+ .command(backend_command_1.recordBackendCommand)
14
16
  .demandCommand()
15
17
  .help(),
16
18
  handler: () => {
@@ -18,4 +20,4 @@ exports.recordCommand = {
18
20
  },
19
21
  };
20
22
  //# sourceMappingURL=index.js.map
21
- //# debugId=93d2232d-990c-5aaf-904d-4b5d1f75b086
23
+ //# debugId=2abf8c2d-a23f-51b5-8af9-09241c9b4b8d
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/commands/record/index.ts"],"sourceRoot":"","names":[],"mappings":";;;;;AACA,mDAAqD;AACrD,uDAAyD;AAE5C,QAAA,aAAa,GAAkB;IAC1C,OAAO,EAAE,QAAQ;IACjB,QAAQ,EAAE,iBAAiB;IAC3B,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,KAAK;SACF,OAAO,CAAC,sCAAoB,CAAC;SAC7B,OAAO,CAAC,kCAAkB,CAAC;SAC3B,aAAa,EAAE;SACf,IAAI,EAAE;IACX,OAAO,EAAE,GAAG,EAAE;QACZ,0BAA0B;IAC5B,CAAC;CACF,CAAC","debugId":"93d2232d-990c-5aaf-904d-4b5d1f75b086"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/commands/record/index.ts"],"sourceRoot":"","names":[],"mappings":";;;;;AACA,uDAAyD;AACzD,mDAAqD;AACrD,uDAAyD;AAE5C,QAAA,aAAa,GAAkB;IAC1C,OAAO,EAAE,QAAQ;IACjB,QAAQ,EAAE,iBAAiB;IAC3B,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,KAAK;SACF,OAAO,CAAC,sCAAoB,CAAC;SAC7B,OAAO,CAAC,kCAAkB,CAAC;SAC3B,OAAO,CAAC,sCAAoB,CAAC;SAC7B,aAAa,EAAE;SACf,IAAI,EAAE;IACX,OAAO,EAAE,GAAG,EAAE;QACZ,0BAA0B;IAC5B,CAAC;CACF,CAAC","debugId":"2abf8c2d-a23f-51b5-8af9-09241c9b4b8d"}
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAwBA,eAAO,MAAM,IAAI,QAAa,OAAO,CAAC,IAAI,CA6FzC,CAAC"}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAyBA,eAAO,MAAM,IAAI,QAAa,OAAO,CAAC,IAAI,CAgGzC,CAAC"}
package/dist/main.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="2bdd198d-b8de-5529-aca1-898e94712e3a")}catch(e){}}();
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="72c07600-77ed-5fec-b3e2-13959f392538")}catch(e){}}();
3
3
 
4
4
  var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  return (mod && mod.__esModule) ? mod : { "default": mod };
@@ -8,6 +8,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
8
8
  exports.main = void 0;
9
9
  const path_1 = require("path");
10
10
  const common_1 = require("@alwaysmeticulous/common");
11
+ const client_1 = require("@alwaysmeticulous/client");
11
12
  const sentry_1 = require("@alwaysmeticulous/sentry");
12
13
  const yargs_1 = __importDefault(require("yargs"));
13
14
  const json_args_1 = require("./command-utils/json-args");
@@ -20,6 +21,9 @@ const handleDataDir = (dataDir) => {
20
21
  (0, common_1.setMeticulousLocalDataDir)(dataDir);
21
22
  };
22
23
  const main = async () => {
24
+ // Before any client is created, so requests from a CLI command are
25
+ // distinguishable from direct use of @alwaysmeticulous/client as a library.
26
+ (0, client_1.declareClientAppInfo)("cli");
23
27
  (0, common_1.initLogger)();
24
28
  const packageJsonPath = (0, path_1.normalize)((0, path_1.join)(__dirname, "../package.json"));
25
29
  const meticulousVersion = await (0, common_1.getMeticulousVersion)(packageJsonPath);
@@ -101,4 +105,4 @@ const main = async () => {
101
105
  exports.main = main;
102
106
  void (0, exports.main)();
103
107
  //# sourceMappingURL=main.js.map
104
- //# debugId=2bdd198d-b8de-5529-aca1-898e94712e3a
108
+ //# debugId=72c07600-77ed-5fec-b3e2-13959f392538
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sources":["../src/main.ts"],"sourceRoot":"","names":[],"mappings":"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","debugId":"2bdd198d-b8de-5529-aca1-898e94712e3a"}
1
+ {"version":3,"file":"main.js","sources":["../src/main.ts"],"sourceRoot":"","names":[],"mappings":"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","debugId":"72c07600-77ed-5fec-b3e2-13959f392538"}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="caa44dc4-2935-5280-9da0-9a8830aae76f")}catch(e){}}();
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="cafa0aa8-de2b-5cc7-8b74-36cc15ac2a08")}catch(e){}}();
3
3
 
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
5
  const vitest_1 = require("vitest");
@@ -53,13 +53,16 @@ const resolve_test_run_from_commit_1 = require("../resolve-test-run-from-commit"
53
53
  (0, vitest_1.expect)(() => (0, resolve_test_run_from_commit_1.assertTestRunComplete)("tr-1", "Running")).toThrow(cli_user_error_1.CliUserError);
54
54
  (0, vitest_1.expect)(() => (0, resolve_test_run_from_commit_1.assertTestRunComplete)("tr-1", "Running")).toThrow(/is not complete/);
55
55
  });
56
- (0, vitest_1.test)("throws 'session-pool base run' for Partial", () => {
56
+ // Deliberately not special-cased here: whether a base run is usable depends
57
+ // on what's being fetched, so each command intercepts Partial with its own
58
+ // policy and wording first (test-run-diffs rejects, js-coverage accepts).
59
+ (0, vitest_1.test)("does not special-case Partial", () => {
57
60
  (0, vitest_1.expect)(() => (0, resolve_test_run_from_commit_1.assertTestRunComplete)("tr-1", "Partial")).toThrow(cli_user_error_1.CliUserError);
58
- (0, vitest_1.expect)(() => (0, resolve_test_run_from_commit_1.assertTestRunComplete)("tr-1", "Partial")).toThrow(/session-pool base run/);
61
+ (0, vitest_1.expect)(() => (0, resolve_test_run_from_commit_1.assertTestRunComplete)("tr-1", "Partial")).toThrow(/is not complete \(status: Partial\)/);
59
62
  });
60
63
  (0, vitest_1.test)("uses the resultName in the not-yet-available message", () => {
61
64
  (0, vitest_1.expect)(() => (0, resolve_test_run_from_commit_1.assertTestRunComplete)("tr-1", "Running", { resultName: "coverage" })).toThrow(/coverage not yet available/);
62
65
  });
63
66
  });
64
67
  //# sourceMappingURL=resolve-test-run-from-commit.spec.js.map
65
- //# debugId=caa44dc4-2935-5280-9da0-9a8830aae76f
68
+ //# debugId=cafa0aa8-de2b-5cc7-8b74-36cc15ac2a08