botmux 2.75.0 → 2.75.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/dist/bot-registry.d.ts.map +1 -1
- package/dist/bot-registry.js +19 -5
- package/dist/bot-registry.js.map +1 -1
- package/dist/cli/pm2-command.d.ts +6 -0
- package/dist/cli/pm2-command.d.ts.map +1 -0
- package/dist/cli/pm2-command.js +7 -0
- package/dist/cli/pm2-command.js.map +1 -0
- package/dist/cli/stdin-encoding.d.ts +3 -0
- package/dist/cli/stdin-encoding.d.ts.map +1 -0
- package/dist/cli/stdin-encoding.js +19 -0
- package/dist/cli/stdin-encoding.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +19 -4
- package/dist/cli.js.map +1 -1
- package/dist/core/maintenance.d.ts +18 -0
- package/dist/core/maintenance.d.ts.map +1 -1
- package/dist/core/maintenance.js +56 -4
- package/dist/core/maintenance.js.map +1 -1
- package/dist/dashboard/auth.d.ts.map +1 -1
- package/dist/dashboard/auth.js +2 -1
- package/dist/dashboard/auth.js.map +1 -1
- package/dist/dashboard/hd2d-assets.d.ts +20 -0
- package/dist/dashboard/hd2d-assets.d.ts.map +1 -0
- package/dist/dashboard/hd2d-assets.js +216 -0
- package/dist/dashboard/hd2d-assets.js.map +1 -0
- package/dist/dashboard/web/app.d.ts.map +1 -1
- package/dist/dashboard/web/app.js +3 -0
- package/dist/dashboard/web/app.js.map +1 -1
- package/dist/dashboard/web/office.d.ts +2 -0
- package/dist/dashboard/web/office.d.ts.map +1 -0
- package/dist/dashboard/web/office.js +140 -0
- package/dist/dashboard/web/office.js.map +1 -0
- package/dist/dashboard-web/app.js +327 -299
- package/dist/dashboard-web/game/index.apple-touch-icon.png +0 -0
- package/dist/dashboard-web/game/index.audio.position.worklet.js +66 -0
- package/dist/dashboard-web/game/index.audio.worklet.js +213 -0
- package/dist/dashboard-web/game/index.html +224 -0
- package/dist/dashboard-web/game/index.icon.png +0 -0
- package/dist/dashboard-web/game/index.js +909 -0
- package/dist/dashboard-web/game/index.png +0 -0
- package/dist/dashboard-web/index.html +1 -0
- package/dist/dashboard.js +74 -6
- package/dist/dashboard.js.map +1 -1
- package/dist/global-config.d.ts +5 -0
- package/dist/global-config.d.ts.map +1 -1
- package/dist/global-config.js +2 -0
- package/dist/global-config.js.map +1 -1
- package/dist/i18n/en.js +2 -2
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/zh.js +2 -2
- package/dist/i18n/zh.js.map +1 -1
- package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
- package/dist/im/lark/event-dispatcher.js +66 -6
- package/dist/im/lark/event-dispatcher.js.map +1 -1
- package/dist/im/lark/reply-mode-command.d.ts.map +1 -1
- package/dist/im/lark/reply-mode-command.js +4 -1
- package/dist/im/lark/reply-mode-command.js.map +1 -1
- package/dist/services/bridge-rotation-policy.d.ts +40 -0
- package/dist/services/bridge-rotation-policy.d.ts.map +1 -1
- package/dist/services/bridge-rotation-policy.js +38 -0
- package/dist/services/bridge-rotation-policy.js.map +1 -1
- package/dist/services/chat-reply-mode-store.d.ts +1 -1
- package/dist/services/chat-reply-mode-store.d.ts.map +1 -1
- package/dist/services/chat-reply-mode-store.js +8 -9
- package/dist/services/chat-reply-mode-store.js.map +1 -1
- package/dist/skills/definitions.d.ts.map +1 -1
- package/dist/skills/definitions.js +17 -3
- package/dist/skills/definitions.js.map +1 -1
- package/dist/worker.js +23 -3
- package/dist/worker.js.map +1 -1
- package/package.json +2 -2
|
@@ -4,12 +4,11 @@
|
|
|
4
4
|
* Three modes (tri-state) — unifies #116 + #131 into one knob so a chat resolves
|
|
5
5
|
* to EXACTLY ONE mode and the two thread-reply mechanisms can never compete:
|
|
6
6
|
* • chat — flat chat-scope replies in the group (default).
|
|
7
|
-
* •
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* •
|
|
11
|
-
*
|
|
12
|
-
* into the trigger message's thread (#131).
|
|
7
|
+
* • topic/shared — 话题展示但复用同一个 session: reuse the bot's existing
|
|
8
|
+
* chat-scope session/worker/cwd, but route this turn's reply
|
|
9
|
+
* into the trigger message's thread (#131).
|
|
10
|
+
* • new-topic — explicit fork mode: each top-level @mention opens a fresh
|
|
11
|
+
* thread-scope session under the trigger (its own worker/cwd/context).
|
|
13
12
|
*
|
|
14
13
|
* Resolution: per-chat override (`chatReplyModes[chatId]`) wins; otherwise fall
|
|
15
14
|
* back to the per-bot default (`regularGroupReplyMode`, default 'chat'). The
|
|
@@ -25,15 +24,15 @@ export function normalizeChatReplyMode(raw) {
|
|
|
25
24
|
return undefined;
|
|
26
25
|
if (v === 'chat')
|
|
27
26
|
return 'chat';
|
|
28
|
-
if (v === '
|
|
27
|
+
if (v === 'new-topic' || v === 'newtopic' || v === 'thread')
|
|
29
28
|
return 'new-topic';
|
|
30
|
-
if (v === 'shared' || v === 'share' || v === 'alias' || v === 'topic-alias' || v === 'topic_alias')
|
|
29
|
+
if (v === 'topic' || v === 'shared' || v === 'share' || v === 'alias' || v === 'topic-alias' || v === 'topic_alias')
|
|
31
30
|
return 'shared';
|
|
32
31
|
return undefined;
|
|
33
32
|
}
|
|
34
33
|
/** Short command-word label for status / confirmation messages. */
|
|
35
34
|
export function replyModeLabel(mode) {
|
|
36
|
-
return mode === '
|
|
35
|
+
return mode === 'shared' ? 'topic' : mode === 'new-topic' ? 'new-topic' : 'chat';
|
|
37
36
|
}
|
|
38
37
|
/** Per-bot default regular-group mode (`regularGroupReplyMode`, default 'chat'). */
|
|
39
38
|
function regularGroupDefaultMode(larkAppId) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-reply-mode-store.js","sourceRoot":"","sources":["../../src/services/chat-reply-mode-store.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"chat-reply-mode-store.js","sourceRoot":"","sources":["../../src/services/chat-reply-mode-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../src/skills/definitions.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,QAAQ;IACvB,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAC;CACjB;
|
|
1
|
+
{"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../src/skills/definitions.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,QAAQ;IACvB,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAC;CACjB;AAy5BD,eAAO,MAAM,SAAS,wjJAiErB,CAAC;AAoGF,eAAO,MAAM,cAAc,eAAe,CAAC;AAE3C,eAAO,MAAM,cAAc,EAAE,QAAQ,EAUpC,CAAC;AAEF;;qCAEqC;AACrC,eAAO,MAAM,mBAAmB,EAAE,MAAM,EAKvC,CAAC"}
|
|
@@ -254,13 +254,13 @@ botmux send --attention=blocked --mention-back "缺 TOS 上传密钥,拿不到
|
|
|
254
254
|
|
|
255
255
|
### 纯文本(最常见)
|
|
256
256
|
|
|
257
|
-
|
|
257
|
+
多行内容不要写成 \`botmux send "第一行\\n第二行"\`,否则用户会在飞书里看到字面量 \`\\n\`。在 Unix shell 里可用 heredoc;在 Windows/PowerShell 里发送包含中文或 emoji 的多行内容时,必须先写 UTF-8 文件,再用 \`--content-file\`,不要把中文直接通过 here-string、\`echo\` 或管道送进 stdin。
|
|
258
258
|
|
|
259
259
|
\`\`\`bash
|
|
260
260
|
# 直接传参
|
|
261
261
|
botmux send "分析完成,核心问题是 X"
|
|
262
262
|
|
|
263
|
-
# heredoc
|
|
263
|
+
# Unix shell: heredoc
|
|
264
264
|
botmux send <<'EOF'
|
|
265
265
|
## 分析报告
|
|
266
266
|
|
|
@@ -274,9 +274,23 @@ EOF
|
|
|
274
274
|
echo "构建成功 ✅" | botmux send
|
|
275
275
|
\`\`\`
|
|
276
276
|
|
|
277
|
+
\`\`\`powershell
|
|
278
|
+
# Windows PowerShell: 中文/emoji 多行内容
|
|
279
|
+
$msg = Join-Path $env:TEMP "botmux-message.md"
|
|
280
|
+
@'
|
|
281
|
+
## 分析报告
|
|
282
|
+
|
|
283
|
+
1. 发现问题 A
|
|
284
|
+
2. 建议方案 B
|
|
285
|
+
|
|
286
|
+
需要你确认后我再动手。
|
|
287
|
+
'@ | Set-Content -LiteralPath $msg -Encoding utf8
|
|
288
|
+
botmux send --content-file $msg
|
|
289
|
+
\`\`\`
|
|
290
|
+
|
|
277
291
|
> ⚠️ **重要:single-quoted heredoc \`<<'EOF'\` 内反引号直接写真反引号,不要加反斜杠转义。**
|
|
278
292
|
> 原因:单引号 heredoc 已经禁用所有特殊字符解释(\`$\`、反斜杠、反引号一律按字面量处理)。再加反斜杠反而会把"反斜杠+反引号"作为字面字符混进 markdown,让 markdown-it 按 CommonMark 的 backslash-escape 处理——结果卡片里三反引号变成可见字符、代码块整段废掉。
|
|
279
|
-
> 自检:写完 bash 命令后扫一眼,如果 EOF 块内**任何反引号前面带反斜杠**,删掉那个反斜杠。
|
|
293
|
+
> 自检:写完 bash 命令后扫一眼,如果 EOF 块内**任何反引号前面带反斜杠**,删掉那个反斜杠。Windows/PowerShell 需要中文或 emoji 时优先用上面的 \`--content-file\` 写法。
|
|
280
294
|
|
|
281
295
|
### 可用的 markdown 语法(自动走卡片)
|
|
282
296
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/skills/definitions.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AASH,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2FtB,CAAC;AAEF,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6DrB,CAAC;AAEF,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8CpB,CAAC;AAEF,MAAM,UAAU,GAAG
|
|
1
|
+
{"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/skills/definitions.ts"],"names":[],"mappings":"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"}
|
package/dist/worker.js
CHANGED
|
@@ -22,7 +22,7 @@ import { shouldSuppressBridgeEmit } from './services/bridge-fallback-gate.js';
|
|
|
22
22
|
import { shouldWriteNow } from './utils/input-gate.js';
|
|
23
23
|
import { ReadyGate, shouldArmReadyGate } from './utils/ready-gate.js';
|
|
24
24
|
import { InflightInputTracker } from './core/inflight-input-tracker.js';
|
|
25
|
-
import { shouldRunQuietRotation, evaluatePidResolverPullback, decideFingerprintSwitch, sessionIdFromJsonlPath, SESSION_ID_FILENAME_RE, } from './services/bridge-rotation-policy.js';
|
|
25
|
+
import { shouldRunQuietRotation, evaluatePidResolverPullback, decideFingerprintSwitch, shouldHealAbsentBaseline, sessionIdFromJsonlPath, SESSION_ID_FILENAME_RE, } from './services/bridge-rotation-policy.js';
|
|
26
26
|
import { CodexBridgeQueue } from './services/codex-bridge-queue.js';
|
|
27
27
|
import { drainCodexRollout, findCodexRolloutBySessionId, findCodexRolloutByPid, splitCodexEventsByCutoff, extractLastCodexTurn } from './services/codex-transcript.js';
|
|
28
28
|
import { findTraexRolloutBySessionId, findTraexRolloutByPid } from './services/traex-transcript.js';
|
|
@@ -1416,8 +1416,28 @@ function bridgeMarkPendingTurn(messageText, preferredTurnId) {
|
|
|
1416
1416
|
if (!bridgeJsonlPath)
|
|
1417
1417
|
return undefined;
|
|
1418
1418
|
if (!bridgeBaselineDone) {
|
|
1419
|
-
|
|
1420
|
-
|
|
1419
|
+
// Self-heal a stuck baseline: the guessed transcript path never
|
|
1420
|
+
// materialised (Claude wrote under a different sessionId, a stale resume
|
|
1421
|
+
// id, or an /adopt sid persisted as the botmux sid). An absent file has
|
|
1422
|
+
// no history to absorb, so arm fresh-empty readiness so THIS turn gets
|
|
1423
|
+
// marked — the mark arms the per-tick exact-content fingerprint recovery,
|
|
1424
|
+
// which finds the jsonl Claude actually wrote this message to and switches
|
|
1425
|
+
// the bridge onto it (no dependence on Claude-internal pid files, so
|
|
1426
|
+
// version-robust). See shouldHealAbsentBaseline for the full rationale.
|
|
1427
|
+
if (shouldHealAbsentBaseline({
|
|
1428
|
+
baselineDone: bridgeBaselineDone,
|
|
1429
|
+
hasJsonlPath: !!bridgeJsonlPath,
|
|
1430
|
+
jsonlFileExists: existsSyncSafe(bridgeJsonlPath),
|
|
1431
|
+
})) {
|
|
1432
|
+
bridgeOffset = 0;
|
|
1433
|
+
bridgePendingTail = '';
|
|
1434
|
+
bridgeBaselineDone = true;
|
|
1435
|
+
log(`Bridge baseline self-healed: guessed transcript ${bridgeJsonlPath} absent; fresh-empty readiness armed for fingerprint recovery`);
|
|
1436
|
+
}
|
|
1437
|
+
else {
|
|
1438
|
+
log('Bridge baseline not ready — this turn will not have transcript-driven final_output');
|
|
1439
|
+
return undefined;
|
|
1440
|
+
}
|
|
1421
1441
|
}
|
|
1422
1442
|
const fingerprint = makeFingerprint(messageText);
|
|
1423
1443
|
// Full normalised content powers the unknown-sid recovery path. When a
|