botmux 3.4.2 → 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 (378) 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-extension.d.ts +27 -0
  19. package/dist/adapters/cli/pi-initial-prompt-extension.d.ts.map +1 -0
  20. package/dist/adapters/cli/pi-initial-prompt-extension.js +38 -0
  21. package/dist/adapters/cli/pi-initial-prompt-extension.js.map +1 -0
  22. package/dist/adapters/cli/pi-initial-prompt.d.ts +21 -0
  23. package/dist/adapters/cli/pi-initial-prompt.d.ts.map +1 -0
  24. package/dist/adapters/cli/pi-initial-prompt.js +59 -0
  25. package/dist/adapters/cli/pi-initial-prompt.js.map +1 -0
  26. package/dist/adapters/cli/pi.d.ts.map +1 -1
  27. package/dist/adapters/cli/pi.js +15 -4
  28. package/dist/adapters/cli/pi.js.map +1 -1
  29. package/dist/adapters/cli/read-isolation.d.ts.map +1 -1
  30. package/dist/adapters/cli/read-isolation.js +5 -0
  31. package/dist/adapters/cli/read-isolation.js.map +1 -1
  32. package/dist/adapters/cli/shared-hints.d.ts.map +1 -1
  33. package/dist/adapters/cli/shared-hints.js +8 -0
  34. package/dist/adapters/cli/shared-hints.js.map +1 -1
  35. package/dist/adapters/cli/traex.d.ts.map +1 -1
  36. package/dist/adapters/cli/traex.js +5 -0
  37. package/dist/adapters/cli/traex.js.map +1 -1
  38. package/dist/adapters/cli/types.d.ts +23 -3
  39. package/dist/adapters/cli/types.d.ts.map +1 -1
  40. package/dist/adapters/hook-installer.d.ts +7 -0
  41. package/dist/adapters/hook-installer.d.ts.map +1 -1
  42. package/dist/adapters/hook-installer.js +56 -0
  43. package/dist/adapters/hook-installer.js.map +1 -1
  44. package/dist/bot-registry.d.ts +13 -0
  45. package/dist/bot-registry.d.ts.map +1 -1
  46. package/dist/bot-registry.js +118 -2
  47. package/dist/bot-registry.js.map +1 -1
  48. package/dist/cli/capabilities.d.ts +24 -0
  49. package/dist/cli/capabilities.d.ts.map +1 -0
  50. package/dist/cli/capabilities.js +25 -0
  51. package/dist/cli/capabilities.js.map +1 -0
  52. package/dist/cli/create-group-resolver.d.ts +24 -0
  53. package/dist/cli/create-group-resolver.d.ts.map +1 -1
  54. package/dist/cli/create-group-resolver.js +23 -0
  55. package/dist/cli/create-group-resolver.js.map +1 -1
  56. package/dist/cli/daemon-lifecycle-env.d.ts +5 -7
  57. package/dist/cli/daemon-lifecycle-env.d.ts.map +1 -1
  58. package/dist/cli/daemon-lifecycle-env.js +13 -7
  59. package/dist/cli/daemon-lifecycle-env.js.map +1 -1
  60. package/dist/cli/exact-chat-grant-client.d.ts +48 -0
  61. package/dist/cli/exact-chat-grant-client.d.ts.map +1 -0
  62. package/dist/cli/exact-chat-grant-client.js +108 -0
  63. package/dist/cli/exact-chat-grant-client.js.map +1 -0
  64. package/dist/cli/exact-chat-grant.d.ts +18 -0
  65. package/dist/cli/exact-chat-grant.d.ts.map +1 -0
  66. package/dist/cli/exact-chat-grant.js +97 -0
  67. package/dist/cli/exact-chat-grant.js.map +1 -0
  68. package/dist/cli.d.ts +10 -1
  69. package/dist/cli.d.ts.map +1 -1
  70. package/dist/cli.js +770 -126
  71. package/dist/cli.js.map +1 -1
  72. package/dist/codex-rpc-engine.d.ts +26 -0
  73. package/dist/codex-rpc-engine.d.ts.map +1 -1
  74. package/dist/codex-rpc-engine.js +113 -2
  75. package/dist/codex-rpc-engine.js.map +1 -1
  76. package/dist/config.d.ts +16 -0
  77. package/dist/config.d.ts.map +1 -1
  78. package/dist/config.js +16 -0
  79. package/dist/config.js.map +1 -1
  80. package/dist/core/bot-live-control.d.ts +41 -0
  81. package/dist/core/bot-live-control.d.ts.map +1 -0
  82. package/dist/core/bot-live-control.js +135 -0
  83. package/dist/core/bot-live-control.js.map +1 -0
  84. package/dist/core/command-handler.d.ts.map +1 -1
  85. package/dist/core/command-handler.js +28 -8
  86. package/dist/core/command-handler.js.map +1 -1
  87. package/dist/core/daemon-config-fence.d.ts +8 -0
  88. package/dist/core/daemon-config-fence.d.ts.map +1 -0
  89. package/dist/core/daemon-config-fence.js +13 -0
  90. package/dist/core/daemon-config-fence.js.map +1 -0
  91. package/dist/core/dashboard-events.d.ts +5 -0
  92. package/dist/core/dashboard-events.d.ts.map +1 -1
  93. package/dist/core/dashboard-events.js.map +1 -1
  94. package/dist/core/dashboard-ipc-server.d.ts +21 -2
  95. package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
  96. package/dist/core/dashboard-ipc-server.js +232 -5
  97. package/dist/core/dashboard-ipc-server.js.map +1 -1
  98. package/dist/core/dispatch-registry.d.ts +12 -0
  99. package/dist/core/dispatch-registry.d.ts.map +1 -0
  100. package/dist/core/dispatch-registry.js +33 -0
  101. package/dist/core/dispatch-registry.js.map +1 -0
  102. package/dist/core/dispatch.d.ts +99 -0
  103. package/dist/core/dispatch.d.ts.map +1 -1
  104. package/dist/core/dispatch.js +136 -0
  105. package/dist/core/dispatch.js.map +1 -1
  106. package/dist/core/inflight-input-tracker.d.ts +1 -0
  107. package/dist/core/inflight-input-tracker.d.ts.map +1 -1
  108. package/dist/core/inflight-input-tracker.js.map +1 -1
  109. package/dist/core/maintenance.d.ts.map +1 -1
  110. package/dist/core/maintenance.js +10 -3
  111. package/dist/core/maintenance.js.map +1 -1
  112. package/dist/core/persistent-backend.d.ts +16 -2
  113. package/dist/core/persistent-backend.d.ts.map +1 -1
  114. package/dist/core/persistent-backend.js +40 -0
  115. package/dist/core/persistent-backend.js.map +1 -1
  116. package/dist/core/session-discovery.d.ts +8 -1
  117. package/dist/core/session-discovery.d.ts.map +1 -1
  118. package/dist/core/session-discovery.js +140 -8
  119. package/dist/core/session-discovery.js.map +1 -1
  120. package/dist/core/session-manager.d.ts.map +1 -1
  121. package/dist/core/session-manager.js +12 -8
  122. package/dist/core/session-manager.js.map +1 -1
  123. package/dist/core/session-title.d.ts +8 -0
  124. package/dist/core/session-title.d.ts.map +1 -1
  125. package/dist/core/session-title.js +54 -0
  126. package/dist/core/session-title.js.map +1 -1
  127. package/dist/core/terminal-write-auth.d.ts +15 -0
  128. package/dist/core/terminal-write-auth.d.ts.map +1 -1
  129. package/dist/core/terminal-write-auth.js +20 -0
  130. package/dist/core/terminal-write-auth.js.map +1 -1
  131. package/dist/core/trigger-session.d.ts.map +1 -1
  132. package/dist/core/trigger-session.js +3 -2
  133. package/dist/core/trigger-session.js.map +1 -1
  134. package/dist/core/types.d.ts +33 -0
  135. package/dist/core/types.d.ts.map +1 -1
  136. package/dist/core/types.js.map +1 -1
  137. package/dist/core/worker-pool.d.ts +27 -8
  138. package/dist/core/worker-pool.d.ts.map +1 -1
  139. package/dist/core/worker-pool.js +389 -19
  140. package/dist/core/worker-pool.js.map +1 -1
  141. package/dist/daemon.d.ts +4 -2
  142. package/dist/daemon.d.ts.map +1 -1
  143. package/dist/daemon.js +397 -26
  144. package/dist/daemon.js.map +1 -1
  145. package/dist/dashboard/bot-onboarding.d.ts +127 -1
  146. package/dist/dashboard/bot-onboarding.d.ts.map +1 -1
  147. package/dist/dashboard/bot-onboarding.js +1104 -25
  148. package/dist/dashboard/bot-onboarding.js.map +1 -1
  149. package/dist/dashboard/debug-terminal.d.ts +18 -0
  150. package/dist/dashboard/debug-terminal.d.ts.map +1 -0
  151. package/dist/dashboard/debug-terminal.js +338 -0
  152. package/dist/dashboard/debug-terminal.js.map +1 -0
  153. package/dist/dashboard/public-redact.d.ts +2 -0
  154. package/dist/dashboard/public-redact.d.ts.map +1 -1
  155. package/dist/dashboard/public-redact.js +12 -3
  156. package/dist/dashboard/public-redact.js.map +1 -1
  157. package/dist/dashboard/registry.d.ts +8 -0
  158. package/dist/dashboard/registry.d.ts.map +1 -1
  159. package/dist/dashboard/registry.js +13 -0
  160. package/dist/dashboard/registry.js.map +1 -1
  161. package/dist/dashboard/settings-write-applier.d.ts +47 -1
  162. package/dist/dashboard/settings-write-applier.d.ts.map +1 -1
  163. package/dist/dashboard/settings-write-applier.js +102 -1
  164. package/dist/dashboard/settings-write-applier.js.map +1 -1
  165. package/dist/dashboard/web/app.d.ts.map +1 -1
  166. package/dist/dashboard/web/app.js +2 -0
  167. package/dist/dashboard/web/app.js.map +1 -1
  168. package/dist/dashboard/web/bot-defaults-page.d.ts +1 -0
  169. package/dist/dashboard/web/bot-defaults-page.d.ts.map +1 -1
  170. package/dist/dashboard/web/bot-defaults-page.js +24 -5
  171. package/dist/dashboard/web/bot-defaults-page.js.map +1 -1
  172. package/dist/dashboard/web/bot-defaults.d.ts +15 -0
  173. package/dist/dashboard/web/bot-defaults.d.ts.map +1 -1
  174. package/dist/dashboard/web/bot-defaults.js +19 -0
  175. package/dist/dashboard/web/bot-defaults.js.map +1 -1
  176. package/dist/dashboard/web/i18n.d.ts.map +1 -1
  177. package/dist/dashboard/web/i18n.js +76 -6
  178. package/dist/dashboard/web/i18n.js.map +1 -1
  179. package/dist/dashboard/web/icon-tooltip.d.ts +3 -0
  180. package/dist/dashboard/web/icon-tooltip.d.ts.map +1 -0
  181. package/dist/dashboard/web/icon-tooltip.js +108 -0
  182. package/dist/dashboard/web/icon-tooltip.js.map +1 -0
  183. package/dist/dashboard/web/sessions-kanban.js +2 -2
  184. package/dist/dashboard/web/sessions-kanban.js.map +1 -1
  185. package/dist/dashboard/web/sessions-page.d.ts.map +1 -1
  186. package/dist/dashboard/web/sessions-page.js +48 -9
  187. package/dist/dashboard/web/sessions-page.js.map +1 -1
  188. package/dist/dashboard/web/sessions.d.ts +2 -0
  189. package/dist/dashboard/web/sessions.d.ts.map +1 -1
  190. package/dist/dashboard/web/sessions.js +46 -2
  191. package/dist/dashboard/web/sessions.js.map +1 -1
  192. package/dist/dashboard/web/settings-page.d.ts +78 -0
  193. package/dist/dashboard/web/settings-page.d.ts.map +1 -1
  194. package/dist/dashboard/web/settings-page.js +88 -1
  195. package/dist/dashboard/web/settings-page.js.map +1 -1
  196. package/dist/dashboard/web/store.d.ts +2 -0
  197. package/dist/dashboard/web/store.d.ts.map +1 -1
  198. package/dist/dashboard/web/store.js +13 -1
  199. package/dist/dashboard/web/store.js.map +1 -1
  200. package/dist/dashboard-web/app.js +1 -1
  201. package/dist/dashboard-web/chunks/bot-defaults-page-O376WSER.js +5 -0
  202. package/dist/dashboard-web/chunks/{chunk-JNRSPKLS.js → chunk-EJDYUINZ.js} +1 -1
  203. package/dist/dashboard-web/chunks/{chunk-CUV65BIQ.js → chunk-H7P5UV4W.js} +6 -6
  204. package/dist/dashboard-web/chunks/{chunk-P6GO5KT4.js → chunk-QCPPKCX3.js} +1 -1
  205. package/dist/dashboard-web/chunks/{chunk-UBOLHQCK.js → chunk-WXPMNEYV.js} +1 -1
  206. package/dist/dashboard-web/chunks/{connectors-page-KTC2QWNW.js → connectors-page-IR54AOAI.js} +1 -1
  207. package/dist/dashboard-web/chunks/{groups-page-B3EKGOLY.js → groups-page-3P4TLUMF.js} +1 -1
  208. package/dist/dashboard-web/chunks/{insights-page-X6RXNCWX.js → insights-page-TDCZV56A.js} +1 -1
  209. package/dist/dashboard-web/chunks/{monitor-room-LLRA5LQW.js → monitor-room-QWCWL3SX.js} +1 -1
  210. package/dist/dashboard-web/chunks/{monitoring-page-7MT5FEOS.js → monitoring-page-IOWFSNVC.js} +1 -1
  211. package/dist/dashboard-web/chunks/{office-page-KD46D5TD.js → office-page-5AUPEHZP.js} +1 -1
  212. package/dist/dashboard-web/chunks/{overview-page-JUWNH32O.js → overview-page-QJMI6NLW.js} +1 -1
  213. package/dist/dashboard-web/chunks/{roles-page-P6F7NLOI.js → roles-page-WJVB52ET.js} +1 -1
  214. package/dist/dashboard-web/chunks/{schedules-page-XIHWZST4.js → schedules-page-RVRWHP4V.js} +1 -1
  215. package/dist/dashboard-web/chunks/sessions-page-KWLGBX6G.js +3 -0
  216. package/dist/dashboard-web/chunks/settings-page-TNZEPC7V.js +2 -0
  217. package/dist/dashboard-web/chunks/{skills-page-A46KVWBL.js → skills-page-7YT5TIX5.js} +1 -1
  218. package/dist/dashboard-web/chunks/{team-federation-page-SDUC56DF.js → team-federation-page-NJZKTU7A.js} +1 -1
  219. package/dist/dashboard-web/chunks/{v3-page-J5JOTUSQ.js → v3-page-NQ73UA2Q.js} +1 -1
  220. package/dist/dashboard-web/chunks/{whiteboards-page-U7LSOAWI.js → whiteboards-page-DSM3MDMN.js} +1 -1
  221. package/dist/dashboard-web/style.css +198 -7
  222. package/dist/dashboard.js +294 -7
  223. package/dist/dashboard.js.map +1 -1
  224. package/dist/features/codex-notifier/adoption.d.ts +11 -0
  225. package/dist/features/codex-notifier/adoption.d.ts.map +1 -0
  226. package/dist/features/codex-notifier/adoption.js +11 -0
  227. package/dist/features/codex-notifier/adoption.js.map +1 -0
  228. package/dist/features/codex-notifier/app-opener.d.ts +21 -0
  229. package/dist/features/codex-notifier/app-opener.d.ts.map +1 -0
  230. package/dist/features/codex-notifier/app-opener.js +33 -0
  231. package/dist/features/codex-notifier/app-opener.js.map +1 -0
  232. package/dist/features/codex-notifier/card-action.d.ts +27 -0
  233. package/dist/features/codex-notifier/card-action.d.ts.map +1 -0
  234. package/dist/features/codex-notifier/card-action.js +84 -0
  235. package/dist/features/codex-notifier/card-action.js.map +1 -0
  236. package/dist/features/codex-notifier/card.d.ts +12 -0
  237. package/dist/features/codex-notifier/card.d.ts.map +1 -0
  238. package/dist/features/codex-notifier/card.js +150 -0
  239. package/dist/features/codex-notifier/card.js.map +1 -0
  240. package/dist/features/codex-notifier/codex-context.d.ts +12 -0
  241. package/dist/features/codex-notifier/codex-context.d.ts.map +1 -0
  242. package/dist/features/codex-notifier/codex-context.js +161 -0
  243. package/dist/features/codex-notifier/codex-context.js.map +1 -0
  244. package/dist/features/codex-notifier/config.d.ts +9 -0
  245. package/dist/features/codex-notifier/config.d.ts.map +1 -0
  246. package/dist/features/codex-notifier/config.js +11 -0
  247. package/dist/features/codex-notifier/config.js.map +1 -0
  248. package/dist/features/codex-notifier/confirmed-turn.d.ts +20 -0
  249. package/dist/features/codex-notifier/confirmed-turn.d.ts.map +1 -0
  250. package/dist/features/codex-notifier/confirmed-turn.js +130 -0
  251. package/dist/features/codex-notifier/confirmed-turn.js.map +1 -0
  252. package/dist/features/codex-notifier/emitter.d.ts +13 -0
  253. package/dist/features/codex-notifier/emitter.d.ts.map +1 -0
  254. package/dist/features/codex-notifier/emitter.js +33 -0
  255. package/dist/features/codex-notifier/emitter.js.map +1 -0
  256. package/dist/features/codex-notifier/event-store.d.ts +29 -0
  257. package/dist/features/codex-notifier/event-store.d.ts.map +1 -0
  258. package/dist/features/codex-notifier/event-store.js +217 -0
  259. package/dist/features/codex-notifier/event-store.js.map +1 -0
  260. package/dist/features/codex-notifier/event.d.ts +46 -0
  261. package/dist/features/codex-notifier/event.d.ts.map +1 -0
  262. package/dist/features/codex-notifier/event.js +188 -0
  263. package/dist/features/codex-notifier/event.js.map +1 -0
  264. package/dist/features/codex-notifier/hook-cli.d.ts +23 -0
  265. package/dist/features/codex-notifier/hook-cli.d.ts.map +1 -0
  266. package/dist/features/codex-notifier/hook-cli.js +130 -0
  267. package/dist/features/codex-notifier/hook-cli.js.map +1 -0
  268. package/dist/features/codex-notifier/hook-installer.d.ts +19 -0
  269. package/dist/features/codex-notifier/hook-installer.d.ts.map +1 -0
  270. package/dist/features/codex-notifier/hook-installer.js +158 -0
  271. package/dist/features/codex-notifier/hook-installer.js.map +1 -0
  272. package/dist/features/codex-notifier/index.d.ts +21 -0
  273. package/dist/features/codex-notifier/index.d.ts.map +1 -0
  274. package/dist/features/codex-notifier/index.js +19 -0
  275. package/dist/features/codex-notifier/index.js.map +1 -0
  276. package/dist/features/codex-notifier/internal-turn.d.ts +5 -0
  277. package/dist/features/codex-notifier/internal-turn.d.ts.map +1 -0
  278. package/dist/features/codex-notifier/internal-turn.js +43 -0
  279. package/dist/features/codex-notifier/internal-turn.js.map +1 -0
  280. package/dist/features/codex-notifier/outbox-worker.d.ts +71 -0
  281. package/dist/features/codex-notifier/outbox-worker.d.ts.map +1 -0
  282. package/dist/features/codex-notifier/outbox-worker.js +290 -0
  283. package/dist/features/codex-notifier/outbox-worker.js.map +1 -0
  284. package/dist/features/codex-notifier/outbox.d.ts +25 -0
  285. package/dist/features/codex-notifier/outbox.d.ts.map +1 -0
  286. package/dist/features/codex-notifier/outbox.js +225 -0
  287. package/dist/features/codex-notifier/outbox.js.map +1 -0
  288. package/dist/features/codex-notifier/paths.d.ts +7 -0
  289. package/dist/features/codex-notifier/paths.d.ts.map +1 -0
  290. package/dist/features/codex-notifier/paths.js +20 -0
  291. package/dist/features/codex-notifier/paths.js.map +1 -0
  292. package/dist/features/codex-notifier/screen-lock.d.ts +12 -0
  293. package/dist/features/codex-notifier/screen-lock.d.ts.map +1 -0
  294. package/dist/features/codex-notifier/screen-lock.js +47 -0
  295. package/dist/features/codex-notifier/screen-lock.js.map +1 -0
  296. package/dist/features/codex-notifier/side-conversation-monitor.d.ts +102 -0
  297. package/dist/features/codex-notifier/side-conversation-monitor.d.ts.map +1 -0
  298. package/dist/features/codex-notifier/side-conversation-monitor.js +774 -0
  299. package/dist/features/codex-notifier/side-conversation-monitor.js.map +1 -0
  300. package/dist/features/codex-notifier/types.d.ts +42 -0
  301. package/dist/features/codex-notifier/types.d.ts.map +1 -0
  302. package/dist/features/codex-notifier/types.js +2 -0
  303. package/dist/features/codex-notifier/types.js.map +1 -0
  304. package/dist/features/codex-notifier/worker-lock.d.ts +8 -0
  305. package/dist/features/codex-notifier/worker-lock.d.ts.map +1 -0
  306. package/dist/features/codex-notifier/worker-lock.js +108 -0
  307. package/dist/features/codex-notifier/worker-lock.js.map +1 -0
  308. package/dist/global-config.d.ts +13 -0
  309. package/dist/global-config.d.ts.map +1 -1
  310. package/dist/global-config.js +30 -0
  311. package/dist/global-config.js.map +1 -1
  312. package/dist/im/lark/card-builder.js +2 -2
  313. package/dist/im/lark/card-builder.js.map +1 -1
  314. package/dist/im/lark/card-handler.d.ts +2 -0
  315. package/dist/im/lark/card-handler.d.ts.map +1 -1
  316. package/dist/im/lark/card-handler.js +165 -34
  317. package/dist/im/lark/card-handler.js.map +1 -1
  318. package/dist/im/lark/client.d.ts +62 -4
  319. package/dist/im/lark/client.d.ts.map +1 -1
  320. package/dist/im/lark/client.js +237 -29
  321. package/dist/im/lark/client.js.map +1 -1
  322. package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
  323. package/dist/im/lark/event-dispatcher.js +20 -30
  324. package/dist/im/lark/event-dispatcher.js.map +1 -1
  325. package/dist/platform/secure-host-file.d.ts.map +1 -1
  326. package/dist/platform/secure-host-file.js +173 -54
  327. package/dist/platform/secure-host-file.js.map +1 -1
  328. package/dist/services/codex-app-threads.d.ts +47 -0
  329. package/dist/services/codex-app-threads.d.ts.map +1 -1
  330. package/dist/services/codex-app-threads.js +502 -10
  331. package/dist/services/codex-app-threads.js.map +1 -1
  332. package/dist/services/exact-chat-grant.d.ts +83 -0
  333. package/dist/services/exact-chat-grant.d.ts.map +1 -0
  334. package/dist/services/exact-chat-grant.js +249 -0
  335. package/dist/services/exact-chat-grant.js.map +1 -0
  336. package/dist/services/group-creator.d.ts +11 -0
  337. package/dist/services/group-creator.d.ts.map +1 -1
  338. package/dist/services/group-creator.js +18 -9
  339. package/dist/services/group-creator.js.map +1 -1
  340. package/dist/services/local-cli-opener.d.ts.map +1 -1
  341. package/dist/services/local-cli-opener.js +10 -5
  342. package/dist/services/local-cli-opener.js.map +1 -1
  343. package/dist/services/traex-user-input.d.ts +19 -0
  344. package/dist/services/traex-user-input.d.ts.map +1 -0
  345. package/dist/services/traex-user-input.js +57 -0
  346. package/dist/services/traex-user-input.js.map +1 -0
  347. package/dist/setup/open-platform-automation.d.ts +24 -3
  348. package/dist/setup/open-platform-automation.d.ts.map +1 -1
  349. package/dist/setup/open-platform-automation.js +45 -8
  350. package/dist/setup/open-platform-automation.js.map +1 -1
  351. package/dist/setup/verify-permissions.d.ts +18 -0
  352. package/dist/setup/verify-permissions.d.ts.map +1 -1
  353. package/dist/setup/verify-permissions.js +60 -0
  354. package/dist/setup/verify-permissions.js.map +1 -1
  355. package/dist/types.d.ts +70 -4
  356. package/dist/types.d.ts.map +1 -1
  357. package/dist/utils/child-env.d.ts +1 -1
  358. package/dist/utils/child-env.d.ts.map +1 -1
  359. package/dist/utils/child-env.js +2 -0
  360. package/dist/utils/child-env.js.map +1 -1
  361. package/dist/utils/pending-input-queue.d.ts +19 -0
  362. package/dist/utils/pending-input-queue.d.ts.map +1 -1
  363. package/dist/utils/pending-input-queue.js +21 -1
  364. package/dist/utils/pending-input-queue.js.map +1 -1
  365. package/dist/utils/stuck-detector.d.ts +45 -0
  366. package/dist/utils/stuck-detector.d.ts.map +1 -0
  367. package/dist/utils/stuck-detector.js +188 -0
  368. package/dist/utils/stuck-detector.js.map +1 -0
  369. package/dist/utils/stuck-key-guard.d.ts +75 -0
  370. package/dist/utils/stuck-key-guard.d.ts.map +1 -0
  371. package/dist/utils/stuck-key-guard.js +77 -0
  372. package/dist/utils/stuck-key-guard.js.map +1 -0
  373. package/dist/worker.js +807 -117
  374. package/dist/worker.js.map +1 -1
  375. package/package.json +1 -1
  376. package/dist/dashboard-web/chunks/bot-defaults-page-B5AY4B2J.js +0 -5
  377. package/dist/dashboard-web/chunks/sessions-page-2VECQ27T.js +0 -3
  378. package/dist/dashboard-web/chunks/settings-page-HMIUE2JA.js +0 -2
@@ -0,0 +1,39 @@
1
+ import type { BackendType } from './types.js';
2
+ /**
3
+ * 选出复现命令应展示的 bin/args——mirror worker.ts spawnCli 里 reproduce 快照的决策,
4
+ * 抽成纯函数便于锁测试(codex review P1:确保绝不含 sandbox wrapper)。
5
+ *
6
+ * 输入是**基础 CLI** 的 bin/args(cliAdapter.resolvedBin + buildArgs 产出,未经任何
7
+ * Seatbelt/bwrap/credential 改写)。规则:
8
+ * - wrapperCli 生效**且** sandbox 关闭时 → 返回 wrapper 形态(`aiden x claude …`)。
9
+ * worker 侧 wrapperCli 与 file sandbox 互斥(sandboxOn 时忽略 wrapper),这里同构。
10
+ * - 其余(无 wrapper,或 sandbox 开启)→ 返回基础 CLI bin/args 原样。
11
+ * 无论如何都**不**含 sandbox-exec / bwrap 外层——那是机器相关、裸 bash 跑不起来的包装。
12
+ */
13
+ export declare function selectReproduceLaunch(input: {
14
+ baseBin: string;
15
+ baseArgs: string[];
16
+ wrapperCli?: string;
17
+ sandboxOn: boolean;
18
+ binResolver?: (bin: string) => string;
19
+ ttadkModel?: string;
20
+ }): {
21
+ bin: string;
22
+ args: string[];
23
+ };
24
+ export interface ReproduceCommandInput {
25
+ backendType: BackendType;
26
+ /** CLI 自身的可执行文件(cliAdapter.resolvedBin,或 wrapperCli 改写后的启动器)。
27
+ * 应为**未被 sandbox 包装**的形态。 */
28
+ bin: string;
29
+ /** CLI argv(buildArgs 产出,或 wrapperCli 改写后)。未被 sandbox 包装。 */
30
+ args: string[];
31
+ /** 工作目录。 */
32
+ cwd?: string;
33
+ /** worker 的完整 childEnv——用于抽取 botmux 注入的权威 env 键。 */
34
+ env?: NodeJS.ProcessEnv;
35
+ /** 每 bot 注入 env(bots.json env,含 provider 凭证)。 */
36
+ injectEnv?: Record<string, string>;
37
+ }
38
+ export declare function buildReproduceCommand(input: ReproduceCommandInput): string | null;
39
+ //# sourceMappingURL=reproduce-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reproduce-command.d.ts","sourceRoot":"","sources":["../../../src/adapters/backend/reproduce-command.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAS9C;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAYlC;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,WAAW,CAAC;IACzB;kCAC8B;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,6DAA6D;IAC7D,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,YAAY;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AAMD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,GAAG,IAAI,CAgBjF"}
@@ -0,0 +1,63 @@
1
+ // src/adapters/backend/reproduce-command.ts
2
+ //
3
+ // Dashboard「复现命令」:把一次 session 冷启的 CLI 调用组装成一条可粘贴进调试终端
4
+ // (裸 bash)大致复现的命令。**近似**——不是当前进程的真实启动命令:
5
+ // - 省略外层文件/读隔离 sandbox(bwrap/seatbelt)包装:那是机器相关、装在
6
+ // bash 白板里也跑不起来,且会掩盖真正想复现的 CLI 行为。命令里注明。
7
+ // - 省略 tmux/zellij 的 shell wrapper(rcfile 语义):调试终端本身就是用户的
8
+ // 交互 bash,PATH/HOME/NVM 等由其 rcfile 提供,与 wrapper 目标一致;这里只补
9
+ // botmux 注入的那批权威 env(buildBotmuxEnvAssignments)——正是它们平时靠
10
+ // wrapper 的 `/usr/bin/env KEY=VAL` 注入、裸 bash 不会有。
11
+ // - riff 后端没有本地 bin/args(远端执行),返回 null → 接口报 unavailable,
12
+ // 绝不伪造一条本地命令误导排障。
13
+ // 供 worker 在 ready 时算出、上报给 daemon 只驻内存(含凭证,绝不落盘)。
14
+ import { buildBotmuxEnvAssignments } from './tmux-backend.js';
15
+ import { buildWrappedLaunch } from '../../setup/cli-selection.js';
16
+ /** POSIX 单引号转义,安全用于 bash 粘贴。 */
17
+ function shq(value) {
18
+ return `'${value.replace(/'/g, `'\\''`)}'`;
19
+ }
20
+ /**
21
+ * 选出复现命令应展示的 bin/args——mirror worker.ts spawnCli 里 reproduce 快照的决策,
22
+ * 抽成纯函数便于锁测试(codex review P1:确保绝不含 sandbox wrapper)。
23
+ *
24
+ * 输入是**基础 CLI** 的 bin/args(cliAdapter.resolvedBin + buildArgs 产出,未经任何
25
+ * Seatbelt/bwrap/credential 改写)。规则:
26
+ * - wrapperCli 生效**且** sandbox 关闭时 → 返回 wrapper 形态(`aiden x claude …`)。
27
+ * worker 侧 wrapperCli 与 file sandbox 互斥(sandboxOn 时忽略 wrapper),这里同构。
28
+ * - 其余(无 wrapper,或 sandbox 开启)→ 返回基础 CLI bin/args 原样。
29
+ * 无论如何都**不**含 sandbox-exec / bwrap 外层——那是机器相关、裸 bash 跑不起来的包装。
30
+ */
31
+ export function selectReproduceLaunch(input) {
32
+ const { baseBin, baseArgs, wrapperCli, sandboxOn } = input;
33
+ if (wrapperCli && wrapperCli.trim() && !sandboxOn) {
34
+ const launch = buildWrappedLaunch(wrapperCli, baseArgs, input.binResolver ?? ((b) => b), { ttadkModel: input.ttadkModel });
35
+ if (launch.bin)
36
+ return { bin: launch.bin, args: launch.args };
37
+ }
38
+ return { bin: baseBin, args: [...baseArgs] };
39
+ }
40
+ // 组装近似复现命令。riff(远端后端)返回 null。其余后端返回:
41
+ // cd '<cwd>' && KEY='v' KEY2='v2' ... '<bin>' '<arg>' ...
42
+ // env 前缀取 buildBotmuxEnvAssignments(BOTMUX_* / SESSION_DATA_DIR /
43
+ // CLAUDE_CONFIG_DIR / CODEX_HOME / 代理 / per-bot 凭证),每个 VAL 做 bash 单引号转义。
44
+ export function buildReproduceCommand(input) {
45
+ if (input.backendType === 'riff')
46
+ return null;
47
+ if (!input.bin)
48
+ return null;
49
+ const parts = [];
50
+ // 权威注入 env(KEY=VAL 列表),VAL 做 bash 转义后作为命令前缀。
51
+ for (const assignment of buildBotmuxEnvAssignments(input.env, input.injectEnv)) {
52
+ const eq = assignment.indexOf('=');
53
+ if (eq <= 0)
54
+ continue;
55
+ const key = assignment.slice(0, eq);
56
+ const val = assignment.slice(eq + 1);
57
+ parts.push(`${key}=${shq(val)}`);
58
+ }
59
+ parts.push(shq(input.bin), ...input.args.map(shq));
60
+ const cmd = parts.join(' ');
61
+ return input.cwd ? `cd ${shq(input.cwd)} && ${cmd}` : cmd;
62
+ }
63
+ //# sourceMappingURL=reproduce-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reproduce-command.js","sourceRoot":"","sources":["../../../src/adapters/backend/reproduce-command.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,EAAE;AACF,sDAAsD;AACtD,yCAAyC;AACzC,qDAAqD;AACrD,6CAA6C;AAC7C,4DAA4D;AAC5D,8DAA8D;AAC9D,6DAA6D;AAC7D,sDAAsD;AACtD,4DAA4D;AAC5D,sBAAsB;AACtB,kDAAkD;AAGlD,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE,gCAAgC;AAChC,SAAS,GAAG,CAAC,KAAa;IACxB,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;AAC7C,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAOrC;IACC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAC3D,IAAI,UAAU,IAAI,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;QAClD,MAAM,MAAM,GAAG,kBAAkB,CAC/B,UAAU,EACV,QAAQ,EACR,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAC/B,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CACjC,CAAC;QACF,IAAI,MAAM,CAAC,GAAG;YAAE,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;IAChE,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC;AAC/C,CAAC;AAiBD,qCAAqC;AACrC,4DAA4D;AAC5D,kEAAkE;AAClE,yEAAyE;AACzE,MAAM,UAAU,qBAAqB,CAAC,KAA4B;IAChE,IAAI,KAAK,CAAC,WAAW,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IAC9C,IAAI,CAAC,KAAK,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IAE5B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,6CAA6C;IAC7C,KAAK,MAAM,UAAU,IAAI,yBAAyB,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/E,MAAM,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,EAAE,IAAI,CAAC;YAAE,SAAS;QACtB,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACpC,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACnC,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACnD,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;AAC5D,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { type RiffBackendConfig } from './riff-backend.js';
2
- import type { BackendType, SessionBackend } from './types.js';
2
+ import type { BackendType, PersistentBackendTarget, SessionBackend } from './types.js';
3
3
  export type BackendGateDecision = {
4
4
  action: 'spawn';
5
5
  } | {
@@ -40,10 +40,19 @@ export interface SelectedSessionBackend {
40
40
  * like the non-tmux (pty) path — screenshots via the headless renderer, web
41
41
  * terminal via relay — but it owns a persistent zellij session internally. */
42
42
  isZellijMode: boolean;
43
+ persistentSessionName?: string;
44
+ /** Exact resource owned by this Botmux session; persisted by the daemon. */
45
+ persistentBackendTarget?: PersistentBackendTarget;
46
+ isReattach?: boolean;
47
+ /** Set when this spawn creates its deterministic Botmux-owned Herdr session. */
48
+ createdHerdrSessionName?: string;
43
49
  }
44
50
  export declare function selectSessionBackend(opts: {
45
51
  sessionId: string;
46
52
  backendType: BackendType;
47
53
  backendConfig?: RiffBackendConfig;
54
+ /** Migration compatibility for sessions previously placed in a shared user host. */
55
+ reuseRecordedHerdrTarget?: boolean;
56
+ persistentBackendTarget?: PersistentBackendTarget;
48
57
  }): SelectedSessionBackend;
49
58
  //# sourceMappingURL=session-backend-selector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-backend-selector.d.ts","sourceRoot":"","sources":["../../../src/adapters/backend/session-backend-selector.ts"],"names":[],"mappings":"AAEA,OAAO,EAAe,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAIxE,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE9D,MAAM,MAAM,mBAAmB,GAC3B;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GACnB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvC;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,SAAS,EAAE,WAAW,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,kBAAkB,EAAE,OAAO,CAAC;CAC7B,GAAG,mBAAmB,CAKtB;AAED,6EAA6E;AAC7E,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAYnF;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,cAAc,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB;;mFAE+E;IAC/E,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,WAAW,CAAC;IAAC,aAAa,CAAC,EAAE,iBAAiB,CAAA;CAAE,GAAG,sBAAsB,CAoErJ"}
1
+ {"version":3,"file":"session-backend-selector.d.ts","sourceRoot":"","sources":["../../../src/adapters/backend/session-backend-selector.ts"],"names":[],"mappings":"AAEA,OAAO,EAAe,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAIxE,OAAO,KAAK,EAAE,WAAW,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEvF,MAAM,MAAM,mBAAmB,GAC3B;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GACnB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvC;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,SAAS,EAAE,WAAW,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,kBAAkB,EAAE,OAAO,CAAC;CAC7B,GAAG,mBAAmB,CAKtB;AAED,6EAA6E;AAC7E,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAYnF;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,cAAc,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB;;mFAE+E;IAC/E,YAAY,EAAE,OAAO,CAAC;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,4EAA4E;IAC5E,uBAAuB,CAAC,EAAE,uBAAuB,CAAC;IAClD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gFAAgF;IAChF,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,WAAW,CAAC;IACzB,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,oFAAoF;IACpF,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,uBAAuB,CAAC,EAAE,uBAAuB,CAAC;CACnD,GAAG,sBAAsB,CA0IzB"}
@@ -65,6 +65,9 @@ export function selectSessionBackend(opts) {
65
65
  isTmuxMode: false,
66
66
  isPipeMode: false,
67
67
  isZellijMode: true,
68
+ persistentSessionName: sessionName,
69
+ persistentBackendTarget: { backendType: 'zellij', sessionName },
70
+ isReattach: reattach,
68
71
  };
69
72
  }
70
73
  if (opts.backendType === 'pty') {
@@ -76,20 +79,80 @@ export function selectSessionBackend(opts) {
76
79
  };
77
80
  }
78
81
  if (opts.backendType === 'herdr') {
79
- const sessionName = HerdrBackend.sessionName(opts.sessionId);
80
- if (HerdrBackend.hasSession(sessionName)) {
82
+ const ownedSessionName = HerdrBackend.sessionName(opts.sessionId);
83
+ // A restarted worker must reattach to the SAME shared host selected by the
84
+ // prior generation. Re-selecting from UI current/default state could pick a
85
+ // different workspace, start a duplicate CLI there, and orphan
86
+ // the still-live managed agent in the recorded host. Isolation/MCP callers
87
+ // explicitly disable shared reuse, so they intentionally ignore this stamp
88
+ // and converge back to the machine-wide Botmux-managed session.
89
+ const recorded = opts.reuseRecordedHerdrTarget === false
90
+ ? undefined
91
+ : opts.persistentBackendTarget?.backendType === 'herdr'
92
+ && opts.persistentBackendTarget.agentName
93
+ ? opts.persistentBackendTarget
94
+ : undefined;
95
+ if (recorded) {
96
+ const hostProbe = HerdrBackend.probeSession(recorded.sessionName);
97
+ if (hostProbe === 'unknown') {
98
+ throw new Error(`recorded herdr session ${recorded.sessionName} probe inconclusive`);
99
+ }
100
+ if (hostProbe === 'exists') {
101
+ const agentProbe = HerdrBackend.probeAgent(recorded.sessionName, recorded.agentName);
102
+ if (agentProbe === 'unknown') {
103
+ throw new Error(`recorded herdr agent ${recorded.sessionName}/${recorded.agentName} probe inconclusive`);
104
+ }
105
+ const reattach = agentProbe === 'exists';
106
+ return {
107
+ backend: new HerdrBackend(recorded.sessionName, {
108
+ agentName: recorded.agentName,
109
+ isReattach: reattach,
110
+ ownsSession: false,
111
+ ownsAgent: true,
112
+ }),
113
+ isTmuxMode: false,
114
+ isPipeMode: true,
115
+ isZellijMode: false,
116
+ persistentSessionName: recorded.sessionName,
117
+ persistentBackendTarget: recorded,
118
+ isReattach: reattach,
119
+ };
120
+ }
121
+ }
122
+ if (HerdrBackend.hasSession(ownedSessionName)) {
81
123
  return {
82
- backend: new HerdrBackend(sessionName, { isReattach: true }),
124
+ backend: new HerdrBackend(ownedSessionName, { isReattach: true }),
83
125
  isTmuxMode: false,
84
126
  isPipeMode: true,
85
127
  isZellijMode: false,
128
+ persistentSessionName: ownedSessionName,
129
+ persistentBackendTarget: { backendType: 'herdr', sessionName: ownedSessionName },
130
+ isReattach: true,
86
131
  };
87
132
  }
133
+ // Every fresh agent actively launched by this machine's Botmux shares the
134
+ // reserved `botmux` Herdr host, regardless of which Lark bot, dashboard, or
135
+ // other Botmux entry point requested it. Topics remain isolated as distinct
136
+ // managed agents/panes. /adopt stays bound to its explicit user session.
137
+ const hostSessionName = HerdrBackend.managedSessionName();
138
+ const agentName = `botmux-${opts.sessionId.slice(0, 8)}`;
139
+ const hostExists = HerdrBackend.hasSession(hostSessionName);
140
+ const reattach = hostExists && HerdrBackend.hasAgent(hostSessionName, agentName);
88
141
  return {
89
- backend: new HerdrBackend(sessionName, { createSession: true }),
142
+ backend: new HerdrBackend(hostSessionName, {
143
+ createSession: !hostExists,
144
+ agentName,
145
+ isReattach: reattach,
146
+ ownsSession: false,
147
+ ownsAgent: true,
148
+ }),
90
149
  isTmuxMode: false,
91
150
  isPipeMode: true,
92
151
  isZellijMode: false,
152
+ persistentSessionName: hostSessionName,
153
+ persistentBackendTarget: { backendType: 'herdr', sessionName: hostSessionName, agentName },
154
+ isReattach: reattach,
155
+ createdHerdrSessionName: hostExists ? undefined : hostSessionName,
93
156
  };
94
157
  }
95
158
  const sessionName = TmuxBackend.sessionName(opts.sessionId);
@@ -99,6 +162,9 @@ export function selectSessionBackend(opts) {
99
162
  isTmuxMode: true,
100
163
  isPipeMode: true,
101
164
  isZellijMode: false,
165
+ persistentSessionName: sessionName,
166
+ persistentBackendTarget: { backendType: 'tmux', sessionName },
167
+ isReattach: true,
102
168
  };
103
169
  }
104
170
  return {
@@ -106,6 +172,9 @@ export function selectSessionBackend(opts) {
106
172
  isTmuxMode: true,
107
173
  isPipeMode: true,
108
174
  isZellijMode: false,
175
+ persistentSessionName: sessionName,
176
+ persistentBackendTarget: { backendType: 'tmux', sessionName },
177
+ isReattach: false,
109
178
  };
110
179
  }
111
180
  //# sourceMappingURL=session-backend-selector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-backend-selector.js","sourceRoot":"","sources":["../../../src/adapters/backend/session-backend-selector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-backend-selector.js","sourceRoot":"","sources":["../../../src/adapters/backend/session-backend-selector.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,20 @@
1
1
  export type BackendType = 'pty' | 'tmux' | 'herdr' | 'zellij' | 'riff';
2
+ /**
3
+ * Durable identity of the backing resource owned by one Botmux session.
4
+ *
5
+ * Most persistent backends own the whole mux session. Herdr can instead place
6
+ * a managed agent inside a user's existing session; in that case `agentName`
7
+ * identifies the pane Botmux owns and the surrounding session must be left
8
+ * untouched on restore/close paths that run without a live worker.
9
+ */
10
+ export type PersistentBackendTarget = {
11
+ backendType: 'tmux' | 'zellij';
12
+ sessionName: string;
13
+ } | {
14
+ backendType: 'herdr';
15
+ sessionName: string;
16
+ agentName?: string;
17
+ };
2
18
  /**
3
19
  * Tri-state result of probing whether a named backing session exists.
4
20
  *
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/adapters/backend/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEvE;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AAE5D,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,CAAC;IAC1D,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IACzC,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC;IACvE,IAAI,IAAI,IAAI,CAAC;IACb;mEAC+D;IAC/D,aAAa,CAAC,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC/D,yDAAyD;IACzD,WAAW,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC;IAC9B,oBAAoB,CAAC,IAAI,MAAM,CAAC;IAChC,eAAe,CAAC,IAAI,MAAM,CAAC;IAC3B,WAAW,CAAC,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACtD;;;;;;OAMG;IACH,WAAW,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IAC9C;;;;;;;OAOG;IACH,UAAU,CAAC,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IAClC;;4EAEwE;IACxE,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC;IACrD,uEAAuE;IACvE,cAAc,CAAC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,cAAe,SAAQ,cAAc;IACpD,uEAAuE;IACvE,oBAAoB,IAAI,MAAM,CAAC;IAC/B,6EAA6E;IAC7E,eAAe,IAAI,MAAM,CAAC;IAC1B,yDAAyD;IACzD,WAAW,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACrD,4BAA4B;IAC5B,WAAW,IAAI,OAAO,CAAC;IACvB;;;;;;OAMG;IACH,kBAAkB,CAAC,IAAI,OAAO,CAAC;CAChC;AAED,mFAAmF;AACnF,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,cAAc,CAOhE"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/adapters/backend/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/adapters/backend/types.ts"],"names":[],"mappings":"AA2GA,mFAAmF;AACnF,MAAM,UAAU,gBAAgB,CAAC,CAAU;IACzC,OAAO,CACL,CAAC,CAAC,CAAC;QACH,OAAQ,CAAoB,CAAC,eAAe,KAAK,UAAU;QAC3D,OAAQ,CAAoB,CAAC,WAAW,KAAK,UAAU;QACvD,OAAQ,CAAoB,CAAC,oBAAoB,KAAK,UAAU,CACjE,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/adapters/backend/types.ts"],"names":[],"mappings":"AAuHA,mFAAmF;AACnF,MAAM,UAAU,gBAAgB,CAAC,CAAU;IACzC,OAAO,CACL,CAAC,CAAC,CAAC;QACH,OAAQ,CAAoB,CAAC,eAAe,KAAK,UAAU;QAC3D,OAAQ,CAAoB,CAAC,WAAW,KAAK,UAAU;QACvD,OAAQ,CAAoB,CAAC,oBAAoB,KAAK,UAAU,CACjE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,27 @@
1
+ export declare const PI_INITIAL_PROMPT_COMMAND_NAME = "botmux-initial-prompt";
2
+ export declare const PI_INITIAL_PROMPT_COMMAND = "/botmux-initial-prompt";
3
+ export declare const PI_INITIAL_PROMPT_FILE_ENV = "BOTMUX_PI_INITIAL_PROMPT_FILE";
4
+ interface PiExtensionCommandContext {
5
+ isIdle(): boolean;
6
+ ui: {
7
+ notify(message: string, level: 'info' | 'warning' | 'error'): void;
8
+ };
9
+ }
10
+ interface PiExtensionApi {
11
+ registerCommand(name: string, options: {
12
+ description: string;
13
+ handler(args: string, ctx: PiExtensionCommandContext): Promise<void> | void;
14
+ }): void;
15
+ sendUserMessage(content: string, options?: {
16
+ deliverAs: 'followUp';
17
+ }): void;
18
+ }
19
+ /**
20
+ * Pi expands @file only for launch argv, not for text entered into its TUI.
21
+ * Deferred first prompts therefore use this short, one-shot command: the
22
+ * extension reads the worker-selected file (never a user-supplied path) and
23
+ * submits its full contents through Pi's native user-message API as one turn.
24
+ */
25
+ export default function registerBotmuxInitialPromptExtension(pi: PiExtensionApi): void;
26
+ export {};
27
+ //# sourceMappingURL=pi-initial-prompt-extension.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pi-initial-prompt-extension.d.ts","sourceRoot":"","sources":["../../../src/adapters/cli/pi-initial-prompt-extension.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,8BAA8B,0BAA0B,CAAC;AACtE,eAAO,MAAM,yBAAyB,2BAAuC,CAAC;AAC9E,eAAO,MAAM,0BAA0B,kCAAkC,CAAC;AAE1E,UAAU,yBAAyB;IACjC,MAAM,IAAI,OAAO,CAAC;IAClB,EAAE,EAAE;QACF,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,IAAI,CAAC;KACpE,CAAC;CACH;AAED,UAAU,cAAc;IACtB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;QACrC,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;KAC7E,GAAG,IAAI,CAAC;IACT,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,SAAS,EAAE,UAAU,CAAA;KAAE,GAAG,IAAI,CAAC;CAC7E;AAED;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,oCAAoC,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI,CAwBrF"}
@@ -0,0 +1,38 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ export const PI_INITIAL_PROMPT_COMMAND_NAME = 'botmux-initial-prompt';
3
+ export const PI_INITIAL_PROMPT_COMMAND = `/${PI_INITIAL_PROMPT_COMMAND_NAME}`;
4
+ export const PI_INITIAL_PROMPT_FILE_ENV = 'BOTMUX_PI_INITIAL_PROMPT_FILE';
5
+ /**
6
+ * Pi expands @file only for launch argv, not for text entered into its TUI.
7
+ * Deferred first prompts therefore use this short, one-shot command: the
8
+ * extension reads the worker-selected file (never a user-supplied path) and
9
+ * submits its full contents through Pi's native user-message API as one turn.
10
+ */
11
+ export default function registerBotmuxInitialPromptExtension(pi) {
12
+ pi.registerCommand(PI_INITIAL_PROMPT_COMMAND_NAME, {
13
+ description: 'Deliver the Botmux initial prompt',
14
+ handler: async (_args, ctx) => {
15
+ const filePath = process.env[PI_INITIAL_PROMPT_FILE_ENV];
16
+ if (!filePath) {
17
+ ctx.ui.notify('Botmux initial prompt is no longer available.', 'error');
18
+ return;
19
+ }
20
+ try {
21
+ const prompt = await readFile(filePath, 'utf8');
22
+ if (ctx.isIdle())
23
+ pi.sendUserMessage(prompt);
24
+ else
25
+ pi.sendUserMessage(prompt, { deliverAs: 'followUp' });
26
+ // One-shot within this Pi process. Keep the file itself until the worker
27
+ // ends the session so an owned process restart can safely replay a
28
+ // command that was written but not yet consumed.
29
+ delete process.env[PI_INITIAL_PROMPT_FILE_ENV];
30
+ }
31
+ catch (err) {
32
+ const detail = err instanceof Error ? err.message : String(err);
33
+ ctx.ui.notify(`Failed to load Botmux initial prompt: ${detail}`, 'error');
34
+ }
35
+ },
36
+ });
37
+ }
38
+ //# sourceMappingURL=pi-initial-prompt-extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pi-initial-prompt-extension.js","sourceRoot":"","sources":["../../../src/adapters/cli/pi-initial-prompt-extension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,MAAM,CAAC,MAAM,8BAA8B,GAAG,uBAAuB,CAAC;AACtE,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,8BAA8B,EAAE,CAAC;AAC9E,MAAM,CAAC,MAAM,0BAA0B,GAAG,+BAA+B,CAAC;AAiB1E;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,oCAAoC,CAAC,EAAkB;IAC7E,EAAE,CAAC,eAAe,CAAC,8BAA8B,EAAE;QACjD,WAAW,EAAE,mCAAmC;QAChD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YAC5B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;YACzD,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,+CAA+C,EAAE,OAAO,CAAC,CAAC;gBACxE,OAAO;YACT,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBAChD,IAAI,GAAG,CAAC,MAAM,EAAE;oBAAE,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;;oBACxC,EAAE,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;gBAC3D,yEAAyE;gBACzE,mEAAmE;gBACnE,iDAAiD;gBACjD,OAAO,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;YACjD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChE,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,yCAAyC,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;YAC5E,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,21 @@
1
+ export declare const PI_INITIAL_PROMPT_ARG_BYTE_LIMIT = 4096;
2
+ export declare function piInitialPromptNeedsFile(prompt: string | undefined): boolean;
3
+ export declare function piInitialPromptRootDir(sessionDataDir: string): string;
4
+ export declare function piInitialPromptDir(sessionDataDir: string, sessionId: string): string;
5
+ export declare function piInitialPromptFilePath(sessionDataDir: string, sessionId: string): string;
6
+ export declare function preparePiInitialPromptArg(opts: {
7
+ prompt: string;
8
+ sessionId: string;
9
+ sessionDataDir?: string;
10
+ }): {
11
+ initialPromptArg: string;
12
+ filePath?: string;
13
+ readonlyRoot?: string;
14
+ cleanupDir?: string;
15
+ deferredInput?: {
16
+ content: string;
17
+ additionalArgs: string[];
18
+ env: Record<string, string>;
19
+ };
20
+ };
21
+ //# sourceMappingURL=pi-initial-prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pi-initial-prompt.d.ts","sourceRoot":"","sources":["../../../src/adapters/cli/pi-initial-prompt.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,gCAAgC,OAAO,CAAC;AASrD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAQ5E;AAED,wBAAgB,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAErE;AAED,wBAAgB,kBAAkB,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEpF;AAED,wBAAgB,uBAAuB,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEzF;AASD,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG;IACF,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,cAAc,EAAE,MAAM,EAAE,CAAC;QACzB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC7B,CAAC;CACH,CAyBA"}
@@ -0,0 +1,59 @@
1
+ import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
2
+ import { dirname, join, resolve } from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+ import { PI_INITIAL_PROMPT_COMMAND, PI_INITIAL_PROMPT_FILE_ENV, } from './pi-initial-prompt-extension.js';
5
+ export const PI_INITIAL_PROMPT_ARG_BYTE_LIMIT = 4096;
6
+ const SAFE_SESSION_ID = /^[A-Za-z0-9._-]+$/;
7
+ function safeSessionFileStem(sessionId) {
8
+ if (SAFE_SESSION_ID.test(sessionId) && !/^\.+$/.test(sessionId))
9
+ return sessionId;
10
+ return sessionId.replace(/[^A-Za-z0-9._-]/g, '_').replace(/^\.+$/, '_');
11
+ }
12
+ export function piInitialPromptNeedsFile(prompt) {
13
+ return !!prompt && (Buffer.byteLength(prompt, 'utf8') > PI_INITIAL_PROMPT_ARG_BYTE_LIMIT
14
+ // Herdr 0.7.5 rejects control characters in managed-agent argv. Its macOS
15
+ // integration can also bypass the PATH launcher, so even short routed
16
+ // Botmux prompts must use Pi's safe @file positional form.
17
+ || /[\x00-\x1f\x7f]/.test(prompt));
18
+ }
19
+ export function piInitialPromptRootDir(sessionDataDir) {
20
+ return join(sessionDataDir, 'pi-initial-prompts');
21
+ }
22
+ export function piInitialPromptDir(sessionDataDir, sessionId) {
23
+ return join(piInitialPromptRootDir(sessionDataDir), safeSessionFileStem(sessionId));
24
+ }
25
+ export function piInitialPromptFilePath(sessionDataDir, sessionId) {
26
+ return join(piInitialPromptDir(sessionDataDir, sessionId), 'initial.prompt.md');
27
+ }
28
+ function piInitialPromptExtensionPath() {
29
+ const here = dirname(fileURLToPath(import.meta.url));
30
+ const compiled = resolve(here, 'pi-initial-prompt-extension.js');
31
+ if (existsSync(compiled))
32
+ return compiled;
33
+ return resolve(here, 'pi-initial-prompt-extension.ts');
34
+ }
35
+ export function preparePiInitialPromptArg(opts) {
36
+ if (!piInitialPromptNeedsFile(opts.prompt)) {
37
+ return { initialPromptArg: opts.prompt };
38
+ }
39
+ const sessionDataDir = opts.sessionDataDir?.trim();
40
+ if (!sessionDataDir) {
41
+ throw new Error('Pi long initial prompt requires SESSION_DATA_DIR for @file delivery; refusing TUI paste fallback');
42
+ }
43
+ const dir = piInitialPromptDir(sessionDataDir, opts.sessionId);
44
+ mkdirSync(dir, { recursive: true, mode: 0o700 });
45
+ const filePath = piInitialPromptFilePath(sessionDataDir, opts.sessionId);
46
+ writeFileSync(filePath, opts.prompt, { encoding: 'utf8', mode: 0o600 });
47
+ return {
48
+ initialPromptArg: `@${filePath}`,
49
+ filePath,
50
+ readonlyRoot: dir,
51
+ cleanupDir: dir,
52
+ deferredInput: {
53
+ content: PI_INITIAL_PROMPT_COMMAND,
54
+ additionalArgs: ['--extension', piInitialPromptExtensionPath()],
55
+ env: { [PI_INITIAL_PROMPT_FILE_ENV]: filePath },
56
+ },
57
+ };
58
+ }
59
+ //# sourceMappingURL=pi-initial-prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pi-initial-prompt.js","sourceRoot":"","sources":["../../../src/adapters/cli/pi-initial-prompt.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pi.d.ts","sourceRoot":"","sources":["../../../src/adapters/cli/pi.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,YAAY,CAAC;AAIxD,uDAAuD;AACvD,wBAAgB,eAAe,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,UAAU,CA8CjE;AAED,eAAO,MAAM,MAAM,wBAAkB,CAAC"}
1
+ {"version":3,"file":"pi.d.ts","sourceRoot":"","sources":["../../../src/adapters/cli/pi.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,YAAY,CAAC;AAIxD,uDAAuD;AACvD,wBAAgB,eAAe,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,UAAU,CAyDjE;AAED,eAAO,MAAM,MAAM,wBAAkB,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { resolveCommand } from './registry.js';
2
2
  import { BOTMUX_SHELL_HINTS } from './shared-hints.js';
3
+ import { preparePiInitialPromptArg } from './pi-initial-prompt.js';
3
4
  import { delay } from '../../utils/timing.js';
4
5
  /** Adapter for Pi coding-agent's native TUI (`pi`). */
5
6
  export function createPiAdapter(pathOverride) {
@@ -21,11 +22,21 @@ export function createPiAdapter(pathOverride) {
21
22
  buildResumeCommand({ sessionId }) {
22
23
  return `pi --session-id ${sessionId}`;
23
24
  },
25
+ prepareInitialPromptArg({ initialPrompt, sessionId, sessionDataDir }) {
26
+ const prepared = preparePiInitialPromptArg({
27
+ prompt: initialPrompt,
28
+ sessionId,
29
+ sessionDataDir,
30
+ });
31
+ return {
32
+ initialPrompt: prepared.initialPromptArg,
33
+ readonlyRoots: prepared.readonlyRoot ? [prepared.readonlyRoot] : undefined,
34
+ cleanupPaths: prepared.filePath ? [prepared.filePath] : undefined,
35
+ cleanupDirs: prepared.cleanupDir ? [prepared.cleanupDir] : undefined,
36
+ deferredInput: prepared.deferredInput,
37
+ };
38
+ },
24
39
  passesInitialPromptViaArgs: true,
25
- // tmux reports "command too long" around ~12KB total launch argv on some
26
- // deployments, well below OS ARG_MAX. Keep short Pi prompts on argv (legacy
27
- // behavior) but route long first messages/cards through writeInput instead.
28
- maxInitialPromptArgBytes: 4096,
29
40
  async writeInput(pty, content) {
30
41
  if (pty.pasteText && pty.sendSpecialKeys) {
31
42
  pty.pasteText(content);
@@ -1 +1 @@
1
- {"version":3,"file":"pi.js","sourceRoot":"","sources":["../../../src/adapters/cli/pi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAGvD,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE9C,uDAAuD;AACvD,MAAM,UAAU,eAAe,CAAC,YAAqB;IACnD,MAAM,GAAG,GAAG,cAAc,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC;IACjD,OAAO;QACL,EAAE,EAAE,IAAI;QACR,SAAS,EAAE,CAAC,uBAAuB,CAAC;QACpC,WAAW,EAAE,GAAG;QAEhB,SAAS,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE;YACpC,MAAM,IAAI,GAAG;gBACX,cAAc,EAAE,SAAS;aAC1B,CAAC;YACF,wEAAwE;YACxE,sEAAsE;YACtE,IAAI,aAAa;gBAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC5C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,kBAAkB,CAAC,EAAE,SAAS,EAAE;YAC9B,OAAO,mBAAmB,SAAS,EAAE,CAAC;QACxC,CAAC;QAED,0BAA0B,EAAE,IAAI;QAChC,yEAAyE;QACzE,4EAA4E;QAC5E,4EAA4E;QAC5E,wBAAwB,EAAE,IAAI;QAE9B,KAAK,CAAC,UAAU,CAAC,GAAc,EAAE,OAAe;YAC9C,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;gBACzC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBACvB,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;gBACjB,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,KAAK,CAAC,YAAY,OAAO,WAAW,CAAC,CAAC;gBAC1C,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;gBAClB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED,iBAAiB,EAAE,SAAS;QAC5B,WAAW,EAAE,eAAe;QAC5B,YAAY,EAAE,SAAS;QACvB,WAAW,EAAE,kBAAkB;QAC/B,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,oBAAoB;KAChC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,eAAe,CAAC"}
1
+ {"version":3,"file":"pi.js","sourceRoot":"","sources":["../../../src/adapters/cli/pi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAGnE,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE9C,uDAAuD;AACvD,MAAM,UAAU,eAAe,CAAC,YAAqB;IACnD,MAAM,GAAG,GAAG,cAAc,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC;IACjD,OAAO;QACL,EAAE,EAAE,IAAI;QACR,SAAS,EAAE,CAAC,uBAAuB,CAAC;QACpC,WAAW,EAAE,GAAG;QAEhB,SAAS,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE;YACpC,MAAM,IAAI,GAAG;gBACX,cAAc,EAAE,SAAS;aAC1B,CAAC;YACF,wEAAwE;YACxE,sEAAsE;YACtE,IAAI,aAAa;gBAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC5C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,kBAAkB,CAAC,EAAE,SAAS,EAAE;YAC9B,OAAO,mBAAmB,SAAS,EAAE,CAAC;QACxC,CAAC;QAED,uBAAuB,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,cAAc,EAAE;YAClE,MAAM,QAAQ,GAAG,yBAAyB,CAAC;gBACzC,MAAM,EAAE,aAAa;gBACrB,SAAS;gBACT,cAAc;aACf,CAAC,CAAC;YACH,OAAO;gBACL,aAAa,EAAE,QAAQ,CAAC,gBAAgB;gBACxC,aAAa,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC1E,YAAY,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;gBACjE,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS;gBACpE,aAAa,EAAE,QAAQ,CAAC,aAAa;aACtC,CAAC;QACJ,CAAC;QAED,0BAA0B,EAAE,IAAI;QAEhC,KAAK,CAAC,UAAU,CAAC,GAAc,EAAE,OAAe;YAC9C,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;gBACzC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBACvB,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;gBACjB,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,KAAK,CAAC,YAAY,OAAO,WAAW,CAAC,CAAC;gBAC1C,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;gBAClB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED,iBAAiB,EAAE,SAAS;QAC5B,WAAW,EAAE,eAAe;QAC5B,YAAY,EAAE,SAAS;QACvB,WAAW,EAAE,kBAAkB;QAC/B,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,oBAAoB;KAChC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,eAAe,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"read-isolation.d.ts","sourceRoot":"","sources":["../../../src/adapters/cli/read-isolation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AASH;;;8EAG8E;AAC9E,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM/D;AAED;;;;;;;;;;;;;wBAawB;AACxB,wBAAgB,gBAAgB,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAG9E;AAOD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQrD;AAED;;+EAE+E;AAC/E,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAErE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,+BAA+B,CAAC,KAAK,EAAE;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,MAAM,EAAE,CAOX;AAED,MAAM,WAAW,kBAAkB;IACjC,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB;;+FAE2F;IAC3F,UAAU,EAAE,MAAM,CAAC;IACnB;wDACoD;IACpD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,0EAA0E;IAC1E,cAAc,EAAE,MAAM,CAAC;IACvB;;kFAE8E;IAC9E,YAAY,EAAE,MAAM,CAAC;IACrB;+EAC2E;IAC3E,gBAAgB,EAAE,MAAM,CAAC;IACzB,+DAA+D;IAC/D,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED;;;;aAIa;AACb,eAAO,MAAM,4BAA4B,yEAM/B,CAAC;AACX,eAAO,MAAM,2CAA2C,iCAAiC,CAAC;AAS1F;;iFAEiF;AACjF,wBAAgB,mCAAmC,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED;;8EAE8E;AAC9E,wBAAgB,qCAAqC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAK3E;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE;IACjD,YAAY,EAAE,OAAO,CAAC;IACtB,sBAAsB,EAAE,OAAO,CAAC;CACjC,GAAG,OAAO,CAEV;AAED,MAAM,MAAM,2BAA2B,GACnC;IAAE,QAAQ,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,KAAK,CAAA;CAAE,GAChC;IAAE,QAAQ,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,eAAe,CAAA;CAAE,GACzC;IAAE,QAAQ,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GACnC;IAAE,QAAQ,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAA;CAAE,GAC9C;IAAE,QAAQ,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,SAAS,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,CAAC;AAElE;;;;;GAKG;AACH,wBAAgB,mCAAmC,CAAC,KAAK,EAAE;IACzD,YAAY,EAAE,OAAO,CAAC;IACtB,sBAAsB,EAAE,OAAO,CAAC;IAChC,aAAa,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,gFAAgF;IAChF,8BAA8B,EAAE,OAAO,CAAC;CACzC,GAAG,2BAA2B,CAsB9B;AAED,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,0BAA0B,GAAG;IAC9E,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B,CAuBA;AAED;;;;;;;;;;;;;uFAauF;AACvF,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,kBAAkB,GAAG,MAAM,EAAE,CAuGlE;AAOD;;;;;;;;;;;2EAW2E;AAC3E,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,kBAAkB,GAAG,MAAM,EAAE,CAmCpE;AAED;;8EAE8E;AAC9E,wBAAgB,qCAAqC,CACnD,GAAG,EAAE,kBAAkB,EACvB,UAAU,GAAE;IAAE,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;CAAO,GACzE;IACD,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B,CA6CA;AAED;;;;;;;uEAOuE;AACvE,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,kBAAkB,GAAG;IACzD,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B,CA8BA;AAID,MAAM,WAAW,mBAAmB;IAClC,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,0EAA0E;IAC1E,cAAc,EAAE,MAAM,CAAC;IACvB,0FAA0F;IAC1F,UAAU,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,YAAY,EAAE,MAAM,CAAC;IACrB;6DACyD;IACzD,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,mBAAmB,GAAG;IAChE,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B,CA+DA;AAID,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,kBAAkB,CAAC;IACxB;;;;8EAI0E;IAC1E,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB;;kEAE8D;IAC9D,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,uBAAuB,GAAG;IAC5E;;sFAEkF;IAClF,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB;;;8DAG0D;IAC1D,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B;;;uFAGmF;IACnF,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B,CA6DA;AAED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAC9C,UAAU,EAAE,OAAO,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB;;;8EAG0E;IAC1E,QAAQ,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,iBAAiB,EAAE,OAAO,CAAC;CAC5B,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE,CAWlD;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EAAE,EACnB,UAAU,GAAE,MAAM,EAAO,EACzB,cAAc,GAAE,MAAM,EAAO,EAC7B,YAAY,GAAE,MAAM,EAAO,EAC3B,WAAW,GAAE,MAAM,EAAO;AAC1B;;qFAEqF;AACrF,YAAY,CAAC,EAAE;IACb,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AACD;;gDAEgD;AAChD,eAAe,CAAC,EAAE;IAChB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B,GACA,MAAM,CA4CR;AAQD,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAE/C,MAAM,MAAM,mBAAmB,GAAG,YAAY,GAAG,MAAM,GAAG,OAAO,CAAC;AAelE,4EAA4E;AAC5E,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,SAAS,mBAAmB,EAAE,GAC3C,MAAM,CAMR;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,CACtC,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACxC,oBAAoB,GAAE,SAAS,mBAAmB,EAAO,GACxD,OAAO,CAqBT"}
1
+ {"version":3,"file":"read-isolation.d.ts","sourceRoot":"","sources":["../../../src/adapters/cli/read-isolation.ts"],"names":[],"mappings":"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"}
@@ -244,6 +244,10 @@ export function buildV2DenyPaths(ctx) {
244
244
  `${sd}/frozen-cards`, // conversation content (all bots')
245
245
  `${sd}/turn-sends`, // CLI only APPENDS markers here — read-deny is safe
246
246
  `${sd}/crash-diagnostics`,
247
+ // Long Pi first prompts may contain the full hidden routing/identity
248
+ // context. Deny the shared root, then the worker carves back only this
249
+ // session's private subdirectory.
250
+ `${sd}/pi-initial-prompts`,
247
251
  // All bots' Feishu-uploaded files. Own per-appId bucket (attachments/<self>/) is
248
252
  // re-allowed via buildV2CarveOuts; siblings' buckets + the legacy flat
249
253
  // per-messageId layout stay denied.
@@ -556,6 +560,7 @@ export function buildLinuxReadIsolationMasks(input) {
556
560
  `${defaultBh}/${DEVICE_CREDENTIAL_ISOLATION_MARKER_BASENAME}`,
557
561
  `${sd}/sessions.json`, `${sd}/frozen-cards`, `${sd}/turn-sends`,
558
562
  `${sd}/crash-diagnostics`, `${sd}/queues`, `${sd}/read-isolation`,
563
+ `${sd}/pi-initial-prompts`,
559
564
  `${sd}/.botmux-cli-pids`,
560
565
  // attachments/ is masked WHOLESALE (like macOS) — covers every sibling bucket
561
566
  // AND the legacy flat per-messageId layout (which per-sibling enumeration can't