xwang 0.0.1 → 0.0.3
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/assets/manifest.json +18 -0
- package/assets/skills/xwang/scripts/xwang-env.sh +32 -6
- package/assets/skills/xwang-design/SKILL.md +37 -10
- package/dist/cli/index.js +36 -6
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/doctor.d.ts +7 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +66 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +27 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/status.d.ts +5 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +55 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/update.d.ts +8 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +105 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/core/detect.d.ts +1 -1
- package/dist/core/detect.d.ts.map +1 -1
- package/dist/core/detect.js +4 -1
- package/dist/core/detect.js.map +1 -1
- package/dist/core/skills.d.ts +8 -0
- package/dist/core/skills.d.ts.map +1 -0
- package/dist/core/skills.js +49 -0
- package/dist/core/skills.js.map +1 -0
- package/dist/utils/file-system.d.ts +1 -0
- package/dist/utils/file-system.d.ts.map +1 -1
- package/dist/utils/file-system.js +4 -0
- package/dist/utils/file-system.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.0.1",
|
|
3
|
+
"skills": [
|
|
4
|
+
"xwang/SKILL.md",
|
|
5
|
+
"xwang/scripts/xwang-env.sh",
|
|
6
|
+
"xwang/scripts/xwang-state.sh",
|
|
7
|
+
"xwang/scripts/xwang-guard.sh",
|
|
8
|
+
"xwang-open/SKILL.md",
|
|
9
|
+
"xwang-open/scripts/xwang-open-check.sh",
|
|
10
|
+
"xwang-design/SKILL.md",
|
|
11
|
+
"xwang-build/SKILL.md",
|
|
12
|
+
"xwang-build/REFERENCE.md",
|
|
13
|
+
"xwang-verify/SKILL.md",
|
|
14
|
+
"xwang-archive/SKILL.md",
|
|
15
|
+
"xwang-hotfix/SKILL.md",
|
|
16
|
+
"xwang-tweak/SKILL.md"
|
|
17
|
+
]
|
|
18
|
+
}
|
|
@@ -16,14 +16,40 @@ if [ ! -f "$XWANG_STATE" ]; then
|
|
|
16
16
|
return 1
|
|
17
17
|
fi
|
|
18
18
|
|
|
19
|
+
# Locate a file by expanding globs under a list of directories.
|
|
20
|
+
# Avoids `find` so it works on Windows where only CMD/PowerShell find.exe exists.
|
|
21
|
+
locate_by_glob() {
|
|
22
|
+
local glob="$1"
|
|
23
|
+
shift
|
|
24
|
+
local dir candidate
|
|
25
|
+
for dir in "$@"; do
|
|
26
|
+
[ -d "$dir" ] || continue
|
|
27
|
+
for candidate in "$dir"/$glob; do
|
|
28
|
+
if [ -f "$candidate" ]; then
|
|
29
|
+
printf '%s' "$candidate"
|
|
30
|
+
return 0
|
|
31
|
+
fi
|
|
32
|
+
done
|
|
33
|
+
done
|
|
34
|
+
return 1
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
# Search locations, in order of preference.
|
|
38
|
+
SEARCH_DIRS=(
|
|
39
|
+
"$XWANG_SCRIPT_DIR"
|
|
40
|
+
"$XWANG_SCRIPT_DIR/.."
|
|
41
|
+
"$HOME"
|
|
42
|
+
"$HOME/.config"
|
|
43
|
+
)
|
|
44
|
+
|
|
19
45
|
# Locate xwang-open-check.sh dynamically without hardcoding a .claude path.
|
|
20
|
-
# Prefer the sibling relative location, then fall back to a
|
|
46
|
+
# Prefer the sibling relative location, then fall back to a glob search.
|
|
21
47
|
if [ -z "${XWANG_OPEN_CHECK:-}" ]; then
|
|
22
|
-
XWANG_OPEN_CHECK_SIBLING="${XWANG_SCRIPT_DIR}
|
|
48
|
+
XWANG_OPEN_CHECK_SIBLING="${XWANG_SCRIPT_DIR}/../../xwang-open/scripts/xwang-open-check.sh"
|
|
23
49
|
if [ -f "$XWANG_OPEN_CHECK_SIBLING" ]; then
|
|
24
|
-
XWANG_OPEN_CHECK="$XWANG_OPEN_CHECK_SIBLING"
|
|
50
|
+
XWANG_OPEN_CHECK="$(cd "$(dirname "$XWANG_OPEN_CHECK_SIBLING")" && pwd)/$(basename "$XWANG_OPEN_CHECK_SIBLING")"
|
|
25
51
|
else
|
|
26
|
-
XWANG_OPEN_CHECK="$(
|
|
52
|
+
XWANG_OPEN_CHECK="$(locate_by_glob '*/xwang-open/scripts/xwang-open-check.sh' "${SEARCH_DIRS[@]}" 2>/dev/null || true)"
|
|
27
53
|
fi
|
|
28
54
|
fi
|
|
29
55
|
export XWANG_OPEN_CHECK
|
|
@@ -32,9 +58,9 @@ export XWANG_OPEN_CHECK
|
|
|
32
58
|
if [ -z "${XWANG_GUARD:-}" ]; then
|
|
33
59
|
XWANG_GUARD_SIBLING="${XWANG_SCRIPT_DIR}/xwang-guard.sh"
|
|
34
60
|
if [ -f "$XWANG_GUARD_SIBLING" ]; then
|
|
35
|
-
XWANG_GUARD="$XWANG_GUARD_SIBLING"
|
|
61
|
+
XWANG_GUARD="$(cd "$(dirname "$XWANG_GUARD_SIBLING")" && pwd)/$(basename "$XWANG_GUARD_SIBLING")"
|
|
36
62
|
else
|
|
37
|
-
XWANG_GUARD="$(
|
|
63
|
+
XWANG_GUARD="$(locate_by_glob '*/xwang/scripts/xwang-guard.sh' "${SEARCH_DIRS[@]}" 2>/dev/null || true)"
|
|
38
64
|
fi
|
|
39
65
|
fi
|
|
40
66
|
export XWANG_GUARD
|
|
@@ -10,7 +10,7 @@ description: 启动 xwang 项目阶段2:深度设计,明确需求并同步
|
|
|
10
10
|
当用户触发 xwang 阶段2时:
|
|
11
11
|
|
|
12
12
|
1. 调用 `/grill-with-docs` 围绕需求目标、范围、用户、约束、验收标准等逐层追问,同时对照现有领域模型和文档(CONTEXT.md、ADRs)挑战术语、澄清冲突,直到达成共识。
|
|
13
|
-
2.
|
|
13
|
+
2. **强制进行 PRD 拆分预检(阻塞点)**:`/grill-with-docs` 确认需求完成后,**必须**输出一份 `PRD 拆分预检报告`,基于已澄清信息评估是否需要拆分为多个 change。**无论是否需要拆分,都必须停下来向用户展示报告并等待明确选择**;未确认前不得生成 PRD 或创建 OpenSpec change。
|
|
14
14
|
3. grilling 结束后,根据需求内容自己总结一个简洁的 kebab-case 需求名称 `<name>`,用于生成 `docs/mattpocock/<name>-prd.md`。
|
|
15
15
|
4. 创建 `docs/mattpocock/` 目录(如不存在)。
|
|
16
16
|
5. **需求澄清完成确认(阻塞点)**:向用户输出一份结构化的需求摘要(目标、范围、用户、核心行为、边界情况、非功能性需求、依赖与限制),等待用户明确确认或提出修改;未确认前不得生成 PRD 或创建 OpenSpec change。
|
|
@@ -50,24 +50,50 @@ fi
|
|
|
50
50
|
- [ ] 确认用户要启动 xwang 阶段2(关键词:xwang-design、xwang 阶段2、开始 xwang)。
|
|
51
51
|
- [ ] 调用 `/grill-with-docs`,从用户视角深挖:目标用户、核心问题、预期行为、边界情况、非功能性需求、依赖与限制;并对照现有 CONTEXT.md/ADRs 挑战术语、澄清冲突,必要时实时更新文档。
|
|
52
52
|
- [ ] grilling 过程中持续追问,直到形成清晰的需求理解。
|
|
53
|
+
- [ ] `/grill-with-docs` 完成需求确认后,**不得立即生成 PRD**,必须先进入 Step 1a 的强制拆分预检。
|
|
53
54
|
|
|
54
|
-
### Step 1a:PRD
|
|
55
|
+
### Step 1a:PRD 拆分预检(强制阻塞点)
|
|
55
56
|
|
|
56
|
-
grilling
|
|
57
|
+
grilling 确认完成后、生成 PRD 前,**必须**执行 PRD 拆分预检并输出报告。
|
|
57
58
|
|
|
58
|
-
- [ ]
|
|
59
|
-
|
|
59
|
+
- [ ] **输出《PRD 拆分预检报告》**,格式如下:
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
### PRD 拆分预检报告
|
|
63
|
+
|
|
64
|
+
评估结论:<建议拆分 / 无需拆分>
|
|
65
|
+
|
|
66
|
+
触发拆分的信号(如存在):
|
|
67
|
+
- <信号1:例如 涉及多个独立 capability>
|
|
68
|
+
- <信号2:例如 预计超过 3 个大任务>
|
|
69
|
+
- ...
|
|
70
|
+
|
|
71
|
+
候选拆分清单(仅在建议拆分时输出):
|
|
72
|
+
1. <change-name-1>
|
|
73
|
+
- 目标与范围:<一句话描述>
|
|
74
|
+
- 明确非目标:<本 change 不做的事>
|
|
75
|
+
- 依赖关系/推荐顺序:<依赖谁、谁先谁后>
|
|
76
|
+
- 核心验收场景:<1-2 个验收场景>
|
|
77
|
+
2. <change-name-2>
|
|
78
|
+
...
|
|
79
|
+
|
|
80
|
+
用户选择:
|
|
81
|
+
- [ ] 创建多个 OpenSpec changes(按候选拆分逐个创建)
|
|
82
|
+
- [ ] 保持为一个 change(并在 PRD 中记录不拆分原因)
|
|
83
|
+
- [ ] 调整拆分方案(用户说明方向后重新输出报告并再次确认)
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
- [ ] 满足任一条件时结论必须为「建议拆分」:
|
|
60
87
|
- PRD 包含多个可独立设计、构建、验证、归档的 capability
|
|
61
88
|
- 涉及多个模块或用户路径,且其中一部分可独立交付
|
|
62
89
|
- 存在明显分阶段里程碑
|
|
63
90
|
- 预计会产生多个 delta spec 或超过 3 个大任务
|
|
64
91
|
- 任一部分失败或延期不应阻塞其他部分进入后续阶段
|
|
65
|
-
- [ ]
|
|
66
|
-
- **创建多个 OpenSpec changes**:按候选拆分逐个创建独立 change
|
|
67
|
-
- **保持为一个 change**:继续单 change 流程,并在 PRD 中记录不拆分原因
|
|
68
|
-
- **调整拆分方案后继续**:用户说明调整方向后,重新输出候选拆分清单并再次确认
|
|
92
|
+
- [ ] **无论结论如何,都必须使用当前平台可用的用户输入/确认机制暂停并等待用户选择**。
|
|
69
93
|
- [ ] 用户选择「创建多个 changes」后,当前 `/xwang-design` 调用只完成拆分确认;随后按用户确认的顺序分别进入每个拆分项的 `/xwang-design`,每个拆分项默认跳过本预检。
|
|
70
|
-
- [ ]
|
|
94
|
+
- [ ] 用户选择「保持为一个 change」后,必须在最终 PRD 中显式记录“不拆分原因”,然后继续后续步骤。
|
|
95
|
+
- [ ] 用户选择「调整拆分方案」后,根据用户反馈重新输出预检报告并再次等待确认。
|
|
96
|
+
- [ ] **未得到用户明确选择前,不得生成 PRD,不得创建 OpenSpec change。**
|
|
71
97
|
|
|
72
98
|
### Step 1b:需求澄清完成确认(阻塞点)
|
|
73
99
|
|
|
@@ -81,6 +107,7 @@ grilling 结束后、生成 PRD 前,基于已澄清信息评估是否需要拆
|
|
|
81
107
|
|
|
82
108
|
- [ ] 用户确认后,调用 `/to-prd` 生成**中文** PRD(遵循 to-prd 的 PRD 模板),无需额外用户确认。
|
|
83
109
|
- [ ] 将 PRD 写入 `docs/mattpocock/<name>-prd.md`;如果 grilling 过程中名称有调整,使用最终生成的名称。
|
|
110
|
+
- [ ] **如果 Step 1a 结论为「保持为一个 change」,在 PRD 中显式写入“不拆分原因”章节。**
|
|
84
111
|
|
|
85
112
|
### Step 3:创建 OpenSpec change
|
|
86
113
|
|
package/dist/cli/index.js
CHANGED
|
@@ -1,11 +1,24 @@
|
|
|
1
1
|
import { Command, Option } from 'commander';
|
|
2
|
+
import { createRequire } from 'module';
|
|
2
3
|
import { initCommand } from '../commands/init.js';
|
|
4
|
+
import { statusCommand } from '../commands/status.js';
|
|
5
|
+
import { doctorCommand } from '../commands/doctor.js';
|
|
6
|
+
import { updateCommand } from '../commands/update.js';
|
|
7
|
+
const require = createRequire(import.meta.url);
|
|
8
|
+
const { version } = require('../../package.json');
|
|
3
9
|
const program = new Command();
|
|
4
|
-
program
|
|
10
|
+
program
|
|
11
|
+
.name('xwang')
|
|
12
|
+
.description('xwang 工作流 CLI')
|
|
13
|
+
.version(version);
|
|
5
14
|
program
|
|
6
15
|
.command('init [path]')
|
|
7
16
|
.description('初始化 XWANG 工作流')
|
|
8
17
|
.option('--auto', '自动安装缺失组件,跳过已存在组件')
|
|
18
|
+
.option('--yes', '自动安装缺失组件,跳过已存在组件')
|
|
19
|
+
.option('--skip-existing', '不覆盖已存在的组件')
|
|
20
|
+
.option('--overwrite', '覆盖 manifest 管理的文件')
|
|
21
|
+
.option('--json', '以 JSON 格式输出')
|
|
9
22
|
.addOption(new Option('--scope <scope>', '安装范围').choices(['global', 'project']))
|
|
10
23
|
.action(async (targetPath = '.', options) => {
|
|
11
24
|
try {
|
|
@@ -20,11 +33,28 @@ program
|
|
|
20
33
|
}
|
|
21
34
|
});
|
|
22
35
|
program
|
|
23
|
-
.command('
|
|
24
|
-
.description('
|
|
25
|
-
.option('
|
|
26
|
-
.action((options) => {
|
|
27
|
-
|
|
36
|
+
.command('status [path]')
|
|
37
|
+
.description('显示活跃的 change 和工作流状态')
|
|
38
|
+
.option('--json', '以 JSON 格式输出')
|
|
39
|
+
.action(async (targetPath = '.', options) => {
|
|
40
|
+
await statusCommand(targetPath, options);
|
|
41
|
+
});
|
|
42
|
+
program
|
|
43
|
+
.command('doctor [path]')
|
|
44
|
+
.description('诊断 XWANG 安装健康状况')
|
|
45
|
+
.option('--json', '以 JSON 格式输出')
|
|
46
|
+
.addOption(new Option('--scope <scope>', '诊断的安装范围').choices(['auto', 'global', 'project']))
|
|
47
|
+
.action(async (targetPath = '.', options) => {
|
|
48
|
+
await doctorCommand(targetPath, options);
|
|
49
|
+
});
|
|
50
|
+
program
|
|
51
|
+
.command('update [path]')
|
|
52
|
+
.description('更新 xwang skill 文件到最新版本')
|
|
53
|
+
.option('--json', '以 JSON 格式输出')
|
|
54
|
+
.addOption(new Option('--scope <scope>', '安装范围').choices(['global', 'project']))
|
|
55
|
+
.addOption(new Option('--skip-npm', '跳过 npm 包自更新').hideHelp())
|
|
56
|
+
.action(async (targetPath = '.', options) => {
|
|
57
|
+
await updateCommand(targetPath, options);
|
|
28
58
|
});
|
|
29
59
|
program.parse();
|
|
30
60
|
//# sourceMappingURL=index.js.map
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { InstallScope } from '../core/types.js';
|
|
2
|
+
export type DoctorOptions = {
|
|
3
|
+
json?: boolean;
|
|
4
|
+
scope?: InstallScope;
|
|
5
|
+
};
|
|
6
|
+
export declare function doctorCommand(targetPath: string, options?: DoctorOptions): Promise<void>;
|
|
7
|
+
//# sourceMappingURL=doctor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB,CAAC;AA+CF,wBAAsB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoClG"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import { promises as fs } from 'fs';
|
|
3
|
+
import { PLATFORMS, getPlatformSkillsDir } from '../core/platforms.js';
|
|
4
|
+
import { getBaseDir } from '../core/detect.js';
|
|
5
|
+
const EXPECTED_SKILLS = [
|
|
6
|
+
'xwang',
|
|
7
|
+
'xwang-open',
|
|
8
|
+
'xwang-design',
|
|
9
|
+
'xwang-build',
|
|
10
|
+
'xwang-verify',
|
|
11
|
+
'xwang-archive',
|
|
12
|
+
'xwang-hotfix',
|
|
13
|
+
'xwang-tweak',
|
|
14
|
+
];
|
|
15
|
+
async function checkPlatform(baseDir, platform, scope) {
|
|
16
|
+
const skillsDir = path.join(baseDir, getPlatformSkillsDir(platform, scope), 'skills');
|
|
17
|
+
const missing = [];
|
|
18
|
+
let hasSkills = false;
|
|
19
|
+
for (const skill of EXPECTED_SKILLS) {
|
|
20
|
+
const skillPath = path.join(skillsDir, skill, 'SKILL.md');
|
|
21
|
+
try {
|
|
22
|
+
await fs.access(skillPath);
|
|
23
|
+
hasSkills = true;
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
missing.push(skill);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return {
|
|
30
|
+
platform: platform.name,
|
|
31
|
+
skillsDir: path.relative(baseDir, skillsDir),
|
|
32
|
+
hasSkills,
|
|
33
|
+
missing,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
export async function doctorCommand(targetPath, options = {}) {
|
|
37
|
+
const projectPath = path.resolve(targetPath);
|
|
38
|
+
const scope = options.scope === 'global' ? 'global' : 'project';
|
|
39
|
+
const baseDir = getBaseDir(scope, projectPath);
|
|
40
|
+
const results = [];
|
|
41
|
+
for (const platform of PLATFORMS) {
|
|
42
|
+
results.push(await checkPlatform(baseDir, platform, scope));
|
|
43
|
+
}
|
|
44
|
+
if (options.json) {
|
|
45
|
+
console.log(JSON.stringify({ projectPath, scope, results }, null, 2));
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
console.log(`\n XWANG 健康检查: ${projectPath}(范围:${scope})\n`);
|
|
49
|
+
const installed = results.filter((r) => r.hasSkills);
|
|
50
|
+
const notInstalled = results.filter((r) => !r.hasSkills);
|
|
51
|
+
if (installed.length > 0) {
|
|
52
|
+
console.log(' 已安装平台:');
|
|
53
|
+
for (const r of installed) {
|
|
54
|
+
const status = r.missing.length > 0 ? `(缺少 ${r.missing.join('、')})` : '完整';
|
|
55
|
+
console.log(` - ${r.platform} -> ${r.skillsDir} ${status}`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
if (notInstalled.length > 0) {
|
|
59
|
+
console.log(' 未安装平台:');
|
|
60
|
+
for (const r of notInstalled) {
|
|
61
|
+
console.log(` - ${r.platform}`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
console.log('');
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAIrD,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAsBF,wBAAsB,WAAW,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,CAalF;AAED,wBAAsB,eAAe,CACnC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,EACrB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,MAAM,EAAE,CAAC,CAmBnB;AAoGD,wBAAsB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4L9F"}
|
package/dist/commands/init.js
CHANGED
|
@@ -7,6 +7,7 @@ import { installOpenSpec } from '../core/openspec.js';
|
|
|
7
7
|
import { installSuperpowers, listSuperpowersSkills, resolveSuperpowersSkillsDir, } from '../core/superpowers.js';
|
|
8
8
|
import { PLATFORMS, getPlatformSkillsDir } from '../core/platforms.js';
|
|
9
9
|
import { copySkill, ensureDir } from '../utils/file-system.js';
|
|
10
|
+
import { copyXwangSkillsForPlatform } from '../core/skills.js';
|
|
10
11
|
const XWANG_BANNER = [
|
|
11
12
|
'██╗ ██╗██╗ ██╗ █████╗ ███╗ ██╗ ██████╗ ',
|
|
12
13
|
'╚██╗██╔╝██║ ██║██╔══██╗████╗ ██║██╔════╝ ',
|
|
@@ -124,6 +125,7 @@ function displaySummary(results, scope) {
|
|
|
124
125
|
displayComponentSummary(results, scope, 'mattpocock', 'mattpocock');
|
|
125
126
|
displayComponentSummary(results, scope, 'openspec', 'OpenSpec');
|
|
126
127
|
displayComponentSummary(results, scope, 'superpowers', 'Superpowers');
|
|
128
|
+
displayComponentSummary(results, scope, 'xwang', 'xwang');
|
|
127
129
|
console.log('');
|
|
128
130
|
}
|
|
129
131
|
export async function initCommand(targetPath, options = {}) {
|
|
@@ -156,7 +158,12 @@ export async function initCommand(targetPath, options = {}) {
|
|
|
156
158
|
if (hasSP && !options.auto) {
|
|
157
159
|
spAction = await promptOverwriteChoice('Superpowers', platform.name);
|
|
158
160
|
}
|
|
159
|
-
|
|
161
|
+
const hasXW = await hasSkills(baseDir, platform, 'xwang', scope);
|
|
162
|
+
let xwAction = resolveAction(hasXW, options);
|
|
163
|
+
if (hasXW && !options.auto) {
|
|
164
|
+
xwAction = await promptOverwriteChoice('xwang', platform.name);
|
|
165
|
+
}
|
|
166
|
+
plans.push({ platform, osAction, mpAction, spAction, xwAction });
|
|
160
167
|
}
|
|
161
168
|
const osToolIds = plans
|
|
162
169
|
.filter((plan) => plan.osAction !== 'skip')
|
|
@@ -227,11 +234,30 @@ export async function initCommand(targetPath, options = {}) {
|
|
|
227
234
|
else {
|
|
228
235
|
console.log('\n Superpowers:全部跳过');
|
|
229
236
|
}
|
|
237
|
+
const xwPlatformNames = plans
|
|
238
|
+
.filter((plan) => plan.xwAction !== 'skip')
|
|
239
|
+
.map((plan) => plan.platform.name);
|
|
240
|
+
let xwGlobalStatus = 'skipped';
|
|
241
|
+
if (xwPlatformNames.length > 0) {
|
|
242
|
+
const hasXwOverwrite = plans.some((p) => p.xwAction === 'overwrite');
|
|
243
|
+
console.log('\n 正在为以下平台安装 xwang:' + xwPlatformNames.join('、'));
|
|
244
|
+
let totalCopied = 0;
|
|
245
|
+
for (const plan of plans.filter((p) => p.xwAction !== 'skip')) {
|
|
246
|
+
const { copied } = await copyXwangSkillsForPlatform(baseDir, plan.platform, plan.xwAction === 'overwrite', scope);
|
|
247
|
+
totalCopied += copied;
|
|
248
|
+
}
|
|
249
|
+
xwGlobalStatus = hasXwOverwrite || totalCopied > 0 ? 'installed' : 'skipped';
|
|
250
|
+
console.log(' xwang:' + statusLabel(xwGlobalStatus));
|
|
251
|
+
}
|
|
252
|
+
else {
|
|
253
|
+
console.log('\n xwang:全部跳过');
|
|
254
|
+
}
|
|
230
255
|
const results = plans.map((plan) => ({
|
|
231
256
|
platform: plan.platform,
|
|
232
257
|
mattpocock: computePlatformStatus(plan.mpAction, mattpocockStatus),
|
|
233
258
|
openspec: computePlatformStatus(plan.osAction, osGlobalStatus),
|
|
234
259
|
superpowers: computePlatformStatus(plan.spAction, spGlobalStatus),
|
|
260
|
+
xwang: computePlatformStatus(plan.xwAction, xwGlobalStatus),
|
|
235
261
|
}));
|
|
236
262
|
displaySummary(results, scope);
|
|
237
263
|
}
|
|
@@ -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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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAyCF,wBAAsB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBlG"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import { promises as fs } from 'fs';
|
|
3
|
+
async function readYamlField(yamlPath, field) {
|
|
4
|
+
try {
|
|
5
|
+
const content = await fs.readFile(yamlPath, 'utf-8');
|
|
6
|
+
const match = content.match(new RegExp(`^${field}:\\s*(.+)$`, 'm'));
|
|
7
|
+
return match ? match[1].trim() : null;
|
|
8
|
+
}
|
|
9
|
+
catch {
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
async function scanChanges(projectPath) {
|
|
14
|
+
const changesDir = path.join(projectPath, 'openspec', 'changes');
|
|
15
|
+
const changes = [];
|
|
16
|
+
try {
|
|
17
|
+
const entries = await fs.readdir(changesDir, { withFileTypes: true });
|
|
18
|
+
for (const entry of entries) {
|
|
19
|
+
if (!entry.isDirectory())
|
|
20
|
+
continue;
|
|
21
|
+
const yamlPath = path.join(changesDir, entry.name, '.xwang.yaml');
|
|
22
|
+
const phase = await readYamlField(yamlPath, 'phase');
|
|
23
|
+
if (!phase)
|
|
24
|
+
continue;
|
|
25
|
+
const workflow = (await readYamlField(yamlPath, 'workflow')) ?? 'unknown';
|
|
26
|
+
const archived = (await readYamlField(yamlPath, 'archived')) === 'true';
|
|
27
|
+
changes.push({ name: entry.name, phase, workflow, archived });
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
// openspec/changes may not exist
|
|
32
|
+
}
|
|
33
|
+
return changes.sort((a, b) => a.name.localeCompare(b.name));
|
|
34
|
+
}
|
|
35
|
+
export async function statusCommand(targetPath, options = {}) {
|
|
36
|
+
const projectPath = path.resolve(targetPath);
|
|
37
|
+
const changes = await scanChanges(projectPath);
|
|
38
|
+
if (options.json) {
|
|
39
|
+
console.log(JSON.stringify({ projectPath, changes }, null, 2));
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
console.log(`\n XWANG 状态: ${projectPath}\n`);
|
|
43
|
+
if (changes.length === 0) {
|
|
44
|
+
console.log(' 未发现活跃的 change。');
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
console.log(' 活跃 change:');
|
|
48
|
+
for (const change of changes) {
|
|
49
|
+
const state = change.archived ? '已归档' : change.phase;
|
|
50
|
+
console.log(` - ${change.name} (${change.workflow}) -> ${state}`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
console.log('');
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { InstallScope } from '../core/types.js';
|
|
2
|
+
export type UpdateOptions = {
|
|
3
|
+
json?: boolean;
|
|
4
|
+
scope?: InstallScope;
|
|
5
|
+
skipNpm?: boolean;
|
|
6
|
+
};
|
|
7
|
+
export declare function updateCommand(targetPath: string, options?: UpdateOptions): Promise<void>;
|
|
8
|
+
//# sourceMappingURL=update.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAKrD,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAoDF,wBAAsB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuElG"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import os from 'os';
|
|
3
|
+
import { spawn } from 'child_process';
|
|
4
|
+
import { createRequire } from 'module';
|
|
5
|
+
import { fileExists, readDir } from '../utils/file-system.js';
|
|
6
|
+
import { copyXwangSkillsForPlatform } from '../core/skills.js';
|
|
7
|
+
import { getBaseDir } from '../core/detect.js';
|
|
8
|
+
import { PLATFORMS, getPlatformSkillsDir } from '../core/platforms.js';
|
|
9
|
+
const require = createRequire(import.meta.url);
|
|
10
|
+
const { version, name: PACKAGE_NAME } = require('../../package.json');
|
|
11
|
+
async function hasXwangSkills(baseDir, platform, scope) {
|
|
12
|
+
const skillsDir = path.join(baseDir, getPlatformSkillsDir(platform, scope), 'skills');
|
|
13
|
+
if (!(await fileExists(skillsDir)))
|
|
14
|
+
return false;
|
|
15
|
+
const entries = await readDir(skillsDir);
|
|
16
|
+
return entries.some((entry) => entry.startsWith('xwang'));
|
|
17
|
+
}
|
|
18
|
+
async function detectInstalledTargets(projectPath, options) {
|
|
19
|
+
const scopes = options.scope ? [options.scope] : ['project', 'global'];
|
|
20
|
+
const targets = [];
|
|
21
|
+
for (const scope of scopes) {
|
|
22
|
+
const baseDir = scope === 'global' ? os.homedir() : projectPath;
|
|
23
|
+
for (const platform of PLATFORMS) {
|
|
24
|
+
if (await hasXwangSkills(baseDir, platform, scope)) {
|
|
25
|
+
targets.push({ scope, platform });
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return targets;
|
|
30
|
+
}
|
|
31
|
+
function getNpmExecutable() {
|
|
32
|
+
return process.platform === 'win32' ? 'npm.cmd' : 'npm';
|
|
33
|
+
}
|
|
34
|
+
function buildNpmUpdateArgs(scope) {
|
|
35
|
+
return scope === 'global'
|
|
36
|
+
? ['install', '-g', `${PACKAGE_NAME}@latest`]
|
|
37
|
+
: ['install', `${PACKAGE_NAME}@latest`];
|
|
38
|
+
}
|
|
39
|
+
async function updateNpmPackage(scope, projectPath) {
|
|
40
|
+
return new Promise((resolve) => {
|
|
41
|
+
const child = spawn(getNpmExecutable(), buildNpmUpdateArgs(scope), {
|
|
42
|
+
cwd: scope === 'global' ? process.cwd() : projectPath,
|
|
43
|
+
stdio: 'inherit',
|
|
44
|
+
shell: true,
|
|
45
|
+
});
|
|
46
|
+
child.on('error', () => resolve(false));
|
|
47
|
+
child.on('exit', (code) => resolve(code === 0));
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
export async function updateCommand(targetPath, options = {}) {
|
|
51
|
+
const projectPath = path.resolve(targetPath);
|
|
52
|
+
const log = options.json ? () => undefined : console.log;
|
|
53
|
+
log(`\n XWANG Update v${version}\n`);
|
|
54
|
+
const targets = await detectInstalledTargets(projectPath, options);
|
|
55
|
+
if (targets.length === 0) {
|
|
56
|
+
if (options.json) {
|
|
57
|
+
console.log(JSON.stringify({ npm: { status: 'skipped' }, skills: { totalCopied: 0, targets: [] } }, null, 2));
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
log('\n 未找到已安装 xwang skill 的平台。请先运行 xwang init。\n');
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
const primaryScope = targets[0].scope;
|
|
64
|
+
let npmStatus = 'skipped';
|
|
65
|
+
if (!options.skipNpm) {
|
|
66
|
+
log(` 正在更新 npm 包(范围:${primaryScope})...`);
|
|
67
|
+
const npmUpdated = await updateNpmPackage(primaryScope, projectPath);
|
|
68
|
+
npmStatus = npmUpdated ? 'updated' : 'failed';
|
|
69
|
+
log(` npm 包:${npmStatus === 'updated' ? '已更新' : '更新失败,继续使用内置 skill'}`);
|
|
70
|
+
}
|
|
71
|
+
log(`\n 正在为 ${targets.length} 个目标平台更新 xwang skills:\n`);
|
|
72
|
+
let totalCopied = 0;
|
|
73
|
+
const targetResults = [];
|
|
74
|
+
for (const target of targets) {
|
|
75
|
+
const baseDir = getBaseDir(target.scope, projectPath);
|
|
76
|
+
const { copied, skipped } = await copyXwangSkillsForPlatform(baseDir, target.platform, true, target.scope);
|
|
77
|
+
totalCopied += copied;
|
|
78
|
+
const result = {
|
|
79
|
+
scope: target.scope,
|
|
80
|
+
platform: target.platform.id,
|
|
81
|
+
platformName: target.platform.name,
|
|
82
|
+
copied,
|
|
83
|
+
skipped,
|
|
84
|
+
};
|
|
85
|
+
targetResults.push(result);
|
|
86
|
+
log(` ${target.platform.name} (${target.scope}):复制 ${copied} 个,跳过 ${skipped} 个`);
|
|
87
|
+
}
|
|
88
|
+
if (options.json) {
|
|
89
|
+
console.log(JSON.stringify({
|
|
90
|
+
npm: {
|
|
91
|
+
status: npmStatus,
|
|
92
|
+
scope: options.skipNpm ? undefined : primaryScope,
|
|
93
|
+
},
|
|
94
|
+
skills: {
|
|
95
|
+
totalCopied,
|
|
96
|
+
targets: targetResults,
|
|
97
|
+
},
|
|
98
|
+
}, null, 2));
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
log(`\n 更新完成。`);
|
|
102
|
+
log(` npm 包:${npmStatus}${options.skipNpm ? '' : `(${primaryScope})`}`);
|
|
103
|
+
log(` skills:${targets.length} 个目标平台,共复制 ${totalCopied} 个文件\n`);
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,0BAA0B,EAAqB,MAAM,mBAAmB,CAAC;AAClF,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAiB,MAAM,sBAAsB,CAAC;AAGtF,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAatE,KAAK,UAAU,cAAc,CAAC,OAAe,EAAE,QAAkB,EAAE,KAAmB;IACpF,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,oBAAoB,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC;IACtF,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,SAAS,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACjD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC;IACzC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,WAAmB,EAAE,OAAsB;IAC/E,MAAM,MAAM,GAAmB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACvF,MAAM,OAAO,GAAsB,EAAE,CAAC;IAEtC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;QAChE,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,IAAI,MAAM,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;gBACnD,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,gBAAgB;IACvB,OAAO,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;AAC1D,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAmB;IAC7C,OAAO,KAAK,KAAK,QAAQ;QACvB,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,YAAY,SAAS,CAAC;QAC7C,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,YAAY,SAAS,CAAC,CAAC;AAC5C,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,KAAmB,EAAE,WAAmB;IACtE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,gBAAgB,EAAE,EAAE,kBAAkB,CAAC,KAAK,CAAC,EAAE;YACjE,GAAG,EAAE,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,WAAW;YACrD,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,IAAI;SACZ,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QACxC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,UAAkB,EAAE,UAAyB,EAAE;IACjF,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7C,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;IAEzD,GAAG,CAAC,qBAAqB,OAAO,IAAI,CAAC,CAAC;IAEtC,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAEnE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9G,OAAO;QACT,CAAC;QACD,GAAG,CAAC,+CAA+C,CAAC,CAAC;QACrD,OAAO;IACT,CAAC;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAEtC,IAAI,SAAS,GAAqC,SAAS,CAAC;IAC5D,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACrB,GAAG,CAAC,mBAAmB,YAAY,MAAM,CAAC,CAAC;QAC3C,MAAM,UAAU,GAAG,MAAM,gBAAgB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QACrE,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC9C,GAAG,CAAC,WAAW,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,GAAG,CAAC,WAAW,OAAO,CAAC,MAAM,0BAA0B,CAAC,CAAC;IAEzD,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,MAAM,aAAa,GAAG,EAAE,CAAC;IACzB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QACtD,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,0BAA0B,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3G,WAAW,IAAI,MAAM,CAAC;QAEtB,MAAM,MAAM,GAAG;YACb,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE;YAC5B,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI;YAClC,MAAM;YACN,OAAO;SACR,CAAC;QACF,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE3B,GAAG,CAAC,KAAK,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM,CAAC,KAAK,QAAQ,MAAM,SAAS,OAAO,IAAI,CAAC,CAAC;IACpF,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CACZ;YACE,GAAG,EAAE;gBACH,MAAM,EAAE,SAAS;gBACjB,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY;aAClD;YACD,MAAM,EAAE;gBACN,WAAW;gBACX,OAAO,EAAE,aAAa;aACvB;SACF,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;QACF,OAAO;IACT,CAAC;IAED,GAAG,CAAC,WAAW,CAAC,CAAC;IACjB,GAAG,CAAC,aAAa,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,YAAY,GAAG,EAAE,CAAC,CAAC;IAC3E,GAAG,CAAC,cAAc,OAAO,CAAC,MAAM,cAAc,WAAW,QAAQ,CAAC,CAAC;AACrE,CAAC"}
|
package/dist/core/detect.d.ts
CHANGED
|
@@ -2,5 +2,5 @@ import { type Platform } from './platforms.js';
|
|
|
2
2
|
import type { InstallScope } from './types.js';
|
|
3
3
|
export declare function getBaseDir(scope: InstallScope, projectPath: string): string;
|
|
4
4
|
export declare function detectPlatforms(projectPath: string): Promise<Set<string>>;
|
|
5
|
-
export declare function hasSkills(baseDir: string, platform: Platform, component: 'openspec' | 'mattpocock' | 'superpowers', scope?: InstallScope): Promise<boolean>;
|
|
5
|
+
export declare function hasSkills(baseDir: string, platform: Platform, component: 'openspec' | 'mattpocock' | 'superpowers' | 'xwang', scope?: InstallScope): Promise<boolean>;
|
|
6
6
|
//# sourceMappingURL=detect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../src/core/detect.ts"],"names":[],"mappings":"AAIA,OAAO,EAAoC,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACjF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,wBAAgB,UAAU,CAAC,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAsB/E;
|
|
1
|
+
{"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../src/core/detect.ts"],"names":[],"mappings":"AAIA,OAAO,EAAoC,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACjF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,wBAAgB,UAAU,CAAC,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAsB/E;AA0BD,wBAAsB,SAAS,CAC7B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,UAAU,GAAG,YAAY,GAAG,aAAa,GAAG,OAAO,EAC9D,KAAK,GAAE,YAAwB,GAC9B,OAAO,CAAC,OAAO,CAAC,CAkClB"}
|
package/dist/core/detect.js
CHANGED
|
@@ -41,7 +41,10 @@ function matchesSkill(entry, component) {
|
|
|
41
41
|
if (component === 'superpowers') {
|
|
42
42
|
return SUPERPOWERS_SKILLS.includes(entry);
|
|
43
43
|
}
|
|
44
|
-
|
|
44
|
+
if (component === 'xwang') {
|
|
45
|
+
return entry.startsWith('xwang');
|
|
46
|
+
}
|
|
47
|
+
return entry === 'grill-with-docs' || entry === 'to-prd';
|
|
45
48
|
}
|
|
46
49
|
export async function hasSkills(baseDir, platform, component, scope = 'project') {
|
|
47
50
|
const skillDirEntries = await Promise.all(getPlatformSkillsDirs(platform, scope).map(async (skillsDir) => {
|
package/dist/core/detect.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/core/detect.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAiB,MAAM,gBAAgB,CAAC;AAGjF,MAAM,UAAU,UAAU,CAAC,KAAmB,EAAE,WAAmB;IACjE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;AACzD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,WAAmB;IACvD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IAEnC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,QAAQ,CAAC,cAAc,IAAI,QAAQ,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClE,KAAK,MAAM,aAAa,IAAI,QAAQ,CAAC,cAAc,EAAE,CAAC;gBACpD,IAAI,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC;oBAC5D,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;oBAC1B,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,SAAS,IAAI,qBAAqB,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC;gBACnE,IAAI,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC;oBACxD,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;oBAC1B,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,kBAAkB,GAAG;IACzB,eAAe;IACf,mBAAmB;IACnB,eAAe;IACf,yBAAyB;IACzB,6BAA6B;CAC9B,CAAC;AAEF,SAAS,YAAY,CACnB,KAAa,EACb,
|
|
1
|
+
{"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/core/detect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type Platform } from './platforms.js';
|
|
2
|
+
import type { InstallScope } from './types.js';
|
|
3
|
+
export declare function getManifestSkills(): Promise<string[]>;
|
|
4
|
+
export declare function copyXwangSkillsForPlatform(baseDir: string, platform: Platform, overwrite: boolean, scope?: InstallScope): Promise<{
|
|
5
|
+
copied: number;
|
|
6
|
+
skipped: number;
|
|
7
|
+
}>;
|
|
8
|
+
//# sourceMappingURL=skills.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/core/skills.ts"],"names":[],"mappings":"AAGA,OAAO,EAAwB,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA8B/C,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAG3D;AAED,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,OAAO,EAClB,KAAK,GAAE,YAAwB,GAC9B,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CA0B9C"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import { fileURLToPath } from 'url';
|
|
3
|
+
import { fileExists, readJson, copySkill, ensureDir } from '../utils/file-system.js';
|
|
4
|
+
import { getPlatformSkillsDir } from './platforms.js';
|
|
5
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = path.dirname(__filename);
|
|
7
|
+
function getAssetsDir() {
|
|
8
|
+
return path.resolve(__dirname, '..', '..', 'assets');
|
|
9
|
+
}
|
|
10
|
+
async function readManifest() {
|
|
11
|
+
const assetsDir = getAssetsDir();
|
|
12
|
+
const manifestPath = path.join(assetsDir, 'manifest.json');
|
|
13
|
+
if (!(await fileExists(manifestPath))) {
|
|
14
|
+
throw new Error(`Manifest not found at ${manifestPath}`);
|
|
15
|
+
}
|
|
16
|
+
const manifest = await readJson(manifestPath);
|
|
17
|
+
if (!manifest || !Array.isArray(manifest.skills)) {
|
|
18
|
+
throw new Error(`Invalid manifest at ${manifestPath}: "skills" must be an array`);
|
|
19
|
+
}
|
|
20
|
+
return manifest;
|
|
21
|
+
}
|
|
22
|
+
export async function getManifestSkills() {
|
|
23
|
+
const manifest = await readManifest();
|
|
24
|
+
return manifest.skills;
|
|
25
|
+
}
|
|
26
|
+
export async function copyXwangSkillsForPlatform(baseDir, platform, overwrite, scope = 'project') {
|
|
27
|
+
const assetsDir = getAssetsDir();
|
|
28
|
+
const manifest = await readManifest();
|
|
29
|
+
let copied = 0;
|
|
30
|
+
let skippedCount = 0;
|
|
31
|
+
for (const skillRelPath of manifest.skills) {
|
|
32
|
+
const src = path.join(assetsDir, 'skills', skillRelPath);
|
|
33
|
+
const dest = path.join(baseDir, getPlatformSkillsDir(platform, scope), 'skills', skillRelPath);
|
|
34
|
+
if (!overwrite && (await fileExists(dest))) {
|
|
35
|
+
skippedCount++;
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
try {
|
|
39
|
+
await ensureDir(path.dirname(dest));
|
|
40
|
+
await copySkill(src, dest);
|
|
41
|
+
copied++;
|
|
42
|
+
}
|
|
43
|
+
catch (err) {
|
|
44
|
+
console.error(` Failed to copy ${skillRelPath}: ${err.message}`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return { copied, skipped: skippedCount };
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=skills.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/core/skills.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAAiB,MAAM,gBAAgB,CAAC;AAGrE,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAO3C,SAAS,YAAY;IACnB,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AACvD,CAAC;AAED,KAAK,UAAU,YAAY;IACzB,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;IAE3D,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,yBAAyB,YAAY,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAW,YAAY,CAAC,CAAC;IACxD,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,uBAAuB,YAAY,6BAA6B,CAAC,CAAC;IACpF,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,MAAM,QAAQ,GAAG,MAAM,YAAY,EAAE,CAAC;IACtC,OAAO,QAAQ,CAAC,MAAM,CAAC;AACzB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,OAAe,EACf,QAAkB,EAClB,SAAkB,EAClB,QAAsB,SAAS;IAE/B,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,MAAM,QAAQ,GAAG,MAAM,YAAY,EAAE,CAAC;IAEtC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,KAAK,MAAM,YAAY,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;QACzD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,oBAAoB,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;QAE/F,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAC3C,YAAY,EAAE,CAAC;YACf,SAAS;QACX,CAAC;QAED,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YACpC,MAAM,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC3B,MAAM,EAAE,CAAC;QACX,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,sBAAsB,YAAY,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;AAC3C,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export declare function fileExists(filePath: string): Promise<boolean>;
|
|
2
2
|
export declare function readDir(dirPath: string): Promise<string[]>;
|
|
3
3
|
export declare function ensureDir(dirPath: string): Promise<void>;
|
|
4
|
+
export declare function readJson<T>(filePath: string): Promise<T>;
|
|
4
5
|
export declare function copySkill(sourcePath: string, targetPath: string): Promise<void>;
|
|
5
6
|
//# sourceMappingURL=file-system.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-system.d.ts","sourceRoot":"","sources":["../../src/utils/file-system.ts"],"names":[],"mappings":"AAGA,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOnE;AAED,wBAAsB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAUhE;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9D;AAiBD,wBAAsB,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAErF"}
|
|
1
|
+
{"version":3,"file":"file-system.d.ts","sourceRoot":"","sources":["../../src/utils/file-system.ts"],"names":[],"mappings":"AAGA,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOnE;AAED,wBAAsB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAUhE;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9D;AAiBD,wBAAsB,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAG9D;AAED,wBAAsB,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAErF"}
|
|
@@ -35,6 +35,10 @@ async function copyFileOrDir(sourcePath, targetPath) {
|
|
|
35
35
|
await fs.copyFile(sourcePath, targetPath, constants.COPYFILE_FICLONE);
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
|
+
export async function readJson(filePath) {
|
|
39
|
+
const content = await fs.readFile(filePath, 'utf-8');
|
|
40
|
+
return JSON.parse(content);
|
|
41
|
+
}
|
|
38
42
|
export async function copySkill(sourcePath, targetPath) {
|
|
39
43
|
await copyFileOrDir(sourcePath, targetPath);
|
|
40
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-system.js","sourceRoot":"","sources":["../../src/utils/file-system.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC/C,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,QAAgB;IAC/C,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAAe;IAC3C,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,GAAI,KAA+B,EAAE,IAAI,CAAC;QACpD,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5C,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAe;IAC7C,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,UAAkB,EAAE,UAAkB;IACjE,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACvC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QACvB,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC7C,MAAM,OAAO,CAAC,GAAG,CACf,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACpB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAC1E,CACF,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC;IACxE,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,UAAkB,EAAE,UAAkB;IACpE,MAAM,aAAa,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AAC9C,CAAC"}
|
|
1
|
+
{"version":3,"file":"file-system.js","sourceRoot":"","sources":["../../src/utils/file-system.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC/C,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,QAAgB;IAC/C,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAAe;IAC3C,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,GAAI,KAA+B,EAAE,IAAI,CAAC;QACpD,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5C,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAe;IAC7C,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,UAAkB,EAAE,UAAkB;IACjE,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACvC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QACvB,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC7C,MAAM,OAAO,CAAC,GAAG,CACf,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACpB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAC1E,CACF,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC;IACxE,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAI,QAAgB;IAChD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACrD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAM,CAAC;AAClC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,UAAkB,EAAE,UAAkB;IACpE,MAAM,aAAa,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AAC9C,CAAC"}
|