botmux 2.89.0 → 2.90.1

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 (54) hide show
  1. package/README.en.md +3 -3
  2. package/README.md +3 -3
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +5 -22
  5. package/dist/cli.js.map +1 -1
  6. package/dist/core/skills/discovery.d.ts +16 -0
  7. package/dist/core/skills/discovery.d.ts.map +1 -1
  8. package/dist/core/skills/discovery.js +48 -2
  9. package/dist/core/skills/discovery.js.map +1 -1
  10. package/dist/core/worker-pool.d.ts.map +1 -1
  11. package/dist/core/worker-pool.js +9 -2
  12. package/dist/core/worker-pool.js.map +1 -1
  13. package/dist/dashboard/web/i18n.d.ts.map +1 -1
  14. package/dist/dashboard/web/i18n.js +60 -2
  15. package/dist/dashboard/web/i18n.js.map +1 -1
  16. package/dist/dashboard/web/insights.d.ts.map +1 -1
  17. package/dist/dashboard/web/insights.js +514 -68
  18. package/dist/dashboard/web/insights.js.map +1 -1
  19. package/dist/dashboard/web/skills.d.ts.map +1 -1
  20. package/dist/dashboard/web/skills.js +1 -1
  21. package/dist/dashboard/web/skills.js.map +1 -1
  22. package/dist/dashboard/web/whiteboards.js +3 -3
  23. package/dist/dashboard-web/app.js +883 -795
  24. package/dist/dashboard-web/style.css +105 -3
  25. package/dist/im/lark/inline-mentions.d.ts +42 -0
  26. package/dist/im/lark/inline-mentions.d.ts.map +1 -0
  27. package/dist/im/lark/inline-mentions.js +27 -0
  28. package/dist/im/lark/inline-mentions.js.map +1 -0
  29. package/dist/services/insight/classify.d.ts +2 -0
  30. package/dist/services/insight/classify.d.ts.map +1 -1
  31. package/dist/services/insight/classify.js +25 -0
  32. package/dist/services/insight/classify.js.map +1 -1
  33. package/dist/services/insight/claude-span-reader.d.ts.map +1 -1
  34. package/dist/services/insight/claude-span-reader.js +7 -4
  35. package/dist/services/insight/claude-span-reader.js.map +1 -1
  36. package/dist/services/insight/report.d.ts.map +1 -1
  37. package/dist/services/insight/report.js +102 -23
  38. package/dist/services/insight/report.js.map +1 -1
  39. package/dist/services/insight/subagent-reader.d.ts +19 -0
  40. package/dist/services/insight/subagent-reader.d.ts.map +1 -0
  41. package/dist/services/insight/subagent-reader.js +111 -0
  42. package/dist/services/insight/subagent-reader.js.map +1 -0
  43. package/dist/services/insight/types.d.ts +43 -0
  44. package/dist/services/insight/types.d.ts.map +1 -1
  45. package/dist/services/insight/types.js.map +1 -1
  46. package/dist/skills/definitions.d.ts +8 -0
  47. package/dist/skills/definitions.d.ts.map +1 -1
  48. package/dist/skills/definitions.js +8 -2
  49. package/dist/skills/definitions.js.map +1 -1
  50. package/dist/skills/installer.d.ts +15 -0
  51. package/dist/skills/installer.d.ts.map +1 -1
  52. package/dist/skills/installer.js +39 -1
  53. package/dist/skills/installer.js.map +1 -1
  54. package/package.json +1 -1
package/README.en.md CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  <p align="center">
8
8
  <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="License MIT"></a>
9
- <img src="https://img.shields.io/badge/node-%3E%3D20-brightgreen.svg" alt="Node.js >= 20">
9
+ <img src="https://img.shields.io/badge/node-%3E%3D22-brightgreen.svg" alt="Node.js >= 22">
10
10
  <a href="https://www.npmjs.com/package/botmux"><img src="https://img.shields.io/npm/v/botmux.svg" alt="npm version"></a>
11
11
  <a href="https://github.com/deepcoldy/botmux"><img src="https://img.shields.io/github/stars/deepcoldy/botmux?style=social" alt="GitHub Stars"></a>
12
12
  </p>
@@ -63,7 +63,7 @@ Compared to OpenClaw-style approaches built on Agent SDKs:
63
63
 
64
64
  ## Prerequisites
65
65
 
66
- - **Node.js** >= 20
66
+ - **Node.js** >= 22
67
67
  - **AI coding CLI / local agent app** installed and authenticated (`claude`, `codex`, `coco`, `cursor-agent`, `gemini`, `opencode`, `hermes`, `seed` (Seed CLI, a Claude Code fork), `relay` (Relay CLI, the new release of Seed), `pi`, `omp` (oh-my-pi, a Pi fork), `copilot` (GitHub Copilot CLI), `traex` (TRAE CLI), `mircli` (Mir CLI), or `agy` (Antigravity) in PATH)
68
68
  - **CoCo requires `0.120.32+`**: type-ahead (sending a new message while a turn is still running, parked in CoCo's own message queue) relies on 0.120.32+ behavior; earlier versions may drop or serialize input while busy — upgrade before use
69
69
  - **tmux** >= 3.x (optional — auto-enabled when installed for persistent CLI sessions)
@@ -82,7 +82,7 @@ Compared to OpenClaw-style approaches built on Agent SDKs:
82
82
  npm install -g botmux
83
83
  ```
84
84
 
85
- > Requires **Node.js ≥ 20**, with at least one AI coding CLI installed and authenticated (`claude` / `codex` / `cursor-agent` / `gemini` / `opencode` / `coco` / `agy` on your PATH). Installing **tmux** too is recommended (enables session persistence automatically).
85
+ > Requires **Node.js ≥ 22**, with at least one AI coding CLI installed and authenticated (`claude` / `codex` / `cursor-agent` / `gemini` / `opencode` / `coco` / `agy` on your PATH). Installing **tmux** too is recommended (enables session persistence automatically).
86
86
 
87
87
  ### 2. Create the App & Configure (`botmux setup`)
88
88
 
package/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  <p align="center">
8
8
  <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="License MIT"></a>
9
- <img src="https://img.shields.io/badge/node-%3E%3D20-brightgreen.svg" alt="Node.js >= 20">
9
+ <img src="https://img.shields.io/badge/node-%3E%3D22-brightgreen.svg" alt="Node.js >= 22">
10
10
  <a href="https://www.npmjs.com/package/botmux"><img src="https://img.shields.io/npm/v/botmux.svg" alt="npm version"></a>
11
11
  <a href="https://github.com/deepcoldy/botmux"><img src="https://img.shields.io/github/stars/deepcoldy/botmux.svg?style=social" alt="GitHub Stars"></a>
12
12
  </p>
@@ -204,7 +204,7 @@ CLI 进入 botmux 会话时自动获得 `~/.botmux/bin` 在 PATH 中,以及一
204
204
 
205
205
  ## 前置要求
206
206
 
207
- - **Node.js** >= 20
207
+ - **Node.js** >= 22
208
208
  - **AI 编程 CLI / 本地 Agent 应用** 已安装并完成认证(`claude`、`codex`、`coco`、`cursor-agent`、`gemini`、`opencode`、`hermes`、`seed`(Seed CLI,Claude Code 衍生)、`relay`(Relay CLI,Seed 新版)、`pi`、`omp`(oh-my-pi,Pi 衍生)、`copilot`(GitHub Copilot CLI)、`traex`(TRAE CLI)、`mircli`(Mir CLI)或 `agy`(Antigravity)在 PATH 中)
209
209
  - **CoCo 最低版本 `0.120.32`**:type-ahead(会话忙时即可发新消息,由 CoCo 自己的消息队列接住)依赖 0.120.32+ 的行为;更早版本忙时输入可能丢失或串行,请升级后再用
210
210
  - **tmux** >= 3.x(可选,安装后自动启用会话常驻)
@@ -223,7 +223,7 @@ CLI 进入 botmux 会话时自动获得 `~/.botmux/bin` 在 PATH 中,以及一
223
223
  npm install -g botmux
224
224
  ```
225
225
 
226
- > 要求 **Node.js ≥ 20**,且本地已装好并登录至少一种 AI 编程 CLI(`claude` / `codex` / `cursor-agent` / `gemini` / `opencode` / `coco` / `agy` 等在 PATH 中)。推荐顺手装 **tmux**(装了自动启用会话常驻)。
226
+ > 要求 **Node.js ≥ 22**,且本地已装好并登录至少一种 AI 编程 CLI(`claude` / `codex` / `cursor-agent` / `gemini` / `opencode` / `coco` / `agy` 等在 PATH 中)。推荐顺手装 **tmux**(装了自动启用会话常驻)。
227
227
 
228
228
  ### 2. 创建应用并配置(`botmux setup`)
229
229
 
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAqwJA;;;;;;;;;;;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,CA8F7B"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAsvJA;;;;;;;;;;;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,CA8F7B"}
package/dist/cli.js CHANGED
@@ -3315,6 +3315,7 @@ function argValues(args, ...flags) {
3315
3315
  // daemon's bridge fallback path can produce identical cards. cmdSend
3316
3316
  // keeps using `buildImageCardElements` from there.
3317
3317
  import { buildImageCardElements, brandFooterSegment } from './im/lark/md-card.js';
3318
+ import { applyInlineMentions } from './im/lark/inline-mentions.js';
3318
3319
  import { resolveBrandLabel } from './bot-registry.js';
3319
3320
  import { config } from './config.js';
3320
3321
  import { resolveQuoteTarget, validateMentionDecision, parseAttentionFlag, attentionUsageError } from './services/send-policy.js';
@@ -3924,14 +3925,6 @@ async function cmdSend(rest) {
3924
3925
  hasExplicitBotMention: explicitKnownBotMention,
3925
3926
  knownBotOpenIds,
3926
3927
  });
3927
- const mentionMap = new Map();
3928
- for (const m of mentions)
3929
- if (m.name)
3930
- mentionMap.set(m.name.toLowerCase(), m.open_id);
3931
- const namedMentions = mentions.filter(m => m.name);
3932
- const mentionPattern = namedMentions.length > 0
3933
- ? new RegExp(`@(${namedMentions.map(m => m.name.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')).join('|')})\\b`, 'gi')
3934
- : null;
3935
3928
  // Capture sentAtMs BEFORE dispatch — the worker's bridge fallback gates
3936
3929
  // on `sentAtMs ∈ [turn.markTimeMs, nextTurn.markTimeMs)`. If we recorded
3937
3930
  // it after dispatch (which can take seconds), a slow Lark RTT could push
@@ -3942,20 +3935,10 @@ async function cmdSend(rest) {
3942
3935
  let messageId;
3943
3936
  {
3944
3937
  // 回复一律卡片(纯文本 post 路径已删)。
3945
- // Inline @mention<at id=open_id></at>; explicit --mention args that
3946
- // weren't inlined are appended to the body. The session owner is
3947
- // rendered in the footer note instead of the body.
3948
- const usedIds = new Set();
3949
- let md = text;
3950
- if (mentionPattern) {
3951
- md = text.replace(mentionPattern, (full, name) => {
3952
- const openId = mentionMap.get(name.toLowerCase());
3953
- if (!openId)
3954
- return full;
3955
- usedIds.add(openId);
3956
- return `<at id=${openId}></at>`;
3957
- });
3958
- }
3938
+ // Inline `@Name``<at id=…>` at the exact spot it's written (CJK-name
3939
+ // aware, see applyInlineMentions); any --mention not inlined here is
3940
+ // rendered on the footer `发送给:` line below, not the body.
3941
+ const { text: md, usedIds } = applyInlineMentions(text, mentions);
3959
3942
  // Non-inlined mentions are no longer dangled as a trailing @ block at the
3960
3943
  // body bottom — they're consolidated onto the footer `发送给:` line below
3961
3944
  // (human addressee first, then explicit targets). See orderedFooterRecipients.