openspec-playwright 0.1.62 → 0.1.63

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +4 -3
  3. package/README.zh-CN.md +4 -3
  4. package/bin/CLAUDE.md +11 -0
  5. package/dist/CLAUDE.md +17 -0
  6. package/dist/commands/doctor.d.ts +4 -1
  7. package/dist/commands/doctor.js +110 -73
  8. package/dist/commands/doctor.js.map +1 -1
  9. package/dist/commands/editors.js +149 -95
  10. package/dist/commands/editors.js.map +1 -1
  11. package/dist/commands/init.js +105 -97
  12. package/dist/commands/init.js.map +1 -1
  13. package/dist/commands/mcpSync.js +46 -31
  14. package/dist/commands/mcpSync.js.map +1 -1
  15. package/dist/commands/run.d.ts +13 -0
  16. package/dist/commands/run.js +74 -51
  17. package/dist/commands/run.js.map +1 -1
  18. package/dist/commands/uninstall.d.ts +1 -0
  19. package/dist/commands/uninstall.js +133 -0
  20. package/dist/commands/uninstall.js.map +1 -0
  21. package/dist/commands/update.js +79 -68
  22. package/dist/commands/update.js.map +1 -1
  23. package/dist/index.js +33 -26
  24. package/dist/index.js.map +1 -1
  25. package/package.json +19 -1
  26. package/schemas/playwright-e2e/templates/playwright.config.ts +22 -22
  27. package/templates/CLAUDE.md +15 -0
  28. package/templates/seed.spec.ts +5 -3
  29. package/.claude/commands/opsx/e2e-body.md +0 -39
  30. package/.claude/commands/opsx/e2e.md +0 -47
  31. package/.claude/skills/openspec-e2e/SKILL.md +0 -464
  32. package/.github/workflows/release.yml +0 -81
  33. package/docs/plans/2026-03-26-openspec-playwright-design.md +0 -180
  34. package/employee-standards.md +0 -44
  35. package/openspec/schemas/playwright-e2e/schema.yaml +0 -56
  36. package/openspec/schemas/playwright-e2e/templates/e2e-test.ts +0 -55
  37. package/openspec/schemas/playwright-e2e/templates/playwright.config.ts +0 -52
  38. package/openspec/schemas/playwright-e2e/templates/report.md +0 -27
  39. package/openspec/schemas/playwright-e2e/templates/test-plan.md +0 -24
  40. package/openspec-playwright-0.1.62.tgz +0 -0
  41. package/release-notes.md +0 -5
  42. package/src/commands/doctor.ts +0 -115
  43. package/src/commands/editors.ts +0 -606
  44. package/src/commands/init.ts +0 -252
  45. package/src/commands/mcpSync.ts +0 -160
  46. package/src/commands/run.ts +0 -172
  47. package/src/commands/update.ts +0 -192
  48. package/src/index.ts +0 -47
  49. package/tests/editors.test.ts +0 -180
  50. package/tsconfig.json +0 -18
  51. package/vitest.config.ts +0 -9
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024-present wxhou
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -20,7 +20,7 @@ openspec-pw init # Install Playwright E2E integration
20
20
 
21
21
  ## Supported AI Coding Assistants
22
22
 
23
- Auto-detects and installs commands for all 24 editors OpenSpec supports:
23
+ Auto-detects and installs commands for all 23 editors OpenSpec supports:
24
24
 
25
25
  | Editor | Path | Editor | Path |
26
26
  |--------|------|--------|------|
@@ -54,6 +54,7 @@ Auto-detects and installs commands for all 24 editors OpenSpec supports:
54
54
  openspec-pw init # Initialize integration (one-time setup)
55
55
  openspec-pw update # Update CLI and commands to latest version
56
56
  openspec-pw doctor # Check prerequisites
57
+ openspec-pw uninstall # Remove integration from the project
57
58
  ```
58
59
 
59
60
  ## How It Works
@@ -100,12 +101,12 @@ openspec-pw doctor # Check prerequisites
100
101
 
101
102
  1. **Node.js >= 20**
102
103
  2. **OpenSpec** initialized: `npm install -g @fission-ai/openspec && openspec init`
103
- 3. **One of 24 editors**: Claude Code, Cursor, Windsurf, Cline, Continue, Amazon Q, Gemini CLI, GitHub Copilot, Kiro, Kilo Code, iFlow, CoStrict, OpenCode, Auggie, Factory, CodeBuddy, Codex, Pi, Qoder, Qwen Code, RooCode, Crush, Antigravity (auto-detected)
104
+ 3. **One of 23 editors**: Claude Code, Cursor, Windsurf, Cline, Continue, Amazon Q, Gemini CLI, GitHub Copilot, Kiro, Kilo Code, iFlow, CoStrict, OpenCode, Auggie, Factory, CodeBuddy, Codex, Pi, Qoder, Qwen Code, RooCode, Crush, Antigravity (auto-detected)
104
105
  4. **Claude Code only**: Playwright MCP — `claude mcp add playwright npx @playwright/mcp@latest`
105
106
 
106
107
  ## What `openspec-pw init` Does
107
108
 
108
- 1. Detects installed AI coding assistants (all 24 supported editors)
109
+ 1. Detects installed AI coding assistants (all 23 supported editors)
109
110
  2. Installs E2E command/workflow files for each detected editor
110
111
  3. Installs `/openspec-e2e` skill for Claude Code
111
112
  4. Installs Playwright MCP globally for Claude Code (via `claude mcp add`)
package/README.zh-CN.md CHANGED
@@ -20,7 +20,7 @@ openspec-pw init # 安装 Playwright E2E 集成
20
20
 
21
21
  ## 支持的 AI 编码助手
22
22
 
23
- 自动检测并安装 OpenSpec 支持的全部 24 个编辑器的命令文件:
23
+ 自动检测并安装 OpenSpec 支持的全部 23 个编辑器的命令文件:
24
24
 
25
25
  | 编辑器 | 路径 | 编辑器 | 路径 |
26
26
  |--------|------|--------|------|
@@ -54,6 +54,7 @@ openspec-pw init # 安装 Playwright E2E 集成
54
54
  openspec-pw init # 初始化集成(一次性设置)
55
55
  openspec-pw update # 更新 CLI 和命令到最新版本
56
56
  openspec-pw doctor # 检查前置条件
57
+ openspec-pw uninstall # 移除项目中的集成
57
58
  ```
58
59
 
59
60
  ## 工作原理
@@ -101,12 +102,12 @@ openspec-pw doctor # 检查前置条件
101
102
 
102
103
  1. **Node.js >= 20**
103
104
  2. **OpenSpec** 已初始化: `npm install -g @fission-ai/openspec && openspec init`
104
- 3. **任一 24 编辑器**: Claude Code、Cursor、Windsurf、Cline、Continue 等(自动检测)
105
+ 3. **任一 23 编辑器**: Claude Code、Cursor、Windsurf、Cline、Continue 等(自动检测)
105
106
  4. **仅 Claude Code**: Playwright MCP — `claude mcp add playwright npx @playwright/mcp@latest`
106
107
 
107
108
  ## `openspec-pw init` 做了什么
108
109
 
109
- 1. 检测已安装的 AI 编码助手(支持全部 24 个编辑器)
110
+ 1. 检测已安装的 AI 编码助手(支持全部 23 个编辑器)
110
111
  2. 为每个检测到的编辑器安装 E2E 命令/工作流文件
111
112
  3. 为 Claude Code 安装 `/openspec-e2e` skill
112
113
  4. 为 Claude Code 全局安装 Playwright MCP(通过 `claude mcp add`)
package/bin/CLAUDE.md ADDED
@@ -0,0 +1,11 @@
1
+ <claude-mem-context>
2
+ # Recent Activity
3
+
4
+ <!-- This section is auto-generated by claude-mem. Edit content outside the tags. -->
5
+
6
+ ### Mar 26, 2026
7
+
8
+ | ID | Time | T | Title | Read |
9
+ |----|------|---|-------|------|
10
+ | #5347 | 6:14 PM | 🔄 | Removed complex wrapper script bin/openspec-pw.js | ~119 |
11
+ </claude-mem-context>
package/dist/CLAUDE.md ADDED
@@ -0,0 +1,17 @@
1
+ <claude-mem-context>
2
+ # Recent Activity
3
+
4
+ <!-- This section is auto-generated by claude-mem. Edit content outside the tags. -->
5
+
6
+ ### Mar 26, 2026
7
+
8
+ | ID | Time | T | Title | Read |
9
+ |----|------|---|-------|------|
10
+ | #5344 | 6:14 PM | 🟣 | Openspec-playwright CLI tool with 4 commands implemented | ~294 |
11
+
12
+ ### Mar 27, 2026
13
+
14
+ | ID | Time | T | Title | Read |
15
+ |----|------|---|-------|------|
16
+ | #5381 | 9:46 AM | 🟣 | Built openspec-pw CLI tool with init and doctor commands | ~206 |
17
+ </claude-mem-context>
@@ -1 +1,4 @@
1
- export declare function doctor(): Promise<void>;
1
+ export interface DoctorOptions {
2
+ json?: boolean;
3
+ }
4
+ export declare function doctor(options?: DoctorOptions): Promise<void>;
@@ -1,110 +1,147 @@
1
- import { existsSync, readFileSync } from 'fs';
2
- import { join } from 'path';
3
- import { homedir } from 'os';
4
- import { execSync } from 'child_process';
5
- import chalk from 'chalk';
6
- export async function doctor() {
7
- console.log(chalk.blue('\n🔍 OpenSpec + Playwright E2E Prerequisites Check\n'));
1
+ import { existsSync, readFileSync } from "fs";
2
+ import { join } from "path";
3
+ import { homedir } from "os";
4
+ import { execSync } from "child_process";
5
+ import chalk from "chalk";
6
+ export async function doctor(options = {}) {
7
+ const checks = [];
8
8
  const projectRoot = process.cwd();
9
- let allOk = true;
10
9
  // Node.js
11
- console.log(chalk.blue('─── Node.js ───'));
12
10
  try {
13
- const node = execSync('node --version', { encoding: 'utf-8' }).trim();
14
- console.log(chalk.green(` ✓ Node.js ${node}`));
11
+ const node = execSync("node --version", { encoding: "utf-8" }).trim();
12
+ checks.push({
13
+ category: "Node.js",
14
+ name: "node",
15
+ ok: true,
16
+ message: node,
17
+ });
15
18
  }
16
19
  catch {
17
- console.log(chalk.red(' ✗ Node.js not found'));
18
- allOk = false;
20
+ checks.push({
21
+ category: "Node.js",
22
+ name: "node",
23
+ ok: false,
24
+ message: "not found",
25
+ });
19
26
  }
20
27
  // npm
21
- console.log(chalk.blue('\n─── npm ───'));
22
28
  try {
23
- const npm = execSync('npm --version', { encoding: 'utf-8' }).trim();
24
- console.log(chalk.green(` ✓ npm ${npm}`));
29
+ const npm = execSync("npm --version", { encoding: "utf-8" }).trim();
30
+ checks.push({
31
+ category: "npm",
32
+ name: "npm",
33
+ ok: true,
34
+ message: npm,
35
+ });
25
36
  }
26
37
  catch {
27
- console.log(chalk.red(' ✗ npm not found'));
28
- allOk = false;
38
+ checks.push({
39
+ category: "npm",
40
+ name: "npm",
41
+ ok: false,
42
+ message: "not found",
43
+ });
29
44
  }
30
45
  // OpenSpec
31
- console.log(chalk.blue('\n─── OpenSpec ───'));
32
- const hasOpenSpec = existsSync(join(projectRoot, 'openspec'));
33
- if (hasOpenSpec) {
34
- console.log(chalk.green(' ✓ OpenSpec initialized'));
35
- }
36
- else {
37
- console.log(chalk.red(' ✗ OpenSpec not initialized'));
38
- console.log(chalk.gray(' Run: openspec init'));
39
- allOk = false;
40
- }
46
+ const hasOpenSpec = existsSync(join(projectRoot, "openspec"));
47
+ checks.push({
48
+ category: "OpenSpec",
49
+ name: "openspec",
50
+ ok: hasOpenSpec,
51
+ message: hasOpenSpec ? "initialized" : "not initialized",
52
+ });
41
53
  // Playwright browsers
42
- console.log(chalk.blue('\n─── Playwright Browsers ───'));
43
54
  try {
44
- const pw = execSync('npx playwright --version', { encoding: 'utf-8' }).trim();
45
- console.log(chalk.green(` ✓ Playwright ${pw}`));
55
+ const pw = execSync("npx playwright --version", {
56
+ encoding: "utf-8",
57
+ }).trim();
58
+ checks.push({
59
+ category: "Playwright Browsers",
60
+ name: "playwright",
61
+ ok: true,
62
+ message: pw,
63
+ });
46
64
  }
47
65
  catch {
48
- console.log(chalk.red(' ✗ Playwright browsers not installed'));
49
- console.log(chalk.gray(' Run: npx playwright install --with-deps'));
50
- allOk = false;
51
- }
52
- // Playwright MCP (global)
53
- console.log(chalk.blue('\n─── Playwright MCP ───'));
66
+ checks.push({
67
+ category: "Playwright Browsers",
68
+ name: "playwright",
69
+ ok: false,
70
+ message: "not installed",
71
+ });
72
+ }
73
+ // Playwright MCP
54
74
  const homeDir = homedir();
55
- const claudeJsonPath = join(homeDir, '.claude.json');
75
+ const claudeJsonPath = join(homeDir, ".claude.json");
56
76
  let mcpInstalled = false;
57
77
  if (existsSync(claudeJsonPath)) {
58
78
  try {
59
- const claudeJson = JSON.parse(readFileSync(claudeJsonPath, 'utf-8'));
79
+ const claudeJson = JSON.parse(readFileSync(claudeJsonPath, "utf-8"));
60
80
  const globalMcp = claudeJson?.mcpServers ?? {};
61
81
  const localMcp = claudeJson?.projects?.[projectRoot]?.mcpServers ?? {};
62
- if (globalMcp['playwright'] || localMcp['playwright']) {
82
+ if (globalMcp["playwright"] || localMcp["playwright"]) {
63
83
  mcpInstalled = true;
64
84
  }
65
85
  }
66
86
  catch {
67
- // ignore
87
+ // .claude.json missing or malformed — MCP not configured
68
88
  }
69
89
  }
70
- if (mcpInstalled) {
71
- console.log(chalk.green(' ✓ Playwright MCP installed globally'));
72
- }
73
- else {
74
- console.log(chalk.red(' ✗ Playwright MCP not configured'));
75
- console.log(chalk.gray(' Run: openspec-pw init'));
76
- allOk = false;
77
- }
90
+ checks.push({
91
+ category: "Playwright MCP",
92
+ name: "playwright-mcp",
93
+ ok: mcpInstalled,
94
+ message: mcpInstalled ? "installed" : "not configured",
95
+ });
78
96
  // Skill
79
- console.log(chalk.blue('\n─── Claude Code Skill ───'));
80
- const hasSkill = existsSync(join(projectRoot, '.claude', 'skills', 'openspec-e2e', 'SKILL.md'));
81
- if (hasSkill) {
82
- console.log(chalk.green(' ✓ /openspec-e2e skill installed'));
83
- }
84
- else {
85
- console.log(chalk.red(' ✗ Skill not installed'));
86
- console.log(chalk.gray(' Run: openspec-pw init'));
87
- allOk = false;
88
- }
97
+ const hasSkill = existsSync(join(projectRoot, ".claude", "skills", "openspec-e2e", "SKILL.md"));
98
+ checks.push({
99
+ category: "Claude Code Skill",
100
+ name: "skill",
101
+ ok: hasSkill,
102
+ message: hasSkill ? "installed" : "not installed",
103
+ });
89
104
  // Seed test
90
- console.log(chalk.blue('\n─── Seed Test ───'));
91
- const hasSeed = existsSync(join(projectRoot, 'tests', 'playwright', 'seed.spec.ts'));
92
- if (hasSeed) {
93
- console.log(chalk.green(' ✓ seed.spec.ts found'));
94
- }
95
- else {
96
- console.log(chalk.yellow(' ⚠ seed.spec.ts not found (optional)'));
97
- console.log(chalk.gray(' Run: openspec-pw init'));
105
+ const hasSeed = existsSync(join(projectRoot, "tests", "playwright", "seed.spec.ts"));
106
+ checks.push({
107
+ category: "Seed Test",
108
+ name: "seed",
109
+ ok: hasSeed,
110
+ message: hasSeed ? "found" : "not found (optional)",
111
+ });
112
+ const allOk = checks.filter((c) => !c.ok && c.category !== "Seed Test").length === 0;
113
+ if (options.json) {
114
+ console.log(JSON.stringify({ ok: allOk, checks }, null, 2));
115
+ if (!allOk)
116
+ process.exit(1);
117
+ return;
118
+ }
119
+ // Text output
120
+ console.log(chalk.blue("\n🔍 OpenSpec + Playwright E2E Prerequisites Check\n"));
121
+ let lastCategory = "";
122
+ for (const check of checks) {
123
+ if (check.category !== lastCategory) {
124
+ console.log(chalk.blue(`─── ${check.category} ───`));
125
+ lastCategory = check.category;
126
+ }
127
+ if (check.ok) {
128
+ console.log(chalk.green(` ✓ ${check.name}: ${check.message}`));
129
+ }
130
+ else if (check.category === "Seed Test") {
131
+ console.log(chalk.yellow(` ⚠ ${check.name}: ${check.message}`));
132
+ }
133
+ else {
134
+ console.log(chalk.red(` ✗ ${check.name}: ${check.message}`));
135
+ }
98
136
  }
99
- // Summary
100
- console.log(chalk.blue('\n─── Summary ───'));
137
+ console.log(chalk.blue("\n─── Summary ───"));
101
138
  if (allOk) {
102
- console.log(chalk.green(' ✅ All prerequisites met!\n'));
103
- console.log(chalk.gray(' Run: /opsx:e2e <change-name> in Claude Code\n'));
139
+ console.log(chalk.green(" ✅ All prerequisites met!\n"));
140
+ console.log(chalk.gray(" Run: /opsx:e2e <change-name> in Claude Code\n"));
104
141
  }
105
142
  else {
106
- console.log(chalk.red(' ❌ Some prerequisites are missing\n'));
107
- console.log(chalk.gray(' Run: openspec-pw init to fix\n'));
143
+ console.log(chalk.red(" ❌ Some prerequisites are missing\n"));
144
+ console.log(chalk.gray(" Run: openspec-pw init to fix\n"));
108
145
  process.exit(1);
109
146
  }
110
147
  }
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,KAAK,UAAU,MAAM;IAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC,CAAC;IAEhF,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAClC,IAAI,KAAK,GAAG,IAAI,CAAC;IAEjB,UAAU;IACV,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,QAAQ,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC;QAChD,KAAK,GAAG,KAAK,CAAC;IAChB,CAAC;IAED,MAAM;IACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IACzC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,QAAQ,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAC5C,KAAK,GAAG,KAAK,CAAC;IAChB,CAAC;IAED,WAAW;IACX,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;IAC9D,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC;IACvD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;QAClD,KAAK,GAAG,KAAK,CAAC;IAChB,CAAC;IAED,sBAAsB;IACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,QAAQ,CAAC,0BAA0B,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC,CAAC;QACvE,KAAK,GAAG,KAAK,CAAC;IAChB,CAAC;IAED,0BAA0B;IAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,OAAO,EAAE,CAAC;IAC1B,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IACrD,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,IAAI,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC;YACrE,MAAM,SAAS,GAAG,UAAU,EAAE,UAAU,IAAI,EAAE,CAAC;YAC/C,MAAM,QAAQ,GAAG,UAAU,EAAE,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE,UAAU,IAAI,EAAE,CAAC;YACvE,IAAI,SAAS,CAAC,YAAY,CAAC,IAAI,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBACtD,YAAY,GAAG,IAAI,CAAC;YACtB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;IACD,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC,CAAC;IACpE,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;QACrD,KAAK,GAAG,KAAK,CAAC;IAChB,CAAC;IAED,QAAQ;IACR,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,UAAU,CACzB,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,CAAC,CACnE,CAAC;IACF,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAC;IAChE,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;QACrD,KAAK,GAAG,KAAK,CAAC;IAChB,CAAC;IAED,YAAY;IACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,UAAU,CACxB,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc,CAAC,CACzD,CAAC;IACF,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;IACrD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,uCAAuC,CAAC,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,UAAU;IACV,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAC7C,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC,CAAC;IAC7E,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAC;QAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}