botmux 2.9.1 → 2.9.2

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 (330) hide show
  1. package/README.en.md +140 -76
  2. package/README.md +134 -75
  3. package/dist/adapters/backend/pty-backend.d.ts +6 -0
  4. package/dist/adapters/backend/pty-backend.d.ts.map +1 -1
  5. package/dist/adapters/backend/pty-backend.js +10 -0
  6. package/dist/adapters/backend/pty-backend.js.map +1 -1
  7. package/dist/adapters/backend/session-backend-selector.d.ts +11 -0
  8. package/dist/adapters/backend/session-backend-selector.d.ts.map +1 -0
  9. package/dist/adapters/backend/session-backend-selector.js +26 -0
  10. package/dist/adapters/backend/session-backend-selector.js.map +1 -0
  11. package/dist/adapters/backend/tmux-backend.d.ts +80 -3
  12. package/dist/adapters/backend/tmux-backend.d.ts.map +1 -1
  13. package/dist/adapters/backend/tmux-backend.js +301 -49
  14. package/dist/adapters/backend/tmux-backend.js.map +1 -1
  15. package/dist/adapters/backend/tmux-pipe-backend.d.ts +100 -0
  16. package/dist/adapters/backend/tmux-pipe-backend.d.ts.map +1 -0
  17. package/dist/adapters/backend/tmux-pipe-backend.js +473 -0
  18. package/dist/adapters/backend/tmux-pipe-backend.js.map +1 -0
  19. package/dist/adapters/cli/aiden.d.ts.map +1 -1
  20. package/dist/adapters/cli/aiden.js +5 -0
  21. package/dist/adapters/cli/aiden.js.map +1 -1
  22. package/dist/adapters/cli/claude-code.d.ts +40 -1
  23. package/dist/adapters/cli/claude-code.d.ts.map +1 -1
  24. package/dist/adapters/cli/claude-code.js +470 -49
  25. package/dist/adapters/cli/claude-code.js.map +1 -1
  26. package/dist/adapters/cli/coco.d.ts.map +1 -1
  27. package/dist/adapters/cli/coco.js +191 -9
  28. package/dist/adapters/cli/coco.js.map +1 -1
  29. package/dist/adapters/cli/codex.d.ts.map +1 -1
  30. package/dist/adapters/cli/codex.js +94 -17
  31. package/dist/adapters/cli/codex.js.map +1 -1
  32. package/dist/adapters/cli/shared-hints.d.ts +2 -2
  33. package/dist/adapters/cli/shared-hints.d.ts.map +1 -1
  34. package/dist/adapters/cli/shared-hints.js +7 -5
  35. package/dist/adapters/cli/shared-hints.js.map +1 -1
  36. package/dist/adapters/cli/types.d.ts +38 -1
  37. package/dist/adapters/cli/types.d.ts.map +1 -1
  38. package/dist/autostart.d.ts +14 -0
  39. package/dist/autostart.d.ts.map +1 -0
  40. package/dist/autostart.js +357 -0
  41. package/dist/autostart.js.map +1 -0
  42. package/dist/bot-registry.d.ts +29 -3
  43. package/dist/bot-registry.d.ts.map +1 -1
  44. package/dist/bot-registry.js +91 -12
  45. package/dist/bot-registry.js.map +1 -1
  46. package/dist/cli/arg-utils.d.ts +11 -0
  47. package/dist/cli/arg-utils.d.ts.map +1 -0
  48. package/dist/cli/arg-utils.js +25 -0
  49. package/dist/cli/arg-utils.js.map +1 -0
  50. package/dist/cli/create-group-resolver.d.ts +32 -0
  51. package/dist/cli/create-group-resolver.d.ts.map +1 -0
  52. package/dist/cli/create-group-resolver.js +70 -0
  53. package/dist/cli/create-group-resolver.js.map +1 -0
  54. package/dist/cli/quoted-render.d.ts +30 -0
  55. package/dist/cli/quoted-render.d.ts.map +1 -0
  56. package/dist/cli/quoted-render.js +29 -0
  57. package/dist/cli/quoted-render.js.map +1 -0
  58. package/dist/cli.js +916 -272
  59. package/dist/cli.js.map +1 -1
  60. package/dist/config.d.ts +6 -0
  61. package/dist/config.d.ts.map +1 -1
  62. package/dist/config.js +18 -8
  63. package/dist/config.js.map +1 -1
  64. package/dist/core/command-handler.d.ts +43 -0
  65. package/dist/core/command-handler.d.ts.map +1 -1
  66. package/dist/core/command-handler.js +167 -64
  67. package/dist/core/command-handler.js.map +1 -1
  68. package/dist/core/dashboard-events.d.ts +57 -0
  69. package/dist/core/dashboard-events.d.ts.map +1 -0
  70. package/dist/core/dashboard-events.js +23 -0
  71. package/dist/core/dashboard-events.js.map +1 -0
  72. package/dist/core/dashboard-ipc-server.d.ts +43 -0
  73. package/dist/core/dashboard-ipc-server.d.ts.map +1 -0
  74. package/dist/core/dashboard-ipc-server.js +481 -0
  75. package/dist/core/dashboard-ipc-server.js.map +1 -0
  76. package/dist/core/dashboard-locate.d.ts +20 -0
  77. package/dist/core/dashboard-locate.d.ts.map +1 -0
  78. package/dist/core/dashboard-locate.js +26 -0
  79. package/dist/core/dashboard-locate.js.map +1 -0
  80. package/dist/core/dashboard-rows.d.ts +31 -0
  81. package/dist/core/dashboard-rows.d.ts.map +1 -0
  82. package/dist/core/dashboard-rows.js +65 -0
  83. package/dist/core/dashboard-rows.js.map +1 -0
  84. package/dist/core/inherit-peer.d.ts +14 -0
  85. package/dist/core/inherit-peer.d.ts.map +1 -0
  86. package/dist/core/inherit-peer.js +32 -0
  87. package/dist/core/inherit-peer.js.map +1 -0
  88. package/dist/core/scheduler.d.ts +24 -0
  89. package/dist/core/scheduler.d.ts.map +1 -1
  90. package/dist/core/scheduler.js +93 -2
  91. package/dist/core/scheduler.js.map +1 -1
  92. package/dist/core/session-activity.d.ts +3 -0
  93. package/dist/core/session-activity.d.ts.map +1 -0
  94. package/dist/core/session-activity.js +20 -0
  95. package/dist/core/session-activity.js.map +1 -0
  96. package/dist/core/session-discovery.d.ts +39 -0
  97. package/dist/core/session-discovery.d.ts.map +1 -1
  98. package/dist/core/session-discovery.js +114 -21
  99. package/dist/core/session-discovery.js.map +1 -1
  100. package/dist/core/session-manager.d.ts +72 -0
  101. package/dist/core/session-manager.d.ts.map +1 -1
  102. package/dist/core/session-manager.js +396 -106
  103. package/dist/core/session-manager.js.map +1 -1
  104. package/dist/core/types.d.ts +27 -2
  105. package/dist/core/types.d.ts.map +1 -1
  106. package/dist/core/types.js +14 -3
  107. package/dist/core/types.js.map +1 -1
  108. package/dist/core/worker-pool.d.ts +72 -3
  109. package/dist/core/worker-pool.d.ts.map +1 -1
  110. package/dist/core/worker-pool.js +459 -38
  111. package/dist/core/worker-pool.js.map +1 -1
  112. package/dist/daemon.d.ts.map +1 -1
  113. package/dist/daemon.js +601 -309
  114. package/dist/daemon.js.map +1 -1
  115. package/dist/dashboard/aggregator.d.ts +41 -0
  116. package/dist/dashboard/aggregator.d.ts.map +1 -0
  117. package/dist/dashboard/aggregator.js +125 -0
  118. package/dist/dashboard/aggregator.js.map +1 -0
  119. package/dist/dashboard/auth.d.ts +23 -0
  120. package/dist/dashboard/auth.d.ts.map +1 -0
  121. package/dist/dashboard/auth.js +66 -0
  122. package/dist/dashboard/auth.js.map +1 -0
  123. package/dist/dashboard/operator-selector.d.ts +20 -0
  124. package/dist/dashboard/operator-selector.d.ts.map +1 -0
  125. package/dist/dashboard/operator-selector.js +39 -0
  126. package/dist/dashboard/operator-selector.js.map +1 -0
  127. package/dist/dashboard/registry.d.ts +35 -0
  128. package/dist/dashboard/registry.d.ts.map +1 -0
  129. package/dist/dashboard/registry.js +74 -0
  130. package/dist/dashboard/registry.js.map +1 -0
  131. package/dist/dashboard/web/app.d.ts +2 -0
  132. package/dist/dashboard/web/app.d.ts.map +1 -0
  133. package/dist/dashboard/web/app.js +45 -0
  134. package/dist/dashboard/web/app.js.map +1 -0
  135. package/dist/dashboard/web/bot-defaults.d.ts +2 -0
  136. package/dist/dashboard/web/bot-defaults.d.ts.map +1 -0
  137. package/dist/dashboard/web/bot-defaults.js +201 -0
  138. package/dist/dashboard/web/bot-defaults.js.map +1 -0
  139. package/dist/dashboard/web/groups.d.ts +16 -0
  140. package/dist/dashboard/web/groups.d.ts.map +1 -0
  141. package/dist/dashboard/web/groups.js +584 -0
  142. package/dist/dashboard/web/groups.js.map +1 -0
  143. package/dist/dashboard/web/schedules.d.ts +2 -0
  144. package/dist/dashboard/web/schedules.d.ts.map +1 -0
  145. package/dist/dashboard/web/schedules.js +105 -0
  146. package/dist/dashboard/web/schedules.js.map +1 -0
  147. package/dist/dashboard/web/sessions.d.ts +2 -0
  148. package/dist/dashboard/web/sessions.d.ts.map +1 -0
  149. package/dist/dashboard/web/sessions.js +374 -0
  150. package/dist/dashboard/web/sessions.js.map +1 -0
  151. package/dist/dashboard/web/store.d.ts +23 -0
  152. package/dist/dashboard/web/store.d.ts.map +1 -0
  153. package/dist/dashboard/web/store.js +82 -0
  154. package/dist/dashboard/web/store.js.map +1 -0
  155. package/dist/dashboard-web/app.js +263 -0
  156. package/dist/dashboard-web/index.html +23 -0
  157. package/dist/dashboard-web/style.css +93 -0
  158. package/dist/dashboard.d.ts +2 -0
  159. package/dist/dashboard.d.ts.map +1 -0
  160. package/dist/dashboard.js +639 -0
  161. package/dist/dashboard.js.map +1 -0
  162. package/dist/im/lark/card-builder.d.ts +18 -1
  163. package/dist/im/lark/card-builder.d.ts.map +1 -1
  164. package/dist/im/lark/card-builder.js +70 -9
  165. package/dist/im/lark/card-builder.js.map +1 -1
  166. package/dist/im/lark/card-handler.d.ts.map +1 -1
  167. package/dist/im/lark/card-handler.js +123 -109
  168. package/dist/im/lark/card-handler.js.map +1 -1
  169. package/dist/im/lark/client.d.ts +35 -0
  170. package/dist/im/lark/client.d.ts.map +1 -1
  171. package/dist/im/lark/client.js +114 -11
  172. package/dist/im/lark/client.js.map +1 -1
  173. package/dist/im/lark/event-dispatcher.d.ts +88 -6
  174. package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
  175. package/dist/im/lark/event-dispatcher.js +398 -62
  176. package/dist/im/lark/event-dispatcher.js.map +1 -1
  177. package/dist/im/lark/forwarded-renderer.d.ts +23 -0
  178. package/dist/im/lark/forwarded-renderer.d.ts.map +1 -0
  179. package/dist/im/lark/forwarded-renderer.js +105 -0
  180. package/dist/im/lark/forwarded-renderer.js.map +1 -0
  181. package/dist/im/lark/md-card.d.ts +73 -0
  182. package/dist/im/lark/md-card.d.ts.map +1 -0
  183. package/dist/im/lark/md-card.js +332 -0
  184. package/dist/im/lark/md-card.js.map +1 -0
  185. package/dist/im/lark/merge-forward.d.ts +32 -0
  186. package/dist/im/lark/merge-forward.d.ts.map +1 -0
  187. package/dist/im/lark/merge-forward.js +110 -0
  188. package/dist/im/lark/merge-forward.js.map +1 -0
  189. package/dist/im/lark/message-parser.d.ts +9 -3
  190. package/dist/im/lark/message-parser.d.ts.map +1 -1
  191. package/dist/im/lark/message-parser.js +48 -13
  192. package/dist/im/lark/message-parser.js.map +1 -1
  193. package/dist/im/lark/quote-hint.d.ts +18 -0
  194. package/dist/im/lark/quote-hint.d.ts.map +1 -0
  195. package/dist/im/lark/quote-hint.js +23 -0
  196. package/dist/im/lark/quote-hint.js.map +1 -0
  197. package/dist/services/bridge-fallback-gate.d.ts +42 -0
  198. package/dist/services/bridge-fallback-gate.d.ts.map +1 -0
  199. package/dist/services/bridge-fallback-gate.js +12 -0
  200. package/dist/services/bridge-fallback-gate.js.map +1 -0
  201. package/dist/services/bridge-rotation-policy.d.ts +139 -0
  202. package/dist/services/bridge-rotation-policy.d.ts.map +1 -0
  203. package/dist/services/bridge-rotation-policy.js +125 -0
  204. package/dist/services/bridge-rotation-policy.js.map +1 -0
  205. package/dist/services/bridge-turn-queue.d.ts +154 -0
  206. package/dist/services/bridge-turn-queue.d.ts.map +1 -0
  207. package/dist/services/bridge-turn-queue.js +316 -0
  208. package/dist/services/bridge-turn-queue.js.map +1 -0
  209. package/dist/services/chat-first-seen-store.d.ts +27 -0
  210. package/dist/services/chat-first-seen-store.d.ts.map +1 -0
  211. package/dist/services/chat-first-seen-store.js +114 -0
  212. package/dist/services/chat-first-seen-store.js.map +1 -0
  213. package/dist/services/claude-transcript.d.ts +268 -0
  214. package/dist/services/claude-transcript.d.ts.map +1 -0
  215. package/dist/services/claude-transcript.js +798 -0
  216. package/dist/services/claude-transcript.js.map +1 -0
  217. package/dist/services/coco-transcript.d.ts +35 -0
  218. package/dist/services/coco-transcript.d.ts.map +1 -0
  219. package/dist/services/coco-transcript.js +192 -0
  220. package/dist/services/coco-transcript.js.map +1 -0
  221. package/dist/services/codex-bridge-queue.d.ts +56 -0
  222. package/dist/services/codex-bridge-queue.d.ts.map +1 -0
  223. package/dist/services/codex-bridge-queue.js +150 -0
  224. package/dist/services/codex-bridge-queue.js.map +1 -0
  225. package/dist/services/codex-transcript.d.ts +84 -0
  226. package/dist/services/codex-transcript.d.ts.map +1 -0
  227. package/dist/services/codex-transcript.js +298 -0
  228. package/dist/services/codex-transcript.js.map +1 -0
  229. package/dist/services/group-creator.d.ts +23 -0
  230. package/dist/services/group-creator.d.ts.map +1 -0
  231. package/dist/services/group-creator.js +75 -0
  232. package/dist/services/group-creator.js.map +1 -0
  233. package/dist/services/groups-store.d.ts +98 -0
  234. package/dist/services/groups-store.d.ts.map +1 -0
  235. package/dist/services/groups-store.js +213 -0
  236. package/dist/services/groups-store.js.map +1 -0
  237. package/dist/services/oncall-store.d.ts +80 -8
  238. package/dist/services/oncall-store.d.ts.map +1 -1
  239. package/dist/services/oncall-store.js +265 -55
  240. package/dist/services/oncall-store.js.map +1 -1
  241. package/dist/services/project-scanner.d.ts +1 -2
  242. package/dist/services/project-scanner.d.ts.map +1 -1
  243. package/dist/services/project-scanner.js +118 -68
  244. package/dist/services/project-scanner.js.map +1 -1
  245. package/dist/services/schedule-store.d.ts +5 -0
  246. package/dist/services/schedule-store.d.ts.map +1 -1
  247. package/dist/services/schedule-store.js +77 -1
  248. package/dist/services/schedule-store.js.map +1 -1
  249. package/dist/services/session-store.d.ts +22 -0
  250. package/dist/services/session-store.d.ts.map +1 -1
  251. package/dist/services/session-store.js +62 -4
  252. package/dist/services/session-store.js.map +1 -1
  253. package/dist/setup/bots-store.d.ts +3 -0
  254. package/dist/setup/bots-store.d.ts.map +1 -0
  255. package/dist/setup/bots-store.js +24 -0
  256. package/dist/setup/bots-store.js.map +1 -0
  257. package/dist/setup/detect-platform.d.ts +14 -0
  258. package/dist/setup/detect-platform.d.ts.map +1 -0
  259. package/dist/setup/detect-platform.js +139 -0
  260. package/dist/setup/detect-platform.js.map +1 -0
  261. package/dist/setup/ensure-fonts.d.ts +13 -0
  262. package/dist/setup/ensure-fonts.d.ts.map +1 -0
  263. package/dist/setup/ensure-fonts.js +225 -0
  264. package/dist/setup/ensure-fonts.js.map +1 -0
  265. package/dist/setup/ensure-tmux.d.ts +60 -0
  266. package/dist/setup/ensure-tmux.d.ts.map +1 -0
  267. package/dist/setup/ensure-tmux.js +236 -0
  268. package/dist/setup/ensure-tmux.js.map +1 -0
  269. package/dist/setup/index.d.ts +9 -0
  270. package/dist/setup/index.d.ts.map +1 -0
  271. package/dist/setup/index.js +46 -0
  272. package/dist/setup/index.js.map +1 -0
  273. package/dist/setup/lark-scopes.json +301 -0
  274. package/dist/setup/register-app.d.ts +52 -0
  275. package/dist/setup/register-app.d.ts.map +1 -0
  276. package/dist/setup/register-app.js +91 -0
  277. package/dist/setup/register-app.js.map +1 -0
  278. package/dist/setup/verify-permissions.d.ts +115 -0
  279. package/dist/setup/verify-permissions.d.ts.map +1 -0
  280. package/dist/setup/verify-permissions.js +207 -0
  281. package/dist/setup/verify-permissions.js.map +1 -0
  282. package/dist/skills/definitions.d.ts +4 -0
  283. package/dist/skills/definitions.d.ts.map +1 -1
  284. package/dist/skills/definitions.js +133 -19
  285. package/dist/skills/definitions.js.map +1 -1
  286. package/dist/skills/installer.d.ts +3 -1
  287. package/dist/skills/installer.d.ts.map +1 -1
  288. package/dist/skills/installer.js +18 -3
  289. package/dist/skills/installer.js.map +1 -1
  290. package/dist/types.d.ts +44 -0
  291. package/dist/types.d.ts.map +1 -1
  292. package/dist/utils/bot-routing.d.ts +6 -0
  293. package/dist/utils/bot-routing.d.ts.map +1 -0
  294. package/dist/utils/bot-routing.js +50 -0
  295. package/dist/utils/bot-routing.js.map +1 -0
  296. package/dist/utils/file-lock.d.ts +2 -0
  297. package/dist/utils/file-lock.d.ts.map +1 -0
  298. package/dist/utils/file-lock.js +114 -0
  299. package/dist/utils/file-lock.js.map +1 -0
  300. package/dist/utils/font-installer.js +1 -1
  301. package/dist/utils/font-installer.js.map +1 -1
  302. package/dist/utils/idle-detector.d.ts +6 -0
  303. package/dist/utils/idle-detector.d.ts.map +1 -1
  304. package/dist/utils/idle-detector.js +25 -4
  305. package/dist/utils/idle-detector.js.map +1 -1
  306. package/dist/utils/logger.d.ts +10 -0
  307. package/dist/utils/logger.d.ts.map +1 -1
  308. package/dist/utils/logger.js +60 -8
  309. package/dist/utils/logger.js.map +1 -1
  310. package/dist/utils/render-dimensions.d.ts +48 -0
  311. package/dist/utils/render-dimensions.d.ts.map +1 -0
  312. package/dist/utils/render-dimensions.js +55 -0
  313. package/dist/utils/render-dimensions.js.map +1 -0
  314. package/dist/utils/screen-analyzer.d.ts.map +1 -1
  315. package/dist/utils/screen-analyzer.js +24 -0
  316. package/dist/utils/screen-analyzer.js.map +1 -1
  317. package/dist/utils/screenshot-renderer.d.ts.map +1 -1
  318. package/dist/utils/screenshot-renderer.js +67 -23
  319. package/dist/utils/screenshot-renderer.js.map +1 -1
  320. package/dist/utils/terminal-renderer.d.ts +16 -0
  321. package/dist/utils/terminal-renderer.d.ts.map +1 -1
  322. package/dist/utils/terminal-renderer.js +40 -23
  323. package/dist/utils/terminal-renderer.js.map +1 -1
  324. package/dist/utils/transient-snapshot.d.ts +28 -0
  325. package/dist/utils/transient-snapshot.d.ts.map +1 -0
  326. package/dist/utils/transient-snapshot.js +96 -0
  327. package/dist/utils/transient-snapshot.js.map +1 -0
  328. package/dist/worker.js +2220 -83
  329. package/dist/worker.js.map +1 -1
  330. package/package.json +12 -5
@@ -1 +1 @@
1
- {"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../../src/adapters/cli/claude-code.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../../src/adapters/cli/claude-code.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"coco.d.ts","sourceRoot":"","sources":["../../../src/adapters/cli/coco.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,YAAY,CAAC;AAMxD,wBAAgB,iBAAiB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,UAAU,CAmCnE;AAED,eAAO,MAAM,MAAM,0BAAoB,CAAC"}
1
+ {"version":3,"file":"coco.d.ts","sourceRoot":"","sources":["../../../src/adapters/cli/coco.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,YAAY,CAAC;AAyExD,wBAAgB,iBAAiB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,UAAU,CAyInE;AAED,eAAO,MAAM,MAAM,0BAAoB,CAAC"}
@@ -1,8 +1,88 @@
1
+ import { existsSync, statSync, openSync, readSync, closeSync } from 'node:fs';
2
+ import { homedir } from 'node:os';
3
+ import { join } from 'node:path';
1
4
  import { resolveCommand } from './registry.js';
2
5
  import { BOTMUX_SHELL_HINTS } from './shared-hints.js';
6
+ /** Global submit log — CoCo appends one JSON line here on every successful
7
+ * user submit across all sessions (mode:"user"). Format observed:
8
+ * `{"content":"...","mode":"user","timestamp":"..."}`. Used the same way
9
+ * the Codex adapter uses ~/.codex/history.jsonl: write → poll for our
10
+ * marker → retry Enter if missing → return {submitted:false, recheck}
11
+ * on final failure so worker can surface a Lark warning. */
12
+ const HISTORY_PATH = join(homedir(), '.cache', 'coco', 'history.jsonl');
3
13
  function delay(ms) {
4
14
  return new Promise(resolve => setTimeout(resolve, ms));
5
15
  }
16
+ function currentFileSize(path) {
17
+ if (!existsSync(path))
18
+ return 0;
19
+ try {
20
+ return statSync(path).size;
21
+ }
22
+ catch {
23
+ return 0;
24
+ }
25
+ }
26
+ /** Scan `path` for a JSON line newer than `fromByte` that's a user-submit
27
+ * whose decoded `content` starts with `prefix`. Parses each candidate line
28
+ * with JSON.parse — substring match on the raw bytes is unreliable here
29
+ * because CoCo's Go marshaller HTML-escapes `<`, `>`, `&` into `<`,
30
+ * `>`, `&`, which our string-form prefix won't match. Decoding
31
+ * the field and comparing JS strings sidesteps all of that. */
32
+ function historyDeltaContains(path, fromByte, prefix) {
33
+ if (!existsSync(path))
34
+ return false;
35
+ let size;
36
+ try {
37
+ size = statSync(path).size;
38
+ }
39
+ catch {
40
+ return false;
41
+ }
42
+ if (size <= fromByte)
43
+ return false;
44
+ const len = size - fromByte;
45
+ const buf = Buffer.alloc(len);
46
+ const fd = openSync(path, 'r');
47
+ try {
48
+ readSync(fd, buf, 0, len, fromByte);
49
+ }
50
+ finally {
51
+ closeSync(fd);
52
+ }
53
+ const delta = buf.toString('utf8');
54
+ for (const line of delta.split('\n')) {
55
+ if (!line || !line.includes('"mode":"user"'))
56
+ continue;
57
+ try {
58
+ const parsed = JSON.parse(line);
59
+ if (typeof parsed.content === 'string' && parsed.content.startsWith(prefix)) {
60
+ return true;
61
+ }
62
+ }
63
+ catch {
64
+ // Truncated tail / non-JSON line — keep scanning the rest.
65
+ }
66
+ }
67
+ return false;
68
+ }
69
+ async function waitForHistoryAppend(path, fromByte, prefix, timeoutMs) {
70
+ const deadline = Date.now() + timeoutMs;
71
+ while (Date.now() < deadline) {
72
+ if (historyDeltaContains(path, fromByte, prefix))
73
+ return true;
74
+ await delay(100);
75
+ }
76
+ return false;
77
+ }
78
+ /** First 40 chars of the original content — used as a prefix match against
79
+ * the JSON-decoded `content` field of each user-mode line in history.jsonl.
80
+ * Compare against decoded strings, NOT against raw file bytes: CoCo's Go
81
+ * marshaller HTML-escapes `<`, `>`, `&` so a JSON-encoded marker wouldn't
82
+ * match the stored bytes. 40 chars is unique enough across concurrent bots. */
83
+ function submitPrefix(content) {
84
+ return content.slice(0, 40);
85
+ }
6
86
  export function createCocoAdapter(pathOverride) {
7
87
  const bin = resolveCommand(pathOverride ?? 'coco');
8
88
  return {
@@ -20,20 +100,122 @@ export function createCocoAdapter(pathOverride) {
20
100
  args.push('--disallowed-tool', 'EnterPlanMode', '--disallowed-tool', 'ExitPlanMode');
21
101
  return args;
22
102
  },
103
+ buildResumeCommand({ sessionId }) {
104
+ return `coco --resume ${sessionId}`;
105
+ },
23
106
  async writeInput(pty, content) {
24
- if (pty.sendText && pty.sendSpecialKeys) {
25
- pty.sendText(content);
26
- await delay(200);
27
- pty.sendSpecialKeys('Enter');
107
+ // CoCo / Trae CLI is a Claude Code fork (Ink TUI) with two failure modes
108
+ // for multi-line input:
109
+ // 1. tmux `send-keys -l` treats each \n as Enter — multi-line content
110
+ // either submits line-by-line or paste-burst-coalesces with the
111
+ // trailing Enter consumed as part of the paste (text stays stuck
112
+ // in the input box, never submitted).
113
+ // 2. The old adapter had no verification, so the worker never knew
114
+ // and the user stared at Lark waiting for a reply that never came.
115
+ //
116
+ // Fix: use tmux `load-buffer` + `paste-buffer -d` (the `pasteText` path)
117
+ // which automatically wraps the content in bracketed-paste markers
118
+ // (`\e[200~...\e[201~`) when the Ink TUI has bracketed paste enabled —
119
+ // Ink does by default on fresh spawn. CoCo sees an explicit START/END
120
+ // pair, so embedded `\n` stay as content (no per-line submits) and the
121
+ // trailing Enter after submitDelay is unambiguously a submit (not part
122
+ // of an "ongoing paste burst" the way send-keys -l rapid input was).
123
+ //
124
+ // Why not send-keys -l + `\` + Enter soft-newlines (the claude-code
125
+ // pattern): on Trae CLI 0.120.31 (May 2026 build), fresh-spawned CoCo
126
+ // treats the rapid send-keys sequence as an open-ended paste burst and
127
+ // swallows the final Enter as a soft-newline — message stranded in the
128
+ // input box with no submit, no error. Manually pressing Enter 30 min
129
+ // later still works (burst window times out eventually), so the issue
130
+ // is "burst never terminates from CoCo's POV", which an explicit
131
+ // bracketed-paste END marker fixes. claude-code.ts keeps its
132
+ // send-keys-typing path because Claude Code can toggle bracketed paste
133
+ // OFF after slash commands; CoCo on a fresh-spawn message doesn't have
134
+ // that concern.
135
+ //
136
+ // Verification (unchanged): poll ~/.cache/coco/history.jsonl for the
137
+ // user-submit line whose decoded `content` starts with our prefix.
138
+ // Retry Enter up to 3 times, then return {submitted:false, recheck}
139
+ // for the worker's deferred recheck + Lark warning path.
140
+ const hasImagePath = /\.(jpe?g|png|gif|webp|svg|bmp)\b/i.test(content);
141
+ const submitDelay = hasImagePath ? 800 : 500;
142
+ const trySendEnter = () => {
143
+ try {
144
+ if (pty.sendSpecialKeys)
145
+ pty.sendSpecialKeys('Enter');
146
+ else
147
+ pty.write('\r');
148
+ return true;
149
+ }
150
+ catch {
151
+ // tmux session is gone (CLI exited mid-write) — bail cleanly
152
+ // rather than crashing the worker on unhandled execFileSync.
153
+ return false;
154
+ }
155
+ };
156
+ const baseByte = currentFileSize(HISTORY_PATH);
157
+ const prefix = submitPrefix(content);
158
+ try {
159
+ if (pty.pasteText) {
160
+ // tmux mode: load-buffer + paste-buffer -d. Tmux wraps in bracketed
161
+ // paste automatically when the pane has it on (Ink default). The
162
+ // trailing `-d` deletes the buffer after pasting so it doesn't
163
+ // accumulate across writes.
164
+ pty.pasteText(content);
165
+ }
166
+ else {
167
+ // Non-tmux fallback (raw PTY): wrap markers ourselves.
168
+ pty.write('\x1b[200~' + content + '\x1b[201~');
169
+ }
28
170
  }
29
- else {
30
- pty.write(content);
31
- await delay(1000);
32
- pty.write('\r');
171
+ catch {
172
+ return { submitted: false };
173
+ }
174
+ await delay(submitDelay);
175
+ if (!trySendEnter())
176
+ return { submitted: false };
177
+ // Fresh-install short-wait: when history.jsonl is absent at submit
178
+ // time, give CoCo up to 1.2s to create it. If our marker shows up →
179
+ // success. If the file is still absent → trust the Enter and return
180
+ // (this is the genuine "first run / coco doesn't write history"
181
+ // case). If the file appeared but our marker isn't there → fall
182
+ // through to the normal retry/failure loop — better to warn than to
183
+ // silently mask a real submit failure on a new install.
184
+ if (!existsSync(HISTORY_PATH) && baseByte === 0) {
185
+ if (await waitForHistoryAppend(HISTORY_PATH, baseByte, prefix, 1200)) {
186
+ return undefined;
187
+ }
188
+ if (!existsSync(HISTORY_PATH)) {
189
+ return undefined;
190
+ }
191
+ // File appeared during the wait but our marker isn't in it — fall
192
+ // through to the retry loop. baseByte stays 0 so the loop scans
193
+ // the whole file.
194
+ }
195
+ for (let attempt = 0; attempt < 3; attempt++) {
196
+ if (await waitForHistoryAppend(HISTORY_PATH, baseByte, prefix, 800)) {
197
+ return undefined;
198
+ }
199
+ if (!trySendEnter())
200
+ return { submitted: false };
201
+ }
202
+ if (await waitForHistoryAppend(HISTORY_PATH, baseByte, prefix, 800)) {
203
+ return undefined;
33
204
  }
205
+ // In-band budget exhausted. Hand the worker a recheck closure: a slow
206
+ // CoCo (cold start, large initial prompt, heavy hooks) may still
207
+ // append our marker after retries gave up. Worker re-scans after a
208
+ // delay before deciding whether to warn the user.
209
+ const recheck = () => historyDeltaContains(HISTORY_PATH, baseByte, prefix);
210
+ return { submitted: false, recheck };
34
211
  },
35
212
  completionPattern: undefined,
36
- readyPattern: /⏵⏵/, // status bar indicator present when CoCo's TUI is rendered
213
+ // `⏵⏵` only shows when CoCo runs with --yolo (bypass permissions). Adopted
214
+ // CoCo processes started by the user manually usually don't have that flag,
215
+ // so the status bar shows just the model badge `⬡ <model>` instead. Match
216
+ // either — without this, idle detection never fires for adopt mode and the
217
+ // transcript bridge never drains.
218
+ readyPattern: /⏵⏵|⬡/,
37
219
  systemHints: BOTMUX_SHELL_HINTS,
38
220
  altScreen: false,
39
221
  };
@@ -1 +1 @@
1
- {"version":3,"file":"coco.js","sourceRoot":"","sources":["../../../src/adapters/cli/coco.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAGvD,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,YAAqB;IACrD,MAAM,GAAG,GAAG,cAAc,CAAC,YAAY,IAAI,MAAM,CAAC,CAAC;IACnD,OAAO;QACL,EAAE,EAAE,MAAM;QACV,WAAW,EAAE,GAAG;QAEhB,SAAS,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE;YAC7B,MAAM,IAAI,GAAa,EAAE,CAAC;YAC1B,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YACnC,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;YACvC,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,eAAe,EAAE,mBAAmB,EAAE,cAAc,CAAC,CAAC;YACrF,OAAO,IAAI,CAAC;QACd,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,GAAc,EAAE,OAAe;YAC9C,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;gBACxC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACtB,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;gBACjB,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACnB,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;gBAClB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED,iBAAiB,EAAE,SAAS;QAC5B,YAAY,EAAE,IAAI,EAAI,6DAA6D;QACnF,WAAW,EAAE,kBAAkB;QAC/B,SAAS,EAAE,KAAK;KACjB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,iBAAiB,CAAC"}
1
+ {"version":3,"file":"coco.js","sourceRoot":"","sources":["../../../src/adapters/cli/coco.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../../src/adapters/cli/codex.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,YAAY,CAAC;AAqDxD,wBAAgB,kBAAkB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,UAAU,CAkEpE;AAED,eAAO,MAAM,MAAM,2BAAqB,CAAC"}
1
+ {"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../../src/adapters/cli/codex.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,YAAY,CAAC;AAqGxD,wBAAgB,kBAAkB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,UAAU,CA8FpE;AAED,eAAO,MAAM,MAAM,2BAAqB,CAAC"}
@@ -21,18 +21,18 @@ function currentFileSize(path) {
21
21
  return 0;
22
22
  }
23
23
  }
24
- function deltaContains(path, fromByte, marker) {
24
+ function matchHistoryDelta(path, fromByte, marker) {
25
25
  if (!existsSync(path))
26
- return false;
26
+ return { found: false };
27
27
  let size;
28
28
  try {
29
29
  size = statSync(path).size;
30
30
  }
31
31
  catch {
32
- return false;
32
+ return { found: false };
33
33
  }
34
34
  if (size <= fromByte)
35
- return false;
35
+ return { found: false };
36
36
  const len = size - fromByte;
37
37
  const buf = Buffer.alloc(len);
38
38
  const fd = openSync(path, 'r');
@@ -42,16 +42,32 @@ function deltaContains(path, fromByte, marker) {
42
42
  finally {
43
43
  closeSync(fd);
44
44
  }
45
- return buf.toString('utf8').includes(marker);
45
+ const delta = buf.toString('utf8');
46
+ for (const line of delta.split('\n')) {
47
+ if (!line.includes(marker))
48
+ continue;
49
+ try {
50
+ const parsed = JSON.parse(line);
51
+ return {
52
+ found: true,
53
+ cliSessionId: typeof parsed.session_id === 'string' ? parsed.session_id : undefined,
54
+ };
55
+ }
56
+ catch {
57
+ return { found: true };
58
+ }
59
+ }
60
+ return { found: false };
46
61
  }
47
62
  async function waitForHistoryAppend(path, fromByte, marker, timeoutMs) {
48
63
  const deadline = Date.now() + timeoutMs;
49
64
  while (Date.now() < deadline) {
50
- if (deltaContains(path, fromByte, marker))
51
- return true;
65
+ const match = matchHistoryDelta(path, fromByte, marker);
66
+ if (match.found)
67
+ return match;
52
68
  await delay(100);
53
69
  }
54
- return false;
70
+ return { found: false };
55
71
  }
56
72
  /** Build a JSON-escaped prefix of the content so substring-match against the
57
73
  * raw history.jsonl file content (where text fields store \n as the two-char
@@ -61,18 +77,66 @@ function historyMarker(content) {
61
77
  const prefix = content.slice(0, 40);
62
78
  return JSON.stringify(prefix).slice(1, -1); // strip surrounding quotes
63
79
  }
80
+ function latestCodexSessionForBotmuxSession(botmuxSessionId) {
81
+ if (!existsSync(HISTORY_PATH))
82
+ return undefined;
83
+ try {
84
+ const size = statSync(HISTORY_PATH).size;
85
+ const fd = openSync(HISTORY_PATH, 'r');
86
+ const buf = Buffer.alloc(size);
87
+ try {
88
+ readSync(fd, buf, 0, size, 0);
89
+ }
90
+ finally {
91
+ closeSync(fd);
92
+ }
93
+ const marker = JSON.stringify(botmuxSessionId).slice(1, -1);
94
+ const lines = buf.toString('utf8').trimEnd().split('\n');
95
+ for (let i = lines.length - 1; i >= 0; i--) {
96
+ const line = lines[i];
97
+ if (!line.includes(marker))
98
+ continue;
99
+ try {
100
+ const parsed = JSON.parse(line);
101
+ if (typeof parsed.session_id === 'string')
102
+ return parsed.session_id;
103
+ }
104
+ catch {
105
+ continue;
106
+ }
107
+ }
108
+ }
109
+ catch {
110
+ return undefined;
111
+ }
112
+ return undefined;
113
+ }
64
114
  export function createCodexAdapter(pathOverride) {
65
115
  const bin = resolveCommand(pathOverride ?? 'codex');
66
116
  return {
67
117
  id: 'codex',
68
118
  resolvedBin: bin,
69
- buildArgs() {
70
- // Codex manages its own session IDs internally — we cannot pass ours.
71
- // Resume is not supported; daemon always starts a fresh Codex session.
72
- return [
119
+ buildArgs({ sessionId, resume, resumeSessionId }) {
120
+ const baseArgs = [
73
121
  '--dangerously-bypass-approvals-and-sandbox',
74
122
  '--no-alt-screen',
75
123
  ];
124
+ if (!resume)
125
+ return baseArgs;
126
+ const codexSessionId = resumeSessionId ?? latestCodexSessionForBotmuxSession(sessionId);
127
+ if (!codexSessionId)
128
+ return baseArgs;
129
+ return ['resume', ...baseArgs, codexSessionId];
130
+ },
131
+ buildResumeCommand({ sessionId, cliSessionId }) {
132
+ // Codex's `resume` is a subcommand (not a flag) and takes Codex's own
133
+ // UUID, not the botmux sessionId. Prefer the persisted cliSessionId;
134
+ // fall back to scanning ~/.codex/history.jsonl for the most recent
135
+ // codex session id that referenced this botmux session.
136
+ const sid = cliSessionId ?? latestCodexSessionForBotmuxSession(sessionId);
137
+ if (!sid)
138
+ return null;
139
+ return `codex resume ${sid}`;
76
140
  },
77
141
  async writeInput(pty, content) {
78
142
  // Codex's TUI in --no-alt-screen mode does NOT handle bracketed paste:
@@ -117,14 +181,27 @@ export function createCodexAdapter(pathOverride) {
117
181
  if (!trySendEnter())
118
182
  return { submitted: false };
119
183
  for (let attempt = 0; attempt < 3; attempt++) {
120
- if (await waitForHistoryAppend(HISTORY_PATH, baseByte, marker, 800))
121
- return;
184
+ const match = await waitForHistoryAppend(HISTORY_PATH, baseByte, marker, 800);
185
+ if (match.found) {
186
+ return match.cliSessionId
187
+ ? { submitted: true, cliSessionId: match.cliSessionId }
188
+ : undefined;
189
+ }
122
190
  if (!trySendEnter())
123
191
  return { submitted: false };
124
192
  }
125
- if (await waitForHistoryAppend(HISTORY_PATH, baseByte, marker, 800))
126
- return;
127
- return { submitted: false };
193
+ const match = await waitForHistoryAppend(HISTORY_PATH, baseByte, marker, 800);
194
+ if (match.found) {
195
+ return match.cliSessionId
196
+ ? { submitted: true, cliSessionId: match.cliSessionId }
197
+ : undefined;
198
+ }
199
+ // In-band budget exhausted. Hand the worker a recheck closure: a
200
+ // slow-startup Codex (or one whose first turn is delayed by a heavy
201
+ // initial prompt) may still append our marker after the retries gave
202
+ // up, and the worker re-scans on a delay before warning the user.
203
+ const recheck = () => matchHistoryDelta(HISTORY_PATH, baseByte, marker).found;
204
+ return { submitted: false, recheck };
128
205
  },
129
206
  completionPattern: undefined,
130
207
  readyPattern: /›|\d+% left/, // › for input box, or status bar pattern (e.g. "97% left")
@@ -1 +1 @@
1
- {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../src/adapters/cli/codex.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../src/adapters/cli/codex.ts"],"names":[],"mappings":"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"}
@@ -5,8 +5,8 @@
5
5
  * `claude-code.ts`; this constant is only consumed by CLIs that don't expose
6
6
  * a system-prompt flag (coco / codex / gemini / opencode / aiden).
7
7
  *
8
- * Each array element becomes one bullet line when rendered by
9
- * `buildNewTopicPrompt` in `session-manager.ts`.
8
+ * Each array element becomes one line inside the `<botmux_routing>` XML block
9
+ * rendered by `buildNewTopicPrompt` in `session-manager.ts`.
10
10
  *
11
11
  * The phrasing emphasises that `botmux send` is a shell command (not an MCP
12
12
  * tool) to stop models — particularly CoCo — from searching the tool list,
@@ -1 +1 @@
1
- {"version":3,"file":"shared-hints.d.ts","sourceRoot":"","sources":["../../../src/adapters/cli/shared-hints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,EAMtC,CAAC"}
1
+ {"version":3,"file":"shared-hints.d.ts","sourceRoot":"","sources":["../../../src/adapters/cli/shared-hints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,EAQtC,CAAC"}
@@ -5,8 +5,8 @@
5
5
  * `claude-code.ts`; this constant is only consumed by CLIs that don't expose
6
6
  * a system-prompt flag (coco / codex / gemini / opencode / aiden).
7
7
  *
8
- * Each array element becomes one bullet line when rendered by
9
- * `buildNewTopicPrompt` in `session-manager.ts`.
8
+ * Each array element becomes one line inside the `<botmux_routing>` XML block
9
+ * rendered by `buildNewTopicPrompt` in `session-manager.ts`.
10
10
  *
11
11
  * The phrasing emphasises that `botmux send` is a shell command (not an MCP
12
12
  * tool) to stop models — particularly CoCo — from searching the tool list,
@@ -14,9 +14,11 @@
14
14
  */
15
15
  export const BOTMUX_SHELL_HINTS = [
16
16
  '你运行在飞书(Lark)话题群中。用户在飞书阅读回复,看不到你的终端输出。',
17
- '重要:botmux send / botmux thread / botmux bots 都是 shell 命令(CLI 程序,已安装在 $PATH),不是 MCP 工具。必须通过 Bash 工具执行,不要到 MCP 工具列表里找。',
18
- '把消息发给用户(唯一方式):用 Bash 执行 `botmux send "消息内容"`;附带图片用 `--images /path`,附带文件用 `--files /path`;多行用 heredoc。',
19
- '辅助命令:`botmux thread messages`(读此话题上下文)、`botmux bots list`(查群内其他机器人)。',
17
+ '重要:botmux send / botmux history / botmux quoted / botmux bots 都是 shell 命令(CLI 程序,已安装在 $PATH),不是 MCP 工具。必须通过 Bash 工具执行,不要到 MCP 工具列表里找。',
18
+ '把消息发给用户(唯一方式):用 Bash 执行 `botmux send "消息内容"`;附带图片用 `--images /path`,附带文件用 `--files /path`。',
19
+ '多行消息必须用 heredoc,禁止写成 `botmux send "第一行\\n第二行"`;否则 `\\n` 可能按字面量显示在飞书里。',
20
+ "正确多行示例:\n```bash\nbotmux send <<'EOF'\n第一行\n第二行\nEOF\n```",
21
+ '辅助命令:`botmux history`(读此会话历史,话题群拉话题内、普通群拉整群)、`botmux quoted <message_id>`(按需读取被引用的消息,仅在 prompt 头部出现 `[用户引用了消息 ...]` 提示时使用)、`botmux bots list`(查群内其他机器人)。',
20
22
  '发送时机:关键结论、方案(等用户确认再动手)、最终结果、进度更新。只 print/echo 不算回复。',
21
23
  ];
22
24
  //# sourceMappingURL=shared-hints.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shared-hints.js","sourceRoot":"","sources":["../../../src/adapters/cli/shared-hints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAa;IAC1C,uCAAuC;IACvC,sHAAsH;IACtH,wGAAwG;IACxG,sEAAsE;IACtE,qDAAqD;CACtD,CAAC"}
1
+ {"version":3,"file":"shared-hints.js","sourceRoot":"","sources":["../../../src/adapters/cli/shared-hints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAa;IAC1C,uCAAuC;IACvC,uIAAuI;IACvI,4FAA4F;IAC5F,uEAAuE;IACvE,2DAA2D;IAC3D,0JAA0J;IAC1J,qDAAqD;CACtD,CAAC"}
@@ -10,6 +10,13 @@ export interface PtyHandle {
10
10
  * Used by writeInput to verify a paste+Enter actually committed (new user-content
11
11
  * line appended) and retry Enter if not — rather than trusting fixed sleep timing. */
12
12
  claudeJsonlPath?: string;
13
+ /** PID of the spawned CLI child process; set by worker so the claude-code adapter
14
+ * can read `~/.claude/sessions/<pid>.json` to follow Claude's authoritative
15
+ * current session id (which can rotate on resume / mid-session). */
16
+ cliPid?: number;
17
+ /** Working directory the CLI was spawned in; cross-checked against the pid file's
18
+ * cwd field to reject pid reuse / unrelated processes. */
19
+ cliCwd?: string;
13
20
  }
14
21
  export interface CliAdapter {
15
22
  /** Unique identifier */
@@ -24,6 +31,8 @@ export interface CliAdapter {
24
31
  buildArgs(opts: {
25
32
  sessionId: string;
26
33
  resume: boolean;
34
+ /** CLI-native session id used for resume when it differs from botmux's session id. */
35
+ resumeSessionId?: string;
27
36
  initialPrompt?: string;
28
37
  botName?: string;
29
38
  botOpenId?: string;
@@ -31,15 +40,43 @@ export interface CliAdapter {
31
40
  /** When true, the adapter passes the initial prompt via CLI args (e.g. -i).
32
41
  * The worker skips queuing the prompt for stdin write. */
33
42
  readonly passesInitialPromptViaArgs?: boolean;
43
+ /** Build a shell command string the user can paste into a terminal to
44
+ * resume this CLI session locally — independent of botmux. Used by the
45
+ * "session closed" card so users have an obvious way to keep the
46
+ * conversation outside the bot.
47
+ *
48
+ * Returns `null` when the CLI doesn't support precise per-session resume
49
+ * from CLI args (e.g. opencode, gemini's "latest only" mode), or when
50
+ * the CLI-native session id can't be resolved (e.g. codex history file
51
+ * is missing). The card falls back to a static note in those cases.
52
+ *
53
+ * Implementations should print the *default* binary name (`claude`,
54
+ * `codex`, etc.) rather than `cliPathOverride` — the override is a
55
+ * server-side setting and users running the command on their own
56
+ * laptop usually have the default binary on PATH. */
57
+ buildResumeCommand?(opts: {
58
+ sessionId: string;
59
+ /** CLI-native session id from session.cliSessionId, when available. */
60
+ cliSessionId?: string;
61
+ }): string | null;
34
62
  /** Write user input to PTY. May fire writes asynchronously (e.g. Aiden delayed Enter).
35
63
  * Resolves when all writes are complete.
36
64
  *
37
65
  * Return value is optional: adapters that can verify the submit (e.g. Claude
38
66
  * Code via session JSONL) return `{ submitted: false }` when all retries
39
67
  * failed, so the worker can surface that to the user. `void` / undefined
40
- * means "no verification performed, assume OK". */
68
+ * means "no verification performed, assume OK".
69
+ *
70
+ * When `submitted === false`, adapters may attach a `recheck` closure that
71
+ * re-scans the transcript on demand. The worker calls it after a delay so
72
+ * slow-path submits (cold-start, slow UserPromptSubmit hooks, busy disk)
73
+ * that landed *after* the in-band retry budget exhausted are recognised
74
+ * and the user_notify warning is suppressed. The closure must be cheap
75
+ * and idempotent — worker may invoke it multiple times. */
41
76
  writeInput(pty: PtyHandle, content: string): Promise<void | {
42
77
  submitted: boolean;
78
+ cliSessionId?: string;
79
+ recheck?: () => boolean | Promise<boolean>;
43
80
  }>;
44
81
  /** Optional: absolute path (with ~ expansion handled by caller) to the CLI's
45
82
  * skill directory. When set, `ensureSkills` will write/refresh skill files
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/adapters/cli/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,kEAAkE;IAClE,QAAQ,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,4FAA4F;IAC5F,eAAe,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC1C,8FAA8F;IAC9F,SAAS,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B;;2FAEuF;IACvF,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB,wBAAwB;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB,+CAA+C;IAC/C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B;;;;yCAIqC;IACrC,SAAS,CAAC,IAAI,EAAE;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,OAAO,CAAC;QAChB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,MAAM,EAAE,CAAC;IAEb;+DAC2D;IAC3D,QAAQ,CAAC,0BAA0B,CAAC,EAAE,OAAO,CAAC;IAE9C;;;;;;wDAMoD;IACpD,UAAU,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAEpF;;;4EAGwE;IACxE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAE5B,wFAAwF;IACxF,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAEpC;;;;;sEAKkE;IAClE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAE/B;qEACiE;IACjE,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;IAE/B;;2EAEuE;IACvE,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEzC;;;;6EAIyE;IACzE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAErC,+CAA+C;IAC/C,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,MAAM,KAAK,GAAG,aAAa,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/adapters/cli/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,kEAAkE;IAClE,QAAQ,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,4FAA4F;IAC5F,eAAe,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC1C,8FAA8F;IAC9F,SAAS,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B;;2FAEuF;IACvF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;yEAEqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;+DAC2D;IAC3D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,wBAAwB;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB,+CAA+C;IAC/C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B;;;;yCAIqC;IACrC,SAAS,CAAC,IAAI,EAAE;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,OAAO,CAAC;QAChB,sFAAsF;QACtF,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,MAAM,EAAE,CAAC;IAEb;+DAC2D;IAC3D,QAAQ,CAAC,0BAA0B,CAAC,EAAE,OAAO,CAAC;IAE9C;;;;;;;;;;;;;0DAasD;IACtD,kBAAkB,CAAC,CAAC,IAAI,EAAE;QACxB,SAAS,EAAE,MAAM,CAAC;QAClB,uEAAuE;QACvE,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,GAAG,MAAM,GAAG,IAAI,CAAC;IAElB;;;;;;;;;;;;;gEAa4D;IAC5D,UAAU,CACR,GAAG,EAAE,SAAS,EACd,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,GAAG;QAChB,SAAS,EAAE,OAAO,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,OAAO,CAAC,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;KAC5C,CAAC,CAAC;IAEH;;;4EAGwE;IACxE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAE5B,wFAAwF;IACxF,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAEpC;;;;;sEAKkE;IAClE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAE/B;qEACiE;IACjE,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;IAE/B;;2EAEuE;IACvE,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEzC;;;;6EAIyE;IACzE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAErC,+CAA+C;IAC/C,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,MAAM,KAAK,GAAG,aAAa,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAC"}
@@ -0,0 +1,14 @@
1
+ export interface AutostartOpts {
2
+ /** Absolute path to the botmux package root (one level up from dist/). */
3
+ pkgRoot: string;
4
+ /** Absolute path to ~/.botmux. */
5
+ configDir: string;
6
+ /** Absolute path to the daemon log dir (used for launchd stdout/err). */
7
+ logDir: string;
8
+ }
9
+ export declare function enableAutostart(opts: AutostartOpts): void;
10
+ export declare function disableAutostart(_opts: AutostartOpts): void;
11
+ export declare function autostartStatus(_opts: AutostartOpts): void;
12
+ /** Re-render the unit/plist file from the current paths without touching enable/disable state. */
13
+ export declare function refreshAutostart(opts: AutostartOpts): boolean;
14
+ //# sourceMappingURL=autostart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autostart.d.ts","sourceRoot":"","sources":["../src/autostart.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,aAAa;IAC5B,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,yEAAyE;IACzE,MAAM,EAAE,MAAM,CAAC;CAChB;AAoSD,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAUzD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAQ3D;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAO1D;AAED,kGAAkG;AAClG,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CA2B7D"}