botmux 3.0.0 → 3.1.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.
Files changed (220) hide show
  1. package/dist/adapters/backend/herdr-backend.d.ts +9 -7
  2. package/dist/adapters/backend/herdr-backend.d.ts.map +1 -1
  3. package/dist/adapters/backend/herdr-backend.js +63 -53
  4. package/dist/adapters/backend/herdr-backend.js.map +1 -1
  5. package/dist/adapters/backend/riff-backend.d.ts +6 -1
  6. package/dist/adapters/backend/riff-backend.d.ts.map +1 -1
  7. package/dist/adapters/backend/riff-backend.js +7 -2
  8. package/dist/adapters/backend/riff-backend.js.map +1 -1
  9. package/dist/adapters/backend/sandbox.d.ts +20 -16
  10. package/dist/adapters/backend/sandbox.d.ts.map +1 -1
  11. package/dist/adapters/backend/sandbox.js +193 -68
  12. package/dist/adapters/backend/sandbox.js.map +1 -1
  13. package/dist/adapters/backend/tmux-backend.d.ts +39 -2
  14. package/dist/adapters/backend/tmux-backend.d.ts.map +1 -1
  15. package/dist/adapters/backend/tmux-backend.js +66 -6
  16. package/dist/adapters/backend/tmux-backend.js.map +1 -1
  17. package/dist/adapters/backend/tmux-pipe-backend.js +2 -2
  18. package/dist/adapters/backend/tmux-pipe-backend.js.map +1 -1
  19. package/dist/adapters/backend/zellij-backend.d.ts.map +1 -1
  20. package/dist/adapters/backend/zellij-backend.js +9 -3
  21. package/dist/adapters/backend/zellij-backend.js.map +1 -1
  22. package/dist/adapters/cli/claude-code.d.ts +25 -0
  23. package/dist/adapters/cli/claude-code.d.ts.map +1 -1
  24. package/dist/adapters/cli/claude-code.js +79 -9
  25. package/dist/adapters/cli/claude-code.js.map +1 -1
  26. package/dist/adapters/cli/read-isolation.d.ts +2 -1
  27. package/dist/adapters/cli/read-isolation.d.ts.map +1 -1
  28. package/dist/adapters/cli/read-isolation.js.map +1 -1
  29. package/dist/adapters/cli/types.d.ts +2 -2
  30. package/dist/adapters/hook-installer.d.ts +11 -0
  31. package/dist/adapters/hook-installer.d.ts.map +1 -1
  32. package/dist/adapters/hook-installer.js +72 -11
  33. package/dist/adapters/hook-installer.js.map +1 -1
  34. package/dist/cli.d.ts.map +1 -1
  35. package/dist/cli.js +15 -4
  36. package/dist/cli.js.map +1 -1
  37. package/dist/config.d.ts +6 -0
  38. package/dist/config.d.ts.map +1 -1
  39. package/dist/config.js +18 -0
  40. package/dist/config.js.map +1 -1
  41. package/dist/core/command-handler.d.ts.map +1 -1
  42. package/dist/core/command-handler.js +354 -143
  43. package/dist/core/command-handler.js.map +1 -1
  44. package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
  45. package/dist/core/dashboard-ipc-server.js +12 -5
  46. package/dist/core/dashboard-ipc-server.js.map +1 -1
  47. package/dist/core/dashboard-rows.d.ts +5 -0
  48. package/dist/core/dashboard-rows.d.ts.map +1 -1
  49. package/dist/core/dashboard-rows.js +2 -0
  50. package/dist/core/dashboard-rows.js.map +1 -1
  51. package/dist/core/doc-comment-prompt.d.ts +2 -0
  52. package/dist/core/doc-comment-prompt.d.ts.map +1 -1
  53. package/dist/core/doc-comment-prompt.js +30 -0
  54. package/dist/core/doc-comment-prompt.js.map +1 -1
  55. package/dist/core/github-auth.d.ts +8 -0
  56. package/dist/core/github-auth.d.ts.map +1 -0
  57. package/dist/core/github-auth.js +44 -0
  58. package/dist/core/github-auth.js.map +1 -0
  59. package/dist/core/managed-origin-capability.d.ts +7 -0
  60. package/dist/core/managed-origin-capability.d.ts.map +1 -1
  61. package/dist/core/managed-origin-capability.js +12 -0
  62. package/dist/core/managed-origin-capability.js.map +1 -1
  63. package/dist/core/passthrough-commands.d.ts.map +1 -1
  64. package/dist/core/passthrough-commands.js +1 -1
  65. package/dist/core/passthrough-commands.js.map +1 -1
  66. package/dist/core/restart-report.d.ts +7 -1
  67. package/dist/core/restart-report.d.ts.map +1 -1
  68. package/dist/core/restart-report.js +19 -5
  69. package/dist/core/restart-report.js.map +1 -1
  70. package/dist/core/session-activity.d.ts +8 -0
  71. package/dist/core/session-activity.d.ts.map +1 -1
  72. package/dist/core/session-activity.js +16 -0
  73. package/dist/core/session-activity.js.map +1 -1
  74. package/dist/core/session-discovery.d.ts.map +1 -1
  75. package/dist/core/session-discovery.js +4 -2
  76. package/dist/core/session-discovery.js.map +1 -1
  77. package/dist/core/session-marker.d.ts.map +1 -1
  78. package/dist/core/session-marker.js +5 -2
  79. package/dist/core/session-marker.js.map +1 -1
  80. package/dist/core/types.d.ts +48 -0
  81. package/dist/core/types.d.ts.map +1 -1
  82. package/dist/core/types.js +55 -0
  83. package/dist/core/types.js.map +1 -1
  84. package/dist/core/update-check.d.ts +11 -0
  85. package/dist/core/update-check.d.ts.map +1 -1
  86. package/dist/core/update-check.js +6 -1
  87. package/dist/core/update-check.js.map +1 -1
  88. package/dist/core/vc-meeting-prepare-command.d.ts +22 -0
  89. package/dist/core/vc-meeting-prepare-command.d.ts.map +1 -0
  90. package/dist/core/vc-meeting-prepare-command.js +50 -0
  91. package/dist/core/vc-meeting-prepare-command.js.map +1 -0
  92. package/dist/core/worker-pool.d.ts.map +1 -1
  93. package/dist/core/worker-pool.js +21 -10
  94. package/dist/core/worker-pool.js.map +1 -1
  95. package/dist/daemon.d.ts +15 -5
  96. package/dist/daemon.d.ts.map +1 -1
  97. package/dist/daemon.js +645 -50
  98. package/dist/daemon.js.map +1 -1
  99. package/dist/dashboard/web/bot-defaults-page.d.ts.map +1 -1
  100. package/dist/dashboard/web/bot-defaults-page.js +6 -1
  101. package/dist/dashboard/web/bot-defaults-page.js.map +1 -1
  102. package/dist/dashboard/web/i18n.d.ts.map +1 -1
  103. package/dist/dashboard/web/i18n.js +34 -0
  104. package/dist/dashboard/web/i18n.js.map +1 -1
  105. package/dist/dashboard/web/preferences.d.ts +1 -1
  106. package/dist/dashboard/web/preferences.d.ts.map +1 -1
  107. package/dist/dashboard/web/preferences.js +1 -1
  108. package/dist/dashboard/web/preferences.js.map +1 -1
  109. package/dist/dashboard/web/sessions-page.d.ts +19 -0
  110. package/dist/dashboard/web/sessions-page.d.ts.map +1 -1
  111. package/dist/dashboard/web/sessions-page.js +66 -7
  112. package/dist/dashboard/web/sessions-page.js.map +1 -1
  113. package/dist/dashboard/web/sessions.d.ts +31 -0
  114. package/dist/dashboard/web/sessions.d.ts.map +1 -1
  115. package/dist/dashboard/web/sessions.js +82 -0
  116. package/dist/dashboard/web/sessions.js.map +1 -1
  117. package/dist/dashboard-web/app.js +1 -1
  118. package/dist/dashboard-web/chunks/{bot-defaults-page-MBORWWP7.js → bot-defaults-page-KLDCZNLP.js} +5 -5
  119. package/dist/dashboard-web/chunks/{chunk-G43RUPUN.js → chunk-EZAW2EPM.js} +1 -1
  120. package/dist/dashboard-web/chunks/{chunk-EIO5AWDA.js → chunk-FMJNOATE.js} +1 -1
  121. package/dist/dashboard-web/chunks/{chunk-4QTBR7UF.js → chunk-KEAOTUL3.js} +7 -7
  122. package/dist/dashboard-web/chunks/{chunk-7STGZ5BX.js → chunk-MLNI5BKE.js} +1 -1
  123. package/dist/dashboard-web/chunks/{connectors-page-LKDT4WBG.js → connectors-page-O32LFAL5.js} +1 -1
  124. package/dist/dashboard-web/chunks/{groups-page-XKIWJ2TP.js → groups-page-PSAFIZ6M.js} +1 -1
  125. package/dist/dashboard-web/chunks/{insights-page-CBEZCYKV.js → insights-page-V23LLATX.js} +1 -1
  126. package/dist/dashboard-web/chunks/{monitor-room-AQTHAWXA.js → monitor-room-7X5AKYOF.js} +1 -1
  127. package/dist/dashboard-web/chunks/{monitoring-page-2R4NCNBQ.js → monitoring-page-CBA3CQYL.js} +1 -1
  128. package/dist/dashboard-web/chunks/{office-page-5M6MQIIL.js → office-page-RL6QSEM7.js} +1 -1
  129. package/dist/dashboard-web/chunks/{overview-page-N22HDZ2V.js → overview-page-XQIPO6KH.js} +1 -1
  130. package/dist/dashboard-web/chunks/{roles-page-J6K2HWFX.js → roles-page-ACIWV7QS.js} +1 -1
  131. package/dist/dashboard-web/chunks/{schedules-page-CGAQCB4J.js → schedules-page-KJDUKOJV.js} +1 -1
  132. package/dist/dashboard-web/chunks/sessions-page-2WDWHSP4.js +3 -0
  133. package/dist/dashboard-web/chunks/{settings-page-GLRWV5KU.js → settings-page-6VX4OUGG.js} +1 -1
  134. package/dist/dashboard-web/chunks/{skills-page-KQVW42QU.js → skills-page-WXE3UYLT.js} +1 -1
  135. package/dist/dashboard-web/chunks/{team-federation-page-5PYUOV5M.js → team-federation-page-PYTF4FLM.js} +1 -1
  136. package/dist/dashboard-web/chunks/{v3-page-DXPFILRZ.js → v3-page-G6CD6O3I.js} +1 -1
  137. package/dist/dashboard-web/chunks/{whiteboards-page-NUH6VZ4I.js → whiteboards-page-6SG33GP4.js} +1 -1
  138. package/dist/dashboard-web/style.css +167 -2
  139. package/dist/i18n/en.d.ts.map +1 -1
  140. package/dist/i18n/en.js +19 -3
  141. package/dist/i18n/en.js.map +1 -1
  142. package/dist/i18n/zh.d.ts.map +1 -1
  143. package/dist/i18n/zh.js +19 -3
  144. package/dist/i18n/zh.js.map +1 -1
  145. package/dist/im/lark/card-builder.d.ts.map +1 -1
  146. package/dist/im/lark/card-builder.js +11 -2
  147. package/dist/im/lark/card-builder.js.map +1 -1
  148. package/dist/im/lark/card-handler.d.ts +2 -0
  149. package/dist/im/lark/card-handler.d.ts.map +1 -1
  150. package/dist/im/lark/card-handler.js +219 -139
  151. package/dist/im/lark/card-handler.js.map +1 -1
  152. package/dist/im/lark/event-dispatcher.d.ts +4 -0
  153. package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
  154. package/dist/im/lark/event-dispatcher.js +249 -5
  155. package/dist/im/lark/event-dispatcher.js.map +1 -1
  156. package/dist/im/lark/forward-followup-buffer.d.ts +26 -0
  157. package/dist/im/lark/forward-followup-buffer.d.ts.map +1 -0
  158. package/dist/im/lark/forward-followup-buffer.js +48 -0
  159. package/dist/im/lark/forward-followup-buffer.js.map +1 -0
  160. package/dist/im/lark/forward-followup-content.d.ts +6 -0
  161. package/dist/im/lark/forward-followup-content.d.ts.map +1 -0
  162. package/dist/im/lark/forward-followup-content.js +46 -0
  163. package/dist/im/lark/forward-followup-content.js.map +1 -0
  164. package/dist/im/lark/forward-followup-store.d.ts +9 -0
  165. package/dist/im/lark/forward-followup-store.d.ts.map +1 -0
  166. package/dist/im/lark/forward-followup-store.js +48 -0
  167. package/dist/im/lark/forward-followup-store.js.map +1 -0
  168. package/dist/im/lark/message-parser.d.ts +1 -1
  169. package/dist/im/lark/message-parser.d.ts.map +1 -1
  170. package/dist/im/lark/message-parser.js +1 -2
  171. package/dist/im/lark/message-parser.js.map +1 -1
  172. package/dist/platform/tunnel-client.js +3 -3
  173. package/dist/platform/tunnel-client.js.map +1 -1
  174. package/dist/services/local-cli-opener.d.ts +7 -0
  175. package/dist/services/local-cli-opener.d.ts.map +1 -1
  176. package/dist/services/local-cli-opener.js +111 -3
  177. package/dist/services/local-cli-opener.js.map +1 -1
  178. package/dist/services/skill-registry-store.d.ts.map +1 -1
  179. package/dist/services/skill-registry-store.js +15 -2
  180. package/dist/services/skill-registry-store.js.map +1 -1
  181. package/dist/services/vc-meeting-consumer-isolation.d.ts +7 -5
  182. package/dist/services/vc-meeting-consumer-isolation.d.ts.map +1 -1
  183. package/dist/services/vc-meeting-consumer-isolation.js +7 -5
  184. package/dist/services/vc-meeting-consumer-isolation.js.map +1 -1
  185. package/dist/services/vc-meeting-preparations-store.d.ts +22 -0
  186. package/dist/services/vc-meeting-preparations-store.d.ts.map +1 -0
  187. package/dist/services/vc-meeting-preparations-store.js +131 -0
  188. package/dist/services/vc-meeting-preparations-store.js.map +1 -0
  189. package/dist/services/vc-meeting-runtime-store.d.ts +9 -0
  190. package/dist/services/vc-meeting-runtime-store.d.ts.map +1 -1
  191. package/dist/services/vc-meeting-runtime-store.js +16 -0
  192. package/dist/services/vc-meeting-runtime-store.js.map +1 -1
  193. package/dist/setup/ensure-tmux.d.ts.map +1 -1
  194. package/dist/setup/ensure-tmux.js +9 -11
  195. package/dist/setup/ensure-tmux.js.map +1 -1
  196. package/dist/types.d.ts +2 -0
  197. package/dist/types.d.ts.map +1 -1
  198. package/dist/utils/child-env.d.ts +24 -8
  199. package/dist/utils/child-env.d.ts.map +1 -1
  200. package/dist/utils/child-env.js +49 -8
  201. package/dist/utils/child-env.js.map +1 -1
  202. package/dist/utils/daemon-discovery.d.ts +8 -0
  203. package/dist/utils/daemon-discovery.d.ts.map +1 -1
  204. package/dist/utils/daemon-discovery.js +19 -0
  205. package/dist/utils/daemon-discovery.js.map +1 -1
  206. package/dist/utils/ready-gate.d.ts +9 -3
  207. package/dist/utils/ready-gate.d.ts.map +1 -1
  208. package/dist/utils/ready-gate.js +12 -4
  209. package/dist/utils/ready-gate.js.map +1 -1
  210. package/dist/worker.js +141 -29
  211. package/dist/worker.js.map +1 -1
  212. package/dist/workflows/ops-projection.d.ts.map +1 -1
  213. package/dist/workflows/ops-projection.js +27 -5
  214. package/dist/workflows/ops-projection.js.map +1 -1
  215. package/dist/workflows/v3/distillation-runner.d.ts +4 -0
  216. package/dist/workflows/v3/distillation-runner.d.ts.map +1 -1
  217. package/dist/workflows/v3/distillation-runner.js +4 -2
  218. package/dist/workflows/v3/distillation-runner.js.map +1 -1
  219. package/package.json +1 -1
  220. package/dist/dashboard-web/chunks/sessions-page-WJ2QYTIE.js +0 -3
@@ -80,6 +80,13 @@ const __filename = fileURLToPath(import.meta.url);
80
80
  const __dirname = dirname(__filename);
81
81
  const WORKER_SIGTERM_BACKSTOP_MS = 2_000;
82
82
  const WORKER_SIGKILL_BACKSTOP_MS = 7_000;
83
+ const WORKER_REDACTED_ENV_KEYS = ['GITHUB_TOKEN', 'GH_TOKEN'];
84
+ function workerForkEnv(base) {
85
+ const env = { ...base };
86
+ for (const key of WORKER_REDACTED_ENV_KEYS)
87
+ delete env[key];
88
+ return env;
89
+ }
83
90
  let callbacks;
84
91
  /**
85
92
  * Initialise worker-pool callbacks. Must be called once before forkWorker().
@@ -1650,14 +1657,12 @@ export function forkWorker(ds, promptInput, resumeOrTurnId = false) {
1650
1657
  else {
1651
1658
  resume = resumeOrTurnId;
1652
1659
  }
1653
- // An empty prompt is a pure worker reattach/restore, not a newly accepted
1654
- // user turn. Never inherit the previous reply target in that case: doing so
1655
- // would re-publish stale per-turn authority (notably an explicit meeting IM
1656
- // origin) into a fresh worker lifetime after a daemon restart. Non-empty
1657
- // prompts keep the historical fallback for callers that accepted a turn
1658
- // before they learned to pass its id explicitly.
1659
- const initAttributionTurnId = initTurnId
1660
- ?? (prompt.length > 0 ? ds.currentReplyTarget?.turnId : undefined);
1660
+ // Per-turn authority is never inferred from mutable session state. Human
1661
+ // message routes pass their accepted Lark message id explicitly; restore,
1662
+ // scheduler, card retry and other system starts stay unattributed. Falling
1663
+ // back to currentReplyTarget here would let a later system prompt reuse an
1664
+ // older human turn after a worker replacement.
1665
+ const initAttributionTurnId = initTurnId;
1661
1666
  // A fork() whose cwd no longer exists emits an unhandled 'error' (spawn
1662
1667
  // ENOENT) that crashes the WHOLE daemon (→ pm2 crash-loop). Fall back to
1663
1668
  // home so a stale session workingDir can never take the daemon down.
@@ -1756,12 +1761,13 @@ export function forkWorker(ds, promptInput, resumeOrTurnId = false) {
1756
1761
  // The wrapper script there is written by the daemon at startup.
1757
1762
  const botmuxBinDir = join(homedir(), '.botmux', 'bin');
1758
1763
  const pathWithBotmux = prependBotmuxBin(botmuxBinDir, process.env.PATH);
1764
+ const forkEnv = workerForkEnv(process.env);
1759
1765
  const worker = fork(workerPath, [], {
1760
1766
  windowsHide: true,
1761
1767
  stdio: ['ignore', 'pipe', 'pipe', 'ipc'],
1762
1768
  cwd,
1763
1769
  env: {
1764
- ...process.env,
1770
+ ...forkEnv,
1765
1771
  PATH: pathWithBotmux,
1766
1772
  CLAUDECODE: undefined,
1767
1773
  BOTMUX: '1', // Marker so user scripts/skills can detect a botmux-spawned CLI
@@ -2232,6 +2238,8 @@ function setupWorkerHandlers(ds, worker, startupState = { ready: false, failureN
2232
2238
  if (ds.pendingRawInput && ds.worker && !ds.worker.killed) {
2233
2239
  const rawInput = ds.pendingRawInput;
2234
2240
  ds.pendingRawInput = undefined;
2241
+ const rawTurnId = ds.pendingRawTurnId;
2242
+ ds.pendingRawTurnId = undefined;
2235
2243
  // Input buffered while the repo card was pending rides on the SAME
2236
2244
  // IPC: worker message handlers run concurrently (async handlers
2237
2245
  // don't serialize), so a separate `message` IPC could write into
@@ -2245,7 +2253,9 @@ function setupWorkerHandlers(ds, worker, startupState = { ready: false, failureN
2245
2253
  ds.worker.send({
2246
2254
  type: 'raw_input',
2247
2255
  content: rawInput,
2256
+ ...(rawTurnId ? { turnId: rawTurnId } : {}),
2248
2257
  followUpContent: followUp?.cliInput,
2258
+ ...(followUp?.turnId ? { followUpTurnId: followUp.turnId } : {}),
2249
2259
  ...(followUpCodexAppInput ? { followUpCodexAppInput } : {}),
2250
2260
  });
2251
2261
  logger.info(`[${t}] Sent pending raw input after prompt_ready: ${rawInput.substring(0, 80)}${followUp ? ` (+follow-up ${followUp.cliInput.length} chars)` : ''}`);
@@ -3274,12 +3284,13 @@ export function forkAdoptWorker(ds, opts) {
3274
3284
  const adoptCwd = rawAdoptCwd && existsSync(rawAdoptCwd) ? rawAdoptCwd : homedir();
3275
3285
  if (adoptCwd !== rawAdoptCwd)
3276
3286
  logger.warn(`[${t}] adopt cwd "${rawAdoptCwd}" does not exist — falling back to ${adoptCwd}`);
3287
+ const forkEnv = workerForkEnv(process.env);
3277
3288
  const worker = fork(workerPath, [], {
3278
3289
  windowsHide: true,
3279
3290
  stdio: ['ignore', 'pipe', 'pipe', 'ipc'],
3280
3291
  cwd: adoptCwd,
3281
3292
  env: {
3282
- ...process.env,
3293
+ ...forkEnv,
3283
3294
  CLAUDECODE: undefined,
3284
3295
  BOTMUX: '1',
3285
3296
  LARK_APP_ID: botCfg.larkAppId,