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.
@@ -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
- 数据目录: ${dataDir}
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.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",