botmux 2.86.0 → 2.87.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 (141) hide show
  1. package/README.en.md +26 -0
  2. package/README.md +26 -0
  3. package/dist/adapters/backend/herdr-backend.d.ts.map +1 -1
  4. package/dist/adapters/backend/herdr-backend.js +12 -1
  5. package/dist/adapters/backend/herdr-backend.js.map +1 -1
  6. package/dist/adapters/backend/pty-backend.d.ts.map +1 -1
  7. package/dist/adapters/backend/pty-backend.js +4 -1
  8. package/dist/adapters/backend/pty-backend.js.map +1 -1
  9. package/dist/adapters/backend/tmux-backend.d.ts +1 -1
  10. package/dist/adapters/backend/tmux-backend.d.ts.map +1 -1
  11. package/dist/adapters/backend/tmux-backend.js +22 -9
  12. package/dist/adapters/backend/tmux-backend.js.map +1 -1
  13. package/dist/adapters/backend/tmux-pipe-backend.js +1 -1
  14. package/dist/adapters/backend/tmux-pipe-backend.js.map +1 -1
  15. package/dist/adapters/backend/types.d.ts +9 -0
  16. package/dist/adapters/backend/types.d.ts.map +1 -1
  17. package/dist/adapters/backend/types.js.map +1 -1
  18. package/dist/adapters/backend/zellij-backend.js +1 -1
  19. package/dist/adapters/backend/zellij-backend.js.map +1 -1
  20. package/dist/adapters/cli/codex.d.ts.map +1 -1
  21. package/dist/adapters/cli/codex.js +8 -5
  22. package/dist/adapters/cli/codex.js.map +1 -1
  23. package/dist/adapters/cli/shared-hints.d.ts +2 -1
  24. package/dist/adapters/cli/shared-hints.d.ts.map +1 -1
  25. package/dist/adapters/cli/shared-hints.js +25 -3
  26. package/dist/adapters/cli/shared-hints.js.map +1 -1
  27. package/dist/bot-registry.d.ts +10 -0
  28. package/dist/bot-registry.d.ts.map +1 -1
  29. package/dist/bot-registry.js +6 -0
  30. package/dist/bot-registry.js.map +1 -1
  31. package/dist/cli.d.ts.map +1 -1
  32. package/dist/cli.js +362 -16
  33. package/dist/cli.js.map +1 -1
  34. package/dist/core/command-handler.d.ts.map +1 -1
  35. package/dist/core/command-handler.js +6 -4
  36. package/dist/core/command-handler.js.map +1 -1
  37. package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
  38. package/dist/core/dashboard-ipc-server.js +45 -0
  39. package/dist/core/dashboard-ipc-server.js.map +1 -1
  40. package/dist/core/maintenance.d.ts +18 -0
  41. package/dist/core/maintenance.d.ts.map +1 -1
  42. package/dist/core/maintenance.js +58 -30
  43. package/dist/core/maintenance.js.map +1 -1
  44. package/dist/core/per-bot-env.d.ts +38 -0
  45. package/dist/core/per-bot-env.d.ts.map +1 -0
  46. package/dist/core/per-bot-env.js +79 -0
  47. package/dist/core/per-bot-env.js.map +1 -0
  48. package/dist/core/session-manager.d.ts +3 -0
  49. package/dist/core/session-manager.d.ts.map +1 -1
  50. package/dist/core/session-manager.js +70 -6
  51. package/dist/core/session-manager.js.map +1 -1
  52. package/dist/core/skills/discovery.d.ts +7 -0
  53. package/dist/core/skills/discovery.d.ts.map +1 -1
  54. package/dist/core/skills/discovery.js +51 -0
  55. package/dist/core/skills/discovery.js.map +1 -1
  56. package/dist/core/trigger-session.d.ts.map +1 -1
  57. package/dist/core/trigger-session.js +5 -2
  58. package/dist/core/trigger-session.js.map +1 -1
  59. package/dist/core/update-check.d.ts +67 -0
  60. package/dist/core/update-check.d.ts.map +1 -0
  61. package/dist/core/update-check.js +159 -0
  62. package/dist/core/update-check.js.map +1 -0
  63. package/dist/core/worker-pool.d.ts.map +1 -1
  64. package/dist/core/worker-pool.js +4 -0
  65. package/dist/core/worker-pool.js.map +1 -1
  66. package/dist/daemon.d.ts.map +1 -1
  67. package/dist/daemon.js +29 -6
  68. package/dist/daemon.js.map +1 -1
  69. package/dist/dashboard/bot-payload.d.ts +1 -0
  70. package/dist/dashboard/bot-payload.d.ts.map +1 -1
  71. package/dist/dashboard/bot-payload.js +1 -0
  72. package/dist/dashboard/bot-payload.js.map +1 -1
  73. package/dist/dashboard/skill-install-request.d.ts +10 -0
  74. package/dist/dashboard/skill-install-request.d.ts.map +1 -1
  75. package/dist/dashboard/skill-install-request.js +17 -0
  76. package/dist/dashboard/skill-install-request.js.map +1 -1
  77. package/dist/dashboard/web/app.d.ts.map +1 -1
  78. package/dist/dashboard/web/app.js +29 -1
  79. package/dist/dashboard/web/app.js.map +1 -1
  80. package/dist/dashboard/web/bot-defaults.d.ts.map +1 -1
  81. package/dist/dashboard/web/bot-defaults.js +62 -1
  82. package/dist/dashboard/web/bot-defaults.js.map +1 -1
  83. package/dist/dashboard/web/i18n.d.ts.map +1 -1
  84. package/dist/dashboard/web/i18n.js +128 -0
  85. package/dist/dashboard/web/i18n.js.map +1 -1
  86. package/dist/dashboard/web/settings.d.ts.map +1 -1
  87. package/dist/dashboard/web/settings.js +289 -0
  88. package/dist/dashboard/web/settings.js.map +1 -1
  89. package/dist/dashboard/web/skills.d.ts.map +1 -1
  90. package/dist/dashboard/web/skills.js +183 -10
  91. package/dist/dashboard/web/skills.js.map +1 -1
  92. package/dist/dashboard/web/whiteboards.d.ts +2 -0
  93. package/dist/dashboard/web/whiteboards.d.ts.map +1 -0
  94. package/dist/dashboard/web/whiteboards.js +267 -0
  95. package/dist/dashboard/web/whiteboards.js.map +1 -0
  96. package/dist/dashboard-web/app.js +774 -613
  97. package/dist/dashboard-web/index.html +1 -0
  98. package/dist/dashboard-web/style.css +271 -1
  99. package/dist/dashboard.js +259 -3
  100. package/dist/dashboard.js.map +1 -1
  101. package/dist/global-config.d.ts +6 -0
  102. package/dist/global-config.d.ts.map +1 -1
  103. package/dist/global-config.js +12 -0
  104. package/dist/global-config.js.map +1 -1
  105. package/dist/im/lark/card-handler.d.ts.map +1 -1
  106. package/dist/im/lark/card-handler.js +7 -3
  107. package/dist/im/lark/card-handler.js.map +1 -1
  108. package/dist/services/bot-config-store.d.ts.map +1 -1
  109. package/dist/services/bot-config-store.js +19 -0
  110. package/dist/services/bot-config-store.js.map +1 -1
  111. package/dist/services/resumable-session-discovery.d.ts.map +1 -1
  112. package/dist/services/resumable-session-discovery.js +21 -4
  113. package/dist/services/resumable-session-discovery.js.map +1 -1
  114. package/dist/services/skill-registry-store.d.ts +1 -0
  115. package/dist/services/skill-registry-store.d.ts.map +1 -1
  116. package/dist/services/skill-registry-store.js +32 -0
  117. package/dist/services/skill-registry-store.js.map +1 -1
  118. package/dist/services/whiteboard-store.d.ts +67 -0
  119. package/dist/services/whiteboard-store.d.ts.map +1 -0
  120. package/dist/services/whiteboard-store.js +450 -0
  121. package/dist/services/whiteboard-store.js.map +1 -0
  122. package/dist/setup/bot-config-editor.d.ts +8 -0
  123. package/dist/setup/bot-config-editor.d.ts.map +1 -1
  124. package/dist/setup/bot-config-editor.js +9 -0
  125. package/dist/setup/bot-config-editor.js.map +1 -1
  126. package/dist/skills/definitions.d.ts.map +1 -1
  127. package/dist/skills/definitions.js +118 -0
  128. package/dist/skills/definitions.js.map +1 -1
  129. package/dist/types.d.ts +3 -0
  130. package/dist/types.d.ts.map +1 -1
  131. package/dist/utils/install-diagnostics.d.ts +52 -0
  132. package/dist/utils/install-diagnostics.d.ts.map +1 -0
  133. package/dist/utils/install-diagnostics.js +155 -0
  134. package/dist/utils/install-diagnostics.js.map +1 -0
  135. package/dist/utils/install-info.d.ts +4 -0
  136. package/dist/utils/install-info.d.ts.map +1 -1
  137. package/dist/utils/install-info.js +6 -0
  138. package/dist/utils/install-info.js.map +1 -1
  139. package/dist/worker.js +12 -0
  140. package/dist/worker.js.map +1 -1
  141. package/package.json +1 -1
package/dist/worker.js CHANGED
@@ -23,6 +23,7 @@ import { shouldWriteNow } from './utils/input-gate.js';
23
23
  import { mergeQueuedCliInput } from './utils/pending-input-queue.js';
24
24
  import { ReadyGate, shouldArmReadyGate } from './utils/ready-gate.js';
25
25
  import { shouldRunStartupCommandsOnSpawn, shouldDeferInitialPromptForStartup } from './core/startup-commands.js';
26
+ import { sanitizePerBotEnv } from './core/per-bot-env.js';
26
27
  import { InflightInputTracker } from './core/inflight-input-tracker.js';
27
28
  import { shouldRunQuietRotation, evaluatePidResolverPullback, decideFingerprintSwitch, shouldHealAbsentBaseline, sessionIdFromJsonlPath, SESSION_ID_FILENAME_RE, } from './services/bridge-rotation-policy.js';
28
29
  import { CodexBridgeQueue } from './services/codex-bridge-queue.js';
@@ -4063,6 +4064,16 @@ function spawnCli(cfg) {
4063
4064
  // them past the server's global env.
4064
4065
  if (cliAdapter.spawnEnv)
4065
4066
  Object.assign(childEnv, cliAdapter.spawnEnv);
4067
+ // Per-bot env (bots.json `env`): extra vars for THIS bot's CLI only — e.g.
4068
+ // ANTHROPIC_BASE_URL/ANTHROPIC_AUTH_TOKEN to run a bot on GLM/a 3rd-party
4069
+ // provider, an HTTPS_PROXY, or a CLI feature flag. Passed as injectEnv (NOT
4070
+ // merged into childEnv) so the tmux/zellij backends inject it via the per-pane
4071
+ // `/usr/bin/env` prefix and never into the shared backing-server global env,
4072
+ // keeping it from leaking across bots. Re-sanitized here (crossed IPC).
4073
+ const perBotInjectEnv = sanitizePerBotEnv(cfg.env);
4074
+ const perBotInjectKeys = Object.keys(perBotInjectEnv);
4075
+ if (perBotInjectKeys.length)
4076
+ log(`Injecting ${perBotInjectKeys.length} per-bot env var(s): ${perBotInjectKeys.join(', ')}`);
4066
4077
  // ── File sandbox (oncall): wrap the CLI in bwrap so it can only touch a
4067
4078
  // per-session project copy + de-identified config. The agent's `botmux send`
4068
4079
  // routes through a daemon-side outbox watcher (creds never enter the sandbox).
@@ -4230,6 +4241,7 @@ function spawnCli(cfg) {
4230
4241
  cols: PTY_COLS,
4231
4242
  rows: PTY_ROWS,
4232
4243
  env: childEnv,
4244
+ injectEnv: perBotInjectKeys.length ? perBotInjectEnv : undefined,
4233
4245
  });
4234
4246
  // Write CLI PID marker so agent-facing subcommands (`botmux send`, etc.)
4235
4247
  // can verify they were spawned inside a botmux session by walking the