claude-pangu 1.2.2 → 1.2.4
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/.claude-plugin/plugin.json +1 -1
- package/commands/cancel-yishan.md +45 -45
- package/dist/lib/constants.d.ts.map +1 -1
- package/dist/lib/constants.js +67 -30
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/installer.d.ts.map +1 -1
- package/dist/lib/installer.js +41 -29
- package/dist/lib/installer.js.map +1 -1
- package/hooks/ast-grep.sh +520 -520
- package/hooks/auto-update-checker.sh +402 -402
- package/hooks/code-quality-checker.sh +428 -428
- package/hooks/directory-agents-injector.sh +467 -467
- package/hooks/lsp-tools.sh +508 -508
- package/hooks/output-truncator.sh +409 -409
- package/hooks/preemptive-compaction.sh +444 -444
- package/hooks/rules-injector.sh +491 -491
- package/hooks/think-mode.sh +457 -457
- package/package.json +1 -1
- package/scripts/cli.js +1357 -1357
- package/scripts/logger.ts +51 -51
- package/scripts/setup-yishan-loop.sh +99 -99
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://code.claude.com/plugin-schema.json",
|
|
3
3
|
"name": "oh-my-claude",
|
|
4
|
-
"version": "1.2.
|
|
4
|
+
"version": "1.2.4",
|
|
5
5
|
"description": "基于中国传统文化的 Claude Code 智能编排插件 - A Claude Code plugin inspired by Chinese traditional culture",
|
|
6
6
|
"author": "ZDragon17",
|
|
7
7
|
"contributors": [
|
|
@@ -1,45 +1,45 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: cancel-yishan
|
|
3
|
-
description: |
|
|
4
|
-
取消愚公移山循环 - 停止当前的自主循环执行。
|
|
5
|
-
别名:/stop-yishan, /cancel-yugong, /stop-loop
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# 取消愚公移山循环
|
|
9
|
-
|
|
10
|
-
你需要取消当前正在进行的愚公移山循环。
|
|
11
|
-
|
|
12
|
-
## 取消操作
|
|
13
|
-
|
|
14
|
-
请执行以下步骤:
|
|
15
|
-
|
|
16
|
-
### 1. 删除状态文件
|
|
17
|
-
|
|
18
|
-
使用 Bash 工具删除状态文件:
|
|
19
|
-
|
|
20
|
-
```bash
|
|
21
|
-
rm -f .claude/yishan-loop.local.md
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
### 2. 确认取消
|
|
25
|
-
|
|
26
|
-
删除成功后,向用户确认:
|
|
27
|
-
|
|
28
|
-
```
|
|
29
|
-
🛑 愚公移山循环已取消
|
|
30
|
-
|
|
31
|
-
状态文件已删除:.claude/yishan-loop.local.md
|
|
32
|
-
循环将在当前响应结束后停止。
|
|
33
|
-
|
|
34
|
-
如需重新启动循环,请使用 /yishan 或 /yugong 命令。
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
## 注意事项
|
|
38
|
-
|
|
39
|
-
- 取消操作会立即停止循环,当前响应完成后不会再继续
|
|
40
|
-
- 已完成的工作不会被撤销
|
|
41
|
-
- TODO 列表会保留,可以稍后继续处理
|
|
42
|
-
|
|
43
|
-
## 执行
|
|
44
|
-
|
|
45
|
-
现在请删除状态文件以取消循环。
|
|
1
|
+
---
|
|
2
|
+
name: cancel-yishan
|
|
3
|
+
description: |
|
|
4
|
+
取消愚公移山循环 - 停止当前的自主循环执行。
|
|
5
|
+
别名:/stop-yishan, /cancel-yugong, /stop-loop
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# 取消愚公移山循环
|
|
9
|
+
|
|
10
|
+
你需要取消当前正在进行的愚公移山循环。
|
|
11
|
+
|
|
12
|
+
## 取消操作
|
|
13
|
+
|
|
14
|
+
请执行以下步骤:
|
|
15
|
+
|
|
16
|
+
### 1. 删除状态文件
|
|
17
|
+
|
|
18
|
+
使用 Bash 工具删除状态文件:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
rm -f .claude/yishan-loop.local.md
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### 2. 确认取消
|
|
25
|
+
|
|
26
|
+
删除成功后,向用户确认:
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
🛑 愚公移山循环已取消
|
|
30
|
+
|
|
31
|
+
状态文件已删除:.claude/yishan-loop.local.md
|
|
32
|
+
循环将在当前响应结束后停止。
|
|
33
|
+
|
|
34
|
+
如需重新启动循环,请使用 /yishan 或 /yugong 命令。
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## 注意事项
|
|
38
|
+
|
|
39
|
+
- 取消操作会立即停止循环,当前响应完成后不会再继续
|
|
40
|
+
- 已完成的工作不会被撤销
|
|
41
|
+
- TODO 列表会保留,可以稍后继续处理
|
|
42
|
+
|
|
43
|
+
## 执行
|
|
44
|
+
|
|
45
|
+
现在请删除状态文件以取消循环。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../lib/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../lib/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAsGH,iCAAiC;AACjC,eAAO,MAAM,OAAO,EAAE,MAA4B,CAAC;AAEnD,WAAW;AACX,eAAO,MAAM,WAAW,iBAAiB,CAAC;AAI1C,YAAY;AACZ,eAAO,MAAM,QAAQ,QAAe,CAAC;AAErC,WAAW;AACX,eAAO,MAAM,OAAO,QAA+C,CAAC;AAEpE,eAAe;AACf,eAAO,MAAM,cAAc,QAAkC,CAAC;AAE9D,aAAa;AACb,eAAO,MAAM,gBAAgB,QAAgD,CAAC;AAE9E,eAAe;AACf,eAAO,MAAM,iBAAiB,QAAmD,CAAC;AAElF,aAAa;AACb,eAAO,MAAM,UAAU,QAAyD,CAAC;AAEjF,oBAAoB;AACpB,eAAO,MAAM,YAAY,QAA6C,CAAC;AAEvE,kBAAkB;AAClB,eAAO,MAAM,UAAU,QAA2C,CAAC;AAInE,YAAY;AACZ,eAAO,MAAM,eAAe,QAAQ,CAAC;AAErC,iBAAiB;AACjB,eAAO,MAAM,aAAa,QAAgB,CAAC;AAE3C,YAAY;AACZ,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAI3C,gBAAgB;AAChB,eAAO,MAAM,0BAA0B,QAAc,CAAC;AAEtD,cAAc;AACd,eAAO,MAAM,gBAAgB,QAAY,CAAC;AAI1C,aAAa;AACb,eAAO,MAAM,cAAc,KAAK,CAAC;AAEjC,aAAa;AACb,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAItC,kBAAkB;AAClB,eAAO,MAAM,WAAW,2BAA2B,CAAC;AAEpD,uBAAuB;AACvB,eAAO,MAAM,iBAAiB,qDAA6C,CAAC;AAI5E,eAAe;AACf,eAAO,MAAM,WAAW,sEAAuE,CAAC;AAEhG,eAAe;AACf,eAAO,MAAM,YAAY,mDAAoD,CAAC;AAI9E,kBAAkB;AAClB,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmBd,CAAC;AAEX,0BAA0B;AAC1B,eAAO,MAAM,gBAAgB,mDAAoD,CAAC;AAElF,aAAa;AACb,eAAO,MAAM,aAAa,6DAA8D,CAAC;AAEzF,aAAa;AACb,eAAO,MAAM,aAAa,oBAAqB,CAAC"}
|
package/dist/lib/constants.js
CHANGED
|
@@ -5,6 +5,69 @@
|
|
|
5
5
|
import * as path from 'path';
|
|
6
6
|
import * as os from 'os';
|
|
7
7
|
import * as fs from 'fs';
|
|
8
|
+
/**
|
|
9
|
+
* 查找包含 package.json 的目录(claude-pangu 包根目录)
|
|
10
|
+
* 从给定路径向上遍历查找
|
|
11
|
+
*/
|
|
12
|
+
function findPackageRoot(startDir) {
|
|
13
|
+
let currentDir = startDir;
|
|
14
|
+
for (let i = 0; i < 15; i++) {
|
|
15
|
+
const pkgPath = path.join(currentDir, 'package.json');
|
|
16
|
+
if (fs.existsSync(pkgPath)) {
|
|
17
|
+
try {
|
|
18
|
+
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));
|
|
19
|
+
if (pkg.name === 'claude-pangu' || pkg.name === 'oh-my-claude') {
|
|
20
|
+
return currentDir;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
// 继续查找
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
const parentDir = path.dirname(currentDir);
|
|
28
|
+
if (parentDir === currentDir)
|
|
29
|
+
break; // 到达根目录
|
|
30
|
+
currentDir = parentDir;
|
|
31
|
+
}
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* 获取包根目录
|
|
36
|
+
* 使用多种方法尝试定位
|
|
37
|
+
*/
|
|
38
|
+
function getPackageRoot() {
|
|
39
|
+
// 方法 1: CommonJS __dirname (Jest 测试环境)
|
|
40
|
+
if (typeof __dirname !== 'undefined' && __dirname) {
|
|
41
|
+
const found = findPackageRoot(__dirname);
|
|
42
|
+
if (found)
|
|
43
|
+
return found;
|
|
44
|
+
}
|
|
45
|
+
// 方法 2: 从入口脚本路径查找 (npx/node 执行环境)
|
|
46
|
+
// process.argv[1] 是执行的脚本路径,如 /path/to/node_modules/claude-pangu/dist/scripts/cli.js
|
|
47
|
+
if (process.argv[1]) {
|
|
48
|
+
const scriptDir = path.dirname(process.argv[1]);
|
|
49
|
+
const found = findPackageRoot(scriptDir);
|
|
50
|
+
if (found)
|
|
51
|
+
return found;
|
|
52
|
+
}
|
|
53
|
+
// 方法 3: 从 process.cwd() 查找(开发环境)
|
|
54
|
+
const cwdFound = findPackageRoot(process.cwd());
|
|
55
|
+
if (cwdFound)
|
|
56
|
+
return cwdFound;
|
|
57
|
+
// 方法 4: 检查常见的全局安装路径
|
|
58
|
+
const globalPaths = [
|
|
59
|
+
path.join(process.env.APPDATA || '', 'npm', 'node_modules', 'claude-pangu'),
|
|
60
|
+
'/usr/local/lib/node_modules/claude-pangu',
|
|
61
|
+
'/usr/lib/node_modules/claude-pangu',
|
|
62
|
+
];
|
|
63
|
+
for (const globalPath of globalPaths) {
|
|
64
|
+
if (fs.existsSync(path.join(globalPath, 'package.json'))) {
|
|
65
|
+
return globalPath;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
// 后备:返回 cwd
|
|
69
|
+
return process.cwd();
|
|
70
|
+
}
|
|
8
71
|
// ==================== 版本和名称 ====================
|
|
9
72
|
/**
|
|
10
73
|
* 获取 package.json 版本号
|
|
@@ -28,36 +91,10 @@ function getPackageVersion() {
|
|
|
28
91
|
return null;
|
|
29
92
|
};
|
|
30
93
|
try {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
path.resolve(__dirname, '..', '..'), // dist/lib/ -> 根目录
|
|
36
|
-
path.resolve(__dirname, '..', '..', '..'), // 深层嵌套
|
|
37
|
-
];
|
|
38
|
-
for (const candidate of candidatePaths) {
|
|
39
|
-
const version = findPackageJson(candidate);
|
|
40
|
-
if (version)
|
|
41
|
-
return version;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
// 方法 2: 使用 __filename 向上遍历查找 (更可靠的 npx 支持)
|
|
45
|
-
if (typeof __filename !== 'undefined' && __filename) {
|
|
46
|
-
let currentDir = path.dirname(__filename);
|
|
47
|
-
for (let i = 0; i < 10; i++) {
|
|
48
|
-
const version = findPackageJson(currentDir);
|
|
49
|
-
if (version)
|
|
50
|
-
return version;
|
|
51
|
-
const parentDir = path.dirname(currentDir);
|
|
52
|
-
if (parentDir === currentDir)
|
|
53
|
-
break;
|
|
54
|
-
currentDir = parentDir;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
// 方法 3: 从 process.cwd() 查找(开发环境)
|
|
58
|
-
const cwdVersion = findPackageJson(process.cwd());
|
|
59
|
-
if (cwdVersion)
|
|
60
|
-
return cwdVersion;
|
|
94
|
+
const packageRoot = getPackageRoot();
|
|
95
|
+
const version = findPackageJson(packageRoot);
|
|
96
|
+
if (version)
|
|
97
|
+
return version;
|
|
61
98
|
return '0.0.0';
|
|
62
99
|
}
|
|
63
100
|
catch {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../lib/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAEzB
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../lib/constants.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../lib/installer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,EAAsD,cAAc,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../lib/installer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,EAAsD,cAAc,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAkCzH,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC;AAIxC;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAkDtC;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAOzC;AAID;;GAEG;AACH,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CA2C7C;AAID;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAWxD;AAED;;GAEG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAqC/C;AAID;;GAEG;AACH,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CA0D5C"}
|
package/dist/lib/installer.js
CHANGED
|
@@ -11,6 +11,36 @@ import { executeWithRollback } from './lock-manager.js';
|
|
|
11
11
|
import { installCommands, installSkills, registerCoreAgents, getCommandsDir, getSkillsDir } from './plugin-installer.js';
|
|
12
12
|
import { success, info, warn, error, log } from '../scripts/logger.js';
|
|
13
13
|
import { printCommandTitle, printInstallComplete, printUpdateComplete } from './ui/messages.js';
|
|
14
|
+
/**
|
|
15
|
+
* 查找包含 package.json 的目录(claude-pangu 包根目录)
|
|
16
|
+
* 从给定路径向上遍历查找
|
|
17
|
+
*/
|
|
18
|
+
function findPackageRoot(startDir) {
|
|
19
|
+
let currentDir = startDir;
|
|
20
|
+
for (let i = 0; i < 15; i++) {
|
|
21
|
+
const pkgPath = path.join(currentDir, 'package.json');
|
|
22
|
+
if (fs.existsSync(pkgPath)) {
|
|
23
|
+
try {
|
|
24
|
+
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));
|
|
25
|
+
if (pkg.name === 'claude-pangu' || pkg.name === 'oh-my-claude') {
|
|
26
|
+
// 还需要验证 agents 目录存在
|
|
27
|
+
const agentsDir = path.join(currentDir, 'agents');
|
|
28
|
+
if (fs.existsSync(agentsDir)) {
|
|
29
|
+
return currentDir;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
// 继续查找
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
const parentDir = path.dirname(currentDir);
|
|
38
|
+
if (parentDir === currentDir)
|
|
39
|
+
break; // 到达根目录
|
|
40
|
+
currentDir = parentDir;
|
|
41
|
+
}
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
14
44
|
// 重新导出供 cli.ts 使用
|
|
15
45
|
export { getCommandsDir, getSkillsDir };
|
|
16
46
|
// ==================== 路径获取函数 ====================
|
|
@@ -42,37 +72,19 @@ export function getPackageDir() {
|
|
|
42
72
|
return false;
|
|
43
73
|
}
|
|
44
74
|
};
|
|
45
|
-
// 方法 1:
|
|
75
|
+
// 方法 1: CommonJS __dirname (Jest 测试环境)
|
|
46
76
|
if (typeof __dirname !== 'undefined' && __dirname) {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
// - node_modules/.pnpm/claude-pangu@x.x.x/node_modules/claude-pangu/dist/lib/installer.js
|
|
51
|
-
// - AppData/Local/npm-cache/_npx/.../node_modules/claude-pangu/dist/lib/installer.js
|
|
52
|
-
const candidatePaths = [
|
|
53
|
-
path.resolve(__dirname, '..'), // lib/ -> 根目录
|
|
54
|
-
path.resolve(__dirname, '..', '..'), // dist/lib/ -> 根目录
|
|
55
|
-
path.resolve(__dirname, '..', '..', '..'), // 深层嵌套情况
|
|
56
|
-
];
|
|
57
|
-
for (const candidate of candidatePaths) {
|
|
58
|
-
if (isValidPackageDir(candidate)) {
|
|
59
|
-
return candidate;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
77
|
+
const found = findPackageRoot(__dirname);
|
|
78
|
+
if (found && isValidPackageDir(found))
|
|
79
|
+
return found;
|
|
62
80
|
}
|
|
63
|
-
// 方法 2:
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
}
|
|
71
|
-
const parentDir = path.dirname(currentDir);
|
|
72
|
-
if (parentDir === currentDir)
|
|
73
|
-
break; // 到达根目录
|
|
74
|
-
currentDir = parentDir;
|
|
75
|
-
}
|
|
81
|
+
// 方法 2: 从入口脚本路径查找 (npx/node 执行环境)
|
|
82
|
+
// process.argv[1] 是执行的脚本路径,如 /path/to/node_modules/claude-pangu/dist/scripts/cli.js
|
|
83
|
+
if (process.argv[1]) {
|
|
84
|
+
const scriptDir = path.dirname(process.argv[1]);
|
|
85
|
+
const found = findPackageRoot(scriptDir);
|
|
86
|
+
if (found && isValidPackageDir(found))
|
|
87
|
+
return found;
|
|
76
88
|
}
|
|
77
89
|
// 方法 3: 从 process.cwd() 查找(开发环境)
|
|
78
90
|
if (isValidPackageDir(process.cwd())) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installer.js","sourceRoot":"","sources":["../../lib/installer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,kBAAkB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACzH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEhG
|
|
1
|
+
{"version":3,"file":"installer.js","sourceRoot":"","sources":["../../lib/installer.ts"],"names":[],"mappings":"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"}
|