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.
- package/README.en.md +3 -3
- package/README.md +3 -3
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +5 -22
- package/dist/cli.js.map +1 -1
- package/dist/core/skills/discovery.d.ts +16 -0
- package/dist/core/skills/discovery.d.ts.map +1 -1
- package/dist/core/skills/discovery.js +48 -2
- package/dist/core/skills/discovery.js.map +1 -1
- package/dist/core/worker-pool.d.ts.map +1 -1
- package/dist/core/worker-pool.js +9 -2
- package/dist/core/worker-pool.js.map +1 -1
- package/dist/dashboard/web/i18n.d.ts.map +1 -1
- package/dist/dashboard/web/i18n.js +60 -2
- package/dist/dashboard/web/i18n.js.map +1 -1
- package/dist/dashboard/web/insights.d.ts.map +1 -1
- package/dist/dashboard/web/insights.js +514 -68
- package/dist/dashboard/web/insights.js.map +1 -1
- package/dist/dashboard/web/skills.d.ts.map +1 -1
- package/dist/dashboard/web/skills.js +1 -1
- package/dist/dashboard/web/skills.js.map +1 -1
- package/dist/dashboard/web/whiteboards.js +3 -3
- package/dist/dashboard-web/app.js +883 -795
- package/dist/dashboard-web/style.css +105 -3
- package/dist/im/lark/inline-mentions.d.ts +42 -0
- package/dist/im/lark/inline-mentions.d.ts.map +1 -0
- package/dist/im/lark/inline-mentions.js +27 -0
- package/dist/im/lark/inline-mentions.js.map +1 -0
- package/dist/services/insight/classify.d.ts +2 -0
- package/dist/services/insight/classify.d.ts.map +1 -1
- package/dist/services/insight/classify.js +25 -0
- package/dist/services/insight/classify.js.map +1 -1
- package/dist/services/insight/claude-span-reader.d.ts.map +1 -1
- package/dist/services/insight/claude-span-reader.js +7 -4
- package/dist/services/insight/claude-span-reader.js.map +1 -1
- package/dist/services/insight/report.d.ts.map +1 -1
- package/dist/services/insight/report.js +102 -23
- package/dist/services/insight/report.js.map +1 -1
- package/dist/services/insight/subagent-reader.d.ts +19 -0
- package/dist/services/insight/subagent-reader.d.ts.map +1 -0
- package/dist/services/insight/subagent-reader.js +111 -0
- package/dist/services/insight/subagent-reader.js.map +1 -0
- package/dist/services/insight/types.d.ts +43 -0
- package/dist/services/insight/types.d.ts.map +1 -1
- package/dist/services/insight/types.js.map +1 -1
- package/dist/skills/definitions.d.ts +8 -0
- package/dist/skills/definitions.d.ts.map +1 -1
- package/dist/skills/definitions.js +8 -2
- package/dist/skills/definitions.js.map +1 -1
- package/dist/skills/installer.d.ts +15 -0
- package/dist/skills/installer.d.ts.map +1 -1
- package/dist/skills/installer.js +39 -1
- package/dist/skills/installer.js.map +1 -1
- 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%
|
|
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** >=
|
|
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 ≥
|
|
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%
|
|
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** >=
|
|
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 ≥
|
|
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":";
|
|
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
|
|
3946
|
-
//
|
|
3947
|
-
// rendered
|
|
3948
|
-
const usedIds =
|
|
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.
|