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
@@ -0,0 +1,575 @@
1
+ import type { TurnQuiescence } from '../adapters/backend/mojo-process-tree.js';
2
+ export interface StrongContainmentHandle {
3
+ kind: 'cgroup';
4
+ sessionId: string;
5
+ /** Worker generation that acquired it; kept for operator-facing logs only. */
6
+ generation: number;
7
+ /** Absolute cgroup v2 directory owning the turn subtree. */
8
+ cgroupPath: string;
9
+ /** Env nonce injected into the tree, so a degraded scan can still corroborate. */
10
+ nonce: string;
11
+ /**
12
+ * Boot id at mint time. A reboot provably kills the whole tree — including the
13
+ * same-UID sibling/parent migrant that cgroup emptiness cannot see — so a
14
+ * changed boot id is the ONE thing that lets a cgroup handle release (it is
15
+ * the same unforgeable fact a weak handle uses). Optional so a handle written
16
+ * by an older daemon (no bootId) still parses; such a legacy handle simply
17
+ * never gets the reboot proof and waits for an operator revoke.
18
+ */
19
+ bootId?: string;
20
+ }
21
+ export interface WeakContainmentHandle {
22
+ kind: 'tree-identity';
23
+ sessionId: string;
24
+ generation: number;
25
+ rootPid: number;
26
+ /** Boot identity, so a pid from a previous boot is never re-signalled. */
27
+ bootId: string;
28
+ /** `/proc/<pid>/stat` field 22, which makes pid reuse detectable. */
29
+ startTime: number;
30
+ nonce: string;
31
+ }
32
+ /**
33
+ * A tree we can neither contain nor describe.
34
+ *
35
+ * Reached when the host offers NO usable mechanism: no cgroup v2 delegation, and
36
+ * no readable boot id / starttime (a non-Linux host, or a locked-down /proc). The
37
+ * turn still spawned a credentialed child, so the honest record is not "nothing to
38
+ * track" — it is "something exists here that this host can never prove gone".
39
+ *
40
+ * Why this exists rather than returning null
41
+ * -----------------------------------------
42
+ * `acquireContainmentHandle` used to return null in this case, which meant the
43
+ * caller recorded NOTHING and `hasUnprovenContainment()` answered false — so the
44
+ * device-isolation blocker was not retained on exactly the platform that cannot
45
+ * prove anything. That inverted the intended fail-closed direction, and it did so
46
+ * silently, because "no handle" is indistinguishable from "no turn ever ran".
47
+ *
48
+ * An unprovable handle is deliberately a DEAD END: `proveContainmentQuiescent`
49
+ * can never return `proven: true` for it, so the type-level guard on
50
+ * `releaseContainmentHandle` makes it impossible to release. The session's blocker
51
+ * therefore stays for the lifetime of the record, which is the correct answer when
52
+ * a credentialed subtree existed and the host cannot ever demonstrate its death.
53
+ *
54
+ * The platform is recorded so an operator can tell "macOS, no cgroups" apart from
55
+ * "Linux with /proc unreadable" without re-deriving it.
56
+ */
57
+ export interface UnprovableContainmentHandle {
58
+ kind: 'unprovable';
59
+ sessionId: string;
60
+ generation: number;
61
+ nonce: string;
62
+ /** `process.platform` at acquisition time. */
63
+ platform: string;
64
+ /** Why nothing stronger could be minted, for operator-facing logs. */
65
+ reason: string;
66
+ }
67
+ export type ContainmentHandle = StrongContainmentHandle | WeakContainmentHandle | UnprovableContainmentHandle;
68
+ /**
69
+ * Result of asking "is everything this handle owns gone?".
70
+ *
71
+ * `proven: false` deliberately carries no "probably fine" variant: every
72
+ * non-proof (alive, unreadable, unsupported, timed out) is the same verdict to a
73
+ * caller, because all of them must keep the blocker.
74
+ */
75
+ export type QuiescenceVerdict = {
76
+ proven: true;
77
+ handle: ContainmentHandle;
78
+ reason?: string;
79
+ evidence?: QuiescenceEvidence;
80
+ } | {
81
+ proven: false;
82
+ handle: ContainmentHandle;
83
+ reason: string;
84
+ residualPids?: number[];
85
+ };
86
+ /**
87
+ * WHICH fact settled a `proven: true` verdict. The distinction is the entire
88
+ * safety argument of this module, so it is carried in the data instead of being
89
+ * re-derived by every caller:
90
+ *
91
+ * - `boot-id-changed`: the recorded tree cannot have survived the reboot that
92
+ * changed the kernel boot id, and a same-user child cannot fake a boot id ->
93
+ * THE boundary proof (the only one). Applies to a weak handle and, once its
94
+ * bootId is stamped, to a cgroup handle too.
95
+ * - `cgroup-empty` / `cgroup-zombie-only`: kernel membership shows the leaf
96
+ * subtree empty. DIAGNOSTIC ONLY, NOT a boundary proof: mojo runs at the
97
+ * daemon's UID and cgroup v2 lets a same-UID process migrate ITSELF out of
98
+ * the leaf (to the parent slice or a sibling), invisible to the leaf-down
99
+ * read. Good for stopping signals + killing (cgroup.kill), never for dropping
100
+ * device isolation.
101
+ * - `scan-clean`: a /proc subtree scan came back empty. DIAGNOSTIC ONLY: a
102
+ * descendant that calls setsid(), scrubs its own environ and reparents to
103
+ * init evades enumeration entirely, so this can never authorise dropping
104
+ * device isolation.
105
+ *
106
+ * An absent field is read as "the strongest thing this handle KIND could prove",
107
+ * for compatibility with hand-built verdicts; it can never be read as stronger
108
+ * than the handle kind allows.
109
+ */
110
+ export type QuiescenceEvidence = 'cgroup-empty' | 'cgroup-zombie-only' | 'boot-id-changed' | 'scan-clean';
111
+ /** What stays isolated after a close that could not prove its boundary. */
112
+ export interface ContainmentResidual {
113
+ /** True keeps the device-isolation blocker even though the session may close. */
114
+ deviceIsolation: boolean;
115
+ /** Pids the evidence named, when it named any. */
116
+ pids?: number[];
117
+ /** Operator-facing explanation of what is still unproven. */
118
+ reason?: string;
119
+ }
120
+ /**
121
+ * The single authority on "may this handle be forgotten, and may the blocker go?".
122
+ *
123
+ * `boundaryProof` is the only field that answer may consult, and unlike the
124
+ * previous revision that statement now has a real production consumer:
125
+ * `releaseContainmentHandle` branches on `releaseAuthorised` below, so a clean
126
+ * weak scan cannot reach the removal path at all.
127
+ */
128
+ export interface ContainmentReleaseDecision {
129
+ /** Unforgeable boundary evidence. The gate. */
130
+ boundaryProof: boolean;
131
+ /** `verdict.proven && boundaryProof` - the only state that removes a handle. */
132
+ releaseAuthorised: boolean;
133
+ /** Which fact was available, or `not-proven` when quiescence itself failed. */
134
+ evidence: QuiescenceEvidence | 'not-proven';
135
+ /** Non-null whenever the handle stays behind; null only on a real release. */
136
+ residual: ContainmentResidual | null;
137
+ /** May the caller stop re-signalling? True once quiescence itself is proven. */
138
+ signalsStopped: boolean;
139
+ }
140
+ /** Thrown instead of degrading to an empty (fail-open) handle store. */
141
+ export declare class MojoContainmentUnavailableError extends Error {
142
+ readonly cause?: unknown | undefined;
143
+ constructor(message: string, cause?: unknown | undefined);
144
+ }
145
+ /**
146
+ * Boot identity of the running kernel.
147
+ *
148
+ * Returns null when it cannot be read (non-Linux, or a locked-down /proc).
149
+ * Callers must treat null as "cannot mint a trustworthy weak handle", NOT as a
150
+ * blank value to store: a handle whose bootId is empty would compare equal
151
+ * across reboots and across hosts, resurrecting exactly the pid-reuse confusion
152
+ * the field exists to prevent.
153
+ */
154
+ export declare function readBootId(opts?: {
155
+ procRoot?: string;
156
+ }): string | null;
157
+ /**
158
+ * `/proc/<pid>/stat` field 22 (starttime, in clock ticks since boot).
159
+ *
160
+ * null means the pid is not currently live (or is unreadable), which is why the
161
+ * caller may never read null as "the tree is gone": the ROOT exiting says
162
+ * nothing about a descendant that called setsid().
163
+ *
164
+ * Field indexing has the same comm hazard as the scanner: field 2 is
165
+ * parenthesised and may contain spaces or ')', so the split starts after the LAST
166
+ * ')'. From there, index 0 is state (field 3), hence starttime (field 22) sits at
167
+ * index 19.
168
+ */
169
+ export declare function readProcStartTime(pid: number, opts?: {
170
+ procRoot?: string;
171
+ }): number | null;
172
+ /**
173
+ * Is a usable cgroup v2 hierarchy mounted?
174
+ *
175
+ * `cgroup.controllers` exists only on the v2 unified hierarchy, so its presence
176
+ * is the cheap discriminator against a v1-only host (where per-session
177
+ * containment via this module is not available).
178
+ */
179
+ export declare function cgroupV2Available(opts?: {
180
+ cgroupRoot?: string;
181
+ }): boolean;
182
+ /**
183
+ * Process state from `/proc/<pid>/stat` field 3, for zombie classification.
184
+ *
185
+ * 'zombie' — state Z: the process has exited and is only waiting to be
186
+ * reaped. It executes no instructions and cannot use a
187
+ * credential, but it REMAINS a member of its cgroup until the
188
+ * parent reaps it (and `rmdir` keeps failing while it does).
189
+ * 'running' — any other state. Treated as executing.
190
+ * 'gone' — ENOENT: the pid vanished between listing and reading, i.e.
191
+ * genuinely not a member any more (same race rule the scanner
192
+ * applies).
193
+ * 'unreadable' — anything else. Deliberately NOT merged into 'zombie': a state
194
+ * we cannot read must count as executing, or an EACCES becomes
195
+ * a free pass.
196
+ *
197
+ * DUPLICATED RULE — read before changing any of the three cases
198
+ * ------------------------------------------------------------
199
+ * The same zombie rule has to hold in TWO places that deliberately do not share
200
+ * code: here, for cgroup members read out of `cgroup.procs`, and in the /proc
201
+ * subtree scanner (mojo-process-tree), for members found by enumeration. They stay
202
+ * separate because they start from different inputs, but they must agree, and
203
+ * nothing enforces that agreement automatically.
204
+ *
205
+ * Why the agreement matters more than the rule itself: if one side discounts a
206
+ * zombie and the other does not, the SAME tree gets two verdicts. That is not a
207
+ * cosmetic inconsistency — ProcTree hit it for real while wiring 7-A. A SIGKILLed
208
+ * child sat in state Z awaiting reap; the in-memory ladder discounted it and
209
+ * reported clean, while the pid list handed to `proveContainmentQuiescent` still
210
+ * carried it, so this module judged the tree alive. The close was then refused
211
+ * forever and the handle could never be discharged: a permanent wedge produced
212
+ * purely by two definitions of "running".
213
+ *
214
+ * So: change one side and you MUST change the other. The rule is exactly
215
+ * - state 'Z' -> discounted (a zombie executes nothing, holds no credential)
216
+ * - ENOENT -> gone, skipped (raced away; not a member)
217
+ * - anything else -> EXECUTING, including any state we cannot read
218
+ * The last case is the one that must never be relaxed on either side: turning an
219
+ * unreadable state into "harmless" is a fail-open, and it is reachable by the very
220
+ * process being policed.
221
+ */
222
+ export type ProcLiveness = 'zombie' | 'running' | 'gone' | 'unreadable';
223
+ export declare function readProcLiveness(pid: number, opts?: {
224
+ procRoot?: string;
225
+ }): ProcLiveness;
226
+ export interface AcquireContainmentInput {
227
+ sessionId: string;
228
+ generation: number;
229
+ /** Root pid of the turn (the direct child this backend spawned). */
230
+ rootPid: number;
231
+ /** The env nonce already injected into that tree. */
232
+ nonce: string;
233
+ }
234
+ /**
235
+ * A cgroup boundary created BEFORE the turn child is spawned.
236
+ *
237
+ * The strong handle used to be minted post-spawn by migrating the root pid into
238
+ * a fresh cgroup. That left a spawn→enrolment window: cgroup v2 migration does
239
+ * not retroactively move a process's already-forked descendants
240
+ * (admin-guide/cgroup-v2: "Migration of a process doesn't affect already
241
+ * existing descendant processes"), so a descendant forked (and setsid'd) inside
242
+ * the window was outside the cgroup while `cgroup.procs` — the whole strong
243
+ * proof — read empty after the root exited. The proof went false-green and the
244
+ * device-isolation blocker was cleared with a credentialed escapee still alive.
245
+ *
246
+ * The boundary is therefore prepared first, and the child enrols ITSELF into it
247
+ * before exec'ing the target binary (see MOJO_CGROUP_ENROLL_SHIM in
248
+ * mojo-backend). Between fork and enrolment the process runs only our trusted
249
+ * shim, which forks nothing, so every descendant of the target binary is born
250
+ * inside the cgroup — that is the precondition the strong proof relies on.
251
+ */
252
+ export interface PreparedContainmentBoundary {
253
+ sessionId: string;
254
+ generation: number;
255
+ cgroupPath: string;
256
+ nonce: string;
257
+ }
258
+ /**
259
+ * Create the cgroup directory for a turn about to be spawned.
260
+ *
261
+ * Returns null when the host cannot support a strong boundary (no cgroup v2, or
262
+ * the slice is not writable) — the caller falls back to the weak post-spawn
263
+ * handle, which never claims boundary proof.
264
+ */
265
+ export declare function prepareContainmentBoundary(input: {
266
+ sessionId: string;
267
+ generation: number;
268
+ nonce: string;
269
+ }, opts?: {
270
+ cgroupRoot?: string;
271
+ procRoot?: string;
272
+ }): PreparedContainmentBoundary | null;
273
+ /** Mint the strong handle for a boundary the child has enrolled itself into. */
274
+ export declare function strongHandleFromPreparedBoundary(prepared: PreparedContainmentBoundary, opts?: {
275
+ procRoot?: string;
276
+ }): ContainmentHandle;
277
+ /**
278
+ * Kill every process currently enrolled in a prepared boundary (cgroup.kill),
279
+ * then remove the directory if that emptied it.
280
+ *
281
+ * For the caller who spawned a child through the enrolment shim and then FAILED
282
+ * to record the handle durably: the subtree must not be left running behind a
283
+ * blocker nobody recorded. Returns true only when the boundary is provably
284
+ * empty (or already gone) afterwards — false means the caller must keep its
285
+ * own fence up.
286
+ */
287
+ export declare function killPreparedBoundary(prepared: PreparedContainmentBoundary): Promise<boolean>;
288
+ /**
289
+ * Mint the strongest POST-SPAWN handle this host can describe a turn with.
290
+ *
291
+ * Deliberately NEVER a cgroup handle: migrating an already-running root into a
292
+ * cgroup does not capture descendants it forked before the write, so a strong
293
+ * handle minted here would claim a boundary that provably has a hole (the P0
294
+ * this module was rewritten for). Strong handles exist only via
295
+ * prepareContainmentBoundary + the pre-exec enrolment shim. This function is
296
+ * the fallback for hosts (or spawn paths) where that was not possible, and the
297
+ * handles it mints never carry boundary proof.
298
+ */
299
+ export declare function acquireContainmentHandle(input: AcquireContainmentInput, opts?: {
300
+ cgroupRoot?: string;
301
+ procRoot?: string;
302
+ platform?: string;
303
+ }): ContainmentHandle;
304
+ /**
305
+ * Outcome of a degraded, /proc-based enumeration, supplied by the caller.
306
+ *
307
+ * Deliberately a callback rather than a direct import of `scanMojoTree`: the
308
+ * scanner is owned by mojo-process-tree.ts and this module must stay a leaf that
309
+ * a unit test can drive with a synthetic world. `scanned: false` is the scanner's
310
+ * fail-closed signal and MUST NOT be collapsed into an empty pid list by the
311
+ * caller.
312
+ */
313
+ export interface TreeScanEvidence {
314
+ scanned: boolean;
315
+ pids: readonly number[];
316
+ reason?: string;
317
+ }
318
+ export interface ProveContainmentOpts {
319
+ procRoot?: string;
320
+ /** Required to prove a WEAK handle; ignored for a strong one. */
321
+ scan?: (handle: WeakContainmentHandle) => TreeScanEvidence;
322
+ }
323
+ /**
324
+ * Can we prove that nothing this handle owns is still executing?
325
+ *
326
+ * STRONG handle: `cgroup.procs` is authoritative. An absent directory also counts
327
+ * as proof, because the kernel refuses `rmdir` on a non-empty cgroup and this
328
+ * module only removes one after a proven verdict — so "gone" can only mean
329
+ * "was empty when it went". Any OTHER read error is a non-proof.
330
+ *
331
+ * WEAK handle:
332
+ * - a bootId mismatch is genuine, cheap proof: the recorded tree cannot have
333
+ * survived the reboot that changed the id;
334
+ * - otherwise the only available evidence is a /proc scan, which the caller
335
+ * must supply. No scan, or a failed scan, or any surviving pid → not proven.
336
+ * - the root pid being gone is explicitly NOT accepted on its own: a descendant
337
+ * that called setsid() outlives its parent, which is the whole reason the
338
+ * scanner unions three signals.
339
+ *
340
+ * A clean weak verdict is the best this host can do, not an unforgeable
341
+ * boundary — see the trust-domain note in mojo-process-tree. Callers that need
342
+ * certainty need a strong handle.
343
+ */
344
+ export declare function proveContainmentQuiescent(handle: ContainmentHandle, opts?: ProveContainmentOpts): QuiescenceVerdict;
345
+ /**
346
+ * Is the recorded root pid still the ORIGINAL process?
347
+ *
348
+ * Used before signalling: a weak handle names a pid, and pids are reused. Sending
349
+ * SIGKILL to a recycled pid would kill an unrelated process, so a caller must
350
+ * confirm identity first. False therefore means "do not signal this pid", NOT
351
+ * "the tree is gone".
352
+ */
353
+ export declare function weakHandleRootStillOriginal(handle: WeakContainmentHandle, opts?: {
354
+ procRoot?: string;
355
+ }): boolean;
356
+ /** Stable identity of a handle, so union/removal cannot double-count or mis-hit. */
357
+ export declare function containmentHandleKey(handle: ContainmentHandle): string;
358
+ /**
359
+ * Record a handle as OWNED AND UNPROVEN.
360
+ *
361
+ * Call this at spawn time, before the child can do anything: a crash between
362
+ * spawn and record is exactly the window that used to lose the tree entirely.
363
+ * Monotonic union by handle identity, so re-recording is idempotent and a later
364
+ * call can never retract an earlier one.
365
+ *
366
+ * THROWS on any read/write failure — the caller must not proceed believing the
367
+ * tree was recorded.
368
+ */
369
+ export declare function recordContainmentHandle(handle: ContainmentHandle, dataDir?: string): void;
370
+ /**
371
+ * Handles this session still owns. Empty ONLY when nothing is outstanding.
372
+ *
373
+ * THROWS when the store cannot be read, so isolation callers fail closed instead
374
+ * of reading an error as "clean".
375
+ */
376
+ export declare function containmentHandles(sessionId: string, dataDir?: string): ContainmentHandle[];
377
+ /**
378
+ * Session ids with an outstanding handle, INCLUDING sessions whose row is gone.
379
+ *
380
+ * The residual path needs this: an explicit `/close` deletes the row, so without
381
+ * it the inventory would lose every trace of an unproven credentialed subtree.
382
+ */
383
+ export declare function containmentSessionIds(dataDir?: string): string[];
384
+ /**
385
+ * Does this session still have a tree we cannot prove is gone?
386
+ *
387
+ * This is the predicate the device-isolation blocker hangs off. It THROWS on an
388
+ * unreadable store rather than answering false.
389
+ */
390
+ export declare function hasUnprovenContainment(sessionId: string, dataDir?: string): boolean;
391
+ /**
392
+ * Release every durable handle a REBOOT has provably killed, and report what
393
+ * stayed. Run once per daemon boot, BEFORE the device-isolation activation
394
+ * inventory is built.
395
+ *
396
+ * Why this exists (round-11 P1-1): `proveContainmentQuiescent` gained a
397
+ * boot-id-changed branch for cgroup handles, but its only production callers are
398
+ * live-worker teardown and workerless close — NEITHER runs for a session that is
399
+ * already `closed_with_residual` and exists only as a durable handle. So after a
400
+ * host reboot (which truly kills the whole tree, migrant included) that handle
401
+ * lingered forever and device isolation kept synthesising an `activation_blocked`
402
+ * from it — the new bootId proof had no consumer. This is that consumer: it
403
+ * enumerates the store and RELEASES only handles whose verdict is
404
+ * `boot-id-changed`. A same-boot handle, a legacy handle with no bootId, an
405
+ * unprovable handle, or a still-live cgroup are all RETAINED.
406
+ *
407
+ * Fail-CLOSED throughout: an unreadable store, an unreadable /proc, or a handle
408
+ * whose proof throws leaves that handle in place. Releasing on a "cannot tell"
409
+ * is exactly the unblock this whole module refuses.
410
+ */
411
+ export declare function reconcileContainmentHandlesOnBoot(opts?: {
412
+ procRoot?: string;
413
+ dataDir?: string;
414
+ }): {
415
+ released: number;
416
+ retained: number;
417
+ storeUnreadable: boolean;
418
+ };
419
+ /**
420
+ * Is this verdict strong enough to FORGET the tree, and how much stays behind?
421
+ *
422
+ * This is the production gate on `boundaryProof`. It exists because a
423
+ * `proven: true` verdict is NOT one thing: on a cgroup host it is kernel state,
424
+ * on a plain Linux host it can be nothing more than "the scan saw nobody", and
425
+ * those two must not share a code path.
426
+ *
427
+ * Truth table, all of it pinned by unit tests:
428
+ *
429
+ * verdict evidence boundaryProof release residual
430
+ * ---------------- -------------------- ------------- ------- --------
431
+ * proven, weak boot-id-changed true yes null
432
+ * proven, cgroup boot-id-changed true yes null
433
+ * proven, cgroup cgroup-empty FALSE NO deviceIsolation
434
+ * proven, cgroup cgroup-zombie-only FALSE NO deviceIsolation
435
+ * proven, weak scan-clean FALSE NO deviceIsolation
436
+ * not proven n/a false NO deviceIsolation
437
+ *
438
+ * Only a reboot (boot-id-changed) authorises forgetting a tree — for BOTH handle
439
+ * kinds since the strong handle gained a stamped bootId (a reboot kills the
440
+ * whole tree, sibling-migrant included, and resets cgroupfs). A cgroup being
441
+ * empty is NOT a boundary proof — a same-UID process can migrate itself out of
442
+ * the leaf, invisible to the leaf-down read — so an emptiness verdict behaves
443
+ * exactly like a weak scan-clean: it lets the caller stop re-signalling
444
+ * (`signalsStopped: true`) and lets the SESSION close, but authorises nothing
445
+ * else. The handle stays in the durable store, so `hasUnprovenContainment` keeps
446
+ * answering true and the device-isolation blocker survives the close.
447
+ */
448
+ export declare function containmentReleaseDecision(verdict: QuiescenceVerdict): ContainmentReleaseDecision;
449
+ /**
450
+ * Release a handle — the ONLY removal path, and it demands the proof.
451
+ *
452
+ * Taking the verdict (rather than a boolean, or nothing at all) is deliberate: it
453
+ * makes "clear the blocker without proving quiescence" unrepresentable at the type
454
+ * level, which is the invariant this whole module exists to enforce. A caller
455
+ * holding a `proven: false` verdict has no way to spend it here.
456
+ *
457
+ * The ONE evidence that authorises release is `boot-id-changed`, for either
458
+ * handle kind (a strong handle carries a stamped bootId since round 10).
459
+ * Emptiness verdicts (cgroup-empty / cgroup-zombie-only / scan-clean) resolve to
460
+ * `releaseAuthorised: false` and return below with the handle and the
461
+ * device-isolation blocker retained — cgroup emptiness is not a boundary proof
462
+ * (a same-UID process can migrate out of the leaf; see
463
+ * containmentReleaseDecision). No cgroup directory is reclaimed on the release
464
+ * path: `boot-id-changed` means the host rebooted and cgroupfs came back empty,
465
+ * so there is nothing to remove. Within a boot the tree is killed via
466
+ * `cgroup.kill` during teardown and the handle waits for reboot or operator
467
+ * revoke.
468
+ */
469
+ export declare function releaseContainmentHandle(verdict: QuiescenceVerdict, dataDir?: string): ContainmentReleaseDecision;
470
+ /**
471
+ * OPERATOR OVERRIDE: drop handles without quiescence proof.
472
+ *
473
+ * releaseContainmentHandle is deliberately unreachable without a proven verdict,
474
+ * and on a non-cgroup host a weak handle's scan-clean is never a boundary proof
475
+ * — so after one mojo session runs and closes there, its handle (and with it the
476
+ * whole-machine device-isolation `activation_blocked` 409) persists FOREVER,
477
+ * with no operational path out short of hand-editing the ledger JSON. An
478
+ * `unprovable` handle is like that by design. Both are correct fail-closed
479
+ * defaults and both still need an explicit, auditable exit.
480
+ *
481
+ * This is that exit, and only for a human operator (the `botmux mojo-containment
482
+ * revoke` command): it removes the named handles while logging exactly what was
483
+ * dropped, so the decision that "these trees are acceptable to forget" is a
484
+ * recorded human judgement, never something the runtime can reach on its own.
485
+ * Nothing in daemon/worker code may call this.
486
+ */
487
+ export declare function revokeContainmentHandles(sessionId: string, opts?: {
488
+ handleKey?: string;
489
+ dataDir?: string;
490
+ auditNote?: string;
491
+ }): {
492
+ removed: ContainmentHandle[];
493
+ remaining: ContainmentHandle[];
494
+ };
495
+ /**
496
+ * Executing (non-zombie) pids anywhere in a cgroup handle's subtree, for the
497
+ * operator revoke safety gate. `unreadable` is the fail-closed signal — the gate
498
+ * must surface it rather than read "cannot enumerate" as "nobody there".
499
+ */
500
+ export declare function cgroupHandleLiveMembers(handle: StrongContainmentHandle, opts?: {
501
+ procRoot?: string;
502
+ }): {
503
+ live: number[];
504
+ unreadable: boolean;
505
+ };
506
+ /**
507
+ * Hand every outstanding handle of a session to a new worker generation.
508
+ *
509
+ * Inheritance is a UNION and it is unconditional: replacement does not prove
510
+ * anything about the old tree, so the new generation becomes responsible for
511
+ * proving it later. The generation stamp is refreshed for logging while the
512
+ * IDENTITY fields (cgroup path, pid/boot/starttime, nonce) are preserved
513
+ * verbatim — rewriting those would invent a handle that proves nothing about the
514
+ * tree actually left behind.
515
+ *
516
+ * Nothing is removed here, so a crash mid-inheritance is safe: the handles are
517
+ * still recorded under the same session id.
518
+ */
519
+ export declare function inheritContainmentHandles(sessionId: string, nextGeneration: number, dataDir?: string): ContainmentHandle[];
520
+ /**
521
+ * Map a containment verdict onto ProcTree's `TurnQuiescence`.
522
+ *
523
+ * This function is the single place in the codebase allowed to mint
524
+ * `{ kind: 'contained-proven', boundaryProof: true }`, and it does so for exactly
525
+ * ONE evidence — `boot-id-changed`. That is the whole point of the contracts
526
+ * meeting here:
527
+ *
528
+ * - `quiescenceFromScan()` can never produce `boundaryProof: true`; a clean
529
+ * /proc scan is a diagnostic signal, because a descendant that both setsids
530
+ * AND scrubs its own environ evades enumeration entirely.
531
+ * - An empty (or zombie-only) `cgroup.procs` is ALSO only a diagnostic signal,
532
+ * NOT a boundary proof: mojo runs at the daemon's UID and cgroup v2 lets a
533
+ * same-UID process migrate itself out of the leaf, invisible to the leaf-down
534
+ * read. cgroup emptiness is good for stopping signals and for killing
535
+ * (cgroup.kill), never for dropping device isolation.
536
+ * - `boot-id-changed` is the only unforgeable release: a reboot kills the whole
537
+ * tree, migrant included. It applies to a weak handle and to a cgroup handle
538
+ * once its bootId is stamped.
539
+ *
540
+ * So a STRONG (cgroup) proven-empty verdict maps to `diagnostic-clean`, exactly
541
+ * like a weak `scan-clean`, and `containmentReleaseDecision` refuses to authorise
542
+ * removal for either — the handle stays in the durable store and the blocker
543
+ * survives the close. The gate lives in `containmentReleaseDecision`, a real
544
+ * production consumer.
545
+ */
546
+ /**
547
+ * The ONE place a `boundaryProof: true` TurnQuiescence is constructed.
548
+ *
549
+ * Round 4 claimed this property in a comment while three separate sites minted
550
+ * the value, which is why the claim was rejected as unverifiable. It is now
551
+ * structural: `boundaryProof: true` is minted here and in the release-decision
552
+ * gate (`containmentReleaseDecision`), and nowhere else — `git grep -n
553
+ * "boundaryProof: true" -- src/` returns those two sites plus type definitions.
554
+ * It is exported for the backend, which decides WHETHER a proven boundary applies
555
+ * but must not decide what one looks like.
556
+ */
557
+ export declare function containedProvenQuiescence(): TurnQuiescence;
558
+ export declare function containmentQuiescence(verdict: QuiescenceVerdict): TurnQuiescence;
559
+ /**
560
+ * Strongest quiescence statement available for a session, across ALL of its
561
+ * outstanding handles.
562
+ *
563
+ * Semantics are intentionally pessimistic, because a session is only as contained
564
+ * as its WEAKEST outstanding tree:
565
+ * - any handle that is not proven → that handle's non-proof is the answer
566
+ * - no handles at all → `diagnostic-clean`; nothing is recorded,
567
+ * but "nothing recorded" is not a kernel-level boundary proof either
568
+ * - every handle proven, at least one only diagnostically → `diagnostic-clean`
569
+ * - every handle proven WITH a boundary proof → `contained-proven`
570
+ *
571
+ * A store that cannot be read THROWS (via `containmentHandles`), so an
572
+ * unreadable store can never present itself as a clean session.
573
+ */
574
+ export declare function sessionContainmentQuiescence(sessionId: string, prove: (handle: ContainmentHandle) => QuiescenceVerdict, dataDir?: string): TurnQuiescence;
575
+ //# sourceMappingURL=mojo-containment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mojo-containment.d.ts","sourceRoot":"","sources":["../../src/core/mojo-containment.ts"],"names":[],"mappings":"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"}