botmux 3.4.3 → 3.5.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 (350) hide show
  1. package/README.en.md +10 -7
  2. package/README.md +11 -6
  3. package/dist/adapters/backend/herdr-backend.d.ts +43 -6
  4. package/dist/adapters/backend/herdr-backend.d.ts.map +1 -1
  5. package/dist/adapters/backend/herdr-backend.js +362 -28
  6. package/dist/adapters/backend/herdr-backend.js.map +1 -1
  7. package/dist/adapters/backend/reproduce-command.d.ts +39 -0
  8. package/dist/adapters/backend/reproduce-command.d.ts.map +1 -0
  9. package/dist/adapters/backend/reproduce-command.js +63 -0
  10. package/dist/adapters/backend/reproduce-command.js.map +1 -0
  11. package/dist/adapters/backend/session-backend-selector.d.ts +10 -1
  12. package/dist/adapters/backend/session-backend-selector.d.ts.map +1 -1
  13. package/dist/adapters/backend/session-backend-selector.js +73 -4
  14. package/dist/adapters/backend/session-backend-selector.js.map +1 -1
  15. package/dist/adapters/backend/types.d.ts +16 -0
  16. package/dist/adapters/backend/types.d.ts.map +1 -1
  17. package/dist/adapters/backend/types.js.map +1 -1
  18. package/dist/adapters/cli/pi-initial-prompt.d.ts.map +1 -1
  19. package/dist/adapters/cli/pi-initial-prompt.js +5 -1
  20. package/dist/adapters/cli/pi-initial-prompt.js.map +1 -1
  21. package/dist/adapters/cli/traex.d.ts.map +1 -1
  22. package/dist/adapters/cli/traex.js +5 -0
  23. package/dist/adapters/cli/traex.js.map +1 -1
  24. package/dist/adapters/cli/types.d.ts +3 -3
  25. package/dist/adapters/cli/types.d.ts.map +1 -1
  26. package/dist/adapters/hook-installer.d.ts +7 -0
  27. package/dist/adapters/hook-installer.d.ts.map +1 -1
  28. package/dist/adapters/hook-installer.js +56 -0
  29. package/dist/adapters/hook-installer.js.map +1 -1
  30. package/dist/bot-registry.d.ts +13 -0
  31. package/dist/bot-registry.d.ts.map +1 -1
  32. package/dist/bot-registry.js +118 -2
  33. package/dist/bot-registry.js.map +1 -1
  34. package/dist/cli/capabilities.d.ts +24 -0
  35. package/dist/cli/capabilities.d.ts.map +1 -0
  36. package/dist/cli/capabilities.js +25 -0
  37. package/dist/cli/capabilities.js.map +1 -0
  38. package/dist/cli/create-group-resolver.d.ts +24 -0
  39. package/dist/cli/create-group-resolver.d.ts.map +1 -1
  40. package/dist/cli/create-group-resolver.js +23 -0
  41. package/dist/cli/create-group-resolver.js.map +1 -1
  42. package/dist/cli/daemon-lifecycle-env.d.ts +5 -7
  43. package/dist/cli/daemon-lifecycle-env.d.ts.map +1 -1
  44. package/dist/cli/daemon-lifecycle-env.js +13 -7
  45. package/dist/cli/daemon-lifecycle-env.js.map +1 -1
  46. package/dist/cli/exact-chat-grant-client.d.ts +48 -0
  47. package/dist/cli/exact-chat-grant-client.d.ts.map +1 -0
  48. package/dist/cli/exact-chat-grant-client.js +108 -0
  49. package/dist/cli/exact-chat-grant-client.js.map +1 -0
  50. package/dist/cli/exact-chat-grant.d.ts +18 -0
  51. package/dist/cli/exact-chat-grant.d.ts.map +1 -0
  52. package/dist/cli/exact-chat-grant.js +97 -0
  53. package/dist/cli/exact-chat-grant.js.map +1 -0
  54. package/dist/cli.d.ts +10 -1
  55. package/dist/cli.d.ts.map +1 -1
  56. package/dist/cli.js +770 -126
  57. package/dist/cli.js.map +1 -1
  58. package/dist/codex-rpc-engine.d.ts +26 -0
  59. package/dist/codex-rpc-engine.d.ts.map +1 -1
  60. package/dist/codex-rpc-engine.js +113 -2
  61. package/dist/codex-rpc-engine.js.map +1 -1
  62. package/dist/config.d.ts +16 -0
  63. package/dist/config.d.ts.map +1 -1
  64. package/dist/config.js +16 -0
  65. package/dist/config.js.map +1 -1
  66. package/dist/core/bot-live-control.d.ts +41 -0
  67. package/dist/core/bot-live-control.d.ts.map +1 -0
  68. package/dist/core/bot-live-control.js +135 -0
  69. package/dist/core/bot-live-control.js.map +1 -0
  70. package/dist/core/command-handler.d.ts.map +1 -1
  71. package/dist/core/command-handler.js +28 -8
  72. package/dist/core/command-handler.js.map +1 -1
  73. package/dist/core/daemon-config-fence.d.ts +8 -0
  74. package/dist/core/daemon-config-fence.d.ts.map +1 -0
  75. package/dist/core/daemon-config-fence.js +13 -0
  76. package/dist/core/daemon-config-fence.js.map +1 -0
  77. package/dist/core/dashboard-events.d.ts +5 -0
  78. package/dist/core/dashboard-events.d.ts.map +1 -1
  79. package/dist/core/dashboard-events.js.map +1 -1
  80. package/dist/core/dashboard-ipc-server.d.ts +21 -2
  81. package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
  82. package/dist/core/dashboard-ipc-server.js +232 -5
  83. package/dist/core/dashboard-ipc-server.js.map +1 -1
  84. package/dist/core/dispatch-registry.d.ts +12 -0
  85. package/dist/core/dispatch-registry.d.ts.map +1 -0
  86. package/dist/core/dispatch-registry.js +33 -0
  87. package/dist/core/dispatch-registry.js.map +1 -0
  88. package/dist/core/dispatch.d.ts +99 -0
  89. package/dist/core/dispatch.d.ts.map +1 -1
  90. package/dist/core/dispatch.js +136 -0
  91. package/dist/core/dispatch.js.map +1 -1
  92. package/dist/core/maintenance.d.ts.map +1 -1
  93. package/dist/core/maintenance.js +10 -3
  94. package/dist/core/maintenance.js.map +1 -1
  95. package/dist/core/persistent-backend.d.ts +16 -2
  96. package/dist/core/persistent-backend.d.ts.map +1 -1
  97. package/dist/core/persistent-backend.js +40 -0
  98. package/dist/core/persistent-backend.js.map +1 -1
  99. package/dist/core/session-discovery.d.ts +8 -1
  100. package/dist/core/session-discovery.d.ts.map +1 -1
  101. package/dist/core/session-discovery.js +140 -8
  102. package/dist/core/session-discovery.js.map +1 -1
  103. package/dist/core/session-manager.d.ts.map +1 -1
  104. package/dist/core/session-manager.js +12 -8
  105. package/dist/core/session-manager.js.map +1 -1
  106. package/dist/core/session-title.d.ts +8 -0
  107. package/dist/core/session-title.d.ts.map +1 -1
  108. package/dist/core/session-title.js +54 -0
  109. package/dist/core/session-title.js.map +1 -1
  110. package/dist/core/terminal-write-auth.d.ts +15 -0
  111. package/dist/core/terminal-write-auth.d.ts.map +1 -1
  112. package/dist/core/terminal-write-auth.js +20 -0
  113. package/dist/core/terminal-write-auth.js.map +1 -1
  114. package/dist/core/trigger-session.d.ts.map +1 -1
  115. package/dist/core/trigger-session.js +3 -2
  116. package/dist/core/trigger-session.js.map +1 -1
  117. package/dist/core/types.d.ts +33 -0
  118. package/dist/core/types.d.ts.map +1 -1
  119. package/dist/core/types.js.map +1 -1
  120. package/dist/core/worker-pool.d.ts +27 -8
  121. package/dist/core/worker-pool.d.ts.map +1 -1
  122. package/dist/core/worker-pool.js +389 -19
  123. package/dist/core/worker-pool.js.map +1 -1
  124. package/dist/daemon.d.ts +4 -2
  125. package/dist/daemon.d.ts.map +1 -1
  126. package/dist/daemon.js +397 -26
  127. package/dist/daemon.js.map +1 -1
  128. package/dist/dashboard/bot-onboarding.d.ts +127 -1
  129. package/dist/dashboard/bot-onboarding.d.ts.map +1 -1
  130. package/dist/dashboard/bot-onboarding.js +1104 -25
  131. package/dist/dashboard/bot-onboarding.js.map +1 -1
  132. package/dist/dashboard/debug-terminal.d.ts +18 -0
  133. package/dist/dashboard/debug-terminal.d.ts.map +1 -0
  134. package/dist/dashboard/debug-terminal.js +338 -0
  135. package/dist/dashboard/debug-terminal.js.map +1 -0
  136. package/dist/dashboard/public-redact.d.ts +2 -0
  137. package/dist/dashboard/public-redact.d.ts.map +1 -1
  138. package/dist/dashboard/public-redact.js +12 -3
  139. package/dist/dashboard/public-redact.js.map +1 -1
  140. package/dist/dashboard/registry.d.ts +8 -0
  141. package/dist/dashboard/registry.d.ts.map +1 -1
  142. package/dist/dashboard/registry.js +13 -0
  143. package/dist/dashboard/registry.js.map +1 -1
  144. package/dist/dashboard/settings-write-applier.d.ts +47 -1
  145. package/dist/dashboard/settings-write-applier.d.ts.map +1 -1
  146. package/dist/dashboard/settings-write-applier.js +102 -1
  147. package/dist/dashboard/settings-write-applier.js.map +1 -1
  148. package/dist/dashboard/web/app.d.ts.map +1 -1
  149. package/dist/dashboard/web/app.js +2 -0
  150. package/dist/dashboard/web/app.js.map +1 -1
  151. package/dist/dashboard/web/bot-defaults-page.d.ts +1 -0
  152. package/dist/dashboard/web/bot-defaults-page.d.ts.map +1 -1
  153. package/dist/dashboard/web/bot-defaults-page.js +24 -5
  154. package/dist/dashboard/web/bot-defaults-page.js.map +1 -1
  155. package/dist/dashboard/web/bot-defaults.d.ts +15 -0
  156. package/dist/dashboard/web/bot-defaults.d.ts.map +1 -1
  157. package/dist/dashboard/web/bot-defaults.js +19 -0
  158. package/dist/dashboard/web/bot-defaults.js.map +1 -1
  159. package/dist/dashboard/web/i18n.d.ts.map +1 -1
  160. package/dist/dashboard/web/i18n.js +76 -6
  161. package/dist/dashboard/web/i18n.js.map +1 -1
  162. package/dist/dashboard/web/icon-tooltip.d.ts +3 -0
  163. package/dist/dashboard/web/icon-tooltip.d.ts.map +1 -0
  164. package/dist/dashboard/web/icon-tooltip.js +108 -0
  165. package/dist/dashboard/web/icon-tooltip.js.map +1 -0
  166. package/dist/dashboard/web/sessions-kanban.js +2 -2
  167. package/dist/dashboard/web/sessions-kanban.js.map +1 -1
  168. package/dist/dashboard/web/sessions-page.d.ts.map +1 -1
  169. package/dist/dashboard/web/sessions-page.js +48 -9
  170. package/dist/dashboard/web/sessions-page.js.map +1 -1
  171. package/dist/dashboard/web/sessions.d.ts +2 -0
  172. package/dist/dashboard/web/sessions.d.ts.map +1 -1
  173. package/dist/dashboard/web/sessions.js +46 -2
  174. package/dist/dashboard/web/sessions.js.map +1 -1
  175. package/dist/dashboard/web/settings-page.d.ts +78 -0
  176. package/dist/dashboard/web/settings-page.d.ts.map +1 -1
  177. package/dist/dashboard/web/settings-page.js +88 -1
  178. package/dist/dashboard/web/settings-page.js.map +1 -1
  179. package/dist/dashboard/web/store.d.ts +2 -0
  180. package/dist/dashboard/web/store.d.ts.map +1 -1
  181. package/dist/dashboard/web/store.js +13 -1
  182. package/dist/dashboard/web/store.js.map +1 -1
  183. package/dist/dashboard-web/app.js +1 -1
  184. package/dist/dashboard-web/chunks/bot-defaults-page-O376WSER.js +5 -0
  185. package/dist/dashboard-web/chunks/{chunk-JNRSPKLS.js → chunk-EJDYUINZ.js} +1 -1
  186. package/dist/dashboard-web/chunks/{chunk-CUV65BIQ.js → chunk-H7P5UV4W.js} +6 -6
  187. package/dist/dashboard-web/chunks/{chunk-P6GO5KT4.js → chunk-QCPPKCX3.js} +1 -1
  188. package/dist/dashboard-web/chunks/{chunk-UBOLHQCK.js → chunk-WXPMNEYV.js} +1 -1
  189. package/dist/dashboard-web/chunks/{connectors-page-KTC2QWNW.js → connectors-page-IR54AOAI.js} +1 -1
  190. package/dist/dashboard-web/chunks/{groups-page-B3EKGOLY.js → groups-page-3P4TLUMF.js} +1 -1
  191. package/dist/dashboard-web/chunks/{insights-page-X6RXNCWX.js → insights-page-TDCZV56A.js} +1 -1
  192. package/dist/dashboard-web/chunks/{monitor-room-LLRA5LQW.js → monitor-room-QWCWL3SX.js} +1 -1
  193. package/dist/dashboard-web/chunks/{monitoring-page-7MT5FEOS.js → monitoring-page-IOWFSNVC.js} +1 -1
  194. package/dist/dashboard-web/chunks/{office-page-KD46D5TD.js → office-page-5AUPEHZP.js} +1 -1
  195. package/dist/dashboard-web/chunks/{overview-page-JUWNH32O.js → overview-page-QJMI6NLW.js} +1 -1
  196. package/dist/dashboard-web/chunks/{roles-page-P6F7NLOI.js → roles-page-WJVB52ET.js} +1 -1
  197. package/dist/dashboard-web/chunks/{schedules-page-XIHWZST4.js → schedules-page-RVRWHP4V.js} +1 -1
  198. package/dist/dashboard-web/chunks/sessions-page-KWLGBX6G.js +3 -0
  199. package/dist/dashboard-web/chunks/settings-page-TNZEPC7V.js +2 -0
  200. package/dist/dashboard-web/chunks/{skills-page-A46KVWBL.js → skills-page-7YT5TIX5.js} +1 -1
  201. package/dist/dashboard-web/chunks/{team-federation-page-SDUC56DF.js → team-federation-page-NJZKTU7A.js} +1 -1
  202. package/dist/dashboard-web/chunks/{v3-page-J5JOTUSQ.js → v3-page-NQ73UA2Q.js} +1 -1
  203. package/dist/dashboard-web/chunks/{whiteboards-page-U7LSOAWI.js → whiteboards-page-DSM3MDMN.js} +1 -1
  204. package/dist/dashboard-web/style.css +198 -7
  205. package/dist/dashboard.js +294 -7
  206. package/dist/dashboard.js.map +1 -1
  207. package/dist/features/codex-notifier/adoption.d.ts +11 -0
  208. package/dist/features/codex-notifier/adoption.d.ts.map +1 -0
  209. package/dist/features/codex-notifier/adoption.js +11 -0
  210. package/dist/features/codex-notifier/adoption.js.map +1 -0
  211. package/dist/features/codex-notifier/app-opener.d.ts +21 -0
  212. package/dist/features/codex-notifier/app-opener.d.ts.map +1 -0
  213. package/dist/features/codex-notifier/app-opener.js +33 -0
  214. package/dist/features/codex-notifier/app-opener.js.map +1 -0
  215. package/dist/features/codex-notifier/card-action.d.ts +27 -0
  216. package/dist/features/codex-notifier/card-action.d.ts.map +1 -0
  217. package/dist/features/codex-notifier/card-action.js +84 -0
  218. package/dist/features/codex-notifier/card-action.js.map +1 -0
  219. package/dist/features/codex-notifier/card.d.ts +12 -0
  220. package/dist/features/codex-notifier/card.d.ts.map +1 -0
  221. package/dist/features/codex-notifier/card.js +150 -0
  222. package/dist/features/codex-notifier/card.js.map +1 -0
  223. package/dist/features/codex-notifier/codex-context.d.ts +12 -0
  224. package/dist/features/codex-notifier/codex-context.d.ts.map +1 -0
  225. package/dist/features/codex-notifier/codex-context.js +161 -0
  226. package/dist/features/codex-notifier/codex-context.js.map +1 -0
  227. package/dist/features/codex-notifier/config.d.ts +9 -0
  228. package/dist/features/codex-notifier/config.d.ts.map +1 -0
  229. package/dist/features/codex-notifier/config.js +11 -0
  230. package/dist/features/codex-notifier/config.js.map +1 -0
  231. package/dist/features/codex-notifier/confirmed-turn.d.ts +20 -0
  232. package/dist/features/codex-notifier/confirmed-turn.d.ts.map +1 -0
  233. package/dist/features/codex-notifier/confirmed-turn.js +130 -0
  234. package/dist/features/codex-notifier/confirmed-turn.js.map +1 -0
  235. package/dist/features/codex-notifier/emitter.d.ts +13 -0
  236. package/dist/features/codex-notifier/emitter.d.ts.map +1 -0
  237. package/dist/features/codex-notifier/emitter.js +33 -0
  238. package/dist/features/codex-notifier/emitter.js.map +1 -0
  239. package/dist/features/codex-notifier/event-store.d.ts +29 -0
  240. package/dist/features/codex-notifier/event-store.d.ts.map +1 -0
  241. package/dist/features/codex-notifier/event-store.js +217 -0
  242. package/dist/features/codex-notifier/event-store.js.map +1 -0
  243. package/dist/features/codex-notifier/event.d.ts +46 -0
  244. package/dist/features/codex-notifier/event.d.ts.map +1 -0
  245. package/dist/features/codex-notifier/event.js +188 -0
  246. package/dist/features/codex-notifier/event.js.map +1 -0
  247. package/dist/features/codex-notifier/hook-cli.d.ts +23 -0
  248. package/dist/features/codex-notifier/hook-cli.d.ts.map +1 -0
  249. package/dist/features/codex-notifier/hook-cli.js +130 -0
  250. package/dist/features/codex-notifier/hook-cli.js.map +1 -0
  251. package/dist/features/codex-notifier/hook-installer.d.ts +19 -0
  252. package/dist/features/codex-notifier/hook-installer.d.ts.map +1 -0
  253. package/dist/features/codex-notifier/hook-installer.js +158 -0
  254. package/dist/features/codex-notifier/hook-installer.js.map +1 -0
  255. package/dist/features/codex-notifier/index.d.ts +21 -0
  256. package/dist/features/codex-notifier/index.d.ts.map +1 -0
  257. package/dist/features/codex-notifier/index.js +19 -0
  258. package/dist/features/codex-notifier/index.js.map +1 -0
  259. package/dist/features/codex-notifier/internal-turn.d.ts +5 -0
  260. package/dist/features/codex-notifier/internal-turn.d.ts.map +1 -0
  261. package/dist/features/codex-notifier/internal-turn.js +43 -0
  262. package/dist/features/codex-notifier/internal-turn.js.map +1 -0
  263. package/dist/features/codex-notifier/outbox-worker.d.ts +71 -0
  264. package/dist/features/codex-notifier/outbox-worker.d.ts.map +1 -0
  265. package/dist/features/codex-notifier/outbox-worker.js +290 -0
  266. package/dist/features/codex-notifier/outbox-worker.js.map +1 -0
  267. package/dist/features/codex-notifier/outbox.d.ts +25 -0
  268. package/dist/features/codex-notifier/outbox.d.ts.map +1 -0
  269. package/dist/features/codex-notifier/outbox.js +225 -0
  270. package/dist/features/codex-notifier/outbox.js.map +1 -0
  271. package/dist/features/codex-notifier/paths.d.ts +7 -0
  272. package/dist/features/codex-notifier/paths.d.ts.map +1 -0
  273. package/dist/features/codex-notifier/paths.js +20 -0
  274. package/dist/features/codex-notifier/paths.js.map +1 -0
  275. package/dist/features/codex-notifier/screen-lock.d.ts +12 -0
  276. package/dist/features/codex-notifier/screen-lock.d.ts.map +1 -0
  277. package/dist/features/codex-notifier/screen-lock.js +47 -0
  278. package/dist/features/codex-notifier/screen-lock.js.map +1 -0
  279. package/dist/features/codex-notifier/side-conversation-monitor.d.ts +102 -0
  280. package/dist/features/codex-notifier/side-conversation-monitor.d.ts.map +1 -0
  281. package/dist/features/codex-notifier/side-conversation-monitor.js +774 -0
  282. package/dist/features/codex-notifier/side-conversation-monitor.js.map +1 -0
  283. package/dist/features/codex-notifier/types.d.ts +42 -0
  284. package/dist/features/codex-notifier/types.d.ts.map +1 -0
  285. package/dist/features/codex-notifier/types.js +2 -0
  286. package/dist/features/codex-notifier/types.js.map +1 -0
  287. package/dist/features/codex-notifier/worker-lock.d.ts +8 -0
  288. package/dist/features/codex-notifier/worker-lock.d.ts.map +1 -0
  289. package/dist/features/codex-notifier/worker-lock.js +108 -0
  290. package/dist/features/codex-notifier/worker-lock.js.map +1 -0
  291. package/dist/global-config.d.ts +13 -0
  292. package/dist/global-config.d.ts.map +1 -1
  293. package/dist/global-config.js +30 -0
  294. package/dist/global-config.js.map +1 -1
  295. package/dist/im/lark/card-builder.js +2 -2
  296. package/dist/im/lark/card-builder.js.map +1 -1
  297. package/dist/im/lark/card-handler.d.ts +2 -0
  298. package/dist/im/lark/card-handler.d.ts.map +1 -1
  299. package/dist/im/lark/card-handler.js +165 -34
  300. package/dist/im/lark/card-handler.js.map +1 -1
  301. package/dist/im/lark/client.d.ts +62 -4
  302. package/dist/im/lark/client.d.ts.map +1 -1
  303. package/dist/im/lark/client.js +237 -29
  304. package/dist/im/lark/client.js.map +1 -1
  305. package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
  306. package/dist/im/lark/event-dispatcher.js +20 -30
  307. package/dist/im/lark/event-dispatcher.js.map +1 -1
  308. package/dist/services/codex-app-threads.d.ts +47 -0
  309. package/dist/services/codex-app-threads.d.ts.map +1 -1
  310. package/dist/services/codex-app-threads.js +502 -10
  311. package/dist/services/codex-app-threads.js.map +1 -1
  312. package/dist/services/exact-chat-grant.d.ts +83 -0
  313. package/dist/services/exact-chat-grant.d.ts.map +1 -0
  314. package/dist/services/exact-chat-grant.js +249 -0
  315. package/dist/services/exact-chat-grant.js.map +1 -0
  316. package/dist/services/group-creator.d.ts +11 -0
  317. package/dist/services/group-creator.d.ts.map +1 -1
  318. package/dist/services/group-creator.js +18 -9
  319. package/dist/services/group-creator.js.map +1 -1
  320. package/dist/services/local-cli-opener.d.ts.map +1 -1
  321. package/dist/services/local-cli-opener.js +10 -5
  322. package/dist/services/local-cli-opener.js.map +1 -1
  323. package/dist/services/traex-user-input.d.ts +19 -0
  324. package/dist/services/traex-user-input.d.ts.map +1 -0
  325. package/dist/services/traex-user-input.js +57 -0
  326. package/dist/services/traex-user-input.js.map +1 -0
  327. package/dist/setup/open-platform-automation.d.ts +24 -3
  328. package/dist/setup/open-platform-automation.d.ts.map +1 -1
  329. package/dist/setup/open-platform-automation.js +45 -8
  330. package/dist/setup/open-platform-automation.js.map +1 -1
  331. package/dist/setup/verify-permissions.d.ts +18 -0
  332. package/dist/setup/verify-permissions.d.ts.map +1 -1
  333. package/dist/setup/verify-permissions.js +60 -0
  334. package/dist/setup/verify-permissions.js.map +1 -1
  335. package/dist/types.d.ts +70 -4
  336. package/dist/types.d.ts.map +1 -1
  337. package/dist/utils/stuck-detector.d.ts +45 -0
  338. package/dist/utils/stuck-detector.d.ts.map +1 -0
  339. package/dist/utils/stuck-detector.js +188 -0
  340. package/dist/utils/stuck-detector.js.map +1 -0
  341. package/dist/utils/stuck-key-guard.d.ts +75 -0
  342. package/dist/utils/stuck-key-guard.d.ts.map +1 -0
  343. package/dist/utils/stuck-key-guard.js +77 -0
  344. package/dist/utils/stuck-key-guard.js.map +1 -0
  345. package/dist/worker.js +705 -93
  346. package/dist/worker.js.map +1 -1
  347. package/package.json +1 -1
  348. package/dist/dashboard-web/chunks/bot-defaults-page-B5AY4B2J.js +0 -5
  349. package/dist/dashboard-web/chunks/sessions-page-2VECQ27T.js +0 -3
  350. package/dist/dashboard-web/chunks/settings-page-HMIUE2JA.js +0 -2
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Stuck-warning key-injection guard.
3
+ *
4
+ * Extracted from worker.ts's `tui_keys` message handler so the fail-closed
5
+ * boundary (lifetime pre-check, fresh capture, backend/lifetime re-check,
6
+ * page-type re-match, write success/failure → delivered/expired) can be unit
7
+ * tested in isolation. The production handler delegates to this function.
8
+ *
9
+ * Fail-closed contract:
10
+ * - expected lifetime missing / unequal → no keys written, send expired
11
+ * - fresh capture returns null or throws → no keys written, send expired
12
+ * - backend/lifetime changed after capture, OR page type no longer matches
13
+ * → no keys written, send expired
14
+ * - write success → send delivered; write returns false or throws → send expired
15
+ *
16
+ * backend/lifetime are read via getters (not value snapshots) so the guard can
17
+ * re-check LIVE state after `await capture()` — a backend replacement or CLI
18
+ * restart that happens mid-capture must still be detected.
19
+ */
20
+ import type { SessionBackend } from '../adapters/backend/types.js';
21
+ export interface StuckKeyGuardMessage {
22
+ stuckNonce: number;
23
+ stuckPageType: string;
24
+ stuckCliLifetime?: number;
25
+ keys: string[];
26
+ isFinal: boolean;
27
+ }
28
+ export interface StuckKeyGuardResult {
29
+ /** What was sent back to the daemon, if anything. */
30
+ sent: 'delivered' | 'expired' | 'none';
31
+ /** Whether keys were actually written to the backend. */
32
+ wroteKeys: boolean;
33
+ }
34
+ /**
35
+ * Decide whether to re-arm the stuck detector after a tui_keys click.
36
+ *
37
+ * The detector re-arms ONLY when the card-handler explicitly flagged this as a
38
+ * stuck-warning Enter action (advances to the next review layer) AND keys were
39
+ * actually written. An expired click (CLI recovered, page changed — wroteKeys
40
+ * is false) must NOT re-arm: the detector should stay disarmed until the next
41
+ * real stall, otherwise a recovered CLI could immediately re-trigger a warning.
42
+ */
43
+ export declare function shouldRearmStuckDetector(rearmStuckDetector: boolean, wroteKeys: boolean): boolean;
44
+ export interface StuckKeyGuardDeps {
45
+ /** Live read of the current backend (may change between calls / awaits). */
46
+ getBackend: () => SessionBackend | null;
47
+ /** Live read of the current CLI lifetime nonce (incremented on every backend replacement). */
48
+ getCurrentLifetime: () => number;
49
+ renderCols: number;
50
+ renderRows: number;
51
+ turnId: string | undefined;
52
+ dispatchAttempt: number | undefined;
53
+ /** Fresh PTY capture. Returns null on no-screenshot; may throw. */
54
+ capture: (backend: SessionBackend, cols: number, rows: number, opts: {
55
+ filter: boolean;
56
+ }) => Promise<{
57
+ content: string | null;
58
+ } | null>;
59
+ /** Classifier: returns the page type label or undefined if no match. */
60
+ match: (snap: string) => string | undefined;
61
+ /** Writes keys to the backend. Returns true on success, false on failure. */
62
+ writeKeys: (keys: string[], isFinal: boolean) => Promise<boolean>;
63
+ /** Sends a message back to the daemon. */
64
+ sendExpired: (nonce: number, turnId: string | undefined, dispatchAttempt: number | undefined) => void;
65
+ sendDelivered: (nonce: number, turnId: string | undefined, dispatchAttempt: number | undefined) => void;
66
+ log: (msg: string) => void;
67
+ }
68
+ /**
69
+ * Process a stuck-warning card's tui_keys click with full fail-closed guards.
70
+ *
71
+ * Returns a result describing what happened (for testing); production callers
72
+ * use `result.wroteKeys` to decide whether to re-arm the stuck detector.
73
+ */
74
+ export declare function processStuckWarningTuiKeys(msg: StuckKeyGuardMessage, deps: StuckKeyGuardDeps): Promise<StuckKeyGuardResult>;
75
+ //# sourceMappingURL=stuck-key-guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stuck-key-guard.d.ts","sourceRoot":"","sources":["../../src/utils/stuck-key-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAEnE,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,qDAAqD;IACrD,IAAI,EAAE,WAAW,GAAG,SAAS,GAAG,MAAM,CAAC;IACvC,yDAAyD;IACzD,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,kBAAkB,EAAE,OAAO,EAC3B,SAAS,EAAE,OAAO,GACjB,OAAO,CAET;AAED,MAAM,WAAW,iBAAiB;IAChC,4EAA4E;IAC5E,UAAU,EAAE,MAAM,cAAc,GAAG,IAAI,CAAC;IACxC,8FAA8F;IAC9F,kBAAkB,EAAE,MAAM,MAAM,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,mEAAmE;IACnE,OAAO,EAAE,CACP,OAAO,EAAE,cAAc,EACvB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,KACtB,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IAChD,wEAAwE;IACxE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC5C,6EAA6E;IAC7E,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAClE,0CAA0C;IAC1C,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,eAAe,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IACtG,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,eAAe,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IACxG,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5B;AAED;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAC9C,GAAG,EAAE,oBAAoB,EACzB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,mBAAmB,CAAC,CA4D9B"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Decide whether to re-arm the stuck detector after a tui_keys click.
3
+ *
4
+ * The detector re-arms ONLY when the card-handler explicitly flagged this as a
5
+ * stuck-warning Enter action (advances to the next review layer) AND keys were
6
+ * actually written. An expired click (CLI recovered, page changed — wroteKeys
7
+ * is false) must NOT re-arm: the detector should stay disarmed until the next
8
+ * real stall, otherwise a recovered CLI could immediately re-trigger a warning.
9
+ */
10
+ export function shouldRearmStuckDetector(rearmStuckDetector, wroteKeys) {
11
+ return rearmStuckDetector && wroteKeys;
12
+ }
13
+ /**
14
+ * Process a stuck-warning card's tui_keys click with full fail-closed guards.
15
+ *
16
+ * Returns a result describing what happened (for testing); production callers
17
+ * use `result.wroteKeys` to decide whether to re-arm the stuck detector.
18
+ */
19
+ export async function processStuckWarningTuiKeys(msg, deps) {
20
+ const { stuckNonce, stuckPageType, stuckCliLifetime, keys, isFinal } = msg;
21
+ const { getBackend, getCurrentLifetime, renderCols, renderRows, turnId, dispatchAttempt, capture, match, writeKeys, sendExpired, sendDelivered, log } = deps;
22
+ // P1-2: validate the CLI lifetime the card was issued for BEFORE doing
23
+ // anything else. If the CLI restarted between card post and click,
24
+ // the live lifetime has changed and the card's expected lifetime won't match —
25
+ // fail-closed, do not inject keys into the new CLI. A missing expected
26
+ // lifetime is also rejected (stuck cards must always carry it).
27
+ const currentLifetime = getCurrentLifetime();
28
+ if (stuckCliLifetime === undefined || stuckCliLifetime !== currentLifetime) {
29
+ log(`TUI keys from stale stuck-warning card (nonce=${stuckNonce}, expectedLifetime=${stuckCliLifetime ?? 'none'}, currentLifetime=${currentLifetime}) — CLI replaced since card issued, dropping`);
30
+ sendExpired(stuckNonce, turnId, dispatchAttempt);
31
+ return { sent: 'expired', wroteKeys: false };
32
+ }
33
+ // Freeze the backend identity + CLI lifetime BEFORE capture. If the CLI
34
+ // restarts (new backend object / new cliLifetimeNonce) while we await the
35
+ // capture, the frozen values won't match the live ones and we drop the keys.
36
+ const frozenBackend = getBackend();
37
+ const frozenLifetime = getCurrentLifetime();
38
+ let currentSnap = null;
39
+ if (frozenBackend) {
40
+ try {
41
+ const fresh = await capture(frozenBackend, renderCols, renderRows, { filter: false });
42
+ currentSnap = fresh?.content ?? null;
43
+ }
44
+ catch {
45
+ currentSnap = null;
46
+ }
47
+ }
48
+ // Fail-closed: no fresh snapshot OR backend/lifetime changed during capture → expired.
49
+ // Re-read LIVE state via getters — the values may have changed while we awaited capture.
50
+ const liveBackend = getBackend();
51
+ const liveLifetime = getCurrentLifetime();
52
+ if (!currentSnap || frozenBackend !== liveBackend || frozenLifetime !== liveLifetime) {
53
+ log(`TUI keys from stale stuck-warning card (nonce=${stuckNonce}, expected=${stuckPageType}) — fresh capture failed or backend replaced, dropping`);
54
+ sendExpired(stuckNonce, turnId, dispatchAttempt);
55
+ return { sent: 'expired', wroteKeys: false };
56
+ }
57
+ const currentMatch = match(currentSnap);
58
+ if (currentMatch !== stuckPageType) {
59
+ log(`TUI keys from stale stuck-warning card (nonce=${stuckNonce}, expected=${stuckPageType}, current=${currentMatch ?? 'none'}) — dropped, notifying daemon`);
60
+ sendExpired(stuckNonce, turnId, dispatchAttempt);
61
+ return { sent: 'expired', wroteKeys: false };
62
+ }
63
+ let writeOk = false;
64
+ try {
65
+ writeOk = await writeKeys(keys, isFinal);
66
+ }
67
+ catch {
68
+ writeOk = false;
69
+ }
70
+ if (writeOk) {
71
+ sendDelivered(stuckNonce, turnId, dispatchAttempt);
72
+ return { sent: 'delivered', wroteKeys: true };
73
+ }
74
+ sendExpired(stuckNonce, turnId, dispatchAttempt);
75
+ return { sent: 'expired', wroteKeys: false };
76
+ }
77
+ //# sourceMappingURL=stuck-key-guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stuck-key-guard.js","sourceRoot":"","sources":["../../src/utils/stuck-key-guard.ts"],"names":[],"mappings":"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"}