imtoagent 0.2.2 → 0.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/bin/{imtoagent → imtoagent-real} +22 -12
- package/bin/imtoagent.cjs +39 -0
- package/package.json +6 -3
|
@@ -41,7 +41,26 @@ switch (command) {
|
|
|
41
41
|
case 'daemon':
|
|
42
42
|
await cmdDaemon();
|
|
43
43
|
break;
|
|
44
|
-
case undefined:
|
|
44
|
+
case undefined: {
|
|
45
|
+
// 无命令 → 没完成 setup 自动进向导,已完成显示帮助
|
|
46
|
+
const dataDir = getDataDir();
|
|
47
|
+
const configPath = path.join(dataDir, 'config.json');
|
|
48
|
+
let needsSetup = !fs.existsSync(configPath);
|
|
49
|
+
if (!needsSetup) {
|
|
50
|
+
try {
|
|
51
|
+
const raw = fs.readFileSync(configPath, 'utf-8');
|
|
52
|
+
// 如果配置里还有 YOUR_ 占位符,说明还没完成 setup
|
|
53
|
+
needsSetup = /YOUR_[A-Z_]+/.test(raw);
|
|
54
|
+
} catch { needsSetup = true; }
|
|
55
|
+
}
|
|
56
|
+
if (needsSetup) {
|
|
57
|
+
console.log('👋 欢迎使用 imtoagent,请先完成初始配置\n');
|
|
58
|
+
await cmdSetup();
|
|
59
|
+
} else {
|
|
60
|
+
printHelp();
|
|
61
|
+
}
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
45
64
|
case 'help':
|
|
46
65
|
case '--help':
|
|
47
66
|
case '-h':
|
|
@@ -57,30 +76,21 @@ switch (command) {
|
|
|
57
76
|
// Help
|
|
58
77
|
// ================================================================
|
|
59
78
|
function printHelp() {
|
|
60
|
-
const dataDir = getDataDir();
|
|
61
|
-
const hasConfig = fs.existsSync(path.join(dataDir, 'config.json'));
|
|
62
|
-
|
|
63
79
|
console.log(`
|
|
64
80
|
imtoagent — IM ↔ Agent 统一网关
|
|
65
81
|
|
|
66
82
|
用法:
|
|
67
|
-
imtoagent setup
|
|
83
|
+
imtoagent setup 交互式配置向导
|
|
68
84
|
imtoagent start 后台启动网关
|
|
69
85
|
imtoagent stop 停止网关
|
|
70
86
|
imtoagent status 查看运行状态
|
|
71
87
|
imtoagent restore 热重载恢复
|
|
72
88
|
imtoagent daemon 前台守护模式(自动重启 + 日志,适合 launchd/systemd 托管)
|
|
73
89
|
|
|
74
|
-
数据目录: ${
|
|
90
|
+
数据目录: ${getDataDir()}
|
|
75
91
|
`);
|
|
76
|
-
|
|
77
|
-
if (!hasConfig) {
|
|
78
|
-
console.log('💡 首次使用,请先运行: imtoagent setup');
|
|
79
|
-
console.log();
|
|
80
|
-
}
|
|
81
92
|
}
|
|
82
93
|
|
|
83
|
-
|
|
84
94
|
// ================================================================
|
|
85
95
|
// setup — 交互式向导
|
|
86
96
|
// ================================================================
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// imtoagent CLI wrapper — finds bun and delegates
|
|
3
|
+
"use strict";
|
|
4
|
+
var path = require("path");
|
|
5
|
+
var fs = require("fs");
|
|
6
|
+
var spawnSync = require("child_process").spawnSync;
|
|
7
|
+
|
|
8
|
+
var candidates = [
|
|
9
|
+
process.env.BUN_BIN,
|
|
10
|
+
path.join(process.env.HOME || "", ".bun", "bin", "bun"),
|
|
11
|
+
"/usr/local/bin/bun",
|
|
12
|
+
"/opt/homebrew/bin/bun",
|
|
13
|
+
];
|
|
14
|
+
try {
|
|
15
|
+
var r = spawnSync("which", ["bun"]);
|
|
16
|
+
if (r.status === 0) candidates.unshift(r.stdout.toString().trim());
|
|
17
|
+
} catch (e) {}
|
|
18
|
+
|
|
19
|
+
var bunPath = null;
|
|
20
|
+
for (var i = 0; i < candidates.length; i++) {
|
|
21
|
+
if (candidates[i] && fs.existsSync(candidates[i])) {
|
|
22
|
+
bunPath = candidates[i];
|
|
23
|
+
break;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
if (!bunPath) {
|
|
28
|
+
console.error("❌ bun 未找到,请先安装: https://bun.sh");
|
|
29
|
+
console.error(" curl -fsSL https://bun.sh/install | bash");
|
|
30
|
+
process.exit(1);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
var pkgDir = path.resolve(__dirname, "..");
|
|
34
|
+
var real = path.join(pkgDir, "bin", "imtoagent-real");
|
|
35
|
+
var result = spawnSync(bunPath, [real].concat(process.argv.slice(2)), {
|
|
36
|
+
stdio: "inherit",
|
|
37
|
+
env: Object.assign({}, process.env),
|
|
38
|
+
});
|
|
39
|
+
process.exit(result.status || 0);
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "imtoagent",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.4",
|
|
4
4
|
"description": "IM ↔ Agent 统一网关 — 飞书/Telegram/微信/企业微信对接 Claude Code/Codex/OpenCode",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
|
-
"imtoagent": "./bin/imtoagent"
|
|
7
|
+
"imtoagent": "./bin/imtoagent.cjs"
|
|
8
8
|
},
|
|
9
9
|
"files": [
|
|
10
10
|
"index.ts",
|
|
@@ -12,7 +12,10 @@
|
|
|
12
12
|
"bin/",
|
|
13
13
|
"templates/",
|
|
14
14
|
"scripts/",
|
|
15
|
-
"README.md"
|
|
15
|
+
"README.md",
|
|
16
|
+
"bin/imtoagent.ts",
|
|
17
|
+
"bin/imtoagent.cjs",
|
|
18
|
+
"bin/imtoagent-real"
|
|
16
19
|
],
|
|
17
20
|
"scripts": {
|
|
18
21
|
"postinstall": "node scripts/postinstall.cjs",
|