claude-code-plus-plus 0.2.1 → 0.2.3

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 (376) hide show
  1. package/dist/sidebar/app.d.ts +2 -0
  2. package/dist/sidebar/app.d.ts.map +1 -1
  3. package/dist/sidebar/app.js +30 -3
  4. package/dist/sidebar/app.js.map +1 -1
  5. package/dist/sidebar/render.d.ts +4 -0
  6. package/dist/sidebar/render.d.ts.map +1 -1
  7. package/dist/sidebar/render.js +65 -0
  8. package/dist/sidebar/render.js.map +1 -1
  9. package/dist/types.d.ts +2 -1
  10. package/dist/types.d.ts.map +1 -1
  11. package/dist/types.js.map +1 -1
  12. package/package.json +1 -1
  13. package/dist/app.d.ts +0 -52
  14. package/dist/app.d.ts.map +0 -1
  15. package/dist/app.js +0 -318
  16. package/dist/app.js.map +0 -1
  17. package/dist/core/index.d.ts +0 -14
  18. package/dist/core/index.d.ts.map +0 -1
  19. package/dist/core/index.js +0 -14
  20. package/dist/core/index.js.map +0 -1
  21. package/dist/core/session/index.d.ts +0 -7
  22. package/dist/core/session/index.d.ts.map +0 -1
  23. package/dist/core/session/index.js +0 -6
  24. package/dist/core/session/index.js.map +0 -1
  25. package/dist/core/session/session-manager.d.ts +0 -46
  26. package/dist/core/session/session-manager.d.ts.map +0 -1
  27. package/dist/core/session/session-manager.js +0 -245
  28. package/dist/core/session/session-manager.js.map +0 -1
  29. package/dist/core/session/session.d.ts +0 -44
  30. package/dist/core/session/session.d.ts.map +0 -1
  31. package/dist/core/session/session.js +0 -78
  32. package/dist/core/session/session.js.map +0 -1
  33. package/dist/core/terminal/index.d.ts +0 -7
  34. package/dist/core/terminal/index.d.ts.map +0 -1
  35. package/dist/core/terminal/index.js +0 -6
  36. package/dist/core/terminal/index.js.map +0 -1
  37. package/dist/core/terminal/terminal-manager.d.ts +0 -36
  38. package/dist/core/terminal/terminal-manager.d.ts.map +0 -1
  39. package/dist/core/terminal/terminal-manager.js +0 -182
  40. package/dist/core/terminal/terminal-manager.js.map +0 -1
  41. package/dist/core/terminal/terminal.d.ts +0 -27
  42. package/dist/core/terminal/terminal.d.ts.map +0 -1
  43. package/dist/core/terminal/terminal.js +0 -38
  44. package/dist/core/terminal/terminal.js.map +0 -1
  45. package/dist/core/workspace/index.d.ts +0 -7
  46. package/dist/core/workspace/index.d.ts.map +0 -1
  47. package/dist/core/workspace/index.js +0 -6
  48. package/dist/core/workspace/index.js.map +0 -1
  49. package/dist/core/workspace/workspace-manager.d.ts +0 -59
  50. package/dist/core/workspace/workspace-manager.d.ts.map +0 -1
  51. package/dist/core/workspace/workspace-manager.js +0 -224
  52. package/dist/core/workspace/workspace-manager.js.map +0 -1
  53. package/dist/core/workspace/workspace.d.ts +0 -56
  54. package/dist/core/workspace/workspace.d.ts.map +0 -1
  55. package/dist/core/workspace/workspace.js +0 -96
  56. package/dist/core/workspace/workspace.js.map +0 -1
  57. package/dist/core/worktree/index.d.ts +0 -7
  58. package/dist/core/worktree/index.d.ts.map +0 -1
  59. package/dist/core/worktree/index.js +0 -6
  60. package/dist/core/worktree/index.js.map +0 -1
  61. package/dist/core/worktree/worktree-manager.d.ts +0 -47
  62. package/dist/core/worktree/worktree-manager.d.ts.map +0 -1
  63. package/dist/core/worktree/worktree-manager.js +0 -170
  64. package/dist/core/worktree/worktree-manager.js.map +0 -1
  65. package/dist/core/worktree/worktree.d.ts +0 -35
  66. package/dist/core/worktree/worktree.d.ts.map +0 -1
  67. package/dist/core/worktree/worktree.js +0 -50
  68. package/dist/core/worktree/worktree.js.map +0 -1
  69. package/dist/core/worktree-manager.d.ts +0 -26
  70. package/dist/core/worktree-manager.d.ts.map +0 -1
  71. package/dist/core/worktree-manager.js +0 -177
  72. package/dist/core/worktree-manager.js.map +0 -1
  73. package/dist/events/bus.d.ts +0 -76
  74. package/dist/events/bus.d.ts.map +0 -1
  75. package/dist/events/bus.js +0 -223
  76. package/dist/events/bus.js.map +0 -1
  77. package/dist/events/handlers/index.d.ts +0 -28
  78. package/dist/events/handlers/index.d.ts.map +0 -1
  79. package/dist/events/handlers/index.js +0 -44
  80. package/dist/events/handlers/index.js.map +0 -1
  81. package/dist/events/handlers/session-events.d.ts +0 -12
  82. package/dist/events/handlers/session-events.d.ts.map +0 -1
  83. package/dist/events/handlers/session-events.js +0 -38
  84. package/dist/events/handlers/session-events.js.map +0 -1
  85. package/dist/events/handlers/terminal-events.d.ts +0 -12
  86. package/dist/events/handlers/terminal-events.d.ts.map +0 -1
  87. package/dist/events/handlers/terminal-events.js +0 -37
  88. package/dist/events/handlers/terminal-events.js.map +0 -1
  89. package/dist/events/handlers/ui-events.d.ts +0 -11
  90. package/dist/events/handlers/ui-events.d.ts.map +0 -1
  91. package/dist/events/handlers/ui-events.js +0 -202
  92. package/dist/events/handlers/ui-events.js.map +0 -1
  93. package/dist/events/index.d.ts +0 -9
  94. package/dist/events/index.d.ts.map +0 -1
  95. package/dist/events/index.js +0 -10
  96. package/dist/events/index.js.map +0 -1
  97. package/dist/multiplexer/base.d.ts +0 -73
  98. package/dist/multiplexer/base.d.ts.map +0 -1
  99. package/dist/multiplexer/base.js +0 -68
  100. package/dist/multiplexer/base.js.map +0 -1
  101. package/dist/multiplexer/factory.d.ts +0 -28
  102. package/dist/multiplexer/factory.d.ts.map +0 -1
  103. package/dist/multiplexer/factory.js +0 -72
  104. package/dist/multiplexer/factory.js.map +0 -1
  105. package/dist/multiplexer/index.d.ts +0 -14
  106. package/dist/multiplexer/index.d.ts.map +0 -1
  107. package/dist/multiplexer/index.js +0 -15
  108. package/dist/multiplexer/index.js.map +0 -1
  109. package/dist/multiplexer/tmux/index.d.ts +0 -9
  110. package/dist/multiplexer/tmux/index.d.ts.map +0 -1
  111. package/dist/multiplexer/tmux/index.js +0 -7
  112. package/dist/multiplexer/tmux/index.js.map +0 -1
  113. package/dist/multiplexer/tmux/tmux-commands.d.ts +0 -96
  114. package/dist/multiplexer/tmux/tmux-commands.d.ts.map +0 -1
  115. package/dist/multiplexer/tmux/tmux-commands.js +0 -282
  116. package/dist/multiplexer/tmux/tmux-commands.js.map +0 -1
  117. package/dist/multiplexer/tmux/tmux-config.d.ts +0 -57
  118. package/dist/multiplexer/tmux/tmux-config.d.ts.map +0 -1
  119. package/dist/multiplexer/tmux/tmux-config.js +0 -103
  120. package/dist/multiplexer/tmux/tmux-config.js.map +0 -1
  121. package/dist/multiplexer/tmux/tmux-multiplexer.d.ts +0 -94
  122. package/dist/multiplexer/tmux/tmux-multiplexer.d.ts.map +0 -1
  123. package/dist/multiplexer/tmux/tmux-multiplexer.js +0 -302
  124. package/dist/multiplexer/tmux/tmux-multiplexer.js.map +0 -1
  125. package/dist/multiplexer/windows/index.d.ts +0 -5
  126. package/dist/multiplexer/windows/index.d.ts.map +0 -1
  127. package/dist/multiplexer/windows/index.js +0 -5
  128. package/dist/multiplexer/windows/index.js.map +0 -1
  129. package/dist/multiplexer/windows/windows-multiplexer.d.ts +0 -61
  130. package/dist/multiplexer/windows/windows-multiplexer.d.ts.map +0 -1
  131. package/dist/multiplexer/windows/windows-multiplexer.js +0 -151
  132. package/dist/multiplexer/windows/windows-multiplexer.js.map +0 -1
  133. package/dist/services/claude/claude-detector.d.ts +0 -37
  134. package/dist/services/claude/claude-detector.d.ts.map +0 -1
  135. package/dist/services/claude/claude-detector.js +0 -83
  136. package/dist/services/claude/claude-detector.js.map +0 -1
  137. package/dist/services/claude/claude-service.d.ts +0 -57
  138. package/dist/services/claude/claude-service.d.ts.map +0 -1
  139. package/dist/services/claude/claude-service.js +0 -108
  140. package/dist/services/claude/claude-service.js.map +0 -1
  141. package/dist/services/claude/index.d.ts +0 -7
  142. package/dist/services/claude/index.d.ts.map +0 -1
  143. package/dist/services/claude/index.js +0 -6
  144. package/dist/services/claude/index.js.map +0 -1
  145. package/dist/services/git/branch-service.d.ts +0 -64
  146. package/dist/services/git/branch-service.d.ts.map +0 -1
  147. package/dist/services/git/branch-service.js +0 -217
  148. package/dist/services/git/branch-service.js.map +0 -1
  149. package/dist/services/git/git-service.d.ts +0 -44
  150. package/dist/services/git/git-service.d.ts.map +0 -1
  151. package/dist/services/git/git-service.js +0 -145
  152. package/dist/services/git/git-service.js.map +0 -1
  153. package/dist/services/git/index.d.ts +0 -8
  154. package/dist/services/git/index.d.ts.map +0 -1
  155. package/dist/services/git/index.js +0 -7
  156. package/dist/services/git/index.js.map +0 -1
  157. package/dist/services/git/worktree-service.d.ts +0 -61
  158. package/dist/services/git/worktree-service.d.ts.map +0 -1
  159. package/dist/services/git/worktree-service.js +0 -243
  160. package/dist/services/git/worktree-service.js.map +0 -1
  161. package/dist/services/index.d.ts +0 -12
  162. package/dist/services/index.d.ts.map +0 -1
  163. package/dist/services/index.js +0 -12
  164. package/dist/services/index.js.map +0 -1
  165. package/dist/services/process/index.d.ts +0 -8
  166. package/dist/services/process/index.d.ts.map +0 -1
  167. package/dist/services/process/index.js +0 -6
  168. package/dist/services/process/index.js.map +0 -1
  169. package/dist/services/process/process-monitor.d.ts +0 -98
  170. package/dist/services/process/process-monitor.d.ts.map +0 -1
  171. package/dist/services/process/process-monitor.js +0 -173
  172. package/dist/services/process/process-monitor.js.map +0 -1
  173. package/dist/services/process/process-spawner.d.ts +0 -55
  174. package/dist/services/process/process-spawner.d.ts.map +0 -1
  175. package/dist/services/process/process-spawner.js +0 -93
  176. package/dist/services/process/process-spawner.js.map +0 -1
  177. package/dist/sidebar.d.ts +0 -13
  178. package/dist/sidebar.d.ts.map +0 -1
  179. package/dist/sidebar.js +0 -1535
  180. package/dist/sidebar.js.map +0 -1
  181. package/dist/state/actions.d.ts +0 -49
  182. package/dist/state/actions.d.ts.map +0 -1
  183. package/dist/state/actions.js +0 -512
  184. package/dist/state/actions.js.map +0 -1
  185. package/dist/state/index.d.ts +0 -16
  186. package/dist/state/index.d.ts.map +0 -1
  187. package/dist/state/index.js +0 -28
  188. package/dist/state/index.js.map +0 -1
  189. package/dist/state/middleware/index.d.ts +0 -7
  190. package/dist/state/middleware/index.d.ts.map +0 -1
  191. package/dist/state/middleware/index.js +0 -6
  192. package/dist/state/middleware/index.js.map +0 -1
  193. package/dist/state/middleware/logger.d.ts +0 -22
  194. package/dist/state/middleware/logger.d.ts.map +0 -1
  195. package/dist/state/middleware/logger.js +0 -45
  196. package/dist/state/middleware/logger.js.map +0 -1
  197. package/dist/state/middleware/persistence.d.ts +0 -29
  198. package/dist/state/middleware/persistence.d.ts.map +0 -1
  199. package/dist/state/middleware/persistence.js +0 -71
  200. package/dist/state/middleware/persistence.js.map +0 -1
  201. package/dist/state/persistence/file-adapter.d.ts +0 -48
  202. package/dist/state/persistence/file-adapter.d.ts.map +0 -1
  203. package/dist/state/persistence/file-adapter.js +0 -96
  204. package/dist/state/persistence/file-adapter.js.map +0 -1
  205. package/dist/state/persistence/index.d.ts +0 -8
  206. package/dist/state/persistence/index.d.ts.map +0 -1
  207. package/dist/state/persistence/index.js +0 -6
  208. package/dist/state/persistence/index.js.map +0 -1
  209. package/dist/state/persistence/serializer.d.ts +0 -41
  210. package/dist/state/persistence/serializer.d.ts.map +0 -1
  211. package/dist/state/persistence/serializer.js +0 -114
  212. package/dist/state/persistence/serializer.js.map +0 -1
  213. package/dist/state/selectors.d.ts +0 -67
  214. package/dist/state/selectors.d.ts.map +0 -1
  215. package/dist/state/selectors.js +0 -177
  216. package/dist/state/selectors.js.map +0 -1
  217. package/dist/state/store.d.ts +0 -86
  218. package/dist/state/store.d.ts.map +0 -1
  219. package/dist/state/store.js +0 -161
  220. package/dist/state/store.js.map +0 -1
  221. package/dist/state/types.d.ts +0 -269
  222. package/dist/state/types.d.ts.map +0 -1
  223. package/dist/state/types.js +0 -7
  224. package/dist/state/types.js.map +0 -1
  225. package/dist/state.d.ts +0 -53
  226. package/dist/state.d.ts.map +0 -1
  227. package/dist/state.js +0 -101
  228. package/dist/state.js.map +0 -1
  229. package/dist/terminal-manager.d.ts +0 -16
  230. package/dist/terminal-manager.d.ts.map +0 -1
  231. package/dist/terminal-manager.js +0 -364
  232. package/dist/terminal-manager.js.map +0 -1
  233. package/dist/tmux.d.ts +0 -163
  234. package/dist/tmux.d.ts.map +0 -1
  235. package/dist/tmux.js +0 -360
  236. package/dist/tmux.js.map +0 -1
  237. package/dist/types/config.d.ts +0 -103
  238. package/dist/types/config.d.ts.map +0 -1
  239. package/dist/types/config.js +0 -7
  240. package/dist/types/config.js.map +0 -1
  241. package/dist/types/entities.d.ts +0 -88
  242. package/dist/types/entities.d.ts.map +0 -1
  243. package/dist/types/entities.js +0 -8
  244. package/dist/types/entities.js.map +0 -1
  245. package/dist/types/events.d.ts +0 -156
  246. package/dist/types/events.d.ts.map +0 -1
  247. package/dist/types/events.js +0 -8
  248. package/dist/types/events.js.map +0 -1
  249. package/dist/types/index.d.ts +0 -11
  250. package/dist/types/index.d.ts.map +0 -1
  251. package/dist/types/index.js +0 -8
  252. package/dist/types/index.js.map +0 -1
  253. package/dist/types/multiplexer.d.ts +0 -238
  254. package/dist/types/multiplexer.d.ts.map +0 -1
  255. package/dist/types/multiplexer.js +0 -8
  256. package/dist/types/multiplexer.js.map +0 -1
  257. package/dist/ui/components/base.d.ts +0 -155
  258. package/dist/ui/components/base.d.ts.map +0 -1
  259. package/dist/ui/components/base.js +0 -269
  260. package/dist/ui/components/base.js.map +0 -1
  261. package/dist/ui/components/index.d.ts +0 -10
  262. package/dist/ui/components/index.d.ts.map +0 -1
  263. package/dist/ui/components/index.js +0 -10
  264. package/dist/ui/components/index.js.map +0 -1
  265. package/dist/ui/components/input-field.d.ts +0 -98
  266. package/dist/ui/components/input-field.d.ts.map +0 -1
  267. package/dist/ui/components/input-field.js +0 -274
  268. package/dist/ui/components/input-field.js.map +0 -1
  269. package/dist/ui/components/list.d.ts +0 -94
  270. package/dist/ui/components/list.d.ts.map +0 -1
  271. package/dist/ui/components/list.js +0 -294
  272. package/dist/ui/components/list.js.map +0 -1
  273. package/dist/ui/components/modal.d.ts +0 -83
  274. package/dist/ui/components/modal.d.ts.map +0 -1
  275. package/dist/ui/components/modal.js +0 -249
  276. package/dist/ui/components/modal.js.map +0 -1
  277. package/dist/ui/components/tabs.d.ts +0 -97
  278. package/dist/ui/components/tabs.d.ts.map +0 -1
  279. package/dist/ui/components/tabs.js +0 -252
  280. package/dist/ui/components/tabs.js.map +0 -1
  281. package/dist/ui/components/text.d.ts +0 -60
  282. package/dist/ui/components/text.d.ts.map +0 -1
  283. package/dist/ui/components/text.js +0 -224
  284. package/dist/ui/components/text.js.map +0 -1
  285. package/dist/ui/index.d.ts +0 -12
  286. package/dist/ui/index.d.ts.map +0 -1
  287. package/dist/ui/index.js +0 -18
  288. package/dist/ui/index.js.map +0 -1
  289. package/dist/ui/input/index.d.ts +0 -8
  290. package/dist/ui/input/index.d.ts.map +0 -1
  291. package/dist/ui/input/index.js +0 -8
  292. package/dist/ui/input/index.js.map +0 -1
  293. package/dist/ui/input/input-manager.d.ts +0 -83
  294. package/dist/ui/input/input-manager.d.ts.map +0 -1
  295. package/dist/ui/input/input-manager.js +0 -200
  296. package/dist/ui/input/input-manager.js.map +0 -1
  297. package/dist/ui/input/keybindings.d.ts +0 -47
  298. package/dist/ui/input/keybindings.d.ts.map +0 -1
  299. package/dist/ui/input/keybindings.js +0 -168
  300. package/dist/ui/input/keybindings.js.map +0 -1
  301. package/dist/ui/input/keyboard.d.ts +0 -24
  302. package/dist/ui/input/keyboard.d.ts.map +0 -1
  303. package/dist/ui/input/keyboard.js +0 -230
  304. package/dist/ui/input/keyboard.js.map +0 -1
  305. package/dist/ui/input/mouse.d.ts +0 -44
  306. package/dist/ui/input/mouse.d.ts.map +0 -1
  307. package/dist/ui/input/mouse.js +0 -161
  308. package/dist/ui/input/mouse.js.map +0 -1
  309. package/dist/ui/layout/box.d.ts +0 -63
  310. package/dist/ui/layout/box.d.ts.map +0 -1
  311. package/dist/ui/layout/box.js +0 -160
  312. package/dist/ui/layout/box.js.map +0 -1
  313. package/dist/ui/layout/constraints.d.ts +0 -77
  314. package/dist/ui/layout/constraints.d.ts.map +0 -1
  315. package/dist/ui/layout/constraints.js +0 -154
  316. package/dist/ui/layout/constraints.js.map +0 -1
  317. package/dist/ui/layout/flex.d.ts +0 -59
  318. package/dist/ui/layout/flex.d.ts.map +0 -1
  319. package/dist/ui/layout/flex.js +0 -163
  320. package/dist/ui/layout/flex.js.map +0 -1
  321. package/dist/ui/layout/index.d.ts +0 -7
  322. package/dist/ui/layout/index.d.ts.map +0 -1
  323. package/dist/ui/layout/index.js +0 -7
  324. package/dist/ui/layout/index.js.map +0 -1
  325. package/dist/ui/modals/delete-modal.d.ts +0 -27
  326. package/dist/ui/modals/delete-modal.d.ts.map +0 -1
  327. package/dist/ui/modals/delete-modal.js +0 -59
  328. package/dist/ui/modals/delete-modal.js.map +0 -1
  329. package/dist/ui/modals/index.d.ts +0 -7
  330. package/dist/ui/modals/index.d.ts.map +0 -1
  331. package/dist/ui/modals/index.js +0 -7
  332. package/dist/ui/modals/index.js.map +0 -1
  333. package/dist/ui/modals/input-modal.d.ts +0 -66
  334. package/dist/ui/modals/input-modal.d.ts.map +0 -1
  335. package/dist/ui/modals/input-modal.js +0 -185
  336. package/dist/ui/modals/input-modal.js.map +0 -1
  337. package/dist/ui/modals/quit-modal.d.ts +0 -30
  338. package/dist/ui/modals/quit-modal.d.ts.map +0 -1
  339. package/dist/ui/modals/quit-modal.js +0 -65
  340. package/dist/ui/modals/quit-modal.js.map +0 -1
  341. package/dist/ui/renderer/ansi.d.ts +0 -206
  342. package/dist/ui/renderer/ansi.d.ts.map +0 -1
  343. package/dist/ui/renderer/ansi.js +0 -318
  344. package/dist/ui/renderer/ansi.js.map +0 -1
  345. package/dist/ui/renderer/canvas.d.ts +0 -126
  346. package/dist/ui/renderer/canvas.d.ts.map +0 -1
  347. package/dist/ui/renderer/canvas.js +0 -346
  348. package/dist/ui/renderer/canvas.js.map +0 -1
  349. package/dist/ui/renderer/colors.d.ts +0 -65
  350. package/dist/ui/renderer/colors.d.ts.map +0 -1
  351. package/dist/ui/renderer/colors.js +0 -260
  352. package/dist/ui/renderer/colors.js.map +0 -1
  353. package/dist/ui/renderer/index.d.ts +0 -8
  354. package/dist/ui/renderer/index.d.ts.map +0 -1
  355. package/dist/ui/renderer/index.js +0 -8
  356. package/dist/ui/renderer/index.js.map +0 -1
  357. package/dist/ui/renderer/symbols.d.ts +0 -176
  358. package/dist/ui/renderer/symbols.d.ts.map +0 -1
  359. package/dist/ui/renderer/symbols.js +0 -246
  360. package/dist/ui/renderer/symbols.js.map +0 -1
  361. package/dist/ui/views/index.d.ts +0 -7
  362. package/dist/ui/views/index.d.ts.map +0 -1
  363. package/dist/ui/views/index.js +0 -7
  364. package/dist/ui/views/index.js.map +0 -1
  365. package/dist/ui/views/sidebar-view.d.ts +0 -89
  366. package/dist/ui/views/sidebar-view.d.ts.map +0 -1
  367. package/dist/ui/views/sidebar-view.js +0 -259
  368. package/dist/ui/views/sidebar-view.js.map +0 -1
  369. package/dist/ui/views/terminal-bar-view.d.ts +0 -67
  370. package/dist/ui/views/terminal-bar-view.d.ts.map +0 -1
  371. package/dist/ui/views/terminal-bar-view.js +0 -172
  372. package/dist/ui/views/terminal-bar-view.js.map +0 -1
  373. package/dist/ui/views/welcome-view.d.ts +0 -34
  374. package/dist/ui/views/welcome-view.d.ts.map +0 -1
  375. package/dist/ui/views/welcome-view.js +0 -116
  376. package/dist/ui/views/welcome-view.js.map +0 -1
@@ -1,245 +0,0 @@
1
- /**
2
- * Session Manager
3
- *
4
- * Manages the lifecycle of Claude Code sessions.
5
- */
6
- import { getLogger, SessionError } from '../../utils';
7
- import { getEventBus } from '../../events';
8
- import { getStore, actions } from '../../state';
9
- import { createSession, generateSessionTitle } from './session';
10
- import { getClaudeService } from '../../services';
11
- const logger = getLogger().child('session-manager');
12
- /**
13
- * Session manager class
14
- */
15
- export class SessionManager {
16
- multiplexer;
17
- constructor(multiplexer) {
18
- this.multiplexer = multiplexer;
19
- }
20
- /**
21
- * Create a new session for a worktree
22
- */
23
- async create(worktreeId, worktreePath, branch, options = {}) {
24
- const { title, existingPaneId, targetPaneId } = options;
25
- const store = getStore();
26
- const eventBus = getEventBus();
27
- // Count existing sessions for this worktree
28
- const state = store.getState();
29
- const worktree = state.workspace?.worktrees.find((wt) => wt.id === worktreeId);
30
- const sessionCount = (worktree?.sessions.length ?? 0) + 1;
31
- // Generate title
32
- const sessionTitle = title ?? generateSessionTitle(branch, sessionCount);
33
- logger.debug('Creating session', { worktreeId, title: sessionTitle });
34
- // Create pane for the session
35
- let mainPaneId;
36
- if (existingPaneId) {
37
- // Use existing pane
38
- mainPaneId = existingPaneId;
39
- }
40
- else if (targetPaneId) {
41
- // Split from target pane
42
- mainPaneId = await this.multiplexer.createPane({
43
- targetPaneId,
44
- orientation: 'horizontal',
45
- size: { percent: 75 },
46
- cwd: worktreePath,
47
- });
48
- }
49
- else {
50
- throw new SessionError('No pane specified for session');
51
- }
52
- // Create session entity
53
- const session = createSession({
54
- worktreeId,
55
- title: sessionTitle,
56
- mainPaneId,
57
- });
58
- // Run Claude in the pane
59
- const claudeService = getClaudeService();
60
- const command = claudeService.getStartCommand(worktreePath);
61
- await this.multiplexer.runCommand(mainPaneId, command);
62
- // Update state
63
- store.dispatch(actions.createSession(worktreeId, session));
64
- // Emit event
65
- eventBus.emit('session:created', { session });
66
- logger.debug('Session created', { sessionId: session.id });
67
- return session;
68
- }
69
- /**
70
- * Delete a session
71
- */
72
- async delete(sessionId) {
73
- const store = getStore();
74
- const eventBus = getEventBus();
75
- const state = store.getState();
76
- // Find the session
77
- let session;
78
- let worktreeId;
79
- for (const wt of state.workspace?.worktrees ?? []) {
80
- session = wt.sessions.find((s) => s.id === sessionId);
81
- if (session) {
82
- worktreeId = wt.id;
83
- break;
84
- }
85
- }
86
- if (!session || !worktreeId) {
87
- throw new SessionError('Session not found', { sessionId });
88
- }
89
- logger.debug('Deleting session', { sessionId });
90
- // Kill all terminal panes
91
- for (const terminal of session.terminals) {
92
- if (terminal.paneId) {
93
- try {
94
- await this.multiplexer.destroyPane(terminal.paneId);
95
- }
96
- catch {
97
- // Pane may already be gone
98
- }
99
- }
100
- }
101
- // Kill terminal manager pane
102
- if (session.panes.terminalManager) {
103
- try {
104
- await this.multiplexer.destroyPane(session.panes.terminalManager);
105
- }
106
- catch {
107
- // Pane may already be gone
108
- }
109
- }
110
- // Kill main pane
111
- if (session.panes.main) {
112
- try {
113
- await this.multiplexer.destroyPane(session.panes.main);
114
- }
115
- catch {
116
- // Pane may already be gone
117
- }
118
- }
119
- // Update state
120
- store.dispatch(actions.deleteSession(sessionId));
121
- // Emit event
122
- eventBus.emit('session:deleted', { sessionId, worktreeId });
123
- logger.debug('Session deleted', { sessionId });
124
- }
125
- /**
126
- * Switch to a session (make it visible)
127
- */
128
- async activate(sessionId, sidebarPaneId) {
129
- const store = getStore();
130
- const eventBus = getEventBus();
131
- const state = store.getState();
132
- // Find the session
133
- let session;
134
- for (const wt of state.workspace?.worktrees ?? []) {
135
- session = wt.sessions.find((s) => s.id === sessionId);
136
- if (session)
137
- break;
138
- }
139
- if (!session) {
140
- throw new SessionError('Session not found', { sessionId });
141
- }
142
- const previousSessionId = state.workspace?.activeSessionId ?? null;
143
- logger.debug('Activating session', { sessionId, previousSessionId });
144
- // Hide the currently active session's panes
145
- if (previousSessionId && previousSessionId !== sessionId) {
146
- await this.hideSession(previousSessionId);
147
- }
148
- // Show the new session's panes
149
- if (session.panes.main) {
150
- await this.multiplexer.showPane({
151
- paneId: session.panes.main,
152
- targetPaneId: sidebarPaneId,
153
- direction: 'right',
154
- size: { percent: 75 },
155
- });
156
- }
157
- // Update state
158
- store.dispatch(actions.activateSession(sessionId));
159
- // Emit event
160
- eventBus.emit('session:activated', { sessionId, previousSessionId });
161
- logger.debug('Session activated', { sessionId });
162
- }
163
- /**
164
- * Hide a session's panes (move to background)
165
- */
166
- async hideSession(sessionId) {
167
- const store = getStore();
168
- const state = store.getState();
169
- let session;
170
- for (const wt of state.workspace?.worktrees ?? []) {
171
- session = wt.sessions.find((s) => s.id === sessionId);
172
- if (session)
173
- break;
174
- }
175
- if (!session)
176
- return;
177
- // Hide terminal panes
178
- for (const terminal of session.terminals) {
179
- if (terminal.paneId) {
180
- try {
181
- await this.multiplexer.hidePane(terminal.paneId);
182
- }
183
- catch {
184
- // Ignore errors
185
- }
186
- }
187
- }
188
- // Hide terminal manager
189
- if (session.panes.terminalManager) {
190
- try {
191
- await this.multiplexer.hidePane(session.panes.terminalManager);
192
- }
193
- catch {
194
- // Ignore errors
195
- }
196
- }
197
- // Hide main pane
198
- if (session.panes.main) {
199
- try {
200
- await this.multiplexer.hidePane(session.panes.main);
201
- }
202
- catch {
203
- // Ignore errors
204
- }
205
- }
206
- }
207
- /**
208
- * Rename a session
209
- */
210
- rename(sessionId, title) {
211
- const store = getStore();
212
- const eventBus = getEventBus();
213
- const state = store.getState();
214
- // Find old title
215
- let oldTitle = '';
216
- for (const wt of state.workspace?.worktrees ?? []) {
217
- const session = wt.sessions.find((s) => s.id === sessionId);
218
- if (session) {
219
- oldTitle = session.title;
220
- break;
221
- }
222
- }
223
- logger.debug('Renaming session', { sessionId, oldTitle, newTitle: title });
224
- store.dispatch(actions.renameSession(sessionId, title));
225
- eventBus.emit('session:renamed', {
226
- sessionId,
227
- oldTitle,
228
- newTitle: title,
229
- });
230
- }
231
- /**
232
- * Update session pane IDs
233
- */
234
- updatePanes(sessionId, panes) {
235
- const store = getStore();
236
- store.dispatch(actions.updateSession(sessionId, { panes: panes }));
237
- }
238
- }
239
- /**
240
- * Create a session manager
241
- */
242
- export function createSessionManager(multiplexer) {
243
- return new SessionManager(multiplexer);
244
- }
245
- //# sourceMappingURL=session-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../../../src/core/session/session-manager.ts"],"names":[],"mappings":"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"}
@@ -1,44 +0,0 @@
1
- /**
2
- * Session Entity
3
- *
4
- * Factory functions for creating Session objects.
5
- */
6
- import type { Session, Terminal } from '../../types';
7
- /**
8
- * Options for creating a new session
9
- */
10
- export interface CreateSessionOptions {
11
- worktreeId: string;
12
- title?: string;
13
- mainPaneId?: string;
14
- terminalManagerPaneId?: string;
15
- }
16
- /**
17
- * Create a new session
18
- */
19
- export declare function createSession(options: CreateSessionOptions): Session;
20
- /**
21
- * Generate a default session title based on worktree branch and count
22
- */
23
- export declare function generateSessionTitle(branch: string, sessionNumber: number): string;
24
- /**
25
- * Clone a session with a new ID
26
- */
27
- export declare function cloneSession(session: Session, overrides?: Partial<Session>): Session;
28
- /**
29
- * Check if a session has terminals
30
- */
31
- export declare function hasTerminals(session: Session): boolean;
32
- /**
33
- * Get the active terminal from a session
34
- */
35
- export declare function getActiveTerminal(session: Session): Terminal | undefined;
36
- /**
37
- * Get terminal by index
38
- */
39
- export declare function getTerminalByIndex(session: Session, index: number): Terminal | undefined;
40
- /**
41
- * Get terminal by ID
42
- */
43
- export declare function getTerminalById(session: Session, terminalId: string): Terminal | undefined;
44
- //# sourceMappingURL=session.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/core/session/session.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGrD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAepE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAKlF;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,OAAO,EAChB,SAAS,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GAC3B,OAAO,CAaT;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAEtD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,CAKxE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,GACZ,QAAQ,GAAG,SAAS,CAEtB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,GACjB,QAAQ,GAAG,SAAS,CAEtB"}
@@ -1,78 +0,0 @@
1
- /**
2
- * Session Entity
3
- *
4
- * Factory functions for creating Session objects.
5
- */
6
- import { generateId } from '../../utils';
7
- /**
8
- * Create a new session
9
- */
10
- export function createSession(options) {
11
- const { worktreeId, title, mainPaneId, terminalManagerPaneId } = options;
12
- return {
13
- id: generateId(8),
14
- worktreeId,
15
- title: title ?? 'Session',
16
- createdAt: new Date(),
17
- panes: {
18
- main: mainPaneId ?? null,
19
- terminalManager: terminalManagerPaneId ?? null,
20
- },
21
- terminals: [],
22
- activeTerminalIndex: 0,
23
- };
24
- }
25
- /**
26
- * Generate a default session title based on worktree branch and count
27
- */
28
- export function generateSessionTitle(branch, sessionNumber) {
29
- if (sessionNumber === 1) {
30
- return branch;
31
- }
32
- return `${sessionNumber}: ${branch}`;
33
- }
34
- /**
35
- * Clone a session with a new ID
36
- */
37
- export function cloneSession(session, overrides) {
38
- return {
39
- ...session,
40
- id: generateId(8),
41
- createdAt: new Date(),
42
- terminals: [],
43
- activeTerminalIndex: 0,
44
- panes: {
45
- main: null,
46
- terminalManager: null,
47
- },
48
- ...overrides,
49
- };
50
- }
51
- /**
52
- * Check if a session has terminals
53
- */
54
- export function hasTerminals(session) {
55
- return session.terminals.length > 0;
56
- }
57
- /**
58
- * Get the active terminal from a session
59
- */
60
- export function getActiveTerminal(session) {
61
- if (session.terminals.length === 0) {
62
- return undefined;
63
- }
64
- return session.terminals[session.activeTerminalIndex];
65
- }
66
- /**
67
- * Get terminal by index
68
- */
69
- export function getTerminalByIndex(session, index) {
70
- return session.terminals[index];
71
- }
72
- /**
73
- * Get terminal by ID
74
- */
75
- export function getTerminalById(session, terminalId) {
76
- return session.terminals.find((t) => t.id === terminalId);
77
- }
78
- //# sourceMappingURL=session.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/core/session/session.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAYzC;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,OAA6B;IACzD,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,qBAAqB,EAAE,GAAG,OAAO,CAAC;IAEzE,OAAO;QACL,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;QACjB,UAAU;QACV,KAAK,EAAE,KAAK,IAAI,SAAS;QACzB,SAAS,EAAE,IAAI,IAAI,EAAE;QACrB,KAAK,EAAE;YACL,IAAI,EAAE,UAAU,IAAI,IAAI;YACxB,eAAe,EAAE,qBAAqB,IAAI,IAAI;SAC/C;QACD,SAAS,EAAE,EAAE;QACb,mBAAmB,EAAE,CAAC;KACvB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAc,EAAE,aAAqB;IACxE,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,GAAG,aAAa,KAAK,MAAM,EAAE,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAC1B,OAAgB,EAChB,SAA4B;IAE5B,OAAO;QACL,GAAG,OAAO;QACV,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;QACjB,SAAS,EAAE,IAAI,IAAI,EAAE;QACrB,SAAS,EAAE,EAAE;QACb,mBAAmB,EAAE,CAAC;QACtB,KAAK,EAAE;YACL,IAAI,EAAE,IAAI;YACV,eAAe,EAAE,IAAI;SACtB;QACD,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC3C,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAgB;IAChD,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;AACxD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAgB,EAChB,KAAa;IAEb,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,OAAgB,EAChB,UAAkB;IAElB,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;AAC5D,CAAC"}
@@ -1,7 +0,0 @@
1
- /**
2
- * Terminal Module
3
- */
4
- export { createTerminal, generateTerminalTitle, cloneTerminal, } from './terminal';
5
- export type { CreateTerminalOptions } from './terminal';
6
- export { TerminalManager, createTerminalManager } from './terminal-manager';
7
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/terminal/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Terminal Module
3
- */
4
- export { createTerminal, generateTerminalTitle, cloneTerminal, } from './terminal';
5
- export { TerminalManager, createTerminalManager } from './terminal-manager';
6
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/terminal/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,aAAa,GACd,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -1,36 +0,0 @@
1
- /**
2
- * Terminal Manager
3
- *
4
- * Manages the lifecycle of terminal panes within sessions.
5
- */
6
- import type { Terminal, IMultiplexer } from '../../types';
7
- /**
8
- * Terminal manager class
9
- */
10
- export declare class TerminalManager {
11
- private multiplexer;
12
- constructor(multiplexer: IMultiplexer);
13
- /**
14
- * Create a new terminal for a session
15
- */
16
- create(sessionId: string, worktreePath: string, options?: {
17
- title?: string;
18
- }): Promise<Terminal>;
19
- /**
20
- * Delete a terminal
21
- */
22
- delete(sessionId: string, terminalId: string): Promise<void>;
23
- /**
24
- * Switch to a terminal
25
- */
26
- activate(sessionId: string, terminalIndex: number, targetPaneId: string): Promise<void>;
27
- /**
28
- * Rename a terminal
29
- */
30
- rename(sessionId: string, terminalId: string, title: string): void;
31
- }
32
- /**
33
- * Create a terminal manager
34
- */
35
- export declare function createTerminalManager(multiplexer: IMultiplexer): TerminalManager;
36
- //# sourceMappingURL=terminal-manager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"terminal-manager.d.ts","sourceRoot":"","sources":["../../../src/core/terminal/terminal-manager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAW,YAAY,EAAE,MAAM,aAAa,CAAC;AAQnE;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,WAAW,CAAe;gBAEtB,WAAW,EAAE,YAAY;IAIrC;;OAEG;IACG,MAAM,CACV,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,OAAO,GAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;KACX,GACL,OAAO,CAAC,QAAQ,CAAC;IAqEpB;;OAEG;IACG,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgDlE;;OAEG;IACG,QAAQ,CACZ,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC;IA6ChB;;OAEG;IACH,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;CAmBnE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,YAAY,GAAG,eAAe,CAEhF"}
@@ -1,182 +0,0 @@
1
- /**
2
- * Terminal Manager
3
- *
4
- * Manages the lifecycle of terminal panes within sessions.
5
- */
6
- import { getLogger, TerminalError } from '../../utils';
7
- import { getEventBus } from '../../events';
8
- import { getStore, actions, selectSessionById } from '../../state';
9
- import { createTerminal, generateTerminalTitle } from './terminal';
10
- const logger = getLogger().child('terminal-manager');
11
- /**
12
- * Terminal manager class
13
- */
14
- export class TerminalManager {
15
- multiplexer;
16
- constructor(multiplexer) {
17
- this.multiplexer = multiplexer;
18
- }
19
- /**
20
- * Create a new terminal for a session
21
- */
22
- async create(sessionId, worktreePath, options = {}) {
23
- const store = getStore();
24
- const eventBus = getEventBus();
25
- const state = store.getState();
26
- // Find session
27
- const session = selectSessionById(state, sessionId);
28
- if (!session) {
29
- throw new TerminalError('Session not found', { terminalId: sessionId });
30
- }
31
- const terminalNumber = session.terminals.length + 1;
32
- const title = options.title ?? generateTerminalTitle(terminalNumber);
33
- logger.debug('Creating terminal', { sessionId, title });
34
- // Determine where to split from
35
- let targetPaneId = null;
36
- if (session.terminals.length === 0) {
37
- // First terminal - split from main pane
38
- targetPaneId = session.panes.main;
39
- }
40
- else {
41
- // Additional terminal - split from current active terminal
42
- const activeTerminal = session.terminals[session.activeTerminalIndex];
43
- targetPaneId = activeTerminal?.paneId ?? session.panes.main;
44
- }
45
- if (!targetPaneId) {
46
- throw new TerminalError('No pane available to split from');
47
- }
48
- // Create the terminal pane
49
- const paneId = await this.multiplexer.createPane({
50
- targetPaneId,
51
- orientation: 'vertical',
52
- size: session.terminals.length === 0 ? { percent: 30 } : { percent: 50 },
53
- cwd: worktreePath,
54
- });
55
- // Create terminal entity
56
- const terminal = createTerminal({
57
- sessionId,
58
- title,
59
- paneId,
60
- });
61
- // If this is not the first terminal, hide the previously active one
62
- if (session.terminals.length > 0) {
63
- const activeTerminal = session.terminals[session.activeTerminalIndex];
64
- if (activeTerminal?.paneId) {
65
- await this.multiplexer.hidePane(activeTerminal.paneId);
66
- }
67
- }
68
- // Update state
69
- store.dispatch(actions.createTerminal(sessionId, terminal));
70
- store.dispatch(actions.activateTerminal(sessionId, session.terminals.length));
71
- // Emit event
72
- eventBus.emit('terminal:created', { terminal, sessionId });
73
- logger.debug('Terminal created', { terminalId: terminal.id });
74
- return terminal;
75
- }
76
- /**
77
- * Delete a terminal
78
- */
79
- async delete(sessionId, terminalId) {
80
- const store = getStore();
81
- const eventBus = getEventBus();
82
- const state = store.getState();
83
- // Find session and terminal
84
- const session = selectSessionById(state, sessionId);
85
- if (!session) {
86
- throw new TerminalError('Session not found');
87
- }
88
- const terminalIndex = session.terminals.findIndex((t) => t.id === terminalId);
89
- const terminal = session.terminals[terminalIndex];
90
- if (!terminal) {
91
- throw new TerminalError('Terminal not found', { terminalId });
92
- }
93
- logger.debug('Deleting terminal', { sessionId, terminalId });
94
- // Kill the pane
95
- if (terminal.paneId) {
96
- try {
97
- await this.multiplexer.destroyPane(terminal.paneId);
98
- }
99
- catch {
100
- // Pane may already be gone
101
- }
102
- }
103
- // If deleting the active terminal, switch to another one
104
- if (terminalIndex === session.activeTerminalIndex && session.terminals.length > 1) {
105
- const newIndex = terminalIndex === 0 ? 1 : terminalIndex - 1;
106
- const newTerminal = session.terminals[newIndex];
107
- if (newTerminal?.paneId) {
108
- // Show the new terminal
109
- // This will be handled after state update
110
- }
111
- }
112
- // Update state
113
- store.dispatch(actions.deleteTerminal(sessionId, terminalId));
114
- // Emit event
115
- eventBus.emit('terminal:deleted', { terminalId, sessionId });
116
- logger.debug('Terminal deleted', { terminalId });
117
- }
118
- /**
119
- * Switch to a terminal
120
- */
121
- async activate(sessionId, terminalIndex, targetPaneId) {
122
- const store = getStore();
123
- const eventBus = getEventBus();
124
- const state = store.getState();
125
- const session = selectSessionById(state, sessionId);
126
- if (!session) {
127
- throw new TerminalError('Session not found');
128
- }
129
- const terminal = session.terminals[terminalIndex];
130
- if (!terminal) {
131
- throw new TerminalError('Terminal not found');
132
- }
133
- const previousIndex = session.activeTerminalIndex;
134
- const previousTerminal = session.terminals[previousIndex];
135
- logger.debug('Activating terminal', { sessionId, terminalIndex });
136
- // Hide the current terminal
137
- if (previousTerminal?.paneId && previousIndex !== terminalIndex) {
138
- await this.multiplexer.hidePane(previousTerminal.paneId);
139
- }
140
- // Show the new terminal
141
- if (terminal.paneId) {
142
- await this.multiplexer.showPane({
143
- paneId: terminal.paneId,
144
- targetPaneId,
145
- direction: 'down',
146
- });
147
- }
148
- // Update state
149
- store.dispatch(actions.activateTerminal(sessionId, terminalIndex));
150
- // Emit event
151
- eventBus.emit('terminal:activated', {
152
- terminalId: terminal.id,
153
- sessionId,
154
- previousTerminalId: previousTerminal?.id ?? null,
155
- });
156
- }
157
- /**
158
- * Rename a terminal
159
- */
160
- rename(sessionId, terminalId, title) {
161
- const store = getStore();
162
- const eventBus = getEventBus();
163
- const state = store.getState();
164
- const session = selectSessionById(state, sessionId);
165
- const terminal = session?.terminals.find((t) => t.id === terminalId);
166
- const oldTitle = terminal?.title ?? '';
167
- logger.debug('Renaming terminal', { terminalId, oldTitle, newTitle: title });
168
- store.dispatch(actions.renameTerminal(sessionId, terminalId, title));
169
- eventBus.emit('terminal:renamed', {
170
- terminalId,
171
- oldTitle,
172
- newTitle: title,
173
- });
174
- }
175
- }
176
- /**
177
- * Create a terminal manager
178
- */
179
- export function createTerminalManager(multiplexer) {
180
- return new TerminalManager(multiplexer);
181
- }
182
- //# sourceMappingURL=terminal-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"terminal-manager.js","sourceRoot":"","sources":["../../../src/core/terminal/terminal-manager.ts"],"names":[],"mappings":"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"}