botmux 2.48.1 → 2.48.3
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 +20 -22
- package/README.md +20 -21
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +23 -4
- package/dist/cli.js.map +1 -1
- package/dist/core/worker-pool.d.ts.map +1 -1
- package/dist/core/worker-pool.js +12 -1
- package/dist/core/worker-pool.js.map +1 -1
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +10 -6
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard/bot-onboarding.d.ts.map +1 -1
- package/dist/dashboard/bot-onboarding.js +24 -2
- package/dist/dashboard/bot-onboarding.js.map +1 -1
- package/dist/dashboard/federation-spoke-api.d.ts +10 -4
- package/dist/dashboard/federation-spoke-api.d.ts.map +1 -1
- package/dist/dashboard/federation-spoke-api.js +38 -11
- package/dist/dashboard/federation-spoke-api.js.map +1 -1
- package/dist/dashboard/web/app.d.ts +1 -1
- package/dist/dashboard/web/app.d.ts.map +1 -1
- package/dist/dashboard/web/app.js +36 -0
- package/dist/dashboard/web/app.js.map +1 -1
- package/dist/dashboard/web/bot-defaults.d.ts.map +1 -1
- package/dist/dashboard/web/bot-defaults.js +131 -0
- package/dist/dashboard/web/bot-defaults.js.map +1 -1
- package/dist/dashboard/web/i18n.d.ts.map +1 -1
- package/dist/dashboard/web/i18n.js +16 -0
- package/dist/dashboard/web/i18n.js.map +1 -1
- package/dist/dashboard/web/team-federation.d.ts.map +1 -1
- package/dist/dashboard/web/team-federation.js +10 -12
- package/dist/dashboard/web/team-federation.js.map +1 -1
- package/dist/dashboard-web/app.js +226 -214
- package/dist/im/lark/client.d.ts.map +1 -1
- package/dist/im/lark/client.js +37 -2
- package/dist/im/lark/client.js.map +1 -1
- package/dist/services/mtr-transcript.d.ts +14 -0
- package/dist/services/mtr-transcript.d.ts.map +1 -0
- package/dist/services/mtr-transcript.js +291 -0
- package/dist/services/mtr-transcript.js.map +1 -0
- package/dist/setup/bot-config-editor.d.ts +5 -2
- package/dist/setup/bot-config-editor.d.ts.map +1 -1
- package/dist/setup/bot-config-editor.js +7 -4
- package/dist/setup/bot-config-editor.js.map +1 -1
- package/dist/worker.js +117 -5
- package/dist/worker.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bot-config-editor.js","sourceRoot":"","sources":["../../src/setup/bot-config-editor.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAA0B;IACnD,GAAG,EAAE,aAAa;IAClB,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,aAAa;IAClB,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,MAAM;CACb,CAAC;AAEF,MAAM,aAAa,GAAwB,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;AAElF;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,KAAyB;IACpD,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC3B,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,IAAI,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,GAAY,CAAC;IAChD,MAAM,IAAI,KAAK,CACb,oBAAoB,GAAG,2BAA2B,CAAC,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAClF,CAAC;AACJ,CAAC;AAED,oDAAoD;AACpD,MAAM,aAAa,GAAG,4BAA4B,CAAC;AAEnD
|
|
1
|
+
{"version":3,"file":"bot-config-editor.js","sourceRoot":"","sources":["../../src/setup/bot-config-editor.ts"],"names":[],"mappings":"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"}
|
package/dist/worker.js
CHANGED
|
@@ -23,6 +23,7 @@ import { CodexBridgeQueue } from './services/codex-bridge-queue.js';
|
|
|
23
23
|
import { drainCodexRollout, findCodexRolloutBySessionId, findCodexRolloutByPid, splitCodexEventsByCutoff, extractLastCodexTurn } from './services/codex-transcript.js';
|
|
24
24
|
import { cocoEventsPathForSession, drainCocoEvents, findCocoSessionByPid } from './services/coco-transcript.js';
|
|
25
25
|
import { currentHermesStateOffset, drainHermesStateDb } from './services/hermes-transcript.js';
|
|
26
|
+
import { currentMtrSessionOffset, drainMtrSession, findLatestMtrSessionByDirectory, findMtrSessionById } from './services/mtr-transcript.js';
|
|
26
27
|
import { baselineJsonlCursor } from './services/jsonl-cursor.js';
|
|
27
28
|
import { dirname } from 'node:path';
|
|
28
29
|
import { createServer as createHttpServer } from 'node:http';
|
|
@@ -31,6 +32,7 @@ import { TerminalRenderer } from './utils/terminal-renderer.js';
|
|
|
31
32
|
import { DEFAULT_RENDER_COLS, DEFAULT_RENDER_ROWS, MAX_RENDER_COLS, MAX_RENDER_ROWS, MIN_RENDER_COLS, MIN_RENDER_ROWS, clamp, resolveRenderDimensions, } from './utils/render-dimensions.js';
|
|
32
33
|
import { createCliAdapterSync } from './adapters/cli/registry.js';
|
|
33
34
|
import { claudeJsonlPathForSession, resolveJsonlFromPid, findOpenClaudeSessionIds } from './adapters/cli/claude-code.js';
|
|
35
|
+
import { mtrSessionIdForBotmuxSession } from './adapters/cli/mtr.js';
|
|
34
36
|
import { TmuxBackend } from './adapters/backend/tmux-backend.js';
|
|
35
37
|
import { TmuxPipeBackend } from './adapters/backend/tmux-pipe-backend.js';
|
|
36
38
|
import { selectSessionBackend } from './adapters/backend/session-backend-selector.js';
|
|
@@ -202,6 +204,9 @@ let codexBridgeWatcher = null;
|
|
|
202
204
|
let codexBridgeTimer = null;
|
|
203
205
|
let hermesBridgeOffset = 0;
|
|
204
206
|
let hermesBridgeBaselineDone = false;
|
|
207
|
+
let mtrBridgeSource;
|
|
208
|
+
let mtrBridgeOffset = 0;
|
|
209
|
+
let mtrBridgeBaselineDone = false;
|
|
205
210
|
/** Codex sessionId we received via writeInput but haven't yet resolved a
|
|
206
211
|
* rollout file for. The poller keeps retrying — the file appears on
|
|
207
212
|
* Codex's first user submit, but with some race delay after our submit
|
|
@@ -1332,7 +1337,7 @@ function drainPathInto(path, fromOffset) {
|
|
|
1332
1337
|
function codexBridgeFallbackActive() {
|
|
1333
1338
|
// True for transcript-backed CLIs whose final output can be harvested
|
|
1334
1339
|
// when the model forgets to call `botmux send`.
|
|
1335
|
-
return lastInitConfig?.cliId === 'codex' || lastInitConfig?.cliId === 'coco' || lastInitConfig?.cliId === 'hermes';
|
|
1340
|
+
return lastInitConfig?.cliId === 'codex' || lastInitConfig?.cliId === 'coco' || lastInitConfig?.cliId === 'hermes' || lastInitConfig?.cliId === 'mtr';
|
|
1336
1341
|
}
|
|
1337
1342
|
function structuredBridgeIsCodex() {
|
|
1338
1343
|
return lastInitConfig?.cliId === 'codex';
|
|
@@ -1340,6 +1345,9 @@ function structuredBridgeIsCodex() {
|
|
|
1340
1345
|
function structuredBridgeIsHermes() {
|
|
1341
1346
|
return lastInitConfig?.cliId === 'hermes';
|
|
1342
1347
|
}
|
|
1348
|
+
function structuredBridgeIsMtr() {
|
|
1349
|
+
return lastInitConfig?.cliId === 'mtr';
|
|
1350
|
+
}
|
|
1343
1351
|
function structuredBridgeIngestPath(path, offset) {
|
|
1344
1352
|
if (structuredBridgeIsCodex())
|
|
1345
1353
|
return drainCodexRollout(path, offset);
|
|
@@ -1373,6 +1381,23 @@ function codexBridgeStartTimer() {
|
|
|
1373
1381
|
emitReadyCodexTurns();
|
|
1374
1382
|
return;
|
|
1375
1383
|
}
|
|
1384
|
+
if (structuredBridgeIsMtr()) {
|
|
1385
|
+
if (!mtrBridgeSource) {
|
|
1386
|
+
const source = findMtrSessionById(codexBridgePendingSessionId)
|
|
1387
|
+
?? (lastInitConfig?.adoptMode
|
|
1388
|
+
? findLatestMtrSessionByDirectory(lastInitConfig.adoptCwd ?? lastInitConfig.workingDir)
|
|
1389
|
+
: undefined);
|
|
1390
|
+
if (source) {
|
|
1391
|
+
codexBridgePendingSessionId = undefined;
|
|
1392
|
+
codexAdoptPendingPid = undefined;
|
|
1393
|
+
mtrBridgeAttach(source, lastInitConfig?.adoptMode ? 'split-live' : 'fresh-empty');
|
|
1394
|
+
}
|
|
1395
|
+
}
|
|
1396
|
+
mtrBridgeIngest();
|
|
1397
|
+
if (isPromptReady)
|
|
1398
|
+
emitReadyCodexTurns();
|
|
1399
|
+
return;
|
|
1400
|
+
}
|
|
1376
1401
|
if (!codexBridgeRolloutPath) {
|
|
1377
1402
|
// Two discovery paths, in order: cliSessionId (known via writeInput
|
|
1378
1403
|
// result for non-adopt or daemon-side probe for adopt) → exact
|
|
@@ -1442,6 +1467,44 @@ function hermesBridgeIngest() {
|
|
|
1442
1467
|
idleDetector?.fireIdle();
|
|
1443
1468
|
}
|
|
1444
1469
|
}
|
|
1470
|
+
function mtrBridgeAttach(source, mode) {
|
|
1471
|
+
mtrBridgeSource = source;
|
|
1472
|
+
if (mode === 'split-live') {
|
|
1473
|
+
const result = drainMtrSession(source, 0);
|
|
1474
|
+
const cutoff = (codexAdoptStartMs ?? Date.now()) - 5_000;
|
|
1475
|
+
const { history, live } = splitCodexEventsByCutoff(result.events, cutoff);
|
|
1476
|
+
codexBridgeQueue.absorb(history);
|
|
1477
|
+
codexBridgeQueue.ingest(live);
|
|
1478
|
+
mtrBridgeOffset = result.newOffset;
|
|
1479
|
+
mtrBridgeBaselineDone = true;
|
|
1480
|
+
log(`MTR bridge split-live: ${source.dbPath}#${source.sessionId} (history=${history.length}, live=${live.length}, cutoff=${cutoff}, offset=${mtrBridgeOffset})`);
|
|
1481
|
+
maybeEmitCodexAdoptPreamble(history);
|
|
1482
|
+
}
|
|
1483
|
+
else if (mode === 'baseline-existing') {
|
|
1484
|
+
const baseline = currentMtrSessionOffset(source);
|
|
1485
|
+
const result = drainMtrSession(source, baseline);
|
|
1486
|
+
codexBridgeQueue.absorb(result.events);
|
|
1487
|
+
mtrBridgeOffset = Math.max(baseline, result.newOffset);
|
|
1488
|
+
mtrBridgeBaselineDone = true;
|
|
1489
|
+
log(`MTR bridge baselined: ${source.dbPath}#${source.sessionId} (offset=${mtrBridgeOffset}, absorbed=${result.events.length})`);
|
|
1490
|
+
}
|
|
1491
|
+
else {
|
|
1492
|
+
mtrBridgeOffset = 0;
|
|
1493
|
+
mtrBridgeBaselineDone = true;
|
|
1494
|
+
log(`MTR bridge fresh-empty: ${source.dbPath}#${source.sessionId}`);
|
|
1495
|
+
}
|
|
1496
|
+
codexBridgeStartTimer();
|
|
1497
|
+
}
|
|
1498
|
+
function mtrBridgeIngest() {
|
|
1499
|
+
if (!mtrBridgeBaselineDone || !mtrBridgeSource)
|
|
1500
|
+
return;
|
|
1501
|
+
const result = drainMtrSession(mtrBridgeSource, mtrBridgeOffset);
|
|
1502
|
+
mtrBridgeOffset = result.newOffset;
|
|
1503
|
+
codexBridgeQueue.ingest(result.events);
|
|
1504
|
+
if (result.events.some(e => e.kind === 'assistant_final')) {
|
|
1505
|
+
idleDetector?.fireIdle();
|
|
1506
|
+
}
|
|
1507
|
+
}
|
|
1445
1508
|
function codexBridgeAttach(rolloutPath, mode) {
|
|
1446
1509
|
codexBridgeRolloutPath = rolloutPath;
|
|
1447
1510
|
if (mode === 'fresh-empty') {
|
|
@@ -1525,6 +1588,18 @@ function codexBridgeAttach(rolloutPath, mode) {
|
|
|
1525
1588
|
function codexBridgeNotifyCliSessionId(cliSessionId) {
|
|
1526
1589
|
if (!codexBridgeFallbackActive() || codexBridgeRolloutPath)
|
|
1527
1590
|
return;
|
|
1591
|
+
if (structuredBridgeIsMtr()) {
|
|
1592
|
+
const source = findMtrSessionById(cliSessionId);
|
|
1593
|
+
if (source) {
|
|
1594
|
+
codexBridgePendingSessionId = undefined;
|
|
1595
|
+
mtrBridgeAttach(source, 'fresh-empty');
|
|
1596
|
+
}
|
|
1597
|
+
else {
|
|
1598
|
+
codexBridgePendingSessionId = cliSessionId;
|
|
1599
|
+
codexBridgeStartTimer();
|
|
1600
|
+
}
|
|
1601
|
+
return;
|
|
1602
|
+
}
|
|
1528
1603
|
const path = findCodexRolloutBySessionId(cliSessionId);
|
|
1529
1604
|
if (path) {
|
|
1530
1605
|
codexBridgePendingSessionId = undefined;
|
|
@@ -1540,6 +1615,10 @@ function codexBridgeIngest() {
|
|
|
1540
1615
|
hermesBridgeIngest();
|
|
1541
1616
|
return;
|
|
1542
1617
|
}
|
|
1618
|
+
if (structuredBridgeIsMtr()) {
|
|
1619
|
+
mtrBridgeIngest();
|
|
1620
|
+
return;
|
|
1621
|
+
}
|
|
1543
1622
|
if (!codexBridgeRolloutPath || !codexBridgeBaselineDone)
|
|
1544
1623
|
return;
|
|
1545
1624
|
const result = structuredBridgeIngestPath(codexBridgeRolloutPath, codexBridgeOffset);
|
|
@@ -1569,7 +1648,7 @@ function codexBridgeMarkPendingTurn(messageText) {
|
|
|
1569
1648
|
function codexBridgeDrainAndMaybeEmit() {
|
|
1570
1649
|
if (!codexBridgeFallbackActive())
|
|
1571
1650
|
return;
|
|
1572
|
-
if (structuredBridgeIsHermes() || (codexBridgeRolloutPath && codexBridgeBaselineDone)) {
|
|
1651
|
+
if (structuredBridgeIsHermes() || structuredBridgeIsMtr() || (codexBridgeRolloutPath && codexBridgeBaselineDone)) {
|
|
1573
1652
|
try {
|
|
1574
1653
|
codexBridgeIngest();
|
|
1575
1654
|
}
|
|
@@ -1648,6 +1727,9 @@ function stopCodexBridge() {
|
|
|
1648
1727
|
codexBridgeBaselineDone = false;
|
|
1649
1728
|
hermesBridgeOffset = 0;
|
|
1650
1729
|
hermesBridgeBaselineDone = false;
|
|
1730
|
+
mtrBridgeSource = undefined;
|
|
1731
|
+
mtrBridgeOffset = 0;
|
|
1732
|
+
mtrBridgeBaselineDone = false;
|
|
1651
1733
|
codexBridgeQueue.clearPending();
|
|
1652
1734
|
codexBridgeQueue.setLocalTurns(false);
|
|
1653
1735
|
codexBridgePendingSessionId = undefined;
|
|
@@ -2767,13 +2849,29 @@ function spawnCli(cfg) {
|
|
|
2767
2849
|
// and is idempotent (no-op if already started).
|
|
2768
2850
|
codexBridgeStartTimer();
|
|
2769
2851
|
}
|
|
2852
|
+
else if (cfg.cliId === 'mtr') {
|
|
2853
|
+
const adoptStartMs = Date.now();
|
|
2854
|
+
codexAdoptStartMs = adoptStartMs;
|
|
2855
|
+
codexBridgeQueue.setLocalTurns(true, adoptStartMs);
|
|
2856
|
+
if (cfg.cliSessionId)
|
|
2857
|
+
codexBridgePendingSessionId = cfg.cliSessionId;
|
|
2858
|
+
const source = findMtrSessionById(cfg.cliSessionId)
|
|
2859
|
+
?? findLatestMtrSessionByDirectory(cfg.adoptCwd ?? cfg.workingDir);
|
|
2860
|
+
if (source) {
|
|
2861
|
+
codexBridgePendingSessionId = undefined;
|
|
2862
|
+
mtrBridgeAttach(source, 'split-live');
|
|
2863
|
+
}
|
|
2864
|
+
else {
|
|
2865
|
+
codexBridgeStartTimer();
|
|
2866
|
+
}
|
|
2867
|
+
}
|
|
2770
2868
|
// Idle detection. In bridge mode we use the adopted CLI's real
|
|
2771
2869
|
// completion/ready patterns (e.g. "Worked for Xs") so tool-execution
|
|
2772
2870
|
// pauses don't trigger a premature emit. Other adopt cases keep the
|
|
2773
2871
|
// minimal output-quiescence-only detector.
|
|
2774
2872
|
const idleAdapter = cfg.bridgeJsonlPath
|
|
2775
2873
|
? createCliAdapterSync('claude-code', undefined)
|
|
2776
|
-
: cfg.cliId === 'codex' || cfg.cliId === 'coco'
|
|
2874
|
+
: cfg.cliId === 'codex' || cfg.cliId === 'coco' || cfg.cliId === 'mtr'
|
|
2777
2875
|
? createCliAdapterSync(cfg.cliId, undefined)
|
|
2778
2876
|
: { completionPattern: undefined, readyPattern: undefined };
|
|
2779
2877
|
idleDetector = new IdleDetector(idleAdapter);
|
|
@@ -2789,6 +2887,9 @@ function spawnCli(cfg) {
|
|
|
2789
2887
|
if (cfg.cliId === 'codex') {
|
|
2790
2888
|
cliAdapter = createCliAdapterSync('codex', cfg.cliPathOverride);
|
|
2791
2889
|
}
|
|
2890
|
+
else if (cfg.cliId === 'mtr') {
|
|
2891
|
+
cliAdapter = createCliAdapterSync('mtr', cfg.cliPathOverride);
|
|
2892
|
+
}
|
|
2792
2893
|
idleDetector.onIdle(() => {
|
|
2793
2894
|
log('Prompt detected (idle) — adopt mode');
|
|
2794
2895
|
try {
|
|
@@ -2960,8 +3061,8 @@ function spawnCli(cfg) {
|
|
|
2960
3061
|
// calling `botmux send`, harvest the final answer from the CLI transcript
|
|
2961
3062
|
// and post it to Lark. Codex needs late attach because its rollout id is
|
|
2962
3063
|
// discovered after the first submit; CoCo's events path is deterministic
|
|
2963
|
-
// from botmux sessionId. Hermes
|
|
2964
|
-
//
|
|
3064
|
+
// from botmux sessionId. Hermes and MTR use SQLite stores, so baseline the
|
|
3065
|
+
// relevant cursor at spawn and poll for rows after each queued prompt flushes.
|
|
2965
3066
|
if (cfg.cliId === 'hermes') {
|
|
2966
3067
|
hermesBridgeAttach(cfg.resume ? 'baseline-existing' : 'fresh-empty');
|
|
2967
3068
|
}
|
|
@@ -2985,6 +3086,17 @@ function spawnCli(cfg) {
|
|
|
2985
3086
|
codexBridgeAttach(eventsPath, cfg.resume ? 'baseline-existing' : 'fresh-empty');
|
|
2986
3087
|
codexBridgeStartTimer();
|
|
2987
3088
|
}
|
|
3089
|
+
else if (cfg.cliId === 'mtr') {
|
|
3090
|
+
const mtrSessionId = cfg.cliSessionId ?? mtrSessionIdForBotmuxSession(cfg.sessionId);
|
|
3091
|
+
codexBridgePendingSessionId = mtrSessionId;
|
|
3092
|
+
const source = findMtrSessionById(mtrSessionId);
|
|
3093
|
+
if (source) {
|
|
3094
|
+
mtrBridgeAttach(source, cfg.resume ? 'baseline-existing' : 'fresh-empty');
|
|
3095
|
+
}
|
|
3096
|
+
else {
|
|
3097
|
+
codexBridgeStartTimer();
|
|
3098
|
+
}
|
|
3099
|
+
}
|
|
2988
3100
|
// Set up idle detection
|
|
2989
3101
|
idleDetector = new IdleDetector(cliAdapter);
|
|
2990
3102
|
idleDetector.onIdle(() => {
|