@fanchao8609/agent_brain_sync 1.0.0 → 1.1.0
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/bin/abs.js +57 -0
- package/package.json +1 -1
package/bin/abs.js
CHANGED
|
@@ -4,6 +4,59 @@
|
|
|
4
4
|
// 命令: init / board / status / load / task / install / uninstall / help
|
|
5
5
|
import { cmdInit, cmdBoard, cmdStatus, cmdLoad, cmdTask, cmdLog, cmdQuery, cmdLint, cmdNote, cmdShow, cmdRepair, cmdWrapup } from '../src/store.js';
|
|
6
6
|
import { runInstall, runUninstall, installSummary } from '../src/install.js';
|
|
7
|
+
import { readFileSync } from 'node:fs';
|
|
8
|
+
import { join, dirname, resolve } from 'node:path';
|
|
9
|
+
import { fileURLToPath } from 'node:url';
|
|
10
|
+
import { spawn } from 'node:child_process';
|
|
11
|
+
|
|
12
|
+
const ABS_DIR = resolve(dirname(fileURLToPath(import.meta.url)), '..');
|
|
13
|
+
|
|
14
|
+
/** 读本包 package.json 的 version。 */
|
|
15
|
+
function pkgVersion() {
|
|
16
|
+
try {
|
|
17
|
+
return JSON.parse(readFileSync(join(ABS_DIR, 'package.json'), 'utf8')).version || 'unknown';
|
|
18
|
+
} catch { return 'unknown'; }
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/** 跑一个命令并把 stdout 当字符串返回(失败返回 null)。 */
|
|
22
|
+
function runCmd(cmd, args) {
|
|
23
|
+
return new Promise((resolvePromise) => {
|
|
24
|
+
let out = '';
|
|
25
|
+
const c = spawn(cmd, args, { stdio: ['ignore', 'pipe', 'pipe'] });
|
|
26
|
+
c.stdout.on('data', (d) => (out += d));
|
|
27
|
+
c.on('error', () => resolvePromise(null));
|
|
28
|
+
c.on('close', (code) => resolvePromise(code === 0 ? out.trim() : null));
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* abs update — 升级全局安装并刷新四宿主 hook/skill。
|
|
34
|
+
* 升级走 npm(唯一真源);刷新是因为 hook 脚本烧的是绝对路径与模板快照。
|
|
35
|
+
*/
|
|
36
|
+
async function cmdUpdate({ yes }) {
|
|
37
|
+
const cur = pkgVersion();
|
|
38
|
+
const latest = await runCmd('npm', ['view', '@fanchao8609/agent_brain_sync', 'version']);
|
|
39
|
+
if (!latest) {
|
|
40
|
+
console.error('无法查询 npm registry(网络/代理问题)。手动升级:npm i -g @fanchao8609/agent_brain_sync@latest');
|
|
41
|
+
process.exit(1);
|
|
42
|
+
}
|
|
43
|
+
console.log(`当前: ${cur}`);
|
|
44
|
+
console.log(`最新: ${latest}`);
|
|
45
|
+
if (latest === cur) {
|
|
46
|
+
console.log('已是最新,无需升级。');
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
console.log(`\n升级 ${cur} → ${latest} …`);
|
|
50
|
+
const r = await runCmd('npm', ['i', '-g', '@fanchao8609/agent_brain_sync@latest']);
|
|
51
|
+
if (r === null) {
|
|
52
|
+
console.error('升级失败(网络/代理/权限)。手动:npm i -g @fanchao8609/agent_brain_sync@latest');
|
|
53
|
+
process.exit(1);
|
|
54
|
+
}
|
|
55
|
+
console.log(r);
|
|
56
|
+
console.log('\n刷新四宿主 hook/skill(hook 脚本烧的是绝对路径 + 模板快照,升级后必须重装)…');
|
|
57
|
+
await runInstall({ agent: undefined, mcp: true, skill: true, yes: yes !== false });
|
|
58
|
+
console.log(`\n完成。重启宿主(pi / opencode / claude-code / codex)后新 hook 生效。`);
|
|
59
|
+
}
|
|
7
60
|
|
|
8
61
|
const [,, cmd, ...rest] = process.argv;
|
|
9
62
|
|
|
@@ -45,6 +98,8 @@ const usage = `abs — agent-brain-sync 记忆工具
|
|
|
45
98
|
abs wrapup 快照当前未完成任务到 ~/.abs/log/wrapup.log (收尾保险)
|
|
46
99
|
abs install [--agent <claude-code|opencode|codex|pi>] 安装 MCP+hook+skill
|
|
47
100
|
abs uninstall [--agent <...>] 卸载
|
|
101
|
+
abs update 升级到最新版并刷新四宿主 hook/skill
|
|
102
|
+
abs --version 显示当前版本
|
|
48
103
|
abs help 本帮助
|
|
49
104
|
`;
|
|
50
105
|
|
|
@@ -100,6 +155,8 @@ async function main() {
|
|
|
100
155
|
console.log(await cmdWrapup({ dir: opts.dir }));
|
|
101
156
|
break;
|
|
102
157
|
}
|
|
158
|
+
case 'update': await cmdUpdate({ yes: opts.yes }); break;
|
|
159
|
+
case '--version': case '-v': case 'version': console.log(pkgVersion()); break;
|
|
103
160
|
case 'help': case undefined: case '--help': console.log(usage); break;
|
|
104
161
|
default: throw new Error(`未知命令: ${cmd}\n\n${usage}`);
|
|
105
162
|
}
|