openspec-playwright 0.3.80 → 0.3.82
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 +32 -10
- package/README.zh-CN.md +4 -2
- package/dist/commands/editors/configured.d.ts +23 -0
- package/dist/commands/editors/configured.js +63 -0
- package/dist/commands/editors/configured.js.map +1 -0
- package/dist/commands/editors/project-rules.d.ts +18 -0
- package/dist/commands/editors/project-rules.js +12 -3
- package/dist/commands/editors/project-rules.js.map +1 -1
- package/dist/commands/editors/removal.d.ts +52 -0
- package/dist/commands/editors/removal.js +156 -0
- package/dist/commands/editors/removal.js.map +1 -0
- package/dist/commands/editors.d.ts +3 -1
- package/dist/commands/editors.js +5 -1
- package/dist/commands/editors.js.map +1 -1
- package/dist/commands/init.d.ts +17 -5
- package/dist/commands/init.js +118 -16
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/uninstall.js +10 -26
- package/dist/commands/uninstall.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -98,20 +98,42 @@ repeats are de-duplicated, and `all`/`none` cannot be mixed with specific
|
|
|
98
98
|
ids. A `--tools` id is configured even when the editor is not detected
|
|
99
99
|
(its config directory is created).
|
|
100
100
|
|
|
101
|
-
Without `--tools`, an interactive multi-select is shown on TTY terminals
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
101
|
+
Without `--tools`, an interactive multi-select is shown on TTY terminals.
|
|
102
|
+
The pre-select reads the **openspec-pw configuration manifest, not
|
|
103
|
+
directory presence**: editors that carry openspec-pw products (command
|
|
104
|
+
files, MCP entries, claude's legacy skill dir) are pre-checked and labeled
|
|
105
|
+
`(configured)`. A project with no openspec-pw state at all (first run)
|
|
106
|
+
falls back to pre-checking everything `detect()` found — marker dirs, and
|
|
107
|
+
Pi/Oh My Pi's global `~/.pi/agent/` / `~/.omp/agent/` — with no labels.
|
|
108
|
+
Once anything is configured, foreign files that keep an editor's directory
|
|
109
|
+
alive (the official `openspec` CLI's own `opsx-*` files, your own
|
|
110
|
+
settings, global home dirs) no longer influence the pre-select.
|
|
106
111
|
`--tools` is documented as orthogonal to `--no-mcp`: the former picks
|
|
107
112
|
*which* editors, the latter *whether* to install the Playwright MCP server
|
|
108
113
|
for them.
|
|
109
114
|
|
|
110
|
-
Init prints two output signals: the
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
set. When in
|
|
115
|
+
Init prints two output signals: the pre-select hint line (only when
|
|
116
|
+
`--tools` is not given) — `Configured (pre-select):` on projects with
|
|
117
|
+
openspec-pw state, `Detected (pre-select):` in the first-run fallback —
|
|
118
|
+
is **not** the install set; the `Selected editors:` line (always printed,
|
|
119
|
+
before any editor is configured) is the actual install set. When in
|
|
120
|
+
doubt, read `Selected editors`.
|
|
121
|
+
|
|
122
|
+
**Deselect = remove.** In the interactive multi-select, a *detected editor
|
|
123
|
+
you deselect* has its openspec-pw products removed — command/skill files,
|
|
124
|
+
the editor's openspec-pw MCP entries (claude's wrapper block and legacy
|
|
125
|
+
skill directory included), after one confirmation listing everything about
|
|
126
|
+
to be removed. Declining keeps the old behavior (deselect merely skips
|
|
127
|
+
writes this run). Only openspec-pw-owned territory is touched — your own
|
|
128
|
+
config entries in the same files stay. Shared rules: the AGENTS.md
|
|
129
|
+
openspec-pw block is removed only when **no** editor remains selected; a
|
|
130
|
+
symlinked CLAUDE.md is never written through. `--tools` and non-TTY runs
|
|
131
|
+
never remove anything (`--tools` is an explicit allow list). Removal
|
|
132
|
+
feeds straight back into the pre-select: a removed editor is no longer
|
|
133
|
+
pre-checked on the next init (the pre-select reads the openspec-pw
|
|
134
|
+
manifest, so directory residue — kept `mcp.json`, your own files, global
|
|
135
|
+
home dirs — no longer matters). A *fully* deselected and confirmed
|
|
136
|
+
project resets to the first-run pre-select on the next init.
|
|
115
137
|
|
|
116
138
|
**Editor territory**: `update` only maintains editors that already have
|
|
117
139
|
openspec-pw command artifacts in the project — it never adds new editors
|
package/README.zh-CN.md
CHANGED
|
@@ -116,9 +116,11 @@ openspec-pw init --tools none # 不配置编辑器,只生成脚手
|
|
|
116
116
|
|
|
117
117
|
受支持 id:`claude`、`opencode`、`cline`、`cursor`、`pi`、`omp`(`oh-my-pi` 是 `omp` 的别名)。id 大小写不敏感、重复自动去重、`all`/`none` 不能与具体 id 混用。被 `--tools` 指定的编辑器即使未被检测到也会配置(会自动创建其配置目录)。
|
|
118
118
|
|
|
119
|
-
未提供 `--tools` 时:TTY
|
|
119
|
+
未提供 `--tools` 时:TTY 终端弹出交互式多选。**预选读取 openspec-pw 配置清单,而非目录存在性**:实际拥有 openspec-pw 产物(命令文件、MCP 条目、claude legacy 技能目录)的编辑器被预勾选并标注 `(configured)`。项目完全没有任何 openspec-pw 状态时(首次运行)回退为预选全部 `detect()` 命中项——marker 目录与 Pi / Oh My Pi 的全局 `~/.pi/agent/`、`~/.omp/agent/`——不带标签。一旦配置过任何编辑器,撑着目录存在性的外部文件(官方 `openspec` CLI 自己的 `opsx-*` 文件、你自己的配置、全局目录)就不再影响预选。`--tools` 与 `--no-mcp` 正交:前者选择*哪些*编辑器,后者决定*是否*为它们安装 Playwright MCP。
|
|
120
120
|
|
|
121
|
-
init
|
|
121
|
+
init 打印两种输出信号:预选提示行(仅未传 `--tools` 时出现)——有 openspec-pw 状态的项目是 `Configured (pre-select):`,首次运行回退则是 `Detected (pre-select):`——**不是**实际安装集;`Selected editors:` 行(总是打印,位于任何编辑器配置之前)才是实际安装集。判断装了什么,看 `Selected editors`。
|
|
122
|
+
|
|
123
|
+
**取消勾选 = 移除**。交互式多选里,*已被探测但你取消勾选的*编辑器的 openspec-pw 产物会被移除——命令/技能文件、该编辑器的 openspec-pw MCP 条目(含 claude 的 wrapper 块与 legacy 技能目录),前置一次列出全部待移除项的确认(拒绝则保持旧行为:本次仅跳过写入)。只动 openspec-pw 自有领土——同一文件中你自有的配置条目不受影响。共享规则:AGENTS.md 的 openspec-pw 块仅在**没有任何编辑器保留**时移除;symlink 的 CLAUDE.md 永不穿透写入。`--tools` 与非 TTY 运行不做任何移除(`--tools` 是显式授权清单)。移除直接反哺预选:被移除的编辑器下次 init 不再预勾选(预选读 openspec-pw 清单——保留的 `mcp.json`、你自己的文件、全局目录都不再重要);*全部*取消并确认的项目下次 init 重置回首-运行预选语义。
|
|
122
124
|
|
|
123
125
|
**编辑器领土**:`update` 只维护项目内已有 openspec-pw 命令工件的编辑器——不会新增编辑器(全局配置目录或手建的 `.cursor/` 不构成写入授权)。给已初始化项目新增编辑器请重跑 `openspec-pw init --tools <id>`(幂等)。
|
|
124
126
|
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { EditorAdapter } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* True when openspec-pw has configured this editor in the project: any
|
|
4
|
+
* command/extraArtifacts product, any openspec-pw MCP entry, or (claude
|
|
5
|
+
* only) the legacy skill directory from pre-0.3.74 installs.
|
|
6
|
+
*
|
|
7
|
+
* Intentionally a *wider* signal than update/doctor's authorization gate
|
|
8
|
+
* (hasCommandArtifacts, command artifacts only): an editor carrying only an
|
|
9
|
+
* openspec-pw MCP entry is "configured" here so it stays pre-selected, while
|
|
10
|
+
* write authorization still requires real command products.
|
|
11
|
+
*/
|
|
12
|
+
export declare function isEditorConfigured(adapter: EditorAdapter, projectRoot: string): boolean;
|
|
13
|
+
/** True when any of the adapters has been configured in this project. */
|
|
14
|
+
export declare function anyEditorConfigured(adapters: readonly EditorAdapter[], projectRoot: string): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Does AGENTS.md carry an openspec-pw marker block we own? Our namespace
|
|
17
|
+
* (OPENSPEC-PW) always counts. A *legacy* `OPENSPEC:` block counts only
|
|
18
|
+
* when its content carries our migration signature — the same gate the
|
|
19
|
+
* migration path uses — because that namespace is shared with the official
|
|
20
|
+
* `@fission-ai/openspec` CLI, whose standard init block must not suppress
|
|
21
|
+
* this project's first-run bypass.
|
|
22
|
+
*/
|
|
23
|
+
export declare function agentsFileHasMarkers(projectRoot: string): boolean;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* "Has this editor been configured by openspec-pw?" predicates.
|
|
3
|
+
*
|
|
4
|
+
* The init interactive pre-select reads these instead of detect() — the
|
|
5
|
+
* detection signal (marker-directory presence) is kept alive by foreign
|
|
6
|
+
* content (the official openspec CLI's own opsx-* files, the user's own
|
|
7
|
+
* config, Pi/Oh My Pi global home dirs), so a deselected editor would stay
|
|
8
|
+
* pre-checked forever. The authorization gate (update/doctor
|
|
9
|
+
* hasCommandArtifacts) and the pre-select now share one source of truth:
|
|
10
|
+
* openspec-pw products on disk.
|
|
11
|
+
*/
|
|
12
|
+
import { existsSync, readFileSync } from "fs";
|
|
13
|
+
import { join } from "path";
|
|
14
|
+
import { hasCommandArtifacts } from "./registry.js";
|
|
15
|
+
import { enumerateAdapterArtifacts, isInventoryEmpty } from "./removal.js";
|
|
16
|
+
import { hasLegacyTerritoryStart, LEGACY_OPENSPEC_END, LEGACY_OPENSPEC_START, OPENSPEC_START, } from "../../shared/drift.js";
|
|
17
|
+
import { LEGACY_MAIN_SIGNATURE } from "./project-rules.js";
|
|
18
|
+
/**
|
|
19
|
+
* True when openspec-pw has configured this editor in the project: any
|
|
20
|
+
* command/extraArtifacts product, any openspec-pw MCP entry, or (claude
|
|
21
|
+
* only) the legacy skill directory from pre-0.3.74 installs.
|
|
22
|
+
*
|
|
23
|
+
* Intentionally a *wider* signal than update/doctor's authorization gate
|
|
24
|
+
* (hasCommandArtifacts, command artifacts only): an editor carrying only an
|
|
25
|
+
* openspec-pw MCP entry is "configured" here so it stays pre-selected, while
|
|
26
|
+
* write authorization still requires real command products.
|
|
27
|
+
*/
|
|
28
|
+
export function isEditorConfigured(adapter, projectRoot) {
|
|
29
|
+
if (hasCommandArtifacts(projectRoot, adapter))
|
|
30
|
+
return true;
|
|
31
|
+
return !isInventoryEmpty(enumerateAdapterArtifacts(adapter, projectRoot));
|
|
32
|
+
}
|
|
33
|
+
/** True when any of the adapters has been configured in this project. */
|
|
34
|
+
export function anyEditorConfigured(adapters, projectRoot) {
|
|
35
|
+
return adapters.some((a) => isEditorConfigured(a, projectRoot));
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Does AGENTS.md carry an openspec-pw marker block we own? Our namespace
|
|
39
|
+
* (OPENSPEC-PW) always counts. A *legacy* `OPENSPEC:` block counts only
|
|
40
|
+
* when its content carries our migration signature — the same gate the
|
|
41
|
+
* migration path uses — because that namespace is shared with the official
|
|
42
|
+
* `@fission-ai/openspec` CLI, whose standard init block must not suppress
|
|
43
|
+
* this project's first-run bypass.
|
|
44
|
+
*/
|
|
45
|
+
export function agentsFileHasMarkers(projectRoot) {
|
|
46
|
+
const agentsPath = join(projectRoot, "AGENTS.md");
|
|
47
|
+
if (!existsSync(agentsPath))
|
|
48
|
+
return false;
|
|
49
|
+
const content = readFileSync(agentsPath, "utf-8");
|
|
50
|
+
if (content.includes(OPENSPEC_START))
|
|
51
|
+
return true;
|
|
52
|
+
if (!hasLegacyTerritoryStart(content))
|
|
53
|
+
return false;
|
|
54
|
+
const startIdx = content.indexOf(LEGACY_OPENSPEC_START);
|
|
55
|
+
const endIdx = content.indexOf(LEGACY_OPENSPEC_END);
|
|
56
|
+
// Bounded legacy block: check the inner content; a lone/truncated START
|
|
57
|
+
// falls back to "anything after it" — same posture as the migration gate.
|
|
58
|
+
const inner = endIdx !== -1 && endIdx > startIdx
|
|
59
|
+
? content.slice(startIdx + LEGACY_OPENSPEC_START.length, endIdx)
|
|
60
|
+
: content.slice(startIdx);
|
|
61
|
+
return inner.includes(LEGACY_MAIN_SIGNATURE);
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=configured.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configured.js","sourceRoot":"","sources":["../../../src/commands/editors/configured.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,qBAAqB,EACrB,cAAc,GACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAsB,EACtB,WAAmB;IAEnB,IAAI,mBAAmB,CAAC,WAAW,EAAE,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3D,OAAO,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,mBAAmB,CACjC,QAAkC,EAClC,WAAmB;IAEnB,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;AAClE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,WAAmB;IACtD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAClD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1C,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAClD,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;QAAE,OAAO,IAAI,CAAC;IAClD,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IACpD,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACpD,wEAAwE;IACxE,0EAA0E;IAC1E,MAAM,KAAK,GACT,MAAM,KAAK,CAAC,CAAC,IAAI,MAAM,GAAG,QAAQ;QAChC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC;QAChE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC9B,OAAO,KAAK,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;AAC/C,CAAC"}
|
|
@@ -65,8 +65,26 @@ export declare function installClaudeWrapper(projectRoot: string): void;
|
|
|
65
65
|
export declare function installProjectRules(projectRoot: string, standardsContent: string, detected: EditorAdapter[]): void;
|
|
66
66
|
/** Remove all OpenSpec marker blocks from AGENTS.md (always) and CLAUDE.md (for claude adapter). */
|
|
67
67
|
export declare function cleanProjectRules(adapter: EditorAdapter, projectRoot: string): void;
|
|
68
|
+
/**
|
|
69
|
+
* Remove openspec-pw marker blocks (both namespaces) from a single file,
|
|
70
|
+
* deleting the file entirely when it empties out. Exported for the init
|
|
71
|
+
* deselect-removal flow (CLAUDE.md wrapper cleanup); cleanProjectRules
|
|
72
|
+
* wraps it for the uninstall context.
|
|
73
|
+
*/
|
|
74
|
+
export declare function removeMarkersFromFile(dest: string, fileLabel: string): void;
|
|
68
75
|
/** Read the employee-grade standards source file (empty string if missing). */
|
|
69
76
|
export declare function readEmployeeStandards(srcPath: string): string;
|
|
77
|
+
/** Our content signatures inside legacy blocks — an official legacy init
|
|
78
|
+
* block never contains them, so it is never claimed by mistake. The wrapper
|
|
79
|
+
* accepts either marker: the current wrapper carries "@AGENTS.md", but the
|
|
80
|
+
* April-2026 format (v0.1.38–v0.3.2) wrote the FULL standards directly into
|
|
81
|
+
* CLAUDE.md — that block is ours too, and must migrate (else update would
|
|
82
|
+
* append a new wrapper next to it instead of replacing it). */
|
|
83
|
+
/** Our content signature inside legacy AGENTS.md blocks — an official legacy
|
|
84
|
+
* init block never contains it, so it is never claimed by mistake. Exported
|
|
85
|
+
* for the config-state predicates (configured.ts), which share the same
|
|
86
|
+
* "official block ≠ our block" gate. */
|
|
87
|
+
export declare const LEGACY_MAIN_SIGNATURE = "Employee-Grade Standards";
|
|
70
88
|
/**
|
|
71
89
|
* Migrate legacy OPENSPEC markers in AGENTS.md (and CLAUDE.md wrapper) to the
|
|
72
90
|
* OPENSPEC-PW namespace. Gates:
|
|
@@ -219,8 +219,13 @@ export function cleanProjectRules(adapter, projectRoot) {
|
|
|
219
219
|
removeMarkersFromFile(adapter.projectRulesPath(projectRoot), basename(adapter.projectRulesPath(projectRoot)));
|
|
220
220
|
}
|
|
221
221
|
}
|
|
222
|
-
/**
|
|
223
|
-
|
|
222
|
+
/**
|
|
223
|
+
* Remove openspec-pw marker blocks (both namespaces) from a single file,
|
|
224
|
+
* deleting the file entirely when it empties out. Exported for the init
|
|
225
|
+
* deselect-removal flow (CLAUDE.md wrapper cleanup); cleanProjectRules
|
|
226
|
+
* wraps it for the uninstall context.
|
|
227
|
+
*/
|
|
228
|
+
export function removeMarkersFromFile(dest, fileLabel) {
|
|
224
229
|
if (!existsSync(dest)) {
|
|
225
230
|
console.log(chalk.gray(` - ${fileLabel} not found, skipping`));
|
|
226
231
|
return;
|
|
@@ -262,7 +267,11 @@ export function readEmployeeStandards(srcPath) {
|
|
|
262
267
|
* April-2026 format (v0.1.38–v0.3.2) wrote the FULL standards directly into
|
|
263
268
|
* CLAUDE.md — that block is ours too, and must migrate (else update would
|
|
264
269
|
* append a new wrapper next to it instead of replacing it). */
|
|
265
|
-
|
|
270
|
+
/** Our content signature inside legacy AGENTS.md blocks — an official legacy
|
|
271
|
+
* init block never contains it, so it is never claimed by mistake. Exported
|
|
272
|
+
* for the config-state predicates (configured.ts), which share the same
|
|
273
|
+
* "official block ≠ our block" gate. */
|
|
274
|
+
export const LEGACY_MAIN_SIGNATURE = "Employee-Grade Standards";
|
|
266
275
|
const LEGACY_WRAPPER_SIGNATURES = ["@AGENTS.md", "Employee-Grade Standards"];
|
|
267
276
|
/**
|
|
268
277
|
* Swap legacy markers for OPENSPEC-PW markers in one write (no half-migrated
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-rules.js","sourceRoot":"","sources":["../../../src/commands/editors/project-rules.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"project-rules.js","sourceRoot":"","sources":["../../../src/commands/editors/project-rules.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EACL,UAAU,EACV,SAAS,EACT,MAAM,EACN,YAAY,EACZ,aAAa,GACd,MAAM,IAAI,CAAC;AACZ,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,yEAAyE;AACzE,qCAAqC;AACrC,OAAO,EACL,cAAc,EACd,YAAY,EACZ,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAEnF,4EAA4E;AAE5E;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,WAAmB,EAAE,OAAsB;IAC3E,MAAM,IAAI,GAAG,OAAO,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;IACnD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC7C,IAAI,QAAQ,KAAK,CAAC,CAAC,IAAI,MAAM,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAClD,OAAO,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;AACxE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,WAAmB,EACnB,OAAsB,EACtB,QAAgB;IAEhB,MAAM,KAAK,GAAG,iBAAiB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACtD,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACjC,OAAO,KAAK,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC;AACnC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAClC,WAAmB,EACnB,gBAAwB,EACxB,UAAyB,aAAa;IAEtC,MAAM,IAAI,GAAG,OAAO,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,WAAW,GAAG,cAAc,CAAC;IACnC,MAAM,SAAS,GAAG,YAAY,CAAC;IAE/B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,SAAS,CAAC;QAC3D,MAAM,OAAO,GAAG,KAAK,QAAQ,OAAO,WAAW,OAAO,gBAAgB,CAAC,IAAI,EAAE,OAAO,SAAS,IAAI,CAAC;QAClG,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC7B,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CAAC,OAAO,SAAS,yCAAyC,CAAC,CACvE,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAE5C,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC;QAC9D,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC;QACrD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACrC,MAAM,OAAO,GACX,MAAM;YACN,IAAI;YACJ,WAAW;YACX,MAAM;YACN,gBAAgB,CAAC,IAAI,EAAE;YACvB,MAAM;YACN,SAAS;YACT,KAAK,CAAC;QACR,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC7B,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CACT,OAAO,SAAS,2EAA2E,CAC5F,CACF,CAAC;IACJ,CAAC;SAAM,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,OAAO,GACX,QAAQ,CAAC,IAAI,EAAE;YACf,MAAM;YACN,WAAW;YACX,MAAM;YACN,gBAAgB,CAAC,IAAI,EAAE;YACvB,MAAM;YACN,SAAS;YACT,IAAI,CAAC;QACP,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC7B,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CAAC,OAAO,SAAS,kDAAkD,CAAC,CAChF,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,2EAA2E;QAC3E,sEAAsE;QACtE,sEAAsE;QACtE,uEAAuE;QACvE,MAAM,QAAQ,GAAG,QAAQ;YACvB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC;YAC/B,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAChC,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC;QACrD,MAAM,OAAO,GACX,MAAM;YACN,MAAM;YACN,WAAW;YACX,MAAM;YACN,gBAAgB,CAAC,IAAI,EAAE;YACvB,MAAM;YACN,SAAS;YACT,IAAI,CAAC;QACP,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC7B,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CACT,OAAO,SAAS,sEAAsE,CACvF,CACF,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,sBAAsB,GAAG;;4HAE6F,CAAC;AAE7H;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,6BAA6B;IAC3C,OAAO,GAAG,sBAAsB,uEAAuE,CAAC;AAC1G,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,oBAAoB,CAAC,WAAmB;IACtD,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAE5C,wEAAwE;IACxE,kEAAkE;IAClE,wEAAwE;IACxE,2EAA2E;IAC3E,yDAAyD;IACzD,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC;YACrC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CACR,mFAAmF,CACpF,CACF,CAAC;YACF,OAAO;QACT,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,2EAA2E;IAC3E,4EAA4E;IAC5E,0EAA0E;IAC1E,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC7C,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QACrD,IAAI,CAAC,UAAU,IAAI,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtD,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,kGAAkG,CACnG,CACF,CAAC;YACF,OAAO;QACT,CAAC;QACD,IAAI,UAAU,IAAI,oBAAoB,CAAC,WAAW,EAAE,aAAa,EAAE,6BAA6B,EAAE,CAAC,EAAE,CAAC;YACpG,OAAO;QACT,CAAC;IACH,CAAC;IAED,sEAAsE;IACtE,sCAAsC;IACtC,oBAAoB,CAClB,WAAW,EACX,6BAA6B,EAAE,EAC/B,aAAa,CACd,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CACjC,WAAmB,EACnB,gBAAwB,EACxB,QAAyB;IAEzB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAElC,iDAAiD;IACjD,oBAAoB,CAAC,WAAW,EAAE,gBAAgB,EAAE,eAAe,CAAC,CAAC;IAErE,4DAA4D;IAC5D,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC;QAC5C,oBAAoB,CAAC,WAAW,CAAC,CAAC;IACpC,CAAC;IAED,mDAAmD;IACnD,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,IAAI,eAAe,CAAC,oBAAoB,EAAE,CAAC;QACtF,MAAM,QAAQ,GAAG,wBAAwB,CAAC,WAAW,CAAC,CAAC;QACvD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;QACrE,eAAe,CAAC,oBAAoB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC;AAED,oGAAoG;AACpG,MAAM,UAAU,iBAAiB,CAAC,OAAsB,EAAE,WAAmB;IAC3E,qDAAqD;IACrD,qBAAqB,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,CAAC;IAEnE,8DAA8D;IAC9D,IAAI,OAAO,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;QAC5B,qBAAqB,CAAC,OAAO,CAAC,gBAAgB,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAChH,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAY,EAAE,SAAiB;IACnE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,SAAS,sBAAsB,CAAC,CAAC,CAAC;QAChE,OAAO;IACT,CAAC;IACD,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAE7C,kEAAkE;IAClE,uEAAuE;IACvE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oCAAoC,SAAS,EAAE,CAAC,CAAC,CAAC;QACzE,OAAO;IACT,CAAC;IAED,sEAAsE;IACtE,wEAAwE;IACxE,IAAI,OAAO,GAAG,QAAQ;SACnB,OAAO,CACN,IAAI,MAAM,CAAC,OAAO,cAAc,aAAa,YAAY,MAAM,EAAE,GAAG,CAAC,EACrE,MAAM,CACP;SACA,OAAO,CACN,IAAI,MAAM,CACR,OAAO,qBAAqB,aAAa,mBAAmB,MAAM,EAClE,GAAG,CACJ,EACD,MAAM,CACP;SACA,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IAErC,iDAAiD;IACjD,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,qBAAqB,SAAS,EAAE,CAAC,CAAC,CAAC;QAC3D,OAAO;IACT,CAAC;IAED,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,qCAAqC,SAAS,EAAE,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,qBAAqB,CAAC,OAAe;IACnD,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACnE,CAAC;AAED,6EAA6E;AAC7E,+EAA+E;AAC/E,8EAA8E;AAC9E,yEAAyE;AACzE,qEAAqE;AAErE;;;;;+DAK+D;AAC/D;;;wCAGwC;AACxC,MAAM,CAAC,MAAM,qBAAqB,GAAG,0BAA0B,CAAC;AAChE,MAAM,yBAAyB,GAAG,CAAC,YAAY,EAAE,0BAA0B,CAAC,CAAC;AAE7E;;;;;GAKG;AACH,SAAS,6BAA6B,CAAC,OAAe,EAAE,UAAoB;IAC1E,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IACnD,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7E,IAAI,MAAM,KAAK,CAAC,CAAC,IAAI,MAAM,GAAG,QAAQ,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7E,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;IACnC,CAAC;SAAM,CAAC;QACN,4DAA4D;QAC5D,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;IACrD,CAAC;IACD,uEAAuE;IACvE,OAAO,OAAO;SACX,OAAO,CAAC,qBAAqB,EAAE,cAAc,CAAC;SAC9C,OAAO,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAC;AAChD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAClC,WAAmB,EACnB,cAAuB,EACvB,gBAAyB;IAEzB,IAAI,CAAC,cAAc;QAAE,OAAO,KAAK,CAAC;IAClC,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAClD,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG,6BAA6B,CAAC,OAAO,EAAE,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAC7E,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YAChC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CACT,oFAAoF,CACrF,CACF,CAAC;YACF,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;IACH,CAAC;IAED,IAAI,gBAAgB,EAAE,CAAC;QACrB,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QAClD,wEAAwE;QACxE,yEAAyE;QACzE,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC;YACtE,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAClD,MAAM,IAAI,GAAG,6BAA6B,CAAC,OAAO,EAAE,yBAAyB,CAAC,CAAC;YAC/E,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAClB,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gBAChC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CACT,oFAAoF,CACrF,CACF,CAAC;gBACF,QAAQ,GAAG,IAAI,CAAC;YAClB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { type EditorAdapter } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* The Playwright MCP servers openspec-pw manages. `playwright-test` is the
|
|
4
|
+
* official test-runner server installed today; `playwright` is the legacy
|
|
5
|
+
* @playwright/mcp entry older versions wrote (uninstall removes both).
|
|
6
|
+
* Literals here rather than importing shared/mcp.ts, which imports the
|
|
7
|
+
* editors facade that re-exports this module (import cycle).
|
|
8
|
+
*/
|
|
9
|
+
export declare const OPENSPEC_PW_MCP_SERVERS: readonly ["playwright-test", "playwright"];
|
|
10
|
+
/** The claude-only skill directory retired installs left behind. */
|
|
11
|
+
export declare const CLAUDE_LEGACY_SKILL_REL: string;
|
|
12
|
+
export interface AdapterArtifactInventory {
|
|
13
|
+
/** Existing openspec-pw command/skill artifact paths (project-relative). */
|
|
14
|
+
commandPaths: string[];
|
|
15
|
+
/** Claude-only legacy skill dir, when present (project-relative). */
|
|
16
|
+
legacySkillPath: string | null;
|
|
17
|
+
/** openspec-pw MCP server entries present in this editor's config. */
|
|
18
|
+
mcpServers: string[];
|
|
19
|
+
/** True when CLAUDE.md holds an openspec-pw wrapper block (claude only). */
|
|
20
|
+
hasClaudeWrapper: boolean;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Enumerate the openspec-pw artifacts one editor owns in this project —
|
|
24
|
+
* command/skill files (incl. extraArtifacts), MCP server entries, the
|
|
25
|
+
* claude-only legacy skill dir and wrapper. Read-only and silent: this is
|
|
26
|
+
* the source for init's confirmation list, so it must not write, delete,
|
|
27
|
+
* or print.
|
|
28
|
+
*/
|
|
29
|
+
export declare function enumerateAdapterArtifacts(adapter: EditorAdapter, projectRoot: string): AdapterArtifactInventory;
|
|
30
|
+
/** True when this editor has nothing for init to remove. */
|
|
31
|
+
export declare function isInventoryEmpty(inv: AdapterArtifactInventory): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Remove the openspec-pw MCP entries for one editor. Only entries passed in
|
|
34
|
+
* `servers` (the enumeration result) are touched — user-owned server entries
|
|
35
|
+
* in the same config file are never written to.
|
|
36
|
+
*/
|
|
37
|
+
export declare function removeAdapterMcp(adapter: EditorAdapter, projectRoot: string, servers: readonly string[]): void;
|
|
38
|
+
/** Delete one editor's openspec-pw command/skill files. Returns the removed project-relative paths. */
|
|
39
|
+
export declare function removeAdapterCommandArtifacts(adapter: EditorAdapter, projectRoot: string): string[];
|
|
40
|
+
/** Delete claude's retired-install skill directory. Returns the path or null. */
|
|
41
|
+
export declare function removeClaudeLegacySkill(projectRoot: string): string | null;
|
|
42
|
+
/**
|
|
43
|
+
* Remove the openspec-pw wrapper block from CLAUDE.md (claude-owned
|
|
44
|
+
* territory). Skips symlinked CLAUDE.md entirely — writing through the
|
|
45
|
+
* symlink would strip the shared block out of AGENTS.md.
|
|
46
|
+
*/
|
|
47
|
+
export declare function removeClaudeWrapper(projectRoot: string): string | null;
|
|
48
|
+
/**
|
|
49
|
+
* Delete empty directories up to (not including) `stopAt`. Moved here from
|
|
50
|
+
* uninstall.ts so both the section loop and the per-editor removals share it.
|
|
51
|
+
*/
|
|
52
|
+
export declare function cleanupEmptyDirs(dir: string, stopAt: string): void;
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-editor artifact removal primitives.
|
|
3
|
+
*
|
|
4
|
+
* Shared by two callers with different output styles:
|
|
5
|
+
* - `init` (deselect = remove): enumerates the openspec-pw products of
|
|
6
|
+
* deselected editors, prints one confirmation list, then removes.
|
|
7
|
+
* - `uninstall` (full cleanup): calls the same small delete functions
|
|
8
|
+
* inside its existing section-major loop (all MCP → all commands →
|
|
9
|
+
* legacy → rules), so its log order stays unchanged.
|
|
10
|
+
*
|
|
11
|
+
* The enumerate side is strictly read-only — it never prints and never
|
|
12
|
+
* writes — so it doubles as the dry-run source for init's confirm list.
|
|
13
|
+
* The delete side is composed of small single-purpose functions instead of
|
|
14
|
+
* one monolithic `removeAdapterArtifacts` because a monolith would reorder
|
|
15
|
+
* uninstall's section-major output and the MCP removal helpers in
|
|
16
|
+
* shared/mcp.ts print their own status lines (unusable for dry enumeration).
|
|
17
|
+
*/
|
|
18
|
+
import { existsSync, lstatSync, readFileSync, readdirSync, rmSync, rmdirSync } from "fs";
|
|
19
|
+
import { dirname, join } from "path";
|
|
20
|
+
import chalk from "chalk";
|
|
21
|
+
import { buildCommandMeta } from "./types.js";
|
|
22
|
+
import { listCommandArtifactPaths } from "./registry.js";
|
|
23
|
+
import { removeMarkersFromFile } from "./project-rules.js";
|
|
24
|
+
import { LEGACY_OPENSPEC_START, OPENSPEC_START } from "../../shared/drift.js";
|
|
25
|
+
// ─── MCP server names owned by openspec-pw ───────────────────────────────
|
|
26
|
+
/**
|
|
27
|
+
* The Playwright MCP servers openspec-pw manages. `playwright-test` is the
|
|
28
|
+
* official test-runner server installed today; `playwright` is the legacy
|
|
29
|
+
* @playwright/mcp entry older versions wrote (uninstall removes both).
|
|
30
|
+
* Literals here rather than importing shared/mcp.ts, which imports the
|
|
31
|
+
* editors facade that re-exports this module (import cycle).
|
|
32
|
+
*/
|
|
33
|
+
export const OPENSPEC_PW_MCP_SERVERS = ["playwright-test", "playwright"];
|
|
34
|
+
/** The claude-only skill directory retired installs left behind. */
|
|
35
|
+
export const CLAUDE_LEGACY_SKILL_REL = join(".claude", "skills", "openspec-e2e");
|
|
36
|
+
/** Does CLAUDE.md carry an openspec-pw marker block we could remove? */
|
|
37
|
+
function claudeWrapperHasMarkers(projectRoot) {
|
|
38
|
+
const dest = join(projectRoot, "CLAUDE.md");
|
|
39
|
+
if (!existsSync(dest))
|
|
40
|
+
return false;
|
|
41
|
+
// A symlinked CLAUDE.md (typically → AGENTS.md) is never cleaned through —
|
|
42
|
+
// enumeration follows the same guard the removal does.
|
|
43
|
+
if (lstatSync(dest).isSymbolicLink())
|
|
44
|
+
return false;
|
|
45
|
+
const content = readFileSync(dest, "utf-8");
|
|
46
|
+
return content.includes(OPENSPEC_START) || content.includes(LEGACY_OPENSPEC_START);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Enumerate the openspec-pw artifacts one editor owns in this project —
|
|
50
|
+
* command/skill files (incl. extraArtifacts), MCP server entries, the
|
|
51
|
+
* claude-only legacy skill dir and wrapper. Read-only and silent: this is
|
|
52
|
+
* the source for init's confirmation list, so it must not write, delete,
|
|
53
|
+
* or print.
|
|
54
|
+
*/
|
|
55
|
+
export function enumerateAdapterArtifacts(adapter, projectRoot) {
|
|
56
|
+
const meta = buildCommandMeta("");
|
|
57
|
+
const commandPaths = listCommandArtifactPaths(adapter, meta).filter((rel) => existsSync(join(projectRoot, rel)));
|
|
58
|
+
const legacySkillPath = adapter.id === "claude" && existsSync(join(projectRoot, CLAUDE_LEGACY_SKILL_REL))
|
|
59
|
+
? CLAUDE_LEGACY_SKILL_REL
|
|
60
|
+
: null;
|
|
61
|
+
const mcpServers = adapter.supportsMcp === false
|
|
62
|
+
? []
|
|
63
|
+
: OPENSPEC_PW_MCP_SERVERS.filter((server) => adapter.isMcpInstalled(projectRoot, server));
|
|
64
|
+
const hasClaudeWrapper = adapter.id === "claude" && claudeWrapperHasMarkers(projectRoot);
|
|
65
|
+
return { commandPaths, legacySkillPath, mcpServers, hasClaudeWrapper };
|
|
66
|
+
}
|
|
67
|
+
/** True when this editor has nothing for init to remove. */
|
|
68
|
+
export function isInventoryEmpty(inv) {
|
|
69
|
+
return (inv.commandPaths.length === 0 &&
|
|
70
|
+
inv.legacySkillPath === null &&
|
|
71
|
+
inv.mcpServers.length === 0 &&
|
|
72
|
+
!inv.hasClaudeWrapper);
|
|
73
|
+
}
|
|
74
|
+
// ─── Delete functions (small, single-purpose) ────────────────────────────
|
|
75
|
+
/**
|
|
76
|
+
* Remove the openspec-pw MCP entries for one editor. Only entries passed in
|
|
77
|
+
* `servers` (the enumeration result) are touched — user-owned server entries
|
|
78
|
+
* in the same config file are never written to.
|
|
79
|
+
*/
|
|
80
|
+
export function removeAdapterMcp(adapter, projectRoot, servers) {
|
|
81
|
+
if (adapter.supportsMcp === false)
|
|
82
|
+
return;
|
|
83
|
+
for (const serverName of servers) {
|
|
84
|
+
try {
|
|
85
|
+
adapter.removeMcp(projectRoot, serverName);
|
|
86
|
+
console.log(chalk.green(` ✓ ${adapter.label}: ${serverName} MCP removed`));
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
// Same posture as uninstall: claude CLI missing/degraded warns, never throws.
|
|
90
|
+
console.warn(chalk.yellow(` ⚠ ${adapter.label}: failed to remove ${serverName} MCP`));
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/** Delete one editor's openspec-pw command/skill files. Returns the removed project-relative paths. */
|
|
95
|
+
export function removeAdapterCommandArtifacts(adapter, projectRoot) {
|
|
96
|
+
const meta = buildCommandMeta("");
|
|
97
|
+
const removed = [];
|
|
98
|
+
for (const relPath of listCommandArtifactPaths(adapter, meta)) {
|
|
99
|
+
const absPath = join(projectRoot, relPath);
|
|
100
|
+
if (existsSync(absPath)) {
|
|
101
|
+
rmSync(absPath);
|
|
102
|
+
cleanupEmptyDirs(dirname(absPath), projectRoot);
|
|
103
|
+
console.log(chalk.green(` ✓ ${adapter.label}: ${relPath}`));
|
|
104
|
+
removed.push(relPath);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return removed;
|
|
108
|
+
}
|
|
109
|
+
/** Delete claude's retired-install skill directory. Returns the path or null. */
|
|
110
|
+
export function removeClaudeLegacySkill(projectRoot) {
|
|
111
|
+
const absPath = join(projectRoot, CLAUDE_LEGACY_SKILL_REL);
|
|
112
|
+
if (!existsSync(absPath))
|
|
113
|
+
return null;
|
|
114
|
+
rmSync(absPath, { recursive: true, force: true });
|
|
115
|
+
cleanupEmptyDirs(dirname(absPath), projectRoot);
|
|
116
|
+
console.log(chalk.green(` ✓ claude: ${CLAUDE_LEGACY_SKILL_REL}/`));
|
|
117
|
+
return CLAUDE_LEGACY_SKILL_REL;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Remove the openspec-pw wrapper block from CLAUDE.md (claude-owned
|
|
121
|
+
* territory). Skips symlinked CLAUDE.md entirely — writing through the
|
|
122
|
+
* symlink would strip the shared block out of AGENTS.md.
|
|
123
|
+
*/
|
|
124
|
+
export function removeClaudeWrapper(projectRoot) {
|
|
125
|
+
const dest = join(projectRoot, "CLAUDE.md");
|
|
126
|
+
if (!existsSync(dest))
|
|
127
|
+
return null;
|
|
128
|
+
if (lstatSync(dest).isSymbolicLink()) {
|
|
129
|
+
console.log(chalk.gray(" - CLAUDE.md is a symlink — skipping wrapper cleanup (would write through to AGENTS.md)"));
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
removeMarkersFromFile(dest, "CLAUDE.md");
|
|
133
|
+
return "CLAUDE.md";
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Delete empty directories up to (not including) `stopAt`. Moved here from
|
|
137
|
+
* uninstall.ts so both the section loop and the per-editor removals share it.
|
|
138
|
+
*/
|
|
139
|
+
export function cleanupEmptyDirs(dir, stopAt) {
|
|
140
|
+
while (dir !== stopAt && dir.length > stopAt.length) {
|
|
141
|
+
try {
|
|
142
|
+
const entries = readdirSync(dir);
|
|
143
|
+
if (entries.length === 0) {
|
|
144
|
+
rmdirSync(dir);
|
|
145
|
+
dir = dirname(dir);
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
break;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
catch {
|
|
152
|
+
break;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=removal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"removal.js","sourceRoot":"","sources":["../../../src/commands/editors/removal.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,4 +29,6 @@ export { formatCursorCommand, getCursorCommandPath, getCursorSkillPath, formatCu
|
|
|
29
29
|
export { formatPiCommand, getPiCommandPath, hasPi, piAdapter, } from "./editors/adapters/pi.js";
|
|
30
30
|
export { formatOmpCommand, getOmpCommandPath, hasOmp, ompAdapter, } from "./editors/adapters/omp.js";
|
|
31
31
|
export { resolveToolsArg } from "./editors/tool-selection.js";
|
|
32
|
-
export {
|
|
32
|
+
export { OPENSPEC_PW_MCP_SERVERS, CLAUDE_LEGACY_SKILL_REL, type AdapterArtifactInventory, enumerateAdapterArtifacts, isInventoryEmpty, removeAdapterMcp, removeAdapterCommandArtifacts, removeClaudeLegacySkill, removeClaudeWrapper, cleanupEmptyDirs, } from "./editors/removal.js";
|
|
33
|
+
export { isEditorConfigured, anyEditorConfigured, agentsFileHasMarkers, } from "./editors/configured.js";
|
|
34
|
+
export { readOpenSpecBlock, blockMatchesExpected, installOpenSpecBlock, claudeWrapperStandardsContent, installClaudeWrapper, installProjectRules, migrateLegacyMarkers, cleanProjectRules, removeMarkersFromFile, readEmployeeStandards, } from "./editors/project-rules.js";
|
package/dist/commands/editors.js
CHANGED
|
@@ -34,6 +34,10 @@ export { formatPiCommand, getPiCommandPath, hasPi, piAdapter, } from "./editors/
|
|
|
34
34
|
export { formatOmpCommand, getOmpCommandPath, hasOmp, ompAdapter, } from "./editors/adapters/omp.js";
|
|
35
35
|
// Tool selection (--tools flag parsing)
|
|
36
36
|
export { resolveToolsArg } from "./editors/tool-selection.js";
|
|
37
|
+
// Per-editor artifact removal (init deselect + uninstall cleanup)
|
|
38
|
+
export { OPENSPEC_PW_MCP_SERVERS, CLAUDE_LEGACY_SKILL_REL, enumerateAdapterArtifacts, isInventoryEmpty, removeAdapterMcp, removeAdapterCommandArtifacts, removeClaudeLegacySkill, removeClaudeWrapper, cleanupEmptyDirs, } from "./editors/removal.js";
|
|
39
|
+
// Config-state predicates (init pre-select manifest)
|
|
40
|
+
export { isEditorConfigured, anyEditorConfigured, agentsFileHasMarkers, } from "./editors/configured.js";
|
|
37
41
|
// Project rules file management (AGENTS.md SSOT + CLAUDE.md wrapper)
|
|
38
|
-
export { readOpenSpecBlock, blockMatchesExpected, installOpenSpecBlock, claudeWrapperStandardsContent, installClaudeWrapper, installProjectRules, migrateLegacyMarkers, cleanProjectRules, readEmployeeStandards, } from "./editors/project-rules.js";
|
|
42
|
+
export { readOpenSpecBlock, blockMatchesExpected, installOpenSpecBlock, claudeWrapperStandardsContent, installClaudeWrapper, installProjectRules, migrateLegacyMarkers, cleanProjectRules, removeMarkersFromFile, readEmployeeStandards, } from "./editors/project-rules.js";
|
|
39
43
|
//# sourceMappingURL=editors.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editors.js","sourceRoot":"","sources":["../../src/commands/editors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,uCAAuC;AACvC,OAAO,EAEL,gBAAgB,EAKhB,aAAa,GACd,MAAM,oBAAoB,CAAC;AAE5B,8BAA8B;AAC9B,OAAO,EACL,eAAe,EACf,eAAe,EACf,yBAAyB,EAGzB,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,qBAAqB,CAAC;AAE7B,4EAA4E;AAC5E,OAAO,EACL,eAAe,EACf,UAAU,EACV,cAAc,EACd,cAAc,EACd,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,wBAAwB,EACxB,cAAc,GACf,MAAM,uBAAuB,CAAC;AAE/B,gEAAgE;AAChE,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,aAAa,EACb,aAAa,GACd,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,WAAW,EACX,eAAe,EACf,wBAAwB,GACzB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,QAAQ,EACR,YAAY,GACb,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,SAAS,EACT,aAAa,GACd,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,KAAK,EACL,SAAS,GACV,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,MAAM,EACN,UAAU,GACX,MAAM,2BAA2B,CAAC;AAEnC,wCAAwC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,qEAAqE;AACrE,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,6BAA6B,EAC7B,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,4BAA4B,CAAC"}
|
|
1
|
+
{"version":3,"file":"editors.js","sourceRoot":"","sources":["../../src/commands/editors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,uCAAuC;AACvC,OAAO,EAEL,gBAAgB,EAKhB,aAAa,GACd,MAAM,oBAAoB,CAAC;AAE5B,8BAA8B;AAC9B,OAAO,EACL,eAAe,EACf,eAAe,EACf,yBAAyB,EAGzB,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,qBAAqB,CAAC;AAE7B,4EAA4E;AAC5E,OAAO,EACL,eAAe,EACf,UAAU,EACV,cAAc,EACd,cAAc,EACd,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,wBAAwB,EACxB,cAAc,GACf,MAAM,uBAAuB,CAAC;AAE/B,gEAAgE;AAChE,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,aAAa,EACb,aAAa,GACd,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,WAAW,EACX,eAAe,EACf,wBAAwB,GACzB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,QAAQ,EACR,YAAY,GACb,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,SAAS,EACT,aAAa,GACd,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,KAAK,EACL,SAAS,GACV,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,MAAM,EACN,UAAU,GACX,MAAM,2BAA2B,CAAC;AAEnC,wCAAwC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,kEAAkE;AAClE,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EAEvB,yBAAyB,EACzB,gBAAgB,EAChB,gBAAgB,EAChB,6BAA6B,EAC7B,uBAAuB,EACvB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAE9B,qDAAqD;AACrD,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,yBAAyB,CAAC;AAEjC,qEAAqE;AACrE,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,6BAA6B,EAC7B,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,4BAA4B,CAAC"}
|
package/dist/commands/init.d.ts
CHANGED
|
@@ -6,8 +6,17 @@ export interface InitOptions {
|
|
|
6
6
|
tools?: string;
|
|
7
7
|
}
|
|
8
8
|
export interface InitDeps {
|
|
9
|
-
/** Interactive selection prompt; defaults to @inquirer/prompts checkbox.
|
|
10
|
-
|
|
9
|
+
/** Interactive selection prompt; defaults to @inquirer/prompts checkbox.
|
|
10
|
+
* Receives the pre-selected id set (configured tier or first-run bypass)
|
|
11
|
+
* and the configured id set (`(configured)` suffix driver). */
|
|
12
|
+
prompt?: (allEditors: EditorAdapter[], preselectedIds: ReadonlySet<EditorId>, configuredIds?: ReadonlySet<EditorId>) => Promise<EditorId[]>;
|
|
13
|
+
/**
|
|
14
|
+
* Confirmation prompt for the deselect-removal list; defaults to
|
|
15
|
+
* @inquirer/prompts confirm. Separate from `prompt` — a checkbox stub
|
|
16
|
+
* cannot answer a boolean question, and without an injection point tests
|
|
17
|
+
* would block on stdin.
|
|
18
|
+
*/
|
|
19
|
+
confirm?: (message: string) => Promise<boolean>;
|
|
11
20
|
/** Override TTY detection (tests inject false here). */
|
|
12
21
|
isTTY?: boolean;
|
|
13
22
|
/** Override home dir for Pi/Oh My Pi global detection (tests inject an empty dir). */
|
|
@@ -15,10 +24,13 @@ export interface InitDeps {
|
|
|
15
24
|
}
|
|
16
25
|
/**
|
|
17
26
|
* Interactive multi-select of all supported editors, pre-selecting the
|
|
18
|
-
* editors
|
|
19
|
-
*
|
|
27
|
+
* editors passed in `preselected`. In the artifact-manifest tier those are
|
|
28
|
+
* the configured editors — the `configured` set drives the "(configured)"
|
|
29
|
+
* name suffix. In the first-run bypass tier `configured` is empty, so no
|
|
30
|
+
* suffix renders. Dynamically imports @inquirer/prompts so non-interactive
|
|
31
|
+
* runs never load it.
|
|
20
32
|
*/
|
|
21
|
-
export declare function promptSelectEditors(allEditors: EditorAdapter[],
|
|
33
|
+
export declare function promptSelectEditors(allEditors: EditorAdapter[], preselected: ReadonlySet<EditorId>, configured?: ReadonlySet<EditorId>): Promise<EditorId[]>;
|
|
22
34
|
export declare function init(options: InitOptions, deps?: InitDeps): Promise<void>;
|
|
23
35
|
export declare function generateSeedTest(projectRoot: string): Promise<void>;
|
|
24
36
|
export declare function generateAppKnowledge(projectRoot: string): Promise<void>;
|
package/dist/commands/init.js
CHANGED
|
@@ -4,24 +4,30 @@ import { join } from "path";
|
|
|
4
4
|
import { fileURLToPath } from "url";
|
|
5
5
|
import chalk from "chalk";
|
|
6
6
|
import { readFile } from "fs/promises";
|
|
7
|
-
import { buildCommandMeta, detectAdapters, detectProjectAdapters, getAdapter, getAllAdapters, installCommand, installProjectRules, migrateLegacyMarkers, readEmployeeStandards, resolveToolsArg, slashCommandForAdapter, } from "./editors.js";
|
|
7
|
+
import { buildCommandMeta, detectAdapters, detectProjectAdapters, getAdapter, getAllAdapters, installCommand, installProjectRules, migrateLegacyMarkers, readEmployeeStandards, resolveToolsArg, slashCommandForAdapter, enumerateAdapterArtifacts, isInventoryEmpty, removeAdapterMcp, removeAdapterCommandArtifacts, removeClaudeLegacySkill, removeClaudeWrapper, removeMarkersFromFile, } from "./editors.js";
|
|
8
|
+
import { isEditorConfigured, agentsFileHasMarkers, } from "./editors/configured.js";
|
|
8
9
|
import { ensureTestRunnerMcp, isTestRunnerMcpInstalled, TEST_RUNNER_MCP_SERVER, needsShell, hasFrontendSignal, detectCodeGraphStatus, codegraphHintLines, CREDENTIALS_RELPATHS, credentialsIgnoreHint, findUnignoredFiles, } from "../shared/index.js";
|
|
9
10
|
const TEMPLATE_DIR = fileURLToPath(new URL("../../templates", import.meta.url));
|
|
10
11
|
const E2E_COMMAND_SRC = fileURLToPath(new URL("../../templates/e2e-command.md", import.meta.url));
|
|
11
12
|
const EMPLOYEE_STANDARDS_SRC = fileURLToPath(new URL("../../employee-standards.md", import.meta.url));
|
|
12
13
|
/**
|
|
13
14
|
* Interactive multi-select of all supported editors, pre-selecting the
|
|
14
|
-
* editors
|
|
15
|
-
*
|
|
15
|
+
* editors passed in `preselected`. In the artifact-manifest tier those are
|
|
16
|
+
* the configured editors — the `configured` set drives the "(configured)"
|
|
17
|
+
* name suffix. In the first-run bypass tier `configured` is empty, so no
|
|
18
|
+
* suffix renders. Dynamically imports @inquirer/prompts so non-interactive
|
|
19
|
+
* runs never load it.
|
|
16
20
|
*/
|
|
17
|
-
export async function promptSelectEditors(allEditors,
|
|
21
|
+
export async function promptSelectEditors(allEditors, preselected, configured = new Set()) {
|
|
18
22
|
const { checkbox } = await import("@inquirer/prompts");
|
|
19
23
|
const selected = await checkbox({
|
|
20
24
|
message: "Select editors to configure",
|
|
21
25
|
choices: allEditors.map((a) => ({
|
|
22
|
-
name:
|
|
26
|
+
name: configured.has(a.id)
|
|
27
|
+
? `${a.displayName} (configured)`
|
|
28
|
+
: a.displayName,
|
|
23
29
|
value: a.id,
|
|
24
|
-
checked:
|
|
30
|
+
checked: preselected.has(a.id),
|
|
25
31
|
})),
|
|
26
32
|
});
|
|
27
33
|
return selected;
|
|
@@ -62,22 +68,47 @@ export async function init(options, deps = {}) {
|
|
|
62
68
|
// 3. Detect supported editors, then resolve the explicit selection.
|
|
63
69
|
// Priority: --tools flag > interactive prompt (TTY) > detected fallback.
|
|
64
70
|
// `detected` is any-scope (project dirs + global config dirs for
|
|
65
|
-
// Pi/Oh My Pi) — used for display and
|
|
66
|
-
//
|
|
67
|
-
//
|
|
71
|
+
// Pi/Oh My Pi) — used for display and, on a project with zero
|
|
72
|
+
// openspec-pw state (first run), the interactive pre-select. The
|
|
73
|
+
// pre-select itself reads the configured manifest (isEditorConfigured):
|
|
74
|
+
// detection is the keep-alive signal (official openspec CLI files, user
|
|
75
|
+
// config, global home dirs), so it must not drive the checkbox once the
|
|
76
|
+
// project has real openspec-pw products.
|
|
68
77
|
const detected = detectAdapters(projectRoot, deps.homeDir);
|
|
69
78
|
const projectDetected = detectProjectAdapters(projectRoot);
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
79
|
+
const configuredIds = new Set(detected
|
|
80
|
+
.filter((a) => isEditorConfigured(a, projectRoot))
|
|
81
|
+
.map((a) => a.id));
|
|
82
|
+
const hasAnyState = configuredIds.size > 0 || agentsFileHasMarkers(projectRoot);
|
|
83
|
+
// Two-tier pre-select: artifact-manifest tier pre-checks only configured
|
|
84
|
+
// editors; the first-run bypass (zero openspec-pw state) pre-checks every
|
|
85
|
+
// detected editor, preserving the old fresh-project experience.
|
|
86
|
+
const preselectedIds = hasAnyState
|
|
87
|
+
? configuredIds
|
|
88
|
+
: new Set(detected.map((a) => a.id));
|
|
89
|
+
// With --tools the user has already expressed intent, so stay silent: the
|
|
90
|
+
// line would be misread as the install set.
|
|
73
91
|
if (options.tools === undefined) {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
92
|
+
if (hasAnyState) {
|
|
93
|
+
console.log(configuredIds.size > 0
|
|
94
|
+
? chalk.gray(` Configured (pre-select): ${[...configuredIds]
|
|
95
|
+
.map((id) => getAdapter(id)?.label ?? id)
|
|
96
|
+
.join(", ")}`)
|
|
97
|
+
: chalk.gray(" Configured: none"));
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
console.log(detected.length > 0
|
|
101
|
+
? chalk.gray(` Detected (pre-select): ${detected.map((a) => a.label).join(", ")}`)
|
|
102
|
+
: chalk.gray(" Detected: none"));
|
|
103
|
+
}
|
|
77
104
|
}
|
|
78
105
|
const isTTY = deps.isTTY ?? process.stdout.isTTY === true;
|
|
79
106
|
const prompt = deps.prompt ?? promptSelectEditors;
|
|
80
107
|
let selectedIds;
|
|
108
|
+
// True only when the selection came from the interactive prompt — the
|
|
109
|
+
// deselected-removal phase runs exclusively on that path (--tools is an
|
|
110
|
+
// explicit authorization list; non-TTY never removes).
|
|
111
|
+
let interactiveSelection = false;
|
|
81
112
|
try {
|
|
82
113
|
selectedIds = resolveToolsArg(options.tools);
|
|
83
114
|
}
|
|
@@ -85,7 +116,8 @@ export async function init(options, deps = {}) {
|
|
|
85
116
|
throw new Error(`Invalid --tools value: ${err.message}`);
|
|
86
117
|
}
|
|
87
118
|
if (selectedIds === null && isTTY) {
|
|
88
|
-
|
|
119
|
+
interactiveSelection = true;
|
|
120
|
+
selectedIds = await prompt(getAllAdapters(), preselectedIds, configuredIds);
|
|
89
121
|
}
|
|
90
122
|
const editors = selectedIds === null
|
|
91
123
|
? projectDetected
|
|
@@ -103,6 +135,76 @@ export async function init(options, deps = {}) {
|
|
|
103
135
|
console.log(chalk.gray(" For Cursor without an existing .cursor/ dir: mkdir -p .cursor\n"));
|
|
104
136
|
throw new Error('No supported editor detected and no --tools flag provided. Use --tools all, --tools none, or a comma-separated list: claude, opencode, cline, cursor, pi, omp (oh-my-pi aliases omp).');
|
|
105
137
|
}
|
|
138
|
+
// 3a. Deselect = remove. Interactive deselections are real removals of
|
|
139
|
+
// openspec-pw products (commands, MCP entries, claude wrapper/legacy
|
|
140
|
+
// skill, and the shared AGENTS.md block when no editor remains), gated on
|
|
141
|
+
// one confirm. Refusal falls back to the old "skip, don't touch" semantics.
|
|
142
|
+
if (interactiveSelection && selectedIds !== null) {
|
|
143
|
+
// Removal candidates share the configured manifest: never-configured
|
|
144
|
+
// editors own no products, so there is nothing to enumerate (and no
|
|
145
|
+
// confirm noise for a merely-detected editor that was never set up).
|
|
146
|
+
const deselected = detected
|
|
147
|
+
.filter((a) => !selectedIds.includes(a.id) && configuredIds.has(a.id));
|
|
148
|
+
const inventories = deselected
|
|
149
|
+
.map((adapter) => ({
|
|
150
|
+
adapter,
|
|
151
|
+
inv: enumerateAdapterArtifacts(adapter, projectRoot),
|
|
152
|
+
}))
|
|
153
|
+
// Editors with nothing to remove are silent — no confirm-list noise.
|
|
154
|
+
.filter(({ inv }) => !isInventoryEmpty(inv));
|
|
155
|
+
// Run-level shared block: the AGENTS.md openspec-pw block serves every
|
|
156
|
+
// configured editor, so it only goes when none remain. It joins the
|
|
157
|
+
// same confirmation list as a per-editor item (otherwise a project
|
|
158
|
+
// whose per-editor artifacts were hand-deleted would remove the shared
|
|
159
|
+
// block without ever asking).
|
|
160
|
+
const agentsHasBlock = selectedIds.length === 0 && agentsFileHasMarkers(projectRoot);
|
|
161
|
+
if (inventories.length > 0 || agentsHasBlock) {
|
|
162
|
+
console.log(chalk.blue("\n─── Removing Deselected Editors ───"));
|
|
163
|
+
console.log(chalk.yellow(" The following openspec-pw artifacts will be removed:"));
|
|
164
|
+
for (const { adapter, inv } of inventories) {
|
|
165
|
+
for (const relPath of inv.commandPaths) {
|
|
166
|
+
console.log(chalk.gray(` - ${adapter.label}: ${relPath}`));
|
|
167
|
+
}
|
|
168
|
+
if (inv.legacySkillPath) {
|
|
169
|
+
console.log(chalk.gray(` - ${adapter.label}: ${inv.legacySkillPath}/`));
|
|
170
|
+
}
|
|
171
|
+
for (const server of inv.mcpServers) {
|
|
172
|
+
console.log(chalk.gray(` - ${adapter.label}: ${server} MCP entry`));
|
|
173
|
+
}
|
|
174
|
+
if (inv.hasClaudeWrapper) {
|
|
175
|
+
console.log(chalk.gray(` - ${adapter.label}: CLAUDE.md wrapper block`));
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
if (agentsHasBlock) {
|
|
179
|
+
console.log(chalk.gray(" - AGENTS.md: shared openspec-pw block"));
|
|
180
|
+
}
|
|
181
|
+
const confirm = deps.confirm ??
|
|
182
|
+
(async (message) => {
|
|
183
|
+
const { confirm: promptConfirm } = await import("@inquirer/prompts");
|
|
184
|
+
return promptConfirm({ message });
|
|
185
|
+
});
|
|
186
|
+
const agreed = await confirm("Proceed with removal?");
|
|
187
|
+
if (!agreed) {
|
|
188
|
+
console.log(chalk.gray(" - Removal declined — keeping existing artifacts (deselect only skips writes this run)"));
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
for (const { adapter, inv } of inventories) {
|
|
192
|
+
removeAdapterMcp(adapter, projectRoot, inv.mcpServers);
|
|
193
|
+
removeAdapterCommandArtifacts(adapter, projectRoot);
|
|
194
|
+
if (inv.legacySkillPath) {
|
|
195
|
+
removeClaudeLegacySkill(projectRoot);
|
|
196
|
+
}
|
|
197
|
+
if (inv.hasClaudeWrapper) {
|
|
198
|
+
removeClaudeWrapper(projectRoot);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
if (agentsHasBlock) {
|
|
202
|
+
removeMarkersFromFile(join(projectRoot, "AGENTS.md"), "AGENTS.md");
|
|
203
|
+
console.log(chalk.green(" ✓ AGENTS.md: shared openspec-pw block removed"));
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
106
208
|
// 3b. Detect a frontend signal — computed once, reused for the MCP
|
|
107
209
|
// install gate (step 4) and the Summary guidance hint.
|
|
108
210
|
const frontendSignal = hasFrontendSignal(projectRoot);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { existsSync, rmSync
|
|
1
|
+
import { existsSync, rmSync } from "fs";
|
|
2
2
|
import { join, dirname } from "path";
|
|
3
3
|
import chalk from "chalk";
|
|
4
|
-
import { buildCommandMeta, cleanProjectRules, claudeAdapter, detectAdapters, listCommandArtifactPaths, } from "./editors.js";
|
|
4
|
+
import { buildCommandMeta, cleanProjectRules, claudeAdapter, detectAdapters, listCommandArtifactPaths, removeAdapterCommandArtifacts, cleanupEmptyDirs, } from "./editors.js";
|
|
5
5
|
import { removePlaywrightMcp, removeTestRunnerMcp, detectCodeGraphStatus, } from "../shared/index.js";
|
|
6
6
|
export async function uninstall() {
|
|
7
7
|
console.log(chalk.blue("\n🗑️ Uninstalling OpenSpec + Playwright E2E\n"));
|
|
@@ -16,21 +16,22 @@ export async function uninstall() {
|
|
|
16
16
|
removePlaywrightMcp(adapter);
|
|
17
17
|
removeTestRunnerMcp(adapter);
|
|
18
18
|
}
|
|
19
|
-
// 2. Remove E2E command (+ extraArtifacts) for each detected editor
|
|
19
|
+
// 2. Remove E2E command (+ extraArtifacts) for each detected editor —
|
|
20
|
+
// delegates to the removal.ts primitive (same rm + empty-dir cascade +
|
|
21
|
+
// per-path success line as the original inline loop).
|
|
20
22
|
console.log(chalk.blue("\n─── Removing E2E Commands ───"));
|
|
21
23
|
for (const adapter of detected) {
|
|
22
24
|
const relPaths = listCommandArtifactPaths(adapter, meta);
|
|
23
25
|
let removedAny = false;
|
|
24
26
|
for (const relPath of relPaths) {
|
|
25
|
-
|
|
26
|
-
if (existsSync(absPath)) {
|
|
27
|
-
rmSync(absPath);
|
|
28
|
-
cleanupEmptyDirs(dirname(absPath), projectRoot);
|
|
29
|
-
console.log(chalk.green(` ✓ ${adapter.label}: ${relPath}`));
|
|
27
|
+
if (existsSync(join(projectRoot, relPath))) {
|
|
30
28
|
removedAny = true;
|
|
31
29
|
}
|
|
32
30
|
}
|
|
33
|
-
if (
|
|
31
|
+
if (removedAny) {
|
|
32
|
+
removeAdapterCommandArtifacts(adapter, projectRoot);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
34
35
|
console.log(chalk.gray(` - ${adapter.label}: E2E command not found, skipping`));
|
|
35
36
|
}
|
|
36
37
|
}
|
|
@@ -93,21 +94,4 @@ export async function uninstall() {
|
|
|
93
94
|
console.log(chalk.gray(" Note: codegraph MCP remains in your agents — remove with: codegraph uninstall"));
|
|
94
95
|
}
|
|
95
96
|
}
|
|
96
|
-
function cleanupEmptyDirs(dir, stopAt) {
|
|
97
|
-
while (dir !== stopAt && dir.length > stopAt.length) {
|
|
98
|
-
try {
|
|
99
|
-
const entries = readdirSync(dir);
|
|
100
|
-
if (entries.length === 0) {
|
|
101
|
-
rmdirSync(dir);
|
|
102
|
-
dir = dirname(dir);
|
|
103
|
-
}
|
|
104
|
-
else {
|
|
105
|
-
break;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
catch {
|
|
109
|
-
break;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
97
|
//# sourceMappingURL=uninstall.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../src/commands/uninstall.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../src/commands/uninstall.ts"],"names":[],"mappings":"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"}
|