botmux 2.67.0-canary.0 → 2.67.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.
Files changed (76) hide show
  1. package/dist/adapters/cli/traex.js +3 -3
  2. package/dist/adapters/cli/traex.js.map +1 -1
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +121 -0
  5. package/dist/cli.js.map +1 -1
  6. package/dist/core/command-handler.d.ts +10 -0
  7. package/dist/core/command-handler.d.ts.map +1 -1
  8. package/dist/core/command-handler.js +50 -2
  9. package/dist/core/command-handler.js.map +1 -1
  10. package/dist/core/dashboard-ipc-server.d.ts +2 -0
  11. package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
  12. package/dist/core/dashboard-ipc-server.js +91 -1
  13. package/dist/core/dashboard-ipc-server.js.map +1 -1
  14. package/dist/core/idle-worker-sweeper.d.ts.map +1 -1
  15. package/dist/core/idle-worker-sweeper.js +2 -1
  16. package/dist/core/idle-worker-sweeper.js.map +1 -1
  17. package/dist/core/inherit-peer.d.ts.map +1 -1
  18. package/dist/core/inherit-peer.js +23 -3
  19. package/dist/core/inherit-peer.js.map +1 -1
  20. package/dist/core/persistent-backend.d.ts +18 -0
  21. package/dist/core/persistent-backend.d.ts.map +1 -0
  22. package/dist/core/persistent-backend.js +64 -0
  23. package/dist/core/persistent-backend.js.map +1 -0
  24. package/dist/core/session-manager.d.ts.map +1 -1
  25. package/dist/core/session-manager.js +1 -33
  26. package/dist/core/session-manager.js.map +1 -1
  27. package/dist/core/worker-pool.d.ts +27 -2
  28. package/dist/core/worker-pool.d.ts.map +1 -1
  29. package/dist/core/worker-pool.js +97 -3
  30. package/dist/core/worker-pool.js.map +1 -1
  31. package/dist/daemon.d.ts +24 -0
  32. package/dist/daemon.d.ts.map +1 -1
  33. package/dist/daemon.js +28 -26
  34. package/dist/daemon.js.map +1 -1
  35. package/dist/dashboard/web/app.js +3 -0
  36. package/dist/dashboard/web/app.js.map +1 -1
  37. package/dist/dashboard/web/i18n.d.ts.map +1 -1
  38. package/dist/dashboard/web/i18n.js +6 -0
  39. package/dist/dashboard/web/i18n.js.map +1 -1
  40. package/dist/dashboard/web/sessions.d.ts.map +1 -1
  41. package/dist/dashboard/web/sessions.js +80 -7
  42. package/dist/dashboard/web/sessions.js.map +1 -1
  43. package/dist/dashboard/web/ui.d.ts +1 -0
  44. package/dist/dashboard/web/ui.d.ts.map +1 -1
  45. package/dist/dashboard/web/ui.js +6 -0
  46. package/dist/dashboard/web/ui.js.map +1 -1
  47. package/dist/dashboard-web/app.js +299 -299
  48. package/dist/dashboard-web/style.css +82 -0
  49. package/dist/dashboard.js +25 -1
  50. package/dist/dashboard.js.map +1 -1
  51. package/dist/i18n/en.d.ts.map +1 -1
  52. package/dist/i18n/en.js +6 -0
  53. package/dist/i18n/en.js.map +1 -1
  54. package/dist/i18n/zh.d.ts.map +1 -1
  55. package/dist/i18n/zh.js +6 -0
  56. package/dist/i18n/zh.js.map +1 -1
  57. package/dist/im/lark/workflow-slash-command.js +1 -0
  58. package/dist/im/lark/workflow-slash-command.js.map +1 -1
  59. package/dist/services/claude-transcript.d.ts.map +1 -1
  60. package/dist/services/claude-transcript.js +3 -0
  61. package/dist/services/claude-transcript.js.map +1 -1
  62. package/dist/worker.js +6 -1
  63. package/dist/worker.js.map +1 -1
  64. package/dist/workflows/daemon-spawn.d.ts.map +1 -1
  65. package/dist/workflows/daemon-spawn.js +3 -0
  66. package/dist/workflows/daemon-spawn.js.map +1 -1
  67. package/dist/workflows/events/payloads.d.ts +8 -0
  68. package/dist/workflows/events/payloads.d.ts.map +1 -1
  69. package/dist/workflows/events/payloads.js +1 -0
  70. package/dist/workflows/events/payloads.js.map +1 -1
  71. package/dist/workflows/events/replay.d.ts +1 -0
  72. package/dist/workflows/events/replay.d.ts.map +1 -1
  73. package/dist/workflows/events/replay.js.map +1 -1
  74. package/dist/workflows/events/schema.d.ts +14 -0
  75. package/dist/workflows/events/schema.d.ts.map +1 -1
  76. package/package.json +1 -1
@@ -208,9 +208,9 @@ export function createTraexAdapter(pathOverride) {
208
208
  return { submitted: false, recheck };
209
209
  },
210
210
  completionPattern: undefined,
211
- // TRAE's prompt indicator is identical to Codex's `›`. The status bar
212
- // does not currently surface a "% left" counter, so only `›` is needed.
213
- readyPattern: /›/,
211
+ // TRAE has shipped both the Codex-style `›` prompt and the Claude-style
212
+ // `❯` prompt; v0.200.7 also renders a "Context 100% left" status bar.
213
+ readyPattern: /[›❯]|\d+% left/,
214
214
  systemHints: BOTMUX_SHELL_HINTS,
215
215
  // TRAE 0.200+ shares Codex's type-ahead behaviour: input submitted while
216
216
  // a turn is running is parked and merged into the active turn.
@@ -1 +1 @@
1
- {"version":3,"file":"traex.js","sourceRoot":"","sources":["../../../src/adapters/cli/traex.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"traex.js","sourceRoot":"","sources":["../../../src/adapters/cli/traex.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AA8qIA;;;;;;;;;;;GAWG;AACH,wBAAsB,OAAO,CAC3B,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EACvC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,qBAAqB,EAAE,SAAS,CAAC,EAC9F,KAAK,EAAE,MAAM,EACb,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,2BAA2B,EAAE,UAAU,GAAG,IAAI,CAAC,GACzF,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA+F7B"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAkyIA;;;;;;;;;;;GAWG;AACH,wBAAsB,OAAO,CAC3B,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EACvC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,qBAAqB,EAAE,SAAS,CAAC,EAC9F,KAAK,EAAE,MAAM,EACb,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,2BAA2B,EAAE,UAAU,GAAG,IAAI,CAAC,GACzF,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA+F7B"}
package/dist/cli.js CHANGED
@@ -2173,6 +2173,121 @@ async function cmdResume() {
2173
2173
  }
2174
2174
  process.exit(1);
2175
2175
  }
2176
+ /**
2177
+ * `botmux term-link [session-id|prefix]` — get the writable ("可操作") terminal
2178
+ * for an active session. The link carries a write token, so rather than print it
2179
+ * (where it could land in logs / shell history), the daemon delivers it as a
2180
+ * private card to the bot owner(s): an in-chat visible-to-you ephemeral card,
2181
+ * auto-falling back to a DM in topic / p2p chats. The CLI only ever sees delivery
2182
+ * counts — never the token. The daemon route is loopback-HMAC gated, signed here
2183
+ * with .dashboard-secret (same scheme as `botmux dashboard`).
2184
+ */
2185
+ async function cmdTermLink(rest) {
2186
+ const target = rest[0];
2187
+ const active = [...loadSessions().values()].filter(s => s.status === 'active');
2188
+ if (active.length === 0) {
2189
+ console.error('没有活跃会话。可操作终端只能对 status=active 的会话获取(botmux list 查看)。');
2190
+ process.exit(1);
2191
+ }
2192
+ let session;
2193
+ if (!target) {
2194
+ if (active.length === 1) {
2195
+ session = active[0];
2196
+ }
2197
+ else {
2198
+ console.error('用法: botmux term-link <session-id|prefix>');
2199
+ console.error(` 当前有 ${active.length} 个活跃会话,请指定其一:`);
2200
+ for (const s of active)
2201
+ console.error(` ${s.sessionId.substring(0, 12)} ${s.title}`);
2202
+ process.exit(1);
2203
+ }
2204
+ }
2205
+ else {
2206
+ const matches = active.filter(s => s.sessionId.startsWith(target));
2207
+ if (matches.length === 0) {
2208
+ console.error(`❌ 未找到匹配 "${target}" 的活跃会话(resume 已关闭的会话后再试)`);
2209
+ process.exit(1);
2210
+ }
2211
+ if (matches.length > 1) {
2212
+ console.error(`❌ "${target}" 匹配了 ${matches.length} 个活跃会话,请提供更长的 ID 前缀:`);
2213
+ for (const s of matches)
2214
+ console.error(` ${s.sessionId.substring(0, 12)} ${s.title}`);
2215
+ process.exit(1);
2216
+ }
2217
+ session = matches[0];
2218
+ }
2219
+ // Multi-bot larkAppId guard (mirror of cmdResume): a legacy session without
2220
+ // larkAppId can't be routed deterministically when >1 daemon is online.
2221
+ if (!session.larkAppId) {
2222
+ const online = listOnlineDaemons();
2223
+ if (online.length > 1) {
2224
+ console.error(`❌ 会话 ${session.sessionId.substring(0, 12)} 缺少 larkAppId,多 bot 部署下无法判定归属。`);
2225
+ console.error(` 在线 daemon (${online.length}): ${online.map(d => d.larkAppId).join(', ')}`);
2226
+ process.exit(1);
2227
+ }
2228
+ if (online.length === 0) {
2229
+ console.error('❌ 没有在线 daemon。请先:botmux start');
2230
+ process.exit(1);
2231
+ }
2232
+ }
2233
+ const daemon = findDaemon(session.larkAppId);
2234
+ if (!daemon) {
2235
+ console.error('❌ 未找到在线 daemon。请确认 daemon 正在运行:botmux status');
2236
+ process.exit(1);
2237
+ }
2238
+ const SECRET_PATH = join(CONFIG_DIR, '.dashboard-secret');
2239
+ if (!existsSync(SECRET_PATH)) {
2240
+ console.error('❌ 缺少 .dashboard-secret(daemon 未初始化)。先 `botmux restart`。');
2241
+ process.exit(1);
2242
+ }
2243
+ const secret = readFileSync(SECRET_PATH, 'utf8').trim();
2244
+ const ts = Math.floor(Date.now() / 1000).toString();
2245
+ const nonce = randomBytes(8).toString('hex');
2246
+ const sig = createHmac('sha256', secret).update(`${ts}:${nonce}`).digest('base64url');
2247
+ let res;
2248
+ try {
2249
+ res = await fetch(`http://127.0.0.1:${daemon.ipcPort}/api/sessions/${encodeURIComponent(session.sessionId)}/write-link-card`, { method: 'POST', headers: { 'X-Botmux-Cli-Ts': ts, 'X-Botmux-Cli-Nonce': nonce, 'X-Botmux-Cli-Auth': sig } });
2250
+ }
2251
+ catch (err) {
2252
+ console.error(`❌ 无法连接到 daemon (port=${daemon.ipcPort}): ${err?.message ?? err}`);
2253
+ process.exit(1);
2254
+ }
2255
+ let body = {};
2256
+ try {
2257
+ body = await res.json();
2258
+ }
2259
+ catch { /* */ }
2260
+ if (res.ok && body?.ok) {
2261
+ const chans = body.channels ?? [];
2262
+ const eph = chans.filter(c => c === 'ephemeral').length;
2263
+ const dm = chans.filter(c => c === 'dm').length;
2264
+ const via = [eph ? `${eph} 条群内私密卡` : '', dm ? `${dm} 条私聊 DM` : ''].filter(Boolean).join(' + ');
2265
+ console.log(`✅ 可操作终端卡片已私密发给 owner(${body.delivered}/${body.total}${via ? ':' + via : ''})`);
2266
+ console.log(` 会话: ${session.sessionId.substring(0, 12)} ${session.title}`);
2267
+ console.log(' 卡片里「打开终端」即带写 token 进入;链接只走私密通道,不进群、不回显到这里。');
2268
+ return;
2269
+ }
2270
+ const errCode = body?.error ?? `HTTP ${res.status}`;
2271
+ if (errCode === 'unauthorized') {
2272
+ console.error('❌ 鉴权失败(loopback HMAC)。确认 .dashboard-secret 未变、daemon 已用同一份重启。');
2273
+ }
2274
+ else if (errCode === 'session_not_active') {
2275
+ console.error('❌ daemon 中该会话非活跃,无法获取可操作终端。');
2276
+ }
2277
+ else if (errCode === 'terminal_unavailable') {
2278
+ console.error('❌ 该会话终端尚未就绪(worker 未起或缺 token)。等会话起来再试。');
2279
+ }
2280
+ else if (errCode === 'no_owner') {
2281
+ console.error('❌ 该 bot 未配置 owner(allowedUsers 为空 / 全开放模式),没有可私密投递的对象。');
2282
+ }
2283
+ else if (errCode === 'delivery_failed') {
2284
+ console.error('❌ 卡片投递失败(ephemeral 与 DM 均失败)。查看 daemon 日志:botmux logs。');
2285
+ }
2286
+ else {
2287
+ console.error(`❌ 获取失败: ${errCode}`);
2288
+ }
2289
+ process.exit(1);
2290
+ }
2176
2291
  function showHelp() {
2177
2292
  console.log(`
2178
2293
  botmux v${getVersion()} — IM ↔ AI 编程 CLI 桥接
@@ -2194,6 +2309,9 @@ botmux v${getVersion()} — IM ↔ AI 编程 CLI 桥接
2194
2309
  delete stopped 清理所有进程已退出的僵尸会话
2195
2310
  resume <id> 恢复一个已关闭的会话(支持 ID 前缀匹配)— 会话标记回 active,
2196
2311
  下条消息会以 --resume 重新拉起 CLI 进程
2312
+ term-link [id] 获取活跃会话的「可操作终端」(带写 token)。不回显链接,改由
2313
+ daemon 把可操作卡片私密发给 owner(群内仅你可见,话题/单聊回退 DM)。
2314
+ 单个活跃会话可省略 id
2197
2315
  autostart enable 注册开机自启(macOS launchd / Linux user systemd,无需 sudo)
2198
2316
  autostart disable 注销开机自启
2199
2317
  autostart status 查看自启状态
@@ -4950,6 +5068,9 @@ switch (command) {
4950
5068
  case 'resume':
4951
5069
  await cmdResume();
4952
5070
  break;
5071
+ case 'term-link':
5072
+ await cmdTermLink(process.argv.slice(3));
5073
+ break;
4953
5074
  case 'schedule':
4954
5075
  await cmdSchedule(process.argv[3] ?? '', process.argv.slice(4));
4955
5076
  break;