claude-code-plus-plus 0.1.1 → 0.2.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 (493) hide show
  1. package/dist/app.d.ts +52 -0
  2. package/dist/app.d.ts.map +1 -0
  3. package/dist/app.js +318 -0
  4. package/dist/app.js.map +1 -0
  5. package/dist/cli/commands/index.d.ts +5 -0
  6. package/dist/cli/commands/index.d.ts.map +1 -0
  7. package/dist/cli/commands/index.js +9 -0
  8. package/dist/cli/commands/index.js.map +1 -0
  9. package/dist/cli/commands/start.d.ts +16 -0
  10. package/dist/cli/commands/start.d.ts.map +1 -0
  11. package/dist/cli/commands/start.js +23 -0
  12. package/dist/cli/commands/start.js.map +1 -0
  13. package/dist/cli/index.d.ts +7 -0
  14. package/dist/cli/index.d.ts.map +1 -0
  15. package/dist/cli/index.js +22 -0
  16. package/dist/cli/index.js.map +1 -0
  17. package/dist/cli/parser.d.ts +31 -0
  18. package/dist/cli/parser.d.ts.map +1 -0
  19. package/dist/cli/parser.js +117 -0
  20. package/dist/cli/parser.js.map +1 -0
  21. package/dist/cli/validators.d.ts +46 -0
  22. package/dist/cli/validators.d.ts.map +1 -0
  23. package/dist/cli/validators.js +159 -0
  24. package/dist/cli/validators.js.map +1 -0
  25. package/dist/config/defaults.d.ts +14 -0
  26. package/dist/config/defaults.d.ts.map +1 -0
  27. package/dist/config/defaults.js +32 -0
  28. package/dist/config/defaults.js.map +1 -0
  29. package/dist/config/index.d.ts +10 -0
  30. package/dist/config/index.d.ts.map +1 -0
  31. package/dist/config/index.js +32 -0
  32. package/dist/config/index.js.map +1 -0
  33. package/dist/config/loader.d.ts +38 -0
  34. package/dist/config/loader.d.ts.map +1 -0
  35. package/dist/config/loader.js +116 -0
  36. package/dist/config/loader.js.map +1 -0
  37. package/dist/config/paths.d.ts +47 -0
  38. package/dist/config/paths.d.ts.map +1 -0
  39. package/dist/config/paths.js +95 -0
  40. package/dist/config/paths.js.map +1 -0
  41. package/dist/config/schema.d.ts +15 -0
  42. package/dist/config/schema.d.ts.map +1 -0
  43. package/dist/config/schema.js +36 -0
  44. package/dist/config/schema.js.map +1 -0
  45. package/dist/core/index.d.ts +13 -1
  46. package/dist/core/index.d.ts.map +1 -1
  47. package/dist/core/index.js +13 -1
  48. package/dist/core/index.js.map +1 -1
  49. package/dist/core/session/index.d.ts +7 -0
  50. package/dist/core/session/index.d.ts.map +1 -0
  51. package/dist/core/session/index.js +6 -0
  52. package/dist/core/session/index.js.map +1 -0
  53. package/dist/core/session/session-manager.d.ts +46 -0
  54. package/dist/core/session/session-manager.d.ts.map +1 -0
  55. package/dist/core/session/session-manager.js +245 -0
  56. package/dist/core/session/session-manager.js.map +1 -0
  57. package/dist/core/session/session.d.ts +44 -0
  58. package/dist/core/session/session.d.ts.map +1 -0
  59. package/dist/core/session/session.js +78 -0
  60. package/dist/core/session/session.js.map +1 -0
  61. package/dist/core/terminal/index.d.ts +7 -0
  62. package/dist/core/terminal/index.d.ts.map +1 -0
  63. package/dist/core/terminal/index.js +6 -0
  64. package/dist/core/terminal/index.js.map +1 -0
  65. package/dist/core/terminal/terminal-manager.d.ts +36 -0
  66. package/dist/core/terminal/terminal-manager.d.ts.map +1 -0
  67. package/dist/core/terminal/terminal-manager.js +182 -0
  68. package/dist/core/terminal/terminal-manager.js.map +1 -0
  69. package/dist/core/terminal/terminal.d.ts +27 -0
  70. package/dist/core/terminal/terminal.d.ts.map +1 -0
  71. package/dist/core/terminal/terminal.js +38 -0
  72. package/dist/core/terminal/terminal.js.map +1 -0
  73. package/dist/core/workspace/index.d.ts +7 -0
  74. package/dist/core/workspace/index.d.ts.map +1 -0
  75. package/dist/core/workspace/index.js +6 -0
  76. package/dist/core/workspace/index.js.map +1 -0
  77. package/dist/core/workspace/workspace-manager.d.ts +59 -0
  78. package/dist/core/workspace/workspace-manager.d.ts.map +1 -0
  79. package/dist/core/workspace/workspace-manager.js +224 -0
  80. package/dist/core/workspace/workspace-manager.js.map +1 -0
  81. package/dist/core/workspace/workspace.d.ts +56 -0
  82. package/dist/core/workspace/workspace.d.ts.map +1 -0
  83. package/dist/core/workspace/workspace.js +96 -0
  84. package/dist/core/workspace/workspace.js.map +1 -0
  85. package/dist/core/worktree/index.d.ts +7 -0
  86. package/dist/core/worktree/index.d.ts.map +1 -0
  87. package/dist/core/worktree/index.js +6 -0
  88. package/dist/core/worktree/index.js.map +1 -0
  89. package/dist/core/worktree/worktree-manager.d.ts +47 -0
  90. package/dist/core/worktree/worktree-manager.d.ts.map +1 -0
  91. package/dist/core/worktree/worktree-manager.js +170 -0
  92. package/dist/core/worktree/worktree-manager.js.map +1 -0
  93. package/dist/core/worktree/worktree.d.ts +35 -0
  94. package/dist/core/worktree/worktree.d.ts.map +1 -0
  95. package/dist/core/worktree/worktree.js +50 -0
  96. package/dist/core/worktree/worktree.js.map +1 -0
  97. package/dist/events/bus.d.ts +76 -0
  98. package/dist/events/bus.d.ts.map +1 -0
  99. package/dist/events/bus.js +223 -0
  100. package/dist/events/bus.js.map +1 -0
  101. package/dist/events/handlers/index.d.ts +28 -0
  102. package/dist/events/handlers/index.d.ts.map +1 -0
  103. package/dist/events/handlers/index.js +44 -0
  104. package/dist/events/handlers/index.js.map +1 -0
  105. package/dist/events/handlers/session-events.d.ts +12 -0
  106. package/dist/events/handlers/session-events.d.ts.map +1 -0
  107. package/dist/events/handlers/session-events.js +38 -0
  108. package/dist/events/handlers/session-events.js.map +1 -0
  109. package/dist/events/handlers/terminal-events.d.ts +12 -0
  110. package/dist/events/handlers/terminal-events.d.ts.map +1 -0
  111. package/dist/events/handlers/terminal-events.js +37 -0
  112. package/dist/events/handlers/terminal-events.js.map +1 -0
  113. package/dist/events/handlers/ui-events.d.ts +11 -0
  114. package/dist/events/handlers/ui-events.d.ts.map +1 -0
  115. package/dist/events/handlers/ui-events.js +202 -0
  116. package/dist/events/handlers/ui-events.js.map +1 -0
  117. package/dist/events/index.d.ts +9 -0
  118. package/dist/events/index.d.ts.map +1 -0
  119. package/dist/events/index.js +10 -0
  120. package/dist/events/index.js.map +1 -0
  121. package/dist/git/index.d.ts +5 -0
  122. package/dist/git/index.d.ts.map +1 -0
  123. package/dist/git/index.js +10 -0
  124. package/dist/git/index.js.map +1 -0
  125. package/dist/git/worktree.d.ts +44 -0
  126. package/dist/git/worktree.d.ts.map +1 -0
  127. package/dist/git/worktree.js +163 -0
  128. package/dist/git/worktree.js.map +1 -0
  129. package/dist/index.d.ts +0 -1
  130. package/dist/index.d.ts.map +1 -1
  131. package/dist/index.js +73 -145
  132. package/dist/index.js.map +1 -1
  133. package/dist/launcher/index.d.ts +24 -0
  134. package/dist/launcher/index.d.ts.map +1 -0
  135. package/dist/launcher/index.js +260 -0
  136. package/dist/launcher/index.js.map +1 -0
  137. package/dist/multiplexer/base.d.ts +73 -0
  138. package/dist/multiplexer/base.d.ts.map +1 -0
  139. package/dist/multiplexer/base.js +68 -0
  140. package/dist/multiplexer/base.js.map +1 -0
  141. package/dist/multiplexer/factory.d.ts +28 -0
  142. package/dist/multiplexer/factory.d.ts.map +1 -0
  143. package/dist/multiplexer/factory.js +72 -0
  144. package/dist/multiplexer/factory.js.map +1 -0
  145. package/dist/multiplexer/index.d.ts +14 -0
  146. package/dist/multiplexer/index.d.ts.map +1 -0
  147. package/dist/multiplexer/index.js +15 -0
  148. package/dist/multiplexer/index.js.map +1 -0
  149. package/dist/multiplexer/tmux/index.d.ts +9 -0
  150. package/dist/multiplexer/tmux/index.d.ts.map +1 -0
  151. package/dist/multiplexer/tmux/index.js +7 -0
  152. package/dist/multiplexer/tmux/index.js.map +1 -0
  153. package/dist/multiplexer/tmux/tmux-commands.d.ts +96 -0
  154. package/dist/multiplexer/tmux/tmux-commands.d.ts.map +1 -0
  155. package/dist/multiplexer/tmux/tmux-commands.js +282 -0
  156. package/dist/multiplexer/tmux/tmux-commands.js.map +1 -0
  157. package/dist/multiplexer/tmux/tmux-config.d.ts +57 -0
  158. package/dist/multiplexer/tmux/tmux-config.d.ts.map +1 -0
  159. package/dist/multiplexer/tmux/tmux-config.js +103 -0
  160. package/dist/multiplexer/tmux/tmux-config.js.map +1 -0
  161. package/dist/multiplexer/tmux/tmux-multiplexer.d.ts +94 -0
  162. package/dist/multiplexer/tmux/tmux-multiplexer.d.ts.map +1 -0
  163. package/dist/multiplexer/tmux/tmux-multiplexer.js +302 -0
  164. package/dist/multiplexer/tmux/tmux-multiplexer.js.map +1 -0
  165. package/dist/multiplexer/windows/index.d.ts +5 -0
  166. package/dist/multiplexer/windows/index.d.ts.map +1 -0
  167. package/dist/multiplexer/windows/index.js +5 -0
  168. package/dist/multiplexer/windows/index.js.map +1 -0
  169. package/dist/multiplexer/windows/windows-multiplexer.d.ts +61 -0
  170. package/dist/multiplexer/windows/windows-multiplexer.d.ts.map +1 -0
  171. package/dist/multiplexer/windows/windows-multiplexer.js +151 -0
  172. package/dist/multiplexer/windows/windows-multiplexer.js.map +1 -0
  173. package/dist/platform/clipboard.d.ts +26 -0
  174. package/dist/platform/clipboard.d.ts.map +1 -0
  175. package/dist/platform/clipboard.js +161 -0
  176. package/dist/platform/clipboard.js.map +1 -0
  177. package/dist/platform/detector.d.ts +78 -0
  178. package/dist/platform/detector.d.ts.map +1 -0
  179. package/dist/platform/detector.js +184 -0
  180. package/dist/platform/detector.js.map +1 -0
  181. package/dist/platform/index.d.ts +14 -0
  182. package/dist/platform/index.d.ts.map +1 -0
  183. package/dist/platform/index.js +53 -0
  184. package/dist/platform/index.js.map +1 -0
  185. package/dist/platform/paths.d.ts +63 -0
  186. package/dist/platform/paths.d.ts.map +1 -0
  187. package/dist/platform/paths.js +162 -0
  188. package/dist/platform/paths.js.map +1 -0
  189. package/dist/platform/shell.d.ts +43 -0
  190. package/dist/platform/shell.d.ts.map +1 -0
  191. package/dist/platform/shell.js +195 -0
  192. package/dist/platform/shell.js.map +1 -0
  193. package/dist/services/claude/claude-detector.d.ts +37 -0
  194. package/dist/services/claude/claude-detector.d.ts.map +1 -0
  195. package/dist/services/claude/claude-detector.js +83 -0
  196. package/dist/services/claude/claude-detector.js.map +1 -0
  197. package/dist/services/claude/claude-service.d.ts +57 -0
  198. package/dist/services/claude/claude-service.d.ts.map +1 -0
  199. package/dist/services/claude/claude-service.js +108 -0
  200. package/dist/services/claude/claude-service.js.map +1 -0
  201. package/dist/services/claude/index.d.ts +7 -0
  202. package/dist/services/claude/index.d.ts.map +1 -0
  203. package/dist/services/claude/index.js +6 -0
  204. package/dist/services/claude/index.js.map +1 -0
  205. package/dist/services/git/branch-service.d.ts +64 -0
  206. package/dist/services/git/branch-service.d.ts.map +1 -0
  207. package/dist/services/git/branch-service.js +217 -0
  208. package/dist/services/git/branch-service.js.map +1 -0
  209. package/dist/services/git/git-service.d.ts +44 -0
  210. package/dist/services/git/git-service.d.ts.map +1 -0
  211. package/dist/services/git/git-service.js +145 -0
  212. package/dist/services/git/git-service.js.map +1 -0
  213. package/dist/services/git/index.d.ts +8 -0
  214. package/dist/services/git/index.d.ts.map +1 -0
  215. package/dist/services/git/index.js +7 -0
  216. package/dist/services/git/index.js.map +1 -0
  217. package/dist/services/git/worktree-service.d.ts +61 -0
  218. package/dist/services/git/worktree-service.d.ts.map +1 -0
  219. package/dist/services/git/worktree-service.js +243 -0
  220. package/dist/services/git/worktree-service.js.map +1 -0
  221. package/dist/services/index.d.ts +12 -0
  222. package/dist/services/index.d.ts.map +1 -0
  223. package/dist/services/index.js +12 -0
  224. package/dist/services/index.js.map +1 -0
  225. package/dist/services/process/index.d.ts +8 -0
  226. package/dist/services/process/index.d.ts.map +1 -0
  227. package/dist/services/process/index.js +6 -0
  228. package/dist/services/process/index.js.map +1 -0
  229. package/dist/services/process/process-monitor.d.ts +98 -0
  230. package/dist/services/process/process-monitor.d.ts.map +1 -0
  231. package/dist/services/process/process-monitor.js +173 -0
  232. package/dist/services/process/process-monitor.js.map +1 -0
  233. package/dist/services/process/process-spawner.d.ts +55 -0
  234. package/dist/services/process/process-spawner.d.ts.map +1 -0
  235. package/dist/services/process/process-spawner.js +93 -0
  236. package/dist/services/process/process-spawner.js.map +1 -0
  237. package/dist/sidebar/app.d.ts +70 -0
  238. package/dist/sidebar/app.d.ts.map +1 -0
  239. package/dist/sidebar/app.js +1237 -0
  240. package/dist/sidebar/app.js.map +1 -0
  241. package/dist/sidebar/index.d.ts +8 -0
  242. package/dist/sidebar/index.d.ts.map +1 -0
  243. package/dist/sidebar/index.js +28 -0
  244. package/dist/sidebar/index.js.map +1 -0
  245. package/dist/sidebar/input.d.ts +33 -0
  246. package/dist/sidebar/input.d.ts.map +1 -0
  247. package/dist/sidebar/input.js +160 -0
  248. package/dist/sidebar/input.js.map +1 -0
  249. package/dist/sidebar/render.d.ts +73 -0
  250. package/dist/sidebar/render.d.ts.map +1 -0
  251. package/dist/sidebar/render.js +415 -0
  252. package/dist/sidebar/render.js.map +1 -0
  253. package/dist/state/actions.d.ts +49 -0
  254. package/dist/state/actions.d.ts.map +1 -0
  255. package/dist/state/actions.js +512 -0
  256. package/dist/state/actions.js.map +1 -0
  257. package/dist/state/index.d.ts +16 -0
  258. package/dist/state/index.d.ts.map +1 -0
  259. package/dist/state/index.js +28 -0
  260. package/dist/state/index.js.map +1 -0
  261. package/dist/state/middleware/index.d.ts +7 -0
  262. package/dist/state/middleware/index.d.ts.map +1 -0
  263. package/dist/state/middleware/index.js +6 -0
  264. package/dist/state/middleware/index.js.map +1 -0
  265. package/dist/state/middleware/logger.d.ts +22 -0
  266. package/dist/state/middleware/logger.d.ts.map +1 -0
  267. package/dist/state/middleware/logger.js +45 -0
  268. package/dist/state/middleware/logger.js.map +1 -0
  269. package/dist/state/middleware/persistence.d.ts +29 -0
  270. package/dist/state/middleware/persistence.d.ts.map +1 -0
  271. package/dist/state/middleware/persistence.js +71 -0
  272. package/dist/state/middleware/persistence.js.map +1 -0
  273. package/dist/state/persistence/file-adapter.d.ts +48 -0
  274. package/dist/state/persistence/file-adapter.d.ts.map +1 -0
  275. package/dist/state/persistence/file-adapter.js +96 -0
  276. package/dist/state/persistence/file-adapter.js.map +1 -0
  277. package/dist/state/persistence/index.d.ts +8 -0
  278. package/dist/state/persistence/index.d.ts.map +1 -0
  279. package/dist/state/persistence/index.js +6 -0
  280. package/dist/state/persistence/index.js.map +1 -0
  281. package/dist/state/persistence/serializer.d.ts +41 -0
  282. package/dist/state/persistence/serializer.d.ts.map +1 -0
  283. package/dist/state/persistence/serializer.js +114 -0
  284. package/dist/state/persistence/serializer.js.map +1 -0
  285. package/dist/state/selectors.d.ts +67 -0
  286. package/dist/state/selectors.d.ts.map +1 -0
  287. package/dist/state/selectors.js +177 -0
  288. package/dist/state/selectors.js.map +1 -0
  289. package/dist/state/store.d.ts +86 -0
  290. package/dist/state/store.d.ts.map +1 -0
  291. package/dist/state/store.js +161 -0
  292. package/dist/state/store.js.map +1 -0
  293. package/dist/state/types.d.ts +269 -0
  294. package/dist/state/types.d.ts.map +1 -0
  295. package/dist/state/types.js +7 -0
  296. package/dist/state/types.js.map +1 -0
  297. package/dist/terminal/bar-handler.d.ts +15 -0
  298. package/dist/terminal/bar-handler.d.ts.map +1 -0
  299. package/dist/terminal/bar-handler.js +244 -0
  300. package/dist/terminal/bar-handler.js.map +1 -0
  301. package/dist/terminal/bar-render.d.ts +33 -0
  302. package/dist/terminal/bar-render.d.ts.map +1 -0
  303. package/dist/terminal/bar-render.js +126 -0
  304. package/dist/terminal/bar-render.js.map +1 -0
  305. package/dist/terminal/index.d.ts +8 -0
  306. package/dist/terminal/index.d.ts.map +1 -0
  307. package/dist/terminal/index.js +14 -0
  308. package/dist/terminal/index.js.map +1 -0
  309. package/dist/tmux/commands.d.ts +26 -0
  310. package/dist/tmux/commands.d.ts.map +1 -0
  311. package/dist/tmux/commands.js +74 -0
  312. package/dist/tmux/commands.js.map +1 -0
  313. package/dist/tmux/index.d.ts +6 -0
  314. package/dist/tmux/index.d.ts.map +1 -0
  315. package/dist/tmux/index.js +42 -0
  316. package/dist/tmux/index.js.map +1 -0
  317. package/dist/tmux/pane.d.ts +111 -0
  318. package/dist/tmux/pane.d.ts.map +1 -0
  319. package/dist/tmux/pane.js +231 -0
  320. package/dist/tmux/pane.js.map +1 -0
  321. package/dist/types/config.d.ts +103 -0
  322. package/dist/types/config.d.ts.map +1 -0
  323. package/dist/types/config.js +7 -0
  324. package/dist/types/config.js.map +1 -0
  325. package/dist/types/entities.d.ts +88 -0
  326. package/dist/types/entities.d.ts.map +1 -0
  327. package/dist/types/entities.js +8 -0
  328. package/dist/types/entities.js.map +1 -0
  329. package/dist/types/events.d.ts +156 -0
  330. package/dist/types/events.d.ts.map +1 -0
  331. package/dist/types/events.js +8 -0
  332. package/dist/types/events.js.map +1 -0
  333. package/dist/types/index.d.ts +11 -0
  334. package/dist/types/index.d.ts.map +1 -0
  335. package/dist/types/index.js +8 -0
  336. package/dist/types/index.js.map +1 -0
  337. package/dist/types/multiplexer.d.ts +238 -0
  338. package/dist/types/multiplexer.d.ts.map +1 -0
  339. package/dist/types/multiplexer.js +8 -0
  340. package/dist/types/multiplexer.js.map +1 -0
  341. package/dist/types.d.ts +67 -3
  342. package/dist/types.d.ts.map +1 -1
  343. package/dist/types.js +10 -3
  344. package/dist/types.js.map +1 -1
  345. package/dist/ui/components/base.d.ts +155 -0
  346. package/dist/ui/components/base.d.ts.map +1 -0
  347. package/dist/ui/components/base.js +269 -0
  348. package/dist/ui/components/base.js.map +1 -0
  349. package/dist/ui/components/index.d.ts +10 -0
  350. package/dist/ui/components/index.d.ts.map +1 -0
  351. package/dist/ui/components/index.js +10 -0
  352. package/dist/ui/components/index.js.map +1 -0
  353. package/dist/ui/components/input-field.d.ts +98 -0
  354. package/dist/ui/components/input-field.d.ts.map +1 -0
  355. package/dist/ui/components/input-field.js +274 -0
  356. package/dist/ui/components/input-field.js.map +1 -0
  357. package/dist/ui/components/list.d.ts +94 -0
  358. package/dist/ui/components/list.d.ts.map +1 -0
  359. package/dist/ui/components/list.js +294 -0
  360. package/dist/ui/components/list.js.map +1 -0
  361. package/dist/ui/components/modal.d.ts +83 -0
  362. package/dist/ui/components/modal.d.ts.map +1 -0
  363. package/dist/ui/components/modal.js +249 -0
  364. package/dist/ui/components/modal.js.map +1 -0
  365. package/dist/ui/components/tabs.d.ts +97 -0
  366. package/dist/ui/components/tabs.d.ts.map +1 -0
  367. package/dist/ui/components/tabs.js +252 -0
  368. package/dist/ui/components/tabs.js.map +1 -0
  369. package/dist/ui/components/text.d.ts +60 -0
  370. package/dist/ui/components/text.d.ts.map +1 -0
  371. package/dist/ui/components/text.js +224 -0
  372. package/dist/ui/components/text.js.map +1 -0
  373. package/dist/ui/index.d.ts +12 -0
  374. package/dist/ui/index.d.ts.map +1 -0
  375. package/dist/ui/index.js +18 -0
  376. package/dist/ui/index.js.map +1 -0
  377. package/dist/ui/input/index.d.ts +8 -0
  378. package/dist/ui/input/index.d.ts.map +1 -0
  379. package/dist/ui/input/index.js +8 -0
  380. package/dist/ui/input/index.js.map +1 -0
  381. package/dist/ui/input/input-manager.d.ts +83 -0
  382. package/dist/ui/input/input-manager.d.ts.map +1 -0
  383. package/dist/ui/input/input-manager.js +200 -0
  384. package/dist/ui/input/input-manager.js.map +1 -0
  385. package/dist/ui/input/keybindings.d.ts +47 -0
  386. package/dist/ui/input/keybindings.d.ts.map +1 -0
  387. package/dist/ui/input/keybindings.js +168 -0
  388. package/dist/ui/input/keybindings.js.map +1 -0
  389. package/dist/ui/input/keyboard.d.ts +24 -0
  390. package/dist/ui/input/keyboard.d.ts.map +1 -0
  391. package/dist/ui/input/keyboard.js +230 -0
  392. package/dist/ui/input/keyboard.js.map +1 -0
  393. package/dist/ui/input/mouse.d.ts +44 -0
  394. package/dist/ui/input/mouse.d.ts.map +1 -0
  395. package/dist/ui/input/mouse.js +161 -0
  396. package/dist/ui/input/mouse.js.map +1 -0
  397. package/dist/ui/layout/box.d.ts +63 -0
  398. package/dist/ui/layout/box.d.ts.map +1 -0
  399. package/dist/ui/layout/box.js +160 -0
  400. package/dist/ui/layout/box.js.map +1 -0
  401. package/dist/ui/layout/constraints.d.ts +77 -0
  402. package/dist/ui/layout/constraints.d.ts.map +1 -0
  403. package/dist/ui/layout/constraints.js +154 -0
  404. package/dist/ui/layout/constraints.js.map +1 -0
  405. package/dist/ui/layout/flex.d.ts +59 -0
  406. package/dist/ui/layout/flex.d.ts.map +1 -0
  407. package/dist/ui/layout/flex.js +163 -0
  408. package/dist/ui/layout/flex.js.map +1 -0
  409. package/dist/ui/layout/index.d.ts +7 -0
  410. package/dist/ui/layout/index.d.ts.map +1 -0
  411. package/dist/ui/layout/index.js +7 -0
  412. package/dist/ui/layout/index.js.map +1 -0
  413. package/dist/ui/modals/delete-modal.d.ts +27 -0
  414. package/dist/ui/modals/delete-modal.d.ts.map +1 -0
  415. package/dist/ui/modals/delete-modal.js +59 -0
  416. package/dist/ui/modals/delete-modal.js.map +1 -0
  417. package/dist/ui/modals/index.d.ts +7 -0
  418. package/dist/ui/modals/index.d.ts.map +1 -0
  419. package/dist/ui/modals/index.js +7 -0
  420. package/dist/ui/modals/index.js.map +1 -0
  421. package/dist/ui/modals/input-modal.d.ts +66 -0
  422. package/dist/ui/modals/input-modal.d.ts.map +1 -0
  423. package/dist/ui/modals/input-modal.js +185 -0
  424. package/dist/ui/modals/input-modal.js.map +1 -0
  425. package/dist/ui/modals/quit-modal.d.ts +30 -0
  426. package/dist/ui/modals/quit-modal.d.ts.map +1 -0
  427. package/dist/ui/modals/quit-modal.js +65 -0
  428. package/dist/ui/modals/quit-modal.js.map +1 -0
  429. package/dist/ui/renderer/ansi.d.ts +206 -0
  430. package/dist/ui/renderer/ansi.d.ts.map +1 -0
  431. package/dist/ui/renderer/ansi.js +318 -0
  432. package/dist/ui/renderer/ansi.js.map +1 -0
  433. package/dist/ui/renderer/canvas.d.ts +126 -0
  434. package/dist/ui/renderer/canvas.d.ts.map +1 -0
  435. package/dist/ui/renderer/canvas.js +346 -0
  436. package/dist/ui/renderer/canvas.js.map +1 -0
  437. package/dist/ui/renderer/colors.d.ts +65 -0
  438. package/dist/ui/renderer/colors.d.ts.map +1 -0
  439. package/dist/ui/renderer/colors.js +260 -0
  440. package/dist/ui/renderer/colors.js.map +1 -0
  441. package/dist/ui/renderer/index.d.ts +8 -0
  442. package/dist/ui/renderer/index.d.ts.map +1 -0
  443. package/dist/ui/renderer/index.js +8 -0
  444. package/dist/ui/renderer/index.js.map +1 -0
  445. package/dist/ui/renderer/symbols.d.ts +176 -0
  446. package/dist/ui/renderer/symbols.d.ts.map +1 -0
  447. package/dist/ui/renderer/symbols.js +246 -0
  448. package/dist/ui/renderer/symbols.js.map +1 -0
  449. package/dist/ui/views/index.d.ts +7 -0
  450. package/dist/ui/views/index.d.ts.map +1 -0
  451. package/dist/ui/views/index.js +7 -0
  452. package/dist/ui/views/index.js.map +1 -0
  453. package/dist/ui/views/sidebar-view.d.ts +89 -0
  454. package/dist/ui/views/sidebar-view.d.ts.map +1 -0
  455. package/dist/ui/views/sidebar-view.js +259 -0
  456. package/dist/ui/views/sidebar-view.js.map +1 -0
  457. package/dist/ui/views/terminal-bar-view.d.ts +67 -0
  458. package/dist/ui/views/terminal-bar-view.d.ts.map +1 -0
  459. package/dist/ui/views/terminal-bar-view.js +172 -0
  460. package/dist/ui/views/terminal-bar-view.js.map +1 -0
  461. package/dist/ui/views/welcome-view.d.ts +34 -0
  462. package/dist/ui/views/welcome-view.d.ts.map +1 -0
  463. package/dist/ui/views/welcome-view.js +116 -0
  464. package/dist/ui/views/welcome-view.js.map +1 -0
  465. package/dist/utils/async.d.ts +68 -0
  466. package/dist/utils/async.d.ts.map +1 -0
  467. package/dist/utils/async.js +147 -0
  468. package/dist/utils/async.js.map +1 -0
  469. package/dist/utils/errors.d.ts +136 -0
  470. package/dist/utils/errors.d.ts.map +1 -0
  471. package/dist/utils/errors.js +241 -0
  472. package/dist/utils/errors.js.map +1 -0
  473. package/dist/utils/id.d.ts +51 -0
  474. package/dist/utils/id.d.ts.map +1 -0
  475. package/dist/utils/id.js +88 -0
  476. package/dist/utils/id.js.map +1 -0
  477. package/dist/utils/index.d.ts +15 -0
  478. package/dist/utils/index.d.ts.map +1 -0
  479. package/dist/utils/index.js +78 -0
  480. package/dist/utils/index.js.map +1 -0
  481. package/dist/utils/logger.d.ts +75 -0
  482. package/dist/utils/logger.d.ts.map +1 -0
  483. package/dist/utils/logger.js +219 -0
  484. package/dist/utils/logger.js.map +1 -0
  485. package/dist/utils/string.d.ts +71 -0
  486. package/dist/utils/string.d.ts.map +1 -0
  487. package/dist/utils/string.js +175 -0
  488. package/dist/utils/string.js.map +1 -0
  489. package/dist/utils/validation.d.ts +72 -0
  490. package/dist/utils/validation.d.ts.map +1 -0
  491. package/dist/utils/validation.js +211 -0
  492. package/dist/utils/validation.js.map +1 -0
  493. package/package.json +4 -4
@@ -0,0 +1,260 @@
1
+ "use strict";
2
+ /**
3
+ * Session Launcher
4
+ *
5
+ * Creates tmux session, sets up panes, and spawns sidebar process.
6
+ */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
20
+ }) : function(o, v) {
21
+ o["default"] = v;
22
+ });
23
+ var __importStar = (this && this.__importStar) || (function () {
24
+ var ownKeys = function(o) {
25
+ ownKeys = Object.getOwnPropertyNames || function (o) {
26
+ var ar = [];
27
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
+ return ar;
29
+ };
30
+ return ownKeys(o);
31
+ };
32
+ return function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ })();
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ exports.generateSessionName = generateSessionName;
42
+ exports.launch = launch;
43
+ const path_1 = require("path");
44
+ const fs_1 = require("fs");
45
+ const child_process_1 = require("child_process");
46
+ const os_1 = require("os");
47
+ const tmux = __importStar(require("../tmux"));
48
+ // ============================================================================
49
+ // Session Name Generation
50
+ // ============================================================================
51
+ /**
52
+ * Generate a unique session name from repo path
53
+ */
54
+ function generateSessionName(repoPath) {
55
+ const projectName = repoPath.split('/').pop() || 'project';
56
+ // Create a simple hash from the path
57
+ let hash = 0;
58
+ for (let i = 0; i < repoPath.length; i++) {
59
+ const char = repoPath.charCodeAt(i);
60
+ hash = ((hash << 5) - hash) + char;
61
+ hash = hash & hash;
62
+ }
63
+ const hashStr = Math.abs(hash).toString(36).substring(0, 6);
64
+ return `cpp-${projectName.substring(0, 15)}-${hashStr}`;
65
+ }
66
+ // ============================================================================
67
+ // Launcher
68
+ // ============================================================================
69
+ /**
70
+ * Launch or attach to a claude-code-plus-plus session
71
+ */
72
+ async function launch(options) {
73
+ const { repoPath, sessionName, forceNew = false } = options;
74
+ // Check if session exists
75
+ if (tmux.sessionExists(sessionName)) {
76
+ if (forceNew) {
77
+ console.log('Killing existing session...');
78
+ tmux.killSession(sessionName);
79
+ }
80
+ else {
81
+ console.log(`Reattaching to existing session: ${sessionName}`);
82
+ console.log('(Use --new to force create a fresh session)');
83
+ const exitCode = tmux.attach(sessionName);
84
+ return { sessionName, attached: true, exitCode };
85
+ }
86
+ }
87
+ console.log(`Starting Claude++ for: ${repoPath}`);
88
+ console.log(`Session: ${sessionName}`);
89
+ // Create session
90
+ tmux.createSession(sessionName, repoPath);
91
+ // Configure tmux options
92
+ configureTmux(sessionName);
93
+ // Get initial pane (will be sidebar)
94
+ const panes = tmux.listPanes(sessionName);
95
+ const sidebarPaneId = panes[0]?.id || '%0';
96
+ // Split to create main pane (25% sidebar, 75% main)
97
+ const mainPaneId = tmux.splitHorizontal(sessionName, 25, repoPath);
98
+ // Spawn sidebar process
99
+ const sidebarCommand = getSidebarCommand(repoPath, sessionName, mainPaneId, sidebarPaneId);
100
+ tmux.runInPane(sidebarPaneId, sidebarCommand);
101
+ // Show welcome screen in main pane
102
+ showWelcomeScreen(sessionName, mainPaneId);
103
+ // Set up additional tmux bindings
104
+ setupBindings(sessionName, sidebarPaneId);
105
+ // Focus sidebar
106
+ tmux.selectPane(sidebarPaneId);
107
+ // Attach
108
+ console.log('Attaching to tmux session...');
109
+ console.log('Detach with Ctrl+B d (sessions keep running!)');
110
+ const exitCode = tmux.attach(sessionName);
111
+ return { sessionName, attached: true, exitCode };
112
+ }
113
+ // ============================================================================
114
+ // Helpers
115
+ // ============================================================================
116
+ /**
117
+ * Configure tmux options for better UX
118
+ */
119
+ function configureTmux(sessionName) {
120
+ tmux.setOption('mouse', 'on', true);
121
+ tmux.setOption('status', 'off');
122
+ tmux.setOption('pane-border-style', 'fg=colour238');
123
+ tmux.setOption('pane-active-border-style', 'fg=colour39');
124
+ // Auto-copy to clipboard on macOS
125
+ try {
126
+ (0, child_process_1.execSync)(`tmux bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "pbcopy"`, { stdio: 'ignore' });
127
+ (0, child_process_1.execSync)(`tmux bind-key -T copy-mode MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "pbcopy"`, { stdio: 'ignore' });
128
+ }
129
+ catch {
130
+ // Not on macOS or pbcopy not available
131
+ }
132
+ }
133
+ /**
134
+ * Get the command to run sidebar
135
+ */
136
+ function getSidebarCommand(repoPath, sessionName, mainPaneId, sidebarPaneId) {
137
+ // Look for sidebar in same directory as launcher
138
+ const srcDir = (0, path_1.resolve)(__dirname, '..');
139
+ const tsPath = (0, path_1.resolve)(srcDir, 'sidebar', 'index.ts');
140
+ const jsPath = (0, path_1.resolve)(srcDir, 'sidebar', 'index.js');
141
+ const args = [
142
+ `"${repoPath}"`,
143
+ `"${sessionName}"`,
144
+ `"${mainPaneId}"`,
145
+ `"${sidebarPaneId}"`,
146
+ ].join(' ');
147
+ if ((0, fs_1.existsSync)(tsPath)) {
148
+ return `npx tsx "${tsPath}" ${args}`;
149
+ }
150
+ else if ((0, fs_1.existsSync)(jsPath)) {
151
+ return `node "${jsPath}" ${args}`;
152
+ }
153
+ else {
154
+ // Fallback - show error
155
+ return `echo "Sidebar not found at ${tsPath} or ${jsPath}"`;
156
+ }
157
+ }
158
+ /**
159
+ * Show welcome screen in main pane
160
+ */
161
+ function showWelcomeScreen(sessionName, mainPaneId) {
162
+ const tempDir = (0, os_1.tmpdir)();
163
+ const welcomeScript = `${tempDir}/claude-pp-welcome-${sessionName}.sh`;
164
+ const content = `#!/bin/bash
165
+ clear
166
+ cat << 'WELCOME'
167
+
168
+ ╔═══════════════════════════════════════════════════════════╗
169
+ ║ ║
170
+ ║ ██████╗██╗ █████╗ ██╗ ██╗██████╗ ███████╗ ║
171
+ ║ ██╔════╝██║ ██╔══██╗██║ ██║██╔══██╗██╔════╝ ║
172
+ ║ ██║ ██║ ███████║██║ ██║██║ ██║█████╗ ║
173
+ ║ ██║ ██║ ██╔══██║██║ ██║██║ ██║██╔══╝ ║
174
+ ║ ╚██████╗███████╗██║ ██║╚██████╔╝██████╔╝███████╗ ║
175
+ ║ ╚═════╝╚══════╝╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚══════╝ ║
176
+ ║ CODE ++ ║
177
+ ║ ║
178
+ ╚═══════════════════════════════════════════════════════════╝
179
+
180
+ Multi-agent Claude Code with git worktree isolation
181
+
182
+ ───────────────────────────────────────────────────────────────
183
+
184
+ GETTING STARTED
185
+
186
+ ↑/↓ or j/k Navigate worktrees & sessions
187
+ Enter Create new session or switch to selected
188
+ n Create new worktree
189
+ d Delete selected item
190
+ q Quit
191
+
192
+ ───────────────────────────────────────────────────────────────
193
+
194
+ GLOBAL SHORTCUTS (work from any pane)
195
+
196
+ Ctrl+T Create new terminal in active session
197
+ Ctrl+G Toggle sidebar collapse
198
+
199
+ ───────────────────────────────────────────────────────────────
200
+
201
+ TMUX SHORTCUTS
202
+
203
+ Ctrl+B ←/→ Switch between panes
204
+ Ctrl+B d Detach (sessions keep running!)
205
+
206
+ ───────────────────────────────────────────────────────────────
207
+
208
+ Select a worktree in the sidebar and press Enter to begin.
209
+
210
+ WELCOME
211
+ read -r
212
+ `;
213
+ (0, fs_1.writeFileSync)(welcomeScript, content);
214
+ (0, fs_1.chmodSync)(welcomeScript, 0o755);
215
+ tmux.runInPane(mainPaneId, welcomeScript);
216
+ }
217
+ /**
218
+ * Set up additional key bindings
219
+ */
220
+ function setupBindings(sessionName, sidebarPaneId) {
221
+ // Set up hook to enforce sidebar width on attach
222
+ try {
223
+ (0, child_process_1.execSync)(`tmux set-hook -t ${sessionName} client-attached "resize-pane -t ${sidebarPaneId} -x 25"`, { stdio: 'ignore' });
224
+ }
225
+ catch {
226
+ // Ignore
227
+ }
228
+ // Disable scroll wheel in sidebar pane
229
+ const condition = `#{==:#{pane_id},${sidebarPaneId}}`;
230
+ try {
231
+ (0, child_process_1.execSync)(`tmux bind-key -T root WheelUpPane if-shell -F "${condition}" "" "copy-mode -e; send-keys -M"`, { stdio: 'ignore' });
232
+ (0, child_process_1.execSync)(`tmux bind-key -T root WheelDownPane if-shell -F "${condition}" "" "copy-mode -e; send-keys -M"`, { stdio: 'ignore' });
233
+ }
234
+ catch {
235
+ // Ignore
236
+ }
237
+ // Global key bindings that route to sidebar regardless of active pane
238
+ // Ctrl+T - create new terminal
239
+ try {
240
+ (0, child_process_1.execSync)(`tmux bind-key -T root C-t send-keys -t ${sidebarPaneId} C-t`, { stdio: 'ignore' });
241
+ }
242
+ catch {
243
+ // Ignore
244
+ }
245
+ // Ctrl+G - toggle sidebar collapse
246
+ try {
247
+ (0, child_process_1.execSync)(`tmux bind-key -T root C-g send-keys -t ${sidebarPaneId} C-g`, { stdio: 'ignore' });
248
+ }
249
+ catch {
250
+ // Ignore
251
+ }
252
+ // Ctrl+Q - quit
253
+ try {
254
+ (0, child_process_1.execSync)(`tmux bind-key -T root C-q send-keys -t ${sidebarPaneId} C-q`, { stdio: 'ignore' });
255
+ }
256
+ catch {
257
+ // Ignore
258
+ }
259
+ }
260
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/launcher/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BH,kDAWC;AASD,wBAmDC;AApGD,+BAA+B;AAC/B,2BAA0D;AAC1D,iDAAyC;AACzC,2BAA4B;AAC5B,8CAAgC;AAkBhC,+EAA+E;AAC/E,0BAA0B;AAC1B,+EAA+E;AAE/E;;GAEG;AACH,SAAgB,mBAAmB,CAAC,QAAgB;IAClD,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,SAAS,CAAC;IAC3D,qCAAqC;IACrC,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;QACnC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5D,OAAO,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC;AAC1D,CAAC;AAED,+EAA+E;AAC/E,WAAW;AACX,+EAA+E;AAE/E;;GAEG;AACI,KAAK,UAAU,MAAM,CAAC,OAAsB;IACjD,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IAE5D,0BAA0B;IAC1B,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;QACpC,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;YAC3C,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,oCAAoC,WAAW,EAAE,CAAC,CAAC;YAC/D,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;YAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAC1C,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QACnD,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,0BAA0B,QAAQ,EAAE,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,YAAY,WAAW,EAAE,CAAC,CAAC;IAEvC,iBAAiB;IACjB,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAE1C,yBAAyB;IACzB,aAAa,CAAC,WAAW,CAAC,CAAC;IAE3B,qCAAqC;IACrC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAC1C,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC;IAE3C,oDAAoD;IACpD,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;IAEnE,wBAAwB;IACxB,MAAM,cAAc,GAAG,iBAAiB,CAAC,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;IAC3F,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;IAE9C,mCAAmC;IACnC,iBAAiB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAE3C,kCAAkC;IAClC,aAAa,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAE1C,gBAAgB;IAChB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAE/B,SAAS;IACT,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;IAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAE1C,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AACnD,CAAC;AAED,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E;;GAEG;AACH,SAAS,aAAa,CAAC,WAAmB;IACxC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACpC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAChC,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC;IACpD,IAAI,CAAC,SAAS,CAAC,0BAA0B,EAAE,aAAa,CAAC,CAAC;IAE1D,kCAAkC;IAClC,IAAI,CAAC;QACH,IAAA,wBAAQ,EAAC,4FAA4F,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC5H,IAAA,wBAAQ,EAAC,yFAAyF,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC3H,CAAC;IAAC,MAAM,CAAC;QACP,uCAAuC;IACzC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CACxB,QAAgB,EAChB,WAAmB,EACnB,UAAkB,EAClB,aAAqB;IAErB,iDAAiD;IACjD,MAAM,MAAM,GAAG,IAAA,cAAO,EAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,IAAA,cAAO,EAAC,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,IAAA,cAAO,EAAC,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IAEtD,MAAM,IAAI,GAAG;QACX,IAAI,QAAQ,GAAG;QACf,IAAI,WAAW,GAAG;QAClB,IAAI,UAAU,GAAG;QACjB,IAAI,aAAa,GAAG;KACrB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEZ,IAAI,IAAA,eAAU,EAAC,MAAM,CAAC,EAAE,CAAC;QACvB,OAAO,YAAY,MAAM,KAAK,IAAI,EAAE,CAAC;IACvC,CAAC;SAAM,IAAI,IAAA,eAAU,EAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,OAAO,SAAS,MAAM,KAAK,IAAI,EAAE,CAAC;IACpC,CAAC;SAAM,CAAC;QACN,wBAAwB;QACxB,OAAO,8BAA8B,MAAM,OAAO,MAAM,GAAG,CAAC;IAC9D,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,WAAmB,EAAE,UAAkB;IAChE,MAAM,OAAO,GAAG,IAAA,WAAM,GAAE,CAAC;IACzB,MAAM,aAAa,GAAG,GAAG,OAAO,sBAAsB,WAAW,KAAK,CAAC;IAEvE,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgDjB,CAAC;IAEA,IAAA,kBAAa,EAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IACtC,IAAA,cAAS,EAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IAChC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,WAAmB,EAAE,aAAqB;IAC/D,iDAAiD;IACjD,IAAI,CAAC;QACH,IAAA,wBAAQ,EAAC,oBAAoB,WAAW,oCAAoC,aAAa,SAAS,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC3H,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;IAED,uCAAuC;IACvC,MAAM,SAAS,GAAG,mBAAmB,aAAa,GAAG,CAAC;IACtD,IAAI,CAAC;QACH,IAAA,wBAAQ,EAAC,kDAAkD,SAAS,mCAAmC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9H,IAAA,wBAAQ,EAAC,oDAAoD,SAAS,mCAAmC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAClI,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;IAED,sEAAsE;IACtE,+BAA+B;IAC/B,IAAI,CAAC;QACH,IAAA,wBAAQ,EAAC,0CAA0C,aAAa,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC/F,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;IAED,mCAAmC;IACnC,IAAI,CAAC;QACH,IAAA,wBAAQ,EAAC,0CAA0C,aAAa,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC/F,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;IAED,gBAAgB;IAChB,IAAI,CAAC;QACH,IAAA,wBAAQ,EAAC,0CAA0C,aAAa,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC/F,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;AACH,CAAC"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Base Multiplexer Class
3
+ *
4
+ * Provides shared functionality for multiplexer implementations.
5
+ */
6
+ import type { IMultiplexer, MultiplexerCapabilities, CreatePaneOptions, CreateSessionOptions, JoinPaneOptions, PaneSize, Direction, PaneInfo, WindowInfo } from '../types';
7
+ /**
8
+ * Abstract base class for multiplexer implementations
9
+ */
10
+ export declare abstract class BaseMultiplexer implements IMultiplexer {
11
+ abstract readonly name: string;
12
+ abstract readonly capabilities: MultiplexerCapabilities;
13
+ abstract initialize(): Promise<void>;
14
+ abstract shutdown(): Promise<void>;
15
+ abstract isAvailable(): Promise<boolean>;
16
+ abstract getVersion(): Promise<string>;
17
+ abstract createSession(options: CreateSessionOptions): Promise<string>;
18
+ abstract attachSession(sessionName: string): Promise<void>;
19
+ abstract detachSession(): Promise<void>;
20
+ abstract sessionExists(sessionName: string): Promise<boolean>;
21
+ abstract killSession(sessionName: string): Promise<void>;
22
+ abstract listSessions(): Promise<string[]>;
23
+ abstract createPane(options: CreatePaneOptions): Promise<string>;
24
+ abstract destroyPane(paneId: string): Promise<void>;
25
+ abstract focusPane(paneId: string): Promise<void>;
26
+ abstract resizePane(paneId: string, size: PaneSize, direction: Direction): Promise<void>;
27
+ abstract getPaneInfo(paneId: string): Promise<PaneInfo | null>;
28
+ abstract listPanes(): Promise<PaneInfo[]>;
29
+ abstract hidePane(paneId: string): Promise<void>;
30
+ abstract showPane(options: JoinPaneOptions): Promise<void>;
31
+ abstract isPaneVisible(paneId: string): Promise<boolean>;
32
+ abstract sendInput(paneId: string, text: string): Promise<void>;
33
+ abstract sendKeys(paneId: string, keys: string[]): Promise<void>;
34
+ abstract runCommand(paneId: string, command: string): Promise<void>;
35
+ abstract createWindow(name?: string, cwd?: string): Promise<string>;
36
+ abstract destroyWindow(windowId: string): Promise<void>;
37
+ abstract selectWindow(windowId: string): Promise<void>;
38
+ abstract renameWindow(windowId: string, name: string): Promise<void>;
39
+ abstract listWindows(): Promise<WindowInfo[]>;
40
+ abstract setOption(option: string, value: string, global?: boolean): Promise<void>;
41
+ abstract getOption(option: string): Promise<string>;
42
+ abstract bindKey(key: string, action: string): Promise<void>;
43
+ abstract unbindKey(key: string): Promise<void>;
44
+ abstract enableMouse(): Promise<void>;
45
+ abstract disableMouse(): Promise<void>;
46
+ abstract copyToClipboard(text: string): Promise<void>;
47
+ abstract runShellCommand(command: string): Promise<string>;
48
+ /**
49
+ * Calculate pane size value for the multiplexer
50
+ */
51
+ protected calculatePaneSize(size: PaneSize): string;
52
+ /**
53
+ * Validate pane ID format
54
+ */
55
+ protected validatePaneId(paneId: string): boolean;
56
+ /**
57
+ * Validate window ID format
58
+ */
59
+ protected validateWindowId(windowId: string): boolean;
60
+ /**
61
+ * Validate session name
62
+ */
63
+ protected validateSessionName(name: string): boolean;
64
+ /**
65
+ * Escape shell argument
66
+ */
67
+ protected escapeShellArg(arg: string): string;
68
+ /**
69
+ * Convert direction to tmux flag
70
+ */
71
+ protected directionToFlag(direction: Direction): string;
72
+ }
73
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/multiplexer/base.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Base Multiplexer Class
3
+ *
4
+ * Provides shared functionality for multiplexer implementations.
5
+ */
6
+ /**
7
+ * Abstract base class for multiplexer implementations
8
+ */
9
+ export class BaseMultiplexer {
10
+ // =========================================================================
11
+ // Shared utility methods
12
+ // =========================================================================
13
+ /**
14
+ * Calculate pane size value for the multiplexer
15
+ */
16
+ calculatePaneSize(size) {
17
+ if (size.percent !== undefined) {
18
+ return `${size.percent}%`;
19
+ }
20
+ if (size.cells !== undefined) {
21
+ return String(size.cells);
22
+ }
23
+ return '50%';
24
+ }
25
+ /**
26
+ * Validate pane ID format
27
+ */
28
+ validatePaneId(paneId) {
29
+ // tmux format: %<number>
30
+ return /^%\d+$/.test(paneId);
31
+ }
32
+ /**
33
+ * Validate window ID format
34
+ */
35
+ validateWindowId(windowId) {
36
+ // tmux format: @<number>
37
+ return /^@\d+$/.test(windowId);
38
+ }
39
+ /**
40
+ * Validate session name
41
+ */
42
+ validateSessionName(name) {
43
+ // No dots or colons in tmux session names
44
+ return !/[.:]/.test(name) && name.length > 0 && name.length < 100;
45
+ }
46
+ /**
47
+ * Escape shell argument
48
+ */
49
+ escapeShellArg(arg) {
50
+ return `'${arg.replace(/'/g, "'\\''")}'`;
51
+ }
52
+ /**
53
+ * Convert direction to tmux flag
54
+ */
55
+ directionToFlag(direction) {
56
+ switch (direction) {
57
+ case 'up':
58
+ return '-U';
59
+ case 'down':
60
+ return '-D';
61
+ case 'left':
62
+ return '-L';
63
+ case 'right':
64
+ return '-R';
65
+ }
66
+ }
67
+ }
68
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/multiplexer/base.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAcH;;GAEG;AACH,MAAM,OAAgB,eAAe;IA2DnC,4EAA4E;IAC5E,yBAAyB;IACzB,4EAA4E;IAE5E;;OAEG;IACO,iBAAiB,CAAC,IAAc;QACxC,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC;QAC5B,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACO,cAAc,CAAC,MAAc;QACrC,yBAAyB;QACzB,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACO,gBAAgB,CAAC,QAAgB;QACzC,yBAAyB;QACzB,OAAO,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACO,mBAAmB,CAAC,IAAY;QACxC,0CAA0C;QAC1C,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;IACpE,CAAC;IAED;;OAEG;IACO,cAAc,CAAC,GAAW;QAClC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;IAC3C,CAAC;IAED;;OAEG;IACO,eAAe,CAAC,SAAoB;QAC5C,QAAQ,SAAS,EAAE,CAAC;YAClB,KAAK,IAAI;gBACP,OAAO,IAAI,CAAC;YACd,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC;YACd,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC;YACd,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC;QAChB,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Multiplexer Factory
3
+ *
4
+ * Creates the appropriate multiplexer based on platform and configuration.
5
+ */
6
+ import type { IMultiplexer } from '../types';
7
+ import type { MultiplexerConfig } from '../types';
8
+ /**
9
+ * Multiplexer type
10
+ */
11
+ export type MultiplexerType = 'tmux' | 'windows' | 'auto';
12
+ /**
13
+ * Create a multiplexer based on configuration
14
+ */
15
+ export declare function createMultiplexer(config?: Partial<MultiplexerConfig>): IMultiplexer;
16
+ /**
17
+ * Detect the best available multiplexer for the current platform
18
+ */
19
+ export declare function detectMultiplexer(): IMultiplexer;
20
+ /**
21
+ * Check if a multiplexer is available
22
+ */
23
+ export declare function isMultiplexerAvailable(type?: MultiplexerType): Promise<boolean>;
24
+ /**
25
+ * Get the multiplexer that would be used on this system
26
+ */
27
+ export declare function getDefaultMultiplexerType(): MultiplexerType;
28
+ //# sourceMappingURL=factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/multiplexer/factory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAMlD;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;AAE1D;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAClC,YAAY,CASd;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,YAAY,CA6BhD;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,CAAC,EAAE,eAAe,GACrB,OAAO,CAAC,OAAO,CAAC,CAUlB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,eAAe,CAY3D"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Multiplexer Factory
3
+ *
4
+ * Creates the appropriate multiplexer based on platform and configuration.
5
+ */
6
+ import { detectPlatform, isTmuxAvailable } from '../platform';
7
+ import { createTmuxMultiplexer } from './tmux';
8
+ import { MultiplexerError } from '../utils';
9
+ /**
10
+ * Create a multiplexer based on configuration
11
+ */
12
+ export function createMultiplexer(config) {
13
+ const type = config?.type ?? 'auto';
14
+ if (type === 'tmux') {
15
+ return createTmuxMultiplexer();
16
+ }
17
+ // Auto-detect (includes handling 'windows' in the future via detectMultiplexer)
18
+ return detectMultiplexer();
19
+ }
20
+ /**
21
+ * Detect the best available multiplexer for the current platform
22
+ */
23
+ export function detectMultiplexer() {
24
+ const platform = detectPlatform();
25
+ // On Unix-like systems, prefer tmux
26
+ if (platform === 'darwin' || platform === 'linux') {
27
+ if (isTmuxAvailable()) {
28
+ return createTmuxMultiplexer();
29
+ }
30
+ throw new MultiplexerError('tmux is not installed. Please install tmux to use Claude Code++.\n' +
31
+ ' macOS: brew install tmux\n' +
32
+ ' Ubuntu/Debian: apt install tmux\n' +
33
+ ' Fedora: dnf install tmux');
34
+ }
35
+ // On Windows, we would use Windows multiplexer
36
+ if (platform === 'win32') {
37
+ // For now, suggest using WSL
38
+ throw new MultiplexerError('Windows native support is not yet available.\n' +
39
+ 'Please use WSL (Windows Subsystem for Linux) with tmux installed.');
40
+ }
41
+ throw new MultiplexerError(`Unsupported platform: ${platform}. ` +
42
+ 'Claude Code++ requires tmux on macOS/Linux.');
43
+ }
44
+ /**
45
+ * Check if a multiplexer is available
46
+ */
47
+ export async function isMultiplexerAvailable(type) {
48
+ try {
49
+ const config = type && (type === 'tmux' || type === 'auto')
50
+ ? { type }
51
+ : undefined;
52
+ const multiplexer = createMultiplexer(config);
53
+ return await multiplexer.isAvailable();
54
+ }
55
+ catch {
56
+ return false;
57
+ }
58
+ }
59
+ /**
60
+ * Get the multiplexer that would be used on this system
61
+ */
62
+ export function getDefaultMultiplexerType() {
63
+ const platform = detectPlatform();
64
+ if (platform === 'darwin' || platform === 'linux') {
65
+ return 'tmux';
66
+ }
67
+ if (platform === 'win32') {
68
+ return 'windows';
69
+ }
70
+ return 'auto';
71
+ }
72
+ //# sourceMappingURL=factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/multiplexer/factory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAC;AAE/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAO5C;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAAmC;IAEnC,MAAM,IAAI,GAAG,MAAM,EAAE,IAAI,IAAI,MAAM,CAAC;IAEpC,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,OAAO,qBAAqB,EAAE,CAAC;IACjC,CAAC;IAED,gFAAgF;IAChF,OAAO,iBAAiB,EAAE,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAC;IAElC,oCAAoC;IACpC,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QAClD,IAAI,eAAe,EAAE,EAAE,CAAC;YACtB,OAAO,qBAAqB,EAAE,CAAC;QACjC,CAAC;QACD,MAAM,IAAI,gBAAgB,CACxB,oEAAoE;YACpE,8BAA8B;YAC9B,qCAAqC;YACrC,4BAA4B,CAC7B,CAAC;IACJ,CAAC;IAED,+CAA+C;IAC/C,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,6BAA6B;QAC7B,MAAM,IAAI,gBAAgB,CACxB,gDAAgD;YAChD,mEAAmE,CACpE,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,gBAAgB,CACxB,yBAAyB,QAAQ,IAAI;QACrC,6CAA6C,CAC9C,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,IAAsB;IAEtB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,CAAC;YACzD,CAAC,CAAC,EAAE,IAAI,EAAE;YACV,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,WAAW,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC9C,OAAO,MAAM,WAAW,CAAC,WAAW,EAAE,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB;IACvC,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAC;IAElC,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QAClD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Multiplexer Module
3
+ *
4
+ * Provides an abstraction layer for terminal multiplexers.
5
+ * Currently supports tmux, with Windows support planned.
6
+ */
7
+ export { BaseMultiplexer } from './base';
8
+ export { createMultiplexer, detectMultiplexer, isMultiplexerAvailable, getDefaultMultiplexerType, } from './factory';
9
+ export type { MultiplexerType } from './factory';
10
+ export { TmuxMultiplexer, createTmuxMultiplexer, tmux, tmuxCommand, tmuxQuery, tmuxRun, tmuxCheck, applyTmuxConfig, DEFAULT_TMUX_CONFIG, getTmuxVersionNumber, tmuxSupports, } from './tmux';
11
+ export type { TmuxCommandOptions, TmuxConfig } from './tmux';
12
+ export { WindowsMultiplexer, createWindowsMultiplexer, } from './windows';
13
+ export type { IMultiplexer, MultiplexerCapabilities, CreatePaneOptions, CreateSessionOptions, JoinPaneOptions, PaneSize, Direction, SplitOrientation, } from '../types';
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/multiplexer/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAGzC,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAGjD,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,IAAI,EACJ,WAAW,EACX,SAAS,EACT,OAAO,EACP,SAAS,EACT,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,GACb,MAAM,QAAQ,CAAC;AAChB,YAAY,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAG7D,OAAO,EACL,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,WAAW,CAAC;AAGnB,YAAY,EACV,YAAY,EACZ,uBAAuB,EACvB,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,QAAQ,EACR,SAAS,EACT,gBAAgB,GACjB,MAAM,UAAU,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Multiplexer Module
3
+ *
4
+ * Provides an abstraction layer for terminal multiplexers.
5
+ * Currently supports tmux, with Windows support planned.
6
+ */
7
+ // Base class
8
+ export { BaseMultiplexer } from './base';
9
+ // Factory
10
+ export { createMultiplexer, detectMultiplexer, isMultiplexerAvailable, getDefaultMultiplexerType, } from './factory';
11
+ // tmux implementation
12
+ export { TmuxMultiplexer, createTmuxMultiplexer, tmux, tmuxCommand, tmuxQuery, tmuxRun, tmuxCheck, applyTmuxConfig, DEFAULT_TMUX_CONFIG, getTmuxVersionNumber, tmuxSupports, } from './tmux';
13
+ // Windows implementation (placeholder)
14
+ export { WindowsMultiplexer, createWindowsMultiplexer, } from './windows';
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/multiplexer/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,aAAa;AACb,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAEzC,UAAU;AACV,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,WAAW,CAAC;AAGnB,sBAAsB;AACtB,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,IAAI,EACJ,WAAW,EACX,SAAS,EACT,OAAO,EACP,SAAS,EACT,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,GACb,MAAM,QAAQ,CAAC;AAGhB,uCAAuC;AACvC,OAAO,EACL,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,WAAW,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * tmux Multiplexer Module
3
+ */
4
+ export { TmuxMultiplexer, createTmuxMultiplexer } from './tmux-multiplexer';
5
+ export { tmux, tmuxCommand, tmuxQuery, tmuxRun, tmuxCheck, } from './tmux-commands';
6
+ export type { TmuxCommandOptions } from './tmux-commands';
7
+ export { applyTmuxConfig, setupKeyBindings, enableMouseWithClipboard, disableScrollInPane, getTmuxVersionNumber, tmuxSupports, DEFAULT_TMUX_CONFIG, } from './tmux-config';
8
+ export type { TmuxConfig } from './tmux-config';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/multiplexer/tmux/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EACL,IAAI,EACJ,WAAW,EACX,SAAS,EACT,OAAO,EACP,SAAS,GACV,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,wBAAwB,EACxB,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,EACZ,mBAAmB,GACpB,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * tmux Multiplexer Module
3
+ */
4
+ export { TmuxMultiplexer, createTmuxMultiplexer } from './tmux-multiplexer';
5
+ export { tmux, tmuxCommand, tmuxQuery, tmuxRun, tmuxCheck, } from './tmux-commands';
6
+ export { applyTmuxConfig, setupKeyBindings, enableMouseWithClipboard, disableScrollInPane, getTmuxVersionNumber, tmuxSupports, DEFAULT_TMUX_CONFIG, } from './tmux-config';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/multiplexer/tmux/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EACL,IAAI,EACJ,WAAW,EACX,SAAS,EACT,OAAO,EACP,SAAS,GACV,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,wBAAwB,EACxB,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,EACZ,mBAAmB,GACpB,MAAM,eAAe,CAAC"}