openyida 2026.4.2-beta.13 → 2026.4.2-beta.15
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/lib/core/copy.js +45 -20
- package/lib/core/doctor.js +1 -1
- package/package.json +1 -1
- package/yida-skills/SKILL.md +1 -2
package/lib/core/copy.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* copy.js - 复制 project 工作目录模板 /
|
|
2
|
+
* copy.js - 复制 project 工作目录模板 / 复制 yida-skills 到当前 AI 工具环境
|
|
3
3
|
*
|
|
4
4
|
* 用法:
|
|
5
5
|
* openyida copy → 复制 project/ 目录模板(默认,合并模式)
|
|
6
6
|
* openyida copy --force → 复制 project/ 目录模板(强制覆盖,先清空目标目录)
|
|
7
|
-
* openyida copy -skills →
|
|
8
|
-
*
|
|
7
|
+
* openyida copy -skills → 复制 yida-skills/ 到当前 AI 工具的 skills 目录
|
|
8
|
+
* 悟空环境下:删除已有 yida-skills/(悟空通过手动上传技能)
|
|
9
9
|
* openyida copy -project → 复制 project/ 目录模板(与默认行为相同,显式指定)
|
|
10
10
|
* openyida copy -project --force → 复制 project/ 目录模板(强制覆盖)
|
|
11
11
|
*
|
|
@@ -17,12 +17,8 @@
|
|
|
17
17
|
*
|
|
18
18
|
* project/ 合并模式(默认):已存在的文件强制覆盖,目标目录中多余的文件保留不动
|
|
19
19
|
* project/ 强制模式(--force):先清空目标目录,再完整复制
|
|
20
|
-
* yida-skills
|
|
21
|
-
* yida-skills
|
|
22
|
-
*
|
|
23
|
-
* Windows 兼容说明:
|
|
24
|
-
* - 软链接在 Windows 上需要管理员权限或开发者模式,失败时自动降级为目录复制
|
|
25
|
-
* - 路径分隔符统一使用 path.join 处理
|
|
20
|
+
* yida-skills/(非悟空):复制到 <cwd>/yida-skills/,如目标已存在则先清理
|
|
21
|
+
* yida-skills/(悟空):删除已有软链或目录(悟空通过手动上传技能,不需要复制)
|
|
26
22
|
*/
|
|
27
23
|
|
|
28
24
|
'use strict';
|
|
@@ -295,9 +291,9 @@ function run() {
|
|
|
295
291
|
}
|
|
296
292
|
|
|
297
293
|
if (shouldLinkSkills) {
|
|
298
|
-
const destSkillsLink = path.join(destBase, 'yida-skills');
|
|
299
294
|
if (isWukong) {
|
|
300
|
-
//
|
|
295
|
+
// 悟空环境:删除已有软链或目录,不安装(悟空手动上传技能)
|
|
296
|
+
const destSkillsLink = path.join(destBase, 'yida-skills');
|
|
301
297
|
console.log(t('copy.wukong_skills_cleanup'));
|
|
302
298
|
const removed = removeSkillsLink(destSkillsLink);
|
|
303
299
|
results.push({
|
|
@@ -307,15 +303,44 @@ function run() {
|
|
|
307
303
|
type: 'wukong-cleanup'
|
|
308
304
|
});
|
|
309
305
|
} else {
|
|
310
|
-
//
|
|
311
|
-
|
|
312
|
-
const
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
306
|
+
// 其他环境:复制到 AI 工具配置目录的 skills/yida-skills/
|
|
307
|
+
// 目标路径:~/<tool-config>/skills/yida-skills/(与 postinstall 保持一致)
|
|
308
|
+
const activeResult = envResults.find((r) => r.isActive);
|
|
309
|
+
const toolConfigDir = activeResult
|
|
310
|
+
? path.join(os.homedir(), activeResult.dirName)
|
|
311
|
+
: null;
|
|
312
|
+
|
|
313
|
+
if (toolConfigDir) {
|
|
314
|
+
const skillsDir = path.join(toolConfigDir, 'skills');
|
|
315
|
+
const destSkillsDest = path.join(skillsDir, 'yida-skills');
|
|
316
|
+
|
|
317
|
+
// 清理旧版遗留在根目录的错误安装
|
|
318
|
+
removeSkillsLink(path.join(toolConfigDir, 'yida-skills'));
|
|
319
|
+
|
|
320
|
+
// 清理已有的 skills/yida-skills/(旧软链或旧目录)
|
|
321
|
+
removeSkillsLink(destSkillsDest);
|
|
322
|
+
|
|
323
|
+
// 复制文件
|
|
324
|
+
fs.mkdirSync(skillsDir, { recursive: true });
|
|
325
|
+
const count = mergeCopyDir(packageYidaSkillsDir, destSkillsDest);
|
|
326
|
+
results.push({
|
|
327
|
+
label: 'yida-skills/',
|
|
328
|
+
dest: destSkillsDest,
|
|
329
|
+
count,
|
|
330
|
+
type: 'copy'
|
|
331
|
+
});
|
|
332
|
+
} else {
|
|
333
|
+
// 未检测到 AI 工具,复制到当前目录下
|
|
334
|
+
const destSkillsDest = path.join(destBase, 'yida-skills');
|
|
335
|
+
removeSkillsLink(destSkillsDest);
|
|
336
|
+
const count = mergeCopyDir(packageYidaSkillsDir, destSkillsDest);
|
|
337
|
+
results.push({
|
|
338
|
+
label: 'yida-skills/',
|
|
339
|
+
dest: destSkillsDest,
|
|
340
|
+
count,
|
|
341
|
+
type: 'copy'
|
|
342
|
+
});
|
|
343
|
+
}
|
|
319
344
|
}
|
|
320
345
|
}
|
|
321
346
|
|
package/lib/core/doctor.js
CHANGED
package/package.json
CHANGED
package/yida-skills/SKILL.md
CHANGED