@jacques-ai/server 0.0.7-alpha.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 (384) hide show
  1. package/dist/config/config.d.ts +34 -0
  2. package/dist/config/config.d.ts.map +1 -0
  3. package/dist/config/config.js +32 -0
  4. package/dist/config/config.js.map +1 -0
  5. package/dist/connection/applescript.d.ts +46 -0
  6. package/dist/connection/applescript.d.ts.map +1 -0
  7. package/dist/connection/applescript.js +62 -0
  8. package/dist/connection/applescript.js.map +1 -0
  9. package/dist/connection/applescript.test.d.ts +5 -0
  10. package/dist/connection/applescript.test.d.ts.map +1 -0
  11. package/dist/connection/applescript.test.js +64 -0
  12. package/dist/connection/applescript.test.js.map +1 -0
  13. package/dist/connection/constants.d.ts +88 -0
  14. package/dist/connection/constants.d.ts.map +1 -0
  15. package/dist/connection/constants.js +110 -0
  16. package/dist/connection/constants.js.map +1 -0
  17. package/dist/connection/git-info.d.ts +30 -0
  18. package/dist/connection/git-info.d.ts.map +1 -0
  19. package/dist/connection/git-info.js +52 -0
  20. package/dist/connection/git-info.js.map +1 -0
  21. package/dist/connection/git-info.test.d.ts +5 -0
  22. package/dist/connection/git-info.test.d.ts.map +1 -0
  23. package/dist/connection/git-info.test.js +35 -0
  24. package/dist/connection/git-info.test.js.map +1 -0
  25. package/dist/connection/index.d.ts +19 -0
  26. package/dist/connection/index.d.ts.map +1 -0
  27. package/dist/connection/index.js +36 -0
  28. package/dist/connection/index.js.map +1 -0
  29. package/dist/connection/process-detection.d.ts +58 -0
  30. package/dist/connection/process-detection.d.ts.map +1 -0
  31. package/dist/connection/process-detection.js +239 -0
  32. package/dist/connection/process-detection.js.map +1 -0
  33. package/dist/connection/process-detection.test.d.ts +5 -0
  34. package/dist/connection/process-detection.test.d.ts.map +1 -0
  35. package/dist/connection/process-detection.test.js +43 -0
  36. package/dist/connection/process-detection.test.js.map +1 -0
  37. package/dist/connection/session-discovery.d.ts +55 -0
  38. package/dist/connection/session-discovery.d.ts.map +1 -0
  39. package/dist/connection/session-discovery.js +311 -0
  40. package/dist/connection/session-discovery.js.map +1 -0
  41. package/dist/connection/terminal-key.d.ts +126 -0
  42. package/dist/connection/terminal-key.d.ts.map +1 -0
  43. package/dist/connection/terminal-key.js +271 -0
  44. package/dist/connection/terminal-key.js.map +1 -0
  45. package/dist/connection/terminal-key.test.d.ts +5 -0
  46. package/dist/connection/terminal-key.test.d.ts.map +1 -0
  47. package/dist/connection/terminal-key.test.js +221 -0
  48. package/dist/connection/terminal-key.test.js.map +1 -0
  49. package/dist/connection/worktree.d.ts +114 -0
  50. package/dist/connection/worktree.d.ts.map +1 -0
  51. package/dist/connection/worktree.js +320 -0
  52. package/dist/connection/worktree.js.map +1 -0
  53. package/dist/connection/worktree.test.d.ts +5 -0
  54. package/dist/connection/worktree.test.d.ts.map +1 -0
  55. package/dist/connection/worktree.test.js +113 -0
  56. package/dist/connection/worktree.test.js.map +1 -0
  57. package/dist/focus-watcher.d.ts +51 -0
  58. package/dist/focus-watcher.d.ts.map +1 -0
  59. package/dist/focus-watcher.js +169 -0
  60. package/dist/focus-watcher.js.map +1 -0
  61. package/dist/handlers/event-handler.d.ts +93 -0
  62. package/dist/handlers/event-handler.d.ts.map +1 -0
  63. package/dist/handlers/event-handler.js +196 -0
  64. package/dist/handlers/event-handler.js.map +1 -0
  65. package/dist/handlers/event-handler.test.d.ts +5 -0
  66. package/dist/handlers/event-handler.test.d.ts.map +1 -0
  67. package/dist/handlers/event-handler.test.js +305 -0
  68. package/dist/handlers/event-handler.test.js.map +1 -0
  69. package/dist/handlers/session-handler.d.ts +23 -0
  70. package/dist/handlers/session-handler.d.ts.map +1 -0
  71. package/dist/handlers/session-handler.js +104 -0
  72. package/dist/handlers/session-handler.js.map +1 -0
  73. package/dist/handlers/session-handler.test.d.ts +5 -0
  74. package/dist/handlers/session-handler.test.d.ts.map +1 -0
  75. package/dist/handlers/session-handler.test.js +89 -0
  76. package/dist/handlers/session-handler.test.js.map +1 -0
  77. package/dist/handlers/settings-handler.d.ts +32 -0
  78. package/dist/handlers/settings-handler.d.ts.map +1 -0
  79. package/dist/handlers/settings-handler.js +127 -0
  80. package/dist/handlers/settings-handler.js.map +1 -0
  81. package/dist/handlers/settings-handler.test.d.ts +5 -0
  82. package/dist/handlers/settings-handler.test.d.ts.map +1 -0
  83. package/dist/handlers/settings-handler.test.js +105 -0
  84. package/dist/handlers/settings-handler.test.js.map +1 -0
  85. package/dist/handlers/window-handler.d.ts +30 -0
  86. package/dist/handlers/window-handler.d.ts.map +1 -0
  87. package/dist/handlers/window-handler.js +486 -0
  88. package/dist/handlers/window-handler.js.map +1 -0
  89. package/dist/handlers/window-handler.test.d.ts +8 -0
  90. package/dist/handlers/window-handler.test.d.ts.map +1 -0
  91. package/dist/handlers/window-handler.test.js +167 -0
  92. package/dist/handlers/window-handler.test.js.map +1 -0
  93. package/dist/handlers/worktree-handler.d.ts +28 -0
  94. package/dist/handlers/worktree-handler.d.ts.map +1 -0
  95. package/dist/handlers/worktree-handler.js +268 -0
  96. package/dist/handlers/worktree-handler.js.map +1 -0
  97. package/dist/handlers/worktree-handler.test.d.ts +8 -0
  98. package/dist/handlers/worktree-handler.test.d.ts.map +1 -0
  99. package/dist/handlers/worktree-handler.test.js +118 -0
  100. package/dist/handlers/worktree-handler.test.js.map +1 -0
  101. package/dist/handlers/ws-utils.d.ts +12 -0
  102. package/dist/handlers/ws-utils.d.ts.map +1 -0
  103. package/dist/handlers/ws-utils.js +16 -0
  104. package/dist/handlers/ws-utils.js.map +1 -0
  105. package/dist/http-api.d.ts +26 -0
  106. package/dist/http-api.d.ts.map +1 -0
  107. package/dist/http-api.js +148 -0
  108. package/dist/http-api.js.map +1 -0
  109. package/dist/logger.d.ts +42 -0
  110. package/dist/logger.d.ts.map +1 -0
  111. package/dist/logger.js +147 -0
  112. package/dist/logger.js.map +1 -0
  113. package/dist/logging/logger-factory.d.ts +51 -0
  114. package/dist/logging/logger-factory.d.ts.map +1 -0
  115. package/dist/logging/logger-factory.js +59 -0
  116. package/dist/logging/logger-factory.js.map +1 -0
  117. package/dist/mcp/search-tool.d.ts +65 -0
  118. package/dist/mcp/search-tool.d.ts.map +1 -0
  119. package/dist/mcp/search-tool.js +176 -0
  120. package/dist/mcp/search-tool.js.map +1 -0
  121. package/dist/mcp/server.d.ts +9 -0
  122. package/dist/mcp/server.d.ts.map +1 -0
  123. package/dist/mcp/server.js +152 -0
  124. package/dist/mcp/server.js.map +1 -0
  125. package/dist/process-scanner.d.ts +96 -0
  126. package/dist/process-scanner.d.ts.map +1 -0
  127. package/dist/process-scanner.js +194 -0
  128. package/dist/process-scanner.js.map +1 -0
  129. package/dist/routes/__tests__/archive-routes.test.d.ts +5 -0
  130. package/dist/routes/__tests__/archive-routes.test.d.ts.map +1 -0
  131. package/dist/routes/__tests__/archive-routes.test.js +158 -0
  132. package/dist/routes/__tests__/archive-routes.test.js.map +1 -0
  133. package/dist/routes/__tests__/config-routes.test.d.ts +5 -0
  134. package/dist/routes/__tests__/config-routes.test.d.ts.map +1 -0
  135. package/dist/routes/__tests__/config-routes.test.js +112 -0
  136. package/dist/routes/__tests__/config-routes.test.js.map +1 -0
  137. package/dist/routes/__tests__/http-utils.test.d.ts +5 -0
  138. package/dist/routes/__tests__/http-utils.test.d.ts.map +1 -0
  139. package/dist/routes/__tests__/http-utils.test.js +102 -0
  140. package/dist/routes/__tests__/http-utils.test.js.map +1 -0
  141. package/dist/routes/__tests__/notification-routes.test.d.ts +5 -0
  142. package/dist/routes/__tests__/notification-routes.test.d.ts.map +1 -0
  143. package/dist/routes/__tests__/notification-routes.test.js +91 -0
  144. package/dist/routes/__tests__/notification-routes.test.js.map +1 -0
  145. package/dist/routes/__tests__/project-routes.test.d.ts +5 -0
  146. package/dist/routes/__tests__/project-routes.test.d.ts.map +1 -0
  147. package/dist/routes/__tests__/project-routes.test.js +168 -0
  148. package/dist/routes/__tests__/project-routes.test.js.map +1 -0
  149. package/dist/routes/__tests__/session-routes.test.d.ts +5 -0
  150. package/dist/routes/__tests__/session-routes.test.d.ts.map +1 -0
  151. package/dist/routes/__tests__/session-routes.test.js +198 -0
  152. package/dist/routes/__tests__/session-routes.test.js.map +1 -0
  153. package/dist/routes/__tests__/source-routes.test.d.ts +5 -0
  154. package/dist/routes/__tests__/source-routes.test.d.ts.map +1 -0
  155. package/dist/routes/__tests__/source-routes.test.js +142 -0
  156. package/dist/routes/__tests__/source-routes.test.js.map +1 -0
  157. package/dist/routes/__tests__/sync-routes.test.d.ts +5 -0
  158. package/dist/routes/__tests__/sync-routes.test.d.ts.map +1 -0
  159. package/dist/routes/__tests__/sync-routes.test.js +77 -0
  160. package/dist/routes/__tests__/sync-routes.test.js.map +1 -0
  161. package/dist/routes/__tests__/test-helpers.d.ts +47 -0
  162. package/dist/routes/__tests__/test-helpers.d.ts.map +1 -0
  163. package/dist/routes/__tests__/test-helpers.js +97 -0
  164. package/dist/routes/__tests__/test-helpers.js.map +1 -0
  165. package/dist/routes/archive-routes.d.ts +15 -0
  166. package/dist/routes/archive-routes.d.ts.map +1 -0
  167. package/dist/routes/archive-routes.js +181 -0
  168. package/dist/routes/archive-routes.js.map +1 -0
  169. package/dist/routes/claude-routes.d.ts +9 -0
  170. package/dist/routes/claude-routes.d.ts.map +1 -0
  171. package/dist/routes/claude-routes.js +47 -0
  172. package/dist/routes/claude-routes.js.map +1 -0
  173. package/dist/routes/config-routes.d.ts +9 -0
  174. package/dist/routes/config-routes.d.ts.map +1 -0
  175. package/dist/routes/config-routes.js +56 -0
  176. package/dist/routes/config-routes.js.map +1 -0
  177. package/dist/routes/config-store.d.ts +41 -0
  178. package/dist/routes/config-store.d.ts.map +1 -0
  179. package/dist/routes/config-store.js +52 -0
  180. package/dist/routes/config-store.js.map +1 -0
  181. package/dist/routes/http-utils.d.ts +32 -0
  182. package/dist/routes/http-utils.d.ts.map +1 -0
  183. package/dist/routes/http-utils.js +123 -0
  184. package/dist/routes/http-utils.js.map +1 -0
  185. package/dist/routes/index.d.ts +19 -0
  186. package/dist/routes/index.d.ts.map +1 -0
  187. package/dist/routes/index.js +17 -0
  188. package/dist/routes/index.js.map +1 -0
  189. package/dist/routes/notification-routes.d.ts +10 -0
  190. package/dist/routes/notification-routes.d.ts.map +1 -0
  191. package/dist/routes/notification-routes.js +64 -0
  192. package/dist/routes/notification-routes.js.map +1 -0
  193. package/dist/routes/project-routes.d.ts +22 -0
  194. package/dist/routes/project-routes.d.ts.map +1 -0
  195. package/dist/routes/project-routes.js +415 -0
  196. package/dist/routes/project-routes.js.map +1 -0
  197. package/dist/routes/session-routes.d.ts +18 -0
  198. package/dist/routes/session-routes.d.ts.map +1 -0
  199. package/dist/routes/session-routes.js +609 -0
  200. package/dist/routes/session-routes.js.map +1 -0
  201. package/dist/routes/source-routes.d.ts +12 -0
  202. package/dist/routes/source-routes.d.ts.map +1 -0
  203. package/dist/routes/source-routes.js +119 -0
  204. package/dist/routes/source-routes.js.map +1 -0
  205. package/dist/routes/static-routes.d.ts +12 -0
  206. package/dist/routes/static-routes.d.ts.map +1 -0
  207. package/dist/routes/static-routes.js +52 -0
  208. package/dist/routes/static-routes.js.map +1 -0
  209. package/dist/routes/sync-routes.d.ts +9 -0
  210. package/dist/routes/sync-routes.d.ts.map +1 -0
  211. package/dist/routes/sync-routes.js +78 -0
  212. package/dist/routes/sync-routes.js.map +1 -0
  213. package/dist/routes/tile-routes.d.ts +10 -0
  214. package/dist/routes/tile-routes.d.ts.map +1 -0
  215. package/dist/routes/tile-routes.js +108 -0
  216. package/dist/routes/tile-routes.js.map +1 -0
  217. package/dist/routes/types.d.ts +17 -0
  218. package/dist/routes/types.d.ts.map +1 -0
  219. package/dist/routes/types.js +5 -0
  220. package/dist/routes/types.js.map +1 -0
  221. package/dist/routes/usage-routes.d.ts +8 -0
  222. package/dist/routes/usage-routes.d.ts.map +1 -0
  223. package/dist/routes/usage-routes.js +18 -0
  224. package/dist/routes/usage-routes.js.map +1 -0
  225. package/dist/server.d.ts +8 -0
  226. package/dist/server.d.ts.map +1 -0
  227. package/dist/server.js +173 -0
  228. package/dist/server.js.map +1 -0
  229. package/dist/services/branch-divergence-service.d.ts +48 -0
  230. package/dist/services/branch-divergence-service.d.ts.map +1 -0
  231. package/dist/services/branch-divergence-service.js +156 -0
  232. package/dist/services/branch-divergence-service.js.map +1 -0
  233. package/dist/services/broadcast-service.d.ts +68 -0
  234. package/dist/services/broadcast-service.d.ts.map +1 -0
  235. package/dist/services/broadcast-service.js +78 -0
  236. package/dist/services/broadcast-service.js.map +1 -0
  237. package/dist/services/broadcast-service.test.d.ts +5 -0
  238. package/dist/services/broadcast-service.test.d.ts.map +1 -0
  239. package/dist/services/broadcast-service.test.js +130 -0
  240. package/dist/services/broadcast-service.test.js.map +1 -0
  241. package/dist/services/chat-service.d.ts +72 -0
  242. package/dist/services/chat-service.d.ts.map +1 -0
  243. package/dist/services/chat-service.js +342 -0
  244. package/dist/services/chat-service.js.map +1 -0
  245. package/dist/services/chat-system-prompt.d.ts +14 -0
  246. package/dist/services/chat-system-prompt.d.ts.map +1 -0
  247. package/dist/services/chat-system-prompt.js +68 -0
  248. package/dist/services/chat-system-prompt.js.map +1 -0
  249. package/dist/services/notification-service.d.ts +115 -0
  250. package/dist/services/notification-service.d.ts.map +1 -0
  251. package/dist/services/notification-service.js +424 -0
  252. package/dist/services/notification-service.js.map +1 -0
  253. package/dist/services/notification-service.test.d.ts +5 -0
  254. package/dist/services/notification-service.test.d.ts.map +1 -0
  255. package/dist/services/notification-service.test.js +918 -0
  256. package/dist/services/notification-service.test.js.map +1 -0
  257. package/dist/session/cleanup-service.d.ts +51 -0
  258. package/dist/session/cleanup-service.d.ts.map +1 -0
  259. package/dist/session/cleanup-service.js +98 -0
  260. package/dist/session/cleanup-service.js.map +1 -0
  261. package/dist/session/cleanup-service.test.d.ts +5 -0
  262. package/dist/session/cleanup-service.test.d.ts.map +1 -0
  263. package/dist/session/cleanup-service.test.js +121 -0
  264. package/dist/session/cleanup-service.test.js.map +1 -0
  265. package/dist/session/process-monitor.d.ts +79 -0
  266. package/dist/session/process-monitor.d.ts.map +1 -0
  267. package/dist/session/process-monitor.js +270 -0
  268. package/dist/session/process-monitor.js.map +1 -0
  269. package/dist/session/process-monitor.test.d.ts +5 -0
  270. package/dist/session/process-monitor.test.d.ts.map +1 -0
  271. package/dist/session/process-monitor.test.js +367 -0
  272. package/dist/session/process-monitor.test.js.map +1 -0
  273. package/dist/session/session-factory.d.ts +29 -0
  274. package/dist/session/session-factory.d.ts.map +1 -0
  275. package/dist/session/session-factory.js +123 -0
  276. package/dist/session/session-factory.js.map +1 -0
  277. package/dist/session/session-factory.test.d.ts +5 -0
  278. package/dist/session/session-factory.test.d.ts.map +1 -0
  279. package/dist/session/session-factory.test.js +299 -0
  280. package/dist/session/session-factory.test.js.map +1 -0
  281. package/dist/session-registry.d.ts +168 -0
  282. package/dist/session-registry.d.ts.map +1 -0
  283. package/dist/session-registry.js +626 -0
  284. package/dist/session-registry.js.map +1 -0
  285. package/dist/session-registry.test.d.ts +5 -0
  286. package/dist/session-registry.test.d.ts.map +1 -0
  287. package/dist/session-registry.test.js +582 -0
  288. package/dist/session-registry.test.js.map +1 -0
  289. package/dist/start-server.d.ts +31 -0
  290. package/dist/start-server.d.ts.map +1 -0
  291. package/dist/start-server.js +408 -0
  292. package/dist/start-server.js.map +1 -0
  293. package/dist/terminal-activator.d.ts +29 -0
  294. package/dist/terminal-activator.d.ts.map +1 -0
  295. package/dist/terminal-activator.js +264 -0
  296. package/dist/terminal-activator.js.map +1 -0
  297. package/dist/terminal-activator.test.d.ts +9 -0
  298. package/dist/terminal-activator.test.d.ts.map +1 -0
  299. package/dist/terminal-activator.test.js +95 -0
  300. package/dist/terminal-activator.test.js.map +1 -0
  301. package/dist/terminal-launcher.d.ts +51 -0
  302. package/dist/terminal-launcher.d.ts.map +1 -0
  303. package/dist/terminal-launcher.js +298 -0
  304. package/dist/terminal-launcher.js.map +1 -0
  305. package/dist/terminal-launcher.test.d.ts +8 -0
  306. package/dist/terminal-launcher.test.d.ts.map +1 -0
  307. package/dist/terminal-launcher.test.js +222 -0
  308. package/dist/terminal-launcher.test.js.map +1 -0
  309. package/dist/types.d.ts +796 -0
  310. package/dist/types.d.ts.map +1 -0
  311. package/dist/types.js +15 -0
  312. package/dist/types.js.map +1 -0
  313. package/dist/unix-socket.d.ts +68 -0
  314. package/dist/unix-socket.d.ts.map +1 -0
  315. package/dist/unix-socket.js +180 -0
  316. package/dist/unix-socket.js.map +1 -0
  317. package/dist/usage-limits.d.ts +13 -0
  318. package/dist/usage-limits.d.ts.map +1 -0
  319. package/dist/usage-limits.js +112 -0
  320. package/dist/usage-limits.js.map +1 -0
  321. package/dist/watchers/handoff-watcher.d.ts +74 -0
  322. package/dist/watchers/handoff-watcher.d.ts.map +1 -0
  323. package/dist/watchers/handoff-watcher.js +124 -0
  324. package/dist/watchers/handoff-watcher.js.map +1 -0
  325. package/dist/watchers/handoff-watcher.test.d.ts +8 -0
  326. package/dist/watchers/handoff-watcher.test.d.ts.map +1 -0
  327. package/dist/watchers/handoff-watcher.test.js +142 -0
  328. package/dist/watchers/handoff-watcher.test.js.map +1 -0
  329. package/dist/websocket.d.ts +107 -0
  330. package/dist/websocket.d.ts.map +1 -0
  331. package/dist/websocket.js +268 -0
  332. package/dist/websocket.js.map +1 -0
  333. package/dist/window-manager/index.d.ts +28 -0
  334. package/dist/window-manager/index.d.ts.map +1 -0
  335. package/dist/window-manager/index.js +56 -0
  336. package/dist/window-manager/index.js.map +1 -0
  337. package/dist/window-manager/layouts.d.ts +42 -0
  338. package/dist/window-manager/layouts.d.ts.map +1 -0
  339. package/dist/window-manager/layouts.js +133 -0
  340. package/dist/window-manager/layouts.js.map +1 -0
  341. package/dist/window-manager/linux-manager.d.ts +45 -0
  342. package/dist/window-manager/linux-manager.d.ts.map +1 -0
  343. package/dist/window-manager/linux-manager.js +299 -0
  344. package/dist/window-manager/linux-manager.js.map +1 -0
  345. package/dist/window-manager/macos-manager.d.ts +103 -0
  346. package/dist/window-manager/macos-manager.d.ts.map +1 -0
  347. package/dist/window-manager/macos-manager.js +637 -0
  348. package/dist/window-manager/macos-manager.js.map +1 -0
  349. package/dist/window-manager/smart-layouts.d.ts +116 -0
  350. package/dist/window-manager/smart-layouts.d.ts.map +1 -0
  351. package/dist/window-manager/smart-layouts.js +188 -0
  352. package/dist/window-manager/smart-layouts.js.map +1 -0
  353. package/dist/window-manager/smart-layouts.test.d.ts +8 -0
  354. package/dist/window-manager/smart-layouts.test.d.ts.map +1 -0
  355. package/dist/window-manager/smart-layouts.test.js +311 -0
  356. package/dist/window-manager/smart-layouts.test.js.map +1 -0
  357. package/dist/window-manager/tile-state.d.ts +87 -0
  358. package/dist/window-manager/tile-state.d.ts.map +1 -0
  359. package/dist/window-manager/tile-state.js +136 -0
  360. package/dist/window-manager/tile-state.js.map +1 -0
  361. package/dist/window-manager/tile-state.test.d.ts +8 -0
  362. package/dist/window-manager/tile-state.test.d.ts.map +1 -0
  363. package/dist/window-manager/tile-state.test.js +179 -0
  364. package/dist/window-manager/tile-state.test.js.map +1 -0
  365. package/dist/window-manager/types.d.ts +104 -0
  366. package/dist/window-manager/types.d.ts.map +1 -0
  367. package/dist/window-manager/types.js +8 -0
  368. package/dist/window-manager/types.js.map +1 -0
  369. package/dist/window-manager/windows-manager.d.ts +44 -0
  370. package/dist/window-manager/windows-manager.d.ts.map +1 -0
  371. package/dist/window-manager/windows-manager.js +281 -0
  372. package/dist/window-manager/windows-manager.js.map +1 -0
  373. package/dist/window-manager/windows-manager.test.d.ts +8 -0
  374. package/dist/window-manager/windows-manager.test.d.ts.map +1 -0
  375. package/dist/window-manager/windows-manager.test.js +183 -0
  376. package/dist/window-manager/windows-manager.test.js.map +1 -0
  377. package/gui-dist/assets/index-BmYIHRYe.js +142 -0
  378. package/gui-dist/assets/index-D_N5RH8O.css +1 -0
  379. package/gui-dist/assets/vendor-icons-ByXNrcwf.js +336 -0
  380. package/gui-dist/assets/vendor-markdown-DWPYwU1x.js +22 -0
  381. package/gui-dist/assets/vendor-react-CpILBTDM.js +59 -0
  382. package/gui-dist/index.html +17 -0
  383. package/gui-dist/jacsub.png +0 -0
  384. package/package.json +67 -0
@@ -0,0 +1,486 @@
1
+ /**
2
+ * Window Handler
3
+ *
4
+ * Handles WebSocket requests for window management:
5
+ * - tile_windows
6
+ * - maximize_window
7
+ * - position_browser_layout
8
+ * - smart_tile_add
9
+ */
10
+ import { sendWsResponse } from './ws-utils.js';
11
+ import { validateTileStateWithBounds, validateTileStateBySessions } from '../window-manager/tile-state.js';
12
+ import { planSmartTileTransition, findFreeSpace } from '../window-manager/smart-layouts.js';
13
+ import { launchTerminalSession } from '../terminal-launcher.js';
14
+ export class WindowHandler {
15
+ registry;
16
+ tileStateManager;
17
+ logger;
18
+ constructor(deps) {
19
+ this.registry = deps.registry;
20
+ this.tileStateManager = deps.tileStateManager;
21
+ this.logger = deps.logger;
22
+ }
23
+ async handleTileWindows(ws, request) {
24
+ const { session_ids, layout: requestedLayout, display_id } = request;
25
+ if (!session_ids || session_ids.length === 0) {
26
+ sendWsResponse(ws, {
27
+ type: 'tile_windows_result',
28
+ success: false,
29
+ positioned: 0,
30
+ total: 0,
31
+ layout: 'side-by-side',
32
+ errors: ['No session IDs provided'],
33
+ });
34
+ return;
35
+ }
36
+ // Get terminal keys for the requested sessions
37
+ const terminalKeys = [];
38
+ const errors = [];
39
+ for (const sessionId of session_ids) {
40
+ const session = this.registry.getSession(sessionId);
41
+ if (!session) {
42
+ errors.push(`Session not found: ${sessionId}`);
43
+ continue;
44
+ }
45
+ if (!session.terminal_key) {
46
+ errors.push(`Session has no terminal key: ${sessionId}`);
47
+ continue;
48
+ }
49
+ terminalKeys.push(session.terminal_key);
50
+ }
51
+ if (terminalKeys.length === 0) {
52
+ sendWsResponse(ws, {
53
+ type: 'tile_windows_result',
54
+ success: false,
55
+ positioned: 0,
56
+ total: session_ids.length,
57
+ layout: requestedLayout || 'side-by-side',
58
+ errors,
59
+ });
60
+ return;
61
+ }
62
+ try {
63
+ const { createWindowManager, isWindowManagementSupported, suggestLayout } = await import('../window-manager/index.js');
64
+ if (!isWindowManagementSupported()) {
65
+ sendWsResponse(ws, {
66
+ type: 'tile_windows_result',
67
+ success: false,
68
+ positioned: 0,
69
+ total: terminalKeys.length,
70
+ layout: requestedLayout || 'side-by-side',
71
+ errors: ['Window management not supported on this platform'],
72
+ });
73
+ return;
74
+ }
75
+ const manager = createWindowManager();
76
+ const layout = requestedLayout || suggestLayout(terminalKeys.length);
77
+ let targetDisplay;
78
+ if (display_id) {
79
+ const displays = await manager.getDisplays();
80
+ targetDisplay = displays.find(d => d.id === display_id);
81
+ }
82
+ this.logger.log(`Tiling ${terminalKeys.length} windows with layout: ${layout}`);
83
+ const result = await manager.tileWindows(terminalKeys, layout, targetDisplay);
84
+ sendWsResponse(ws, {
85
+ type: 'tile_windows_result',
86
+ success: result.success,
87
+ positioned: result.positioned,
88
+ total: result.total,
89
+ layout,
90
+ errors: [...errors, ...(result.errors || [])].length > 0 ? [...errors, ...(result.errors || [])] : undefined,
91
+ });
92
+ if (result.success) {
93
+ this.logger.log(`Tiled ${result.positioned}/${result.total} windows`);
94
+ // Update tile state for smart tiling
95
+ const tileDisplay = targetDisplay || (await manager.getDisplays()).find(d => d.isPrimary) || (await manager.getDisplays())[0];
96
+ if (tileDisplay) {
97
+ const sessions = session_ids
98
+ .map(id => {
99
+ const s = this.registry.getSession(id);
100
+ return s && s.terminal_key ? { terminalKey: s.terminal_key, sessionId: id } : null;
101
+ })
102
+ .filter((s) => s !== null);
103
+ this.tileStateManager.buildFromManualTile(tileDisplay.id, tileDisplay.workArea, sessions);
104
+ }
105
+ }
106
+ else {
107
+ this.logger.log(`Partial tile: ${result.positioned}/${result.total} windows positioned`);
108
+ }
109
+ }
110
+ catch (err) {
111
+ this.logger.error(`Failed to tile windows: ${err}`);
112
+ sendWsResponse(ws, {
113
+ type: 'tile_windows_result',
114
+ success: false,
115
+ positioned: 0,
116
+ total: terminalKeys.length,
117
+ layout: requestedLayout || 'side-by-side',
118
+ errors: [err instanceof Error ? err.message : String(err)],
119
+ });
120
+ }
121
+ }
122
+ async handleMaximizeWindow(ws, request) {
123
+ const session = this.registry.getSession(request.session_id);
124
+ if (!session || !session.terminal_key) {
125
+ sendWsResponse(ws, {
126
+ type: 'maximize_window_result',
127
+ session_id: request.session_id,
128
+ success: false,
129
+ error: !session ? `Session not found: ${request.session_id}` : 'Session has no terminal key',
130
+ });
131
+ return;
132
+ }
133
+ try {
134
+ const { createWindowManager, isWindowManagementSupported } = await import('../window-manager/index.js');
135
+ if (!isWindowManagementSupported()) {
136
+ sendWsResponse(ws, {
137
+ type: 'maximize_window_result',
138
+ session_id: request.session_id,
139
+ success: false,
140
+ error: 'Window management not supported on this platform',
141
+ });
142
+ return;
143
+ }
144
+ const manager = createWindowManager();
145
+ const displays = await manager.getDisplays();
146
+ const primary = displays.find(d => d.isPrimary) || displays[0];
147
+ if (!primary) {
148
+ sendWsResponse(ws, {
149
+ type: 'maximize_window_result',
150
+ session_id: request.session_id,
151
+ success: false,
152
+ error: 'No display available',
153
+ });
154
+ return;
155
+ }
156
+ this.logger.log(`Maximizing window for session ${request.session_id} (key: ${session.terminal_key})`);
157
+ const result = await manager.positionWindow(session.terminal_key, primary.workArea);
158
+ sendWsResponse(ws, {
159
+ type: 'maximize_window_result',
160
+ session_id: request.session_id,
161
+ success: result.success,
162
+ error: result.error,
163
+ });
164
+ }
165
+ catch (err) {
166
+ this.logger.error(`Failed to maximize window: ${err}`);
167
+ sendWsResponse(ws, {
168
+ type: 'maximize_window_result',
169
+ session_id: request.session_id,
170
+ success: false,
171
+ error: err instanceof Error ? err.message : String(err),
172
+ });
173
+ }
174
+ }
175
+ async handlePositionBrowserLayout(ws, request) {
176
+ const { session_ids, layout } = request;
177
+ if (!session_ids || session_ids.length === 0) {
178
+ sendWsResponse(ws, {
179
+ type: 'position_browser_layout_result',
180
+ success: false,
181
+ layout,
182
+ error: 'No session IDs provided',
183
+ });
184
+ return;
185
+ }
186
+ const terminalKeys = [];
187
+ const errors = [];
188
+ for (const sessionId of session_ids) {
189
+ const session = this.registry.getSession(sessionId);
190
+ if (!session) {
191
+ errors.push(`Session not found: ${sessionId}`);
192
+ continue;
193
+ }
194
+ if (!session.terminal_key) {
195
+ errors.push(`Session has no terminal key: ${sessionId}`);
196
+ continue;
197
+ }
198
+ terminalKeys.push(session.terminal_key);
199
+ }
200
+ if (terminalKeys.length === 0) {
201
+ sendWsResponse(ws, {
202
+ type: 'position_browser_layout_result',
203
+ success: false,
204
+ layout,
205
+ error: errors.join('; '),
206
+ });
207
+ return;
208
+ }
209
+ try {
210
+ const { createWindowManager, isWindowManagementSupported } = await import('../window-manager/index.js');
211
+ const { calculateBrowserLayout } = await import('../window-manager/layouts.js');
212
+ if (!isWindowManagementSupported()) {
213
+ sendWsResponse(ws, {
214
+ type: 'position_browser_layout_result',
215
+ success: false,
216
+ layout,
217
+ error: 'Window management not supported on this platform',
218
+ });
219
+ return;
220
+ }
221
+ const manager = createWindowManager();
222
+ const displays = await manager.getDisplays();
223
+ const primary = displays.find(d => d.isPrimary) || displays[0];
224
+ if (!primary) {
225
+ sendWsResponse(ws, {
226
+ type: 'position_browser_layout_result',
227
+ success: false,
228
+ layout,
229
+ error: 'No display available',
230
+ });
231
+ return;
232
+ }
233
+ const validLayout = layout === 'browser-two-terminals' ? 'browser-two-terminals' : 'browser-terminal';
234
+ const geometries = calculateBrowserLayout(primary.workArea, validLayout);
235
+ this.logger.log(`Positioning browser layout: ${validLayout} with ${terminalKeys.length} terminal(s)`);
236
+ // Position browser window (macOS only for now)
237
+ const macManager = manager;
238
+ let browserSuccess = false;
239
+ if (typeof macManager.positionBrowserWindow === 'function') {
240
+ const browserResult = await macManager.positionBrowserWindow(geometries.browser);
241
+ browserSuccess = browserResult.success;
242
+ if (!browserResult.success && browserResult.error) {
243
+ errors.push(`Browser: ${browserResult.error}`);
244
+ }
245
+ }
246
+ else {
247
+ errors.push('Browser positioning not supported on this platform');
248
+ }
249
+ // Position terminal(s)
250
+ let terminalsPositioned = 0;
251
+ for (let i = 0; i < terminalKeys.length && i < geometries.terminals.length; i++) {
252
+ const result = await manager.positionWindow(terminalKeys[i], geometries.terminals[i]);
253
+ if (result.success) {
254
+ terminalsPositioned++;
255
+ }
256
+ else if (result.error) {
257
+ errors.push(`Terminal ${i}: ${result.error}`);
258
+ }
259
+ if (i < terminalKeys.length - 1) {
260
+ await new Promise(resolve => setTimeout(resolve, 100));
261
+ }
262
+ }
263
+ sendWsResponse(ws, {
264
+ type: 'position_browser_layout_result',
265
+ success: browserSuccess && terminalsPositioned === Math.min(terminalKeys.length, geometries.terminals.length),
266
+ layout: validLayout,
267
+ error: errors.length > 0 ? errors.join('; ') : undefined,
268
+ });
269
+ }
270
+ catch (err) {
271
+ this.logger.error(`Failed to position browser layout: ${err}`);
272
+ sendWsResponse(ws, {
273
+ type: 'position_browser_layout_result',
274
+ success: false,
275
+ layout,
276
+ error: err instanceof Error ? err.message : String(err),
277
+ });
278
+ }
279
+ }
280
+ async handleSmartTileAdd(ws, request) {
281
+ const { launch_cwd, new_session_id, display_id, dangerously_skip_permissions } = request;
282
+ if (!launch_cwd && !new_session_id) {
283
+ sendWsResponse(ws, {
284
+ type: 'smart_tile_add_result',
285
+ success: false,
286
+ repositioned: 0,
287
+ total_tiled: 0,
288
+ used_free_space: false,
289
+ error: 'Missing launch_cwd or new_session_id',
290
+ });
291
+ return;
292
+ }
293
+ try {
294
+ const { createWindowManager, isWindowManagementSupported } = await import('../window-manager/index.js');
295
+ if (!isWindowManagementSupported()) {
296
+ if (launch_cwd) {
297
+ const launchResult = await launchTerminalSession({ cwd: launch_cwd, dangerouslySkipPermissions: dangerously_skip_permissions });
298
+ sendWsResponse(ws, {
299
+ type: 'smart_tile_add_result',
300
+ success: launchResult.success,
301
+ repositioned: 0,
302
+ total_tiled: 0,
303
+ used_free_space: true,
304
+ launch_method: launchResult.method,
305
+ error: launchResult.error,
306
+ });
307
+ }
308
+ return;
309
+ }
310
+ const manager = createWindowManager();
311
+ const displays = await manager.getDisplays();
312
+ // Determine target display
313
+ let targetDisplay = display_id
314
+ ? displays.find(d => d.id === display_id)
315
+ : null;
316
+ if (!targetDisplay) {
317
+ const anyState = this.tileStateManager.getAnyTileState();
318
+ if (anyState) {
319
+ targetDisplay = displays.find(d => d.id === anyState.displayId);
320
+ }
321
+ }
322
+ if (!targetDisplay && displays.length > 1) {
323
+ const terminalKeys = this.registry.getAllSessions().map(s => s.terminal_key).filter(Boolean);
324
+ if (terminalKeys.length > 0 && typeof manager.getTargetDisplayForTerminals === 'function') {
325
+ targetDisplay = await manager.getTargetDisplayForTerminals(terminalKeys);
326
+ }
327
+ }
328
+ if (!targetDisplay) {
329
+ targetDisplay = displays.find(d => d.isPrimary) || displays[0];
330
+ }
331
+ if (!targetDisplay) {
332
+ sendWsResponse(ws, {
333
+ type: 'smart_tile_add_result',
334
+ success: false,
335
+ repositioned: 0,
336
+ total_tiled: 0,
337
+ used_free_space: false,
338
+ error: 'No display available',
339
+ });
340
+ return;
341
+ }
342
+ const workArea = targetDisplay.workArea;
343
+ let tileState = this.tileStateManager.getTileState(targetDisplay.id);
344
+ // Validate tile state
345
+ let tileStateValid = false;
346
+ if (tileState && tileState.slots.length > 0) {
347
+ if (process.platform === 'darwin' && typeof manager.getWindowBounds === 'function') {
348
+ const macManager = manager;
349
+ tileStateValid = await validateTileStateWithBounds(tileState, (key) => macManager.getWindowBounds(key));
350
+ }
351
+ else {
352
+ tileStateValid = validateTileStateBySessions(tileState, (sessionId) => this.registry.getSession(sessionId) !== undefined);
353
+ }
354
+ }
355
+ let targetBounds;
356
+ let repositioned = 0;
357
+ let totalTiled = 0;
358
+ let usedFreeSpace = false;
359
+ if (tileStateValid && tileState && tileState.slots.length < 8) {
360
+ const existingSlots = tileState.slots.map(s => ({
361
+ terminalKey: s.terminalKey,
362
+ sessionId: s.sessionId,
363
+ column: s.column,
364
+ row: s.row,
365
+ geometry: s.geometry,
366
+ }));
367
+ const transition = planSmartTileTransition(existingSlots, workArea);
368
+ if (transition) {
369
+ for (const repo of transition.repositions) {
370
+ const result = await manager.positionWindow(repo.terminalKey, repo.newGeometry);
371
+ if (result.success) {
372
+ repositioned++;
373
+ }
374
+ else {
375
+ this.logger.warn(`Failed to reposition ${repo.terminalKey}: ${result.error}`);
376
+ }
377
+ if (transition.repositions.indexOf(repo) < transition.repositions.length - 1) {
378
+ await new Promise(resolve => setTimeout(resolve, 100));
379
+ }
380
+ }
381
+ targetBounds = transition.newWindowGeometry;
382
+ totalTiled = tileState.slots.length + 1;
383
+ const newSlots = [...tileState.slots.map((s) => {
384
+ const repo = transition.repositions.find(r => r.sessionId === s.sessionId);
385
+ if (repo) {
386
+ return { ...s, geometry: repo.newGeometry, column: repo.newColumn, row: repo.newRow };
387
+ }
388
+ return s;
389
+ })];
390
+ newSlots.push({
391
+ terminalKey: new_session_id ? (this.registry.getSession(new_session_id)?.terminal_key || 'PENDING') : 'PENDING',
392
+ sessionId: new_session_id || 'PENDING',
393
+ geometry: transition.newWindowGeometry,
394
+ column: transition.newColumn,
395
+ row: transition.newRow,
396
+ });
397
+ this.tileStateManager.setTileState(targetDisplay.id, {
398
+ displayId: targetDisplay.id,
399
+ workArea,
400
+ columnsPerRow: transition.newGrid.columnsPerRow,
401
+ slots: newSlots,
402
+ tiledAt: Date.now(),
403
+ });
404
+ }
405
+ else {
406
+ const existingBounds = tileState.slots.map(s => s.geometry);
407
+ targetBounds = findFreeSpace(workArea, existingBounds);
408
+ totalTiled = tileState.slots.length;
409
+ usedFreeSpace = true;
410
+ }
411
+ }
412
+ else {
413
+ const existingBounds = [];
414
+ if (process.platform === 'darwin' && typeof manager.getWindowBounds === 'function') {
415
+ const macManager = manager;
416
+ const allSessions = this.registry.getAllSessions();
417
+ for (const session of allSessions) {
418
+ if (session.terminal_key) {
419
+ const bounds = await macManager.getWindowBounds(session.terminal_key);
420
+ if (bounds)
421
+ existingBounds.push(bounds);
422
+ }
423
+ }
424
+ }
425
+ else if (tileState) {
426
+ existingBounds.push(...tileState.slots.map(s => s.geometry));
427
+ }
428
+ targetBounds = findFreeSpace(workArea, existingBounds);
429
+ usedFreeSpace = true;
430
+ }
431
+ // Launch or position the terminal
432
+ let launchMethod;
433
+ if (launch_cwd) {
434
+ const launchResult = await launchTerminalSession({
435
+ cwd: launch_cwd,
436
+ targetBounds,
437
+ dangerouslySkipPermissions: dangerously_skip_permissions,
438
+ });
439
+ launchMethod = launchResult.method;
440
+ if (launchResult.success) {
441
+ this.logger.log(`Smart tile: launched terminal (${launchResult.method}) in ${launch_cwd}`);
442
+ }
443
+ else {
444
+ this.logger.warn(`Smart tile: failed to launch terminal: ${launchResult.error}`);
445
+ sendWsResponse(ws, {
446
+ type: 'smart_tile_add_result',
447
+ success: false,
448
+ repositioned,
449
+ total_tiled: totalTiled,
450
+ used_free_space: usedFreeSpace,
451
+ launch_method: launchResult.method,
452
+ error: launchResult.error,
453
+ });
454
+ return;
455
+ }
456
+ }
457
+ else if (new_session_id) {
458
+ const session = this.registry.getSession(new_session_id);
459
+ if (session?.terminal_key) {
460
+ await manager.positionWindow(session.terminal_key, targetBounds);
461
+ }
462
+ }
463
+ sendWsResponse(ws, {
464
+ type: 'smart_tile_add_result',
465
+ success: true,
466
+ repositioned,
467
+ total_tiled: totalTiled,
468
+ used_free_space: usedFreeSpace,
469
+ launch_method: launchMethod,
470
+ });
471
+ this.logger.log(`Smart tile: ${usedFreeSpace ? 'free-space' : 'grid'} placement, ${repositioned} repositioned, ${totalTiled} total`);
472
+ }
473
+ catch (err) {
474
+ this.logger.error(`Smart tile failed: ${err}`);
475
+ sendWsResponse(ws, {
476
+ type: 'smart_tile_add_result',
477
+ success: false,
478
+ repositioned: 0,
479
+ total_tiled: 0,
480
+ used_free_space: false,
481
+ error: err instanceof Error ? err.message : String(err),
482
+ });
483
+ }
484
+ }
485
+ }
486
+ //# sourceMappingURL=window-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"window-handler.js","sourceRoot":"","sources":["../../src/handlers/window-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Window Handler Tests
3
+ *
4
+ * Tests validation/error paths for WindowHandler methods.
5
+ * Success paths require dynamic imports and ESM mocking of window-manager, so are not covered here.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=window-handler.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"window-handler.test.d.ts","sourceRoot":"","sources":["../../src/handlers/window-handler.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}