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.
- package/README.md +30 -11
- package/README.zh-CN.md +28 -11
- package/dist/commands/audit.js +22 -8
- package/dist/commands/audit.js.map +1 -1
- package/dist/commands/doctor.js +36 -10
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/editors.d.ts +63 -12
- package/dist/commands/editors.js +318 -39
- package/dist/commands/editors.js.map +1 -1
- package/dist/commands/explore.js +37 -35
- package/dist/commands/explore.js.map +1 -1
- package/dist/commands/init.js +39 -30
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/run.js +8 -1
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/uninstall.js +25 -41
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/commands/update.js +35 -30
- package/dist/commands/update.js.map +1 -1
- package/dist/shared/mcp.d.ts +15 -16
- package/dist/shared/mcp.js +30 -66
- package/dist/shared/mcp.js.map +1 -1
- package/employee-standards.md +17 -3
- package/package.json +6 -2
- package/templates/e2e-command.md +2 -0
package/dist/commands/editors.js
CHANGED
|
@@ -1,7 +1,28 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
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
|
-
|
|
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
|
-
// ───
|
|
21
|
-
/**
|
|
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
|
-
// ───
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
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,
|
|
59
|
-
console.log(chalk.green(` ✓
|
|
179
|
+
writeFileSync(absPath, adapter.formatCommand(meta));
|
|
180
|
+
console.log(chalk.green(` ✓ ${adapter.label}: ${relPath}`));
|
|
60
181
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
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(` ✓
|
|
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 +
|
|
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(` ✓
|
|
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(` ✓
|
|
230
|
+
console.log(chalk.green(` ✓ ${fileLabel}: appended employee-grade standards with markers`));
|
|
100
231
|
}
|
|
101
232
|
else {
|
|
102
|
-
|
|
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
|
-
/**
|
|
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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"}
|
package/dist/commands/explore.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
103
|
+
lines.push(...failureLines);
|
|
104
|
+
return lines.join("\n");
|
|
83
105
|
}
|
|
84
|
-
// ──
|
|
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
|
|
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(`
|
|
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
|
|
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 (
|
|
236
|
-
|
|
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.
|
|
243
|
-
|
|
244
|
-
const
|
|
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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"}
|