botmux 2.53.0 → 2.55.0

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 (142) hide show
  1. package/dist/adapters/backend/zellij-observe-backend.d.ts +15 -0
  2. package/dist/adapters/backend/zellij-observe-backend.d.ts.map +1 -1
  3. package/dist/adapters/backend/zellij-observe-backend.js +37 -0
  4. package/dist/adapters/backend/zellij-observe-backend.js.map +1 -1
  5. package/dist/adapters/cli/claude-code.d.ts +3 -3
  6. package/dist/adapters/cli/claude-code.js.map +1 -1
  7. package/dist/adapters/cli/codex.d.ts.map +1 -1
  8. package/dist/adapters/cli/codex.js +44 -28
  9. package/dist/adapters/cli/codex.js.map +1 -1
  10. package/dist/adapters/cli/seed.d.ts +1 -1
  11. package/dist/adapters/cli/seed.js +2 -2
  12. package/dist/adapters/cli/seed.js.map +1 -1
  13. package/dist/adapters/cli/types.d.ts +5 -1
  14. package/dist/adapters/cli/types.d.ts.map +1 -1
  15. package/dist/bot-registry.d.ts +8 -0
  16. package/dist/bot-registry.d.ts.map +1 -1
  17. package/dist/bot-registry.js +31 -5
  18. package/dist/bot-registry.js.map +1 -1
  19. package/dist/cli.d.ts.map +1 -1
  20. package/dist/cli.js +282 -113
  21. package/dist/cli.js.map +1 -1
  22. package/dist/core/dispatch.d.ts +23 -0
  23. package/dist/core/dispatch.d.ts.map +1 -1
  24. package/dist/core/dispatch.js +17 -0
  25. package/dist/core/dispatch.js.map +1 -1
  26. package/dist/core/pending-response.d.ts +25 -0
  27. package/dist/core/pending-response.d.ts.map +1 -0
  28. package/dist/core/pending-response.js +82 -0
  29. package/dist/core/pending-response.js.map +1 -0
  30. package/dist/core/session-discovery.d.ts.map +1 -1
  31. package/dist/core/session-discovery.js +5 -0
  32. package/dist/core/session-discovery.js.map +1 -1
  33. package/dist/core/session-manager.d.ts.map +1 -1
  34. package/dist/core/session-manager.js +16 -1
  35. package/dist/core/session-manager.js.map +1 -1
  36. package/dist/core/types.d.ts +3 -0
  37. package/dist/core/types.d.ts.map +1 -1
  38. package/dist/core/types.js.map +1 -1
  39. package/dist/core/worker-pool.d.ts +27 -1
  40. package/dist/core/worker-pool.d.ts.map +1 -1
  41. package/dist/core/worker-pool.js +134 -6
  42. package/dist/core/worker-pool.js.map +1 -1
  43. package/dist/core/zellij-adopt-discovery.d.ts.map +1 -1
  44. package/dist/core/zellij-adopt-discovery.js +53 -32
  45. package/dist/core/zellij-adopt-discovery.js.map +1 -1
  46. package/dist/daemon.d.ts.map +1 -1
  47. package/dist/daemon.js +63 -1
  48. package/dist/daemon.js.map +1 -1
  49. package/dist/dashboard/bot-onboarding.d.ts +46 -3
  50. package/dist/dashboard/bot-onboarding.d.ts.map +1 -1
  51. package/dist/dashboard/bot-onboarding.js +86 -7
  52. package/dist/dashboard/bot-onboarding.js.map +1 -1
  53. package/dist/dashboard/federated-group-core.js +8 -4
  54. package/dist/dashboard/federated-group-core.js.map +1 -1
  55. package/dist/dashboard/federation-api.d.ts.map +1 -1
  56. package/dist/dashboard/federation-api.js +22 -2
  57. package/dist/dashboard/federation-api.js.map +1 -1
  58. package/dist/dashboard/web/bot-onboarding.d.ts.map +1 -1
  59. package/dist/dashboard/web/bot-onboarding.js +139 -20
  60. package/dist/dashboard/web/bot-onboarding.js.map +1 -1
  61. package/dist/dashboard/web/i18n.d.ts.map +1 -1
  62. package/dist/dashboard/web/i18n.js +36 -6
  63. package/dist/dashboard/web/i18n.js.map +1 -1
  64. package/dist/dashboard-web/app.js +171 -143
  65. package/dist/dashboard-web/style.css +58 -0
  66. package/dist/dashboard.js +37 -1
  67. package/dist/dashboard.js.map +1 -1
  68. package/dist/global-config.d.ts +5 -0
  69. package/dist/global-config.d.ts.map +1 -1
  70. package/dist/global-config.js +17 -0
  71. package/dist/global-config.js.map +1 -1
  72. package/dist/i18n/en.d.ts.map +1 -1
  73. package/dist/i18n/en.js +8 -0
  74. package/dist/i18n/en.js.map +1 -1
  75. package/dist/i18n/zh.d.ts.map +1 -1
  76. package/dist/i18n/zh.js +8 -0
  77. package/dist/i18n/zh.js.map +1 -1
  78. package/dist/im/lark/card-builder.d.ts +4 -1
  79. package/dist/im/lark/card-builder.d.ts.map +1 -1
  80. package/dist/im/lark/card-builder.js +34 -1
  81. package/dist/im/lark/card-builder.js.map +1 -1
  82. package/dist/im/lark/card-handler.d.ts.map +1 -1
  83. package/dist/im/lark/card-handler.js +72 -11
  84. package/dist/im/lark/card-handler.js.map +1 -1
  85. package/dist/im/lark/client.d.ts +3 -1
  86. package/dist/im/lark/client.d.ts.map +1 -1
  87. package/dist/im/lark/client.js +7 -2
  88. package/dist/im/lark/client.js.map +1 -1
  89. package/dist/im/lark/event-dispatcher.d.ts +8 -1
  90. package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
  91. package/dist/im/lark/event-dispatcher.js +36 -6
  92. package/dist/im/lark/event-dispatcher.js.map +1 -1
  93. package/dist/services/codex-paths.d.ts +7 -0
  94. package/dist/services/codex-paths.d.ts.map +1 -0
  95. package/dist/services/codex-paths.js +19 -0
  96. package/dist/services/codex-paths.js.map +1 -0
  97. package/dist/services/codex-transcript.d.ts.map +1 -1
  98. package/dist/services/codex-transcript.js +5 -4
  99. package/dist/services/codex-transcript.js.map +1 -1
  100. package/dist/services/pending-response-transaction-store.d.ts +12 -0
  101. package/dist/services/pending-response-transaction-store.d.ts.map +1 -0
  102. package/dist/services/pending-response-transaction-store.js +52 -0
  103. package/dist/services/pending-response-transaction-store.js.map +1 -0
  104. package/dist/services/session-store.d.ts.map +1 -1
  105. package/dist/services/session-store.js +15 -1
  106. package/dist/services/session-store.js.map +1 -1
  107. package/dist/services/voice/audio.d.ts +32 -0
  108. package/dist/services/voice/audio.d.ts.map +1 -0
  109. package/dist/services/voice/audio.js +114 -0
  110. package/dist/services/voice/audio.js.map +1 -0
  111. package/dist/services/voice/index.d.ts +32 -0
  112. package/dist/services/voice/index.d.ts.map +1 -0
  113. package/dist/services/voice/index.js +98 -0
  114. package/dist/services/voice/index.js.map +1 -0
  115. package/dist/services/voice/openai.d.ts +24 -0
  116. package/dist/services/voice/openai.d.ts.map +1 -0
  117. package/dist/services/voice/openai.js +47 -0
  118. package/dist/services/voice/openai.js.map +1 -0
  119. package/dist/services/voice/sami.d.ts +22 -0
  120. package/dist/services/voice/sami.d.ts.map +1 -0
  121. package/dist/services/voice/sami.js +128 -0
  122. package/dist/services/voice/sami.js.map +1 -0
  123. package/dist/services/voice/types.d.ts +32 -0
  124. package/dist/services/voice/types.d.ts.map +1 -0
  125. package/dist/services/voice/types.js +2 -0
  126. package/dist/services/voice/types.js.map +1 -0
  127. package/dist/setup/bot-config-editor.d.ts +9 -0
  128. package/dist/setup/bot-config-editor.d.ts.map +1 -1
  129. package/dist/setup/bot-config-editor.js +26 -0
  130. package/dist/setup/bot-config-editor.js.map +1 -1
  131. package/dist/setup/verify-permissions.js +3 -3
  132. package/dist/setup/verify-permissions.js.map +1 -1
  133. package/dist/skills/definitions.d.ts.map +1 -1
  134. package/dist/skills/definitions.js +0 -1
  135. package/dist/skills/definitions.js.map +1 -1
  136. package/dist/types.d.ts +5 -0
  137. package/dist/types.d.ts.map +1 -1
  138. package/dist/worker.js +147 -7
  139. package/dist/worker.js.map +1 -1
  140. package/dist/workflows/events/payloads.d.ts +20 -20
  141. package/dist/workflows/events/schema.d.ts +188 -188
  142. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/worker.js CHANGED
@@ -36,8 +36,9 @@ import { claudeJsonlPathForSession, resolveJsonlFromPid, findOpenClaudeSessionId
36
36
  import { mtrSessionIdForBotmuxSession } from './adapters/cli/mtr.js';
37
37
  import { TmuxBackend } from './adapters/backend/tmux-backend.js';
38
38
  import { TmuxPipeBackend } from './adapters/backend/tmux-pipe-backend.js';
39
- import { ZellijBackend } from './adapters/backend/zellij-backend.js';
39
+ import { ZellijBackend, ZELLIJ_CONFIG_KDL } from './adapters/backend/zellij-backend.js';
40
40
  import { ZellijObserveBackend } from './adapters/backend/zellij-observe-backend.js';
41
+ import { zellijEnv } from './setup/ensure-zellij.js';
41
42
  import { isObserveBackend } from './adapters/backend/types.js';
42
43
  import { selectSessionBackend } from './adapters/backend/session-backend-selector.js';
43
44
  import { tmuxEnv } from './setup/ensure-tmux.js';
@@ -71,9 +72,24 @@ let httpServer = null;
71
72
  let wss = null;
72
73
  const wsClients = new Set();
73
74
  const authedClients = new WeakSet();
74
- /** Per-WS-client tmux attach PTYs (tmux mode only). */
75
+ /** Per-WS-client tmux/zellij attach PTYs. */
75
76
  const clientPtys = new Map();
76
77
  const writeToken = randomBytes(16).toString('hex');
78
+ /** Lazily-written locked-mode zellij config for per-WS web-terminal attach
79
+ * clients: cleared keybinds + locked mode so every keystroke passes straight
80
+ * to the focused (codex) pane, never intercepted as a zellij shortcut. */
81
+ let zellijAttachCfgPath = null;
82
+ function ensureZellijAttachConfig() {
83
+ if (zellijAttachCfgPath)
84
+ return zellijAttachCfgPath;
85
+ const p = join(process.env.SESSION_DATA_DIR ?? '/tmp', '.zellij-web-attach.kdl');
86
+ try {
87
+ writeFileSync(p, ZELLIJ_CONFIG_KDL);
88
+ }
89
+ catch { /* best effort */ }
90
+ zellijAttachCfgPath = p;
91
+ return p;
92
+ }
77
93
  let sessionId = '';
78
94
  let lastInitConfig = null;
79
95
  const CLI_DISPLAY_NAMES = { 'claude-code': 'Claude', seed: 'Seed', aiden: 'Aiden', coco: 'CoCo', codex: 'Codex', 'codex-app': 'Codex App', cursor: 'Cursor', gemini: 'Gemini', opencode: 'OpenCode', antigravity: 'Antigravity', mtr: 'MTR', hermes: 'Hermes', mira: 'Mira' };
@@ -2501,7 +2517,19 @@ function scheduleSubmitFailureNotify(msg, recheck, transcriptLabel, bridgeTurnId
2501
2517
  setTimeout(async () => {
2502
2518
  if (recheck) {
2503
2519
  try {
2504
- if (await recheck()) {
2520
+ const recheckResult = await recheck();
2521
+ const recheckSubmitted = typeof recheckResult === 'boolean'
2522
+ ? recheckResult
2523
+ : recheckResult.submitted === true;
2524
+ if (recheckSubmitted) {
2525
+ const cliSessionId = typeof recheckResult === 'object' && recheckResult && typeof recheckResult.cliSessionId === 'string'
2526
+ ? recheckResult.cliSessionId
2527
+ : undefined;
2528
+ if (cliSessionId) {
2529
+ persistCliSessionId(cliSessionId);
2530
+ if (codexBridgeFallbackActive())
2531
+ codexBridgeNotifyCliSessionId(cliSessionId);
2532
+ }
2505
2533
  log(`Deferred recheck found submit in ${transcriptLabel} — suppressing warning. preview="${preview}"`);
2506
2534
  return;
2507
2535
  }
@@ -3378,6 +3406,96 @@ function startWebServer(host, preferredPort) {
3378
3406
  }
3379
3407
  });
3380
3408
  }
3409
+ else if (lastInitConfig?.adoptMode && lastInitConfig?.adoptZellijPaneId) {
3410
+ // ── Zellij-adopt per-WS attach ──
3411
+ // Each WS client gets its own `zellij attach` PTY sized to the browser.
3412
+ // zellij sizes the (shared) pane to the SMALLEST attached client, so
3413
+ // when the user's terminal is detached the web client governs the size
3414
+ // → fully browser-responsive (申晗's insight, verified), never resizing
3415
+ // the user's terminal beyond min(theirs, browser). Locked-mode config
3416
+ // (cleared keybinds) makes every keystroke reach the codex pane instead
3417
+ // of being swallowed as a zellij shortcut. Bonus: raw byte stream — none
3418
+ // of the dump-screen snapshot / \r\n / fixed-width machinery the relay
3419
+ // needs. (The Lark screenshot card still uses the dump-screen
3420
+ // ObserveBackend; unaffected.) Deferred until first resize, same as tmux.
3421
+ const zSession = lastInitConfig.adoptZellijSession ?? '';
3422
+ const cfgPath = ensureZellijAttachConfig();
3423
+ let cp = null;
3424
+ const pendingInput = [];
3425
+ // While this attach client is live, silence the ObserveBackend's
3426
+ // dump-screen/list-panes pollers: each `zellij action` they run makes the
3427
+ // server repaint every attached client, which flickers this client's
3428
+ // chrome ~2×/s. Reference-counted across browser tabs by the backend.
3429
+ const observeBe = backend instanceof ZellijObserveBackend ? backend : null;
3430
+ let attachStarted = false;
3431
+ const startAttach = (cols, rows) => {
3432
+ if (cp)
3433
+ return;
3434
+ cp = pty.spawn('zellij', ['--config', cfgPath, 'attach', zSession], {
3435
+ name: 'xterm-256color',
3436
+ cols,
3437
+ rows,
3438
+ env: zellijEnv(),
3439
+ });
3440
+ attachStarted = true;
3441
+ observeBe?.setLiveAttach(true);
3442
+ clientPtys.set(ws, cp);
3443
+ cp.onData((d) => {
3444
+ if (ws.readyState === WebSocket.OPEN)
3445
+ ws.send(d);
3446
+ });
3447
+ cp.onExit(() => {
3448
+ clientPtys.delete(ws);
3449
+ if (ws.readyState === WebSocket.OPEN)
3450
+ ws.close();
3451
+ });
3452
+ for (const data of pendingInput)
3453
+ cp.write(data);
3454
+ pendingInput.length = 0;
3455
+ };
3456
+ const spawnTimer = setTimeout(() => startAttach(150, 40), 500);
3457
+ ws.on('message', (raw) => {
3458
+ try {
3459
+ const msg = JSON.parse(String(raw));
3460
+ if (msg.type === 'resize' && msg.cols > 0 && msg.rows > 0) {
3461
+ if (!cp) {
3462
+ clearTimeout(spawnTimer);
3463
+ startAttach(msg.cols, msg.rows);
3464
+ }
3465
+ else
3466
+ cp.resize(msg.cols, msg.rows);
3467
+ }
3468
+ else if (msg.type === 'input' && typeof msg.data === 'string') {
3469
+ if (!authedClients.has(ws)) {
3470
+ // Read-only: only let mouse events (scroll/select) through.
3471
+ if (!/^\x1b\[([<M])/.test(msg.data))
3472
+ return;
3473
+ }
3474
+ if (cp)
3475
+ cp.write(msg.data);
3476
+ else
3477
+ pendingInput.push(msg.data);
3478
+ }
3479
+ }
3480
+ catch { /* ignore non-JSON or bad messages */ }
3481
+ });
3482
+ ws.on('close', () => {
3483
+ clearTimeout(spawnTimer);
3484
+ wsClients.delete(ws);
3485
+ if (attachStarted) {
3486
+ observeBe?.setLiveAttach(false);
3487
+ attachStarted = false;
3488
+ }
3489
+ const existing = clientPtys.get(ws);
3490
+ if (existing) {
3491
+ try {
3492
+ existing.kill();
3493
+ }
3494
+ catch { /* already dead */ }
3495
+ clientPtys.delete(ws);
3496
+ }
3497
+ });
3498
+ }
3381
3499
  else {
3382
3500
  // ── Shared relay (PtyBackend OR tmux pipe mode) ──
3383
3501
  // History seed: prefer tmux's authoritative capture-pane in pipe mode
@@ -3591,9 +3709,24 @@ term.onData(function(d){
3591
3709
  }
3592
3710
  if(ws_&&ws_.readyState===1)ws_.send(JSON.stringify({type:'input',data:d}));
3593
3711
  });
3594
- var fixedSize=false;
3595
- function sendResize(){if(ws_&&ws_.readyState===1)ws_.send(JSON.stringify({type:'resize',cols:term.cols,rows:term.rows}))}
3596
- window.addEventListener('resize',function(){if(!fixedSize){fit.fit()}sendResize()});
3712
+ var fixedSize=false,_lastC=0,_lastR=0,_rzT=0;
3713
+ function sendResize(){
3714
+ if(!ws_||ws_.readyState!==1)return;
3715
+ // Dedup: a fit that lands on the same grid must NOT re-emit a resize — for a
3716
+ // zellij/tmux attach client that would reflow the shared pane for nothing.
3717
+ if(term.cols===_lastC&&term.rows===_lastR)return;
3718
+ _lastC=term.cols;_lastR=term.rows;
3719
+ ws_.send(JSON.stringify({type:'resize',cols:term.cols,rows:term.rows}));
3720
+ }
3721
+ // Debounce viewport resize: mobile fires a burst of window.resize as the address
3722
+ // bar / on-screen keyboard show & hide, and an un-debounced fit→resize on each
3723
+ // reflows the (shared) zellij pane every frame — the status bar toggles and the
3724
+ // text re-wraps, i.e. the flicker 申晗 saw. Coalesce to the settled size.
3725
+ function onViewportResize(){
3726
+ clearTimeout(_rzT);
3727
+ _rzT=setTimeout(function(){if(!fixedSize){try{fit.fit()}catch(e){}}sendResize()},250);
3728
+ }
3729
+ window.addEventListener('resize',onViewportResize);
3597
3730
  (function connect(){
3598
3731
  var t=new URLSearchParams(location.search).get('token')||'';
3599
3732
  // Derive base from the current path so the WS connects to the same prefix the
@@ -3603,7 +3736,14 @@ window.addEventListener('resize',function(){if(!fixedSize){fit.fit()}sendResize(
3603
3736
  var proto=location.protocol==='https:'?'wss':'ws';
3604
3737
  var ws=new WebSocket(proto+'://'+location.host+base+'/?token='+t);
3605
3738
  ws_=ws;ws.binaryType='arraybuffer';
3606
- ws.onopen=function(){el.textContent='connected';el.className='ok';sendResize()};
3739
+ // Force a resize on every (re)connect: clear the dedup memory first. On
3740
+ // reconnect the browser grid is usually unchanged, so without this the
3741
+ // dedup in sendResize() would suppress the resize — but a reconnect often
3742
+ // means the server respawned the CLI PTY at the default 160x50 (daemon
3743
+ // restart). If we never re-send our real grid, the PTY stays 160 while this
3744
+ // xterm renders narrower, and Claude's height-relative redraws drift a row
3745
+ // (status-line update bleeds into the line below). Always re-assert size.
3746
+ ws.onopen=function(){el.textContent='connected';el.className='ok';_lastC=_lastR=0;sendResize()};
3607
3747
  ws.onmessage=function(e){
3608
3748
  var data=typeof e.data==='string'?e.data:new TextDecoder().decode(e.data);
3609
3749
  // botmux OSC 1989: pin the xterm to the adopted pane's fixed size (the pane