botmux 2.24.4 → 2.24.6
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 +4 -2
- package/README.md +4 -2
- package/dist/adapters/backend/session-backend-selector.d.ts +11 -0
- package/dist/adapters/backend/session-backend-selector.d.ts.map +1 -0
- package/dist/adapters/backend/session-backend-selector.js +26 -0
- package/dist/adapters/backend/session-backend-selector.js.map +1 -0
- package/dist/adapters/backend/tmux-pipe-backend.d.ts +55 -15
- package/dist/adapters/backend/tmux-pipe-backend.d.ts.map +1 -1
- package/dist/adapters/backend/tmux-pipe-backend.js +163 -21
- package/dist/adapters/backend/tmux-pipe-backend.js.map +1 -1
- package/dist/adapters/cli/claude-code.d.ts.map +1 -1
- package/dist/adapters/cli/claude-code.js +91 -15
- package/dist/adapters/cli/claude-code.js.map +1 -1
- package/dist/adapters/cli/shared-hints.js +2 -2
- package/dist/adapters/cli/shared-hints.js.map +1 -1
- package/dist/cli/arg-utils.d.ts +11 -0
- package/dist/cli/arg-utils.d.ts.map +1 -0
- package/dist/cli/arg-utils.js +25 -0
- package/dist/cli/arg-utils.js.map +1 -0
- package/dist/cli/quoted-render.d.ts +30 -0
- package/dist/cli/quoted-render.d.ts.map +1 -0
- package/dist/cli/quoted-render.js +29 -0
- package/dist/cli/quoted-render.js.map +1 -0
- package/dist/cli.js +65 -16
- package/dist/cli.js.map +1 -1
- package/dist/core/worker-pool.d.ts.map +1 -1
- package/dist/core/worker-pool.js +34 -19
- package/dist/core/worker-pool.js.map +1 -1
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +13 -4
- package/dist/daemon.js.map +1 -1
- package/dist/im/lark/client.d.ts +7 -7
- package/dist/im/lark/client.d.ts.map +1 -1
- package/dist/im/lark/client.js +14 -15
- package/dist/im/lark/client.js.map +1 -1
- package/dist/im/lark/md-card.d.ts +21 -0
- package/dist/im/lark/md-card.d.ts.map +1 -1
- package/dist/im/lark/md-card.js +63 -0
- package/dist/im/lark/md-card.js.map +1 -1
- package/dist/im/lark/message-parser.d.ts +9 -3
- package/dist/im/lark/message-parser.d.ts.map +1 -1
- package/dist/im/lark/message-parser.js +13 -5
- package/dist/im/lark/message-parser.js.map +1 -1
- package/dist/im/lark/quote-hint.d.ts +18 -0
- package/dist/im/lark/quote-hint.d.ts.map +1 -0
- package/dist/im/lark/quote-hint.js +23 -0
- package/dist/im/lark/quote-hint.js.map +1 -0
- package/dist/services/coco-transcript.d.ts +11 -8
- package/dist/services/coco-transcript.d.ts.map +1 -1
- package/dist/services/coco-transcript.js +77 -40
- package/dist/services/coco-transcript.js.map +1 -1
- package/dist/services/codex-transcript.d.ts +26 -10
- package/dist/services/codex-transcript.d.ts.map +1 -1
- package/dist/services/codex-transcript.js +95 -30
- package/dist/services/codex-transcript.js.map +1 -1
- package/dist/skills/definitions.d.ts +4 -0
- package/dist/skills/definitions.d.ts.map +1 -1
- package/dist/skills/definitions.js +69 -12
- package/dist/skills/definitions.js.map +1 -1
- package/dist/skills/installer.d.ts +3 -1
- package/dist/skills/installer.d.ts.map +1 -1
- package/dist/skills/installer.js +18 -3
- package/dist/skills/installer.js.map +1 -1
- package/dist/types.d.ts +5 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/logger.d.ts +1 -1
- package/dist/utils/logger.js +1 -1
- package/dist/utils/screenshot-renderer.d.ts.map +1 -1
- package/dist/utils/screenshot-renderer.js +63 -26
- package/dist/utils/screenshot-renderer.js.map +1 -1
- package/dist/utils/terminal-renderer.d.ts +16 -0
- package/dist/utils/terminal-renderer.d.ts.map +1 -1
- package/dist/utils/terminal-renderer.js +35 -21
- package/dist/utils/terminal-renderer.js.map +1 -1
- package/dist/utils/transient-snapshot.d.ts +28 -0
- package/dist/utils/transient-snapshot.d.ts.map +1 -0
- package/dist/utils/transient-snapshot.js +96 -0
- package/dist/utils/transient-snapshot.js.map +1 -0
- package/dist/worker.js +172 -71
- package/dist/worker.js.map +1 -1
- package/package.json +1 -1
|
@@ -142,19 +142,31 @@ export function resolveJsonlFromPid(pid, expectedCwd) {
|
|
|
142
142
|
return null;
|
|
143
143
|
if (typeof parsed.sessionId !== 'string' || !SESSION_UUID_RE.test(parsed.sessionId))
|
|
144
144
|
return null;
|
|
145
|
-
|
|
146
|
-
// (Node's process.cwd() returns getcwd(3)), but `expectedCwd` may still be
|
|
147
|
-
// the symlink we spawned under. A raw equality check would reject a
|
|
148
|
-
// legitimate match when workingDir is e.g. /home/x → /data00/home/x.
|
|
149
|
-
if (typeof parsed.cwd !== 'string' || realpathCwd(parsed.cwd) !== realpathCwd(expectedCwd))
|
|
145
|
+
if (typeof parsed.cwd !== 'string')
|
|
150
146
|
return null;
|
|
147
|
+
// Identity check: procStart matching against /proc/<pid>/stat field 22 is
|
|
148
|
+
// the strong signal that this pid file belongs to the live process (rules
|
|
149
|
+
// out pid reuse). When that holds, Claude's recorded cwd is authoritative
|
|
150
|
+
// even if it disagrees with `expectedCwd` — the worker's cliCwd can drift
|
|
151
|
+
// (e.g. a schedule resumes a session with a different workingDir than the
|
|
152
|
+
// original spawn, but Claude itself loads the session with its own cwd).
|
|
153
|
+
// When procStart is unavailable/unverifiable, fall back to cwd equality as
|
|
154
|
+
// the only remaining sanity check. Realpath both sides so a symlinked
|
|
155
|
+
// workingDir (/home/x → /data00/home/x) still matches Claude's canonical
|
|
156
|
+
// cwd from getcwd(3).
|
|
157
|
+
let procStartVerified = false;
|
|
151
158
|
if (typeof parsed.procStart === 'string') {
|
|
152
159
|
const live = readProcStarttime(pid);
|
|
153
160
|
if (live === null && process.platform === 'linux')
|
|
154
161
|
return null;
|
|
155
|
-
if (live !== null
|
|
156
|
-
|
|
162
|
+
if (live !== null) {
|
|
163
|
+
if (live !== parsed.procStart)
|
|
164
|
+
return null;
|
|
165
|
+
procStartVerified = true;
|
|
166
|
+
}
|
|
157
167
|
}
|
|
168
|
+
if (!procStartVerified && realpathCwd(parsed.cwd) !== realpathCwd(expectedCwd))
|
|
169
|
+
return null;
|
|
158
170
|
return {
|
|
159
171
|
path: claudeJsonlPathForSession(parsed.sessionId, parsed.cwd),
|
|
160
172
|
cliSessionId: parsed.sessionId,
|
|
@@ -213,6 +225,48 @@ export function findOpenClaudeSessionIds(pid) {
|
|
|
213
225
|
}
|
|
214
226
|
return [...out];
|
|
215
227
|
}
|
|
228
|
+
/** Fingerprint search that fans out from the pinned project dir to every
|
|
229
|
+
* sibling under `~/.claude/projects/`. Used as the writeInput fallback
|
|
230
|
+
* when the pinned `claudeJsonlPath` doesn't contain the submit marker —
|
|
231
|
+
* Claude may have written to a different project hash than the worker
|
|
232
|
+
* expected (e.g. a schedule resumed the session with a workingDir that
|
|
233
|
+
* differs from Claude's internal cwd, so the worker computes the wrong
|
|
234
|
+
* -project-hash- but Claude appends to the original session's hash dir).
|
|
235
|
+
* Tries the primary dir first (fast path, unchanged behavior); only fans
|
|
236
|
+
* out when no match is found there. Per-dir, `findJsonlContainingFingerprint`
|
|
237
|
+
* still applies its newest-first ordering and the minMtimeMs guard, so a
|
|
238
|
+
* stale historical match in some unrelated project can't false-positive. */
|
|
239
|
+
function findJsonlAcrossProjectsRoot(searchPath, fingerprint, options) {
|
|
240
|
+
const primaryDir = dirname(searchPath);
|
|
241
|
+
const primary = findJsonlContainingFingerprint(primaryDir, fingerprint, {
|
|
242
|
+
excludePath: searchPath,
|
|
243
|
+
...options,
|
|
244
|
+
});
|
|
245
|
+
if (primary)
|
|
246
|
+
return primary;
|
|
247
|
+
const projectsRoot = dirname(primaryDir);
|
|
248
|
+
if (!existsSync(projectsRoot))
|
|
249
|
+
return null;
|
|
250
|
+
let siblings;
|
|
251
|
+
try {
|
|
252
|
+
siblings = readdirSync(projectsRoot);
|
|
253
|
+
}
|
|
254
|
+
catch {
|
|
255
|
+
return null;
|
|
256
|
+
}
|
|
257
|
+
for (const name of siblings) {
|
|
258
|
+
const sib = join(projectsRoot, name);
|
|
259
|
+
if (sib === primaryDir)
|
|
260
|
+
continue;
|
|
261
|
+
const matched = findJsonlContainingFingerprint(sib, fingerprint, {
|
|
262
|
+
excludePath: searchPath,
|
|
263
|
+
...options,
|
|
264
|
+
});
|
|
265
|
+
if (matched)
|
|
266
|
+
return matched;
|
|
267
|
+
}
|
|
268
|
+
return null;
|
|
269
|
+
}
|
|
216
270
|
const COMPLETION_RE = /\u2733\s*(?:Worked|Crunched|Cogitated|Cooked|Churned|Saut[eé]ed|Baked|Brewed) for \d+[smh]/;
|
|
217
271
|
export function createClaudeCodeAdapter(pathOverride) {
|
|
218
272
|
const bin = resolveCommand(pathOverride ?? 'claude');
|
|
@@ -274,7 +328,7 @@ export function createClaudeCodeAdapter(pathOverride) {
|
|
|
274
328
|
" 正确多行示例:\n```bash\nbotmux send <<'EOF'\n第一行\n第二行\nEOF\n```",
|
|
275
329
|
'- 附带图片:`botmux send --images /path/to/img.png "说明文字"`',
|
|
276
330
|
'- 附带文件:`botmux send --files /path/to/file.pdf "请查收"`',
|
|
277
|
-
'- 需要上下文时用 `botmux
|
|
331
|
+
'- 需要上下文时用 `botmux history` 读取之前的对话。',
|
|
278
332
|
'- 查看可协作的机器人:`botmux bots list`',
|
|
279
333
|
'</botmux_routing>',
|
|
280
334
|
...identityBlock,
|
|
@@ -414,9 +468,12 @@ export function createClaudeCodeAdapter(pathOverride) {
|
|
|
414
468
|
}
|
|
415
469
|
}
|
|
416
470
|
// Final fallback when the pid file is unavailable / fails validation:
|
|
417
|
-
// scan the project dir for a recently-written jsonl whose
|
|
418
|
-
// contains our content fingerprint. Stricter than mtime-based
|
|
471
|
+
// scan the pinned project dir for a recently-written jsonl whose
|
|
472
|
+
// tail contains our content fingerprint. Stricter than mtime-based
|
|
419
473
|
// detection so a sibling pane in the same dir can't hijack us.
|
|
474
|
+
// Per-attempt scope is intentionally narrow (dirname only) — the
|
|
475
|
+
// cross-project fan-out only runs once at end-of-writeInput and in
|
|
476
|
+
// the recheck closure, not per retry, to keep the worst case bounded.
|
|
420
477
|
if (submitFingerprint) {
|
|
421
478
|
const searchPath = pty.claudeJsonlPath ?? startPath;
|
|
422
479
|
const matched = findJsonlContainingFingerprint(dirname(searchPath), submitFingerprint, {
|
|
@@ -452,6 +509,24 @@ export function createClaudeCodeAdapter(pathOverride) {
|
|
|
452
509
|
if (await confirmSubmit(800)) {
|
|
453
510
|
return observedCliSessionId ? buildResult(true) : undefined;
|
|
454
511
|
}
|
|
512
|
+
// Last-resort cross-project fan-out, run ONCE before declaring failure:
|
|
513
|
+
// catches the case where workingDir/cwd drift made every per-attempt
|
|
514
|
+
// scan look in the wrong project dir AND the pid resolver also failed
|
|
515
|
+
// (e.g. pid file missing, /proc unavailable). minMtimeMs filtering and
|
|
516
|
+
// newest-first ordering keep the cost bounded — only jsonls touched in
|
|
517
|
+
// the last 60s are actually read, which is typically a handful even
|
|
518
|
+
// across all sibling project dirs. Per-attempt scans stay narrow
|
|
519
|
+
// (dirname only) so this work doesn't repeat 4×.
|
|
520
|
+
if (submitFingerprint && pty.claudeJsonlPath) {
|
|
521
|
+
const matched = findJsonlAcrossProjectsRoot(pty.claudeJsonlPath, submitFingerprint, {
|
|
522
|
+
minMtimeMs: submitSearchMinMtime,
|
|
523
|
+
includeQueueOperations: true,
|
|
524
|
+
});
|
|
525
|
+
if (matched) {
|
|
526
|
+
pty.claudeJsonlPath = matched;
|
|
527
|
+
return observedCliSessionId ? buildResult(true) : undefined;
|
|
528
|
+
}
|
|
529
|
+
}
|
|
455
530
|
// All retries exhausted and still no submit marker in JSONL. Signal failure
|
|
456
531
|
// so the worker can notify the user in Lark instead of silently dropping.
|
|
457
532
|
// We still surface observedCliSessionId so the worker can persist Claude's
|
|
@@ -475,14 +550,15 @@ export function createClaudeCodeAdapter(pathOverride) {
|
|
|
475
550
|
if (currentPath && jsonlContainsFingerprint(currentPath, submitFingerprint, { includeQueueOperations: true })) {
|
|
476
551
|
return true;
|
|
477
552
|
}
|
|
478
|
-
// Fan out to sibling jsonls in the project dir
|
|
479
|
-
//
|
|
480
|
-
//
|
|
553
|
+
// Fan out to sibling jsonls in the project dir, then across every
|
|
554
|
+
// sibling project dir under `~/.claude/projects/` (catches workingDir
|
|
555
|
+
// drift like worker thinking `-foo-bar/` while Claude actually appends
|
|
556
|
+
// to `-foo-bar-baz/`). Same minMtime guard as the in-band fingerprint
|
|
557
|
+
// fallback so a stale historical match can't suppress the warning.
|
|
481
558
|
const searchPath = currentPath ?? pty.claudeJsonlPath;
|
|
482
559
|
if (!searchPath)
|
|
483
560
|
return false;
|
|
484
|
-
const matched =
|
|
485
|
-
excludePath: searchPath,
|
|
561
|
+
const matched = findJsonlAcrossProjectsRoot(searchPath, submitFingerprint, {
|
|
486
562
|
minMtimeMs: submitSearchMinMtime,
|
|
487
563
|
includeQueueOperations: true,
|
|
488
564
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../../src/adapters/cli/claude-code.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../../src/adapters/cli/claude-code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACrI,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,EAAE,8BAA8B,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAExI;;;;;;;;;oEASoE;AACpE,SAAS,WAAW,CAAC,GAAW;IAC9B,IAAI,CAAC;QAAC,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,GAAG,CAAC;IAAC,CAAC;AACzD,CAAC;AAED;;;gEAGgE;AAChE,MAAM,UAAU,yBAAyB,CAAC,SAAiB,EAAE,GAAW;IACtE,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;IACpE,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,SAAS,QAAQ,CAAC,CAAC;AACnF,CAAC;AAED;;;;;;;;;gCASgC;AAChC,MAAM,cAAc,GAAG,CAAC,2BAA2B,EAAE,uBAAuB,CAAC,CAAC;AAE9E,SAAS,eAAe,CAAC,IAAY;IACnC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAChC,IAAI,CAAC;QAAC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,CAAC,CAAC;IAAC,CAAC;AACzD,CAAC;AAED,SAAS,cAAc,CAAC,IAAY,EAAE,QAAgB;IACpD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,KAAK,CAAC;IAAC,CAAC;IAC3D,IAAI,IAAI,IAAI,QAAQ;QAAE,OAAO,KAAK,CAAC;IACnC,MAAM,GAAG,GAAG,IAAI,GAAG,QAAQ,CAAC;IAC5B,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC/B,IAAI,CAAC;QACH,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;YAAS,CAAC;QACT,SAAS,CAAC,EAAE,CAAC,CAAC;IAChB,CAAC;IACD,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAClC,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,IAAY,EAAE,QAAgB,EAAE,SAAiB;IAC5E,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IACxC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,IAAI,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC;YAAE,OAAO,IAAI,CAAC;QAChD,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,qBAAqB,CAAC,OAAe,EAAE,GAAG,GAAG,EAAE;IACtD,MAAM,SAAS,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACnD,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACxE,CAAC;AAED,MAAM,eAAe,GAAG,iEAAiE,CAAC;AAE1F;;;;;;;;;wEASwE;AACxE,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC;AAC/D,CAAC;AAED;;2EAE2E;AAC3E,SAAS,iBAAiB,CAAC,GAAW;IACpC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,SAAS,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC;QACtD,sEAAsE;QACtE,gEAAgE;QAChE,MAAM,UAAU,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,UAAU,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAChC,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7D,oEAAoE;QACpE,OAAO,MAAM,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;0CAK0C;AAC1C,MAAM,UAAU,mBAAmB,CAAC,GAAW,EAAE,WAAmB;IAClE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACpD,IAAI,MAAW,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACrE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACvD,IAAI,MAAM,CAAC,GAAG,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IACjG,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAChD,0EAA0E;IAC1E,0EAA0E;IAC1E,0EAA0E;IAC1E,0EAA0E;IAC1E,0EAA0E;IAC1E,yEAAyE;IACzE,2EAA2E;IAC3E,sEAAsE;IACtE,yEAAyE;IACzE,sBAAsB;IACtB,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAC9B,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;YAAE,OAAO,IAAI,CAAC;QAC/D,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,IAAI,IAAI,KAAK,MAAM,CAAC,SAAS;gBAAE,OAAO,IAAI,CAAC;YAC3C,iBAAiB,GAAG,IAAI,CAAC;QAC3B,CAAC;IACH,CAAC;IACD,IAAI,CAAC,iBAAiB,IAAI,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,WAAW,CAAC,WAAW,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5F,OAAO;QACL,IAAI,EAAE,yBAAyB,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC;QAC7D,YAAY,EAAE,MAAM,CAAC,SAAS;KAC/B,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;oDAcoD;AACpD,MAAM,UAAU,wBAAwB,CAAC,GAAW;IAClD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAClD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;QAAE,OAAO,EAAE,CAAC;IAC5C,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,WAAW,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC;IAC9D,MAAM,aAAa,GAAG,oBAAoB,CAAC;IAC3C,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,IAAI,MAAc,CAAC;QACnB,IAAI,CAAC;YACH,MAAM,GAAG,YAAY,CAAC,SAAS,GAAG,OAAO,IAAI,EAAE,CAAC,CAAC;QACnD,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YACnC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3D,IAAI,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC;gBAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACnD,SAAS;QACX,CAAC;QACD,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YAChE,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;YAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3E,IAAI,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC;gBAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;AAClB,CAAC;AAED;;;;;;;;;;6EAU6E;AAC7E,SAAS,2BAA2B,CAClC,UAAkB,EAClB,WAAmB,EACnB,OAAkE;IAElE,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,8BAA8B,CAAC,UAAU,EAAE,WAAW,EAAE;QACtE,WAAW,EAAE,UAAU;QACvB,GAAG,OAAO;KACX,CAAC,CAAC;IACH,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAC5B,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACzC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3C,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QAAC,QAAQ,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;IACpE,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QACrC,IAAI,GAAG,KAAK,UAAU;YAAE,SAAS;QACjC,MAAM,OAAO,GAAG,8BAA8B,CAAC,GAAG,EAAE,WAAW,EAAE;YAC/D,WAAW,EAAE,UAAU;YACvB,GAAG,OAAO;SACX,CAAC,CAAC;QACH,IAAI,OAAO;YAAE,OAAO,OAAO,CAAC;IAC9B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,aAAa,GAAG,4FAA4F,CAAC;AAEnH,MAAM,UAAU,uBAAuB,CAAC,YAAqB;IAC3D,MAAM,GAAG,GAAG,cAAc,CAAC,YAAY,IAAI,QAAQ,CAAC,CAAC;IACrD,OAAO;QACL,EAAE,EAAE,aAAa;QACjB,WAAW,EAAE,GAAG;QAChB,iBAAiB,EAAE,IAAI;QAEvB,kBAAkB,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE;YAC5C,qEAAqE;YACrE,yEAAyE;YACzE,gEAAgE;YAChE,OAAO,mBAAmB,YAAY,IAAI,SAAS,EAAE,CAAC;QACxD,CAAC;QAED,SAAS,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,SAAS,EAAE;YAClE,MAAM,IAAI,GAAa,EAAE,CAAC;YAC1B,IAAI,MAAM,EAAE,CAAC;gBACX,qEAAqE;gBACrE,qEAAqE;gBACrE,sEAAsE;gBACtE,sEAAsE;gBACtE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,IAAI,SAAS,CAAC,CAAC;YACtD,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;YACvC,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;YAC5C,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,4BAA4B,CAAC,CAAC;YAC9D,MAAM,aAAa,GACjB,OAAO,IAAI,SAAS;gBAClB,CAAC,CAAC;oBACE,EAAE;oBACF,YAAY;oBACZ,WAAW,OAAO,IAAI,MAAM,SAAS;oBACrC,cAAc,SAAS,IAAI,MAAM,YAAY;oBAC7C,mBAAmB;oBACnB,0EAA0E;oBAC1E,+BAA+B;oBAC/B,+BAA+B;oBAC/B,gEAAgE;oBAChE,EAAE;oBACF,wEAAwE;oBACxE,wFAAwF;oBACxF,iFAAiF;oBACjF,qHAAqH;oBACrH,8DAA8D;oBAC9D,uEAAuE;oBACvE,oBAAoB;oBACpB,aAAa;iBACd;gBACH,CAAC,CAAC,EAAE,CAAC;YACT,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE;gBAClC,kBAAkB;gBAClB,sCAAsC;gBACtC,8CAA8C;gBAC9C,EAAE;gBACF,OAAO;gBACP,mDAAmD;gBACnD,sCAAsC;gBACtC,yEAAyE;gBACzE,6DAA6D;gBAC7D,uDAAuD;gBACvD,sDAAsD;gBACtD,qCAAqC;gBACrC,gCAAgC;gBAChC,mBAAmB;gBACnB,GAAG,aAAa;aACjB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACd,OAAO,IAAI,CAAC;QACd,CAAC;QAED,qBAAqB,EAAE,IAAI;QAE3B,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO;YAC3B,qEAAqE;YACrE,yEAAyE;YACzE,wEAAwE;YACxE,qEAAqE;YACrE,uEAAuE;YACvE,sEAAsE;YACtE,sEAAsE;YACtE,+DAA+D;YAC/D,EAAE;YACF,sEAAsE;YACtE,yEAAyE;YACzE,uEAAuE;YACvE,iEAAiE;YACjE,uEAAuE;YACvE,EAAE;YACF,yEAAyE;YACzE,wEAAwE;YACxE,yEAAyE;YACzE,MAAM,YAAY,GAAG,mCAAmC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACvE,MAAM,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YAC7C,MAAM,kBAAkB,GAAG,EAAE,CAAC;YAE9B,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,IAAI,OAAO,CAAO,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC;YAE7E,MAAM,SAAS,GAAG,GAAG,EAAE;gBACrB,IAAI,GAAG,CAAC,eAAe;oBAAE,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;;oBACjD,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC,CAAC;YAEF,iEAAiE;YACjE,+DAA+D;YAC/D,mEAAmE;YACnE,4DAA4D;YAC5D,kEAAkE;YAClE,4DAA4D;YAC5D,IAAI,oBAAwC,CAAC;YAC7C,MAAM,aAAa,GAAG,CAAC,QAAgD,EAAW,EAAE;gBAClF,IAAI,QAAQ,CAAC,YAAY,KAAK,oBAAoB;oBAAE,oBAAoB,GAAG,QAAQ,CAAC,YAAY,CAAC;gBACjG,IAAI,QAAQ,CAAC,IAAI,KAAK,GAAG,CAAC,eAAe,EAAE,CAAC;oBAC1C,GAAG,CAAC,eAAe,GAAG,QAAQ,CAAC,IAAI,CAAC;oBACpC,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC,CAAC;YACF,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;gBAC7B,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC7D,IAAI,QAAQ;oBAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;YACxC,CAAC;YACD,wEAAwE;YACxE,qEAAqE;YACrE,sEAAsE;YACtE,yEAAyE;YACzE,IAAI,QAAQ,GAAG,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9E,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;YACzD,MAAM,oBAAoB,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC;YAEjD,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;gBACxC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACtC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACxB,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;wBACvB,MAAM,IAAI,EAAE,CAAC;oBACf,CAAC;oBACD,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACzB,8DAA8D;wBAC9D,uCAAuC;wBACvC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;wBACnB,MAAM,IAAI,EAAE,CAAC;wBACb,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;wBAC7B,MAAM,IAAI,EAAE,CAAC;oBACf,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,sEAAsE;gBACtE,mCAAmC;gBACnC,GAAG,CAAC,KAAK,CAAC,WAAW,GAAG,OAAO,GAAG,WAAW,CAAC,CAAC;YACjD,CAAC;YACD,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;YACnD,SAAS,EAAE,CAAC;YAEZ,2EAA2E;YAC3E,sEAAsE;YACtE,sDAAsD;YACtD,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;gBACzB,OAAO,oBAAoB,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;YACpG,CAAC;YAED,MAAM,aAAa,GAAG,KAAK,EAAE,SAAiB,EAAoB,EAAE;gBAClE,MAAM,SAAS,GAAG,GAAG,CAAC,eAAe,CAAC;gBACtC,IAAI,CAAC,SAAS;oBAAE,OAAO,KAAK,CAAC;gBAE7B,kEAAkE;gBAClE,4DAA4D;gBAC5D,IAAI,MAAM,aAAa,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC;oBAAE,OAAO,IAAI,CAAC;gBAErE,+DAA+D;gBAC/D,8DAA8D;gBAC9D,6DAA6D;gBAC7D,cAAc;gBACd,mEAAmE;gBACnE,8DAA8D;gBAC9D,oEAAoE;gBACpE,6DAA6D;gBAC7D,4CAA4C;gBAC5C,mEAAmE;gBACnE,qEAAqE;gBACrE,sEAAsE;gBACtE,mEAAmE;gBACnE,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;oBAC7B,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;oBAC7D,IAAI,QAAQ,EAAE,CAAC;wBACb,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;wBACzC,MAAM,OAAO,GAAG,GAAG,CAAC,eAAe,CAAC;wBACpC,MAAM,eAAe,GAAG,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;wBAClF,IAAI,QAAQ,IAAI,OAAO,IAAI,iBAAiB,EAAE,CAAC;4BAC7C,IAAI,wBAAwB,CAAC,OAAO,EAAE,iBAAiB,EAAE,EAAE,sBAAsB,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;gCAC3F,yDAAyD;gCACzD,0DAA0D;gCAC1D,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;gCACpC,OAAO,IAAI,CAAC;4BACd,CAAC;wBACH,CAAC;wBACD,IAAI,OAAO,EAAE,CAAC;4BACZ,IAAI,MAAM,aAAa,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gCACtE,IAAI,QAAQ;oCAAE,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;gCAClD,OAAO,IAAI,CAAC;4BACd,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,sEAAsE;gBACtE,iEAAiE;gBACjE,mEAAmE;gBACnE,+DAA+D;gBAC/D,iEAAiE;gBACjE,mEAAmE;gBACnE,sEAAsE;gBACtE,IAAI,iBAAiB,EAAE,CAAC;oBACtB,MAAM,UAAU,GAAG,GAAG,CAAC,eAAe,IAAI,SAAS,CAAC;oBACpD,MAAM,OAAO,GAAG,8BAA8B,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,iBAAiB,EAAE;wBACrF,WAAW,EAAE,UAAU;wBACvB,UAAU,EAAE,oBAAoB;wBAChC,sBAAsB,EAAE,IAAI;qBAC7B,CAAC,CAAC;oBACH,IAAI,OAAO,EAAE,CAAC;wBACZ,GAAG,CAAC,eAAe,GAAG,OAAO,CAAC;wBAC9B,OAAO,IAAI,CAAC;oBACd,CAAC;gBACH,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC,CAAC;YAEF,MAAM,WAAW,GAAG,CAAC,SAAkB,EAAiD,EAAE;gBACxF,OAAO,oBAAoB;oBACzB,CAAC,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,oBAAoB,EAAE;oBACnD,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;YACpB,CAAC,CAAC;YAEF,uEAAuE;YACvE,yEAAyE;YACzE,0EAA0E;YAC1E,wEAAwE;YACxE,yEAAyE;YACzE,iDAAiD;YACjD,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC;gBAC7C,IAAI,MAAM,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC7B,OAAO,oBAAoB,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC9D,CAAC;gBACD,SAAS,EAAE,CAAC;YACd,CAAC;YACD,qBAAqB;YACrB,IAAI,MAAM,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC7B,OAAO,oBAAoB,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC9D,CAAC;YACD,wEAAwE;YACxE,qEAAqE;YACrE,sEAAsE;YACtE,uEAAuE;YACvE,uEAAuE;YACvE,oEAAoE;YACpE,iEAAiE;YACjE,iDAAiD;YACjD,IAAI,iBAAiB,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;gBAC7C,MAAM,OAAO,GAAG,2BAA2B,CAAC,GAAG,CAAC,eAAe,EAAE,iBAAiB,EAAE;oBAClF,UAAU,EAAE,oBAAoB;oBAChC,sBAAsB,EAAE,IAAI;iBAC7B,CAAC,CAAC;gBACH,IAAI,OAAO,EAAE,CAAC;oBACZ,GAAG,CAAC,eAAe,GAAG,OAAO,CAAC;oBAC9B,OAAO,oBAAoB,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC9D,CAAC;YACH,CAAC;YACD,4EAA4E;YAC5E,0EAA0E;YAC1E,2EAA2E;YAC3E,2DAA2D;YAC3D,EAAE;YACF,wEAAwE;YACxE,wEAAwE;YACxE,0EAA0E;YAC1E,uEAAuE;YACvE,qEAAqE;YACrE,MAAM,OAAO,GAAG,GAAY,EAAE;gBAC5B,IAAI,CAAC,iBAAiB;oBAAE,OAAO,KAAK,CAAC;gBACrC,sEAAsE;gBACtE,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;oBAC7B,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;oBAC7D,IAAI,QAAQ;wBAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;gBACxC,CAAC;gBACD,MAAM,WAAW,GAAG,GAAG,CAAC,eAAe,CAAC;gBACxC,IAAI,WAAW,IAAI,wBAAwB,CAAC,WAAW,EAAE,iBAAiB,EAAE,EAAE,sBAAsB,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;oBAC9G,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,kEAAkE;gBAClE,sEAAsE;gBACtE,uEAAuE;gBACvE,sEAAsE;gBACtE,mEAAmE;gBACnE,MAAM,UAAU,GAAG,WAAW,IAAI,GAAG,CAAC,eAAe,CAAC;gBACtD,IAAI,CAAC,UAAU;oBAAE,OAAO,KAAK,CAAC;gBAC9B,MAAM,OAAO,GAAG,2BAA2B,CAAC,UAAU,EAAE,iBAAiB,EAAE;oBACzE,UAAU,EAAE,oBAAoB;oBAChC,sBAAsB,EAAE,IAAI;iBAC7B,CAAC,CAAC;gBACH,OAAO,CAAC,CAAC,OAAO,CAAC;YACnB,CAAC,CAAC;YACF,OAAO,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;QAC5C,CAAC;QAED,iBAAiB,EAAE,aAAa;QAChC,YAAY,EAAE,GAAG;QACjB,WAAW,EAAE,EAAE;QACf,SAAS,EAAE,KAAK;QAChB,SAAS,EAAE,kBAAkB;KAC9B,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,uBAAuB,CAAC"}
|
|
@@ -14,11 +14,11 @@
|
|
|
14
14
|
*/
|
|
15
15
|
export const BOTMUX_SHELL_HINTS = [
|
|
16
16
|
'你运行在飞书(Lark)话题群中。用户在飞书阅读回复,看不到你的终端输出。',
|
|
17
|
-
'重要:botmux send / botmux
|
|
17
|
+
'重要:botmux send / botmux history / botmux quoted / botmux bots 都是 shell 命令(CLI 程序,已安装在 $PATH),不是 MCP 工具。必须通过 Bash 工具执行,不要到 MCP 工具列表里找。',
|
|
18
18
|
'把消息发给用户(唯一方式):用 Bash 执行 `botmux send "消息内容"`;附带图片用 `--images /path`,附带文件用 `--files /path`。',
|
|
19
19
|
'多行消息必须用 heredoc,禁止写成 `botmux send "第一行\\n第二行"`;否则 `\\n` 可能按字面量显示在飞书里。',
|
|
20
20
|
"正确多行示例:\n```bash\nbotmux send <<'EOF'\n第一行\n第二行\nEOF\n```",
|
|
21
|
-
'辅助命令:`botmux
|
|
21
|
+
'辅助命令:`botmux history`(读此会话历史,话题群拉话题内、普通群拉整群)、`botmux quoted <message_id>`(按需读取被引用的消息,仅在 prompt 头部出现 `[用户引用了消息 ...]` 提示时使用)、`botmux bots list`(查群内其他机器人)。',
|
|
22
22
|
'发送时机:关键结论、方案(等用户确认再动手)、最终结果、进度更新。只 print/echo 不算回复。',
|
|
23
23
|
];
|
|
24
24
|
//# sourceMappingURL=shared-hints.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared-hints.js","sourceRoot":"","sources":["../../../src/adapters/cli/shared-hints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAa;IAC1C,uCAAuC;IACvC,
|
|
1
|
+
{"version":3,"file":"shared-hints.js","sourceRoot":"","sources":["../../../src/adapters/cli/shared-hints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAa;IAC1C,uCAAuC;IACvC,uIAAuI;IACvI,4FAA4F;IAC5F,uEAAuE;IACvE,2DAA2D;IAC3D,0JAA0J;IAC1J,qDAAqD;CACtD,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Small argv helpers used by botmux subcommands. Lives in a side-effect-free
|
|
3
|
+
* module so tests can import them without triggering cli.ts's top-level
|
|
4
|
+
* dispatcher switch.
|
|
5
|
+
*/
|
|
6
|
+
/** Pick the first positional (non-flag, non-flag-value) token from `args`.
|
|
7
|
+
* Skips both `--name` flags AND their following value tokens, so
|
|
8
|
+
* `cmd --session-id <uuid> om_xxx` correctly returns `om_xxx`. Flags that
|
|
9
|
+
* take values must be passed in `flagsWithValue` to avoid eating their args. */
|
|
10
|
+
export declare function firstPositional(args: string[], flagsWithValue: string[]): string | undefined;
|
|
11
|
+
//# sourceMappingURL=arg-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arg-utils.d.ts","sourceRoot":"","sources":["../../src/cli/arg-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;iFAGiF;AACjF,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAS5F"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Small argv helpers used by botmux subcommands. Lives in a side-effect-free
|
|
3
|
+
* module so tests can import them without triggering cli.ts's top-level
|
|
4
|
+
* dispatcher switch.
|
|
5
|
+
*/
|
|
6
|
+
/** Pick the first positional (non-flag, non-flag-value) token from `args`.
|
|
7
|
+
* Skips both `--name` flags AND their following value tokens, so
|
|
8
|
+
* `cmd --session-id <uuid> om_xxx` correctly returns `om_xxx`. Flags that
|
|
9
|
+
* take values must be passed in `flagsWithValue` to avoid eating their args. */
|
|
10
|
+
export function firstPositional(args, flagsWithValue) {
|
|
11
|
+
for (let i = 0; i < args.length; i++) {
|
|
12
|
+
const a = args[i];
|
|
13
|
+
if (flagsWithValue.includes(a)) {
|
|
14
|
+
i++;
|
|
15
|
+
continue;
|
|
16
|
+
} // --flag value
|
|
17
|
+
if (flagsWithValue.some(f => a.startsWith(f + '=')))
|
|
18
|
+
continue; // --flag=value
|
|
19
|
+
if (a.startsWith('-'))
|
|
20
|
+
continue; // unknown flag / boolean
|
|
21
|
+
return a;
|
|
22
|
+
}
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=arg-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arg-utils.js","sourceRoot":"","sources":["../../src/cli/arg-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;iFAGiF;AACjF,MAAM,UAAU,eAAe,CAAC,IAAc,EAAE,cAAwB;IACtE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YAAC,CAAC,EAAE,CAAC;YAAC,SAAS;QAAC,CAAC,CAAY,eAAe;QAC7E,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;YAAE,SAAS,CAAC,eAAe;QAC9E,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS,CAA8B,yBAAyB;QACvF,OAAO,CAAC,CAAC;IACX,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure-function render pipeline for `botmux quoted`. Extracted so unit tests
|
|
3
|
+
* can exercise the wire-up (numberer sharing, extraResources merging) without
|
|
4
|
+
* spinning up the CLI dispatcher or hitting Lark APIs.
|
|
5
|
+
*/
|
|
6
|
+
import type { LarkMessage } from '../types.js';
|
|
7
|
+
import { createImgNumberer, type MessageResource } from '../im/lark/message-parser.js';
|
|
8
|
+
/** Subset of expandMergeForward used here — accepts the parsed message and a
|
|
9
|
+
* numberer, mutates parsed.content to the rendered tree, returns extra
|
|
10
|
+
* resources from sub-messages. Dependency-injected so tests can stub it. */
|
|
11
|
+
export type ExpandMergeForwardFn = (larkAppId: string, messageId: string, parsed: LarkMessage, numberer: ReturnType<typeof createImgNumberer>) => Promise<{
|
|
12
|
+
extraResources: MessageResource[];
|
|
13
|
+
}>;
|
|
14
|
+
export interface RenderedQuotedMessage extends LarkMessage {
|
|
15
|
+
resources: MessageResource[];
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Render a single quoted message into the JSON shape `botmux quoted` emits.
|
|
19
|
+
*
|
|
20
|
+
* Invariants this preserves:
|
|
21
|
+
* - Image and file counters in `[图片 N]` / `[文件 N]` placeholders align
|
|
22
|
+
* 1:1 with the indices of the matching-type entries in `resources`
|
|
23
|
+
* (independent counters, mirrors `formatAttachmentsHint`).
|
|
24
|
+
* - For merge_forward messages, sub-message images/files are appended to
|
|
25
|
+
* `resources` and rendered inside the forwarded-XML tree using the same
|
|
26
|
+
* numberer, so placeholders inside the XML keep aligning with the
|
|
27
|
+
* overall list.
|
|
28
|
+
*/
|
|
29
|
+
export declare function renderQuotedMessage(larkAppId: string, rawMessage: any, expandMergeForward: ExpandMergeForwardFn): Promise<RenderedQuotedMessage>;
|
|
30
|
+
//# sourceMappingURL=quoted-render.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quoted-render.d.ts","sourceRoot":"","sources":["../../src/cli/quoted-render.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAGL,iBAAiB,EACjB,KAAK,eAAe,EACrB,MAAM,8BAA8B,CAAC;AAEtC;;6EAE6E;AAC7E,MAAM,MAAM,oBAAoB,GAAG,CACjC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,KAC3C,OAAO,CAAC;IAAE,cAAc,EAAE,eAAe,EAAE,CAAA;CAAE,CAAC,CAAC;AAEpD,MAAM,WAAW,qBAAsB,SAAQ,WAAW;IACxD,SAAS,EAAE,eAAe,EAAE,CAAC;CAC9B;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,GAAG,EACf,kBAAkB,EAAE,oBAAoB,GACvC,OAAO,CAAC,qBAAqB,CAAC,CAchC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { parseApiMessage, extractResources, createImgNumberer, } from '../im/lark/message-parser.js';
|
|
2
|
+
/**
|
|
3
|
+
* Render a single quoted message into the JSON shape `botmux quoted` emits.
|
|
4
|
+
*
|
|
5
|
+
* Invariants this preserves:
|
|
6
|
+
* - Image and file counters in `[图片 N]` / `[文件 N]` placeholders align
|
|
7
|
+
* 1:1 with the indices of the matching-type entries in `resources`
|
|
8
|
+
* (independent counters, mirrors `formatAttachmentsHint`).
|
|
9
|
+
* - For merge_forward messages, sub-message images/files are appended to
|
|
10
|
+
* `resources` and rendered inside the forwarded-XML tree using the same
|
|
11
|
+
* numberer, so placeholders inside the XML keep aligning with the
|
|
12
|
+
* overall list.
|
|
13
|
+
*/
|
|
14
|
+
export async function renderQuotedMessage(larkAppId, rawMessage, expandMergeForward) {
|
|
15
|
+
const numberer = createImgNumberer();
|
|
16
|
+
// Order: extractResources first so top-level keys get their numbers, then
|
|
17
|
+
// parseApiMessage reuses them when rendering text content. Calling them in
|
|
18
|
+
// the other order leaves resources unnumbered when extractTextContent runs
|
|
19
|
+
// first (it only consults the cache, doesn't create entries for resources
|
|
20
|
+
// that haven't been declared yet via extractResources).
|
|
21
|
+
const resources = extractResources(rawMessage.msg_type ?? '', rawMessage.body?.content ?? '', numberer);
|
|
22
|
+
const parsed = parseApiMessage(rawMessage, numberer);
|
|
23
|
+
if (parsed.msgType === 'merge_forward') {
|
|
24
|
+
const { extraResources } = await expandMergeForward(larkAppId, parsed.messageId, parsed, numberer);
|
|
25
|
+
resources.push(...extraResources);
|
|
26
|
+
}
|
|
27
|
+
return { ...parsed, resources };
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=quoted-render.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quoted-render.js","sourceRoot":"","sources":["../../src/cli/quoted-render.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,iBAAiB,GAElB,MAAM,8BAA8B,CAAC;AAgBtC;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,SAAiB,EACjB,UAAe,EACf,kBAAwC;IAExC,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAC;IACrC,0EAA0E;IAC1E,2EAA2E;IAC3E,2EAA2E;IAC3E,0EAA0E;IAC1E,wDAAwD;IACxD,MAAM,SAAS,GAAG,gBAAgB,CAAC,UAAU,CAAC,QAAQ,IAAI,EAAE,EAAE,UAAU,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;IACxG,MAAM,MAAM,GAAG,eAAe,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACrD,IAAI,MAAM,CAAC,OAAO,KAAK,eAAe,EAAE,CAAC;QACvC,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,kBAAkB,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QACnG,SAAS,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,CAAC;AAClC,CAAC"}
|
package/dist/cli.js
CHANGED
|
@@ -27,6 +27,7 @@ import { createHmac, randomBytes } from 'node:crypto';
|
|
|
27
27
|
import { enableAutostart, disableAutostart, autostartStatus, refreshAutostart } from './autostart.js';
|
|
28
28
|
import { tmuxEnv } from './setup/ensure-tmux.js';
|
|
29
29
|
import { logger } from './utils/logger.js';
|
|
30
|
+
import { firstPositional } from './cli/arg-utils.js';
|
|
30
31
|
// CLI subcommands (send/thread/bots/list/etc) print JSON to stdout for
|
|
31
32
|
// callers to parse. Transitive logger.info calls from shared modules would
|
|
32
33
|
// corrupt that stream, so the CLI process runs silent by default. DEBUG=1
|
|
@@ -1426,7 +1427,8 @@ botmux v${getVersion()} — IM ↔ AI 编程 CLI 桥接
|
|
|
1426
1427
|
--top-level 发顶层消息(不回复进当前话题)
|
|
1427
1428
|
--chat-id <oc_xxx> 指定目标群(默认当前话题所在群)
|
|
1428
1429
|
bots list 列出当前群聊中的机器人(含 open_id)
|
|
1429
|
-
|
|
1430
|
+
history [--limit N] 拉取当前会话的消息历史 (JSON),话题群 → 话题内,普通群 → 整群
|
|
1431
|
+
quoted <message_id> 拉取被引用的单条消息 (JSON),message_id 取自 daemon 注入的引用提示行
|
|
1430
1432
|
|
|
1431
1433
|
新建飞书群:
|
|
1432
1434
|
create-group --bot <name> [--bot ...] [--name "群名"]
|
|
@@ -1665,13 +1667,15 @@ async function cmdSchedule(sub, rest) {
|
|
|
1665
1667
|
process.exit(1);
|
|
1666
1668
|
}
|
|
1667
1669
|
}
|
|
1668
|
-
|
|
1670
|
+
/** Resolve a CLI subcommand's larkAppId by walking the session marker. Common
|
|
1671
|
+
* prelude for `history` / `quoted` / similar commands that need to talk to
|
|
1672
|
+
* Lark on behalf of the session that spawned them. Exits with stderr on
|
|
1673
|
+
* failure so callers can stay focused on the happy path. */
|
|
1674
|
+
async function resolveSessionAppId(sessionIdArg) {
|
|
1669
1675
|
process.env.SESSION_DATA_DIR ??= resolveDataDir();
|
|
1670
|
-
const limit = parseInt(argValue(rest, '--limit') ?? '50', 10);
|
|
1671
|
-
const sessionIdArg = argValue(rest, '--session-id');
|
|
1672
1676
|
const sid = sessionIdArg ?? findAncestorSessionId();
|
|
1673
1677
|
if (!sid) {
|
|
1674
|
-
console.error('无法推断 session-id。请在 Lark
|
|
1678
|
+
console.error('无法推断 session-id。请在 Lark 话题/群里的 CLI 会话中运行,或传 --session-id <id>。');
|
|
1675
1679
|
process.exit(1);
|
|
1676
1680
|
}
|
|
1677
1681
|
const sessions = loadSessions();
|
|
@@ -1691,16 +1695,22 @@ async function cmdThreadMessages(rest) {
|
|
|
1691
1695
|
registerBot(cfg);
|
|
1692
1696
|
}
|
|
1693
1697
|
catch { /* ignore */ }
|
|
1694
|
-
|
|
1698
|
+
return { sid, larkAppId: s.larkAppId, session: s };
|
|
1699
|
+
}
|
|
1700
|
+
async function cmdHistory(rest) {
|
|
1701
|
+
const limit = parseInt(argValue(rest, '--limit') ?? '50', 10);
|
|
1702
|
+
const sessionIdArg = argValue(rest, '--session-id');
|
|
1703
|
+
const { sid, larkAppId: appId, session: s } = await resolveSessionAppId(sessionIdArg);
|
|
1704
|
+
const { listThreadMessages, listChatMessages } = await import('./im/lark/client.js');
|
|
1695
1705
|
const { parseApiMessage } = await import('./im/lark/message-parser.js');
|
|
1696
1706
|
const { expandMergeForward } = await import('./im/lark/merge-forward.js');
|
|
1697
|
-
const appId = s.larkAppId; // narrowed above; pin into a const so async closures keep the narrowing
|
|
1698
1707
|
try {
|
|
1699
1708
|
// Chat-scope sessions (普通群整群一会话) have no thread to walk — list the
|
|
1700
|
-
// chat container
|
|
1709
|
+
// chat container directly and let the caller cap with --limit. Thread-scope
|
|
1710
|
+
// sessions walk the thread container by root_id.
|
|
1701
1711
|
const isChatScope = s.scope === 'chat';
|
|
1702
1712
|
const raw = isChatScope
|
|
1703
|
-
? await
|
|
1713
|
+
? await listChatMessages(appId, s.chatId, limit)
|
|
1704
1714
|
: await listThreadMessages(appId, s.chatId, s.rootMessageId, limit);
|
|
1705
1715
|
// Expand merge_forward to <forwarded_messages> XML, mirroring the live event
|
|
1706
1716
|
// path in daemon.ts. Each merge_forward gets its own numberer (we don't
|
|
@@ -1714,7 +1724,9 @@ async function cmdThreadMessages(rest) {
|
|
|
1714
1724
|
}));
|
|
1715
1725
|
console.log(JSON.stringify({
|
|
1716
1726
|
sessionId: sid,
|
|
1717
|
-
|
|
1727
|
+
chatId: s.chatId,
|
|
1728
|
+
scope: isChatScope ? 'chat' : 'thread',
|
|
1729
|
+
...(isChatScope ? {} : { rootMessageId: s.rootMessageId }),
|
|
1718
1730
|
messages,
|
|
1719
1731
|
total: messages.length,
|
|
1720
1732
|
}, null, 2));
|
|
@@ -1724,6 +1736,37 @@ async function cmdThreadMessages(rest) {
|
|
|
1724
1736
|
process.exit(1);
|
|
1725
1737
|
}
|
|
1726
1738
|
}
|
|
1739
|
+
async function cmdQuoted(rest) {
|
|
1740
|
+
const sessionIdArg = argValue(rest, '--session-id');
|
|
1741
|
+
// Positional message_id is required. The id comes verbatim from the
|
|
1742
|
+
// `[用户引用了消息 用 botmux quoted om_xxx 查看]` prompt prefix the daemon
|
|
1743
|
+
// injects when the user used the Lark quote-reply UI. Skip --session-id and
|
|
1744
|
+
// its value so `botmux quoted --session-id <uuid> om_xxx` doesn't pick up
|
|
1745
|
+
// the uuid as the message id.
|
|
1746
|
+
const messageId = firstPositional(rest, ['--session-id']);
|
|
1747
|
+
if (!messageId) {
|
|
1748
|
+
console.error('用法: botmux quoted <message_id> [--session-id <id>]');
|
|
1749
|
+
process.exit(1);
|
|
1750
|
+
}
|
|
1751
|
+
const { larkAppId: appId } = await resolveSessionAppId(sessionIdArg);
|
|
1752
|
+
const { getMessageDetail } = await import('./im/lark/client.js');
|
|
1753
|
+
const { expandMergeForward } = await import('./im/lark/merge-forward.js');
|
|
1754
|
+
const { renderQuotedMessage } = await import('./cli/quoted-render.js');
|
|
1755
|
+
try {
|
|
1756
|
+
const detail = await getMessageDetail(appId, messageId);
|
|
1757
|
+
const msg = detail?.items?.[0];
|
|
1758
|
+
if (!msg) {
|
|
1759
|
+
console.error(`未找到消息 ${messageId}`);
|
|
1760
|
+
process.exit(1);
|
|
1761
|
+
}
|
|
1762
|
+
const rendered = await renderQuotedMessage(appId, msg, expandMergeForward);
|
|
1763
|
+
console.log(JSON.stringify(rendered, null, 2));
|
|
1764
|
+
}
|
|
1765
|
+
catch (err) {
|
|
1766
|
+
console.error(`获取被引用消息失败: ${err.message}`);
|
|
1767
|
+
process.exit(1);
|
|
1768
|
+
}
|
|
1769
|
+
}
|
|
1727
1770
|
// ─── Send subcommand ─────────────────────────────────────────────────────────
|
|
1728
1771
|
/** Read all of stdin until EOF. Returns '' if stdin is a TTY (no piped data). */
|
|
1729
1772
|
function readStdin() {
|
|
@@ -2396,14 +2439,20 @@ switch (command) {
|
|
|
2396
2439
|
case 'bots':
|
|
2397
2440
|
await cmdBots(process.argv[3] ?? 'list', process.argv.slice(4));
|
|
2398
2441
|
break;
|
|
2442
|
+
case 'history':
|
|
2443
|
+
await cmdHistory(process.argv.slice(3));
|
|
2444
|
+
break;
|
|
2445
|
+
case 'quoted':
|
|
2446
|
+
await cmdQuoted(process.argv.slice(3));
|
|
2447
|
+
break;
|
|
2399
2448
|
case 'thread': {
|
|
2449
|
+
// Removed in favor of `botmux history` (普通群也兼容). Friendly stderr so
|
|
2450
|
+
// pre-rename scripts/skills surface the rename instead of "unknown command".
|
|
2400
2451
|
const sub = process.argv[3] ?? '';
|
|
2401
|
-
|
|
2402
|
-
|
|
2403
|
-
|
|
2404
|
-
|
|
2405
|
-
process.exit(1);
|
|
2406
|
-
}
|
|
2452
|
+
console.error(sub === 'messages' || sub === 'msgs'
|
|
2453
|
+
? `\`botmux thread ${sub}\` 已重命名为 \`botmux history\` (跑普通群和话题群都用它)。`
|
|
2454
|
+
: `\`botmux thread\` 已下线,请用 \`botmux history\``);
|
|
2455
|
+
process.exit(1);
|
|
2407
2456
|
break;
|
|
2408
2457
|
}
|
|
2409
2458
|
case 'autostart': {
|