botmux 3.14.0 → 3.16.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 (812) hide show
  1. package/README.en.md +2 -2
  2. package/README.md +2 -2
  3. package/dist/.runtime-build-id +1 -1
  4. package/dist/adapters/backend/destroy-result.d.ts +159 -0
  5. package/dist/adapters/backend/destroy-result.d.ts.map +1 -0
  6. package/dist/adapters/backend/destroy-result.js +223 -0
  7. package/dist/adapters/backend/destroy-result.js.map +1 -0
  8. package/dist/adapters/backend/herdr-backend.d.ts +4 -0
  9. package/dist/adapters/backend/herdr-backend.d.ts.map +1 -1
  10. package/dist/adapters/backend/herdr-backend.js +23 -1
  11. package/dist/adapters/backend/herdr-backend.js.map +1 -1
  12. package/dist/adapters/backend/mojo-backend.d.ts +577 -0
  13. package/dist/adapters/backend/mojo-backend.d.ts.map +1 -0
  14. package/dist/adapters/backend/mojo-backend.js +2471 -0
  15. package/dist/adapters/backend/mojo-backend.js.map +1 -0
  16. package/dist/adapters/backend/mojo-budgets.d.ts +21 -0
  17. package/dist/adapters/backend/mojo-budgets.d.ts.map +1 -0
  18. package/dist/adapters/backend/mojo-budgets.js +22 -0
  19. package/dist/adapters/backend/mojo-budgets.js.map +1 -0
  20. package/dist/adapters/backend/mojo-isolated-workspace.d.ts +69 -0
  21. package/dist/adapters/backend/mojo-isolated-workspace.d.ts.map +1 -0
  22. package/dist/adapters/backend/mojo-isolated-workspace.js +213 -0
  23. package/dist/adapters/backend/mojo-isolated-workspace.js.map +1 -0
  24. package/dist/adapters/backend/mojo-process-tree.d.ts +292 -0
  25. package/dist/adapters/backend/mojo-process-tree.d.ts.map +1 -0
  26. package/dist/adapters/backend/mojo-process-tree.js +486 -0
  27. package/dist/adapters/backend/mojo-process-tree.js.map +1 -0
  28. package/dist/adapters/backend/mojo-types.d.ts +542 -0
  29. package/dist/adapters/backend/mojo-types.d.ts.map +1 -0
  30. package/dist/adapters/backend/mojo-types.js +682 -0
  31. package/dist/adapters/backend/mojo-types.js.map +1 -0
  32. package/dist/adapters/backend/reproduce-command.js +3 -3
  33. package/dist/adapters/backend/reproduce-command.js.map +1 -1
  34. package/dist/adapters/backend/riff-backend.js +1 -1
  35. package/dist/adapters/backend/riff-backend.js.map +1 -1
  36. package/dist/adapters/backend/sandbox.d.ts +44 -7
  37. package/dist/adapters/backend/sandbox.d.ts.map +1 -1
  38. package/dist/adapters/backend/sandbox.js +30 -7
  39. package/dist/adapters/backend/sandbox.js.map +1 -1
  40. package/dist/adapters/backend/session-backend-selector.d.ts +14 -1
  41. package/dist/adapters/backend/session-backend-selector.d.ts.map +1 -1
  42. package/dist/adapters/backend/session-backend-selector.js +82 -10
  43. package/dist/adapters/backend/session-backend-selector.js.map +1 -1
  44. package/dist/adapters/backend/tmux-pipe-backend.d.ts +30 -0
  45. package/dist/adapters/backend/tmux-pipe-backend.d.ts.map +1 -1
  46. package/dist/adapters/backend/tmux-pipe-backend.js +60 -0
  47. package/dist/adapters/backend/tmux-pipe-backend.js.map +1 -1
  48. package/dist/adapters/backend/types.d.ts +108 -6
  49. package/dist/adapters/backend/types.d.ts.map +1 -1
  50. package/dist/adapters/backend/types.js.map +1 -1
  51. package/dist/adapters/backend/zmx-backend.d.ts +11 -0
  52. package/dist/adapters/backend/zmx-backend.d.ts.map +1 -1
  53. package/dist/adapters/backend/zmx-backend.js +16 -1
  54. package/dist/adapters/backend/zmx-backend.js.map +1 -1
  55. package/dist/adapters/cli/codex-app.d.ts.map +1 -1
  56. package/dist/adapters/cli/codex-app.js +2 -2
  57. package/dist/adapters/cli/codex-app.js.map +1 -1
  58. package/dist/adapters/cli/codex.d.ts.map +1 -1
  59. package/dist/adapters/cli/codex.js +7 -0
  60. package/dist/adapters/cli/codex.js.map +1 -1
  61. package/dist/adapters/cli/copilot.d.ts +3 -1
  62. package/dist/adapters/cli/copilot.d.ts.map +1 -1
  63. package/dist/adapters/cli/copilot.js +23 -5
  64. package/dist/adapters/cli/copilot.js.map +1 -1
  65. package/dist/adapters/cli/cursor.d.ts.map +1 -1
  66. package/dist/adapters/cli/cursor.js +26 -4
  67. package/dist/adapters/cli/cursor.js.map +1 -1
  68. package/dist/adapters/cli/dsh.d.ts.map +1 -1
  69. package/dist/adapters/cli/dsh.js +5 -1
  70. package/dist/adapters/cli/dsh.js.map +1 -1
  71. package/dist/adapters/cli/grok.d.ts.map +1 -1
  72. package/dist/adapters/cli/grok.js +24 -5
  73. package/dist/adapters/cli/grok.js.map +1 -1
  74. package/dist/adapters/cli/kimi.d.ts.map +1 -1
  75. package/dist/adapters/cli/kimi.js +19 -1
  76. package/dist/adapters/cli/kimi.js.map +1 -1
  77. package/dist/adapters/cli/mojo.d.ts +28 -0
  78. package/dist/adapters/cli/mojo.d.ts.map +1 -0
  79. package/dist/adapters/cli/mojo.js +58 -0
  80. package/dist/adapters/cli/mojo.js.map +1 -0
  81. package/dist/adapters/cli/pi.d.ts +20 -5
  82. package/dist/adapters/cli/pi.d.ts.map +1 -1
  83. package/dist/adapters/cli/pi.js +27 -5
  84. package/dist/adapters/cli/pi.js.map +1 -1
  85. package/dist/adapters/cli/read-isolation.d.ts +251 -1
  86. package/dist/adapters/cli/read-isolation.d.ts.map +1 -1
  87. package/dist/adapters/cli/read-isolation.js +254 -1
  88. package/dist/adapters/cli/read-isolation.js.map +1 -1
  89. package/dist/adapters/cli/registry.d.ts +13 -1
  90. package/dist/adapters/cli/registry.d.ts.map +1 -1
  91. package/dist/adapters/cli/registry.js +19 -1
  92. package/dist/adapters/cli/registry.js.map +1 -1
  93. package/dist/adapters/cli/runner-input.d.ts +3 -3
  94. package/dist/adapters/cli/runner-input.d.ts.map +1 -1
  95. package/dist/adapters/cli/runner-input.js +4 -3
  96. package/dist/adapters/cli/runner-input.js.map +1 -1
  97. package/dist/adapters/cli/shared-hints.d.ts +3 -1
  98. package/dist/adapters/cli/shared-hints.d.ts.map +1 -1
  99. package/dist/adapters/cli/shared-hints.js +51 -30
  100. package/dist/adapters/cli/shared-hints.js.map +1 -1
  101. package/dist/adapters/cli/types.d.ts +33 -4
  102. package/dist/adapters/cli/types.d.ts.map +1 -1
  103. package/dist/bot-registry.d.ts +42 -0
  104. package/dist/bot-registry.d.ts.map +1 -1
  105. package/dist/bot-registry.js +54 -4
  106. package/dist/bot-registry.js.map +1 -1
  107. package/dist/cli/arg-utils.d.ts +5 -0
  108. package/dist/cli/arg-utils.d.ts.map +1 -1
  109. package/dist/cli/arg-utils.js +7 -0
  110. package/dist/cli/arg-utils.js.map +1 -1
  111. package/dist/cli/bots-list-output.d.ts +130 -2
  112. package/dist/cli/bots-list-output.d.ts.map +1 -1
  113. package/dist/cli/bots-list-output.js +173 -27
  114. package/dist/cli/bots-list-output.js.map +1 -1
  115. package/dist/cli/daemon-lifecycle-env.d.ts +10 -3
  116. package/dist/cli/daemon-lifecycle-env.d.ts.map +1 -1
  117. package/dist/cli/daemon-lifecycle-env.js +38 -11
  118. package/dist/cli/daemon-lifecycle-env.js.map +1 -1
  119. package/dist/cli/dashboard-command.d.ts +15 -0
  120. package/dist/cli/dashboard-command.d.ts.map +1 -1
  121. package/dist/cli/dashboard-command.js +22 -0
  122. package/dist/cli/dashboard-command.js.map +1 -1
  123. package/dist/cli/log-tail.d.ts +54 -0
  124. package/dist/cli/log-tail.d.ts.map +1 -0
  125. package/dist/cli/log-tail.js +167 -0
  126. package/dist/cli/log-tail.js.map +1 -0
  127. package/dist/cli/pm2-env.d.ts +16 -0
  128. package/dist/cli/pm2-env.d.ts.map +1 -0
  129. package/dist/cli/pm2-env.js +63 -0
  130. package/dist/cli/pm2-env.js.map +1 -0
  131. package/dist/cli/pm2-fleet-lock.d.ts +26 -0
  132. package/dist/cli/pm2-fleet-lock.d.ts.map +1 -0
  133. package/dist/cli/pm2-fleet-lock.js +50 -0
  134. package/dist/cli/pm2-fleet-lock.js.map +1 -0
  135. package/dist/cli/pm2-god-retirement.d.ts +59 -0
  136. package/dist/cli/pm2-god-retirement.d.ts.map +1 -0
  137. package/dist/cli/pm2-god-retirement.js +95 -0
  138. package/dist/cli/pm2-god-retirement.js.map +1 -0
  139. package/dist/cli/session-list-wake.d.ts +41 -0
  140. package/dist/cli/session-list-wake.d.ts.map +1 -0
  141. package/dist/cli/session-list-wake.js +102 -0
  142. package/dist/cli/session-list-wake.js.map +1 -0
  143. package/dist/cli/workflow.d.ts.map +1 -1
  144. package/dist/cli/workflow.js +26 -0
  145. package/dist/cli/workflow.js.map +1 -1
  146. package/dist/cli.d.ts.map +1 -1
  147. package/dist/cli.js +941 -118
  148. package/dist/cli.js.map +1 -1
  149. package/dist/codex-app-runner.js +261 -49
  150. package/dist/codex-app-runner.js.map +1 -1
  151. package/dist/core/cli-runtime-update.d.ts +8 -0
  152. package/dist/core/cli-runtime-update.d.ts.map +1 -1
  153. package/dist/core/cli-runtime-update.js +127 -8
  154. package/dist/core/cli-runtime-update.js.map +1 -1
  155. package/dist/core/close-residual.d.ts +64 -0
  156. package/dist/core/close-residual.d.ts.map +1 -0
  157. package/dist/core/close-residual.js +93 -0
  158. package/dist/core/close-residual.js.map +1 -0
  159. package/dist/core/closed-session-card.d.ts.map +1 -1
  160. package/dist/core/closed-session-card.js +11 -3
  161. package/dist/core/closed-session-card.js.map +1 -1
  162. package/dist/core/command-discovery.d.ts.map +1 -1
  163. package/dist/core/command-discovery.js +4 -1
  164. package/dist/core/command-discovery.js.map +1 -1
  165. package/dist/core/command-handler.d.ts.map +1 -1
  166. package/dist/core/command-handler.js +129 -27
  167. package/dist/core/command-handler.js.map +1 -1
  168. package/dist/core/cost-calculator.d.ts +3 -1
  169. package/dist/core/cost-calculator.d.ts.map +1 -1
  170. package/dist/core/cost-calculator.js +230 -1
  171. package/dist/core/cost-calculator.js.map +1 -1
  172. package/dist/core/daemon-background-close.d.ts +19 -0
  173. package/dist/core/daemon-background-close.d.ts.map +1 -0
  174. package/dist/core/daemon-background-close.js +39 -0
  175. package/dist/core/daemon-background-close.js.map +1 -0
  176. package/dist/core/dashboard-command/overview.d.ts +4 -0
  177. package/dist/core/dashboard-command/overview.d.ts.map +1 -1
  178. package/dist/core/dashboard-command/overview.js +8 -1
  179. package/dist/core/dashboard-command/overview.js.map +1 -1
  180. package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
  181. package/dist/core/dashboard-ipc-server.js +415 -42
  182. package/dist/core/dashboard-ipc-server.js.map +1 -1
  183. package/dist/core/dashboard-rows.d.ts +4 -0
  184. package/dist/core/dashboard-rows.d.ts.map +1 -1
  185. package/dist/core/dashboard-rows.js +3 -0
  186. package/dist/core/dashboard-rows.js.map +1 -1
  187. package/dist/core/dashboard-url.d.ts +37 -0
  188. package/dist/core/dashboard-url.d.ts.map +1 -1
  189. package/dist/core/dashboard-url.js +71 -0
  190. package/dist/core/dashboard-url.js.map +1 -1
  191. package/dist/core/deferred-schedule-settlement.d.ts +15 -1
  192. package/dist/core/deferred-schedule-settlement.d.ts.map +1 -1
  193. package/dist/core/deferred-schedule-settlement.js +4 -1
  194. package/dist/core/deferred-schedule-settlement.js.map +1 -1
  195. package/dist/core/device-isolation-daemon.d.ts +91 -1
  196. package/dist/core/device-isolation-daemon.d.ts.map +1 -1
  197. package/dist/core/device-isolation-daemon.js +346 -2
  198. package/dist/core/device-isolation-daemon.js.map +1 -1
  199. package/dist/core/local-terminal-opener.d.ts.map +1 -1
  200. package/dist/core/local-terminal-opener.js +5 -1
  201. package/dist/core/local-terminal-opener.js.map +1 -1
  202. package/dist/core/loopback-target.d.ts +14 -0
  203. package/dist/core/loopback-target.d.ts.map +1 -0
  204. package/dist/core/loopback-target.js +20 -0
  205. package/dist/core/loopback-target.js.map +1 -0
  206. package/dist/core/maintenance.d.ts.map +1 -1
  207. package/dist/core/maintenance.js +16 -2
  208. package/dist/core/maintenance.js.map +1 -1
  209. package/dist/core/mojo-containment-command.d.ts +20 -0
  210. package/dist/core/mojo-containment-command.d.ts.map +1 -0
  211. package/dist/core/mojo-containment-command.js +266 -0
  212. package/dist/core/mojo-containment-command.js.map +1 -0
  213. package/dist/core/mojo-containment.d.ts +575 -0
  214. package/dist/core/mojo-containment.d.ts.map +1 -0
  215. package/dist/core/mojo-containment.js +1158 -0
  216. package/dist/core/mojo-containment.js.map +1 -0
  217. package/dist/core/mojo-launcher-env-quarantine.d.ts +30 -0
  218. package/dist/core/mojo-launcher-env-quarantine.d.ts.map +1 -0
  219. package/dist/core/mojo-launcher-env-quarantine.js +175 -0
  220. package/dist/core/mojo-launcher-env-quarantine.js.map +1 -0
  221. package/dist/core/mojo-session-identity.d.ts +3 -0
  222. package/dist/core/mojo-session-identity.d.ts.map +1 -0
  223. package/dist/core/mojo-session-identity.js +126 -0
  224. package/dist/core/mojo-session-identity.js.map +1 -0
  225. package/dist/core/persistent-backend.d.ts +32 -8
  226. package/dist/core/persistent-backend.d.ts.map +1 -1
  227. package/dist/core/persistent-backend.js +55 -17
  228. package/dist/core/persistent-backend.js.map +1 -1
  229. package/dist/core/plugins/mcp/gateway.d.ts +14 -1
  230. package/dist/core/plugins/mcp/gateway.d.ts.map +1 -1
  231. package/dist/core/plugins/mcp/gateway.js +70 -3
  232. package/dist/core/plugins/mcp/gateway.js.map +1 -1
  233. package/dist/core/plugins/mcp/host.d.ts +2 -0
  234. package/dist/core/plugins/mcp/host.d.ts.map +1 -1
  235. package/dist/core/plugins/mcp/host.js +2 -0
  236. package/dist/core/plugins/mcp/host.js.map +1 -1
  237. package/dist/core/plugins/pm2.d.ts.map +1 -1
  238. package/dist/core/plugins/pm2.js +16 -3
  239. package/dist/core/plugins/pm2.js.map +1 -1
  240. package/dist/core/plugins/service-manager.d.ts +9 -0
  241. package/dist/core/plugins/service-manager.d.ts.map +1 -1
  242. package/dist/core/plugins/service-manager.js +33 -16
  243. package/dist/core/plugins/service-manager.js.map +1 -1
  244. package/dist/core/preview-port-owner.d.ts +109 -0
  245. package/dist/core/preview-port-owner.d.ts.map +1 -0
  246. package/dist/core/preview-port-owner.js +320 -0
  247. package/dist/core/preview-port-owner.js.map +1 -0
  248. package/dist/core/remote-cli-ids.d.ts +5 -0
  249. package/dist/core/remote-cli-ids.d.ts.map +1 -0
  250. package/dist/core/remote-cli-ids.js +24 -0
  251. package/dist/core/remote-cli-ids.js.map +1 -0
  252. package/dist/core/{riff-shutdown-detach.d.ts → remote-shutdown-detach.d.ts} +40 -39
  253. package/dist/core/remote-shutdown-detach.d.ts.map +1 -0
  254. package/dist/core/{riff-shutdown-detach.js → remote-shutdown-detach.js} +85 -83
  255. package/dist/core/remote-shutdown-detach.js.map +1 -0
  256. package/dist/core/{riff-worker-shutdown-readiness.d.ts → remote-worker-shutdown-readiness.d.ts} +5 -4
  257. package/dist/core/remote-worker-shutdown-readiness.d.ts.map +1 -0
  258. package/dist/core/{riff-worker-shutdown-readiness.js → remote-worker-shutdown-readiness.js} +4 -3
  259. package/dist/core/remote-worker-shutdown-readiness.js.map +1 -0
  260. package/dist/core/reply-target.d.ts +16 -1
  261. package/dist/core/reply-target.d.ts.map +1 -1
  262. package/dist/core/reply-target.js +61 -0
  263. package/dist/core/reply-target.js.map +1 -1
  264. package/dist/core/session-group-birth.d.ts +26 -0
  265. package/dist/core/session-group-birth.d.ts.map +1 -1
  266. package/dist/core/session-group-birth.js +81 -4
  267. package/dist/core/session-group-birth.js.map +1 -1
  268. package/dist/core/session-manager.d.ts +15 -2
  269. package/dist/core/session-manager.d.ts.map +1 -1
  270. package/dist/core/session-manager.js +259 -5
  271. package/dist/core/session-manager.js.map +1 -1
  272. package/dist/core/session-model.d.ts +46 -0
  273. package/dist/core/session-model.d.ts.map +1 -0
  274. package/dist/core/session-model.js +42 -0
  275. package/dist/core/session-model.js.map +1 -0
  276. package/dist/core/session-owner-reminder.d.ts +63 -0
  277. package/dist/core/session-owner-reminder.d.ts.map +1 -0
  278. package/dist/core/session-owner-reminder.js +196 -0
  279. package/dist/core/session-owner-reminder.js.map +1 -0
  280. package/dist/core/session-preview-registry.d.ts +53 -0
  281. package/dist/core/session-preview-registry.d.ts.map +1 -0
  282. package/dist/core/session-preview-registry.js +82 -0
  283. package/dist/core/session-preview-registry.js.map +1 -0
  284. package/dist/core/session-preview.d.ts +114 -0
  285. package/dist/core/session-preview.d.ts.map +1 -0
  286. package/dist/core/session-preview.js +184 -0
  287. package/dist/core/session-preview.js.map +1 -0
  288. package/dist/core/session-rename.d.ts.map +1 -1
  289. package/dist/core/session-rename.js +5 -3
  290. package/dist/core/session-rename.js.map +1 -1
  291. package/dist/core/session-wake-deadline.d.ts +5 -0
  292. package/dist/core/session-wake-deadline.d.ts.map +1 -0
  293. package/dist/core/session-wake-deadline.js +13 -0
  294. package/dist/core/session-wake-deadline.js.map +1 -0
  295. package/dist/core/shutdown-budgets.d.ts +7 -6
  296. package/dist/core/shutdown-budgets.d.ts.map +1 -1
  297. package/dist/core/shutdown-budgets.js +11 -10
  298. package/dist/core/shutdown-budgets.js.map +1 -1
  299. package/dist/core/skills/frontmatter.d.ts.map +1 -1
  300. package/dist/core/skills/frontmatter.js +6 -1
  301. package/dist/core/skills/frontmatter.js.map +1 -1
  302. package/dist/core/terminal-control-grant.d.ts +74 -0
  303. package/dist/core/terminal-control-grant.d.ts.map +1 -0
  304. package/dist/core/terminal-control-grant.js +183 -0
  305. package/dist/core/terminal-control-grant.js.map +1 -0
  306. package/dist/core/terminal-proxy.d.ts.map +1 -1
  307. package/dist/core/terminal-proxy.js +4 -5
  308. package/dist/core/terminal-proxy.js.map +1 -1
  309. package/dist/core/terminal-write-auth.d.ts +4 -11
  310. package/dist/core/terminal-write-auth.d.ts.map +1 -1
  311. package/dist/core/terminal-write-auth.js +19 -16
  312. package/dist/core/terminal-write-auth.js.map +1 -1
  313. package/dist/core/trigger-session.d.ts.map +1 -1
  314. package/dist/core/trigger-session.js +36 -29
  315. package/dist/core/trigger-session.js.map +1 -1
  316. package/dist/core/types.d.ts +88 -10
  317. package/dist/core/types.d.ts.map +1 -1
  318. package/dist/core/types.js +9 -7
  319. package/dist/core/types.js.map +1 -1
  320. package/dist/core/workbench-link.d.ts +81 -0
  321. package/dist/core/workbench-link.d.ts.map +1 -0
  322. package/dist/core/workbench-link.js +109 -0
  323. package/dist/core/workbench-link.js.map +1 -0
  324. package/dist/core/worker-pool.d.ts +312 -11
  325. package/dist/core/worker-pool.d.ts.map +1 -1
  326. package/dist/core/worker-pool.js +2515 -217
  327. package/dist/core/worker-pool.js.map +1 -1
  328. package/dist/daemon.d.ts +6 -0
  329. package/dist/daemon.d.ts.map +1 -1
  330. package/dist/daemon.js +447 -116
  331. package/dist/daemon.js.map +1 -1
  332. package/dist/dashboard/aggregator.d.ts +33 -3
  333. package/dist/dashboard/aggregator.d.ts.map +1 -1
  334. package/dist/dashboard/aggregator.js +93 -17
  335. package/dist/dashboard/aggregator.js.map +1 -1
  336. package/dist/dashboard/auth-session-connections.d.ts +59 -0
  337. package/dist/dashboard/auth-session-connections.d.ts.map +1 -0
  338. package/dist/dashboard/auth-session-connections.js +109 -0
  339. package/dist/dashboard/auth-session-connections.js.map +1 -0
  340. package/dist/dashboard/auth.d.ts +99 -1
  341. package/dist/dashboard/auth.d.ts.map +1 -1
  342. package/dist/dashboard/auth.js +176 -64
  343. package/dist/dashboard/auth.js.map +1 -1
  344. package/dist/dashboard/bot-payload.d.ts +5 -0
  345. package/dist/dashboard/bot-payload.d.ts.map +1 -1
  346. package/dist/dashboard/bot-payload.js +4 -0
  347. package/dist/dashboard/bot-payload.js.map +1 -1
  348. package/dist/dashboard/control-audit.d.ts +112 -0
  349. package/dist/dashboard/control-audit.d.ts.map +1 -0
  350. package/dist/dashboard/control-audit.js +195 -0
  351. package/dist/dashboard/control-audit.js.map +1 -0
  352. package/dist/dashboard/control-csrf.d.ts +123 -0
  353. package/dist/dashboard/control-csrf.d.ts.map +1 -0
  354. package/dist/dashboard/control-csrf.js +392 -0
  355. package/dist/dashboard/control-csrf.js.map +1 -0
  356. package/dist/dashboard/daemon-reconcile.d.ts +26 -0
  357. package/dist/dashboard/daemon-reconcile.d.ts.map +1 -0
  358. package/dist/dashboard/daemon-reconcile.js +46 -0
  359. package/dist/dashboard/daemon-reconcile.js.map +1 -0
  360. package/dist/dashboard/debug-terminal.d.ts.map +1 -1
  361. package/dist/dashboard/debug-terminal.js +18 -4
  362. package/dist/dashboard/debug-terminal.js.map +1 -1
  363. package/dist/dashboard/events-sse.d.ts +60 -0
  364. package/dist/dashboard/events-sse.d.ts.map +1 -0
  365. package/dist/dashboard/events-sse.js +63 -0
  366. package/dist/dashboard/events-sse.js.map +1 -0
  367. package/dist/dashboard/h5-auth.d.ts +256 -0
  368. package/dist/dashboard/h5-auth.d.ts.map +1 -0
  369. package/dist/dashboard/h5-auth.js +825 -0
  370. package/dist/dashboard/h5-auth.js.map +1 -0
  371. package/dist/dashboard/managed-spawn.d.ts +36 -0
  372. package/dist/dashboard/managed-spawn.d.ts.map +1 -0
  373. package/dist/dashboard/managed-spawn.js +169 -0
  374. package/dist/dashboard/managed-spawn.js.map +1 -0
  375. package/dist/dashboard/preview-content-capability.d.ts +41 -0
  376. package/dist/dashboard/preview-content-capability.d.ts.map +1 -0
  377. package/dist/dashboard/preview-content-capability.js +127 -0
  378. package/dist/dashboard/preview-content-capability.js.map +1 -0
  379. package/dist/dashboard/preview-contract.d.ts +85 -0
  380. package/dist/dashboard/preview-contract.d.ts.map +1 -0
  381. package/dist/dashboard/preview-contract.js +198 -0
  382. package/dist/dashboard/preview-contract.js.map +1 -0
  383. package/dist/dashboard/preview-guard-page.d.ts +52 -0
  384. package/dist/dashboard/preview-guard-page.d.ts.map +1 -0
  385. package/dist/dashboard/preview-guard-page.js +162 -0
  386. package/dist/dashboard/preview-guard-page.js.map +1 -0
  387. package/dist/dashboard/preview-interaction.d.ts +57 -0
  388. package/dist/dashboard/preview-interaction.d.ts.map +1 -0
  389. package/dist/dashboard/preview-interaction.js +198 -0
  390. package/dist/dashboard/preview-interaction.js.map +1 -0
  391. package/dist/dashboard/preview-proxy.d.ts +113 -0
  392. package/dist/dashboard/preview-proxy.d.ts.map +1 -0
  393. package/dist/dashboard/preview-proxy.js +543 -0
  394. package/dist/dashboard/preview-proxy.js.map +1 -0
  395. package/dist/dashboard/public-redact.d.ts +23 -0
  396. package/dist/dashboard/public-redact.d.ts.map +1 -1
  397. package/dist/dashboard/public-redact.js +90 -21
  398. package/dist/dashboard/public-redact.js.map +1 -1
  399. package/dist/dashboard/request-identity.d.ts +77 -0
  400. package/dist/dashboard/request-identity.d.ts.map +1 -0
  401. package/dist/dashboard/request-identity.js +72 -0
  402. package/dist/dashboard/request-identity.js.map +1 -0
  403. package/dist/dashboard/session-cleanup.d.ts +5 -0
  404. package/dist/dashboard/session-cleanup.d.ts.map +1 -1
  405. package/dist/dashboard/session-cleanup.js +4 -0
  406. package/dist/dashboard/session-cleanup.js.map +1 -1
  407. package/dist/dashboard/settings-write-applier.d.ts +5 -1
  408. package/dist/dashboard/settings-write-applier.d.ts.map +1 -1
  409. package/dist/dashboard/settings-write-applier.js +14 -0
  410. package/dist/dashboard/settings-write-applier.js.map +1 -1
  411. package/dist/dashboard/standing-link.d.ts +76 -0
  412. package/dist/dashboard/standing-link.d.ts.map +1 -0
  413. package/dist/dashboard/standing-link.js +111 -0
  414. package/dist/dashboard/standing-link.js.map +1 -0
  415. package/dist/dashboard/terminal-control.d.ts +105 -0
  416. package/dist/dashboard/terminal-control.d.ts.map +1 -0
  417. package/dist/dashboard/terminal-control.js +296 -0
  418. package/dist/dashboard/terminal-control.js.map +1 -0
  419. package/dist/dashboard/terminal-front-proxy.d.ts +55 -0
  420. package/dist/dashboard/terminal-front-proxy.d.ts.map +1 -0
  421. package/dist/dashboard/terminal-front-proxy.js +397 -0
  422. package/dist/dashboard/terminal-front-proxy.js.map +1 -0
  423. package/dist/dashboard/terminal-view-capability.d.ts +97 -0
  424. package/dist/dashboard/terminal-view-capability.d.ts.map +1 -0
  425. package/dist/dashboard/terminal-view-capability.js +145 -0
  426. package/dist/dashboard/terminal-view-capability.js.map +1 -0
  427. package/dist/dashboard/web/agent-workbench-api.d.ts +59 -0
  428. package/dist/dashboard/web/agent-workbench-api.d.ts.map +1 -0
  429. package/dist/dashboard/web/agent-workbench-api.js +227 -0
  430. package/dist/dashboard/web/agent-workbench-api.js.map +1 -0
  431. package/dist/dashboard/web/agent-workbench-appearance-menu.d.ts +59 -0
  432. package/dist/dashboard/web/agent-workbench-appearance-menu.d.ts.map +1 -0
  433. package/dist/dashboard/web/agent-workbench-appearance-menu.js +195 -0
  434. package/dist/dashboard/web/agent-workbench-appearance-menu.js.map +1 -0
  435. package/dist/dashboard/web/agent-workbench-appearance.d.ts +222 -0
  436. package/dist/dashboard/web/agent-workbench-appearance.d.ts.map +1 -0
  437. package/dist/dashboard/web/agent-workbench-appearance.js +499 -0
  438. package/dist/dashboard/web/agent-workbench-appearance.js.map +1 -0
  439. package/dist/dashboard/web/agent-workbench-capabilities.d.ts +13 -0
  440. package/dist/dashboard/web/agent-workbench-capabilities.d.ts.map +1 -0
  441. package/dist/dashboard/web/agent-workbench-capabilities.js +24 -0
  442. package/dist/dashboard/web/agent-workbench-capabilities.js.map +1 -0
  443. package/dist/dashboard/web/agent-workbench-chat.d.ts +90 -0
  444. package/dist/dashboard/web/agent-workbench-chat.d.ts.map +1 -0
  445. package/dist/dashboard/web/agent-workbench-chat.js +168 -0
  446. package/dist/dashboard/web/agent-workbench-chat.js.map +1 -0
  447. package/dist/dashboard/web/agent-workbench-dock-page.d.ts +3 -0
  448. package/dist/dashboard/web/agent-workbench-dock-page.d.ts.map +1 -0
  449. package/dist/dashboard/web/agent-workbench-dock-page.js +23 -0
  450. package/dist/dashboard/web/agent-workbench-dock-page.js.map +1 -0
  451. package/dist/dashboard/web/agent-workbench-dock-view.d.ts +22 -0
  452. package/dist/dashboard/web/agent-workbench-dock-view.d.ts.map +1 -0
  453. package/dist/dashboard/web/agent-workbench-dock-view.js +76 -0
  454. package/dist/dashboard/web/agent-workbench-dock-view.js.map +1 -0
  455. package/dist/dashboard/web/agent-workbench-model.d.ts +196 -0
  456. package/dist/dashboard/web/agent-workbench-model.d.ts.map +1 -0
  457. package/dist/dashboard/web/agent-workbench-model.js +529 -0
  458. package/dist/dashboard/web/agent-workbench-model.js.map +1 -0
  459. package/dist/dashboard/web/agent-workbench-page.d.ts +3 -0
  460. package/dist/dashboard/web/agent-workbench-page.d.ts.map +1 -0
  461. package/dist/dashboard/web/agent-workbench-page.js +27 -0
  462. package/dist/dashboard/web/agent-workbench-page.js.map +1 -0
  463. package/dist/dashboard/web/agent-workbench-panes.d.ts +49 -0
  464. package/dist/dashboard/web/agent-workbench-panes.d.ts.map +1 -0
  465. package/dist/dashboard/web/agent-workbench-panes.js +468 -0
  466. package/dist/dashboard/web/agent-workbench-panes.js.map +1 -0
  467. package/dist/dashboard/web/agent-workbench-session-list.d.ts +42 -0
  468. package/dist/dashboard/web/agent-workbench-session-list.d.ts.map +1 -0
  469. package/dist/dashboard/web/agent-workbench-session-list.js +353 -0
  470. package/dist/dashboard/web/agent-workbench-session-list.js.map +1 -0
  471. package/dist/dashboard/web/agent-workbench-storage.d.ts +49 -0
  472. package/dist/dashboard/web/agent-workbench-storage.d.ts.map +1 -0
  473. package/dist/dashboard/web/agent-workbench-storage.js +197 -0
  474. package/dist/dashboard/web/agent-workbench-storage.js.map +1 -0
  475. package/dist/dashboard/web/agent-workbench-touch.d.ts +46 -0
  476. package/dist/dashboard/web/agent-workbench-touch.d.ts.map +1 -0
  477. package/dist/dashboard/web/agent-workbench-touch.js +96 -0
  478. package/dist/dashboard/web/agent-workbench-touch.js.map +1 -0
  479. package/dist/dashboard/web/agent-workbench-view.d.ts +34 -0
  480. package/dist/dashboard/web/agent-workbench-view.d.ts.map +1 -0
  481. package/dist/dashboard/web/agent-workbench-view.js +439 -0
  482. package/dist/dashboard/web/agent-workbench-view.js.map +1 -0
  483. package/dist/dashboard/web/app.d.ts.map +1 -1
  484. package/dist/dashboard/web/app.js +63 -2
  485. package/dist/dashboard/web/app.js.map +1 -1
  486. package/dist/dashboard/web/bot-defaults-page.d.ts +18 -0
  487. package/dist/dashboard/web/bot-defaults-page.d.ts.map +1 -1
  488. package/dist/dashboard/web/bot-defaults-page.js +362 -36
  489. package/dist/dashboard/web/bot-defaults-page.js.map +1 -1
  490. package/dist/dashboard/web/bot-defaults.d.ts +8 -0
  491. package/dist/dashboard/web/bot-defaults.d.ts.map +1 -1
  492. package/dist/dashboard/web/bot-defaults.js.map +1 -1
  493. package/dist/dashboard/web/control-csrf.d.ts +4 -0
  494. package/dist/dashboard/web/control-csrf.d.ts.map +1 -0
  495. package/dist/dashboard/web/control-csrf.js +26 -0
  496. package/dist/dashboard/web/control-csrf.js.map +1 -0
  497. package/dist/dashboard/web/dashboard-routes.d.ts.map +1 -1
  498. package/dist/dashboard/web/dashboard-routes.js +2 -0
  499. package/dist/dashboard/web/dashboard-routes.js.map +1 -1
  500. package/dist/dashboard/web/groups-page.d.ts.map +1 -1
  501. package/dist/dashboard/web/groups-page.js +11 -2
  502. package/dist/dashboard/web/groups-page.js.map +1 -1
  503. package/dist/dashboard/web/i18n.d.ts.map +1 -1
  504. package/dist/dashboard/web/i18n.js +140 -6
  505. package/dist/dashboard/web/i18n.js.map +1 -1
  506. package/dist/dashboard/web/overview-page.d.ts.map +1 -1
  507. package/dist/dashboard/web/overview-page.js +3 -2
  508. package/dist/dashboard/web/overview-page.js.map +1 -1
  509. package/dist/dashboard/web/sessions-page.d.ts.map +1 -1
  510. package/dist/dashboard/web/sessions-page.js +41 -1
  511. package/dist/dashboard/web/sessions-page.js.map +1 -1
  512. package/dist/dashboard/web/sessions.d.ts.map +1 -1
  513. package/dist/dashboard/web/sessions.js +5 -1
  514. package/dist/dashboard/web/sessions.js.map +1 -1
  515. package/dist/dashboard/web/settings-page.d.ts +3 -0
  516. package/dist/dashboard/web/settings-page.d.ts.map +1 -1
  517. package/dist/dashboard/web/settings-page.js +56 -10
  518. package/dist/dashboard/web/settings-page.js.map +1 -1
  519. package/dist/dashboard/web/skills-page.d.ts.map +1 -1
  520. package/dist/dashboard/web/skills-page.js +4 -2
  521. package/dist/dashboard/web/skills-page.js.map +1 -1
  522. package/dist/dashboard/web/store.d.ts +27 -2
  523. package/dist/dashboard/web/store.d.ts.map +1 -1
  524. package/dist/dashboard/web/store.js +43 -4
  525. package/dist/dashboard/web/store.js.map +1 -1
  526. package/dist/dashboard/web/ui.d.ts +3 -0
  527. package/dist/dashboard/web/ui.d.ts.map +1 -1
  528. package/dist/dashboard/web/ui.js +11 -0
  529. package/dist/dashboard/web/ui.js.map +1 -1
  530. package/dist/dashboard/web/update-action.d.ts +12 -0
  531. package/dist/dashboard/web/update-action.d.ts.map +1 -1
  532. package/dist/dashboard/web/update-action.js +11 -0
  533. package/dist/dashboard/web/update-action.js.map +1 -1
  534. package/dist/dashboard/workbench-doctor.d.ts +114 -0
  535. package/dist/dashboard/workbench-doctor.d.ts.map +1 -0
  536. package/dist/dashboard/workbench-doctor.js +620 -0
  537. package/dist/dashboard/workbench-doctor.js.map +1 -0
  538. package/dist/dashboard/workbench-ticket.d.ts +165 -0
  539. package/dist/dashboard/workbench-ticket.d.ts.map +1 -0
  540. package/dist/dashboard/workbench-ticket.js +495 -0
  541. package/dist/dashboard/workbench-ticket.js.map +1 -0
  542. package/dist/dashboard-web/app.js +1 -1
  543. package/dist/dashboard-web/chunks/agent-workbench-dock-page-IKAC5CFL.js +1 -0
  544. package/dist/dashboard-web/chunks/agent-workbench-page-M53UN5EB.js +1 -0
  545. package/dist/dashboard-web/chunks/bot-defaults-page-YKE5SDZF.js +10 -0
  546. package/dist/dashboard-web/chunks/chunk-22WIADUT.js +2 -0
  547. package/dist/dashboard-web/chunks/chunk-24ONYQMR.js +1 -0
  548. package/dist/dashboard-web/chunks/{chunk-6O7KXFD2.js → chunk-2W6SCN3M.js} +1 -1
  549. package/dist/dashboard-web/chunks/chunk-4XNJX6B3.js +1 -0
  550. package/dist/dashboard-web/chunks/{chunk-Q2MT4VWH.js → chunk-F6KNPF4R.js} +11 -9
  551. package/dist/dashboard-web/chunks/chunk-FXW3V4JR.js +1 -0
  552. package/dist/dashboard-web/chunks/chunk-G5ZS2YUS.js +1 -0
  553. package/dist/dashboard-web/chunks/chunk-KTQ7B6ZR.js +1 -0
  554. package/dist/dashboard-web/chunks/{chunk-U3ZFSO7E.js → chunk-NACP7BMR.js} +1 -1
  555. package/dist/dashboard-web/chunks/{connectors-page-2KZO5KSJ.js → connectors-page-VOISXXII.js} +1 -1
  556. package/dist/dashboard-web/chunks/{feedback-page-CLVTOLLO.js → feedback-page-RN6HRZMS.js} +1 -1
  557. package/dist/dashboard-web/chunks/groups-page-UQT6DCB7.js +8 -0
  558. package/dist/dashboard-web/chunks/{insights-page-4RPU2CRU.js → insights-page-HJFDYR5N.js} +3 -3
  559. package/dist/dashboard-web/chunks/{monitor-room-OTKQ2CXK.js → monitor-room-V7PCP47V.js} +1 -1
  560. package/dist/dashboard-web/chunks/{monitoring-page-IJPUB6JT.js → monitoring-page-NKEKVQAP.js} +1 -1
  561. package/dist/dashboard-web/chunks/{office-page-QSR3J44Y.js → office-page-GVJF73XW.js} +1 -1
  562. package/dist/dashboard-web/chunks/overview-page-KHLV6VTI.js +1 -0
  563. package/dist/dashboard-web/chunks/{plugin-page-VEGTCEAS.js → plugin-page-J3OF5IY4.js} +1 -1
  564. package/dist/dashboard-web/chunks/{roles-page-6NWJMOB5.js → roles-page-WQIRSOLZ.js} +1 -1
  565. package/dist/dashboard-web/chunks/{schedules-page-6I3LNXD4.js → schedules-page-J2DEY2X6.js} +1 -1
  566. package/dist/dashboard-web/chunks/sessions-page-7BQFEA5P.js +8 -0
  567. package/dist/dashboard-web/chunks/settings-page-BJEIOFJH.js +2 -0
  568. package/dist/dashboard-web/chunks/{skills-page-M2Q6L5CB.js → skills-page-HGIFR3IU.js} +2 -2
  569. package/dist/dashboard-web/chunks/{team-federation-page-7I7FDE3B.js → team-federation-page-MR5ZPL4B.js} +1 -1
  570. package/dist/dashboard-web/chunks/{v3-page-HQXRL65L.js → v3-page-GBR5JWPE.js} +2 -2
  571. package/dist/dashboard-web/chunks/{whiteboards-page-LQKC4TAZ.js → whiteboards-page-QAZM4BN3.js} +1 -1
  572. package/dist/dashboard-web/index.html +8 -1
  573. package/dist/dashboard-web/style.css +2006 -10
  574. package/dist/dashboard.js +1017 -264
  575. package/dist/dashboard.js.map +1 -1
  576. package/dist/dsh-runner.js +8 -1
  577. package/dist/dsh-runner.js.map +1 -1
  578. package/dist/global-config.d.ts +30 -0
  579. package/dist/global-config.d.ts.map +1 -1
  580. package/dist/global-config.js +33 -0
  581. package/dist/global-config.js.map +1 -1
  582. package/dist/i18n/en.d.ts.map +1 -1
  583. package/dist/i18n/en.js +46 -27
  584. package/dist/i18n/en.js.map +1 -1
  585. package/dist/i18n/zh.d.ts.map +1 -1
  586. package/dist/i18n/zh.js +43 -27
  587. package/dist/i18n/zh.js.map +1 -1
  588. package/dist/im/lark/card-builder.d.ts +1 -1
  589. package/dist/im/lark/card-builder.d.ts.map +1 -1
  590. package/dist/im/lark/card-builder.js +22 -6
  591. package/dist/im/lark/card-builder.js.map +1 -1
  592. package/dist/im/lark/card-handler.d.ts.map +1 -1
  593. package/dist/im/lark/card-handler.js +118 -24
  594. package/dist/im/lark/card-handler.js.map +1 -1
  595. package/dist/im/lark/client.d.ts +15 -0
  596. package/dist/im/lark/client.d.ts.map +1 -1
  597. package/dist/im/lark/client.js +30 -0
  598. package/dist/im/lark/client.js.map +1 -1
  599. package/dist/im/lark/event-dispatcher.d.ts +48 -0
  600. package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
  601. package/dist/im/lark/event-dispatcher.js +138 -41
  602. package/dist/im/lark/event-dispatcher.js.map +1 -1
  603. package/dist/im/lark/identity-cache.d.ts +14 -6
  604. package/dist/im/lark/identity-cache.d.ts.map +1 -1
  605. package/dist/im/lark/identity-cache.js +69 -26
  606. package/dist/im/lark/identity-cache.js.map +1 -1
  607. package/dist/im/lark/lark-hosts.d.ts +13 -0
  608. package/dist/im/lark/lark-hosts.d.ts.map +1 -1
  609. package/dist/im/lark/lark-hosts.js +16 -0
  610. package/dist/im/lark/lark-hosts.js.map +1 -1
  611. package/dist/im/lark/overview-card.d.ts +22 -0
  612. package/dist/im/lark/overview-card.d.ts.map +1 -1
  613. package/dist/im/lark/overview-card.js +53 -3
  614. package/dist/im/lark/overview-card.js.map +1 -1
  615. package/dist/im/lark/sessions-card.d.ts.map +1 -1
  616. package/dist/im/lark/sessions-card.js +26 -3
  617. package/dist/im/lark/sessions-card.js.map +1 -1
  618. package/dist/im/lark/workflow-slash-command.d.ts +6 -0
  619. package/dist/im/lark/workflow-slash-command.d.ts.map +1 -1
  620. package/dist/im/lark/workflow-slash-command.js +7 -0
  621. package/dist/im/lark/workflow-slash-command.js.map +1 -1
  622. package/dist/index-daemon.js +27 -4
  623. package/dist/index-daemon.js.map +1 -1
  624. package/dist/index-dashboard.d.ts +3 -0
  625. package/dist/index-dashboard.d.ts.map +1 -0
  626. package/dist/index-dashboard.js +94 -0
  627. package/dist/index-dashboard.js.map +1 -0
  628. package/dist/platform/team-agents-client.d.ts +199 -0
  629. package/dist/platform/team-agents-client.d.ts.map +1 -0
  630. package/dist/platform/team-agents-client.js +263 -0
  631. package/dist/platform/team-agents-client.js.map +1 -0
  632. package/dist/platform/tunnel-client.d.ts +6 -0
  633. package/dist/platform/tunnel-client.d.ts.map +1 -1
  634. package/dist/platform/tunnel-client.js.map +1 -1
  635. package/dist/services/async-trigger-state.d.ts +7 -3
  636. package/dist/services/async-trigger-state.d.ts.map +1 -1
  637. package/dist/services/async-trigger-state.js +28 -0
  638. package/dist/services/async-trigger-state.js.map +1 -1
  639. package/dist/services/async-trigger-store.d.ts +13 -4
  640. package/dist/services/async-trigger-store.d.ts.map +1 -1
  641. package/dist/services/async-trigger-store.js +55 -8
  642. package/dist/services/async-trigger-store.js.map +1 -1
  643. package/dist/services/bot-config-store.d.ts +1 -11
  644. package/dist/services/bot-config-store.d.ts.map +1 -1
  645. package/dist/services/bot-config-store.js +27 -3
  646. package/dist/services/bot-config-store.js.map +1 -1
  647. package/dist/services/bot-profile-store.d.ts +17 -2
  648. package/dist/services/bot-profile-store.d.ts.map +1 -1
  649. package/dist/services/bot-profile-store.js +93 -12
  650. package/dist/services/bot-profile-store.js.map +1 -1
  651. package/dist/services/bridge-fallback-gate.d.ts +15 -7
  652. package/dist/services/bridge-fallback-gate.d.ts.map +1 -1
  653. package/dist/services/bridge-fallback-gate.js +43 -16
  654. package/dist/services/bridge-fallback-gate.js.map +1 -1
  655. package/dist/services/bridge-turn-queue.d.ts +10 -1
  656. package/dist/services/bridge-turn-queue.d.ts.map +1 -1
  657. package/dist/services/bridge-turn-queue.js +29 -9
  658. package/dist/services/bridge-turn-queue.js.map +1 -1
  659. package/dist/services/claude-transcript.d.ts +19 -0
  660. package/dist/services/claude-transcript.d.ts.map +1 -1
  661. package/dist/services/claude-transcript.js +57 -5
  662. package/dist/services/claude-transcript.js.map +1 -1
  663. package/dist/services/codex-app-threads.d.ts +2 -0
  664. package/dist/services/codex-app-threads.d.ts.map +1 -1
  665. package/dist/services/codex-app-threads.js +1 -1
  666. package/dist/services/codex-app-threads.js.map +1 -1
  667. package/dist/services/codex-reasoning-effort.d.ts +8 -0
  668. package/dist/services/codex-reasoning-effort.d.ts.map +1 -1
  669. package/dist/services/codex-reasoning-effort.js +24 -0
  670. package/dist/services/codex-reasoning-effort.js.map +1 -1
  671. package/dist/services/cursor-resume-policy.d.ts.map +1 -1
  672. package/dist/services/cursor-resume-policy.js +15 -3
  673. package/dist/services/cursor-resume-policy.js.map +1 -1
  674. package/dist/services/open-platform-rename.d.ts.map +1 -1
  675. package/dist/services/open-platform-rename.js +3 -2
  676. package/dist/services/open-platform-rename.js.map +1 -1
  677. package/dist/services/ordinary-turn-recovery.d.ts +76 -0
  678. package/dist/services/ordinary-turn-recovery.d.ts.map +1 -0
  679. package/dist/services/ordinary-turn-recovery.js +349 -0
  680. package/dist/services/ordinary-turn-recovery.js.map +1 -0
  681. package/dist/services/peer-cross-ref-store.d.ts +8 -0
  682. package/dist/services/peer-cross-ref-store.d.ts.map +1 -0
  683. package/dist/services/peer-cross-ref-store.js +95 -0
  684. package/dist/services/peer-cross-ref-store.js.map +1 -0
  685. package/dist/services/pi-transcript.d.ts.map +1 -1
  686. package/dist/services/pi-transcript.js +10 -6
  687. package/dist/services/pi-transcript.js.map +1 -1
  688. package/dist/services/resume-fresh-policy.d.ts +17 -0
  689. package/dist/services/resume-fresh-policy.d.ts.map +1 -0
  690. package/dist/services/resume-fresh-policy.js +24 -0
  691. package/dist/services/resume-fresh-policy.js.map +1 -0
  692. package/dist/services/session-group-title.d.ts +1 -0
  693. package/dist/services/session-group-title.d.ts.map +1 -1
  694. package/dist/services/session-group-title.js +16 -1
  695. package/dist/services/session-group-title.js.map +1 -1
  696. package/dist/services/session-groups-store.d.ts +30 -0
  697. package/dist/services/session-groups-store.d.ts.map +1 -1
  698. package/dist/services/session-groups-store.js +26 -4
  699. package/dist/services/session-groups-store.js.map +1 -1
  700. package/dist/services/session-owner-notification.d.ts +9 -0
  701. package/dist/services/session-owner-notification.d.ts.map +1 -0
  702. package/dist/services/session-owner-notification.js +10 -0
  703. package/dist/services/session-owner-notification.js.map +1 -0
  704. package/dist/services/session-owner-reminder-config-store.d.ts +9 -0
  705. package/dist/services/session-owner-reminder-config-store.d.ts.map +1 -0
  706. package/dist/services/session-owner-reminder-config-store.js +24 -0
  707. package/dist/services/session-owner-reminder-config-store.js.map +1 -0
  708. package/dist/services/session-owner-reminder-store.d.ts +5 -0
  709. package/dist/services/session-owner-reminder-store.d.ts.map +1 -0
  710. package/dist/services/session-owner-reminder-store.js +54 -0
  711. package/dist/services/session-owner-reminder-store.js.map +1 -0
  712. package/dist/services/session-store.d.ts +98 -21
  713. package/dist/services/session-store.d.ts.map +1 -1
  714. package/dist/services/session-store.js +406 -48
  715. package/dist/services/session-store.js.map +1 -1
  716. package/dist/services/structured-bridge-clis.d.ts +15 -2
  717. package/dist/services/structured-bridge-clis.d.ts.map +1 -1
  718. package/dist/services/structured-bridge-clis.js +16 -1
  719. package/dist/services/structured-bridge-clis.js.map +1 -1
  720. package/dist/services/transcript-resolver.d.ts +1 -1
  721. package/dist/services/transcript-resolver.d.ts.map +1 -1
  722. package/dist/services/transcript-resolver.js +6 -1
  723. package/dist/services/transcript-resolver.js.map +1 -1
  724. package/dist/setup/bot-config-editor.d.ts.map +1 -1
  725. package/dist/setup/bot-config-editor.js +7 -2
  726. package/dist/setup/bot-config-editor.js.map +1 -1
  727. package/dist/setup/ensure-herdr-integrations.d.ts +13 -0
  728. package/dist/setup/ensure-herdr-integrations.d.ts.map +1 -1
  729. package/dist/setup/ensure-herdr-integrations.js +21 -3
  730. package/dist/setup/ensure-herdr-integrations.js.map +1 -1
  731. package/dist/setup/open-platform-automation.d.ts +1 -0
  732. package/dist/setup/open-platform-automation.d.ts.map +1 -1
  733. package/dist/setup/open-platform-automation.js +107 -7
  734. package/dist/setup/open-platform-automation.js.map +1 -1
  735. package/dist/skills/definitions.d.ts +17 -0
  736. package/dist/skills/definitions.d.ts.map +1 -1
  737. package/dist/skills/definitions.js +78 -8
  738. package/dist/skills/definitions.js.map +1 -1
  739. package/dist/skills/injection-mode.d.ts +24 -3
  740. package/dist/skills/injection-mode.d.ts.map +1 -1
  741. package/dist/skills/injection-mode.js +64 -15
  742. package/dist/skills/injection-mode.js.map +1 -1
  743. package/dist/skills/installer.d.ts +18 -0
  744. package/dist/skills/installer.d.ts.map +1 -1
  745. package/dist/skills/installer.js +45 -1
  746. package/dist/skills/installer.js.map +1 -1
  747. package/dist/types.d.ts +222 -10
  748. package/dist/types.d.ts.map +1 -1
  749. package/dist/utils/bot-routing.d.ts +1 -1
  750. package/dist/utils/bot-routing.d.ts.map +1 -1
  751. package/dist/utils/bot-routing.js.map +1 -1
  752. package/dist/utils/child-env.d.ts +92 -2
  753. package/dist/utils/child-env.d.ts.map +1 -1
  754. package/dist/utils/child-env.js +195 -1
  755. package/dist/utils/child-env.js.map +1 -1
  756. package/dist/utils/cli-usage-limit.d.ts +25 -14
  757. package/dist/utils/cli-usage-limit.d.ts.map +1 -1
  758. package/dist/utils/cli-usage-limit.js +25 -15
  759. package/dist/utils/cli-usage-limit.js.map +1 -1
  760. package/dist/utils/daemon-rejection-guard.d.ts +35 -0
  761. package/dist/utils/daemon-rejection-guard.d.ts.map +1 -0
  762. package/dist/utils/daemon-rejection-guard.js +101 -0
  763. package/dist/utils/daemon-rejection-guard.js.map +1 -0
  764. package/dist/utils/dashboard-env.d.ts +53 -0
  765. package/dist/utils/dashboard-env.d.ts.map +1 -0
  766. package/dist/utils/dashboard-env.js +116 -0
  767. package/dist/utils/dashboard-env.js.map +1 -0
  768. package/dist/utils/global-install.d.ts.map +1 -1
  769. package/dist/utils/global-install.js +61 -5
  770. package/dist/utils/global-install.js.map +1 -1
  771. package/dist/utils/install-diagnostics.d.ts +14 -7
  772. package/dist/utils/install-diagnostics.d.ts.map +1 -1
  773. package/dist/utils/install-diagnostics.js +20 -11
  774. package/dist/utils/install-diagnostics.js.map +1 -1
  775. package/dist/utils/local-dev-update.d.ts +132 -0
  776. package/dist/utils/local-dev-update.d.ts.map +1 -0
  777. package/dist/utils/local-dev-update.js +176 -0
  778. package/dist/utils/local-dev-update.js.map +1 -0
  779. package/dist/utils/pending-input-queue.d.ts +12 -1
  780. package/dist/utils/pending-input-queue.d.ts.map +1 -1
  781. package/dist/utils/pending-input-queue.js.map +1 -1
  782. package/dist/worker.js +1517 -236
  783. package/dist/worker.js.map +1 -1
  784. package/dist/workflows/definition.d.ts +68 -68
  785. package/dist/workflows/events/payloads.d.ts +14 -14
  786. package/dist/workflows/events/schema.d.ts +312 -312
  787. package/dist/workflows/migration/v2-run-archive-schema.d.ts +40 -40
  788. package/dist/workflows/v3/cli-run.d.ts.map +1 -1
  789. package/dist/workflows/v3/cli-run.js +7 -0
  790. package/dist/workflows/v3/cli-run.js.map +1 -1
  791. package/dist/workflows/v3/goal-cli.d.ts +3 -0
  792. package/dist/workflows/v3/goal-cli.d.ts.map +1 -1
  793. package/dist/workflows/v3/goal-cli.js +11 -0
  794. package/dist/workflows/v3/goal-cli.js.map +1 -1
  795. package/dist/workflows/v3/run-envelope.d.ts +144 -144
  796. package/package.json +7 -2
  797. package/dist/cli/pm2-god-admission.d.ts +0 -8
  798. package/dist/cli/pm2-god-admission.d.ts.map +0 -1
  799. package/dist/cli/pm2-god-admission.js +0 -25
  800. package/dist/cli/pm2-god-admission.js.map +0 -1
  801. package/dist/core/riff-shutdown-detach.d.ts.map +0 -1
  802. package/dist/core/riff-shutdown-detach.js.map +0 -1
  803. package/dist/core/riff-worker-shutdown-readiness.d.ts.map +0 -1
  804. package/dist/core/riff-worker-shutdown-readiness.js.map +0 -1
  805. package/dist/dashboard-web/chunks/bot-defaults-page-4RENHE7J.js +0 -10
  806. package/dist/dashboard-web/chunks/chunk-2WQDS65D.js +0 -1
  807. package/dist/dashboard-web/chunks/chunk-G5XGBCM6.js +0 -1
  808. package/dist/dashboard-web/chunks/chunk-WLIVBPJC.js +0 -1
  809. package/dist/dashboard-web/chunks/groups-page-HLASRTSY.js +0 -8
  810. package/dist/dashboard-web/chunks/overview-page-6OK63V4V.js +0 -1
  811. package/dist/dashboard-web/chunks/sessions-page-B2TXGJDO.js +0 -8
  812. package/dist/dashboard-web/chunks/settings-page-6KJADSC6.js +0 -2
@@ -43,11 +43,74 @@ export declare function scrubWorkflowWorkerEnv(env: NodeJS.ProcessEnv): void;
43
43
  * session's identity into anything it forks (workers, the shared tmux
44
44
  * server). */
45
45
  export declare function scrubClaudeSessionMarkerEnv(env: NodeJS.ProcessEnv): void;
46
+ /**
47
+ * Dashboard-only Feishu/Lark H5 passwordless-login configuration. Every key in
48
+ * this family is read by ONE consumer — resolveDashboardH5AuthConfig() in
49
+ * src/dashboard/h5-auth.ts, inside the dashboard process — and by nothing else
50
+ * in the fleet. A session's CLI child has no reason to see any of it, and
51
+ * `..._APP_SECRET` is a full Feishu app credential: whoever holds it can mint
52
+ * app_access_token for the H5 login app, i.e. forge the identity the Dashboard
53
+ * authenticates on. The daemon loads ~/.botmux/.env wholesale (index-daemon.ts
54
+ * dotenv), so without this scrub the secret rode into every PTY/direct CLI
55
+ * child and every one-shot the daemon forks (session group-title).
56
+ *
57
+ * Redaction is BOTH belt and braces:
58
+ * - these exact names sit in REDACTED_CHILD_ENV_KEYS, which also drives the
59
+ * tmux pane wrapper's `unset` clause and the tmux client-env strip;
60
+ * - redactChildEnv() additionally sweeps the whole
61
+ * {@link DASHBOARD_H5_ENV_PREFIX}, so a future H5 knob is redacted the day
62
+ * it is added rather than the day someone remembers this list.
63
+ */
64
+ export declare const DASHBOARD_H5_ENV_PREFIX = "BOTMUX_DASHBOARD_FEISHU_H5_";
65
+ export declare const DASHBOARD_H5_ENV_KEYS: readonly ["BOTMUX_DASHBOARD_FEISHU_H5_ENABLED", "BOTMUX_DASHBOARD_FEISHU_H5_BRAND", "BOTMUX_DASHBOARD_FEISHU_H5_APP_ID", "BOTMUX_DASHBOARD_FEISHU_H5_APP_SECRET", "BOTMUX_DASHBOARD_FEISHU_H5_ALLOWED_OPEN_IDS", "BOTMUX_DASHBOARD_FEISHU_H5_ENTRY_PATH", "BOTMUX_DASHBOARD_FEISHU_H5_SESSION_TTL_MS", "BOTMUX_DASHBOARD_FEISHU_H5_SECURE_COOKIE", "BOTMUX_DASHBOARD_FEISHU_H5_TRUSTED_PROXY_HOPS"];
66
+ /**
67
+ * Delete the entire Dashboard-only Feishu H5 login family from `env` IN PLACE:
68
+ * every named key in {@link DASHBOARD_H5_ENV_KEYS} plus a
69
+ * {@link DASHBOARD_H5_ENV_PREFIX} sweep, so a knob added tomorrow is stripped
70
+ * the day it ships rather than the day someone extends the list.
71
+ *
72
+ * The Dashboard is the family's ONLY consumer, and it receives the values by
73
+ * dotenv-loading ~/.botmux/.env itself (index-dashboard.ts) — NOT through the
74
+ * shared PM2 env block (the H5 keys are deliberately absent from
75
+ * DAEMON_ENV_KEYS). Every other botmux-owned process must therefore hold none
76
+ * of it. Call sites:
77
+ * - index-daemon.ts boot: the daemon dotenv-loads the same .env wholesale, so
78
+ * it must drop the family right after dotenv — a daemon holding the H5
79
+ * APP_SECRET can mint app_access_token for the Dashboard's login app.
80
+ * - core/maintenance.ts detachedRestartEnv(): the detached `botmux restart`
81
+ * the DASHBOARD spawns (update/restart button) inherits the dashboard's env,
82
+ * which legitimately holds the secrets; the restart driver does not need
83
+ * them and must not carry them toward pm2.
84
+ * redactChildEnv() keeps its own equivalent strip as the second line of
85
+ * defense at every CLI-child boundary (PTY/tmux pane unset/one-shot).
86
+ */
87
+ export declare function stripDashboardH5Env(env: NodeJS.ProcessEnv): void;
88
+ /**
89
+ * Terminal/interactivity fingerprints of whichever process invoked a pm2
90
+ * mutation. pm2 persists the caller's env into every managed app (and into
91
+ * dump.pm2 for resurrect), so a `botmux restart` issued from an agent's
92
+ * non-interactive shell — Claude Code / Codex tool shells export NO_COLOR=1,
93
+ * CODEX_CI=1, PAGER=cat, plus the terminal-app identity of whatever terminal
94
+ * hosted them — bakes "you have no colors, you are in CI" into every daemon,
95
+ * which every worker and session PTY then inherits: all bot CLI TUIs render
96
+ * colorless, and TERMINFO can even point at a terminal app's private terminfo
97
+ * dir. A daemon is a headless service: every key here describes the invoker's
98
+ * terminal or harness, never the machine, so deleting them at the pm2
99
+ * boundary is always correct. Session PTYs set their own TERM (the backends
100
+ * spawn with name 'xterm-256color'), and a user who wants genuinely colorless
101
+ * bots keeps the per-bot `env` channel — like CLAUDE_EFFORT, the ambient
102
+ * "export it in the shell that runs `botmux restart`" channel is sacrificed
103
+ * because at this boundary it cannot be told apart from contamination.
104
+ */
105
+ export declare const INVOKER_TERMINAL_ENV_KEYS: readonly ["NO_COLOR", "FORCE_COLOR", "CLICOLOR", "CLICOLOR_FORCE", "TERM", "COLORTERM", "TERMINFO", "TERM_PROGRAM", "TERM_PROGRAM_VERSION", "TERM_SESSION_ID", "CI", "CODEX_CI", "PAGER", "GIT_PAGER", "GH_PAGER"];
106
+ /** Delete inherited invoker-terminal fingerprints from `env` in place. */
107
+ export declare function scrubInvokerTerminalEnv(env: NodeJS.ProcessEnv): void;
46
108
  /**
47
109
  * Env vars that must never reach a spawned CLI child. The bot's IM-app creds
48
110
  * (a child CLI's own Lark OAuth reads `process.env.LARK_APP_ID` as the app to
49
111
  * authorize and gets hijacked by the botmux IM app → no docs scopes → 403
50
- * loop), daemon-side GitHub API tokens, and claude-code's session markers
112
+ * loop), daemon-side GitHub API tokens, the Dashboard-only Feishu H5 login
113
+ * credentials (DASHBOARD_H5_ENV_KEYS), and claude-code's session markers
51
114
  * (CLAUDE_SESSION_MARKER_ENV_KEYS). The
52
115
  * child resolves Lark via the namespaced `BOTMUX_LARK_APP_ID` or via bots.json
53
116
  * on disk (im/lark/client.ts); the worker keeps its own bare creds
@@ -59,7 +122,7 @@ export declare function scrubClaudeSessionMarkerEnv(env: NodeJS.ProcessEnv): voi
59
122
  * client env can't override, so the shell wrapper `unset`s them before exec
60
123
  * (see SHELL_WRAPPER_SCRIPT in tmux-backend.ts).
61
124
  */
62
- export declare const REDACTED_CHILD_ENV_KEYS: readonly ["LARK_APP_ID", "LARK_APP_SECRET", "GITHUB_TOKEN", "GH_TOKEN", "CLAUDECODE", "CLAUDE_CODE_CHILD_SESSION", "CLAUDE_CODE_SESSION_ID", "CLAUDE_CODE_ENTRYPOINT", "CLAUDE_CODE_EXECPATH", "CLAUDE_PID", "TMUX", "TMUX_PANE", "BOTMUX_PM2_GRACEFUL_EXIT_CODE"];
125
+ export declare const REDACTED_CHILD_ENV_KEYS: readonly ["LARK_APP_ID", "LARK_APP_SECRET", "GITHUB_TOKEN", "GH_TOKEN", "BOTMUX_DASHBOARD_FEISHU_H5_ENABLED", "BOTMUX_DASHBOARD_FEISHU_H5_BRAND", "BOTMUX_DASHBOARD_FEISHU_H5_APP_ID", "BOTMUX_DASHBOARD_FEISHU_H5_APP_SECRET", "BOTMUX_DASHBOARD_FEISHU_H5_ALLOWED_OPEN_IDS", "BOTMUX_DASHBOARD_FEISHU_H5_ENTRY_PATH", "BOTMUX_DASHBOARD_FEISHU_H5_SESSION_TTL_MS", "BOTMUX_DASHBOARD_FEISHU_H5_SECURE_COOKIE", "BOTMUX_DASHBOARD_FEISHU_H5_TRUSTED_PROXY_HOPS", "CLAUDECODE", "CLAUDE_CODE_CHILD_SESSION", "CLAUDE_CODE_SESSION_ID", "CLAUDE_CODE_ENTRYPOINT", "CLAUDE_CODE_EXECPATH", "CLAUDE_PID", "TMUX", "TMUX_PANE", "BOTMUX_PM2_GRACEFUL_EXIT_CODE"];
63
126
  /**
64
127
  * Session-level CLI data-root pointers: claude-family → CLAUDE_CONFIG_DIR,
65
128
  * codex → CODEX_HOME. Botmux computes these PER SESSION (read isolation pins
@@ -128,6 +191,33 @@ export declare function scrubSessionCliHomeEnv(env: NodeJS.ProcessEnv): void;
128
191
  * into its global env either.
129
192
  */
130
193
  export declare const BOTMUX_INJECTED_ENV_KEYS: readonly ["__OWNER_OPEN_ID", "BOTMUX", "SESSION_DATA_DIR", "IS_SANDBOX", "BOTMUX_SESSION_ID", "BOTMUX_CHAT_ID", "BOTMUX_MCP_GATEWAY_SOCKET", "BOTMUX_MCP_GATEWAY_REQUIRED", "BOTMUX_CHAT_TYPE", "BOTMUX_LARK_APP_ID", "BOTS_CONFIG", "BOTMUX_ROOT_MESSAGE_ID", "BOTMUX_OWNER_OPEN_ID", "BOTMUX_TURN_ID", "BOTMUX_DISPATCH_ATTEMPT", "BOTMUX_BRAND_LABEL", "BOTMUX_READ_ISOLATION", "BOTMUX_API_ONLY", "BOTMUX_USAGE_DISPLAY", "BOTMUX_PI_INITIAL_PROMPT_FILE", "BOTMUX_DAEMON_IPC_PORT", "BOTMUX_READ_ISOLATED", "BOTMUX_ORIGIN_CHANNEL_ID", "BOTMUX_LARK_LIST_BOTS_API_ENABLED", "BOTMUX_LARK_LIST_BOTS_API_TIMEOUT_MS", "BOTMUX_READY_COMMAND", "BOTMUX_CODEX_APP_CONTROL_BOOTSTRAP", "HERMES_HOME", "HERMES_BOTMUX_SOURCE_HOME", "HERMES_BOTMUX_PROFILES_ROOT", "CLAUDE_CONFIG_DIR", "CODEX_HOME", "CLAUDE_CODE_RESUME_TOKEN_THRESHOLD", "CJADK_INTERACTIVE"];
194
+ /**
195
+ * Session-only botmux identity and capabilities of the process that invoked a
196
+ * pm2 mutation. A `botmux restart` issued from inside a bot session carries
197
+ * that session's routing identity and capabilities; persisted by pm2 into the
198
+ * fleet, every daemon then carries a stale foreign turn identity, and a
199
+ * plugin service started from the same env would misroute its own
200
+ * `botmux send` to a long-dead thread.
201
+ *
202
+ * This is a DELIBERATELY hand-maintained list. It is NOT derived from
203
+ * BOTMUX_INJECTED_ENV_KEYS: that list is the tmux/pane TRANSPORT whitelist
204
+ * and mixes session-only keys with ambient/daemon config that merely needs
205
+ * pane delivery (CLAUDE_CODE_RESUME_TOKEN_THRESHOLD is ambient-only — worker
206
+ * reads it from its own process.env and per-bot env REJECTS it, so a boot
207
+ * scrub would silently kill the user's setting; HERMES_HOME and the two
208
+ * HERMES_BOTMUX_* roots are ambient install-location config nothing in
209
+ * botmux ever sets, same contract as GROK_HOME; BOTS_CONFIG /
210
+ * SESSION_DATA_DIR / BOTMUX_LARK_LIST_BOTS_API_* are documented ambient or
211
+ * ecosystem-block config). The reverse also holds: session/sandbox routing
212
+ * keys the pane transport never carries (BOTMUX_SESSION_SCOPE,
213
+ * BOTMUX_SEND_RELAY) still need scrubbing here. Every entry below is
214
+ * session-scoped BY CONSTRUCTION: the daemon/worker computes and injects it
215
+ * per session AFTER every boundary scrub, and no ambient/env-file channel for
216
+ * it exists.
217
+ */
218
+ export declare const SESSION_TURN_MARKER_ENV_KEYS: readonly ["BOTMUX", "BOTMUX_SESSION_ID", "BOTMUX_CHAT_ID", "BOTMUX_CHAT_TYPE", "BOTMUX_ROOT_MESSAGE_ID", "BOTMUX_TURN_ID", "BOTMUX_DISPATCH_ATTEMPT", "BOTMUX_SESSION_SCOPE", "BOTMUX_OWNER_OPEN_ID", "__OWNER_OPEN_ID", "BOTMUX_ORIGIN_CHANNEL_ID", "BOTMUX_SEND_RELAY", "BOTMUX_MCP_GATEWAY_SOCKET", "BOTMUX_MCP_GATEWAY_REQUIRED", "BOTMUX_DAEMON_IPC_PORT", "BOTMUX_READ_ISOLATION", "BOTMUX_READ_ISOLATED", "BOTMUX_API_ONLY", "IS_SANDBOX", "BOTMUX_BRAND_LABEL", "BOTMUX_USAGE_DISPLAY", "BOTMUX_PI_INITIAL_PROMPT_FILE", "BOTMUX_CODEX_APP_CONTROL_BOOTSTRAP", "BOTMUX_READY_COMMAND", "BOTMUX_LARK_APP_ID", "CJADK_INTERACTIVE"];
219
+ /** Delete inherited session-only identity/capabilities from `env` in place. */
220
+ export declare function scrubSessionTurnMarkerEnv(env: NodeJS.ProcessEnv): void;
131
221
  /** Proxy env vars that must reach the CLI child process so it can dial the
132
222
  * upstream API on hosts without direct internet access. Forwarded explicitly
133
223
  * by buildBotmuxEnvAssignments (tmux/tmux-pipe/zellij backends) and
@@ -1 +1 @@
1
- {"version":3,"file":"child-env.d.ts","sourceRoot":"","sources":["../../src/utils/child-env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,8BAA8B,gJAOjC,CAAC;AAEX;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,wBAAwB,sQAW3B,CAAC;AAEX,0EAA0E;AAC1E,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAEnE;AAeD;;;;;;eAMe;AACf,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAGxE;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,uBAAuB,oQA8B1B,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,eAAO,MAAM,yBAAyB,8CAA+C,CAAC;AAEtF;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,WAAW,EAAE,MAAM,GAAG,SAAS,GAC9B,IAAI,CAQN;AAED;;;iBAGiB;AACjB,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAEnE;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,wBAAwB,k0BAuF3B,CAAC;AAEX;;;;;;;4DAO4D;AAC5D,eAAO,MAAM,cAAc,uHAGjB,CAAC;AA2BX;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED;;;;;GAKG;AACH,wBAAgB,qCAAqC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE1E;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAIzE"}
1
+ {"version":3,"file":"child-env.d.ts","sourceRoot":"","sources":["../../src/utils/child-env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,8BAA8B,gJAOjC,CAAC;AAEX;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,wBAAwB,sQAW3B,CAAC;AAEX,0EAA0E;AAC1E,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAEnE;AAeD;;;;;;eAMe;AACf,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAGxE;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,uBAAuB,gCAAgC,CAAC;AAErE,eAAO,MAAM,qBAAqB,qYAUxB,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAKhE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,yBAAyB,oNAwB5B,CAAC;AAEX,0EAA0E;AAC1E,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAEpE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,uBAAuB,8nBAoC1B,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,eAAO,MAAM,yBAAyB,8CAA+C,CAAC;AAEtF;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,WAAW,EAAE,MAAM,GAAG,SAAS,GAC9B,IAAI,CAQN;AAED;;;iBAGiB;AACjB,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAEnE;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,wBAAwB,k0BAuF3B,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,4BAA4B,2mBA6C/B,CAAC;AAEX,+EAA+E;AAC/E,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAEtE;AAED;;;;;;;4DAO4D;AAC5D,eAAO,MAAM,cAAc,uHAGjB,CAAC;AA2BX;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED;;;;;GAKG;AACH,wBAAgB,qCAAqC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE1E;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAUzE"}
@@ -81,11 +81,118 @@ export function scrubClaudeSessionMarkerEnv(env) {
81
81
  for (const key of BOUNDARY_ONLY_CLAUDE_ENV_KEYS)
82
82
  delete env[key];
83
83
  }
84
+ /**
85
+ * Dashboard-only Feishu/Lark H5 passwordless-login configuration. Every key in
86
+ * this family is read by ONE consumer — resolveDashboardH5AuthConfig() in
87
+ * src/dashboard/h5-auth.ts, inside the dashboard process — and by nothing else
88
+ * in the fleet. A session's CLI child has no reason to see any of it, and
89
+ * `..._APP_SECRET` is a full Feishu app credential: whoever holds it can mint
90
+ * app_access_token for the H5 login app, i.e. forge the identity the Dashboard
91
+ * authenticates on. The daemon loads ~/.botmux/.env wholesale (index-daemon.ts
92
+ * dotenv), so without this scrub the secret rode into every PTY/direct CLI
93
+ * child and every one-shot the daemon forks (session group-title).
94
+ *
95
+ * Redaction is BOTH belt and braces:
96
+ * - these exact names sit in REDACTED_CHILD_ENV_KEYS, which also drives the
97
+ * tmux pane wrapper's `unset` clause and the tmux client-env strip;
98
+ * - redactChildEnv() additionally sweeps the whole
99
+ * {@link DASHBOARD_H5_ENV_PREFIX}, so a future H5 knob is redacted the day
100
+ * it is added rather than the day someone remembers this list.
101
+ */
102
+ export const DASHBOARD_H5_ENV_PREFIX = 'BOTMUX_DASHBOARD_FEISHU_H5_';
103
+ export const DASHBOARD_H5_ENV_KEYS = [
104
+ 'BOTMUX_DASHBOARD_FEISHU_H5_ENABLED',
105
+ 'BOTMUX_DASHBOARD_FEISHU_H5_BRAND',
106
+ 'BOTMUX_DASHBOARD_FEISHU_H5_APP_ID',
107
+ 'BOTMUX_DASHBOARD_FEISHU_H5_APP_SECRET',
108
+ 'BOTMUX_DASHBOARD_FEISHU_H5_ALLOWED_OPEN_IDS',
109
+ 'BOTMUX_DASHBOARD_FEISHU_H5_ENTRY_PATH',
110
+ 'BOTMUX_DASHBOARD_FEISHU_H5_SESSION_TTL_MS',
111
+ 'BOTMUX_DASHBOARD_FEISHU_H5_SECURE_COOKIE',
112
+ 'BOTMUX_DASHBOARD_FEISHU_H5_TRUSTED_PROXY_HOPS',
113
+ ];
114
+ /**
115
+ * Delete the entire Dashboard-only Feishu H5 login family from `env` IN PLACE:
116
+ * every named key in {@link DASHBOARD_H5_ENV_KEYS} plus a
117
+ * {@link DASHBOARD_H5_ENV_PREFIX} sweep, so a knob added tomorrow is stripped
118
+ * the day it ships rather than the day someone extends the list.
119
+ *
120
+ * The Dashboard is the family's ONLY consumer, and it receives the values by
121
+ * dotenv-loading ~/.botmux/.env itself (index-dashboard.ts) — NOT through the
122
+ * shared PM2 env block (the H5 keys are deliberately absent from
123
+ * DAEMON_ENV_KEYS). Every other botmux-owned process must therefore hold none
124
+ * of it. Call sites:
125
+ * - index-daemon.ts boot: the daemon dotenv-loads the same .env wholesale, so
126
+ * it must drop the family right after dotenv — a daemon holding the H5
127
+ * APP_SECRET can mint app_access_token for the Dashboard's login app.
128
+ * - core/maintenance.ts detachedRestartEnv(): the detached `botmux restart`
129
+ * the DASHBOARD spawns (update/restart button) inherits the dashboard's env,
130
+ * which legitimately holds the secrets; the restart driver does not need
131
+ * them and must not carry them toward pm2.
132
+ * redactChildEnv() keeps its own equivalent strip as the second line of
133
+ * defense at every CLI-child boundary (PTY/tmux pane unset/one-shot).
134
+ */
135
+ export function stripDashboardH5Env(env) {
136
+ for (const key of DASHBOARD_H5_ENV_KEYS)
137
+ delete env[key];
138
+ for (const key of Object.keys(env)) {
139
+ if (key.startsWith(DASHBOARD_H5_ENV_PREFIX))
140
+ delete env[key];
141
+ }
142
+ }
143
+ /**
144
+ * Terminal/interactivity fingerprints of whichever process invoked a pm2
145
+ * mutation. pm2 persists the caller's env into every managed app (and into
146
+ * dump.pm2 for resurrect), so a `botmux restart` issued from an agent's
147
+ * non-interactive shell — Claude Code / Codex tool shells export NO_COLOR=1,
148
+ * CODEX_CI=1, PAGER=cat, plus the terminal-app identity of whatever terminal
149
+ * hosted them — bakes "you have no colors, you are in CI" into every daemon,
150
+ * which every worker and session PTY then inherits: all bot CLI TUIs render
151
+ * colorless, and TERMINFO can even point at a terminal app's private terminfo
152
+ * dir. A daemon is a headless service: every key here describes the invoker's
153
+ * terminal or harness, never the machine, so deleting them at the pm2
154
+ * boundary is always correct. Session PTYs set their own TERM (the backends
155
+ * spawn with name 'xterm-256color'), and a user who wants genuinely colorless
156
+ * bots keeps the per-bot `env` channel — like CLAUDE_EFFORT, the ambient
157
+ * "export it in the shell that runs `botmux restart`" channel is sacrificed
158
+ * because at this boundary it cannot be told apart from contamination.
159
+ */
160
+ export const INVOKER_TERMINAL_ENV_KEYS = [
161
+ // Color semantics
162
+ 'NO_COLOR',
163
+ 'FORCE_COLOR',
164
+ 'CLICOLOR',
165
+ 'CLICOLOR_FORCE',
166
+ // Terminal identity. TERMINFO is a single-directory override that terminal
167
+ // apps export for their own private terminfo bundle — invoker-scoped.
168
+ // TERMINFO_DIRS is deliberately ABSENT: it is a search-path list that
169
+ // NixOS/home-manager and custom-ncurses setups configure machine-wide, and
170
+ // deleting it would break terminfo resolution for every PTY on such hosts.
171
+ 'TERM',
172
+ 'COLORTERM',
173
+ 'TERMINFO',
174
+ 'TERM_PROGRAM',
175
+ 'TERM_PROGRAM_VERSION',
176
+ 'TERM_SESSION_ID',
177
+ // CI / agent-harness flags
178
+ 'CI',
179
+ 'CODEX_CI',
180
+ // Non-interactive pager pins agent shells export for their own subcommands
181
+ 'PAGER',
182
+ 'GIT_PAGER',
183
+ 'GH_PAGER',
184
+ ];
185
+ /** Delete inherited invoker-terminal fingerprints from `env` in place. */
186
+ export function scrubInvokerTerminalEnv(env) {
187
+ for (const key of INVOKER_TERMINAL_ENV_KEYS)
188
+ delete env[key];
189
+ }
84
190
  /**
85
191
  * Env vars that must never reach a spawned CLI child. The bot's IM-app creds
86
192
  * (a child CLI's own Lark OAuth reads `process.env.LARK_APP_ID` as the app to
87
193
  * authorize and gets hijacked by the botmux IM app → no docs scopes → 403
88
- * loop), daemon-side GitHub API tokens, and claude-code's session markers
194
+ * loop), daemon-side GitHub API tokens, the Dashboard-only Feishu H5 login
195
+ * credentials (DASHBOARD_H5_ENV_KEYS), and claude-code's session markers
89
196
  * (CLAUDE_SESSION_MARKER_ENV_KEYS). The
90
197
  * child resolves Lark via the namespaced `BOTMUX_LARK_APP_ID` or via bots.json
91
198
  * on disk (im/lark/client.ts); the worker keeps its own bare creds
@@ -102,6 +209,12 @@ export const REDACTED_CHILD_ENV_KEYS = [
102
209
  'LARK_APP_SECRET',
103
210
  'GITHUB_TOKEN',
104
211
  'GH_TOKEN',
212
+ // Dashboard-only Feishu H5 login config/credential family — see
213
+ // DASHBOARD_H5_ENV_KEYS. Listed by exact name (not only swept by prefix in
214
+ // redactChildEnv) so the tmux pane wrapper `unset`s them too: on that backend
215
+ // the pane inherits the tmux SERVER's global env, which the client env cannot
216
+ // override.
217
+ ...DASHBOARD_H5_ENV_KEYS,
105
218
  ...CLAUDE_SESSION_MARKER_ENV_KEYS,
106
219
  // Parent-tmux client vars: when the daemon itself was started inside a tmux
107
220
  // session, process.env carries TMUX (server socket path) + TMUX_PANE. Leaking
@@ -294,6 +407,81 @@ export const BOTMUX_INJECTED_ENV_KEYS = [
294
407
  'CLAUDE_CODE_RESUME_TOKEN_THRESHOLD',
295
408
  'CJADK_INTERACTIVE',
296
409
  ];
410
+ /**
411
+ * Session-only botmux identity and capabilities of the process that invoked a
412
+ * pm2 mutation. A `botmux restart` issued from inside a bot session carries
413
+ * that session's routing identity and capabilities; persisted by pm2 into the
414
+ * fleet, every daemon then carries a stale foreign turn identity, and a
415
+ * plugin service started from the same env would misroute its own
416
+ * `botmux send` to a long-dead thread.
417
+ *
418
+ * This is a DELIBERATELY hand-maintained list. It is NOT derived from
419
+ * BOTMUX_INJECTED_ENV_KEYS: that list is the tmux/pane TRANSPORT whitelist
420
+ * and mixes session-only keys with ambient/daemon config that merely needs
421
+ * pane delivery (CLAUDE_CODE_RESUME_TOKEN_THRESHOLD is ambient-only — worker
422
+ * reads it from its own process.env and per-bot env REJECTS it, so a boot
423
+ * scrub would silently kill the user's setting; HERMES_HOME and the two
424
+ * HERMES_BOTMUX_* roots are ambient install-location config nothing in
425
+ * botmux ever sets, same contract as GROK_HOME; BOTS_CONFIG /
426
+ * SESSION_DATA_DIR / BOTMUX_LARK_LIST_BOTS_API_* are documented ambient or
427
+ * ecosystem-block config). The reverse also holds: session/sandbox routing
428
+ * keys the pane transport never carries (BOTMUX_SESSION_SCOPE,
429
+ * BOTMUX_SEND_RELAY) still need scrubbing here. Every entry below is
430
+ * session-scoped BY CONSTRUCTION: the daemon/worker computes and injects it
431
+ * per session AFTER every boundary scrub, and no ambient/env-file channel for
432
+ * it exists.
433
+ */
434
+ export const SESSION_TURN_MARKER_ENV_KEYS = [
435
+ // "Runs inside botmux" pane marker; pane wrapper injects it per session.
436
+ 'BOTMUX',
437
+ // Turn/session routing identity (worker-injected per pane/turn).
438
+ 'BOTMUX_SESSION_ID',
439
+ 'BOTMUX_CHAT_ID',
440
+ 'BOTMUX_CHAT_TYPE',
441
+ 'BOTMUX_ROOT_MESSAGE_ID',
442
+ 'BOTMUX_TURN_ID',
443
+ 'BOTMUX_DISPATCH_ATTEMPT',
444
+ // thread|chat scope, computed per session from rootMessageId (worker.ts).
445
+ 'BOTMUX_SESSION_SCOPE',
446
+ // Daemon-authenticated session owner, both channels (applySessionOwnerEnv).
447
+ 'BOTMUX_OWNER_OPEN_ID',
448
+ '__OWNER_OPEN_ID',
449
+ // Unguessable pane/profile authority channel (daemon-rotated capability).
450
+ 'BOTMUX_ORIGIN_CHANNEL_ID',
451
+ // Sandbox send-relay directory — a per-session capability path.
452
+ 'BOTMUX_SEND_RELAY',
453
+ // Session-scoped MCP gateway capability + fail-closed marker.
454
+ 'BOTMUX_MCP_GATEWAY_SOCKET',
455
+ 'BOTMUX_MCP_GATEWAY_REQUIRED',
456
+ // Owning daemon's per-boot IPC port; the daemon self-sets the real value at
457
+ // boot (daemon.ts), so an inherited copy is always a stale foreign port.
458
+ 'BOTMUX_DAEMON_IPC_PORT',
459
+ // Per-session read-isolation / apiOnly / sandbox verdicts (worker-owned).
460
+ 'BOTMUX_READ_ISOLATION',
461
+ 'BOTMUX_READ_ISOLATED',
462
+ 'BOTMUX_API_ONLY',
463
+ 'IS_SANDBOX',
464
+ // Per-session display footer resolved from bots.json (never env-configured).
465
+ 'BOTMUX_BRAND_LABEL',
466
+ // Per-bot usage display, resolved via resolveUsageDisplay(cfg) per session;
467
+ // env is never a config input for it.
468
+ 'BOTMUX_USAGE_DISPLAY',
469
+ // One-shot per-session artifacts/paths.
470
+ 'BOTMUX_PI_INITIAL_PROMPT_FILE',
471
+ 'BOTMUX_CODEX_APP_CONTROL_BOOTSTRAP',
472
+ // Ready-gate hook command, sessionReadyHookCommand() per session.
473
+ 'BOTMUX_READY_COMMAND',
474
+ // Per-app value pinned by the ecosystemConfig env block; an inherited copy
475
+ // is untrusted (the daemon resolves its bot via BOTMUX_BOT_INDEX).
476
+ 'BOTMUX_LARK_APP_ID',
477
+ // cjadk wrapper-branch knob, set/deleted per spawn by the worker.
478
+ 'CJADK_INTERACTIVE',
479
+ ];
480
+ /** Delete inherited session-only identity/capabilities from `env` in place. */
481
+ export function scrubSessionTurnMarkerEnv(env) {
482
+ for (const key of SESSION_TURN_MARKER_ENV_KEYS)
483
+ delete env[key];
484
+ }
297
485
  /** Proxy env vars that must reach the CLI child process so it can dial the
298
486
  * upstream API on hosts without direct internet access. Forwarded explicitly
299
487
  * by buildBotmuxEnvAssignments (tmux/tmux-pipe/zellij backends) and
@@ -368,6 +556,12 @@ export function redactChildEnv(base) {
368
556
  const env = { ...base };
369
557
  for (const key of REDACTED_CHILD_ENV_KEYS)
370
558
  delete env[key];
559
+ // Minimum-exposure sweep for the Dashboard-only H5 login family: the named
560
+ // keys above are already gone, this also catches any BOTMUX_DASHBOARD_FEISHU_H5_*
561
+ // knob added later. No CLI child ever consumes one, so a prefix-wide strip
562
+ // cannot break a supported configuration channel. Same implementation as the
563
+ // daemon-boot / detached-restart strip so the two layers cannot drift.
564
+ stripDashboardH5Env(env);
371
565
  return env;
372
566
  }
373
567
  //# sourceMappingURL=child-env.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"child-env.js","sourceRoot":"","sources":["../../src/utils/child-env.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"child-env.js","sourceRoot":"","sources":["../../src/utils/child-env.ts"],"names":[],"mappings":"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"}
@@ -24,24 +24,35 @@ export interface DetectUsageLimitOptions {
24
24
  }
25
25
  /**
26
26
  * Whether a CLI adapter is authoritative for structured rate limits — i.e. it
27
- * actually PUBLISHES a `limited` screen_update from its transcript. Only the
28
- * Claude family does (via the worker's `maybeEmitStructuredRateLimit` on the
29
- * `bridgeJsonlPath` path), and it is exactly the adapters that carry
30
- * `claudeDataDir`. When true, the worker passes `suppressRateKind` so the
31
- * screen-scan `rate` verdict is suppressed in favor of the structured signal.
27
+ * actually PUBLISHES a `limited` screen_update from a machine signal in its
28
+ * transcript rather than from scraping screen text. Two families qualify:
32
29
  *
33
- * Gate on `claudeDataDir`, NOT `reliableTurnTerminal`: the codexBridgeQueue
34
- * CLIs emit NO structured `limited` state, so suppressing their screen `rate`
35
- * would drop the Dashboard「需要你」signal + backoff on a real 429. Most of
36
- * them (codex / grok / traex) DO set `reliableTurnTerminal`, so gating on that
37
- * flag would wrongly suppress them; pi is also codexBridgeQueue-backed but does
38
- * not set it either way, none carry `claudeDataDir`, so all correctly stay
39
- * screen-scanning. Extracted as a pure predicate so the split has a direct
40
- * unit-test surface (see cli-usage-limit.test.ts) — a future adapter can't
41
- * silently re-broaden it.
30
+ * - The Claude family (`claudeDataDir`): the worker's
31
+ * `maybeEmitStructuredRateLimit` reads the transcript's `error:"rate_limit"`
32
+ * record on the `bridgeJsonlPath` path.
33
+ * - Codex (`emitsStructuredRateLimit`): `maybeEmitCodexStructuredRateLimit`
34
+ * reads the rollout's `codex_rate_limited` terminal (`isCodexRateLimitEvent`)
35
+ * and emits `limited`. This emit runs only under the `structuredBridgeIsCodex`
36
+ * gate, so among codexBridgeQueue CLIs only codex sets the flag.
37
+ *
38
+ * When true the worker passes `suppressRateKind` so the screen-scan `rate`
39
+ * verdict is dropped in favor of the structured signal — otherwise the model's
40
+ * own output (or a dev editing rate-limit code) puts "429" / "exceeded retry
41
+ * limit" on screen and the scraper cannot tell a printed 429 from a request
42
+ * that actually returned 429.
43
+ *
44
+ * The other codexBridgeQueue CLIs (grok / traex / pi / hermes / mtr / cursor)
45
+ * emit NO structured `limited` state, so they must keep screen-scanning: set
46
+ * neither field on them or a real 429 silently loses its backoff + Dashboard
47
+ * 「需要你」signal. Most set `reliableTurnTerminal`, so gating on that flag would
48
+ * wrongly suppress them; gating on these two explicit capability fields keeps
49
+ * the split exact. Extracted as a pure predicate so it has a direct unit-test
50
+ * surface (see cli-usage-limit.test.ts) — a future adapter can't silently
51
+ * re-broaden it.
42
52
  */
43
53
  export declare function isStructuredRateLimitAuthoritative(adapter: {
44
54
  readonly claudeDataDir?: string;
55
+ readonly emitsStructuredRateLimit?: boolean;
45
56
  } | null | undefined): boolean;
46
57
  export declare function detectCliUsageLimit(text: string, now?: Date, opts?: DetectUsageLimitOptions): CliUsageLimitDetection;
47
58
  export declare function usageLimitStateKey(state: CliUsageLimitState): string;
@@ -1 +1 @@
1
- {"version":3,"file":"cli-usage-limit.d.ts","sourceRoot":"","sources":["../../src/utils/cli-usage-limit.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,MAAM,CAAC;AAEjD,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,IAAI,CAAC;IACd,IAAI,EAAE,iBAAiB,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,KAAK,CAAC;CAChB;AAED,MAAM,MAAM,sBAAsB,GAAG,kBAAkB,GAAG,wBAAwB,CAAC;AAoCnF,eAAO,MAAM,2BAA2B,QAAgB,CAAC;AA0DzD,MAAM,WAAW,uBAAuB;IACtC;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,kCAAkC,CAChD,OAAO,EAAE;IAAE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,GAC9D,OAAO,CAET;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,GAAG,OAAa,EAChB,IAAI,GAAE,uBAA4B,GACjC,sBAAsB,CAsCxB;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,CAEpE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,SAAK,EAAE,GAAG,OAAa,GAAG,kBAAkB,CAUxF"}
1
+ {"version":3,"file":"cli-usage-limit.d.ts","sourceRoot":"","sources":["../../src/utils/cli-usage-limit.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,MAAM,CAAC;AAEjD,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,IAAI,CAAC;IACd,IAAI,EAAE,iBAAiB,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,KAAK,CAAC;CAChB;AAED,MAAM,MAAM,sBAAsB,GAAG,kBAAkB,GAAG,wBAAwB,CAAC;AAoCnF,eAAO,MAAM,2BAA2B,QAAgB,CAAC;AA0DzD,MAAM,WAAW,uBAAuB;IACtC;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,kCAAkC,CAChD,OAAO,EAAE;IAAE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,GAC3G,OAAO,CAET;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,GAAG,OAAa,EAChB,IAAI,GAAE,uBAA4B,GACjC,sBAAsB,CAsCxB;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,CAEpE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,SAAK,EAAE,GAAG,OAAa,GAAG,kBAAkB,CAUxF"}
@@ -84,24 +84,34 @@ function hardRateLimitFallbackTime(now) {
84
84
  }
85
85
  /**
86
86
  * Whether a CLI adapter is authoritative for structured rate limits — i.e. it
87
- * actually PUBLISHES a `limited` screen_update from its transcript. Only the
88
- * Claude family does (via the worker's `maybeEmitStructuredRateLimit` on the
89
- * `bridgeJsonlPath` path), and it is exactly the adapters that carry
90
- * `claudeDataDir`. When true, the worker passes `suppressRateKind` so the
91
- * screen-scan `rate` verdict is suppressed in favor of the structured signal.
87
+ * actually PUBLISHES a `limited` screen_update from a machine signal in its
88
+ * transcript rather than from scraping screen text. Two families qualify:
92
89
  *
93
- * Gate on `claudeDataDir`, NOT `reliableTurnTerminal`: the codexBridgeQueue
94
- * CLIs emit NO structured `limited` state, so suppressing their screen `rate`
95
- * would drop the Dashboard「需要你」signal + backoff on a real 429. Most of
96
- * them (codex / grok / traex) DO set `reliableTurnTerminal`, so gating on that
97
- * flag would wrongly suppress them; pi is also codexBridgeQueue-backed but does
98
- * not set it either way, none carry `claudeDataDir`, so all correctly stay
99
- * screen-scanning. Extracted as a pure predicate so the split has a direct
100
- * unit-test surface (see cli-usage-limit.test.ts) — a future adapter can't
101
- * silently re-broaden it.
90
+ * - The Claude family (`claudeDataDir`): the worker's
91
+ * `maybeEmitStructuredRateLimit` reads the transcript's `error:"rate_limit"`
92
+ * record on the `bridgeJsonlPath` path.
93
+ * - Codex (`emitsStructuredRateLimit`): `maybeEmitCodexStructuredRateLimit`
94
+ * reads the rollout's `codex_rate_limited` terminal (`isCodexRateLimitEvent`)
95
+ * and emits `limited`. This emit runs only under the `structuredBridgeIsCodex`
96
+ * gate, so among codexBridgeQueue CLIs only codex sets the flag.
97
+ *
98
+ * When true the worker passes `suppressRateKind` so the screen-scan `rate`
99
+ * verdict is dropped in favor of the structured signal — otherwise the model's
100
+ * own output (or a dev editing rate-limit code) puts "429" / "exceeded retry
101
+ * limit" on screen and the scraper cannot tell a printed 429 from a request
102
+ * that actually returned 429.
103
+ *
104
+ * The other codexBridgeQueue CLIs (grok / traex / pi / hermes / mtr / cursor)
105
+ * emit NO structured `limited` state, so they must keep screen-scanning: set
106
+ * neither field on them or a real 429 silently loses its backoff + Dashboard
107
+ * 「需要你」signal. Most set `reliableTurnTerminal`, so gating on that flag would
108
+ * wrongly suppress them; gating on these two explicit capability fields keeps
109
+ * the split exact. Extracted as a pure predicate so it has a direct unit-test
110
+ * surface (see cli-usage-limit.test.ts) — a future adapter can't silently
111
+ * re-broaden it.
102
112
  */
103
113
  export function isStructuredRateLimitAuthoritative(adapter) {
104
- return !!adapter?.claudeDataDir;
114
+ return !!adapter?.claudeDataDir || !!adapter?.emitsStructuredRateLimit;
105
115
  }
106
116
  export function detectCliUsageLimit(text, now = new Date(), opts = {}) {
107
117
  // Hot path: runs on every screen tick for every active session. Gate heavier
@@ -1 +1 @@
1
- {"version":3,"file":"cli-usage-limit.js","sourceRoot":"","sources":["../../src/utils/cli-usage-limit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli-usage-limit.js","sourceRoot":"","sources":["../../src/utils/cli-usage-limit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /** Minimal sink so tests can capture without touching the real logger. */
2
+ export interface RejectionLogSink {
3
+ error(msg: string): void;
4
+ }
5
+ /**
6
+ * Render a rejection reason for the log.
7
+ *
8
+ * Prefers the stack: without it an `unhandledRejection` report is close to
9
+ * useless, because the throw site is exactly what the caller failed to observe.
10
+ * Non-Error reasons (a rejected string, a plain object) still have to produce
11
+ * something readable, since `String({})` alone would log "[object Object]".
12
+ */
13
+ export declare function formatRejectionReason(reason: unknown): string;
14
+ /**
15
+ * The handler body, exported so a test can drive it directly instead of
16
+ * emitting a real process-level event (which would leak across test files).
17
+ *
18
+ * Returns whether the rejection was logged; a broken-pipe-class reason is
19
+ * dropped for the same reason stdio-epipe-guard drops it, and reporting that
20
+ * would just add noise on every detached pm2 log stream.
21
+ */
22
+ export declare function handleDaemonUnhandledRejection(reason: unknown, sink: RejectionLogSink): boolean;
23
+ /**
24
+ * Install the daemon-side guard. Idempotent, so multiple entry points may call
25
+ * it. Returns true if it installed on this call.
26
+ *
27
+ * `target` is parameterized only so unit tests can inject a fake emitter rather
28
+ * than registering a listener on the real process for the whole test run.
29
+ */
30
+ export declare function installDaemonRejectionGuard(sink: RejectionLogSink, target?: {
31
+ on(event: 'unhandledRejection', cb: (reason: unknown) => void): unknown;
32
+ }): boolean;
33
+ /** Test-only reset of the idempotency latch. */
34
+ export declare function resetDaemonRejectionGuardForTest(): void;
35
+ //# sourceMappingURL=daemon-rejection-guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon-rejection-guard.d.ts","sourceRoot":"","sources":["../../src/utils/daemon-rejection-guard.ts"],"names":[],"mappings":"AAoCA,0EAA0E;AAC1E,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAID;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAa7D;AAED;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,OAAO,EACf,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAOT;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,gBAAgB,EACtB,MAAM,GAAE;IAAE,EAAE,CAAC,KAAK,EAAE,oBAAoB,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAA;CAAY,GAC5F,OAAO,CAYT;AAED,gDAAgD;AAChD,wBAAgB,gCAAgC,IAAI,IAAI,CAEvD"}