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.
@@ -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 platform-agnostic search.
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}/../xwang-open/scripts/xwang-open-check.sh"
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="$(find "$XWANG_SCRIPT_DIR" "$XWANG_SCRIPT_DIR/.." "$HOME" -path '*/xwang-open/scripts/xwang-open-check.sh' -type f -print -quit 2>/dev/null || true)"
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="$(find "$XWANG_SCRIPT_DIR" "$XWANG_SCRIPT_DIR/.." "$HOME" -path '*/xwang/scripts/xwang-guard.sh' -type f -print -quit 2>/dev/null || true)"
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. **PRD 拆分预检(阻塞点)**:grilling 结束后,基于已澄清信息评估是否需要拆分为多个 change。若 PRD 包含多个独立 capability、模块、用户路径或明显里程碑,必须暂停并让用户选择拆分方案;确认后才继续。
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 结束后、生成 PRD 前,基于已澄清信息评估是否需要拆分为多个 change。
57
+ grilling 确认完成后、生成 PRD 前,**必须**执行 PRD 拆分预检并输出报告。
57
58
 
58
- - [ ] 输出候选拆分清单。每项包含:建议 change 名称、目标与范围边界、明确非目标、依赖关系/推荐顺序、核心验收场景。
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
- - [ ] 未得到用户明确选择前,不得生成 PRD 或创建 OpenSpec change。
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.name('xwang').description('xwang CLI').version('0.0.1');
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('hello')
24
- .description('Say hello')
25
- .option('-n, --name <name>', 'Name to greet', 'world')
26
- .action((options) => {
27
- console.log('Hello, ' + options.name + '!');
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
@@ -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;AAElD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAEhE,OAAO;KACJ,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,eAAe,CAAC;KAC5B,MAAM,CAAC,QAAQ,EAAE,kBAAkB,CAAC;KACpC,SAAS,CAAC,IAAI,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;KAC/E,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,GAAG,EAAE,OAAO,EAAE,EAAE;IAC1C,IAAI,CAAC;QACH,MAAM,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;YAC/D,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,WAAW,CAAC;KACxB,MAAM,CAAC,mBAAmB,EAAE,eAAe,EAAE,OAAO,CAAC;KACrD,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;IAClB,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,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;AAGrD,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAqBF,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;AAmGD,wBAAsB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyJ9F"}
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"}
@@ -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
- plans.push({ platform, osAction, mpAction, spAction });
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":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAiB,MAAM,sBAAsB,CAAC;AAEtF,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAgB/D,MAAM,YAAY,GAAG;IACnB,+CAA+C;IAC/C,+CAA+C;IAC/C,+CAA+C;IAC/C,+CAA+C;IAC/C,+CAA+C;IAC/C,+CAA+C;IAC/C,oDAAoD;CACrD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,UAAuB,EAAE;IACzD,IAAI,OAAO,CAAC,KAAK;QAAE,OAAO,OAAO,CAAC,KAAK,CAAC;IACxC,IAAI,OAAO,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAEnC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAe;QACvC,OAAO,EAAE,UAAU;QACnB,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE;YACtC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE;SACvC;KACF,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,QAAqB,EACrB,UAAuB,EAAE;IAEzB,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC3C,IAAI,EAAE,QAAQ,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,KAAK,EAAE,QAAQ,CAAC,EAAE;QAClB,OAAO,EAAE,IAAI;KACd,CAAC,CAAC,CAAC;IAEJ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,QAAQ,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;QAC/B,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACnF,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC;QACjC,OAAO,EAAE,aAAa;QACtB,OAAO;QACP,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;IAEH,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,aAAqB,EACrB,YAAoB;IAEpB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAuB;QAChD,OAAO,EAAE,GAAG,aAAa,OAAO,YAAY,YAAY;QACxD,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE;YAClC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;SAC9B;KACF,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,aAAa,CACpB,WAAoB,EACpB,OAAoB;IAEpB,IAAI,CAAC,WAAW;QAAE,OAAO,SAAS,CAAC;IACnC,IAAI,OAAO,CAAC,IAAI;QAAE,OAAO,MAAM,CAAC;IAChC,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,qBAAqB,CAC5B,MAAwC,EACxC,YAA2B;IAE3B,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,SAAS,CAAC;IACxC,IAAI,YAAY,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC/C,IAAI,MAAM,KAAK,WAAW;QAAE,OAAO,aAAa,CAAC;IACjD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAqB,EAAE,YAAqB;IACzE,IAAI,MAAM,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IACzC,IAAI,YAAY;QAAE,OAAO,aAAa,CAAC;IACvC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,WAAW,CAAC,MAAqB;IACxC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,WAAW;YACd,OAAO,KAAK,CAAC;QACf,KAAK,aAAa;YAChB,OAAO,KAAK,CAAC;QACf,KAAK,SAAS;YACZ,OAAO,KAAK,CAAC;QACf,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAC9B,OAAyB,EACzB,KAAmB,EACnB,YAAoD,EACpD,aAAqB;IAErB,MAAM,OAAO,GAAG,IAAI,GAAG,EAAmC,CAAC;IAC3D,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;QACpC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,sBAAsB,GAAG;QAC7B,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QACnC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;KACtC,CAAC;IACF,IAAI,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,KAAK,aAAa,UAAU,CAAC,CAAC;QAC1C,KAAK,MAAM,MAAM,IAAI,sBAAsB,EAAE,CAAC;YAC5C,MAAM,SAAS,GAAG,oBAAoB,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC/D,OAAO,CAAC,GAAG,CAAC,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,OAAO,SAAS,UAAU,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAED,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;QACtC,IAAI,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,aAAa;YAAE,SAAS;QACjE,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,KAAK,aAAa,IAAI,KAAK,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5F,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,OAAyB,EAAE,KAAmB;IACpE,MAAM,UAAU,GAAG,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,sBAAsB,GAAG,UAAU,GAAG,KAAK,CAAC,CAAC;IAEzD,uBAAuB,CAAC,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;IACpE,uBAAuB,CAAC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAChE,uBAAuB,CAAC,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;IAEtE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,UAAkB,EAAE,UAAuB,EAAE;IAC7E,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAE7C,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,YAAY,GAAG,IAAI,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,WAAW,GAAG,cAAc,CAAC,CAAC;IAEpD,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,WAAW,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;IAEzC,MAAM,mBAAmB,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACrE,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QACjC,OAAO;IACT,CAAC;IAED,MAAM,iBAAiB,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CACtD,mBAAmB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAC1C,CAAC;IACF,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAS/C,MAAM,KAAK,GAAmB,EAAE,CAAC;IAEjC,KAAK,MAAM,QAAQ,IAAI,iBAAiB,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;QACtE,IAAI,QAAQ,GAAG,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAE7C,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAC3B,QAAQ,GAAG,MAAM,qBAAqB,CAAC,YAAY,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QACpE,IAAI,QAAQ,GAAG,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAE7C,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAC3B,QAAQ,GAAG,MAAM,qBAAqB,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;QACvE,IAAI,QAAQ,GAAG,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAE7C,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAC3B,QAAQ,GAAG,MAAM,qBAAqB,CAAC,aAAa,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QACvE,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,SAAS,GAAG,KAAK;SACpB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,MAAM,CAAC;SAC1C,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IAE/C,MAAM,eAAe,GAAG,KAAK;SAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,MAAM,CAAC;SAC1C,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAErC,IAAI,gBAAgB,GAAkB,SAAS,CAAC;IAChD,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,WAAW,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,2BAA2B,GAAG,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACrE,gBAAgB,GAAG,qBAAqB,CACtC,MAAM,iBAAiB,CAAC,WAAW,EAAE,KAAK,EAAE,cAAc,CAAC,EAC3D,cAAc,CACf,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAE7D,IAAI,gBAAgB,KAAK,QAAQ,EAAE,CAAC;YAClC,MAAM,eAAe,GAAG,0BAA0B,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YACvE,IAAI,eAAe,EAAE,CAAC;gBACpB,MAAM,UAAU,GAAG,oBAAoB,CAAC,eAAe,CAAC,CAAC;gBACzD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,EAAE,CAAC;oBAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CACzB,OAAO,EACP,oBAAoB,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,EAC1C,QAAQ,CACT,CAAC;oBACF,MAAM,SAAS,CAAC,SAAS,CAAC,CAAC;oBAC3B,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;wBACnC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;wBAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;wBACpD,MAAM,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;oBAC5C,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,cAAc,GAAkB,SAAS,CAAC;IAC9C,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,WAAW,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,yBAAyB,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7D,cAAc,GAAG,qBAAqB,CACpC,MAAM,eAAe,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK,CAAC,EACpD,cAAc,CACf,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC;IAC3D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,eAAe,GAAG,KAAK;SAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,MAAM,CAAC;SAC1C,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAErC,IAAI,cAAc,GAAkB,SAAS,CAAC;IAC9C,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,WAAW,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,4BAA4B,GAAG,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACtE,cAAc,GAAG,qBAAqB,CACpC,MAAM,kBAAkB,CAAC,WAAW,EAAE,KAAK,CAAC,EAC5C,cAAc,CACf,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC;QAE5D,IAAI,cAAc,KAAK,QAAQ,EAAE,CAAC;YAChC,MAAM,eAAe,GAAG,2BAA2B,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YACxE,IAAI,eAAe,EAAE,CAAC;gBACpB,MAAM,UAAU,GAAG,qBAAqB,CAAC,eAAe,CAAC,CAAC;gBAC1D,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,EAAE,CAAC;oBAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CACzB,OAAO,EACP,oBAAoB,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,EAC1C,QAAQ,CACT,CAAC;oBACF,MAAM,SAAS,CAAC,SAAS,CAAC,CAAC;oBAC3B,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;wBACnC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;wBAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;wBACpD,MAAM,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;oBAC5C,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,OAAO,GAAqB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACrD,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,UAAU,EAAE,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;QAClE,QAAQ,EAAE,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;QAC9D,WAAW,EAAE,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;KAClE,CAAC,CAAC,CAAC;IAEJ,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACjC,CAAC"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export type StatusOptions = {
2
+ json?: boolean;
3
+ };
4
+ export declare function statusCommand(targetPath: string, options?: StatusOptions): Promise<void>;
5
+ //# sourceMappingURL=status.d.ts.map
@@ -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":"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"}
@@ -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;AAuBD,wBAAsB,SAAS,CAC7B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,UAAU,GAAG,YAAY,GAAG,aAAa,EACpD,KAAK,GAAE,YAAwB,GAC9B,OAAO,CAAC,OAAO,CAAC,CAkClB"}
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"}
@@ -41,7 +41,10 @@ function matchesSkill(entry, component) {
41
41
  if (component === 'superpowers') {
42
42
  return SUPERPOWERS_SKILLS.includes(entry);
43
43
  }
44
- return entry === 'grill-me' || entry === 'to-prd';
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) => {
@@ -1 +1 @@
1
- {"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/core/detect.ts"],"names":[],"mappings":"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"}
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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xwang",
3
- "version": "0.0.1",
3
+ "version": "0.0.3",
4
4
  "description": "xwang CLI",
5
5
  "keywords": [
6
6
  "xwang",