aicodeman 0.2.9 → 0.3.1

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 (374) hide show
  1. package/README.md +118 -4
  2. package/dist/ai-idle-checker.d.ts.map +1 -1
  3. package/dist/ai-idle-checker.js +3 -2
  4. package/dist/ai-idle-checker.js.map +1 -1
  5. package/dist/ai-plan-checker.d.ts.map +1 -1
  6. package/dist/ai-plan-checker.js +3 -2
  7. package/dist/ai-plan-checker.js.map +1 -1
  8. package/dist/bash-tool-parser.d.ts +2 -3
  9. package/dist/bash-tool-parser.d.ts.map +1 -1
  10. package/dist/bash-tool-parser.js +14 -31
  11. package/dist/bash-tool-parser.js.map +1 -1
  12. package/dist/config/ai-defaults.d.ts +16 -0
  13. package/dist/config/ai-defaults.d.ts.map +1 -0
  14. package/dist/config/ai-defaults.js +16 -0
  15. package/dist/config/ai-defaults.js.map +1 -0
  16. package/dist/config/auth-config.d.ts +19 -0
  17. package/dist/config/auth-config.d.ts.map +1 -0
  18. package/dist/config/auth-config.js +28 -0
  19. package/dist/config/auth-config.js.map +1 -0
  20. package/dist/config/exec-timeout.d.ts +10 -0
  21. package/dist/config/exec-timeout.d.ts.map +1 -0
  22. package/dist/config/exec-timeout.js +10 -0
  23. package/dist/config/exec-timeout.js.map +1 -0
  24. package/dist/config/map-limits.d.ts +4 -0
  25. package/dist/config/map-limits.d.ts.map +1 -1
  26. package/dist/config/map-limits.js +7 -0
  27. package/dist/config/map-limits.js.map +1 -1
  28. package/dist/config/server-timing.d.ts +42 -0
  29. package/dist/config/server-timing.d.ts.map +1 -0
  30. package/dist/config/server-timing.js +57 -0
  31. package/dist/config/server-timing.js.map +1 -0
  32. package/dist/config/team-config.d.ts +16 -0
  33. package/dist/config/team-config.d.ts.map +1 -0
  34. package/dist/config/team-config.js +16 -0
  35. package/dist/config/team-config.js.map +1 -0
  36. package/dist/config/terminal-limits.d.ts +18 -0
  37. package/dist/config/terminal-limits.d.ts.map +1 -0
  38. package/dist/config/terminal-limits.js +18 -0
  39. package/dist/config/terminal-limits.js.map +1 -0
  40. package/dist/config/tunnel-config.d.ts +27 -0
  41. package/dist/config/tunnel-config.d.ts.map +1 -0
  42. package/dist/config/tunnel-config.js +36 -0
  43. package/dist/config/tunnel-config.js.map +1 -0
  44. package/dist/hooks-config.d.ts +21 -6
  45. package/dist/hooks-config.d.ts.map +1 -1
  46. package/dist/hooks-config.js +28 -12
  47. package/dist/hooks-config.js.map +1 -1
  48. package/dist/image-watcher.d.ts +4 -4
  49. package/dist/image-watcher.d.ts.map +1 -1
  50. package/dist/image-watcher.js +17 -30
  51. package/dist/image-watcher.js.map +1 -1
  52. package/dist/index.js +1 -2
  53. package/dist/index.js.map +1 -1
  54. package/dist/plan-orchestrator.d.ts +2 -24
  55. package/dist/plan-orchestrator.d.ts.map +1 -1
  56. package/dist/plan-orchestrator.js.map +1 -1
  57. package/dist/prompts/planner.d.ts +7 -8
  58. package/dist/prompts/planner.d.ts.map +1 -1
  59. package/dist/prompts/planner.js +7 -8
  60. package/dist/prompts/planner.js.map +1 -1
  61. package/dist/prompts/research-agent.d.ts +6 -4
  62. package/dist/prompts/research-agent.d.ts.map +1 -1
  63. package/dist/prompts/research-agent.js +6 -4
  64. package/dist/prompts/research-agent.js.map +1 -1
  65. package/dist/push-store.d.ts +1 -1
  66. package/dist/push-store.d.ts.map +1 -1
  67. package/dist/push-store.js +4 -12
  68. package/dist/push-store.js.map +1 -1
  69. package/dist/ralph-fix-plan-watcher.d.ts +91 -0
  70. package/dist/ralph-fix-plan-watcher.d.ts.map +1 -0
  71. package/dist/ralph-fix-plan-watcher.js +326 -0
  72. package/dist/ralph-fix-plan-watcher.js.map +1 -0
  73. package/dist/ralph-loop.d.ts +14 -4
  74. package/dist/ralph-loop.d.ts.map +1 -1
  75. package/dist/ralph-loop.js +14 -4
  76. package/dist/ralph-loop.js.map +1 -1
  77. package/dist/ralph-plan-tracker.d.ts +201 -0
  78. package/dist/ralph-plan-tracker.d.ts.map +1 -0
  79. package/dist/ralph-plan-tracker.js +325 -0
  80. package/dist/ralph-plan-tracker.js.map +1 -0
  81. package/dist/ralph-stall-detector.d.ts +84 -0
  82. package/dist/ralph-stall-detector.d.ts.map +1 -0
  83. package/dist/ralph-stall-detector.js +139 -0
  84. package/dist/ralph-stall-detector.js.map +1 -0
  85. package/dist/ralph-status-parser.d.ts +141 -0
  86. package/dist/ralph-status-parser.d.ts.map +1 -0
  87. package/dist/ralph-status-parser.js +478 -0
  88. package/dist/ralph-status-parser.js.map +1 -0
  89. package/dist/ralph-tracker.d.ts +218 -692
  90. package/dist/ralph-tracker.d.ts.map +1 -1
  91. package/dist/ralph-tracker.js +389 -1723
  92. package/dist/ralph-tracker.js.map +1 -1
  93. package/dist/respawn-adaptive-timing.d.ts +61 -0
  94. package/dist/respawn-adaptive-timing.d.ts.map +1 -0
  95. package/dist/respawn-adaptive-timing.js +105 -0
  96. package/dist/respawn-adaptive-timing.js.map +1 -0
  97. package/dist/respawn-controller.d.ts +35 -115
  98. package/dist/respawn-controller.d.ts.map +1 -1
  99. package/dist/respawn-controller.js +167 -607
  100. package/dist/respawn-controller.js.map +1 -1
  101. package/dist/respawn-health.d.ts +54 -0
  102. package/dist/respawn-health.d.ts.map +1 -0
  103. package/dist/respawn-health.js +183 -0
  104. package/dist/respawn-health.js.map +1 -0
  105. package/dist/respawn-metrics.d.ts +81 -0
  106. package/dist/respawn-metrics.d.ts.map +1 -0
  107. package/dist/respawn-metrics.js +198 -0
  108. package/dist/respawn-metrics.js.map +1 -0
  109. package/dist/respawn-patterns.d.ts +45 -0
  110. package/dist/respawn-patterns.d.ts.map +1 -0
  111. package/dist/respawn-patterns.js +125 -0
  112. package/dist/respawn-patterns.js.map +1 -0
  113. package/dist/session-auto-ops.d.ts +89 -0
  114. package/dist/session-auto-ops.d.ts.map +1 -0
  115. package/dist/session-auto-ops.js +224 -0
  116. package/dist/session-auto-ops.js.map +1 -0
  117. package/dist/session-cli-builder.d.ts +62 -0
  118. package/dist/session-cli-builder.d.ts.map +1 -0
  119. package/dist/session-cli-builder.js +121 -0
  120. package/dist/session-cli-builder.js.map +1 -0
  121. package/dist/session-manager.d.ts +17 -5
  122. package/dist/session-manager.d.ts.map +1 -1
  123. package/dist/session-manager.js +17 -5
  124. package/dist/session-manager.js.map +1 -1
  125. package/dist/session-task-cache.d.ts +52 -0
  126. package/dist/session-task-cache.d.ts.map +1 -0
  127. package/dist/session-task-cache.js +90 -0
  128. package/dist/session-task-cache.js.map +1 -0
  129. package/dist/session.d.ts +23 -41
  130. package/dist/session.d.ts.map +1 -1
  131. package/dist/session.js +79 -317
  132. package/dist/session.js.map +1 -1
  133. package/dist/state-store.d.ts +19 -9
  134. package/dist/state-store.d.ts.map +1 -1
  135. package/dist/state-store.js +29 -30
  136. package/dist/state-store.js.map +1 -1
  137. package/dist/subagent-watcher.d.ts +26 -7
  138. package/dist/subagent-watcher.d.ts.map +1 -1
  139. package/dist/subagent-watcher.js +47 -64
  140. package/dist/subagent-watcher.js.map +1 -1
  141. package/dist/team-watcher.d.ts.map +1 -1
  142. package/dist/team-watcher.js +2 -5
  143. package/dist/team-watcher.js.map +1 -1
  144. package/dist/tmux-manager.d.ts.map +1 -1
  145. package/dist/tmux-manager.js +1 -2
  146. package/dist/tmux-manager.js.map +1 -1
  147. package/dist/tunnel-manager.d.ts +26 -0
  148. package/dist/tunnel-manager.d.ts.map +1 -1
  149. package/dist/tunnel-manager.js +126 -7
  150. package/dist/tunnel-manager.js.map +1 -1
  151. package/dist/types/api.d.ts +108 -0
  152. package/dist/types/api.d.ts.map +1 -0
  153. package/dist/types/api.js +98 -0
  154. package/dist/types/api.js.map +1 -0
  155. package/dist/types/app-state.d.ts +117 -0
  156. package/dist/types/app-state.d.ts.map +1 -0
  157. package/dist/types/app-state.js +76 -0
  158. package/dist/types/app-state.js.map +1 -0
  159. package/dist/types/common.d.ts +79 -0
  160. package/dist/types/common.d.ts.map +1 -0
  161. package/dist/types/common.js +17 -0
  162. package/dist/types/common.js.map +1 -0
  163. package/dist/types/index.d.ts +66 -0
  164. package/dist/types/index.d.ts.map +1 -0
  165. package/dist/types/index.js +66 -0
  166. package/dist/types/index.js.map +1 -0
  167. package/dist/types/lifecycle.d.ts +28 -0
  168. package/dist/types/lifecycle.d.ts.map +1 -0
  169. package/dist/types/lifecycle.js +16 -0
  170. package/dist/types/lifecycle.js.map +1 -0
  171. package/dist/types/plan.d.ts +45 -0
  172. package/dist/types/plan.d.ts.map +1 -0
  173. package/dist/types/plan.js +18 -0
  174. package/dist/types/plan.js.map +1 -0
  175. package/dist/types/push.d.ts +36 -0
  176. package/dist/types/push.d.ts.map +1 -0
  177. package/dist/types/push.js +18 -0
  178. package/dist/types/push.js.map +1 -0
  179. package/dist/types/ralph.d.ts +262 -0
  180. package/dist/types/ralph.d.ts.map +1 -0
  181. package/dist/types/ralph.js +70 -0
  182. package/dist/types/ralph.js.map +1 -0
  183. package/dist/types/respawn.d.ts +271 -0
  184. package/dist/types/respawn.d.ts.map +1 -0
  185. package/dist/types/respawn.js +26 -0
  186. package/dist/types/respawn.js.map +1 -0
  187. package/dist/types/run-summary.d.ts +96 -0
  188. package/dist/types/run-summary.d.ts.map +1 -0
  189. package/dist/types/run-summary.js +37 -0
  190. package/dist/types/run-summary.js.map +1 -0
  191. package/dist/types/session.d.ts +152 -0
  192. package/dist/types/session.d.ts.map +1 -0
  193. package/dist/types/session.js +27 -0
  194. package/dist/types/session.js.map +1 -0
  195. package/dist/types/task.d.ts +72 -0
  196. package/dist/types/task.d.ts.map +1 -0
  197. package/dist/types/task.js +19 -0
  198. package/dist/types/task.js.map +1 -0
  199. package/dist/types/teams.d.ts +73 -0
  200. package/dist/types/teams.d.ts.map +1 -0
  201. package/dist/types/teams.js +23 -0
  202. package/dist/types/teams.js.map +1 -0
  203. package/dist/types/tools.d.ts +61 -0
  204. package/dist/types/tools.d.ts.map +1 -0
  205. package/dist/types/tools.js +20 -0
  206. package/dist/types/tools.js.map +1 -0
  207. package/dist/types.d.ts +8 -1134
  208. package/dist/types.d.ts.map +1 -1
  209. package/dist/types.js +8 -210
  210. package/dist/types.js.map +1 -1
  211. package/dist/utils/claude-cli-resolver.d.ts.map +1 -1
  212. package/dist/utils/claude-cli-resolver.js +1 -2
  213. package/dist/utils/claude-cli-resolver.js.map +1 -1
  214. package/dist/utils/debouncer.d.ts +111 -0
  215. package/dist/utils/debouncer.d.ts.map +1 -0
  216. package/dist/utils/debouncer.js +162 -0
  217. package/dist/utils/debouncer.js.map +1 -0
  218. package/dist/utils/index.d.ts +3 -2
  219. package/dist/utils/index.d.ts.map +1 -1
  220. package/dist/utils/index.js +3 -2
  221. package/dist/utils/index.js.map +1 -1
  222. package/dist/utils/opencode-cli-resolver.d.ts.map +1 -1
  223. package/dist/utils/opencode-cli-resolver.js +1 -2
  224. package/dist/utils/opencode-cli-resolver.js.map +1 -1
  225. package/dist/utils/string-similarity.d.ts +0 -57
  226. package/dist/utils/string-similarity.d.ts.map +1 -1
  227. package/dist/utils/string-similarity.js +3 -18
  228. package/dist/utils/string-similarity.js.map +1 -1
  229. package/dist/web/middleware/auth.d.ts +31 -0
  230. package/dist/web/middleware/auth.d.ts.map +1 -0
  231. package/dist/web/middleware/auth.js +154 -0
  232. package/dist/web/middleware/auth.js.map +1 -0
  233. package/dist/web/ports/auth-port.d.ts +18 -0
  234. package/dist/web/ports/auth-port.d.ts.map +1 -0
  235. package/dist/web/ports/auth-port.js +6 -0
  236. package/dist/web/ports/auth-port.js.map +1 -0
  237. package/dist/web/ports/config-port.d.ts +28 -0
  238. package/dist/web/ports/config-port.d.ts.map +1 -0
  239. package/dist/web/ports/config-port.js +6 -0
  240. package/dist/web/ports/config-port.js.map +1 -0
  241. package/dist/web/ports/event-port.d.ts +13 -0
  242. package/dist/web/ports/event-port.d.ts.map +1 -0
  243. package/dist/web/ports/event-port.js +6 -0
  244. package/dist/web/ports/event-port.js.map +1 -0
  245. package/dist/web/ports/index.d.ts +14 -0
  246. package/dist/web/ports/index.d.ts.map +1 -0
  247. package/dist/web/ports/index.js +9 -0
  248. package/dist/web/ports/index.js.map +1 -0
  249. package/dist/web/ports/infra-port.d.ts +36 -0
  250. package/dist/web/ports/infra-port.d.ts.map +1 -0
  251. package/dist/web/ports/infra-port.js +6 -0
  252. package/dist/web/ports/infra-port.js.map +1 -0
  253. package/dist/web/ports/respawn-port.d.ts +20 -0
  254. package/dist/web/ports/respawn-port.d.ts.map +1 -0
  255. package/dist/web/ports/respawn-port.js +6 -0
  256. package/dist/web/ports/respawn-port.js.map +1 -0
  257. package/dist/web/ports/session-port.d.ts +15 -0
  258. package/dist/web/ports/session-port.d.ts.map +1 -0
  259. package/dist/web/ports/session-port.js +6 -0
  260. package/dist/web/ports/session-port.js.map +1 -0
  261. package/dist/web/public/api-client.js +82 -0
  262. package/dist/web/public/api-client.js.br +0 -0
  263. package/dist/web/public/api-client.js.gz +0 -0
  264. package/dist/web/public/app.js +117 -201
  265. package/dist/web/public/app.js.br +0 -0
  266. package/dist/web/public/app.js.gz +0 -0
  267. package/dist/web/public/constants.js +365 -0
  268. package/dist/web/public/constants.js.br +0 -0
  269. package/dist/web/public/constants.js.gz +0 -0
  270. package/dist/web/public/index.html +15 -3
  271. package/dist/web/public/index.html.br +0 -0
  272. package/dist/web/public/index.html.gz +0 -0
  273. package/dist/web/public/keyboard-accessory.js +302 -0
  274. package/dist/web/public/keyboard-accessory.js.br +0 -0
  275. package/dist/web/public/keyboard-accessory.js.gz +0 -0
  276. package/dist/web/public/mobile-handlers.js +491 -0
  277. package/dist/web/public/mobile-handlers.js.br +0 -0
  278. package/dist/web/public/mobile-handlers.js.gz +0 -0
  279. package/dist/web/public/mobile.css.gz +0 -0
  280. package/dist/web/public/notification-manager.js +472 -0
  281. package/dist/web/public/notification-manager.js.br +0 -0
  282. package/dist/web/public/notification-manager.js.gz +0 -0
  283. package/dist/web/public/ralph-wizard.js +33 -9
  284. package/dist/web/public/ralph-wizard.js.br +0 -0
  285. package/dist/web/public/ralph-wizard.js.gz +0 -0
  286. package/dist/web/public/styles.css.gz +0 -0
  287. package/dist/web/public/subagent-windows.js +1149 -0
  288. package/dist/web/public/subagent-windows.js.br +0 -0
  289. package/dist/web/public/subagent-windows.js.gz +0 -0
  290. package/dist/web/public/sw.js +15 -0
  291. package/dist/web/public/sw.js.br +0 -0
  292. package/dist/web/public/sw.js.gz +0 -0
  293. package/dist/web/public/upload.html.gz +0 -0
  294. package/dist/web/public/vendor/xterm-addon-fit.min.js.gz +0 -0
  295. package/dist/web/public/vendor/xterm-addon-unicode11.min.js.gz +0 -0
  296. package/dist/web/public/vendor/xterm-addon-webgl.min.js.gz +0 -0
  297. package/dist/web/public/vendor/xterm-zerolag-input.js +4 -0
  298. package/dist/web/public/vendor/xterm-zerolag-input.js.br +0 -0
  299. package/dist/web/public/vendor/xterm-zerolag-input.js.gz +0 -0
  300. package/dist/web/public/vendor/xterm.css.gz +0 -0
  301. package/dist/web/public/vendor/xterm.min.js.gz +0 -0
  302. package/dist/web/public/voice-input.js +882 -0
  303. package/dist/web/public/voice-input.js.br +0 -0
  304. package/dist/web/public/voice-input.js.gz +0 -0
  305. package/dist/web/route-helpers.d.ts +38 -0
  306. package/dist/web/route-helpers.d.ts.map +1 -0
  307. package/dist/web/route-helpers.js +144 -0
  308. package/dist/web/route-helpers.js.map +1 -0
  309. package/dist/web/routes/case-routes.d.ts +9 -0
  310. package/dist/web/routes/case-routes.d.ts.map +1 -0
  311. package/dist/web/routes/case-routes.js +426 -0
  312. package/dist/web/routes/case-routes.js.map +1 -0
  313. package/dist/web/routes/file-routes.d.ts +8 -0
  314. package/dist/web/routes/file-routes.d.ts.map +1 -0
  315. package/dist/web/routes/file-routes.js +337 -0
  316. package/dist/web/routes/file-routes.js.map +1 -0
  317. package/dist/web/routes/hook-event-routes.d.ts +9 -0
  318. package/dist/web/routes/hook-event-routes.d.ts.map +1 -0
  319. package/dist/web/routes/hook-event-routes.js +57 -0
  320. package/dist/web/routes/hook-event-routes.js.map +1 -0
  321. package/dist/web/routes/index.d.ts +16 -0
  322. package/dist/web/routes/index.d.ts.map +1 -0
  323. package/dist/web/routes/index.js +16 -0
  324. package/dist/web/routes/index.js.map +1 -0
  325. package/dist/web/routes/mux-routes.d.ts +8 -0
  326. package/dist/web/routes/mux-routes.d.ts.map +1 -0
  327. package/dist/web/routes/mux-routes.js +32 -0
  328. package/dist/web/routes/mux-routes.js.map +1 -0
  329. package/dist/web/routes/plan-routes.d.ts +9 -0
  330. package/dist/web/routes/plan-routes.d.ts.map +1 -0
  331. package/dist/web/routes/plan-routes.js +385 -0
  332. package/dist/web/routes/plan-routes.js.map +1 -0
  333. package/dist/web/routes/push-routes.d.ts +8 -0
  334. package/dist/web/routes/push-routes.d.ts.map +1 -0
  335. package/dist/web/routes/push-routes.js +49 -0
  336. package/dist/web/routes/push-routes.js.map +1 -0
  337. package/dist/web/routes/ralph-routes.d.ts +9 -0
  338. package/dist/web/routes/ralph-routes.d.ts.map +1 -0
  339. package/dist/web/routes/ralph-routes.js +485 -0
  340. package/dist/web/routes/ralph-routes.js.map +1 -0
  341. package/dist/web/routes/respawn-routes.d.ts +8 -0
  342. package/dist/web/routes/respawn-routes.d.ts.map +1 -0
  343. package/dist/web/routes/respawn-routes.js +270 -0
  344. package/dist/web/routes/respawn-routes.js.map +1 -0
  345. package/dist/web/routes/scheduled-routes.d.ts +8 -0
  346. package/dist/web/routes/scheduled-routes.d.ts.map +1 -0
  347. package/dist/web/routes/scheduled-routes.js +51 -0
  348. package/dist/web/routes/scheduled-routes.js.map +1 -0
  349. package/dist/web/routes/session-routes.d.ts +9 -0
  350. package/dist/web/routes/session-routes.d.ts.map +1 -0
  351. package/dist/web/routes/session-routes.js +751 -0
  352. package/dist/web/routes/session-routes.js.map +1 -0
  353. package/dist/web/routes/system-routes.d.ts +9 -0
  354. package/dist/web/routes/system-routes.d.ts.map +1 -0
  355. package/dist/web/routes/system-routes.js +699 -0
  356. package/dist/web/routes/system-routes.js.map +1 -0
  357. package/dist/web/routes/team-routes.d.ts +8 -0
  358. package/dist/web/routes/team-routes.d.ts.map +1 -0
  359. package/dist/web/routes/team-routes.js +14 -0
  360. package/dist/web/routes/team-routes.js.map +1 -0
  361. package/dist/web/schemas.d.ts +43 -3
  362. package/dist/web/schemas.d.ts.map +1 -1
  363. package/dist/web/schemas.js +6 -2
  364. package/dist/web/schemas.js.map +1 -1
  365. package/dist/web/server.d.ts +35 -15
  366. package/dist/web/server.d.ts.map +1 -1
  367. package/dist/web/server.js +563 -3971
  368. package/dist/web/server.js.map +1 -1
  369. package/dist/web/sse-events.d.ts +361 -0
  370. package/dist/web/sse-events.d.ts.map +1 -0
  371. package/dist/web/sse-events.js +396 -0
  372. package/dist/web/sse-events.js.map +1 -0
  373. package/package.json +2 -1
  374. package/scripts/postinstall.js +58 -0
@@ -0,0 +1,224 @@
1
+ /**
2
+ * @fileoverview Auto-compact and auto-clear automation for Session.
3
+ *
4
+ * Monitors token counts and triggers /compact or /clear commands when
5
+ * configurable thresholds are reached. Waits for Claude to be idle
6
+ * before sending commands, with retry logic and mutual exclusion
7
+ * (compact and clear never run simultaneously).
8
+ *
9
+ * @module session-auto-ops
10
+ */
11
+ import { EventEmitter } from 'node:events';
12
+ // ============================================================================
13
+ // Timing Constants
14
+ // ============================================================================
15
+ /** Delay for auto-compact/clear retry attempts (2 seconds) */
16
+ const AUTO_RETRY_DELAY_MS = 2000;
17
+ /** Delay for auto-compact/clear initial check (1 second) */
18
+ const AUTO_INITIAL_DELAY_MS = 1000;
19
+ /** Cooldown after compact completes before re-enabling (10 seconds) */
20
+ const COMPACT_COOLDOWN_MS = 10000;
21
+ /** Cooldown after clear completes before re-enabling (5 seconds) */
22
+ const CLEAR_COOLDOWN_MS = 5000;
23
+ /** Minimum valid threshold for auto-clear/compact (1000 tokens) */
24
+ const MIN_AUTO_THRESHOLD = 1000;
25
+ /** Maximum valid threshold for auto-clear/compact (500k tokens) */
26
+ const MAX_AUTO_THRESHOLD = 500_000;
27
+ /** Default auto-clear threshold when invalid value provided */
28
+ const DEFAULT_AUTO_CLEAR_THRESHOLD = 140_000;
29
+ /** Default auto-compact threshold when invalid value provided */
30
+ const DEFAULT_AUTO_COMPACT_THRESHOLD = 110_000;
31
+ /**
32
+ * Manages auto-compact and auto-clear automation for a Session.
33
+ *
34
+ * When enabled, monitors token counts after each update and triggers
35
+ * /compact or /clear commands when thresholds are exceeded. Ensures
36
+ * mutual exclusion between compact and clear operations.
37
+ */
38
+ export class SessionAutoOps extends EventEmitter {
39
+ // Auto-compact state
40
+ _autoCompactThreshold;
41
+ _autoCompactEnabled = false;
42
+ _autoCompactPrompt = '';
43
+ _isCompacting = false;
44
+ _autoCompactTimer = null;
45
+ // Auto-clear state
46
+ _autoClearThreshold;
47
+ _autoClearEnabled = false;
48
+ _isClearing = false;
49
+ _autoClearTimer = null;
50
+ callbacks;
51
+ constructor(callbacks, config) {
52
+ super();
53
+ this.callbacks = callbacks;
54
+ this._autoCompactThreshold = config?.compactThreshold ?? DEFAULT_AUTO_COMPACT_THRESHOLD;
55
+ this._autoClearThreshold = config?.clearThreshold ?? DEFAULT_AUTO_CLEAR_THRESHOLD;
56
+ }
57
+ // ============================================================================
58
+ // Auto-compact getters/setters
59
+ // ============================================================================
60
+ get autoCompactThreshold() {
61
+ return this._autoCompactThreshold;
62
+ }
63
+ get autoCompactEnabled() {
64
+ return this._autoCompactEnabled;
65
+ }
66
+ get autoCompactPrompt() {
67
+ return this._autoCompactPrompt;
68
+ }
69
+ get isCompacting() {
70
+ return this._isCompacting;
71
+ }
72
+ setAutoCompact(enabled, threshold, prompt) {
73
+ this._autoCompactEnabled = enabled;
74
+ if (threshold !== undefined) {
75
+ if (threshold < MIN_AUTO_THRESHOLD || threshold > MAX_AUTO_THRESHOLD) {
76
+ console.warn(`[SessionAutoOps ${this.callbacks.getSessionId()}] Invalid autoCompact threshold ${threshold}, must be between ${MIN_AUTO_THRESHOLD} and ${MAX_AUTO_THRESHOLD}. Using default ${DEFAULT_AUTO_COMPACT_THRESHOLD}.`);
77
+ this._autoCompactThreshold = DEFAULT_AUTO_COMPACT_THRESHOLD;
78
+ }
79
+ else {
80
+ this._autoCompactThreshold = threshold;
81
+ }
82
+ }
83
+ if (prompt !== undefined) {
84
+ this._autoCompactPrompt = prompt;
85
+ }
86
+ }
87
+ // ============================================================================
88
+ // Auto-clear getters/setters
89
+ // ============================================================================
90
+ get autoClearThreshold() {
91
+ return this._autoClearThreshold;
92
+ }
93
+ get autoClearEnabled() {
94
+ return this._autoClearEnabled;
95
+ }
96
+ get isClearing() {
97
+ return this._isClearing;
98
+ }
99
+ setAutoClear(enabled, threshold) {
100
+ this._autoClearEnabled = enabled;
101
+ if (threshold !== undefined) {
102
+ if (threshold < MIN_AUTO_THRESHOLD || threshold > MAX_AUTO_THRESHOLD) {
103
+ console.warn(`[SessionAutoOps ${this.callbacks.getSessionId()}] Invalid autoClear threshold ${threshold}, must be between ${MIN_AUTO_THRESHOLD} and ${MAX_AUTO_THRESHOLD}. Using default ${DEFAULT_AUTO_CLEAR_THRESHOLD}.`);
104
+ this._autoClearThreshold = DEFAULT_AUTO_CLEAR_THRESHOLD;
105
+ }
106
+ else {
107
+ this._autoClearThreshold = threshold;
108
+ }
109
+ }
110
+ }
111
+ // ============================================================================
112
+ // Threshold checks
113
+ // ============================================================================
114
+ /**
115
+ * Check if auto-compact should be triggered based on current token count.
116
+ * Called after token count updates.
117
+ */
118
+ checkAutoCompact() {
119
+ if (this.callbacks.isStopped())
120
+ return;
121
+ if (!this._autoCompactEnabled || this._isCompacting || this._isClearing)
122
+ return;
123
+ const totalTokens = this.callbacks.getTotalTokens();
124
+ if (totalTokens >= this._autoCompactThreshold) {
125
+ this._isCompacting = true;
126
+ console.log(`[SessionAutoOps] Auto-compact triggered: ${totalTokens} tokens >= ${this._autoCompactThreshold} threshold`);
127
+ const checkAndCompact = async () => {
128
+ if (this.callbacks.isStopped())
129
+ return;
130
+ if (!this._isCompacting)
131
+ return;
132
+ if (!this.callbacks.isWorking()) {
133
+ if (this.callbacks.isStopped())
134
+ return;
135
+ const compactCmd = this._autoCompactPrompt ? `/compact ${this._autoCompactPrompt}\r` : '/compact\r';
136
+ await this.callbacks.writeCommand(compactCmd);
137
+ this.emit('autoCompact', {
138
+ tokens: totalTokens,
139
+ threshold: this._autoCompactThreshold,
140
+ prompt: this._autoCompactPrompt || undefined,
141
+ });
142
+ if (!this.callbacks.isStopped()) {
143
+ this._autoCompactTimer = setTimeout(() => {
144
+ if (this.callbacks.isStopped())
145
+ return;
146
+ this._autoCompactTimer = null;
147
+ this._isCompacting = false;
148
+ }, COMPACT_COOLDOWN_MS);
149
+ }
150
+ }
151
+ else {
152
+ if (!this.callbacks.isStopped()) {
153
+ this._autoCompactTimer = setTimeout(checkAndCompact, AUTO_RETRY_DELAY_MS);
154
+ }
155
+ }
156
+ };
157
+ if (!this.callbacks.isStopped()) {
158
+ this._autoCompactTimer = setTimeout(checkAndCompact, AUTO_INITIAL_DELAY_MS);
159
+ }
160
+ }
161
+ }
162
+ /**
163
+ * Check if auto-clear should be triggered based on current token count.
164
+ * Called after token count updates.
165
+ */
166
+ checkAutoClear() {
167
+ if (this.callbacks.isStopped())
168
+ return;
169
+ if (!this._autoClearEnabled || this._isClearing || this._isCompacting)
170
+ return;
171
+ const totalTokens = this.callbacks.getTotalTokens();
172
+ if (totalTokens >= this._autoClearThreshold) {
173
+ this._isClearing = true;
174
+ console.log(`[SessionAutoOps] Auto-clear triggered: ${totalTokens} tokens >= ${this._autoClearThreshold} threshold`);
175
+ const checkAndClear = async () => {
176
+ if (this.callbacks.isStopped())
177
+ return;
178
+ if (!this._isClearing)
179
+ return;
180
+ if (!this.callbacks.isWorking()) {
181
+ if (this.callbacks.isStopped())
182
+ return;
183
+ await this.callbacks.writeCommand('/clear\r');
184
+ this.emit('autoClear', { tokens: totalTokens, threshold: this._autoClearThreshold });
185
+ if (!this.callbacks.isStopped()) {
186
+ this._autoClearTimer = setTimeout(() => {
187
+ if (this.callbacks.isStopped())
188
+ return;
189
+ this._autoClearTimer = null;
190
+ this._isClearing = false;
191
+ }, CLEAR_COOLDOWN_MS);
192
+ }
193
+ }
194
+ else {
195
+ if (!this.callbacks.isStopped()) {
196
+ this._autoClearTimer = setTimeout(checkAndClear, AUTO_RETRY_DELAY_MS);
197
+ }
198
+ }
199
+ };
200
+ if (!this.callbacks.isStopped()) {
201
+ this._autoClearTimer = setTimeout(checkAndClear, AUTO_INITIAL_DELAY_MS);
202
+ }
203
+ }
204
+ }
205
+ // ============================================================================
206
+ // Cleanup
207
+ // ============================================================================
208
+ /**
209
+ * Clear all timers and reset state. Called when the session stops.
210
+ */
211
+ destroy() {
212
+ if (this._autoCompactTimer) {
213
+ clearTimeout(this._autoCompactTimer);
214
+ this._autoCompactTimer = null;
215
+ }
216
+ this._isCompacting = false;
217
+ if (this._autoClearTimer) {
218
+ clearTimeout(this._autoClearTimer);
219
+ this._autoClearTimer = null;
220
+ }
221
+ this._isClearing = false;
222
+ }
223
+ }
224
+ //# sourceMappingURL=session-auto-ops.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-auto-ops.js","sourceRoot":"","sources":["../src/session-auto-ops.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * @fileoverview Pure functions for building CLI arguments and environment variables
3
+ * for Claude and OpenCode CLI spawning.
4
+ *
5
+ * Extracted from Session to keep argument construction logic testable and
6
+ * separate from PTY lifecycle management.
7
+ *
8
+ * @module session-cli-builder
9
+ */
10
+ import type { ClaudeMode } from './types.js';
11
+ /**
12
+ * Build Claude CLI permission flags based on the configured mode.
13
+ * Returns an array of args to pass to the CLI.
14
+ */
15
+ export declare function buildPermissionArgs(claudeMode: ClaudeMode, allowedTools?: string): string[];
16
+ /**
17
+ * Build args for an interactive Claude CLI session (direct PTY, non-mux fallback).
18
+ *
19
+ * @param sessionId - The Codeman session ID (passed as --session-id to Claude)
20
+ * @param claudeMode - Permission mode for the CLI
21
+ * @param model - Optional model override (e.g., 'opus', 'sonnet')
22
+ * @param allowedTools - Optional comma-separated allowed tools list
23
+ * @returns Array of CLI arguments
24
+ */
25
+ export declare function buildInteractiveArgs(sessionId: string, claudeMode: ClaudeMode, model?: string, allowedTools?: string): string[];
26
+ /**
27
+ * Build args for a one-shot Claude CLI prompt (runPrompt mode).
28
+ *
29
+ * @param prompt - The prompt text to send
30
+ * @param model - Optional model override
31
+ * @returns Array of CLI arguments
32
+ */
33
+ export declare function buildPromptArgs(prompt: string, model?: string): string[];
34
+ /**
35
+ * Build environment variables for Claude CLI processes (direct PTY, non-mux).
36
+ *
37
+ * Augments process.env with:
38
+ * - UTF-8 locale settings
39
+ * - Augmented PATH (includes Claude CLI directory)
40
+ * - xterm-256color terminal type
41
+ * - Codeman session identification vars
42
+ *
43
+ * @param sessionId - The Codeman session ID
44
+ * @returns Environment variables object for pty.spawn
45
+ */
46
+ export declare function buildClaudeEnv(sessionId: string): Record<string, string | undefined>;
47
+ /**
48
+ * Build environment variables for mux-attached PTY sessions (tmux attach).
49
+ * Lighter than buildClaudeEnv — no PATH augmentation or Codeman vars needed
50
+ * since the mux session already has those set.
51
+ *
52
+ * @returns Environment variables object for pty.spawn
53
+ */
54
+ export declare function buildMuxAttachEnv(): Record<string, string | undefined>;
55
+ /**
56
+ * Build environment variables for a direct shell session (non-mux fallback).
57
+ *
58
+ * @param sessionId - The Codeman session ID
59
+ * @returns Environment variables object for pty.spawn
60
+ */
61
+ export declare function buildShellEnv(sessionId: string): Record<string, string | undefined>;
62
+ //# sourceMappingURL=session-cli-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-cli-builder.d.ts","sourceRoot":"","sources":["../src/session-cli-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAc3F;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,UAAU,EACtB,KAAK,CAAC,EAAE,MAAM,EACd,YAAY,CAAC,EAAE,MAAM,GACpB,MAAM,EAAE,CAIV;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAOxE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAcpF;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAStE;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAUnF"}
@@ -0,0 +1,121 @@
1
+ /**
2
+ * @fileoverview Pure functions for building CLI arguments and environment variables
3
+ * for Claude and OpenCode CLI spawning.
4
+ *
5
+ * Extracted from Session to keep argument construction logic testable and
6
+ * separate from PTY lifecycle management.
7
+ *
8
+ * @module session-cli-builder
9
+ */
10
+ import { getAugmentedPath } from './utils/claude-cli-resolver.js';
11
+ /**
12
+ * Build Claude CLI permission flags based on the configured mode.
13
+ * Returns an array of args to pass to the CLI.
14
+ */
15
+ export function buildPermissionArgs(claudeMode, allowedTools) {
16
+ switch (claudeMode) {
17
+ case 'dangerously-skip-permissions':
18
+ return ['--dangerously-skip-permissions'];
19
+ case 'allowedTools':
20
+ if (allowedTools) {
21
+ return ['--allowedTools', allowedTools];
22
+ }
23
+ // Fall back to normal mode if no tools specified
24
+ return [];
25
+ case 'normal':
26
+ default:
27
+ return [];
28
+ }
29
+ }
30
+ /**
31
+ * Build args for an interactive Claude CLI session (direct PTY, non-mux fallback).
32
+ *
33
+ * @param sessionId - The Codeman session ID (passed as --session-id to Claude)
34
+ * @param claudeMode - Permission mode for the CLI
35
+ * @param model - Optional model override (e.g., 'opus', 'sonnet')
36
+ * @param allowedTools - Optional comma-separated allowed tools list
37
+ * @returns Array of CLI arguments
38
+ */
39
+ export function buildInteractiveArgs(sessionId, claudeMode, model, allowedTools) {
40
+ const args = [...buildPermissionArgs(claudeMode, allowedTools), '--session-id', sessionId];
41
+ if (model)
42
+ args.push('--model', model);
43
+ return args;
44
+ }
45
+ /**
46
+ * Build args for a one-shot Claude CLI prompt (runPrompt mode).
47
+ *
48
+ * @param prompt - The prompt text to send
49
+ * @param model - Optional model override
50
+ * @returns Array of CLI arguments
51
+ */
52
+ export function buildPromptArgs(prompt, model) {
53
+ const args = ['-p', '--verbose', '--dangerously-skip-permissions', '--output-format', 'stream-json'];
54
+ if (model) {
55
+ args.push('--model', model);
56
+ }
57
+ args.push(prompt);
58
+ return args;
59
+ }
60
+ /**
61
+ * Build environment variables for Claude CLI processes (direct PTY, non-mux).
62
+ *
63
+ * Augments process.env with:
64
+ * - UTF-8 locale settings
65
+ * - Augmented PATH (includes Claude CLI directory)
66
+ * - xterm-256color terminal type
67
+ * - Codeman session identification vars
68
+ *
69
+ * @param sessionId - The Codeman session ID
70
+ * @returns Environment variables object for pty.spawn
71
+ */
72
+ export function buildClaudeEnv(sessionId) {
73
+ return {
74
+ ...process.env,
75
+ LANG: 'en_US.UTF-8',
76
+ LC_ALL: 'en_US.UTF-8',
77
+ PATH: getAugmentedPath(),
78
+ TERM: 'xterm-256color',
79
+ COLORTERM: undefined,
80
+ CLAUDECODE: undefined,
81
+ // Inform Claude it's running within Codeman (helps prevent self-termination)
82
+ CODEMAN_MUX: '1',
83
+ CODEMAN_SESSION_ID: sessionId,
84
+ CODEMAN_API_URL: process.env.CODEMAN_API_URL || 'http://localhost:3000',
85
+ };
86
+ }
87
+ /**
88
+ * Build environment variables for mux-attached PTY sessions (tmux attach).
89
+ * Lighter than buildClaudeEnv — no PATH augmentation or Codeman vars needed
90
+ * since the mux session already has those set.
91
+ *
92
+ * @returns Environment variables object for pty.spawn
93
+ */
94
+ export function buildMuxAttachEnv() {
95
+ return {
96
+ ...process.env,
97
+ LANG: 'en_US.UTF-8',
98
+ LC_ALL: 'en_US.UTF-8',
99
+ TERM: 'xterm-256color',
100
+ COLORTERM: undefined,
101
+ CLAUDECODE: undefined,
102
+ };
103
+ }
104
+ /**
105
+ * Build environment variables for a direct shell session (non-mux fallback).
106
+ *
107
+ * @param sessionId - The Codeman session ID
108
+ * @returns Environment variables object for pty.spawn
109
+ */
110
+ export function buildShellEnv(sessionId) {
111
+ return {
112
+ ...process.env,
113
+ LANG: 'en_US.UTF-8',
114
+ LC_ALL: 'en_US.UTF-8',
115
+ TERM: 'xterm-256color',
116
+ CODEMAN_MUX: '1',
117
+ CODEMAN_SESSION_ID: sessionId,
118
+ CODEMAN_API_URL: process.env.CODEMAN_API_URL || 'http://localhost:3000',
119
+ };
120
+ }
121
+ //# sourceMappingURL=session-cli-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-cli-builder.js","sourceRoot":"","sources":["../src/session-cli-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAElE;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAAsB,EAAE,YAAqB;IAC/E,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,8BAA8B;YACjC,OAAO,CAAC,gCAAgC,CAAC,CAAC;QAC5C,KAAK,cAAc;YACjB,IAAI,YAAY,EAAE,CAAC;gBACjB,OAAO,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;YAC1C,CAAC;YACD,iDAAiD;YACjD,OAAO,EAAE,CAAC;QACZ,KAAK,QAAQ,CAAC;QACd;YACE,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAClC,SAAiB,EACjB,UAAsB,EACtB,KAAc,EACd,YAAqB;IAErB,MAAM,IAAI,GAAG,CAAC,GAAG,mBAAmB,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC;IAC3F,IAAI,KAAK;QAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACvC,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,KAAc;IAC5D,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,gCAAgC,EAAE,iBAAiB,EAAE,aAAa,CAAC,CAAC;IACrG,IAAI,KAAK,EAAE,CAAC;QACV,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClB,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC9C,OAAO;QACL,GAAG,OAAO,CAAC,GAAG;QACd,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,aAAa;QACrB,IAAI,EAAE,gBAAgB,EAAE;QACxB,IAAI,EAAE,gBAAgB;QACtB,SAAS,EAAE,SAAS;QACpB,UAAU,EAAE,SAAS;QACrB,6EAA6E;QAC7E,WAAW,EAAE,GAAG;QAChB,kBAAkB,EAAE,SAAS;QAC7B,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,uBAAuB;KACxE,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO;QACL,GAAG,OAAO,CAAC,GAAG;QACd,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,aAAa;QACrB,IAAI,EAAE,gBAAgB;QACtB,SAAS,EAAE,SAAS;QACpB,UAAU,EAAE,SAAS;KACtB,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,SAAiB;IAC7C,OAAO;QACL,GAAG,OAAO,CAAC,GAAG;QACd,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,aAAa;QACrB,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,GAAG;QAChB,kBAAkB,EAAE,SAAS;QAC7B,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,uBAAuB;KACxE,CAAC;AACJ,CAAC"}
@@ -1,11 +1,23 @@
1
1
  /**
2
- * @fileoverview Session Manager for coordinating multiple Claude sessions
2
+ * @fileoverview Session Manager for coordinating multiple Claude sessions.
3
3
  *
4
- * Provides lifecycle management for Claude CLI sessions:
5
- * - Session creation with working directory configuration
6
- * - Event forwarding from individual sessions
4
+ * Lifecycle management for Claude CLI sessions:
5
+ * - Session creation with working directory, concurrent session limits (mutex-guarded)
6
+ * - Event forwarding from individual sessions to subscribers
7
7
  * - State persistence via StateStore
8
- * - Concurrent session limits
8
+ * - Graceful shutdown of all sessions
9
+ *
10
+ * Key exports:
11
+ * - `SessionManager` class — coordinator, extends EventEmitter
12
+ * - `SessionManagerEvents` interface — typed event map
13
+ * - `getSessionManager()` — singleton accessor
14
+ *
15
+ * Key methods: `createSession(workingDir)`, `getSession(id)`, `getAllSessions()`,
16
+ * `removeSession(id)`, `stopAll()`
17
+ *
18
+ * @dependencies session (Session class), state-store (persistence), types (SessionState)
19
+ * @consumedby web/server, ralph-loop, respawn-controller
20
+ * @emits sessionStarted, sessionStopped, sessionError, sessionOutput, sessionCompletion
9
21
  *
10
22
  * @module session-manager
11
23
  */
@@ -1 +1 @@
1
- {"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../src/session-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,mDAAmD;IACnD,cAAc,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3C,sDAAsD;IACtD,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,+CAA+C;IAC/C,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzD,oDAAoD;IACpD,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3D,iDAAiD;IACjD,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAChE;AA4BD,qBAAa,cAAe,SAAQ,YAAY;IAC9C,OAAO,CAAC,QAAQ,CAAmC;IACnD,OAAO,CAAC,eAAe,CAA2C;IAClE,OAAO,CAAC,KAAK,CAAc;IAG3B,OAAO,CAAC,oBAAoB,CAA8B;IAE1D;;OAEG;;IAMH,OAAO,CAAC,aAAa;IAarB;;;;;;;OAOG;IACG,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAqEzD;;;;OAIG;IACG,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6B5C;;;OAGG;IACG,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAWtC;;;;OAIG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAI3C,gCAAgC;IAChC,cAAc,IAAI,OAAO,EAAE;IAI3B,yDAAyD;IACzD,eAAe,IAAI,OAAO,EAAE;IAI5B,qDAAqD;IACrD,eAAe,IAAI,OAAO,EAAE;IAI5B,yCAAyC;IACzC,eAAe,IAAI,MAAM;IAIzB,wCAAwC;IACxC,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAI/B,OAAO,CAAC,kBAAkB;IAI1B,qEAAqE;IACrE,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC;IAIjD;;;;;;OAMG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQpE,4CAA4C;IAC5C,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKlD,2CAA2C;IAC3C,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAIlD;AAKD;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,cAAc,CAKlD"}
1
+ {"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../src/session-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,mDAAmD;IACnD,cAAc,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3C,sDAAsD;IACtD,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,+CAA+C;IAC/C,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzD,oDAAoD;IACpD,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3D,iDAAiD;IACjD,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAChE;AA4BD,qBAAa,cAAe,SAAQ,YAAY;IAC9C,OAAO,CAAC,QAAQ,CAAmC;IACnD,OAAO,CAAC,eAAe,CAA2C;IAClE,OAAO,CAAC,KAAK,CAAc;IAG3B,OAAO,CAAC,oBAAoB,CAA8B;IAE1D;;OAEG;;IAMH,OAAO,CAAC,aAAa;IAarB;;;;;;;OAOG;IACG,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAqEzD;;;;OAIG;IACG,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6B5C;;;OAGG;IACG,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAWtC;;;;OAIG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAI3C,gCAAgC;IAChC,cAAc,IAAI,OAAO,EAAE;IAI3B,yDAAyD;IACzD,eAAe,IAAI,OAAO,EAAE;IAI5B,qDAAqD;IACrD,eAAe,IAAI,OAAO,EAAE;IAI5B,yCAAyC;IACzC,eAAe,IAAI,MAAM;IAIzB,wCAAwC;IACxC,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAI/B,OAAO,CAAC,kBAAkB;IAI1B,qEAAqE;IACrE,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC;IAIjD;;;;;;OAMG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQpE,4CAA4C;IAC5C,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKlD,2CAA2C;IAC3C,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAIlD;AAKD;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,cAAc,CAKlD"}
@@ -1,11 +1,23 @@
1
1
  /**
2
- * @fileoverview Session Manager for coordinating multiple Claude sessions
2
+ * @fileoverview Session Manager for coordinating multiple Claude sessions.
3
3
  *
4
- * Provides lifecycle management for Claude CLI sessions:
5
- * - Session creation with working directory configuration
6
- * - Event forwarding from individual sessions
4
+ * Lifecycle management for Claude CLI sessions:
5
+ * - Session creation with working directory, concurrent session limits (mutex-guarded)
6
+ * - Event forwarding from individual sessions to subscribers
7
7
  * - State persistence via StateStore
8
- * - Concurrent session limits
8
+ * - Graceful shutdown of all sessions
9
+ *
10
+ * Key exports:
11
+ * - `SessionManager` class — coordinator, extends EventEmitter
12
+ * - `SessionManagerEvents` interface — typed event map
13
+ * - `getSessionManager()` — singleton accessor
14
+ *
15
+ * Key methods: `createSession(workingDir)`, `getSession(id)`, `getAllSessions()`,
16
+ * `removeSession(id)`, `stopAll()`
17
+ *
18
+ * @dependencies session (Session class), state-store (persistence), types (SessionState)
19
+ * @consumedby web/server, ralph-loop, respawn-controller
20
+ * @emits sessionStarted, sessionStopped, sessionError, sessionOutput, sessionCompletion
9
21
  *
10
22
  * @module session-manager
11
23
  */
@@ -1 +1 @@
1
- {"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../src/session-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../src/session-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * @fileoverview LRU cache for task descriptions parsed from terminal output.
3
+ *
4
+ * Stores descriptions extracted from Claude Code's Task tool invocations
5
+ * (e.g., "Explore(Check files)") keyed by timestamp. Used to correlate
6
+ * with SubagentWatcher discoveries for better window titles.
7
+ *
8
+ * @module session-task-cache
9
+ */
10
+ /**
11
+ * LRU cache for task descriptions parsed from terminal output.
12
+ *
13
+ * Descriptions are keyed by the timestamp when they were parsed.
14
+ * Old entries are automatically cleaned up based on maxAgeMs.
15
+ * Size is bounded by the underlying LRUMap.
16
+ */
17
+ export declare class SessionTaskCache {
18
+ private readonly cache;
19
+ private readonly maxAgeMs;
20
+ constructor(maxSize?: number, maxAgeMs?: number);
21
+ /**
22
+ * Add a task description at the given timestamp.
23
+ */
24
+ add(timestamp: number, description: string): void;
25
+ /**
26
+ * Remove task descriptions older than maxAgeMs.
27
+ * LRUMap maintains insertion order, so we can break early
28
+ * once we find a non-expired entry.
29
+ */
30
+ private cleanupOld;
31
+ /**
32
+ * Get all recent task descriptions sorted by timestamp (most recent first).
33
+ */
34
+ getAll(): Array<{
35
+ timestamp: number;
36
+ description: string;
37
+ }>;
38
+ /**
39
+ * Find a task description that was parsed close to a given timestamp.
40
+ * Used to correlate with SubagentWatcher discoveries.
41
+ *
42
+ * @param subagentStartTime - The timestamp when the subagent was discovered
43
+ * @param maxAgeMs - Maximum age difference to consider (default 10 seconds)
44
+ * @returns The matching description or undefined
45
+ */
46
+ findNear(subagentStartTime: number, maxAgeMs?: number): string | undefined;
47
+ /**
48
+ * Clear all cached descriptions.
49
+ */
50
+ clear(): void;
51
+ }
52
+ //# sourceMappingURL=session-task-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-task-cache.d.ts","sourceRoot":"","sources":["../src/session-task-cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAUH;;;;;;GAMG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyB;IAC/C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEtB,OAAO,GAAE,MAAyB,EAAE,QAAQ,GAAE,MAA2B;IAKrF;;OAEG;IACH,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAIjD;;;;OAIG;IACH,OAAO,CAAC,UAAU;IAWlB;;OAEG;IACH,MAAM,IAAI,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAS3D;;;;;;;OAOG;IACH,QAAQ,CAAC,iBAAiB,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAc,GAAG,MAAM,GAAG,SAAS;IAiBjF;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd"}