fix-db-paths.js
1.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#!/usr/bin/env node
/**
* fix-db-paths.js — 修正 SQLite 中 directory 字段的大小写问题
*
* 将 /Users/yibo/Documents/LemonAI/LemonApe → /Users/yibo/Documents/LemonAI/lemonape
* 以兼容 Linux 环境。
*/
const path = require('path');
// Ensure we can find project modules
const MODULE = require('module');
const PROJECT_ROOT = path.resolve(__dirname, '..');
MODULE.globalPaths.push(path.join(PROJECT_ROOT, 'node_modules'));
// Load .env
const fs = require('fs');
const envFile = path.join(PROJECT_ROOT, '.env');
if (fs.existsSync(envFile)) {
for (const line of fs.readFileSync(envFile, 'utf-8').split('\n')) {
const m = line.match(/^([^#=]+)=(.*)$/);
if (m) process.env[m[1].trim()] = m[2].trim();
}
}
const skillDb = require(path.join(PROJECT_ROOT, 'server', 'services', 'skill-db'));
const WRONG_PATTERN = '/LemonApe/';
const CORRECT_PATTERN = '/lemonape/';
const skills = skillDb.listSkills();
let fixed = 0;
console.log(`\n🔧 扫描 ${skills.length} 个 skills 的 directory 字段...\n`);
for (const skill of skills) {
if (skill.directory && skill.directory.includes(WRONG_PATTERN)) {
const oldDir = skill.directory;
const newDir = oldDir.replace(WRONG_PATTERN, CORRECT_PATTERN);
console.log(` ✏️ ${skill.skillName}`);
console.log(` 旧: ${oldDir}`);
console.log(` 新: ${newDir}`);
skillDb.updateSkill(skill.skillName, { directory: newDir });
fixed++;
}
}
if (fixed > 0) {
console.log(`\n✅ 已修正 ${fixed} 个 skill 的路径`);
} else {
console.log(`\n✅ 所有路径已正确,无需修正`);
}
// 验证
console.log(`\n── 验证 ──`);
const keyAgents = ['l3-hunt', 'l2-digest', 'evolving'];
for (const name of keyAgents) {
const s = skillDb.getSkill(name);
if (s) {
const isOk = !s.directory || !s.directory.includes(WRONG_PATTERN);
console.log(` ${isOk ? '✅' : '❌'} ${name}: ${s.directory || '(no dir)'}`);
} else {
console.log(` ⚠️ ${name}: 未注册`);
}
}
console.log('');