claude-code-plus-plus 0.1.0 → 0.2.0

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 +5 -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 +20 -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 +7 -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 +112 -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 +149 -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 +27 -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 +12 -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 +107 -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 +86 -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 +32 -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 +5 -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 +158 -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 +37 -144
  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 +226 -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 +154 -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 +169 -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 +15 -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 +149 -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 +187 -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 +1203 -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 +26 -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 +153 -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 +403 -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 +242 -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 +122 -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 +9 -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 +67 -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 +16 -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 +206 -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 +6 -2
  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 +138 -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 +224 -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 +79 -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 +19 -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 +212 -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 +163 -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 +196 -0
  492. package/dist/utils/validation.js.map +1 -0
  493. package/package.json +4 -4
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Input Modal
3
+ *
4
+ * Modal dialog for text input (create/rename).
5
+ */
6
+ import type { Canvas } from '../renderer';
7
+ import type { Bounds } from '../layout';
8
+ import { Modal, type ModalProps } from '../components/modal';
9
+ import type { KeyEvent } from '../input/keyboard';
10
+ export interface InputModalProps extends ModalProps {
11
+ label?: string;
12
+ placeholder?: string;
13
+ initialValue?: string;
14
+ validateFn?: (value: string) => string | null;
15
+ }
16
+ export type InputSubmitHandler = (value: string) => void;
17
+ export type InputCancelHandler = () => void;
18
+ export declare class InputModal extends Modal {
19
+ private label;
20
+ private inputField;
21
+ private validateFn;
22
+ private errorMessage;
23
+ private submitHandler;
24
+ private cancelHandler;
25
+ constructor(props?: InputModalProps);
26
+ /**
27
+ * Set submit handler
28
+ */
29
+ onSubmit(handler: InputSubmitHandler): void;
30
+ /**
31
+ * Set cancel handler
32
+ */
33
+ onCancel(handler: InputCancelHandler): void;
34
+ /**
35
+ * Get current value
36
+ */
37
+ getValue(): string;
38
+ /**
39
+ * Set value
40
+ */
41
+ setValue(value: string): void;
42
+ /**
43
+ * Try to submit
44
+ */
45
+ private trySubmit;
46
+ render(canvas: Canvas, bounds: Bounds): void;
47
+ handleKey(event: KeyEvent): boolean;
48
+ mount(): void;
49
+ }
50
+ /**
51
+ * Create an InputModal
52
+ */
53
+ export declare function createInputModal(props?: InputModalProps): InputModal;
54
+ /**
55
+ * Create a "Create Worktree" modal
56
+ */
57
+ export declare function createWorktreeModal(): InputModal;
58
+ /**
59
+ * Create a "Create Session" modal
60
+ */
61
+ export declare function createSessionModal(branchName: string): InputModal;
62
+ /**
63
+ * Create a "Rename" modal
64
+ */
65
+ export declare function createRenameModal(currentName: string, type: string): InputModal;
66
+ //# sourceMappingURL=input-modal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-modal.d.ts","sourceRoot":"","sources":["../../../src/ui/modals/input-modal.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAExC,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAMlD,MAAM,WAAW,eAAgB,SAAQ,UAAU;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CAC/C;AAED,MAAM,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AACzD,MAAM,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC;AAM5C,qBAAa,UAAW,SAAQ,KAAK;IACnC,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,UAAU,CAAmD;IACrE,OAAO,CAAC,YAAY,CAAuB;IAE3C,OAAO,CAAC,aAAa,CAAmC;IACxD,OAAO,CAAC,aAAa,CAAmC;gBAE5C,KAAK,GAAE,eAAoB;IAsBvC;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAI3C;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAI3C;;OAEG;IACH,QAAQ,IAAI,MAAM;IAIlB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK7B;;OAEG;IACH,OAAO,CAAC,SAAS;IAiBR,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAwC5C,SAAS,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO;IAenC,KAAK,IAAI,IAAI;CAKvB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,GAAE,eAAoB,GAAG,UAAU,CAExE;AAMD;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,UAAU,CAahD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,CAMjE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAU/E"}
@@ -0,0 +1,185 @@
1
+ /**
2
+ * Input Modal
3
+ *
4
+ * Modal dialog for text input (create/rename).
5
+ */
6
+ import { getTheme } from '../renderer/colors';
7
+ import { Modal } from '../components/modal';
8
+ import { createInputField } from '../components/input-field';
9
+ // ============================================================================
10
+ // InputModal
11
+ // ============================================================================
12
+ export class InputModal extends Modal {
13
+ label = '';
14
+ inputField;
15
+ validateFn = null;
16
+ errorMessage = null;
17
+ submitHandler = null;
18
+ cancelHandler = null;
19
+ constructor(props = {}) {
20
+ super({
21
+ ...props,
22
+ width: props.width ?? 50,
23
+ height: props.height ?? 8,
24
+ });
25
+ this.label = props.label ?? '';
26
+ this.validateFn = props.validateFn ?? null;
27
+ // Create input field
28
+ this.inputField = createInputField({
29
+ value: props.initialValue ?? '',
30
+ placeholder: props.placeholder ?? '',
31
+ });
32
+ this.addChild(this.inputField);
33
+ // Set up input handlers
34
+ this.inputField.onSubmit((value) => {
35
+ this.trySubmit();
36
+ });
37
+ }
38
+ /**
39
+ * Set submit handler
40
+ */
41
+ onSubmit(handler) {
42
+ this.submitHandler = handler;
43
+ }
44
+ /**
45
+ * Set cancel handler
46
+ */
47
+ onCancel(handler) {
48
+ this.cancelHandler = handler;
49
+ }
50
+ /**
51
+ * Get current value
52
+ */
53
+ getValue() {
54
+ return this.inputField.getValue();
55
+ }
56
+ /**
57
+ * Set value
58
+ */
59
+ setValue(value) {
60
+ this.inputField.setValue(value);
61
+ this.errorMessage = null;
62
+ }
63
+ /**
64
+ * Try to submit
65
+ */
66
+ trySubmit() {
67
+ const value = this.inputField.getValue().trim();
68
+ // Validate
69
+ if (this.validateFn) {
70
+ const error = this.validateFn(value);
71
+ if (error) {
72
+ this.errorMessage = error;
73
+ return;
74
+ }
75
+ }
76
+ this.errorMessage = null;
77
+ this.submitHandler?.(value);
78
+ this.close();
79
+ }
80
+ render(canvas, bounds) {
81
+ // Call parent render for modal frame
82
+ super.render(canvas, bounds);
83
+ const theme = getTheme();
84
+ const contentBounds = this.getContentBounds();
85
+ // Draw label
86
+ if (this.label) {
87
+ canvas.drawText(contentBounds.x, contentBounds.y, this.label, {
88
+ fg: theme.text.fg,
89
+ });
90
+ }
91
+ // Draw input field
92
+ const inputY = contentBounds.y + (this.label ? 2 : 0);
93
+ const inputBounds = {
94
+ x: contentBounds.x,
95
+ y: inputY,
96
+ width: contentBounds.width,
97
+ height: 1,
98
+ };
99
+ this.inputField.setBounds(inputBounds);
100
+ this.inputField.render(canvas, inputBounds);
101
+ // Draw error message
102
+ if (this.errorMessage) {
103
+ const errorY = inputY + 2;
104
+ canvas.drawText(contentBounds.x, errorY, this.errorMessage, {
105
+ fg: theme.error.fg,
106
+ });
107
+ }
108
+ // Draw hint
109
+ const hintY = contentBounds.y + contentBounds.height - 1;
110
+ canvas.drawText(contentBounds.x, hintY, 'Enter: confirm Esc: cancel', {
111
+ fg: theme.textMuted.fg,
112
+ });
113
+ }
114
+ handleKey(event) {
115
+ switch (event.key) {
116
+ case 'enter':
117
+ this.trySubmit();
118
+ return true;
119
+ case 'escape':
120
+ this.cancelHandler?.();
121
+ this.close();
122
+ return true;
123
+ }
124
+ // Delegate to input field
125
+ return this.inputField.handleKey(event);
126
+ }
127
+ mount() {
128
+ super.mount();
129
+ // Focus input field when mounted
130
+ this.inputField.focus();
131
+ }
132
+ }
133
+ /**
134
+ * Create an InputModal
135
+ */
136
+ export function createInputModal(props = {}) {
137
+ return new InputModal(props);
138
+ }
139
+ // ============================================================================
140
+ // Specialized Input Modals
141
+ // ============================================================================
142
+ /**
143
+ * Create a "Create Worktree" modal
144
+ */
145
+ export function createWorktreeModal() {
146
+ return createInputModal({
147
+ title: 'Create Worktree',
148
+ label: 'Branch name:',
149
+ placeholder: 'feature/my-branch',
150
+ validateFn: (value) => {
151
+ if (!value)
152
+ return 'Branch name is required';
153
+ if (!/^[a-zA-Z0-9._/-]+$/.test(value)) {
154
+ return 'Invalid branch name';
155
+ }
156
+ return null;
157
+ },
158
+ });
159
+ }
160
+ /**
161
+ * Create a "Create Session" modal
162
+ */
163
+ export function createSessionModal(branchName) {
164
+ return createInputModal({
165
+ title: 'Create Session',
166
+ label: 'Session name (optional):',
167
+ placeholder: branchName,
168
+ });
169
+ }
170
+ /**
171
+ * Create a "Rename" modal
172
+ */
173
+ export function createRenameModal(currentName, type) {
174
+ return createInputModal({
175
+ title: `Rename ${type}`,
176
+ label: 'New name:',
177
+ initialValue: currentName,
178
+ validateFn: (value) => {
179
+ if (!value)
180
+ return 'Name is required';
181
+ return null;
182
+ },
183
+ });
184
+ }
185
+ //# sourceMappingURL=input-modal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-modal.js","sourceRoot":"","sources":["../../../src/ui/modals/input-modal.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAmB,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAc,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAiBzE,+EAA+E;AAC/E,aAAa;AACb,+EAA+E;AAE/E,MAAM,OAAO,UAAW,SAAQ,KAAK;IAC3B,KAAK,GAAW,EAAE,CAAC;IACnB,UAAU,CAAa;IACvB,UAAU,GAA8C,IAAI,CAAC;IAC7D,YAAY,GAAkB,IAAI,CAAC;IAEnC,aAAa,GAA8B,IAAI,CAAC;IAChD,aAAa,GAA8B,IAAI,CAAC;IAExD,YAAY,QAAyB,EAAE;QACrC,KAAK,CAAC;YACJ,GAAG,KAAK;YACR,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE;YACxB,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC;SAC1B,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC;QAE3C,qBAAqB;QACrB,IAAI,CAAC,UAAU,GAAG,gBAAgB,CAAC;YACjC,KAAK,EAAE,KAAK,CAAC,YAAY,IAAI,EAAE;YAC/B,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE;SACrC,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE/B,wBAAwB;QACxB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE;YACjC,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,OAA2B;QAClC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,OAA2B;QAClC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,KAAa;QACpB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED;;OAEG;IACK,SAAS;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;QAEhD,WAAW;QACX,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACrC,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;gBAC1B,OAAO;YACT,CAAC;QACH,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAEQ,MAAM,CAAC,MAAc,EAAE,MAAc;QAC5C,qCAAqC;QACrC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAE7B,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QACzB,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAE9C,aAAa;QACb,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE;gBAC5D,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE;aAClB,CAAC,CAAC;QACL,CAAC;QAED,mBAAmB;QACnB,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,MAAM,WAAW,GAAW;YAC1B,CAAC,EAAE,aAAa,CAAC,CAAC;YAClB,CAAC,EAAE,MAAM;YACT,KAAK,EAAE,aAAa,CAAC,KAAK;YAC1B,MAAM,EAAE,CAAC;SACV,CAAC;QACF,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACvC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAE5C,qBAAqB;QACrB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;YAC1B,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE;gBAC1D,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;aACnB,CAAC,CAAC;QACL,CAAC;QAED,YAAY;QACZ,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;QACzD,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,6BAA6B,EAAE;YACrE,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE;SACvB,CAAC,CAAC;IACL,CAAC;IAEQ,SAAS,CAAC,KAAe;QAChC,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC;YAClB,KAAK,OAAO;gBACV,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,OAAO,IAAI,CAAC;YACd,KAAK,QAAQ;gBACX,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;gBACvB,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,0BAA0B;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IAEQ,KAAK;QACZ,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,iCAAiC;QACjC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAyB,EAAE;IAC1D,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,+EAA+E;AAC/E,2BAA2B;AAC3B,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,gBAAgB,CAAC;QACtB,KAAK,EAAE,iBAAiB;QACxB,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,mBAAmB;QAChC,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE;YACpB,IAAI,CAAC,KAAK;gBAAE,OAAO,yBAAyB,CAAC;YAC7C,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtC,OAAO,qBAAqB,CAAC;YAC/B,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAAkB;IACnD,OAAO,gBAAgB,CAAC;QACtB,KAAK,EAAE,gBAAgB;QACvB,KAAK,EAAE,0BAA0B;QACjC,WAAW,EAAE,UAAU;KACxB,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,WAAmB,EAAE,IAAY;IACjE,OAAO,gBAAgB,CAAC;QACtB,KAAK,EAAE,UAAU,IAAI,EAAE;QACvB,KAAK,EAAE,WAAW;QAClB,YAAY,EAAE,WAAW;QACzB,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE;YACpB,IAAI,CAAC,KAAK;gBAAE,OAAO,kBAAkB,CAAC;YACtC,OAAO,IAAI,CAAC;QACd,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Quit Modal
3
+ *
4
+ * Confirmation dialog for quitting or detaching.
5
+ */
6
+ import { ConfirmModal, type ConfirmModalProps } from '../components/modal';
7
+ export type QuitAction = 'kill' | 'detach' | 'cancel';
8
+ export type QuitHandler = (action: QuitAction) => void;
9
+ export interface QuitModalProps extends Omit<ConfirmModalProps, 'message' | 'confirmLabel' | 'cancelLabel'> {
10
+ sessionCount?: number;
11
+ }
12
+ export declare class QuitModal extends ConfirmModal {
13
+ private quitHandler;
14
+ private selectedAction;
15
+ constructor(props?: QuitModalProps);
16
+ /**
17
+ * Set quit handler
18
+ */
19
+ onQuit(handler: QuitHandler): void;
20
+ render(canvas: Canvas, bounds: Bounds): void;
21
+ handleKey(event: KeyEvent): boolean;
22
+ }
23
+ import type { Canvas } from '../renderer';
24
+ import type { Bounds } from '../layout';
25
+ import type { KeyEvent } from '../input/keyboard';
26
+ /**
27
+ * Create a QuitModal
28
+ */
29
+ export declare function createQuitModal(props?: QuitModalProps): QuitModal;
30
+ //# sourceMappingURL=quit-modal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quit-modal.d.ts","sourceRoot":"","sources":["../../../src/ui/modals/quit-modal.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAsB,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAM/F,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;AACtD,MAAM,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;AAEvD,MAAM,WAAW,cAAe,SAAQ,IAAI,CAAC,iBAAiB,EAAE,SAAS,GAAG,cAAc,GAAG,aAAa,CAAC;IACzG,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAMD,qBAAa,SAAU,SAAQ,YAAY;IACzC,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,cAAc,CAAa;gBAEvB,KAAK,GAAE,cAAmB;IAkBtC;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAIzB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAM5C,SAAS,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO;CAkB7C;AAGD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,GAAE,cAAmB,GAAG,SAAS,CAErE"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Quit Modal
3
+ *
4
+ * Confirmation dialog for quitting or detaching.
5
+ */
6
+ import { ConfirmModal } from '../components/modal';
7
+ // ============================================================================
8
+ // QuitModal
9
+ // ============================================================================
10
+ export class QuitModal extends ConfirmModal {
11
+ quitHandler = null;
12
+ selectedAction = 0; // 0: kill, 1: detach, 2: cancel
13
+ constructor(props = {}) {
14
+ const sessionCount = props.sessionCount ?? 0;
15
+ const message = sessionCount > 0
16
+ ? `You have ${sessionCount} active session${sessionCount > 1 ? 's' : ''}. What would you like to do?`
17
+ : 'What would you like to do?';
18
+ super({
19
+ ...props,
20
+ title: props.title ?? 'Quit',
21
+ message,
22
+ confirmLabel: 'Kill',
23
+ cancelLabel: 'Cancel',
24
+ dangerous: true,
25
+ width: props.width ?? 50,
26
+ height: props.height ?? 10,
27
+ });
28
+ }
29
+ /**
30
+ * Set quit handler
31
+ */
32
+ onQuit(handler) {
33
+ this.quitHandler = handler;
34
+ }
35
+ render(canvas, bounds) {
36
+ // Use parent render for now
37
+ // In a full implementation, we'd customize to show 3 buttons
38
+ super.render(canvas, bounds);
39
+ }
40
+ handleKey(event) {
41
+ switch (event.key) {
42
+ case 'k':
43
+ this.quitHandler?.('kill');
44
+ this.close();
45
+ return true;
46
+ case 'd':
47
+ this.quitHandler?.('detach');
48
+ this.close();
49
+ return true;
50
+ case 'escape':
51
+ case 'c':
52
+ this.quitHandler?.('cancel');
53
+ this.close();
54
+ return true;
55
+ }
56
+ return super.handleKey(event);
57
+ }
58
+ }
59
+ /**
60
+ * Create a QuitModal
61
+ */
62
+ export function createQuitModal(props = {}) {
63
+ return new QuitModal(props);
64
+ }
65
+ //# sourceMappingURL=quit-modal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quit-modal.js","sourceRoot":"","sources":["../../../src/ui/modals/quit-modal.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAA8C,MAAM,qBAAqB,CAAC;AAa/F,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,MAAM,OAAO,SAAU,SAAQ,YAAY;IACjC,WAAW,GAAuB,IAAI,CAAC;IACvC,cAAc,GAAW,CAAC,CAAC,CAAC,gCAAgC;IAEpE,YAAY,QAAwB,EAAE;QACpC,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,YAAY,GAAG,CAAC;YAC9B,CAAC,CAAC,YAAY,YAAY,kBAAkB,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,8BAA8B;YACrG,CAAC,CAAC,4BAA4B,CAAC;QAEjC,KAAK,CAAC;YACJ,GAAG,KAAK;YACR,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,MAAM;YAC5B,OAAO;YACP,YAAY,EAAE,MAAM;YACpB,WAAW,EAAE,QAAQ;YACrB,SAAS,EAAE,IAAI;YACf,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE;YACxB,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,EAAE;SAC3B,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,OAAoB;QACzB,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;IAC7B,CAAC;IAEQ,MAAM,CAAC,MAAc,EAAE,MAAc;QAC5C,4BAA4B;QAC5B,6DAA6D;QAC7D,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,CAAC;IAEQ,SAAS,CAAC,KAAe;QAChC,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC;YAClB,KAAK,GAAG;gBACN,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC;gBAC3B,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,OAAO,IAAI,CAAC;YACd,KAAK,GAAG;gBACN,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC;gBAC7B,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,OAAO,IAAI,CAAC;YACd,KAAK,QAAQ,CAAC;YACd,KAAK,GAAG;gBACN,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC;gBAC7B,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;CACF;AAOD;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,QAAwB,EAAE;IACxD,OAAO,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,206 @@
1
+ /**
2
+ * ANSI Escape Code Utilities
3
+ *
4
+ * Helper functions for generating ANSI escape sequences for terminal control.
5
+ */
6
+ export declare const ESC = "\u001B";
7
+ export declare const CSI = "\u001B[";
8
+ /**
9
+ * Move cursor to position (1-indexed)
10
+ */
11
+ export declare function moveTo(row: number, col: number): string;
12
+ /**
13
+ * Move cursor up by n lines
14
+ */
15
+ export declare function moveUp(n?: number): string;
16
+ /**
17
+ * Move cursor down by n lines
18
+ */
19
+ export declare function moveDown(n?: number): string;
20
+ /**
21
+ * Move cursor right by n columns
22
+ */
23
+ export declare function moveRight(n?: number): string;
24
+ /**
25
+ * Move cursor left by n columns
26
+ */
27
+ export declare function moveLeft(n?: number): string;
28
+ /**
29
+ * Save cursor position
30
+ */
31
+ export declare function saveCursor(): string;
32
+ /**
33
+ * Restore cursor position
34
+ */
35
+ export declare function restoreCursor(): string;
36
+ /**
37
+ * Hide cursor
38
+ */
39
+ export declare function hideCursor(): string;
40
+ /**
41
+ * Show cursor
42
+ */
43
+ export declare function showCursor(): string;
44
+ /**
45
+ * Clear entire screen
46
+ */
47
+ export declare function clearScreen(): string;
48
+ /**
49
+ * Clear from cursor to end of screen
50
+ */
51
+ export declare function clearToEnd(): string;
52
+ /**
53
+ * Clear from cursor to beginning of screen
54
+ */
55
+ export declare function clearToStart(): string;
56
+ /**
57
+ * Clear entire line
58
+ */
59
+ export declare function clearLine(): string;
60
+ /**
61
+ * Clear from cursor to end of line
62
+ */
63
+ export declare function clearLineToEnd(): string;
64
+ /**
65
+ * Clear from cursor to start of line
66
+ */
67
+ export declare function clearLineToStart(): string;
68
+ /**
69
+ * Enter alternate screen buffer
70
+ */
71
+ export declare function enterAlternateScreen(): string;
72
+ /**
73
+ * Exit alternate screen buffer
74
+ */
75
+ export declare function exitAlternateScreen(): string;
76
+ /**
77
+ * Enable SGR mouse tracking
78
+ */
79
+ export declare function enableMouse(): string;
80
+ /**
81
+ * Disable SGR mouse tracking
82
+ */
83
+ export declare function disableMouse(): string;
84
+ /**
85
+ * Reset all attributes
86
+ */
87
+ export declare function reset(): string;
88
+ /**
89
+ * Apply bold style
90
+ */
91
+ export declare function bold(): string;
92
+ /**
93
+ * Apply dim style
94
+ */
95
+ export declare function dim(): string;
96
+ /**
97
+ * Apply italic style
98
+ */
99
+ export declare function italic(): string;
100
+ /**
101
+ * Apply underline style
102
+ */
103
+ export declare function underline(): string;
104
+ /**
105
+ * Apply blink style
106
+ */
107
+ export declare function blink(): string;
108
+ /**
109
+ * Apply reverse (swap fg/bg)
110
+ */
111
+ export declare function reverse(): string;
112
+ /**
113
+ * Apply hidden style
114
+ */
115
+ export declare function hidden(): string;
116
+ /**
117
+ * Apply strikethrough style
118
+ */
119
+ export declare function strikethrough(): string;
120
+ export declare const fg: {
121
+ black: string;
122
+ red: string;
123
+ green: string;
124
+ yellow: string;
125
+ blue: string;
126
+ magenta: string;
127
+ cyan: string;
128
+ white: string;
129
+ default: string;
130
+ brightBlack: string;
131
+ brightRed: string;
132
+ brightGreen: string;
133
+ brightYellow: string;
134
+ brightBlue: string;
135
+ brightMagenta: string;
136
+ brightCyan: string;
137
+ brightWhite: string;
138
+ };
139
+ export declare const bg: {
140
+ black: string;
141
+ red: string;
142
+ green: string;
143
+ yellow: string;
144
+ blue: string;
145
+ magenta: string;
146
+ cyan: string;
147
+ white: string;
148
+ default: string;
149
+ brightBlack: string;
150
+ brightRed: string;
151
+ brightGreen: string;
152
+ brightYellow: string;
153
+ brightBlue: string;
154
+ brightMagenta: string;
155
+ brightCyan: string;
156
+ brightWhite: string;
157
+ };
158
+ /**
159
+ * Set foreground color using 256-color palette
160
+ */
161
+ export declare function fg256(colorCode: number): string;
162
+ /**
163
+ * Set background color using 256-color palette
164
+ */
165
+ export declare function bg256(colorCode: number): string;
166
+ /**
167
+ * Set foreground color using RGB values
168
+ */
169
+ export declare function fgRgb(r: number, g: number, b: number): string;
170
+ /**
171
+ * Set background color using RGB values
172
+ */
173
+ export declare function bgRgb(r: number, g: number, b: number): string;
174
+ /**
175
+ * Set foreground color using hex value
176
+ */
177
+ export declare function fgHex(hex: string): string;
178
+ /**
179
+ * Set background color using hex value
180
+ */
181
+ export declare function bgHex(hex: string): string;
182
+ /**
183
+ * Convert hex color to RGB
184
+ */
185
+ export declare function hexToRgb(hex: string): {
186
+ r: number;
187
+ g: number;
188
+ b: number;
189
+ };
190
+ /**
191
+ * Apply multiple styles at once
192
+ */
193
+ export declare function style(...codes: string[]): string;
194
+ /**
195
+ * Wrap text with style and reset
196
+ */
197
+ export declare function styled(text: string, ...codes: string[]): string;
198
+ /**
199
+ * Strip all ANSI escape codes from text
200
+ */
201
+ export declare function stripAnsi(text: string): string;
202
+ /**
203
+ * Calculate visible width of text (excluding ANSI codes)
204
+ */
205
+ export declare function visibleLength(text: string): number;
206
+ //# sourceMappingURL=ansi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ansi.d.ts","sourceRoot":"","sources":["../../../src/ui/renderer/ansi.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,eAAO,MAAM,GAAG,WAAS,CAAC;AAC1B,eAAO,MAAM,GAAG,YAAY,CAAC;AAM7B;;GAEG;AACH,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,GAAE,MAAU,GAAG,MAAM,CAE5C;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,GAAE,MAAU,GAAG,MAAM,CAE9C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,GAAE,MAAU,GAAG,MAAM,CAE/C;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,GAAE,MAAU,GAAG,MAAM,CAE9C;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAMD;;GAEG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAMD;;GAEG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAMD;;GAEG;AACH,wBAAgB,KAAK,IAAI,MAAM,CAE9B;AAED;;GAEG;AACH,wBAAgB,IAAI,IAAI,MAAM,CAE7B;AAED;;GAEG;AACH,wBAAgB,GAAG,IAAI,MAAM,CAE5B;AAED;;GAEG;AACH,wBAAgB,MAAM,IAAI,MAAM,CAE/B;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED;;GAEG;AACH,wBAAgB,KAAK,IAAI,MAAM,CAE9B;AAED;;GAEG;AACH,wBAAgB,OAAO,IAAI,MAAM,CAEhC;AAED;;GAEG;AACH,wBAAgB,MAAM,IAAI,MAAM,CAE/B;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAOD,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;;;CAmBd,CAAC;AAGF,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;;;CAmBd,CAAC;AAMF;;GAEG;AACH,wBAAgB,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE/C;AAMD;;GAEG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAGzC;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAGzC;AAMD;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAMzE;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAEhD;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAE/D;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG9C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD"}