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,67 @@
1
+ /**
2
+ * Terminal Bar View
3
+ *
4
+ * Tab bar for terminal switching within a session.
5
+ */
6
+ import type { Canvas } from '../renderer';
7
+ import type { Bounds, Size } from '../layout';
8
+ import type { Terminal } from '../../types';
9
+ import { ContainerComponent, type ComponentProps } from '../components/base';
10
+ import type { KeyEvent } from '../input/keyboard';
11
+ export interface TerminalBarViewProps extends ComponentProps {
12
+ terminals?: Terminal[];
13
+ activeIndex?: number;
14
+ sessionTitle?: string;
15
+ }
16
+ export type TerminalSelectHandler = (terminal: Terminal, index: number) => void;
17
+ export type TerminalCloseHandler = (terminal: Terminal, index: number) => void;
18
+ export type TerminalCreateHandler = () => void;
19
+ export declare class TerminalBarView extends ContainerComponent {
20
+ private terminals;
21
+ private activeIndex;
22
+ private sessionTitle;
23
+ private tabs;
24
+ private selectHandler;
25
+ private closeHandler;
26
+ private createHandler;
27
+ constructor(props?: TerminalBarViewProps);
28
+ /**
29
+ * Set terminals
30
+ */
31
+ setTerminals(terminals: Terminal[]): void;
32
+ /**
33
+ * Set active index
34
+ */
35
+ setActiveIndex(index: number): void;
36
+ /**
37
+ * Set session title
38
+ */
39
+ setSessionTitle(title: string): void;
40
+ /**
41
+ * Set select handler
42
+ */
43
+ onSelect(handler: TerminalSelectHandler): void;
44
+ /**
45
+ * Set close handler
46
+ */
47
+ onClose(handler: TerminalCloseHandler): void;
48
+ /**
49
+ * Set create handler
50
+ */
51
+ onCreate(handler: TerminalCreateHandler): void;
52
+ /**
53
+ * Update tabs from terminals
54
+ */
55
+ private updateTabs;
56
+ getPreferredSize(): Size;
57
+ getMinSize(): Size;
58
+ render(canvas: Canvas, bounds: Bounds): void;
59
+ handleKey(event: KeyEvent): boolean;
60
+ focus(): void;
61
+ blur(): void;
62
+ }
63
+ /**
64
+ * Create a TerminalBarView
65
+ */
66
+ export declare function createTerminalBarView(props?: TerminalBarViewProps): TerminalBarView;
67
+ //# sourceMappingURL=terminal-bar-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-bar-view.d.ts","sourceRoot":"","sources":["../../../src/ui/views/terminal-bar-view.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,kBAAkB,EAAE,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAE7E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAMlD,MAAM,WAAW,oBAAqB,SAAQ,cAAc;IAC1D,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,qBAAqB,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AAChF,MAAM,MAAM,oBAAoB,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AAC/E,MAAM,MAAM,qBAAqB,GAAG,MAAM,IAAI,CAAC;AAM/C,qBAAa,eAAgB,SAAQ,kBAAkB;IACrD,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,YAAY,CAAc;IAElC,OAAO,CAAC,IAAI,CAAiB;IAC7B,OAAO,CAAC,aAAa,CAAsC;IAC3D,OAAO,CAAC,YAAY,CAAqC;IACzD,OAAO,CAAC,aAAa,CAAsC;gBAE/C,KAAK,GAAE,oBAAyB;IA4B5C;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI;IAKzC;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKnC;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIpC;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,qBAAqB,GAAG,IAAI;IAI9C;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI;IAI5C;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,qBAAqB,GAAG,IAAI;IAI9C;;OAEG;IACH,OAAO,CAAC,UAAU;IAYlB,gBAAgB,IAAI,IAAI;IAOxB,UAAU,IAAI,IAAI;IAIlB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAgCnC,SAAS,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO;IA8BnC,KAAK,IAAI,IAAI;IAKb,IAAI,IAAI,IAAI;CAItB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,GAAE,oBAAyB,GAAG,eAAe,CAEvF"}
@@ -0,0 +1,172 @@
1
+ /**
2
+ * Terminal Bar View
3
+ *
4
+ * Tab bar for terminal switching within a session.
5
+ */
6
+ import { getTheme } from '../renderer/colors';
7
+ import { ContainerComponent } from '../components/base';
8
+ import { createTabs } from '../components/tabs';
9
+ // ============================================================================
10
+ // TerminalBarView
11
+ // ============================================================================
12
+ export class TerminalBarView extends ContainerComponent {
13
+ terminals = [];
14
+ activeIndex = 0;
15
+ sessionTitle = '';
16
+ tabs;
17
+ selectHandler = null;
18
+ closeHandler = null;
19
+ createHandler = null;
20
+ constructor(props = {}) {
21
+ super(props);
22
+ this.terminals = props.terminals ?? [];
23
+ this.activeIndex = props.activeIndex ?? 0;
24
+ this.sessionTitle = props.sessionTitle ?? '';
25
+ // Create tabs component
26
+ this.tabs = createTabs();
27
+ this.addChild(this.tabs);
28
+ // Set up handlers
29
+ this.tabs.onSelect((tab, index) => {
30
+ const terminal = this.terminals[index];
31
+ if (terminal && this.selectHandler) {
32
+ this.selectHandler(terminal, index);
33
+ }
34
+ });
35
+ this.tabs.onClose((tab, index) => {
36
+ const terminal = this.terminals[index];
37
+ if (terminal && this.closeHandler) {
38
+ this.closeHandler(terminal, index);
39
+ }
40
+ });
41
+ this.updateTabs();
42
+ }
43
+ /**
44
+ * Set terminals
45
+ */
46
+ setTerminals(terminals) {
47
+ this.terminals = terminals;
48
+ this.updateTabs();
49
+ }
50
+ /**
51
+ * Set active index
52
+ */
53
+ setActiveIndex(index) {
54
+ this.activeIndex = index;
55
+ this.tabs.setActiveIndex(index);
56
+ }
57
+ /**
58
+ * Set session title
59
+ */
60
+ setSessionTitle(title) {
61
+ this.sessionTitle = title;
62
+ }
63
+ /**
64
+ * Set select handler
65
+ */
66
+ onSelect(handler) {
67
+ this.selectHandler = handler;
68
+ }
69
+ /**
70
+ * Set close handler
71
+ */
72
+ onClose(handler) {
73
+ this.closeHandler = handler;
74
+ }
75
+ /**
76
+ * Set create handler
77
+ */
78
+ onCreate(handler) {
79
+ this.createHandler = handler;
80
+ }
81
+ /**
82
+ * Update tabs from terminals
83
+ */
84
+ updateTabs() {
85
+ const tabs = this.terminals.map((terminal, index) => ({
86
+ id: terminal.id,
87
+ label: terminal.title,
88
+ data: terminal,
89
+ closable: this.terminals.length > 1, // Don't allow closing last terminal
90
+ }));
91
+ this.tabs.setTabs(tabs);
92
+ this.tabs.setActiveIndex(this.activeIndex);
93
+ }
94
+ getPreferredSize() {
95
+ return {
96
+ width: 80,
97
+ height: 1,
98
+ };
99
+ }
100
+ getMinSize() {
101
+ return { width: 20, height: 1 };
102
+ }
103
+ render(canvas, bounds) {
104
+ if (!this.visible || bounds.height < 1)
105
+ return;
106
+ const theme = getTheme();
107
+ // Draw background
108
+ canvas.fill(bounds.x, bounds.y, bounds.width, bounds.height, ' ', {
109
+ bg: theme.surface.bg,
110
+ });
111
+ // Calculate space for tabs and new button
112
+ const newButtonWidth = 4; // " + "
113
+ const tabsWidth = bounds.width - newButtonWidth;
114
+ // Render tabs
115
+ if (tabsWidth > 0) {
116
+ const tabsBounds = {
117
+ x: bounds.x,
118
+ y: bounds.y,
119
+ width: tabsWidth,
120
+ height: 1,
121
+ };
122
+ this.tabs.render(canvas, tabsBounds);
123
+ }
124
+ // Render new terminal button
125
+ const buttonX = bounds.x + tabsWidth;
126
+ canvas.drawText(buttonX, bounds.y, ' + ', {
127
+ fg: theme.textMuted.fg,
128
+ });
129
+ }
130
+ handleKey(event) {
131
+ switch (event.key) {
132
+ case 't':
133
+ case 'ctrl+t':
134
+ this.createHandler?.();
135
+ return true;
136
+ case 'ctrl+n':
137
+ this.tabs.selectNext();
138
+ return true;
139
+ case 'ctrl+p':
140
+ this.tabs.selectPrevious();
141
+ return true;
142
+ }
143
+ // Number keys for direct selection
144
+ if (event.key >= '1' && event.key <= '9') {
145
+ const index = parseInt(event.key, 10) - 1;
146
+ if (index < this.terminals.length) {
147
+ this.tabs.setActiveIndex(index);
148
+ const terminal = this.terminals[index];
149
+ if (terminal && this.selectHandler) {
150
+ this.selectHandler(terminal, index);
151
+ }
152
+ return true;
153
+ }
154
+ }
155
+ return this.tabs.handleKey(event);
156
+ }
157
+ focus() {
158
+ super.focus();
159
+ this.tabs.focus();
160
+ }
161
+ blur() {
162
+ super.blur();
163
+ this.tabs.blur();
164
+ }
165
+ }
166
+ /**
167
+ * Create a TerminalBarView
168
+ */
169
+ export function createTerminalBarView(props = {}) {
170
+ return new TerminalBarView(props);
171
+ }
172
+ //# sourceMappingURL=terminal-bar-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-bar-view.js","sourceRoot":"","sources":["../../../src/ui/views/terminal-bar-view.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Welcome View
3
+ *
4
+ * Displayed when no session is active.
5
+ */
6
+ import type { Canvas } from '../renderer';
7
+ import type { Bounds, Size } from '../layout';
8
+ import { Component, type ComponentProps } from '../components/base';
9
+ export interface WelcomeViewProps extends ComponentProps {
10
+ projectName?: string;
11
+ version?: string;
12
+ }
13
+ export declare class WelcomeView extends Component {
14
+ private projectName;
15
+ private version;
16
+ constructor(props?: WelcomeViewProps);
17
+ /**
18
+ * Set project name
19
+ */
20
+ setProjectName(name: string): void;
21
+ /**
22
+ * Set version
23
+ */
24
+ setVersion(version: string): void;
25
+ getPreferredSize(): Size;
26
+ getMinSize(): Size;
27
+ render(canvas: Canvas, bounds: Bounds): void;
28
+ private buildContent;
29
+ }
30
+ /**
31
+ * Create a WelcomeView
32
+ */
33
+ export declare function createWelcomeView(props?: WelcomeViewProps): WelcomeView;
34
+ //# sourceMappingURL=welcome-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"welcome-view.d.ts","sourceRoot":"","sources":["../../../src/ui/views/welcome-view.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAG9C,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAOpE,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IACtD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAMD,qBAAa,WAAY,SAAQ,SAAS;IACxC,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,OAAO,CAAmB;gBAEtB,KAAK,GAAE,gBAAqB;IAMxC;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIlC;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIjC,gBAAgB,IAAI,IAAI;IAIxB,UAAU,IAAI,IAAI;IAIlB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IA8C5C,OAAO,CAAC,YAAY;CA+BrB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,GAAE,gBAAqB,GAAG,WAAW,CAE3E"}
@@ -0,0 +1,116 @@
1
+ /**
2
+ * Welcome View
3
+ *
4
+ * Displayed when no session is active.
5
+ */
6
+ import { getTheme } from '../renderer/colors';
7
+ import { centerInBounds } from '../layout';
8
+ import { Component } from '../components/base';
9
+ // ============================================================================
10
+ // WelcomeView
11
+ // ============================================================================
12
+ export class WelcomeView extends Component {
13
+ projectName = 'Claude Code++';
14
+ version = '0.1.0';
15
+ constructor(props = {}) {
16
+ super(props);
17
+ this.projectName = props.projectName ?? 'Claude Code++';
18
+ this.version = props.version ?? '0.1.0';
19
+ }
20
+ /**
21
+ * Set project name
22
+ */
23
+ setProjectName(name) {
24
+ this.projectName = name;
25
+ }
26
+ /**
27
+ * Set version
28
+ */
29
+ setVersion(version) {
30
+ this.version = version;
31
+ }
32
+ getPreferredSize() {
33
+ return { width: 60, height: 20 };
34
+ }
35
+ getMinSize() {
36
+ return { width: 40, height: 10 };
37
+ }
38
+ render(canvas, bounds) {
39
+ if (!this.visible)
40
+ return;
41
+ const theme = getTheme();
42
+ // Center content
43
+ const content = this.buildContent();
44
+ const contentHeight = content.length;
45
+ const contentWidth = Math.max(...content.map((line) => line.length));
46
+ const contentBounds = centerInBounds(bounds, {
47
+ width: Math.min(contentWidth, bounds.width),
48
+ height: Math.min(contentHeight, bounds.height),
49
+ });
50
+ // Draw content
51
+ for (let i = 0; i < content.length && i < bounds.height; i++) {
52
+ const line = content[i];
53
+ const y = contentBounds.y + i;
54
+ if (i === 0) {
55
+ // Title
56
+ canvas.drawText(contentBounds.x, y, line, {
57
+ fg: theme.primary.fg,
58
+ bold: true,
59
+ });
60
+ }
61
+ else if (i === 1) {
62
+ // Version
63
+ canvas.drawText(contentBounds.x, y, line, {
64
+ fg: theme.textMuted.fg,
65
+ });
66
+ }
67
+ else if (i === 3) {
68
+ // Section header
69
+ canvas.drawText(contentBounds.x, y, line, {
70
+ fg: theme.text.fg,
71
+ bold: true,
72
+ });
73
+ }
74
+ else {
75
+ // Normal text
76
+ canvas.drawText(contentBounds.x, y, line, {
77
+ fg: theme.textMuted.fg,
78
+ });
79
+ }
80
+ }
81
+ }
82
+ buildContent() {
83
+ const lines = [];
84
+ // Logo/Title
85
+ lines.push(this.projectName);
86
+ lines.push(`v${this.version}`);
87
+ lines.push('');
88
+ // Quick start
89
+ lines.push('Quick Start');
90
+ lines.push('─'.repeat(40));
91
+ lines.push('');
92
+ lines.push(' n Create new session');
93
+ lines.push(' w Create new worktree');
94
+ lines.push(' Enter Activate selection');
95
+ lines.push(' j/k Navigate up/down');
96
+ lines.push('');
97
+ lines.push(' t New terminal');
98
+ lines.push(' 1-9 Switch terminal');
99
+ lines.push('');
100
+ lines.push(' ? Show all keybindings');
101
+ lines.push(' q Quit');
102
+ lines.push(' d Detach');
103
+ lines.push('');
104
+ // Project info
105
+ lines.push('─'.repeat(40));
106
+ lines.push(` Project: ${this.projectName}`);
107
+ return lines;
108
+ }
109
+ }
110
+ /**
111
+ * Create a WelcomeView
112
+ */
113
+ export function createWelcomeView(props = {}) {
114
+ return new WelcomeView(props);
115
+ }
116
+ //# sourceMappingURL=welcome-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"welcome-view.js","sourceRoot":"","sources":["../../../src/ui/views/welcome-view.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAuB,MAAM,oBAAoB,CAAC;AAYpE,+EAA+E;AAC/E,cAAc;AACd,+EAA+E;AAE/E,MAAM,OAAO,WAAY,SAAQ,SAAS;IAChC,WAAW,GAAW,eAAe,CAAC;IACtC,OAAO,GAAW,OAAO,CAAC;IAElC,YAAY,QAA0B,EAAE;QACtC,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,eAAe,CAAC;QACxD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,OAAO,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,IAAY;QACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,OAAe;QACxB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,gBAAgB;QACd,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACnC,CAAC;IAED,UAAU;QACR,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACnC,CAAC;IAED,MAAM,CAAC,MAAc,EAAE,MAAc;QACnC,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAE1B,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QAEzB,iBAAiB;QACjB,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACpC,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;QACrC,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAErE,MAAM,aAAa,GAAG,cAAc,CAAC,MAAM,EAAE;YAC3C,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC;YAC3C,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC;SAC/C,CAAC,CAAC;QAEH,eAAe;QACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7D,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACxB,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC;YAE9B,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACZ,QAAQ;gBACR,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE;oBACxC,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;oBACpB,IAAI,EAAE,IAAI;iBACX,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACnB,UAAU;gBACV,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE;oBACxC,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE;iBACvB,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACnB,iBAAiB;gBACjB,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE;oBACxC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE;oBACjB,IAAI,EAAE,IAAI;iBACX,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,cAAc;gBACd,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE;oBACxC,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE;iBACvB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAEO,YAAY;QAClB,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,aAAa;QACb,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,cAAc;QACd,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC9C,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACvC,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QAC/C,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,eAAe;QACf,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAE7C,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAA0B,EAAE;IAC5D,OAAO,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Async Utilities
3
+ *
4
+ * Helper functions for asynchronous operations.
5
+ */
6
+ /**
7
+ * Delay execution for a specified number of milliseconds
8
+ * @param ms - Milliseconds to wait
9
+ * @returns Promise that resolves after the delay
10
+ */
11
+ export declare function delay(ms: number): Promise<void>;
12
+ /**
13
+ * Create a debounced version of a function
14
+ * @param fn - Function to debounce
15
+ * @param ms - Debounce delay in milliseconds
16
+ * @returns Debounced function
17
+ */
18
+ export declare function debounce<T extends (...args: unknown[]) => unknown>(fn: T, ms: number): (...args: Parameters<T>) => void;
19
+ /**
20
+ * Create a throttled version of a function
21
+ * @param fn - Function to throttle
22
+ * @param ms - Throttle interval in milliseconds
23
+ * @returns Throttled function
24
+ */
25
+ export declare function throttle<T extends (...args: unknown[]) => unknown>(fn: T, ms: number): (...args: Parameters<T>) => void;
26
+ /**
27
+ * Retry a function with exponential backoff
28
+ * @param fn - Async function to retry
29
+ * @param options - Retry options
30
+ * @returns Result of the function
31
+ */
32
+ export declare function retry<T>(fn: () => Promise<T>, options?: {
33
+ maxAttempts?: number;
34
+ initialDelay?: number;
35
+ maxDelay?: number;
36
+ backoffFactor?: number;
37
+ shouldRetry?: (error: unknown) => boolean;
38
+ }): Promise<T>;
39
+ /**
40
+ * Run a function with a timeout
41
+ * @param fn - Async function to run
42
+ * @param ms - Timeout in milliseconds
43
+ * @param errorMessage - Error message for timeout
44
+ * @returns Result of the function
45
+ */
46
+ export declare function withTimeout<T>(fn: () => Promise<T>, ms: number, errorMessage?: string): Promise<T>;
47
+ /**
48
+ * Run multiple async functions with a concurrency limit
49
+ * @param items - Items to process
50
+ * @param fn - Async function to run for each item
51
+ * @param concurrency - Maximum concurrent operations
52
+ * @returns Array of results
53
+ */
54
+ export declare function mapWithConcurrency<T, R>(items: T[], fn: (item: T, index: number) => Promise<R>, concurrency: number): Promise<R[]>;
55
+ /**
56
+ * Create a deferred promise
57
+ * @returns Object with promise and resolve/reject functions
58
+ */
59
+ export declare function createDeferred<T>(): {
60
+ promise: Promise<T>;
61
+ resolve: (value: T) => void;
62
+ reject: (reason?: unknown) => void;
63
+ };
64
+ /**
65
+ * Type for an unsubscribe function
66
+ */
67
+ export type Unsubscribe = () => void;
68
+ //# sourceMappingURL=async.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async.d.ts","sourceRoot":"","sources":["../../src/utils/async.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,EAChE,EAAE,EAAE,CAAC,EACL,EAAE,EAAE,MAAM,GACT,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAYlC;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,EAChE,EAAE,EAAE,CAAC,EACL,EAAE,EAAE,MAAM,GACT,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAmBlC;AAED;;;;;GAKG;AACH,wBAAsB,KAAK,CAAC,CAAC,EAC3B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,GAAE;IACP,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;CACtC,GACL,OAAO,CAAC,CAAC,CAAC,CA4BZ;AAED;;;;;;GAMG;AACH,wBAAsB,WAAW,CAAC,CAAC,EACjC,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,EAAE,EAAE,MAAM,EACV,YAAY,GAAE,MAA8B,GAC3C,OAAO,CAAC,CAAC,CAAC,CAgBZ;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAC3C,KAAK,EAAE,CAAC,EAAE,EACV,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,EAC1C,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,CAAC,EAAE,CAAC,CAkBd;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,CAAC,KAAK;IACnC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC5B,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CACpC,CAUA;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC"}
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+ /**
3
+ * Async Utilities
4
+ *
5
+ * Helper functions for asynchronous operations.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.delay = delay;
9
+ exports.debounce = debounce;
10
+ exports.throttle = throttle;
11
+ exports.retry = retry;
12
+ exports.withTimeout = withTimeout;
13
+ exports.mapWithConcurrency = mapWithConcurrency;
14
+ exports.createDeferred = createDeferred;
15
+ /**
16
+ * Delay execution for a specified number of milliseconds
17
+ * @param ms - Milliseconds to wait
18
+ * @returns Promise that resolves after the delay
19
+ */
20
+ function delay(ms) {
21
+ return new Promise((resolve) => setTimeout(resolve, ms));
22
+ }
23
+ /**
24
+ * Create a debounced version of a function
25
+ * @param fn - Function to debounce
26
+ * @param ms - Debounce delay in milliseconds
27
+ * @returns Debounced function
28
+ */
29
+ function debounce(fn, ms) {
30
+ let timeoutId = null;
31
+ return (...args) => {
32
+ if (timeoutId !== null) {
33
+ clearTimeout(timeoutId);
34
+ }
35
+ timeoutId = setTimeout(() => {
36
+ fn(...args);
37
+ timeoutId = null;
38
+ }, ms);
39
+ };
40
+ }
41
+ /**
42
+ * Create a throttled version of a function
43
+ * @param fn - Function to throttle
44
+ * @param ms - Throttle interval in milliseconds
45
+ * @returns Throttled function
46
+ */
47
+ function throttle(fn, ms) {
48
+ let lastCall = 0;
49
+ let timeoutId = null;
50
+ return (...args) => {
51
+ const now = Date.now();
52
+ const timeSinceLastCall = now - lastCall;
53
+ if (timeSinceLastCall >= ms) {
54
+ lastCall = now;
55
+ fn(...args);
56
+ }
57
+ else if (timeoutId === null) {
58
+ timeoutId = setTimeout(() => {
59
+ lastCall = Date.now();
60
+ timeoutId = null;
61
+ fn(...args);
62
+ }, ms - timeSinceLastCall);
63
+ }
64
+ };
65
+ }
66
+ /**
67
+ * Retry a function with exponential backoff
68
+ * @param fn - Async function to retry
69
+ * @param options - Retry options
70
+ * @returns Result of the function
71
+ */
72
+ async function retry(fn, options = {}) {
73
+ const { maxAttempts = 3, initialDelay = 100, maxDelay = 5000, backoffFactor = 2, shouldRetry = () => true, } = options;
74
+ let lastError;
75
+ let currentDelay = initialDelay;
76
+ for (let attempt = 1; attempt <= maxAttempts; attempt++) {
77
+ try {
78
+ return await fn();
79
+ }
80
+ catch (error) {
81
+ lastError = error;
82
+ if (attempt === maxAttempts || !shouldRetry(error)) {
83
+ throw error;
84
+ }
85
+ await delay(currentDelay);
86
+ currentDelay = Math.min(currentDelay * backoffFactor, maxDelay);
87
+ }
88
+ }
89
+ throw lastError;
90
+ }
91
+ /**
92
+ * Run a function with a timeout
93
+ * @param fn - Async function to run
94
+ * @param ms - Timeout in milliseconds
95
+ * @param errorMessage - Error message for timeout
96
+ * @returns Result of the function
97
+ */
98
+ async function withTimeout(fn, ms, errorMessage = 'Operation timed out') {
99
+ return new Promise((resolve, reject) => {
100
+ const timeoutId = setTimeout(() => {
101
+ reject(new Error(errorMessage));
102
+ }, ms);
103
+ fn()
104
+ .then((result) => {
105
+ clearTimeout(timeoutId);
106
+ resolve(result);
107
+ })
108
+ .catch((error) => {
109
+ clearTimeout(timeoutId);
110
+ reject(error);
111
+ });
112
+ });
113
+ }
114
+ /**
115
+ * Run multiple async functions with a concurrency limit
116
+ * @param items - Items to process
117
+ * @param fn - Async function to run for each item
118
+ * @param concurrency - Maximum concurrent operations
119
+ * @returns Array of results
120
+ */
121
+ async function mapWithConcurrency(items, fn, concurrency) {
122
+ const results = [];
123
+ let currentIndex = 0;
124
+ async function worker() {
125
+ while (currentIndex < items.length) {
126
+ const index = currentIndex++;
127
+ results[index] = await fn(items[index], index);
128
+ }
129
+ }
130
+ const workers = Array.from({ length: Math.min(concurrency, items.length) }, () => worker());
131
+ await Promise.all(workers);
132
+ return results;
133
+ }
134
+ /**
135
+ * Create a deferred promise
136
+ * @returns Object with promise and resolve/reject functions
137
+ */
138
+ function createDeferred() {
139
+ let resolve;
140
+ let reject;
141
+ const promise = new Promise((res, rej) => {
142
+ resolve = res;
143
+ reject = rej;
144
+ });
145
+ return { promise, resolve, reject };
146
+ }
147
+ //# sourceMappingURL=async.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async.js","sourceRoot":"","sources":["../../src/utils/async.ts"],"names":[],"mappings":"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"}