openspec-playwright 0.3.43 → 0.3.45

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.
@@ -1,7 +1,28 @@
1
- import { existsSync, mkdirSync, writeFileSync, readFileSync } from "fs";
2
- import { join, dirname, resolve as pathResolve } from "path";
1
+ /**
2
+ * Editor adapter layer.
3
+ *
4
+ * Both Claude Code and OpenCode can host the /opsx:e2e command, plus a
5
+ * project-level rules file (CLAUDE.md / AGENTS.md) and an MCP server
6
+ * definition. Each editor has its own conventions — file path, frontmatter
7
+ * shape, MCP install mechanism — so this module exposes a single
8
+ * `EditorAdapter` interface and a registry that callers can iterate.
9
+ *
10
+ * Conventions follow the upstream OpenSpec reference implementation:
11
+ * - Claude: `.claude/commands/opsx/<id>.md`, full frontmatter,
12
+ * `claude mcp add …`, reads CLAUDE.md directly.
13
+ * - OpenCode: `.opencode/commands/opsx-<id>.md`, description-only
14
+ * frontmatter, edits `opencode.json(c)`, reads files listed
15
+ * under `instructions` (CLAUDE.md is a built-in fallback).
16
+ */
17
+ import { existsSync, mkdirSync, rmSync, writeFileSync, readFileSync, } from "fs";
18
+ import { execFileSync } from "node:child_process";
19
+ import { join, dirname, basename, resolve as pathResolve } from "path";
3
20
  import chalk from "chalk";
4
- /** Shared YAML escape matches OpenSpec's escape logic */
21
+ import { modify, applyEdits, parseTree as parseJsonc, findNodeAtLocation, getNodeValue, } from "jsonc-parser";
22
+ import { TIMEOUT } from "../shared/constants.js";
23
+ import { needsShell } from "../shared/platform.js";
24
+ // ─── YAML helpers (shared by Claude frontmatter and elsewhere) ───────────
25
+ /** Escape a value for safe inclusion in a YAML frontmatter scalar. */
5
26
  export function escapeYamlValue(value) {
6
27
  const needsQuoting = /[:\n\r#{}[\],&*!|>'"%@`]|^\s|\s$/.test(value);
7
28
  if (needsQuoting) {
@@ -13,12 +34,31 @@ export function escapeYamlValue(value) {
13
34
  }
14
35
  return value;
15
36
  }
16
- /** Format tags as YAML inline array */
37
+ /** Format tags as a YAML inline array. */
17
38
  export function formatTagsArray(tags) {
18
39
  return `[${tags.map((t) => escapeYamlValue(t)).join(", ")}]`;
19
40
  }
20
- // ─── Claude Code ──────────────────────────────────────────────────────────────
21
- /** Claude Code command file: .claude/commands/opsx/<id>.md */
41
+ // ─── Body transform ──────────────────────────────────────────────────────
42
+ /**
43
+ * OpenCode slash-command names are hyphenated (`/opsx-e2e`), Claude's are
44
+ * colon-prefixed (`/opsx:e2e`). Rewrite all `/opsx:` references in a
45
+ * command body for OpenCode installation.
46
+ */
47
+ export function transformToHyphenCommands(text) {
48
+ return text.replace(/\/opsx:/g, "/opsx-");
49
+ }
50
+ /** Build the command metadata for the /opsx:e2e command. */
51
+ export function buildCommandMeta(body) {
52
+ return {
53
+ id: "e2e",
54
+ name: "OPSX: E2E",
55
+ description: "Run Playwright E2E verification for an OpenSpec change",
56
+ category: "OpenSpec",
57
+ tags: ["openspec", "playwright", "e2e", "testing"],
58
+ body,
59
+ };
60
+ }
61
+ // ─── Claude Code adapter ─────────────────────────────────────────────────
22
62
  export function formatClaudeCommand(meta) {
23
63
  return `---
24
64
  name: ${escapeYamlValue(meta.name)}
@@ -33,60 +73,151 @@ ${meta.body}
33
73
  export function getClaudeCommandPath(id) {
34
74
  return join(".claude", "commands", "opsx", `${id}.md`);
35
75
  }
36
- /** Build the command metadata for Claude Code */
37
- export function buildCommandMeta(body) {
38
- return {
39
- id: "e2e",
40
- name: "OPSX: E2E",
41
- description: "Run Playwright E2E verification for an OpenSpec change",
42
- category: "OpenSpec",
43
- tags: ["openspec", "playwright", "e2e", "testing"],
44
- body,
45
- };
46
- }
47
- /** Detect if Claude Code is installed */
48
76
  export function hasClaudeCode(projectRoot) {
49
77
  return existsSync(join(projectRoot, ".claude"));
50
78
  }
51
- // ─── Install helpers ───────────────────────────────────────────────────────
52
- /** Install command files for Claude Code */
53
- export function installForClaudeCode(body, projectRoot) {
54
- const meta = buildCommandMeta(body);
55
- const relPath = getClaudeCommandPath(meta.id);
79
+ // ─── OpenCode adapter ────────────────────────────────────────────────────
80
+ export function formatOpenCodeCommand(meta) {
81
+ const body = transformToHyphenCommands(meta.body);
82
+ return `---
83
+ description: ${escapeYamlValue(meta.description)}
84
+ ---
85
+
86
+ ${body}
87
+ `;
88
+ }
89
+ export function getOpenCodeCommandPath(id) {
90
+ return join(".opencode", "commands", `opsx-${id}.md`);
91
+ }
92
+ export function hasOpenCode(projectRoot) {
93
+ return existsSync(join(projectRoot, ".opencode"));
94
+ }
95
+ const JSONC_FORMAT = { tabSize: 2, insertSpaces: true };
96
+ /** Find the first existing opencode.json(c), or null. */
97
+ function findOpenCodeConfig(projectRoot) {
98
+ for (const name of ["opencode.jsonc", "opencode.json"]) {
99
+ const p = join(projectRoot, name);
100
+ if (existsSync(p))
101
+ return { path: p, text: readFileSync(p, "utf-8") };
102
+ }
103
+ return null;
104
+ }
105
+ /**
106
+ * Set a value at a JSON path inside opencode.json(c), creating the file
107
+ * with a `$schema` scaffold if it doesn't exist. Replaces any existing
108
+ * value at the path (does not merge arrays).
109
+ */
110
+ function setOpenCodeValue(projectRoot, keySegments, value) {
111
+ const existing = findOpenCodeConfig(projectRoot);
112
+ const targetPath = existing?.path ?? join(projectRoot, "opencode.jsonc");
113
+ if (!existing) {
114
+ const scaffold = {
115
+ $schema: "https://opencode.ai/config.json",
116
+ };
117
+ // Build nested scaffold for multi-segment keys (e.g. ["mcp", "playwright"])
118
+ let cursor = scaffold;
119
+ for (let i = 0; i < keySegments.length - 1; i++) {
120
+ const k = String(keySegments[i]);
121
+ cursor[k] = {};
122
+ cursor = cursor[k];
123
+ }
124
+ cursor[String(keySegments[keySegments.length - 1])] = value;
125
+ // ponytail: new file uses 2-space indent; modify branch preserves existing formatting.
126
+ writeFileSync(targetPath, JSON.stringify(scaffold, null, 2) + "\n");
127
+ return;
128
+ }
129
+ const edits = modify(existing.text, keySegments, value, {
130
+ formattingOptions: JSONC_FORMAT,
131
+ });
132
+ writeFileSync(targetPath, applyEdits(existing.text, edits));
133
+ }
134
+ /** Read the current value at a JSON path (returns undefined if missing). */
135
+ function readOpenCodeValue(text, keySegments) {
136
+ try {
137
+ const tree = parseJsonc(text);
138
+ if (!tree)
139
+ return undefined;
140
+ const node = findNodeAtLocation(tree, keySegments);
141
+ return node ? getNodeValue(node) : undefined;
142
+ }
143
+ catch {
144
+ return undefined;
145
+ }
146
+ }
147
+ /** Read the current `instructions` array from opencode.json(c), or undefined. */
148
+ function readOpenCodeInstructions(projectRoot) {
149
+ const config = findOpenCodeConfig(projectRoot);
150
+ if (!config)
151
+ return undefined;
152
+ const value = readOpenCodeValue(config.text, ["instructions"]);
153
+ if (Array.isArray(value) && value.every((v) => typeof v === "string")) {
154
+ return value;
155
+ }
156
+ return undefined;
157
+ }
158
+ // ─── Registry ────────────────────────────────────────────────────────────
159
+ const ADAPTERS = [
160
+ // claudeAdapter is declared further down (after the shared mcp helpers)
161
+ // We forward-define it after shared code; the registry is filled in
162
+ // by `registerAdapter` below. See the bottom of this file.
163
+ ];
164
+ export function getAdapter(id) {
165
+ return ADAPTERS.find((a) => a.id === id);
166
+ }
167
+ export function detectAdapters(projectRoot) {
168
+ return ADAPTERS.filter((a) => a.detect(projectRoot));
169
+ }
170
+ function registerAdapter(adapter) {
171
+ ADAPTERS.push(adapter);
172
+ }
173
+ // ─── Install helpers ─────────────────────────────────────────────────────
174
+ /** Install the command file for one adapter. */
175
+ export function installCommand(adapter, meta, projectRoot) {
176
+ const relPath = adapter.commandFilePath(meta.id);
56
177
  const absPath = pathResolve(projectRoot, relPath);
57
178
  mkdirSync(dirname(absPath), { recursive: true });
58
- writeFileSync(absPath, formatClaudeCommand(meta));
59
- console.log(chalk.green(` ✓ claude: ${relPath}`));
179
+ writeFileSync(absPath, adapter.formatCommand(meta));
180
+ console.log(chalk.green(` ✓ ${adapter.label}: ${relPath}`));
60
181
  }
61
- /** Install project-level CLAUDE.md with employee-grade standards + OpenSpec context */
62
- export function installProjectClaudeMd(projectRoot, standardsContent) {
63
- const dest = join(projectRoot, "CLAUDE.md");
182
+ // ─── Project rules file (CLAUDE.md / AGENTS.md) ──────────────────────────
183
+ /**
184
+ * Install employee-grade standards into the editor's rules file
185
+ * (CLAUDE.md for Claude, AGENTS.md for OpenCode). Wraps content in
186
+ * `<!-- OPENSPEC:START -->` / `<!-- OPENSPEC:END -->` markers so future
187
+ * updates can replace the block without touching the rest of the file.
188
+ */
189
+ export function installProjectClaudeMd(projectRoot, standardsContent, adapter = claudeAdapter) {
190
+ const dest = adapter.projectRulesPath(projectRoot);
191
+ const fileLabel = basename(dest);
64
192
  const markerStart = "<!-- OPENSPEC:START -->";
65
193
  const markerEnd = "<!-- OPENSPEC:END -->";
66
194
  if (!existsSync(dest)) {
67
- // No CLAUDE.md → create with markers wrapping standards
68
195
  const projName = projectRoot.split("/").pop() ?? "Project";
69
196
  const content = `# ${projName}\n\n${markerStart}\n\n${standardsContent}\n\n${markerEnd}\n`;
70
197
  writeFileSync(dest, content);
71
- console.log(chalk.green(` ✓ CLAUDE.md: created with employee-grade standards`));
198
+ console.log(chalk.green(` ✓ ${fileLabel}: created with employee-grade standards`));
72
199
  return;
73
200
  }
74
- // CLAUDE.md exists → read and manage OPENSPEC block
75
201
  const existing = readFileSync(dest, "utf-8");
76
202
  const hasStart = existing.includes(markerStart);
77
203
  const hasEnd = existing.includes(markerEnd);
78
204
  if (hasStart && hasEnd) {
79
- // Markers exist → replace the block (preserves outside content)
80
205
  const startIdx = existing.indexOf(markerStart);
81
206
  const endIdx = existing.indexOf(markerEnd) + markerEnd.length;
82
207
  const before = existing.slice(0, startIdx).trimEnd();
83
208
  const after = existing.slice(endIdx);
84
- const updated = before + "\n" + markerStart + "\n\n" + standardsContent.trim() + "\n\n" + markerEnd + after;
209
+ const updated = before +
210
+ "\n" +
211
+ markerStart +
212
+ "\n\n" +
213
+ standardsContent.trim() +
214
+ "\n\n" +
215
+ markerEnd +
216
+ after;
85
217
  writeFileSync(dest, updated);
86
- console.log(chalk.green(` ✓ CLAUDE.md: updated employee-grade standards (markers preserved, content refreshed)`));
218
+ console.log(chalk.green(` ✓ ${fileLabel}: updated employee-grade standards (markers preserved, content refreshed)`));
87
219
  }
88
220
  else if (!hasStart && !hasEnd) {
89
- // No markers → append with markers
90
221
  const updated = existing.trim() +
91
222
  "\n\n" +
92
223
  markerStart +
@@ -96,15 +227,163 @@ export function installProjectClaudeMd(projectRoot, standardsContent) {
96
227
  markerEnd +
97
228
  "\n";
98
229
  writeFileSync(dest, updated);
99
- console.log(chalk.green(` ✓ CLAUDE.md: appended employee-grade standards with markers`));
230
+ console.log(chalk.green(` ✓ ${fileLabel}: appended employee-grade standards with markers`));
100
231
  }
101
232
  else {
102
- // Partial markers (start without end or vice versa) → malformed, warn
103
- console.log(chalk.yellow(` ⚠ CLAUDE.md has incomplete OPENSPEC markers — skipped`));
233
+ console.log(chalk.yellow(` ⚠ ${fileLabel} has incomplete OPENSPEC markers skipped`));
104
234
  }
105
235
  }
106
- /** Read the employee-grade standards from a source file */
236
+ /**
237
+ * Route the employee-grade standards into the right rules file(s) for the
238
+ * detected editors:
239
+ *
240
+ * - 1 editor detected → write to that editor's rules file
241
+ * (CLAUDE.md for Claude, AGENTS.md for OpenCode)
242
+ * - 2 editors detected → write CLAUDE.md (OpenCode reads it natively)
243
+ * and register `CLAUDE.md` in `opencode.json[c].instructions`
244
+ * so OpenCode treats it as a project rule.
245
+ */
246
+ export function installProjectRules(projectRoot, standardsContent, detected) {
247
+ if (detected.length === 0)
248
+ return;
249
+ if (detected.length === 1) {
250
+ installProjectClaudeMd(projectRoot, standardsContent, detected[0]);
251
+ // OpenCode needs explicit registration to read AGENTS.md as a project
252
+ // rule. Claude reads CLAUDE.md natively, so no instructions entry needed.
253
+ if (detected[0].id === "opencode" && detected[0].registerInstructions) {
254
+ const existing = readOpenCodeInstructions(projectRoot);
255
+ const next = Array.from(new Set([...(existing ?? []), "AGENTS.md"]));
256
+ detected[0].registerInstructions(projectRoot, next);
257
+ }
258
+ return;
259
+ }
260
+ // Both detected: write CLAUDE.md for both, plus explicit instructions
261
+ installProjectClaudeMd(projectRoot, standardsContent, claudeAdapter);
262
+ if (opencodeAdapter.registerInstructions) {
263
+ const existing = readOpenCodeInstructions(projectRoot);
264
+ const next = Array.from(new Set([...(existing ?? []), "CLAUDE.md"]));
265
+ opencodeAdapter.registerInstructions(projectRoot, next);
266
+ }
267
+ }
268
+ /** Remove the OPENSPEC markers block from a rules file (CLAUDE.md / AGENTS.md). */
269
+ export function cleanProjectRules(adapter, projectRoot) {
270
+ const dest = adapter.projectRulesPath(projectRoot);
271
+ const fileLabel = basename(dest);
272
+ if (!existsSync(dest)) {
273
+ console.log(chalk.gray(` - ${fileLabel} not found, skipping`));
274
+ return;
275
+ }
276
+ const existing = readFileSync(dest, "utf-8");
277
+ const markerStart = "<!-- OPENSPEC:START -->";
278
+ if (!existing.includes(markerStart)) {
279
+ console.log(chalk.gray(` - No OpenSpec markers found in ${fileLabel}`));
280
+ return;
281
+ }
282
+ const OPENSPEC_BLOCK = /\s*<!-- OPENSPEC:START -->[\s\S]*?<!-- OPENSPEC:END -->\s*/g;
283
+ let updated = existing.replace(OPENSPEC_BLOCK, "\n\n");
284
+ // Collapse runs of 3+ blank lines down to 2, trim
285
+ updated = updated.replace(/\n{3,}/g, "\n\n").trim();
286
+ if (updated === "") {
287
+ rmSync(dest);
288
+ console.log(chalk.green(` ✓ Removed empty ${fileLabel}`));
289
+ return;
290
+ }
291
+ writeFileSync(dest, updated + "\n");
292
+ console.log(chalk.green(` ✓ Removed OpenSpec markers from ${fileLabel}`));
293
+ }
294
+ /** Read the employee-grade standards source file (empty string if missing). */
107
295
  export function readEmployeeStandards(srcPath) {
108
296
  return existsSync(srcPath) ? readFileSync(srcPath, "utf-8") : "";
109
297
  }
298
+ // ─── Adapter instances (registered after helpers above are defined) ──────
299
+ //
300
+ // We declare them here (not at the top) so they can reference the helper
301
+ // functions defined in this same module. JS hoisting covers `function`
302
+ // declarations; `const` arrows don't get hoisted, so the order matters.
303
+ function claudeMcpOutputIncludes(output, serverName) {
304
+ return String(output ?? "").includes(serverName);
305
+ }
306
+ export const claudeAdapter = {
307
+ id: "claude",
308
+ label: "claude",
309
+ displayName: "Claude Code",
310
+ detect: hasClaudeCode,
311
+ commandFilePath: getClaudeCommandPath,
312
+ formatCommand: formatClaudeCommand,
313
+ projectRulesPath: (root) => join(root, "CLAUDE.md"),
314
+ isMcpInstalled(_root, serverName) {
315
+ try {
316
+ const out = execFileSync("claude", ["mcp", "list"], {
317
+ encoding: "utf-8",
318
+ timeout: TIMEOUT.MCP_LIST,
319
+ stdio: ["pipe", "pipe", "pipe"],
320
+ shell: needsShell,
321
+ });
322
+ return claudeMcpOutputIncludes(out, serverName);
323
+ }
324
+ catch {
325
+ // Command failed — assume server not installed
326
+ return false;
327
+ }
328
+ },
329
+ installMcp(_root, serverName, command) {
330
+ execFileSync("claude", ["mcp", "add", serverName, ...command], {
331
+ encoding: "utf-8",
332
+ timeout: TIMEOUT.MCP_LIST,
333
+ stdio: ["pipe", "pipe", "pipe"],
334
+ shell: needsShell,
335
+ });
336
+ },
337
+ removeMcp(_root, serverName) {
338
+ execFileSync("claude", ["mcp", "remove", serverName], {
339
+ encoding: "utf-8",
340
+ timeout: TIMEOUT.MCP_LIST,
341
+ stdio: ["pipe", "pipe", "pipe"],
342
+ shell: needsShell,
343
+ });
344
+ },
345
+ };
346
+ export const opencodeAdapter = {
347
+ id: "opencode",
348
+ label: "opencode",
349
+ displayName: "OpenCode",
350
+ detect: hasOpenCode,
351
+ commandFilePath: getOpenCodeCommandPath,
352
+ formatCommand: formatOpenCodeCommand,
353
+ projectRulesPath: (root) => join(root, "AGENTS.md"),
354
+ isMcpInstalled(projectRoot, serverName) {
355
+ const config = findOpenCodeConfig(projectRoot);
356
+ if (!config)
357
+ return false;
358
+ const value = readOpenCodeValue(config.text, ["mcp", serverName]);
359
+ return value !== undefined;
360
+ },
361
+ installMcp(projectRoot, serverName, command) {
362
+ setOpenCodeValue(projectRoot, ["mcp", serverName], {
363
+ type: "local",
364
+ command,
365
+ });
366
+ },
367
+ removeMcp(projectRoot, serverName) {
368
+ // Read current mcp map, rebuild without this server, write back
369
+ const config = findOpenCodeConfig(projectRoot);
370
+ if (!config)
371
+ return;
372
+ const value = readOpenCodeValue(config.text, ["mcp", serverName]);
373
+ if (value === undefined)
374
+ return;
375
+ const current = readOpenCodeValue(config.text, ["mcp"]);
376
+ if (current && typeof current === "object") {
377
+ const next = { ...current };
378
+ delete next[serverName];
379
+ setOpenCodeValue(projectRoot, ["mcp"], next);
380
+ }
381
+ },
382
+ registerInstructions(projectRoot, instructions) {
383
+ setOpenCodeValue(projectRoot, ["instructions"], instructions);
384
+ },
385
+ };
386
+ // Register the adapters now that the const arrows exist
387
+ registerAdapter(claudeAdapter);
388
+ registerAdapter(opencodeAdapter);
110
389
  //# sourceMappingURL=editors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"editors.js","sourceRoot":"","sources":["../../src/commands/editors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"editors.js","sourceRoot":"","sources":["../../src/commands/editors.ts"],"names":[],"mappings":"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"}
@@ -62,9 +62,30 @@ function updateExplorationFile(original, results) {
62
62
  return updatedLines.join("\n");
63
63
  }
64
64
  function appendFailureSection(content, results) {
65
+ // Remove any existing failure section so re-runs replace, not duplicate.
66
+ // Matches "## Exploration Failures" up to the next "## " header (or EOF).
67
+ const lines = content.split("\n");
68
+ const startIdx = lines.findIndex((l) => /^## Exploration Failures\s*$/.test(l));
69
+ if (startIdx !== -1) {
70
+ let endIdx = lines.length;
71
+ for (let i = startIdx + 1; i < lines.length; i++) {
72
+ if (/^##\s/.test(lines[i])) {
73
+ endIdx = i;
74
+ break;
75
+ }
76
+ }
77
+ while (endIdx > startIdx && lines[endIdx - 1].trim() === "")
78
+ endIdx--;
79
+ lines.splice(startIdx, endIdx - startIdx);
80
+ }
65
81
  const failures = results.filter((r) => r.status === "error" || r.status === "auth-required");
66
- if (failures.length === 0)
67
- return content;
82
+ if (failures.length === 0) {
83
+ // Trim trailing blank lines left by the removed section
84
+ while (lines.length > 0 && lines[lines.length - 1].trim() === "") {
85
+ lines.pop();
86
+ }
87
+ return lines.length > 0 ? lines.join("\n") + "\n" : "";
88
+ }
68
89
  const failureLines = [
69
90
  "",
70
91
  "## Exploration Failures",
@@ -79,9 +100,10 @@ function appendFailureSection(content, results) {
79
100
  failureLines.push(`| ${f.path} | ${f.status} | ${f.errorMessage ?? "unknown"} | ${notes} |`);
80
101
  }
81
102
  failureLines.push("");
82
- return content + failureLines.join("\n");
103
+ lines.push(...failureLines);
104
+ return lines.join("\n");
83
105
  }
84
- // ── Worker ──────────────────────────────────────────────────────────────────────
106
+ // ── Sequential runner ─────────────────────────────────────────────────────────
85
107
  async function exploreRoute(page, route, baseUrl) {
86
108
  const url = `${baseUrl}${route}`;
87
109
  const loginPatterns = [
@@ -157,7 +179,7 @@ async function exploreRoute(page, route, baseUrl) {
157
179
  };
158
180
  }
159
181
  }
160
- async function runWorker(workerId, routes, baseUrl) {
182
+ async function runSequential(routes, baseUrl) {
161
183
  const results = [];
162
184
  if (routes.length === 0)
163
185
  return results;
@@ -178,7 +200,7 @@ async function runWorker(workerId, routes, baseUrl) {
178
200
  ? chalk.yellow("auth")
179
201
  : chalk.red("err");
180
202
  const pathDisplay = route.length > 40 ? route.slice(0, 40) + "..." : route;
181
- console.log(` [worker ${workerId}] ${icon} ${pathDisplay}`);
203
+ console.log(` ${icon} ${pathDisplay}`);
182
204
  }
183
205
  await context.close();
184
206
  }
@@ -189,19 +211,13 @@ async function runWorker(workerId, routes, baseUrl) {
189
211
  }
190
212
  return results;
191
213
  }
192
- function chunkRoutes(routes, numWorkers) {
193
- const chunks = Array.from({ length: numWorkers }, () => []);
194
- routes.forEach((route, i) => {
195
- chunks[i % numWorkers].push(route);
196
- });
197
- return chunks;
198
- }
199
214
  // ── Main ───────────────────────────────────────────────────────────────────────
200
215
  export async function explore(options) {
201
216
  const projectRoot = process.cwd();
202
- const MAX_WORKERS = 16;
203
- const numWorkers = Math.min(options.parallel ?? 4, MAX_WORKERS);
204
217
  const startTime = Date.now();
218
+ // Note: `options.parallel` is accepted for backward compat but ignored —
219
+ // routes run sequentially in a single browser for predictability.
220
+ void options.parallel;
205
221
  // ── Signal handling: clean up on Ctrl+C / SIGTERM ──
206
222
  let interrupted = false;
207
223
  const cleanup = () => {
@@ -213,7 +229,7 @@ export async function explore(options) {
213
229
  };
214
230
  process.on("SIGINT", cleanup);
215
231
  process.on("SIGTERM", cleanup);
216
- console.log(chalk.blue(`\nApp Exploration — ${numWorkers} workers\n`));
232
+ console.log(chalk.blue(`\nApp Exploration (sequential)\n`));
217
233
  // 1. Read app-exploration.md
218
234
  const explorationPath = join(projectRoot, "app-exploration.md");
219
235
  if (!existsSync(explorationPath)) {
@@ -232,29 +248,15 @@ export async function explore(options) {
232
248
  const paths = parsed.routes.map((r) => r.path);
233
249
  console.log(chalk.blue("─── Dry Run ───"));
234
250
  if (options.dryRun) {
235
- for (let i = 0; i < paths.length; i++) {
236
- const chunk = i % numWorkers;
237
- console.log(` worker ${chunk}: ${paths[i]}`);
251
+ for (const path of paths) {
252
+ console.log(` → ${path}`);
238
253
  }
239
254
  console.log(chalk.gray(`\n (dry run — no browsers launched)\n`));
240
255
  return;
241
256
  }
242
- // 2. Split routes into chunks
243
- const chunks = chunkRoutes(paths, numWorkers);
244
- const nonEmptyChunks = chunks
245
- .map((c, i) => ({ chunk: c, id: i }))
246
- .filter((x) => x.chunk.length > 0);
247
- console.log(chalk.blue(`─── Exploring ${paths.length} routes with ${nonEmptyChunks.length} workers ───\n`));
248
- // 3. Launch workers concurrently
249
- const workerPromises = nonEmptyChunks.map(({ chunk, id }) => runWorker(id, chunk, baseUrl));
250
- const settled = await Promise.allSettled(workerPromises);
251
- // 4. Merge results
252
- const allResults = [];
253
- for (const result of settled) {
254
- if (result.status === "fulfilled") {
255
- allResults.push(...result.value);
256
- }
257
- }
257
+ // 2. Single browser, sequential exploration
258
+ console.log(chalk.blue(`─── Exploring ${paths.length} routes (sequential) ───\n`));
259
+ const allResults = await runSequential(paths, baseUrl);
258
260
  // 5. Sort results to match original route order
259
261
  const pathOrder = new Map(paths.map((p, i) => [p, i]));
260
262
  allResults.sort((a, b) => (pathOrder.get(a.path) ?? 0) - (pathOrder.get(b.path) ?? 0));
@@ -1 +1 @@
1
- {"version":3,"file":"explore.js","sourceRoot":"","sources":["../../src/commands/explore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"explore.js","sourceRoot":"","sources":["../../src/commands/explore.ts"],"names":[],"mappings":"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"}