openspec-playwright 0.3.72 → 0.3.74
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 +11 -10
- package/README.zh-CN.md +5 -4
- package/dist/commands/doctor.js +65 -1
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/editors/adapters/claude.d.ts +5 -0
- package/dist/commands/editors/adapters/claude.js +79 -0
- package/dist/commands/editors/adapters/claude.js.map +1 -0
- package/dist/commands/editors/adapters/cline.d.ts +15 -0
- package/dist/commands/editors/adapters/cline.js +63 -0
- package/dist/commands/editors/adapters/cline.js.map +1 -0
- package/dist/commands/editors/adapters/cursor.d.ts +15 -0
- package/dist/commands/editors/adapters/cursor.js +79 -0
- package/dist/commands/editors/adapters/cursor.js.map +1 -0
- package/dist/commands/editors/adapters/dsh.d.ts +27 -0
- package/dist/commands/editors/adapters/dsh.js +67 -0
- package/dist/commands/editors/adapters/dsh.js.map +1 -0
- package/dist/commands/editors/adapters/omp.d.ts +24 -0
- package/dist/commands/editors/adapters/omp.js +73 -0
- package/dist/commands/editors/adapters/omp.js.map +1 -0
- package/dist/commands/editors/adapters/opencode.d.ts +8 -0
- package/dist/commands/editors/adapters/opencode.js +133 -0
- package/dist/commands/editors/adapters/opencode.js.map +1 -0
- package/dist/commands/editors/adapters/pi.d.ts +27 -0
- package/dist/commands/editors/adapters/pi.js +64 -0
- package/dist/commands/editors/adapters/pi.js.map +1 -0
- package/dist/commands/editors/project-rules.d.ts +69 -0
- package/dist/commands/editors/project-rules.js +246 -0
- package/dist/commands/editors/project-rules.js.map +1 -0
- package/dist/commands/editors/registry.d.ts +12 -0
- package/dist/commands/editors/registry.js +59 -0
- package/dist/commands/editors/registry.js.map +1 -0
- package/dist/commands/editors/shared.d.ts +37 -0
- package/dist/commands/editors/shared.js +92 -0
- package/dist/commands/editors/shared.js.map +1 -0
- package/dist/commands/editors/tool-selection.d.ts +17 -0
- package/dist/commands/editors/tool-selection.js +60 -0
- package/dist/commands/editors/tool-selection.js.map +1 -0
- package/dist/commands/editors/types.d.ts +82 -0
- package/dist/commands/editors/types.js +41 -0
- package/dist/commands/editors/types.js.map +1 -0
- package/dist/commands/editors.d.ts +32 -309
- package/dist/commands/editors.js +38 -960
- package/dist/commands/editors.js.map +1 -1
- package/dist/commands/init.js +12 -15
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/uninstall.js +7 -1
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/commands/update.d.ts +8 -0
- package/dist/commands/update.js +13 -2
- package/dist/commands/update.js.map +1 -1
- package/dist/shared/codegraph.d.ts +20 -0
- package/dist/shared/codegraph.js +46 -0
- package/dist/shared/codegraph.js.map +1 -0
- package/dist/shared/index.d.ts +2 -0
- package/dist/shared/index.js +1 -0
- package/dist/shared/index.js.map +1 -1
- package/package.json +4 -3
package/README.md
CHANGED
|
@@ -207,7 +207,7 @@ Run through these steps in order when using the E2E workflow for the first time:
|
|
|
207
207
|
|
|
208
208
|
### What `openspec-pw doctor` checks
|
|
209
209
|
|
|
210
|
-
`openspec-pw doctor` verifies prerequisites across
|
|
210
|
+
`openspec-pw doctor` verifies prerequisites across 10 categories and exits non-zero if any **required** check fails.
|
|
211
211
|
|
|
212
212
|
| Category | Required checks | Optional checks |
|
|
213
213
|
|---|---|---|
|
|
@@ -222,6 +222,7 @@ Run through these steps in order when using the E2E workflow for the first time:
|
|
|
222
222
|
| **Tests** | `tests/playwright/` directory exists | `auth.setup.ts` presence |
|
|
223
223
|
| **Seed Test** | — | `seed.spec.ts` presence |
|
|
224
224
|
| **App Server** | — | dev script, base URL, reachability |
|
|
225
|
+
| **CodeGraph** | — | CLI availability, index presence, MCP installation (warnings, non-blocking) |
|
|
225
226
|
|
|
226
227
|
Run with `--json` for machine-readable output.
|
|
227
228
|
|
|
@@ -309,7 +310,7 @@ Editors (auto-detected by openspec-pw init)
|
|
|
309
310
|
├── Claude Code (/opsx:e2e)
|
|
310
311
|
│ ├── .claude/commands/opsx/e2e.md → Command file
|
|
311
312
|
│ ├── @playwright/mcp → Healer Agent tools (via `claude mcp add --scope project playwright …`, writes project-root `.mcp.json`)
|
|
312
|
-
│ └── CLAUDE.md → CodeGraph 优先 block + imports AGENTS.md via `@AGENTS.md`
|
|
313
|
+
│ └── CLAUDE.md → CodeGraph 优先 block + workflow hint + imports AGENTS.md via `@AGENTS.md`
|
|
313
314
|
├── OpenCode (/opsx-e2e)
|
|
314
315
|
│ ├── .opencode/commands/opsx-e2e.md → Command file (body rewritten from /opsx: → /opsx-)
|
|
315
316
|
│ ├── opencode.jsonc → Playwright MCP (mcp.playwright) + instructions routing
|
|
@@ -337,14 +338,14 @@ Editors (auto-detected by openspec-pw init)
|
|
|
337
338
|
(no simple MCP file — configure @deepseek-ai/dsh-mcp-client in cordis.yml)
|
|
338
339
|
|
|
339
340
|
Employee-grade standards live in **AGENTS.md** as the single source of truth. Claude Code
|
|
340
|
-
loads them via a CLAUDE.md that carries a CodeGraph-first block
|
|
341
|
-
`@AGENTS.md` import — Claude Code's documented mechanism for
|
|
342
|
-
not read by default. Import position is unconstrained
|
|
343
|
-
rule is the `@` line must not sit inside backticks
|
|
344
|
-
the OPENSPEC:START/END comments (stripped
|
|
345
|
-
tool-owned boundary while the import is
|
|
346
|
-
`opencode.jsonc` under `instructions`. Cline and
|
|
347
|
-
file needed.
|
|
341
|
+
loads them via a CLAUDE.md that carries a CodeGraph-first block and an OpenSpec-workflow
|
|
342
|
+
hint up front, followed by an `@AGENTS.md` import — Claude Code's documented mechanism for
|
|
343
|
+
reusing AGENTS.md, which it does not read by default. Import position is unconstrained
|
|
344
|
+
("anywhere in your CLAUDE.md"); the only rule is the `@` line must not sit inside backticks
|
|
345
|
+
or a code block. The import line sits outside the OPENSPEC:START/END comments (stripped
|
|
346
|
+
before context injection), so the markers act as the tool-owned boundary while the import is
|
|
347
|
+
honored. OpenCode registers AGENTS.md in `opencode.jsonc` under `instructions`. Cline and
|
|
348
|
+
Cursor auto-detect `AGENTS.md` natively — no wrapper file needed.
|
|
348
349
|
|
|
349
350
|
Test Assets (tests/playwright/)
|
|
350
351
|
├── seed.spec.ts → Env validation
|
package/README.zh-CN.md
CHANGED
|
@@ -200,7 +200,7 @@ openspec-pw uninstall # 移除项目中的集成
|
|
|
200
200
|
|
|
201
201
|
### `openspec-pw doctor` 检查清单
|
|
202
202
|
|
|
203
|
-
`openspec-pw doctor` 在
|
|
203
|
+
`openspec-pw doctor` 在 10 个类别中验证前置条件,**必需**项失败时退出码非零。
|
|
204
204
|
|
|
205
205
|
| 类别 | 必需检查项 | 可选检查项 |
|
|
206
206
|
|---|---|---|
|
|
@@ -215,6 +215,7 @@ openspec-pw uninstall # 移除项目中的集成
|
|
|
215
215
|
| **测试目录** | `tests/playwright/` 目录存在 | `auth.setup.ts` 是否存在 |
|
|
216
216
|
| **种子测试** | — | `seed.spec.ts` 是否存在 |
|
|
217
217
|
| **应用服务器** | — | 开发脚本、基础 URL、可达性 |
|
|
218
|
+
| **CodeGraph** | — | CLI 可用性、索引存在、MCP 安装(警告,不阻断) |
|
|
218
219
|
|
|
219
220
|
加 `--json` 参数输出机器可读格式。
|
|
220
221
|
|
|
@@ -276,7 +277,7 @@ CLI (openspec-pw)
|
|
|
276
277
|
├── Claude Code (/opsx:e2e)
|
|
277
278
|
│ ├── .claude/commands/opsx/e2e.md → 命令文件(从 templates/e2e-command.md 安装)
|
|
278
279
|
│ ├── @playwright/mcp → Healer Agent 工具(通过 `claude mcp add --scope project playwright …`,写入项目根 `.mcp.json`)
|
|
279
|
-
│ └── CLAUDE.md → CodeGraph 优先节 + 通过 `@AGENTS.md` 引入 AGENTS.md
|
|
280
|
+
│ └── CLAUDE.md → CodeGraph 优先节 + 工作流提示 + 通过 `@AGENTS.md` 引入 AGENTS.md
|
|
280
281
|
├── OpenCode (/opsx-e2e)
|
|
281
282
|
│ ├── .opencode/commands/opsx-e2e.md → 命令文件(正文由 /opsx: 改写为 /opsx-)
|
|
282
283
|
│ ├── opencode.jsonc → Playwright MCP (mcp.playwright) + 指令路由
|
|
@@ -303,8 +304,8 @@ CLI (openspec-pw)
|
|
|
303
304
|
└── AGENTS.md → 员工级规范(dsh 原生自动识别)
|
|
304
305
|
(无简单 MCP 文件 — 在 cordis.yml 中配置 @deepseek-ai/dsh-mcp-client)
|
|
305
306
|
|
|
306
|
-
员工级规范统一存放在 **AGENTS.md** 中。Claude Code 通过 CLAUDE.md 加载——前置 CodeGraph
|
|
307
|
-
|
|
307
|
+
员工级规范统一存放在 **AGENTS.md** 中。Claude Code 通过 CLAUDE.md 加载——前置 CodeGraph 优先节与
|
|
308
|
+
OpenSpec 工作流提示,后接 `@AGENTS.md` 导入(Claude Code 官方记载的复用 AGENTS.md 机制,默认并不读取 AGENTS.md)。
|
|
308
309
|
导入位置无约束(官方原文 "anywhere in your CLAUDE.md"),唯一要求是 `@` 行不能放在反引号或代码块内。
|
|
309
310
|
导入行位于 OPENSPEC:START/END 注释之外(注释在注入上下文前被剥离),marker 作为工具领地边界、
|
|
310
311
|
导入仍生效;OpenCode 在 `opencode.jsonc` 的 `instructions` 中注册 AGENTS.md;
|
package/dist/commands/doctor.js
CHANGED
|
@@ -5,7 +5,7 @@ import { join } from "path";
|
|
|
5
5
|
import { execFileSync } from "child_process";
|
|
6
6
|
import chalk from "chalk";
|
|
7
7
|
import { detectAdapters, slashCommandForAdapter, claudeWrapperStandardsContent } from "../commands/editors.js";
|
|
8
|
-
import { detectAppServer, isPlaywrightMcpInstalled, needsShell } from "../shared/index.js";
|
|
8
|
+
import { detectAppServer, isPlaywrightMcpInstalled, needsShell, detectCodeGraphStatus } from "../shared/index.js";
|
|
9
9
|
import { bundledStandardsPath, compareBlock, OPENSPEC_START } from "../shared/drift.js";
|
|
10
10
|
export async function doctor(options = {}) {
|
|
11
11
|
const checks = [];
|
|
@@ -412,6 +412,67 @@ export async function doctor(options = {}) {
|
|
|
412
412
|
? `responded ${reachable.status ?? "ok"}`
|
|
413
413
|
: `${reachable.message} (diagnostic only; Playwright webServer may start it)`,
|
|
414
414
|
});
|
|
415
|
+
// CodeGraph — optional third-party tooling; failures are warnings, never fatal
|
|
416
|
+
const cg = detectCodeGraphStatus(projectRoot);
|
|
417
|
+
// CLI version probe (only when the CLI is on PATH)
|
|
418
|
+
let cgVersion = "not found";
|
|
419
|
+
if (cg.cliInstalled) {
|
|
420
|
+
try {
|
|
421
|
+
cgVersion = execFileSync("codegraph", ["--version"], {
|
|
422
|
+
encoding: "utf-8",
|
|
423
|
+
shell: needsShell,
|
|
424
|
+
}).trim();
|
|
425
|
+
}
|
|
426
|
+
catch {
|
|
427
|
+
cgVersion = "not found";
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
checks.push({
|
|
431
|
+
category: "CodeGraph",
|
|
432
|
+
name: "codegraph-cli",
|
|
433
|
+
ok: cg.cliInstalled,
|
|
434
|
+
message: cgVersion,
|
|
435
|
+
});
|
|
436
|
+
let indexOk;
|
|
437
|
+
let indexMsg;
|
|
438
|
+
if (cg.indexed) {
|
|
439
|
+
indexOk = true;
|
|
440
|
+
indexMsg = "initialized";
|
|
441
|
+
}
|
|
442
|
+
else if (cg.cliInstalled) {
|
|
443
|
+
indexOk = false;
|
|
444
|
+
indexMsg = "not initialized (run: codegraph init)";
|
|
445
|
+
}
|
|
446
|
+
else {
|
|
447
|
+
indexOk = true;
|
|
448
|
+
indexMsg = "not used";
|
|
449
|
+
}
|
|
450
|
+
checks.push({
|
|
451
|
+
category: "CodeGraph",
|
|
452
|
+
name: "codegraph-index",
|
|
453
|
+
ok: indexOk,
|
|
454
|
+
message: indexMsg,
|
|
455
|
+
});
|
|
456
|
+
let mcpOk;
|
|
457
|
+
let mcpMsg;
|
|
458
|
+
if (!cg.indexed) {
|
|
459
|
+
mcpOk = true;
|
|
460
|
+
mcpMsg = "n/a";
|
|
461
|
+
}
|
|
462
|
+
else if (cg.mcpInstalledAdapters.length > 0) {
|
|
463
|
+
mcpOk = true;
|
|
464
|
+
mcpMsg = `installed: ${cg.mcpInstalledAdapters.join(", ")}`;
|
|
465
|
+
}
|
|
466
|
+
else {
|
|
467
|
+
mcpOk = false;
|
|
468
|
+
mcpMsg = "missing (run: codegraph install --target=auto --location=local)";
|
|
469
|
+
}
|
|
470
|
+
checks.push({
|
|
471
|
+
category: "CodeGraph",
|
|
472
|
+
name: "codegraph-mcp",
|
|
473
|
+
ok: mcpOk,
|
|
474
|
+
message: mcpMsg,
|
|
475
|
+
});
|
|
415
476
|
const OPTIONAL_NAMES = new Set([
|
|
416
477
|
"engines",
|
|
417
478
|
"specs",
|
|
@@ -420,6 +481,9 @@ export async function doctor(options = {}) {
|
|
|
420
481
|
"dev-script",
|
|
421
482
|
"base-url",
|
|
422
483
|
"reachable",
|
|
484
|
+
"codegraph-cli",
|
|
485
|
+
"codegraph-index",
|
|
486
|
+
"codegraph-mcp",
|
|
423
487
|
]);
|
|
424
488
|
const allOk = checks.filter((c) => !c.ok && !OPTIONAL_NAMES.has(c.name)).length === 0;
|
|
425
489
|
if (options.json) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type EditorAdapter, type CommandMeta } from "../types.js";
|
|
2
|
+
export declare function formatClaudeCommand(meta: CommandMeta): string;
|
|
3
|
+
export declare function getClaudeCommandPath(id: string): string;
|
|
4
|
+
export declare function hasClaudeCode(projectRoot: string): boolean;
|
|
5
|
+
export declare const claudeAdapter: EditorAdapter;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claude Code adapter: `.claude/commands/opsx/<id>.md` with full
|
|
3
|
+
* frontmatter; reads CLAUDE.md directly (thin wrapper installed by
|
|
4
|
+
* project-rules). Playwright MCP installs at project scope — written to
|
|
5
|
+
* the project-root `.mcp.json` via `claude mcp add --scope project`.
|
|
6
|
+
*/
|
|
7
|
+
import { existsSync, readFileSync } from "fs";
|
|
8
|
+
import { execFileSync } from "node:child_process";
|
|
9
|
+
import { join } from "path";
|
|
10
|
+
import { TIMEOUT } from "../../../shared/constants.js";
|
|
11
|
+
import { needsShell } from "../../../shared/platform.js";
|
|
12
|
+
import { defineAdapter } from "../types.js";
|
|
13
|
+
import { escapeYamlValue, formatTagsArray } from "../shared.js";
|
|
14
|
+
import { registerAdapter } from "../registry.js";
|
|
15
|
+
// ─── Claude Code adapter ─────────────────────────────────────────────────
|
|
16
|
+
export function formatClaudeCommand(meta) {
|
|
17
|
+
return `---
|
|
18
|
+
name: ${escapeYamlValue(meta.name)}
|
|
19
|
+
description: ${escapeYamlValue(meta.description)}
|
|
20
|
+
category: ${escapeYamlValue(meta.category)}
|
|
21
|
+
tags: ${formatTagsArray(meta.tags)}
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
${meta.body}
|
|
25
|
+
`;
|
|
26
|
+
}
|
|
27
|
+
export function getClaudeCommandPath(id) {
|
|
28
|
+
return join(".claude", "commands", "opsx", `${id}.md`);
|
|
29
|
+
}
|
|
30
|
+
export function hasClaudeCode(projectRoot) {
|
|
31
|
+
return existsSync(join(projectRoot, ".claude"));
|
|
32
|
+
}
|
|
33
|
+
export const claudeAdapter = defineAdapter({
|
|
34
|
+
id: "claude",
|
|
35
|
+
label: "claude",
|
|
36
|
+
displayName: "Claude Code",
|
|
37
|
+
detect: hasClaudeCode,
|
|
38
|
+
commandFilePath: getClaudeCommandPath,
|
|
39
|
+
formatCommand: formatClaudeCommand,
|
|
40
|
+
// Claude Code reads CLAUDE.md directly — override the AGENTS.md default.
|
|
41
|
+
projectRulesPath: (root) => join(root, "CLAUDE.md"),
|
|
42
|
+
isMcpInstalled(root, serverName) {
|
|
43
|
+
// Project scope: Playwright MCP lives in the project-root .mcp.json.
|
|
44
|
+
// Read the file directly instead of `claude mcp list` — zero CLI
|
|
45
|
+
// dependency, testable, and never confuses a global user-scope entry
|
|
46
|
+
// with a project-scoped one.
|
|
47
|
+
try {
|
|
48
|
+
const mcpJson = readFileSync(join(root, ".mcp.json"), "utf-8");
|
|
49
|
+
const parsed = JSON.parse(mcpJson);
|
|
50
|
+
return (typeof parsed === "object" &&
|
|
51
|
+
parsed !== null &&
|
|
52
|
+
typeof parsed.mcpServers === "object" &&
|
|
53
|
+
parsed.mcpServers !== null &&
|
|
54
|
+
Object.hasOwn(parsed.mcpServers, serverName));
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
// Missing or unparseable file — server not installed
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
installMcp(_root, serverName, command) {
|
|
62
|
+
execFileSync("claude", ["mcp", "add", "--scope", "project", serverName, ...command], {
|
|
63
|
+
encoding: "utf-8",
|
|
64
|
+
timeout: TIMEOUT.MCP_LIST,
|
|
65
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
66
|
+
shell: needsShell,
|
|
67
|
+
});
|
|
68
|
+
},
|
|
69
|
+
removeMcp(_root, serverName) {
|
|
70
|
+
execFileSync("claude", ["mcp", "remove", "--scope", "project", serverName], {
|
|
71
|
+
encoding: "utf-8",
|
|
72
|
+
timeout: TIMEOUT.MCP_LIST,
|
|
73
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
74
|
+
shell: needsShell,
|
|
75
|
+
});
|
|
76
|
+
},
|
|
77
|
+
});
|
|
78
|
+
registerAdapter(claudeAdapter);
|
|
79
|
+
//# sourceMappingURL=claude.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../../../src/commands/editors/adapters/claude.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type EditorAdapter, type CommandMeta } from "../types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Cline stores project-level config in `.cline/` (skills/, rules/, mcp.json).
|
|
4
|
+
* `.clinerules/` is the legacy rules-only directory, still auto-detected.
|
|
5
|
+
*
|
|
6
|
+
* Conventions follow the Cline documentation (2026):
|
|
7
|
+
* - Skills: `.cline/skills/<name>/SKILL.md` with YAML frontmatter
|
|
8
|
+
* (name + description). Triggered via `/<name>` slash command.
|
|
9
|
+
* - MCP: `.cline/mcp.json` with `{ "mcpServers": { ... } }` structure.
|
|
10
|
+
* - Rules: Cline auto-detects `AGENTS.md` — no wrapper file needed.
|
|
11
|
+
*/
|
|
12
|
+
export declare function formatClineCommand(meta: CommandMeta): string;
|
|
13
|
+
export declare function getClineCommandPath(id: string): string;
|
|
14
|
+
export declare function hasCline(projectRoot: string): boolean;
|
|
15
|
+
export declare const clineAdapter: EditorAdapter;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cline adapter: `.cline/skills/opsx-<id>/SKILL.md` with name+description
|
|
3
|
+
* frontmatter; MCP lives in `.cline/mcp.json`. Cline auto-detects
|
|
4
|
+
* AGENTS.md as project rules — no wrapper file needed.
|
|
5
|
+
*/
|
|
6
|
+
import { existsSync } from "fs";
|
|
7
|
+
import { join } from "path";
|
|
8
|
+
import { defineAdapter } from "../types.js";
|
|
9
|
+
import { escapeYamlValue, transformToHyphenCommands, isMcpServerInFile, installMcpServerInFile, removeMcpServerFromFile, } from "../shared.js";
|
|
10
|
+
import { registerAdapter } from "../registry.js";
|
|
11
|
+
// ─── Cline adapter ───────────────────────────────────────────────────────
|
|
12
|
+
/**
|
|
13
|
+
* Cline stores project-level config in `.cline/` (skills/, rules/, mcp.json).
|
|
14
|
+
* `.clinerules/` is the legacy rules-only directory, still auto-detected.
|
|
15
|
+
*
|
|
16
|
+
* Conventions follow the Cline documentation (2026):
|
|
17
|
+
* - Skills: `.cline/skills/<name>/SKILL.md` with YAML frontmatter
|
|
18
|
+
* (name + description). Triggered via `/<name>` slash command.
|
|
19
|
+
* - MCP: `.cline/mcp.json` with `{ "mcpServers": { ... } }` structure.
|
|
20
|
+
* - Rules: Cline auto-detects `AGENTS.md` — no wrapper file needed.
|
|
21
|
+
*/
|
|
22
|
+
export function formatClineCommand(meta) {
|
|
23
|
+
const body = transformToHyphenCommands(meta.body);
|
|
24
|
+
const skillName = `opsx-${meta.id}`;
|
|
25
|
+
return `---
|
|
26
|
+
name: ${escapeYamlValue(skillName)}
|
|
27
|
+
description: ${escapeYamlValue(meta.description)}
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
${body}
|
|
31
|
+
`;
|
|
32
|
+
}
|
|
33
|
+
export function getClineCommandPath(id) {
|
|
34
|
+
return join(".cline", "skills", `opsx-${id}`, "SKILL.md");
|
|
35
|
+
}
|
|
36
|
+
export function hasCline(projectRoot) {
|
|
37
|
+
return (existsSync(join(projectRoot, ".cline")) ||
|
|
38
|
+
existsSync(join(projectRoot, ".clinerules")));
|
|
39
|
+
}
|
|
40
|
+
export const clineAdapter = defineAdapter({
|
|
41
|
+
id: "cline",
|
|
42
|
+
label: "cline",
|
|
43
|
+
displayName: "Cline",
|
|
44
|
+
detect: hasCline,
|
|
45
|
+
commandFilePath: getClineCommandPath,
|
|
46
|
+
formatCommand: formatClineCommand,
|
|
47
|
+
// Cline auto-detects AGENTS.md — that's the default.
|
|
48
|
+
isMcpInstalled(projectRoot, serverName) {
|
|
49
|
+
return isMcpServerInFile(clineMcpPath(projectRoot), serverName);
|
|
50
|
+
},
|
|
51
|
+
installMcp(projectRoot, serverName, command) {
|
|
52
|
+
installMcpServerInFile(clineMcpPath(projectRoot), serverName, command);
|
|
53
|
+
},
|
|
54
|
+
removeMcp(projectRoot, serverName) {
|
|
55
|
+
removeMcpServerFromFile(clineMcpPath(projectRoot), serverName);
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
/** Path to the project-level MCP config file for Cline. */
|
|
59
|
+
function clineMcpPath(projectRoot) {
|
|
60
|
+
return join(projectRoot, ".cline", "mcp.json");
|
|
61
|
+
}
|
|
62
|
+
registerAdapter(clineAdapter);
|
|
63
|
+
//# sourceMappingURL=cline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cline.js","sourceRoot":"","sources":["../../../../src/commands/editors/adapters/cline.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAwC,MAAM,aAAa,CAAC;AAClF,OAAO,EACL,eAAe,EACf,yBAAyB,EACzB,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,4EAA4E;AAE5E;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAiB;IAClD,MAAM,IAAI,GAAG,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,QAAQ,IAAI,CAAC,EAAE,EAAE,CAAC;IACpC,OAAO;QACD,eAAe,CAAC,SAAS,CAAC;eACnB,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC;;;EAG9C,IAAI;CACL,CAAC;AACF,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,EAAU;IAC5C,OAAO,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,WAAmB;IAC1C,OAAO,CACL,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QACvC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,CAC7C,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAkB,aAAa,CAAC;IACvD,EAAE,EAAE,OAAO;IACX,KAAK,EAAE,OAAO;IACd,WAAW,EAAE,OAAO;IACpB,MAAM,EAAE,QAAQ;IAChB,eAAe,EAAE,mBAAmB;IACpC,aAAa,EAAE,kBAAkB;IACjC,qDAAqD;IACrD,cAAc,CAAC,WAAW,EAAE,UAAU;QACpC,OAAO,iBAAiB,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC,CAAC;IAClE,CAAC;IACD,UAAU,CAAC,WAAW,EAAE,UAAU,EAAE,OAAO;QACzC,sBAAsB,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;IACD,SAAS,CAAC,WAAW,EAAE,UAAU;QAC/B,uBAAuB,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC,CAAC;IACjE,CAAC;CACF,CAAC,CAAC;AAEH,2DAA2D;AAC3D,SAAS,YAAY,CAAC,WAAmB;IACvC,OAAO,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACjD,CAAC;AAED,eAAe,CAAC,YAAY,CAAC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type EditorAdapter, type CommandMeta } from "../types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Cursor slash commands are plain markdown (no frontmatter); the filename
|
|
4
|
+
* is the command name. `$1` is the change-name argument.
|
|
5
|
+
*/
|
|
6
|
+
export declare function formatCursorCommand(meta: CommandMeta): string;
|
|
7
|
+
export declare function getCursorCommandPath(id: string): string;
|
|
8
|
+
export declare function getCursorSkillPath(id: string): string;
|
|
9
|
+
/**
|
|
10
|
+
* Cursor Agent Skill — explicit invocation only (`disable-model-invocation`).
|
|
11
|
+
* No `$1` placeholders (those belong to the slash command file).
|
|
12
|
+
*/
|
|
13
|
+
export declare function formatCursorSkill(meta: CommandMeta): string;
|
|
14
|
+
export declare function hasCursor(projectRoot: string): boolean;
|
|
15
|
+
export declare const cursorAdapter: EditorAdapter;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cursor adapter: slash command at `.cursor/commands/opsx-<id>.md` (plain
|
|
3
|
+
* markdown) plus an Agent Skill at `.cursor/skills/opsx-<id>/SKILL.md`;
|
|
4
|
+
* MCP lives in `.cursor/mcp.json`. Cursor auto-detects AGENTS.md.
|
|
5
|
+
*/
|
|
6
|
+
import { existsSync } from "fs";
|
|
7
|
+
import { join } from "path";
|
|
8
|
+
import { defineAdapter } from "../types.js";
|
|
9
|
+
import { escapeYamlValue, transformToHyphenCommands, isMcpServerInFile, installMcpServerInFile, removeMcpServerFromFile, } from "../shared.js";
|
|
10
|
+
import { registerAdapter } from "../registry.js";
|
|
11
|
+
// ─── Cursor adapter (format / paths) ─────────────────────────────────────
|
|
12
|
+
/**
|
|
13
|
+
* Cursor slash commands are plain markdown (no frontmatter); the filename
|
|
14
|
+
* is the command name. `$1` is the change-name argument.
|
|
15
|
+
*/
|
|
16
|
+
export function formatCursorCommand(meta) {
|
|
17
|
+
const body = transformToHyphenCommands(meta.body);
|
|
18
|
+
return `<!-- Change name: $1 (e.g. /opsx-${meta.id} my-change) -->
|
|
19
|
+
|
|
20
|
+
${body}
|
|
21
|
+
`;
|
|
22
|
+
}
|
|
23
|
+
export function getCursorCommandPath(id) {
|
|
24
|
+
return join(".cursor", "commands", `opsx-${id}.md`);
|
|
25
|
+
}
|
|
26
|
+
export function getCursorSkillPath(id) {
|
|
27
|
+
return join(".cursor", "skills", `opsx-${id}`, "SKILL.md");
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Cursor Agent Skill — explicit invocation only (`disable-model-invocation`).
|
|
31
|
+
* No `$1` placeholders (those belong to the slash command file).
|
|
32
|
+
*/
|
|
33
|
+
export function formatCursorSkill(meta) {
|
|
34
|
+
const body = transformToHyphenCommands(meta.body);
|
|
35
|
+
const skillName = `opsx-${meta.id}`;
|
|
36
|
+
return `---
|
|
37
|
+
name: ${escapeYamlValue(skillName)}
|
|
38
|
+
description: ${escapeYamlValue(meta.description)}
|
|
39
|
+
disable-model-invocation: true
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
${body}
|
|
43
|
+
`;
|
|
44
|
+
}
|
|
45
|
+
export function hasCursor(projectRoot) {
|
|
46
|
+
return existsSync(join(projectRoot, ".cursor"));
|
|
47
|
+
}
|
|
48
|
+
export const cursorAdapter = defineAdapter({
|
|
49
|
+
id: "cursor",
|
|
50
|
+
label: "cursor",
|
|
51
|
+
displayName: "Cursor",
|
|
52
|
+
detect: hasCursor,
|
|
53
|
+
commandFilePath: getCursorCommandPath,
|
|
54
|
+
formatCommand: formatCursorCommand,
|
|
55
|
+
// Cursor auto-detects AGENTS.md — that's the default.
|
|
56
|
+
isMcpInstalled(projectRoot, serverName) {
|
|
57
|
+
return isMcpServerInFile(cursorMcpPath(projectRoot), serverName);
|
|
58
|
+
},
|
|
59
|
+
installMcp(projectRoot, serverName, command) {
|
|
60
|
+
installMcpServerInFile(cursorMcpPath(projectRoot), serverName, command);
|
|
61
|
+
},
|
|
62
|
+
removeMcp(projectRoot, serverName) {
|
|
63
|
+
removeMcpServerFromFile(cursorMcpPath(projectRoot), serverName);
|
|
64
|
+
},
|
|
65
|
+
extraArtifacts(meta) {
|
|
66
|
+
return [
|
|
67
|
+
{
|
|
68
|
+
relativePath: getCursorSkillPath(meta.id),
|
|
69
|
+
contents: formatCursorSkill(meta),
|
|
70
|
+
},
|
|
71
|
+
];
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
/** Path to the project-level MCP config file for Cursor. */
|
|
75
|
+
function cursorMcpPath(projectRoot) {
|
|
76
|
+
return join(projectRoot, ".cursor", "mcp.json");
|
|
77
|
+
}
|
|
78
|
+
registerAdapter(cursorAdapter);
|
|
79
|
+
//# sourceMappingURL=cursor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../../../src/commands/editors/adapters/cursor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAwC,MAAM,aAAa,CAAC;AAClF,OAAO,EACL,eAAe,EACf,yBAAyB,EACzB,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,4EAA4E;AAE5E;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAiB;IACnD,MAAM,IAAI,GAAG,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClD,OAAO,oCAAoC,IAAI,CAAC,EAAE;;EAElD,IAAI;CACL,CAAC;AACF,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,EAAU;IAC7C,OAAO,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,EAAU;IAC3C,OAAO,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC;AAC7D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAiB;IACjD,MAAM,IAAI,GAAG,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,QAAQ,IAAI,CAAC,EAAE,EAAE,CAAC;IACpC,OAAO;QACD,eAAe,CAAC,SAAS,CAAC;eACnB,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC;;;;EAI9C,IAAI;CACL,CAAC;AACF,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,WAAmB;IAC3C,OAAO,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAkB,aAAa,CAAC;IACxD,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,QAAQ;IACf,WAAW,EAAE,QAAQ;IACrB,MAAM,EAAE,SAAS;IACjB,eAAe,EAAE,oBAAoB;IACrC,aAAa,EAAE,mBAAmB;IAClC,sDAAsD;IACtD,cAAc,CAAC,WAAW,EAAE,UAAU;QACpC,OAAO,iBAAiB,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC,CAAC;IACnE,CAAC;IACD,UAAU,CAAC,WAAW,EAAE,UAAU,EAAE,OAAO;QACzC,sBAAsB,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IAC1E,CAAC;IACD,SAAS,CAAC,WAAW,EAAE,UAAU;QAC/B,uBAAuB,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC,CAAC;IAClE,CAAC;IACD,cAAc,CAAC,IAAI;QACjB,OAAO;YACL;gBACE,YAAY,EAAE,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzC,QAAQ,EAAE,iBAAiB,CAAC,IAAI,CAAC;aAClC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC;AAEH,4DAA4D;AAC5D,SAAS,aAAa,CAAC,WAAmB;IACxC,OAAO,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAClD,CAAC;AAED,eAAe,CAAC,aAAa,CAAC,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type EditorAdapter, type CommandMeta } from "../types.js";
|
|
2
|
+
/**
|
|
3
|
+
* DeepSeek Harness (dsh) stores project skills in `.dsh/skills/` — the
|
|
4
|
+
* `project-dsh` local provider root, rank 100 (highest local priority).
|
|
5
|
+
* Skills are directory bundles (`<name>/SKILL.md`) with YAML frontmatter
|
|
6
|
+
* (name + description); the kebab-case name becomes the model-invocable
|
|
7
|
+
* skill name (`opsx-e2e`).
|
|
8
|
+
*
|
|
9
|
+
* Conventions follow the dsh skills subsystem (docs/subsystems/skills.md):
|
|
10
|
+
* - Skills: `.dsh/skills/<name>/SKILL.md`, invoked via the `skill` tool.
|
|
11
|
+
* - Rules: dsh reads `AGENTS.md` / `CLAUDE.md` natively (default
|
|
12
|
+
* instructionFileCandidates) — no wrapper file needed.
|
|
13
|
+
* - MCP: dsh configures MCP via `cordis.yml` plugin config
|
|
14
|
+
* (@deepseek-ai/dsh-mcp-client), not a simple mcpServers file —
|
|
15
|
+
* the adapter declares `supportsMcp: false` so shared MCP phases
|
|
16
|
+
* skip it (configure Playwright MCP manually in cordis.yml).
|
|
17
|
+
* - Detected via `.dsh/` or the global `~/.dsh/` (DSH_HOME).
|
|
18
|
+
*/
|
|
19
|
+
export declare function formatDshCommand(meta: CommandMeta): string;
|
|
20
|
+
export declare function getDshCommandPath(id: string): string;
|
|
21
|
+
/**
|
|
22
|
+
* True when DeepSeek Harness is in use: a project `.dsh/` dir, or the global
|
|
23
|
+
* dsh home (`~/.dsh/`, DSH_HOME). The home signal lets `openspec-pw init`
|
|
24
|
+
* detect dsh in a fresh project that has no `.dsh/` yet.
|
|
25
|
+
*/
|
|
26
|
+
export declare function hasDsh(projectRoot: string, homeDir?: string): boolean;
|
|
27
|
+
export declare const dshAdapter: EditorAdapter;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DeepSeek Harness adapter: skill bundle at `.dsh/skills/opsx-<id>/SKILL.md`
|
|
3
|
+
* (project-dsh root, rank 100). NO simple MCP file — cordis.yml plugin
|
|
4
|
+
* config instead, so `supportsMcp: false`. Detected via `.dsh/` or
|
|
5
|
+
* global `~/.dsh/` (DSH_HOME).
|
|
6
|
+
*/
|
|
7
|
+
import { existsSync } from "fs";
|
|
8
|
+
import { homedir } from "os";
|
|
9
|
+
import { join } from "path";
|
|
10
|
+
import { defineAdapter } from "../types.js";
|
|
11
|
+
import { escapeYamlValue, transformToHyphenCommands } from "../shared.js";
|
|
12
|
+
import { registerAdapter } from "../registry.js";
|
|
13
|
+
// ─── DeepSeek Harness adapter ────────────────────────────────────────────
|
|
14
|
+
/**
|
|
15
|
+
* DeepSeek Harness (dsh) stores project skills in `.dsh/skills/` — the
|
|
16
|
+
* `project-dsh` local provider root, rank 100 (highest local priority).
|
|
17
|
+
* Skills are directory bundles (`<name>/SKILL.md`) with YAML frontmatter
|
|
18
|
+
* (name + description); the kebab-case name becomes the model-invocable
|
|
19
|
+
* skill name (`opsx-e2e`).
|
|
20
|
+
*
|
|
21
|
+
* Conventions follow the dsh skills subsystem (docs/subsystems/skills.md):
|
|
22
|
+
* - Skills: `.dsh/skills/<name>/SKILL.md`, invoked via the `skill` tool.
|
|
23
|
+
* - Rules: dsh reads `AGENTS.md` / `CLAUDE.md` natively (default
|
|
24
|
+
* instructionFileCandidates) — no wrapper file needed.
|
|
25
|
+
* - MCP: dsh configures MCP via `cordis.yml` plugin config
|
|
26
|
+
* (@deepseek-ai/dsh-mcp-client), not a simple mcpServers file —
|
|
27
|
+
* the adapter declares `supportsMcp: false` so shared MCP phases
|
|
28
|
+
* skip it (configure Playwright MCP manually in cordis.yml).
|
|
29
|
+
* - Detected via `.dsh/` or the global `~/.dsh/` (DSH_HOME).
|
|
30
|
+
*/
|
|
31
|
+
export function formatDshCommand(meta) {
|
|
32
|
+
const body = transformToHyphenCommands(meta.body);
|
|
33
|
+
const skillName = `opsx-${meta.id}`;
|
|
34
|
+
return `---
|
|
35
|
+
name: ${escapeYamlValue(skillName)}
|
|
36
|
+
description: ${escapeYamlValue(meta.description)}
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
${body}
|
|
40
|
+
`;
|
|
41
|
+
}
|
|
42
|
+
export function getDshCommandPath(id) {
|
|
43
|
+
return join(".dsh", "skills", `opsx-${id}`, "SKILL.md");
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* True when DeepSeek Harness is in use: a project `.dsh/` dir, or the global
|
|
47
|
+
* dsh home (`~/.dsh/`, DSH_HOME). The home signal lets `openspec-pw init`
|
|
48
|
+
* detect dsh in a fresh project that has no `.dsh/` yet.
|
|
49
|
+
*/
|
|
50
|
+
export function hasDsh(projectRoot, homeDir = homedir()) {
|
|
51
|
+
return (existsSync(join(projectRoot, ".dsh")) ||
|
|
52
|
+
existsSync(join(homeDir, ".dsh")));
|
|
53
|
+
}
|
|
54
|
+
export const dshAdapter = defineAdapter({
|
|
55
|
+
id: "dsh",
|
|
56
|
+
label: "dsh",
|
|
57
|
+
displayName: "DeepSeek Harness",
|
|
58
|
+
detect: hasDsh,
|
|
59
|
+
// dsh configures MCP via cordis.yml plugin config, not a simple file —
|
|
60
|
+
// shared MCP phases skip this adapter (configure Playwright MCP manually).
|
|
61
|
+
supportsMcp: false,
|
|
62
|
+
commandFilePath: getDshCommandPath,
|
|
63
|
+
formatCommand: formatDshCommand,
|
|
64
|
+
// dsh reads AGENTS.md natively — that's the default.
|
|
65
|
+
});
|
|
66
|
+
registerAdapter(dshAdapter);
|
|
67
|
+
//# sourceMappingURL=dsh.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dsh.js","sourceRoot":"","sources":["../../../../src/commands/editors/adapters/dsh.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAwC,MAAM,aAAa,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,4EAA4E;AAE5E;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAiB;IAChD,MAAM,IAAI,GAAG,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,QAAQ,IAAI,CAAC,EAAE,EAAE,CAAC;IACpC,OAAO;QACD,eAAe,CAAC,SAAS,CAAC;eACnB,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC;;;EAG9C,IAAI;CACL,CAAC;AACF,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,EAAU;IAC1C,OAAO,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC;AAC1D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,MAAM,CACpB,WAAmB,EACnB,OAAO,GAAG,OAAO,EAAE;IAEnB,OAAO,CACL,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QACrC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAClC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAkB,aAAa,CAAC;IACrD,EAAE,EAAE,KAAK;IACT,KAAK,EAAE,KAAK;IACZ,WAAW,EAAE,kBAAkB;IAC/B,MAAM,EAAE,MAAM;IACd,uEAAuE;IACvE,2EAA2E;IAC3E,WAAW,EAAE,KAAK;IAClB,eAAe,EAAE,iBAAiB;IAClC,aAAa,EAAE,gBAAgB;IAC/B,qDAAqD;CACtD,CAAC,CAAC;AAEH,eAAe,CAAC,UAAU,CAAC,CAAC"}
|