claude-code-plus-plus 0.2.1 → 0.2.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 (365) hide show
  1. package/package.json +1 -1
  2. package/dist/app.d.ts +0 -52
  3. package/dist/app.d.ts.map +0 -1
  4. package/dist/app.js +0 -318
  5. package/dist/app.js.map +0 -1
  6. package/dist/core/index.d.ts +0 -14
  7. package/dist/core/index.d.ts.map +0 -1
  8. package/dist/core/index.js +0 -14
  9. package/dist/core/index.js.map +0 -1
  10. package/dist/core/session/index.d.ts +0 -7
  11. package/dist/core/session/index.d.ts.map +0 -1
  12. package/dist/core/session/index.js +0 -6
  13. package/dist/core/session/index.js.map +0 -1
  14. package/dist/core/session/session-manager.d.ts +0 -46
  15. package/dist/core/session/session-manager.d.ts.map +0 -1
  16. package/dist/core/session/session-manager.js +0 -245
  17. package/dist/core/session/session-manager.js.map +0 -1
  18. package/dist/core/session/session.d.ts +0 -44
  19. package/dist/core/session/session.d.ts.map +0 -1
  20. package/dist/core/session/session.js +0 -78
  21. package/dist/core/session/session.js.map +0 -1
  22. package/dist/core/terminal/index.d.ts +0 -7
  23. package/dist/core/terminal/index.d.ts.map +0 -1
  24. package/dist/core/terminal/index.js +0 -6
  25. package/dist/core/terminal/index.js.map +0 -1
  26. package/dist/core/terminal/terminal-manager.d.ts +0 -36
  27. package/dist/core/terminal/terminal-manager.d.ts.map +0 -1
  28. package/dist/core/terminal/terminal-manager.js +0 -182
  29. package/dist/core/terminal/terminal-manager.js.map +0 -1
  30. package/dist/core/terminal/terminal.d.ts +0 -27
  31. package/dist/core/terminal/terminal.d.ts.map +0 -1
  32. package/dist/core/terminal/terminal.js +0 -38
  33. package/dist/core/terminal/terminal.js.map +0 -1
  34. package/dist/core/workspace/index.d.ts +0 -7
  35. package/dist/core/workspace/index.d.ts.map +0 -1
  36. package/dist/core/workspace/index.js +0 -6
  37. package/dist/core/workspace/index.js.map +0 -1
  38. package/dist/core/workspace/workspace-manager.d.ts +0 -59
  39. package/dist/core/workspace/workspace-manager.d.ts.map +0 -1
  40. package/dist/core/workspace/workspace-manager.js +0 -224
  41. package/dist/core/workspace/workspace-manager.js.map +0 -1
  42. package/dist/core/workspace/workspace.d.ts +0 -56
  43. package/dist/core/workspace/workspace.d.ts.map +0 -1
  44. package/dist/core/workspace/workspace.js +0 -96
  45. package/dist/core/workspace/workspace.js.map +0 -1
  46. package/dist/core/worktree/index.d.ts +0 -7
  47. package/dist/core/worktree/index.d.ts.map +0 -1
  48. package/dist/core/worktree/index.js +0 -6
  49. package/dist/core/worktree/index.js.map +0 -1
  50. package/dist/core/worktree/worktree-manager.d.ts +0 -47
  51. package/dist/core/worktree/worktree-manager.d.ts.map +0 -1
  52. package/dist/core/worktree/worktree-manager.js +0 -170
  53. package/dist/core/worktree/worktree-manager.js.map +0 -1
  54. package/dist/core/worktree/worktree.d.ts +0 -35
  55. package/dist/core/worktree/worktree.d.ts.map +0 -1
  56. package/dist/core/worktree/worktree.js +0 -50
  57. package/dist/core/worktree/worktree.js.map +0 -1
  58. package/dist/core/worktree-manager.d.ts +0 -26
  59. package/dist/core/worktree-manager.d.ts.map +0 -1
  60. package/dist/core/worktree-manager.js +0 -177
  61. package/dist/core/worktree-manager.js.map +0 -1
  62. package/dist/events/bus.d.ts +0 -76
  63. package/dist/events/bus.d.ts.map +0 -1
  64. package/dist/events/bus.js +0 -223
  65. package/dist/events/bus.js.map +0 -1
  66. package/dist/events/handlers/index.d.ts +0 -28
  67. package/dist/events/handlers/index.d.ts.map +0 -1
  68. package/dist/events/handlers/index.js +0 -44
  69. package/dist/events/handlers/index.js.map +0 -1
  70. package/dist/events/handlers/session-events.d.ts +0 -12
  71. package/dist/events/handlers/session-events.d.ts.map +0 -1
  72. package/dist/events/handlers/session-events.js +0 -38
  73. package/dist/events/handlers/session-events.js.map +0 -1
  74. package/dist/events/handlers/terminal-events.d.ts +0 -12
  75. package/dist/events/handlers/terminal-events.d.ts.map +0 -1
  76. package/dist/events/handlers/terminal-events.js +0 -37
  77. package/dist/events/handlers/terminal-events.js.map +0 -1
  78. package/dist/events/handlers/ui-events.d.ts +0 -11
  79. package/dist/events/handlers/ui-events.d.ts.map +0 -1
  80. package/dist/events/handlers/ui-events.js +0 -202
  81. package/dist/events/handlers/ui-events.js.map +0 -1
  82. package/dist/events/index.d.ts +0 -9
  83. package/dist/events/index.d.ts.map +0 -1
  84. package/dist/events/index.js +0 -10
  85. package/dist/events/index.js.map +0 -1
  86. package/dist/multiplexer/base.d.ts +0 -73
  87. package/dist/multiplexer/base.d.ts.map +0 -1
  88. package/dist/multiplexer/base.js +0 -68
  89. package/dist/multiplexer/base.js.map +0 -1
  90. package/dist/multiplexer/factory.d.ts +0 -28
  91. package/dist/multiplexer/factory.d.ts.map +0 -1
  92. package/dist/multiplexer/factory.js +0 -72
  93. package/dist/multiplexer/factory.js.map +0 -1
  94. package/dist/multiplexer/index.d.ts +0 -14
  95. package/dist/multiplexer/index.d.ts.map +0 -1
  96. package/dist/multiplexer/index.js +0 -15
  97. package/dist/multiplexer/index.js.map +0 -1
  98. package/dist/multiplexer/tmux/index.d.ts +0 -9
  99. package/dist/multiplexer/tmux/index.d.ts.map +0 -1
  100. package/dist/multiplexer/tmux/index.js +0 -7
  101. package/dist/multiplexer/tmux/index.js.map +0 -1
  102. package/dist/multiplexer/tmux/tmux-commands.d.ts +0 -96
  103. package/dist/multiplexer/tmux/tmux-commands.d.ts.map +0 -1
  104. package/dist/multiplexer/tmux/tmux-commands.js +0 -282
  105. package/dist/multiplexer/tmux/tmux-commands.js.map +0 -1
  106. package/dist/multiplexer/tmux/tmux-config.d.ts +0 -57
  107. package/dist/multiplexer/tmux/tmux-config.d.ts.map +0 -1
  108. package/dist/multiplexer/tmux/tmux-config.js +0 -103
  109. package/dist/multiplexer/tmux/tmux-config.js.map +0 -1
  110. package/dist/multiplexer/tmux/tmux-multiplexer.d.ts +0 -94
  111. package/dist/multiplexer/tmux/tmux-multiplexer.d.ts.map +0 -1
  112. package/dist/multiplexer/tmux/tmux-multiplexer.js +0 -302
  113. package/dist/multiplexer/tmux/tmux-multiplexer.js.map +0 -1
  114. package/dist/multiplexer/windows/index.d.ts +0 -5
  115. package/dist/multiplexer/windows/index.d.ts.map +0 -1
  116. package/dist/multiplexer/windows/index.js +0 -5
  117. package/dist/multiplexer/windows/index.js.map +0 -1
  118. package/dist/multiplexer/windows/windows-multiplexer.d.ts +0 -61
  119. package/dist/multiplexer/windows/windows-multiplexer.d.ts.map +0 -1
  120. package/dist/multiplexer/windows/windows-multiplexer.js +0 -151
  121. package/dist/multiplexer/windows/windows-multiplexer.js.map +0 -1
  122. package/dist/services/claude/claude-detector.d.ts +0 -37
  123. package/dist/services/claude/claude-detector.d.ts.map +0 -1
  124. package/dist/services/claude/claude-detector.js +0 -83
  125. package/dist/services/claude/claude-detector.js.map +0 -1
  126. package/dist/services/claude/claude-service.d.ts +0 -57
  127. package/dist/services/claude/claude-service.d.ts.map +0 -1
  128. package/dist/services/claude/claude-service.js +0 -108
  129. package/dist/services/claude/claude-service.js.map +0 -1
  130. package/dist/services/claude/index.d.ts +0 -7
  131. package/dist/services/claude/index.d.ts.map +0 -1
  132. package/dist/services/claude/index.js +0 -6
  133. package/dist/services/claude/index.js.map +0 -1
  134. package/dist/services/git/branch-service.d.ts +0 -64
  135. package/dist/services/git/branch-service.d.ts.map +0 -1
  136. package/dist/services/git/branch-service.js +0 -217
  137. package/dist/services/git/branch-service.js.map +0 -1
  138. package/dist/services/git/git-service.d.ts +0 -44
  139. package/dist/services/git/git-service.d.ts.map +0 -1
  140. package/dist/services/git/git-service.js +0 -145
  141. package/dist/services/git/git-service.js.map +0 -1
  142. package/dist/services/git/index.d.ts +0 -8
  143. package/dist/services/git/index.d.ts.map +0 -1
  144. package/dist/services/git/index.js +0 -7
  145. package/dist/services/git/index.js.map +0 -1
  146. package/dist/services/git/worktree-service.d.ts +0 -61
  147. package/dist/services/git/worktree-service.d.ts.map +0 -1
  148. package/dist/services/git/worktree-service.js +0 -243
  149. package/dist/services/git/worktree-service.js.map +0 -1
  150. package/dist/services/index.d.ts +0 -12
  151. package/dist/services/index.d.ts.map +0 -1
  152. package/dist/services/index.js +0 -12
  153. package/dist/services/index.js.map +0 -1
  154. package/dist/services/process/index.d.ts +0 -8
  155. package/dist/services/process/index.d.ts.map +0 -1
  156. package/dist/services/process/index.js +0 -6
  157. package/dist/services/process/index.js.map +0 -1
  158. package/dist/services/process/process-monitor.d.ts +0 -98
  159. package/dist/services/process/process-monitor.d.ts.map +0 -1
  160. package/dist/services/process/process-monitor.js +0 -173
  161. package/dist/services/process/process-monitor.js.map +0 -1
  162. package/dist/services/process/process-spawner.d.ts +0 -55
  163. package/dist/services/process/process-spawner.d.ts.map +0 -1
  164. package/dist/services/process/process-spawner.js +0 -93
  165. package/dist/services/process/process-spawner.js.map +0 -1
  166. package/dist/sidebar.d.ts +0 -13
  167. package/dist/sidebar.d.ts.map +0 -1
  168. package/dist/sidebar.js +0 -1535
  169. package/dist/sidebar.js.map +0 -1
  170. package/dist/state/actions.d.ts +0 -49
  171. package/dist/state/actions.d.ts.map +0 -1
  172. package/dist/state/actions.js +0 -512
  173. package/dist/state/actions.js.map +0 -1
  174. package/dist/state/index.d.ts +0 -16
  175. package/dist/state/index.d.ts.map +0 -1
  176. package/dist/state/index.js +0 -28
  177. package/dist/state/index.js.map +0 -1
  178. package/dist/state/middleware/index.d.ts +0 -7
  179. package/dist/state/middleware/index.d.ts.map +0 -1
  180. package/dist/state/middleware/index.js +0 -6
  181. package/dist/state/middleware/index.js.map +0 -1
  182. package/dist/state/middleware/logger.d.ts +0 -22
  183. package/dist/state/middleware/logger.d.ts.map +0 -1
  184. package/dist/state/middleware/logger.js +0 -45
  185. package/dist/state/middleware/logger.js.map +0 -1
  186. package/dist/state/middleware/persistence.d.ts +0 -29
  187. package/dist/state/middleware/persistence.d.ts.map +0 -1
  188. package/dist/state/middleware/persistence.js +0 -71
  189. package/dist/state/middleware/persistence.js.map +0 -1
  190. package/dist/state/persistence/file-adapter.d.ts +0 -48
  191. package/dist/state/persistence/file-adapter.d.ts.map +0 -1
  192. package/dist/state/persistence/file-adapter.js +0 -96
  193. package/dist/state/persistence/file-adapter.js.map +0 -1
  194. package/dist/state/persistence/index.d.ts +0 -8
  195. package/dist/state/persistence/index.d.ts.map +0 -1
  196. package/dist/state/persistence/index.js +0 -6
  197. package/dist/state/persistence/index.js.map +0 -1
  198. package/dist/state/persistence/serializer.d.ts +0 -41
  199. package/dist/state/persistence/serializer.d.ts.map +0 -1
  200. package/dist/state/persistence/serializer.js +0 -114
  201. package/dist/state/persistence/serializer.js.map +0 -1
  202. package/dist/state/selectors.d.ts +0 -67
  203. package/dist/state/selectors.d.ts.map +0 -1
  204. package/dist/state/selectors.js +0 -177
  205. package/dist/state/selectors.js.map +0 -1
  206. package/dist/state/store.d.ts +0 -86
  207. package/dist/state/store.d.ts.map +0 -1
  208. package/dist/state/store.js +0 -161
  209. package/dist/state/store.js.map +0 -1
  210. package/dist/state/types.d.ts +0 -269
  211. package/dist/state/types.d.ts.map +0 -1
  212. package/dist/state/types.js +0 -7
  213. package/dist/state/types.js.map +0 -1
  214. package/dist/state.d.ts +0 -53
  215. package/dist/state.d.ts.map +0 -1
  216. package/dist/state.js +0 -101
  217. package/dist/state.js.map +0 -1
  218. package/dist/terminal-manager.d.ts +0 -16
  219. package/dist/terminal-manager.d.ts.map +0 -1
  220. package/dist/terminal-manager.js +0 -364
  221. package/dist/terminal-manager.js.map +0 -1
  222. package/dist/tmux.d.ts +0 -163
  223. package/dist/tmux.d.ts.map +0 -1
  224. package/dist/tmux.js +0 -360
  225. package/dist/tmux.js.map +0 -1
  226. package/dist/types/config.d.ts +0 -103
  227. package/dist/types/config.d.ts.map +0 -1
  228. package/dist/types/config.js +0 -7
  229. package/dist/types/config.js.map +0 -1
  230. package/dist/types/entities.d.ts +0 -88
  231. package/dist/types/entities.d.ts.map +0 -1
  232. package/dist/types/entities.js +0 -8
  233. package/dist/types/entities.js.map +0 -1
  234. package/dist/types/events.d.ts +0 -156
  235. package/dist/types/events.d.ts.map +0 -1
  236. package/dist/types/events.js +0 -8
  237. package/dist/types/events.js.map +0 -1
  238. package/dist/types/index.d.ts +0 -11
  239. package/dist/types/index.d.ts.map +0 -1
  240. package/dist/types/index.js +0 -8
  241. package/dist/types/index.js.map +0 -1
  242. package/dist/types/multiplexer.d.ts +0 -238
  243. package/dist/types/multiplexer.d.ts.map +0 -1
  244. package/dist/types/multiplexer.js +0 -8
  245. package/dist/types/multiplexer.js.map +0 -1
  246. package/dist/ui/components/base.d.ts +0 -155
  247. package/dist/ui/components/base.d.ts.map +0 -1
  248. package/dist/ui/components/base.js +0 -269
  249. package/dist/ui/components/base.js.map +0 -1
  250. package/dist/ui/components/index.d.ts +0 -10
  251. package/dist/ui/components/index.d.ts.map +0 -1
  252. package/dist/ui/components/index.js +0 -10
  253. package/dist/ui/components/index.js.map +0 -1
  254. package/dist/ui/components/input-field.d.ts +0 -98
  255. package/dist/ui/components/input-field.d.ts.map +0 -1
  256. package/dist/ui/components/input-field.js +0 -274
  257. package/dist/ui/components/input-field.js.map +0 -1
  258. package/dist/ui/components/list.d.ts +0 -94
  259. package/dist/ui/components/list.d.ts.map +0 -1
  260. package/dist/ui/components/list.js +0 -294
  261. package/dist/ui/components/list.js.map +0 -1
  262. package/dist/ui/components/modal.d.ts +0 -83
  263. package/dist/ui/components/modal.d.ts.map +0 -1
  264. package/dist/ui/components/modal.js +0 -249
  265. package/dist/ui/components/modal.js.map +0 -1
  266. package/dist/ui/components/tabs.d.ts +0 -97
  267. package/dist/ui/components/tabs.d.ts.map +0 -1
  268. package/dist/ui/components/tabs.js +0 -252
  269. package/dist/ui/components/tabs.js.map +0 -1
  270. package/dist/ui/components/text.d.ts +0 -60
  271. package/dist/ui/components/text.d.ts.map +0 -1
  272. package/dist/ui/components/text.js +0 -224
  273. package/dist/ui/components/text.js.map +0 -1
  274. package/dist/ui/index.d.ts +0 -12
  275. package/dist/ui/index.d.ts.map +0 -1
  276. package/dist/ui/index.js +0 -18
  277. package/dist/ui/index.js.map +0 -1
  278. package/dist/ui/input/index.d.ts +0 -8
  279. package/dist/ui/input/index.d.ts.map +0 -1
  280. package/dist/ui/input/index.js +0 -8
  281. package/dist/ui/input/index.js.map +0 -1
  282. package/dist/ui/input/input-manager.d.ts +0 -83
  283. package/dist/ui/input/input-manager.d.ts.map +0 -1
  284. package/dist/ui/input/input-manager.js +0 -200
  285. package/dist/ui/input/input-manager.js.map +0 -1
  286. package/dist/ui/input/keybindings.d.ts +0 -47
  287. package/dist/ui/input/keybindings.d.ts.map +0 -1
  288. package/dist/ui/input/keybindings.js +0 -168
  289. package/dist/ui/input/keybindings.js.map +0 -1
  290. package/dist/ui/input/keyboard.d.ts +0 -24
  291. package/dist/ui/input/keyboard.d.ts.map +0 -1
  292. package/dist/ui/input/keyboard.js +0 -230
  293. package/dist/ui/input/keyboard.js.map +0 -1
  294. package/dist/ui/input/mouse.d.ts +0 -44
  295. package/dist/ui/input/mouse.d.ts.map +0 -1
  296. package/dist/ui/input/mouse.js +0 -161
  297. package/dist/ui/input/mouse.js.map +0 -1
  298. package/dist/ui/layout/box.d.ts +0 -63
  299. package/dist/ui/layout/box.d.ts.map +0 -1
  300. package/dist/ui/layout/box.js +0 -160
  301. package/dist/ui/layout/box.js.map +0 -1
  302. package/dist/ui/layout/constraints.d.ts +0 -77
  303. package/dist/ui/layout/constraints.d.ts.map +0 -1
  304. package/dist/ui/layout/constraints.js +0 -154
  305. package/dist/ui/layout/constraints.js.map +0 -1
  306. package/dist/ui/layout/flex.d.ts +0 -59
  307. package/dist/ui/layout/flex.d.ts.map +0 -1
  308. package/dist/ui/layout/flex.js +0 -163
  309. package/dist/ui/layout/flex.js.map +0 -1
  310. package/dist/ui/layout/index.d.ts +0 -7
  311. package/dist/ui/layout/index.d.ts.map +0 -1
  312. package/dist/ui/layout/index.js +0 -7
  313. package/dist/ui/layout/index.js.map +0 -1
  314. package/dist/ui/modals/delete-modal.d.ts +0 -27
  315. package/dist/ui/modals/delete-modal.d.ts.map +0 -1
  316. package/dist/ui/modals/delete-modal.js +0 -59
  317. package/dist/ui/modals/delete-modal.js.map +0 -1
  318. package/dist/ui/modals/index.d.ts +0 -7
  319. package/dist/ui/modals/index.d.ts.map +0 -1
  320. package/dist/ui/modals/index.js +0 -7
  321. package/dist/ui/modals/index.js.map +0 -1
  322. package/dist/ui/modals/input-modal.d.ts +0 -66
  323. package/dist/ui/modals/input-modal.d.ts.map +0 -1
  324. package/dist/ui/modals/input-modal.js +0 -185
  325. package/dist/ui/modals/input-modal.js.map +0 -1
  326. package/dist/ui/modals/quit-modal.d.ts +0 -30
  327. package/dist/ui/modals/quit-modal.d.ts.map +0 -1
  328. package/dist/ui/modals/quit-modal.js +0 -65
  329. package/dist/ui/modals/quit-modal.js.map +0 -1
  330. package/dist/ui/renderer/ansi.d.ts +0 -206
  331. package/dist/ui/renderer/ansi.d.ts.map +0 -1
  332. package/dist/ui/renderer/ansi.js +0 -318
  333. package/dist/ui/renderer/ansi.js.map +0 -1
  334. package/dist/ui/renderer/canvas.d.ts +0 -126
  335. package/dist/ui/renderer/canvas.d.ts.map +0 -1
  336. package/dist/ui/renderer/canvas.js +0 -346
  337. package/dist/ui/renderer/canvas.js.map +0 -1
  338. package/dist/ui/renderer/colors.d.ts +0 -65
  339. package/dist/ui/renderer/colors.d.ts.map +0 -1
  340. package/dist/ui/renderer/colors.js +0 -260
  341. package/dist/ui/renderer/colors.js.map +0 -1
  342. package/dist/ui/renderer/index.d.ts +0 -8
  343. package/dist/ui/renderer/index.d.ts.map +0 -1
  344. package/dist/ui/renderer/index.js +0 -8
  345. package/dist/ui/renderer/index.js.map +0 -1
  346. package/dist/ui/renderer/symbols.d.ts +0 -176
  347. package/dist/ui/renderer/symbols.d.ts.map +0 -1
  348. package/dist/ui/renderer/symbols.js +0 -246
  349. package/dist/ui/renderer/symbols.js.map +0 -1
  350. package/dist/ui/views/index.d.ts +0 -7
  351. package/dist/ui/views/index.d.ts.map +0 -1
  352. package/dist/ui/views/index.js +0 -7
  353. package/dist/ui/views/index.js.map +0 -1
  354. package/dist/ui/views/sidebar-view.d.ts +0 -89
  355. package/dist/ui/views/sidebar-view.d.ts.map +0 -1
  356. package/dist/ui/views/sidebar-view.js +0 -259
  357. package/dist/ui/views/sidebar-view.js.map +0 -1
  358. package/dist/ui/views/terminal-bar-view.d.ts +0 -67
  359. package/dist/ui/views/terminal-bar-view.d.ts.map +0 -1
  360. package/dist/ui/views/terminal-bar-view.js +0 -172
  361. package/dist/ui/views/terminal-bar-view.js.map +0 -1
  362. package/dist/ui/views/welcome-view.d.ts +0 -34
  363. package/dist/ui/views/welcome-view.d.ts.map +0 -1
  364. package/dist/ui/views/welcome-view.js +0 -116
  365. 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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"}