@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,609 @@
1
+ /**
2
+ * Session API routes
3
+ *
4
+ * GET /api/sessions — List all sessions
5
+ * GET /api/sessions/by-project — List sessions grouped by project
6
+ * GET /api/sessions/stats — Get session index statistics
7
+ * POST /api/sessions/rebuild — Force rebuild session index (SSE)
8
+ * POST /api/sessions/launch — Launch new terminal session
9
+ * GET /api/sessions/:id — Get session by ID
10
+ * GET /api/sessions/:id/badges — Get badge data for session
11
+ * GET /api/sessions/:id/subagents/:agentId — Get subagent JSONL entries
12
+ * GET /api/sessions/:id/web-searches — Get web search entries
13
+ * GET /api/sessions/:id/tasks — Get deduplicated tasks
14
+ * GET /api/sessions/:id/plans/:messageIndex — Get plan content by message index
15
+ */
16
+ import { promises as fsPromises } from 'fs';
17
+ import { basename, join } from 'path';
18
+ import { sendJson, parseBody, createSSEWriter } from './http-utils.js';
19
+ import { getSessionIndex, buildSessionIndex, getSessionEntry, getSessionsByProject, getCacheIndexStats, parseJSONL, getEntryStatistics, listSubagentFiles, findSessionById, decodeProjectPath, detectModeAndPlans, extractTaskSignals, } from '@jacques-ai/core';
20
+ export async function sessionRoutes(ctx) {
21
+ const { method, url, req, res } = ctx;
22
+ if (!url.startsWith('/api/sessions'))
23
+ return false;
24
+ // Route: GET /api/sessions
25
+ if (method === 'GET' && url === '/api/sessions') {
26
+ try {
27
+ const index = await getSessionIndex();
28
+ sendJson(res, 200, {
29
+ sessions: index.sessions,
30
+ lastScanned: index.lastScanned,
31
+ });
32
+ }
33
+ catch {
34
+ sendJson(res, 500, { error: 'Failed to list sessions' });
35
+ }
36
+ return true;
37
+ }
38
+ // Route: GET /api/sessions/by-project
39
+ if (method === 'GET' && url === '/api/sessions/by-project') {
40
+ try {
41
+ const byProject = await getSessionsByProject();
42
+ const result = {};
43
+ byProject.forEach((sessions, project) => {
44
+ result[project] = sessions;
45
+ });
46
+ sendJson(res, 200, { projects: result });
47
+ }
48
+ catch {
49
+ sendJson(res, 500, { error: 'Failed to list sessions by project' });
50
+ }
51
+ return true;
52
+ }
53
+ // Route: GET /api/sessions/stats
54
+ if (method === 'GET' && url === '/api/sessions/stats') {
55
+ try {
56
+ const stats = await getCacheIndexStats();
57
+ const sizeFormatted = stats.totalSizeBytes < 1024 * 1024
58
+ ? `${(stats.totalSizeBytes / 1024).toFixed(1)} KB`
59
+ : `${(stats.totalSizeBytes / (1024 * 1024)).toFixed(1)} MB`;
60
+ sendJson(res, 200, {
61
+ ...stats,
62
+ sizeFormatted,
63
+ });
64
+ }
65
+ catch {
66
+ sendJson(res, 500, { error: 'Failed to get session stats' });
67
+ }
68
+ return true;
69
+ }
70
+ // Route: POST /api/sessions/rebuild (SSE streaming)
71
+ if (method === 'POST' && url === '/api/sessions/rebuild') {
72
+ const sse = createSSEWriter(res);
73
+ try {
74
+ const index = await buildSessionIndex({
75
+ onProgress: (progress) => {
76
+ sse.send('progress', progress);
77
+ },
78
+ });
79
+ sse.send('complete', {
80
+ totalSessions: index.sessions.length,
81
+ lastScanned: index.lastScanned,
82
+ });
83
+ sse.end();
84
+ }
85
+ catch (error) {
86
+ sse.send('error', { error: error instanceof Error ? error.message : 'Unknown error' });
87
+ sse.end();
88
+ }
89
+ return true;
90
+ }
91
+ // Route: POST /api/sessions/launch
92
+ if (method === 'POST' && url === '/api/sessions/launch') {
93
+ const body = await parseBody(req);
94
+ if (!body || !body.cwd) {
95
+ sendJson(res, 400, { error: 'Missing cwd field' });
96
+ return true;
97
+ }
98
+ const { cwd, preferredTerminal, dangerouslySkipPermissions } = body;
99
+ try {
100
+ const { launchTerminalSession } = await import('../terminal-launcher.js');
101
+ const result = await launchTerminalSession({
102
+ cwd,
103
+ preferredTerminal,
104
+ dangerouslySkipPermissions,
105
+ });
106
+ sendJson(res, result.success ? 200 : 500, result);
107
+ }
108
+ catch (error) {
109
+ sendJson(res, 500, { error: error instanceof Error ? error.message : 'Failed to launch terminal session' });
110
+ }
111
+ return true;
112
+ }
113
+ // Route: GET /api/sessions/:id/badges
114
+ const badgesMatch = url.match(/^\/api\/sessions\/([^/]+)\/badges$/);
115
+ if (method === 'GET' && badgesMatch) {
116
+ const sessionId = badgesMatch[1];
117
+ return handleBadges(ctx, sessionId);
118
+ }
119
+ // Route: GET /api/sessions/:id/subagents/:agentId
120
+ const subagentMatch = url.match(/^\/api\/sessions\/([^/]+)\/subagents\/([^/]+)$/);
121
+ if (method === 'GET' && subagentMatch) {
122
+ const sessionId = subagentMatch[1];
123
+ const agentId = subagentMatch[2];
124
+ return handleSubagentDetail(ctx, sessionId, agentId);
125
+ }
126
+ // Route: GET /api/sessions/:id/web-searches
127
+ const webSearchMatch = url.match(/^\/api\/sessions\/([^/]+)\/web-searches$/);
128
+ if (method === 'GET' && webSearchMatch) {
129
+ const sessionId = webSearchMatch[1];
130
+ return handleWebSearches(ctx, sessionId);
131
+ }
132
+ // Route: GET /api/sessions/:id/tasks
133
+ const tasksMatch = url.match(/^\/api\/sessions\/([^/]+)\/tasks$/);
134
+ if (method === 'GET' && tasksMatch) {
135
+ const sessionId = tasksMatch[1];
136
+ return handleTasks(ctx, sessionId);
137
+ }
138
+ // Route: GET /api/sessions/:id/plans/:messageIndex
139
+ const plansMatch = url.match(/^\/api\/sessions\/([^/]+)\/plans\/(\d+)$/);
140
+ if (method === 'GET' && plansMatch) {
141
+ const sessionId = plansMatch[1];
142
+ const messageIndex = parseInt(plansMatch[2], 10);
143
+ return handlePlanByMessageIndex(ctx, sessionId, messageIndex);
144
+ }
145
+ // Route: GET /api/sessions/:id (must be after all sub-routes)
146
+ const sessionMatch = url.match(/^\/api\/sessions\/([^/]+)$/);
147
+ if (method === 'GET' && sessionMatch) {
148
+ const id = sessionMatch[1];
149
+ // Exclude known sub-paths that are matched as exact routes
150
+ if (id === 'by-project' || id === 'stats' || id === 'rebuild' || id === 'launch') {
151
+ return false;
152
+ }
153
+ return handleGetSession(ctx, id);
154
+ }
155
+ return false;
156
+ }
157
+ /**
158
+ * Resolve a session's JSONL path from index or direct lookup
159
+ */
160
+ async function resolveSession(sessionId) {
161
+ const entry = await getSessionEntry(sessionId);
162
+ if (entry) {
163
+ return { entry, jsonlPath: entry.jsonlPath };
164
+ }
165
+ const sessionFile = await findSessionById(sessionId);
166
+ if (!sessionFile)
167
+ return null;
168
+ return { entry: null, jsonlPath: sessionFile.filePath };
169
+ }
170
+ /**
171
+ * Overlay deduplicated planRefs from catalog manifest onto a session entry.
172
+ * Tries projectPath first, falls back to gitRepoRoot for deleted worktrees.
173
+ */
174
+ async function overlayCatalogPlanRefs(sessionEntry, sessionId) {
175
+ let overlayed = false;
176
+ try {
177
+ const catalogManifestPath = join(sessionEntry.projectPath, '.jacques', 'sessions', `${sessionId}.json`);
178
+ const catalogContent = await fsPromises.readFile(catalogManifestPath, 'utf-8');
179
+ const catalogManifest = JSON.parse(catalogContent);
180
+ if (catalogManifest.planRefs) {
181
+ sessionEntry = { ...sessionEntry, planRefs: catalogManifest.planRefs };
182
+ overlayed = true;
183
+ }
184
+ }
185
+ catch {
186
+ // No catalog manifest at worktree path
187
+ }
188
+ if (!overlayed && sessionEntry.gitRepoRoot && sessionEntry.gitRepoRoot !== sessionEntry.projectPath) {
189
+ try {
190
+ const fallbackPath = join(sessionEntry.gitRepoRoot, '.jacques', 'sessions', `${sessionId}.json`);
191
+ const catalogContent = await fsPromises.readFile(fallbackPath, 'utf-8');
192
+ const catalogManifest = JSON.parse(catalogContent);
193
+ if (catalogManifest.planRefs) {
194
+ sessionEntry = { ...sessionEntry, planRefs: catalogManifest.planRefs };
195
+ }
196
+ }
197
+ catch {
198
+ // No catalog manifest at repo root either
199
+ }
200
+ }
201
+ return sessionEntry;
202
+ }
203
+ async function handleGetSession(ctx, id) {
204
+ const { res } = ctx;
205
+ try {
206
+ const resolved = await resolveSession(id);
207
+ if (!resolved) {
208
+ sendJson(res, 404, { error: 'Session not found' });
209
+ return true;
210
+ }
211
+ let { entry: sessionEntry } = resolved;
212
+ const { jsonlPath } = resolved;
213
+ if (!sessionEntry) {
214
+ // Create a minimal session entry for sessions not yet indexed
215
+ const sessionFile = (await findSessionById(id));
216
+ const pathParts = sessionFile.filePath.split('/');
217
+ const projectsIdx = pathParts.indexOf('projects');
218
+ const encodedPath = projectsIdx >= 0 ? pathParts[projectsIdx + 1] : '';
219
+ const projectPath = await decodeProjectPath(encodedPath);
220
+ const projectSlug = basename(projectPath);
221
+ sessionEntry = {
222
+ id,
223
+ jsonlPath: sessionFile.filePath,
224
+ projectPath,
225
+ projectSlug,
226
+ title: 'New session',
227
+ startedAt: sessionFile.modifiedAt.toISOString(),
228
+ endedAt: sessionFile.modifiedAt.toISOString(),
229
+ messageCount: 0,
230
+ toolCallCount: 0,
231
+ hasSubagents: false,
232
+ fileSizeBytes: sessionFile.sizeBytes,
233
+ modifiedAt: sessionFile.modifiedAt.toISOString(),
234
+ };
235
+ }
236
+ const entries = await parseJSONL(jsonlPath);
237
+ if (entries.length === 0) {
238
+ sendJson(res, 200, {
239
+ metadata: sessionEntry,
240
+ entries: [],
241
+ statistics: {
242
+ userMessageCount: 0,
243
+ assistantMessageCount: 0,
244
+ toolCallCount: 0,
245
+ agentProgressCount: 0,
246
+ hookProgressCount: 0,
247
+ systemEntryCount: 0,
248
+ summaryCount: 0,
249
+ totalInputTokens: 0,
250
+ totalOutputTokens: 0,
251
+ totalOutputTokensEstimated: 0,
252
+ totalTokens: 0,
253
+ },
254
+ subagents: [],
255
+ awaitingFirstResponse: true,
256
+ });
257
+ return true;
258
+ }
259
+ const statistics = getEntryStatistics(entries);
260
+ let userVisibleSubagents = [];
261
+ if (sessionEntry.hasSubagents) {
262
+ const allSubagentFiles = await listSubagentFiles(sessionEntry.jsonlPath);
263
+ userVisibleSubagents = allSubagentFiles.filter(f => !f.agentId.startsWith('aprompt_suggestion-') &&
264
+ !f.agentId.startsWith('acompact-'));
265
+ }
266
+ sessionEntry = await overlayCatalogPlanRefs(sessionEntry, id);
267
+ sendJson(res, 200, {
268
+ metadata: sessionEntry,
269
+ entries,
270
+ statistics: {
271
+ ...statistics,
272
+ totalTokens: statistics.totalInputTokens + statistics.totalOutputTokens,
273
+ },
274
+ subagents: userVisibleSubagents.map(f => ({
275
+ id: f.agentId,
276
+ sessionId: id,
277
+ })),
278
+ });
279
+ }
280
+ catch {
281
+ sendJson(res, 500, { error: 'Failed to get session' });
282
+ }
283
+ return true;
284
+ }
285
+ async function handleBadges(ctx, sessionId) {
286
+ const { res } = ctx;
287
+ try {
288
+ const resolved = await resolveSession(sessionId);
289
+ if (!resolved) {
290
+ sendJson(res, 404, { error: 'Session not found' });
291
+ return true;
292
+ }
293
+ const sessionEntry = resolved.entry;
294
+ const entries = await parseJSONL(resolved.jsonlPath);
295
+ if (entries.length === 0) {
296
+ sendJson(res, 200, {
297
+ planCount: 0,
298
+ agentCount: 0,
299
+ agentTypes: { explore: 0, plan: 0, general: 0 },
300
+ fileCount: 0,
301
+ mcpCount: 0,
302
+ webSearchCount: 0,
303
+ mode: null,
304
+ hadAutoCompact: false,
305
+ awaitingFirstResponse: true,
306
+ });
307
+ return true;
308
+ }
309
+ const statistics = getEntryStatistics(entries);
310
+ const { mode, planRefs } = detectModeAndPlans(entries);
311
+ const agentTypes = { explore: 0, plan: 0, general: 0 };
312
+ const seenAgentIds = new Set();
313
+ for (const entry of entries) {
314
+ if (entry.type === 'agent_progress' && entry.content.agentId) {
315
+ if (seenAgentIds.has(entry.content.agentId))
316
+ continue;
317
+ seenAgentIds.add(entry.content.agentId);
318
+ const agentType = entry.content.agentType?.toLowerCase() || '';
319
+ if (agentType === 'explore') {
320
+ agentTypes.explore++;
321
+ }
322
+ else if (agentType === 'plan') {
323
+ agentTypes.plan++;
324
+ }
325
+ else if (agentType) {
326
+ agentTypes.general++;
327
+ }
328
+ }
329
+ }
330
+ const filesModified = new Set();
331
+ for (const entry of entries) {
332
+ if (entry.type === 'tool_call') {
333
+ const toolName = entry.content.toolName;
334
+ const input = entry.content.toolInput;
335
+ if ((toolName === 'Write' || toolName === 'Edit') && input?.file_path) {
336
+ filesModified.add(input.file_path);
337
+ }
338
+ }
339
+ }
340
+ let agentCount = 0;
341
+ if (sessionEntry?.hasSubagents && sessionEntry?.subagentIds) {
342
+ agentCount = sessionEntry.subagentIds.length;
343
+ }
344
+ sendJson(res, 200, {
345
+ planCount: planRefs.length || sessionEntry?.planCount || 0,
346
+ agentCount,
347
+ agentTypes,
348
+ fileCount: filesModified.size,
349
+ mcpCount: statistics.mcpCalls,
350
+ webSearchCount: statistics.webSearches,
351
+ mode,
352
+ hadAutoCompact: sessionEntry?.hadAutoCompact || false,
353
+ });
354
+ }
355
+ catch {
356
+ sendJson(res, 500, { error: 'Failed to get session badges' });
357
+ }
358
+ return true;
359
+ }
360
+ async function handleSubagentDetail(ctx, sessionId, agentId) {
361
+ const { res } = ctx;
362
+ try {
363
+ const resolved = await resolveSession(sessionId);
364
+ if (!resolved) {
365
+ sendJson(res, 404, { error: 'Session not found' });
366
+ return true;
367
+ }
368
+ const subagentFiles = await listSubagentFiles(resolved.jsonlPath);
369
+ const subagentFile = subagentFiles.find(f => f.agentId === agentId);
370
+ if (!subagentFile) {
371
+ sendJson(res, 404, { error: 'Subagent not found' });
372
+ return true;
373
+ }
374
+ const entries = await parseJSONL(subagentFile.filePath);
375
+ const statistics = getEntryStatistics(entries);
376
+ const firstUserEntry = entries.find(e => e.type === 'user_message');
377
+ const prompt = firstUserEntry?.content.text || 'Unknown task';
378
+ const firstAssistant = entries.find(e => e.type === 'assistant_message' || e.type === 'tool_call');
379
+ const model = firstAssistant?.content.model;
380
+ // Use LAST turn's input tokens for context window size
381
+ const totalInput = statistics.lastInputTokens + statistics.lastCacheRead;
382
+ const totalOutput = statistics.totalOutputTokensEstimated;
383
+ sendJson(res, 200, {
384
+ id: agentId,
385
+ sessionId,
386
+ prompt,
387
+ model,
388
+ entries,
389
+ statistics: {
390
+ messageCount: statistics.userMessages + statistics.assistantMessages,
391
+ toolCallCount: statistics.toolCalls,
392
+ tokens: {
393
+ totalInput,
394
+ totalOutput,
395
+ freshInput: statistics.lastInputTokens > 0 ? statistics.lastInputTokens : undefined,
396
+ cacheCreation: statistics.lastCacheCreation > 0 ? statistics.lastCacheCreation : undefined,
397
+ cacheRead: statistics.lastCacheRead > 0 ? statistics.lastCacheRead : undefined,
398
+ },
399
+ durationMs: statistics.totalDurationMs > 0 ? statistics.totalDurationMs : undefined,
400
+ },
401
+ });
402
+ }
403
+ catch {
404
+ sendJson(res, 500, { error: 'Failed to get subagent' });
405
+ }
406
+ return true;
407
+ }
408
+ async function handleWebSearches(ctx, sessionId) {
409
+ const { res } = ctx;
410
+ try {
411
+ let sessionEntry = await getSessionEntry(sessionId);
412
+ if (!sessionEntry) {
413
+ const sessionFile = await findSessionById(sessionId);
414
+ if (!sessionFile) {
415
+ sendJson(res, 404, { error: 'Session not found' });
416
+ return true;
417
+ }
418
+ sendJson(res, 200, { searches: [] });
419
+ return true;
420
+ }
421
+ const entries = await parseJSONL(sessionEntry.jsonlPath);
422
+ const searches = [];
423
+ const seenQueries = new Set();
424
+ for (let i = 0; i < entries.length; i++) {
425
+ const entry = entries[i];
426
+ if (entry.type === 'web_search' && entry.content.searchType === 'results' && entry.content.searchQuery) {
427
+ if (seenQueries.has(entry.content.searchQuery))
428
+ continue;
429
+ seenQueries.add(entry.content.searchQuery);
430
+ let response = '';
431
+ for (let j = i + 1; j < entries.length; j++) {
432
+ const next = entries[j];
433
+ if (next.type === 'assistant_message' && next.content.text) {
434
+ if (next.content.text.length >= 200) {
435
+ response = next.content.text;
436
+ break;
437
+ }
438
+ }
439
+ if (next.type === 'user_message' || (next.type === 'web_search' && next.content.searchType === 'results')) {
440
+ break;
441
+ }
442
+ }
443
+ searches.push({
444
+ query: entry.content.searchQuery,
445
+ resultCount: entry.content.searchResultCount || 0,
446
+ urls: entry.content.searchUrls || [],
447
+ response,
448
+ timestamp: entry.timestamp,
449
+ });
450
+ }
451
+ }
452
+ sendJson(res, 200, { searches });
453
+ }
454
+ catch {
455
+ sendJson(res, 500, { error: 'Failed to get web searches' });
456
+ }
457
+ return true;
458
+ }
459
+ async function handleTasks(ctx, sessionId) {
460
+ const { res } = ctx;
461
+ try {
462
+ const resolved = await resolveSession(sessionId);
463
+ if (!resolved) {
464
+ sendJson(res, 404, { error: 'Session not found' });
465
+ return true;
466
+ }
467
+ const entries = await parseJSONL(resolved.jsonlPath);
468
+ const signals = extractTaskSignals(entries, sessionId);
469
+ const tasks = signals
470
+ .filter(s => s.source === 'task_create' || s.source === 'task_update')
471
+ .map(s => ({
472
+ id: s.taskId || `auto-${signals.indexOf(s)}`,
473
+ subject: s.text,
474
+ status: s.status,
475
+ timestamp: s.timestamp,
476
+ }));
477
+ const completed = tasks.filter(t => t.status === 'completed').length;
478
+ const inProgress = tasks.filter(t => t.status === 'in_progress').length;
479
+ const pending = tasks.filter(t => t.status === 'pending').length;
480
+ const total = tasks.length;
481
+ const percentage = total > 0 ? Math.round((completed / total) * 100) : 0;
482
+ sendJson(res, 200, {
483
+ tasks,
484
+ summary: {
485
+ total,
486
+ completed,
487
+ inProgress,
488
+ pending,
489
+ percentage,
490
+ },
491
+ });
492
+ }
493
+ catch {
494
+ sendJson(res, 500, { error: 'Failed to get session tasks' });
495
+ }
496
+ return true;
497
+ }
498
+ async function handlePlanByMessageIndex(ctx, sessionId, messageIndex) {
499
+ const { res } = ctx;
500
+ if (messageIndex < 0) {
501
+ sendJson(res, 400, { error: 'Invalid session or message index' });
502
+ return true;
503
+ }
504
+ try {
505
+ let sessionEntry = await getSessionEntry(sessionId);
506
+ if (!sessionEntry) {
507
+ const sessionFile = await findSessionById(sessionId);
508
+ if (!sessionFile) {
509
+ sendJson(res, 404, { error: 'Session not found' });
510
+ return true;
511
+ }
512
+ sendJson(res, 404, { error: 'No plans found in session' });
513
+ return true;
514
+ }
515
+ sessionEntry = await overlayCatalogPlanRefs(sessionEntry, sessionId);
516
+ if (!sessionEntry.planRefs || sessionEntry.planRefs.length === 0) {
517
+ sendJson(res, 404, { error: 'No plans found in session' });
518
+ return true;
519
+ }
520
+ const planRef = sessionEntry.planRefs.find(p => p.messageIndex === messageIndex);
521
+ if (!planRef) {
522
+ sendJson(res, 404, { error: 'Plan not found at message index' });
523
+ return true;
524
+ }
525
+ if (planRef.source === 'embedded') {
526
+ const entries = await parseJSONL(sessionEntry.jsonlPath);
527
+ const entry = entries[messageIndex];
528
+ if (!entry || entry.type !== 'user_message' || !entry.content.text) {
529
+ sendJson(res, 404, { error: 'Plan content not found' });
530
+ return true;
531
+ }
532
+ const text = entry.content.text;
533
+ const { PLAN_TRIGGER_PATTERNS } = await import('@jacques-ai/core');
534
+ let planContent = text;
535
+ for (const pattern of PLAN_TRIGGER_PATTERNS) {
536
+ const match = text.match(pattern);
537
+ if (match) {
538
+ planContent = text.substring(match[0].length).trim();
539
+ break;
540
+ }
541
+ }
542
+ sendJson(res, 200, {
543
+ title: planRef.title,
544
+ source: planRef.source,
545
+ messageIndex: planRef.messageIndex,
546
+ content: planContent,
547
+ });
548
+ }
549
+ else if (planRef.source === 'agent') {
550
+ const agentId = planRef.agentId;
551
+ if (!agentId) {
552
+ sendJson(res, 404, { error: 'Agent ID not found for plan' });
553
+ return true;
554
+ }
555
+ const subagentFiles = await listSubagentFiles(sessionEntry.jsonlPath);
556
+ const subagentFile = subagentFiles.find(f => f.agentId === agentId);
557
+ if (!subagentFile) {
558
+ sendJson(res, 404, { error: 'Agent subagent file not found' });
559
+ return true;
560
+ }
561
+ const subEntries = await parseJSONL(subagentFile.filePath);
562
+ let planContent = '';
563
+ for (let i = subEntries.length - 1; i >= 0; i--) {
564
+ if (subEntries[i].type === 'assistant_message' && subEntries[i].content.text && subEntries[i].content.text.length >= 100) {
565
+ planContent = subEntries[i].content.text;
566
+ break;
567
+ }
568
+ }
569
+ if (!planContent) {
570
+ planContent = subEntries
571
+ .filter(e => e.type === 'assistant_message' && e.content.text)
572
+ .map(e => e.content.text)
573
+ .join('\n\n') || 'No plan content found in agent response.';
574
+ }
575
+ sendJson(res, 200, {
576
+ title: planRef.title,
577
+ source: planRef.source,
578
+ messageIndex: planRef.messageIndex,
579
+ agentId,
580
+ content: planContent,
581
+ });
582
+ }
583
+ else {
584
+ // Written plans — read from file
585
+ if (!planRef.filePath) {
586
+ sendJson(res, 404, { error: 'Plan file path not found' });
587
+ return true;
588
+ }
589
+ try {
590
+ const content = await fsPromises.readFile(planRef.filePath, 'utf-8');
591
+ sendJson(res, 200, {
592
+ title: planRef.title,
593
+ source: planRef.source,
594
+ messageIndex: planRef.messageIndex,
595
+ filePath: planRef.filePath,
596
+ content,
597
+ });
598
+ }
599
+ catch {
600
+ sendJson(res, 404, { error: 'Plan file not found' });
601
+ }
602
+ }
603
+ }
604
+ catch {
605
+ sendJson(res, 500, { error: 'Failed to get plan' });
606
+ }
607
+ return true;
608
+ }
609
+ //# sourceMappingURL=session-routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-routes.js","sourceRoot":"","sources":["../../src/routes/session-routes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Source configuration API routes
3
+ *
4
+ * GET /api/sources/status — Get connection status for all sources
5
+ * POST /api/sources/google — Configure Google Docs source
6
+ * DELETE /api/sources/google — Disconnect Google Docs
7
+ * POST /api/sources/notion — Configure Notion source
8
+ * DELETE /api/sources/notion — Disconnect Notion
9
+ */
10
+ import type { RouteContext } from './types.js';
11
+ export declare function sourceRoutes(ctx: RouteContext): Promise<boolean>;
12
+ //# sourceMappingURL=source-routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-routes.d.ts","sourceRoot":"","sources":["../../src/routes/source-routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI/C,wBAAsB,YAAY,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAuItE"}