@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,626 @@
1
+ /**
2
+ * Session Registry
3
+ *
4
+ * Manages active AI sessions from multiple sources (Claude Code, Cursor, etc.)
5
+ * with focus detection. Focus is determined by terminal focus watcher.
6
+ *
7
+ * Delegates to:
8
+ * - SessionFactory: Session object creation from hooks, discovery, and context updates
9
+ * - ProcessMonitor: Process verification, bypass detection, PID management
10
+ * - CleanupService: Recently-ended tracking and stale session cleanup
11
+ */
12
+ import { createLogger } from './logging/logger-factory.js';
13
+ import { readFile } from 'fs/promises';
14
+ import { parseJSONL } from '@jacques-ai/core/session';
15
+ import { detectModeAndPlans } from '@jacques-ai/core/cache';
16
+ import { matchTerminalKeys } from './connection/terminal-key.js';
17
+ import { createFromHook, createFromDiscovered, createFromContextUpdate, } from './session/session-factory.js';
18
+ import { ProcessMonitor } from './session/process-monitor.js';
19
+ import { CleanupService } from './session/cleanup-service.js';
20
+ /**
21
+ * SessionRegistry - tracks all active AI sessions from all sources
22
+ *
23
+ * Key behaviors:
24
+ * - Sessions are indexed by session_id
25
+ * - Sessions track their source (claude_code, cursor, etc.)
26
+ * - Focus is determined by terminal focus watcher (macOS AppleScript)
27
+ * - New session registration auto-focuses
28
+ * - Sessions can be manually focused via setFocusedSession
29
+ */
30
+ export class SessionRegistry {
31
+ sessions = new Map();
32
+ focusedSessionId = null;
33
+ logger;
34
+ onSessionRemovedCallback;
35
+ // Debounce timers for awaiting status (PreToolUse → PostToolUse gap)
36
+ awaitingTimers = new Map();
37
+ // Delegates
38
+ processMonitor;
39
+ cleanupService;
40
+ constructor(options = {}) {
41
+ // Support both old silent flag and new logger injection
42
+ this.logger = options.logger ?? createLogger({ silent: options.silent });
43
+ this.onSessionRemovedCallback = options.onSessionRemoved;
44
+ // Initialize delegates with callbacks into this registry
45
+ this.processMonitor = new ProcessMonitor({
46
+ callbacks: {
47
+ getSession: (id) => this.sessions.get(id),
48
+ getAllSessions: () => Array.from(this.sessions.entries()),
49
+ removeSession: (id) => this.unregisterSession(id),
50
+ },
51
+ logger: this.logger,
52
+ });
53
+ this.cleanupService = new CleanupService({
54
+ callbacks: {
55
+ getAllSessions: () => Array.from(this.sessions.entries()),
56
+ removeSession: (id) => this.unregisterSession(id),
57
+ },
58
+ logger: this.logger,
59
+ });
60
+ }
61
+ // Convenience accessors for logging (messages already include [Registry] prefix)
62
+ get log() { return this.logger.log.bind(this.logger); }
63
+ get warn() { return this.logger.warn.bind(this.logger); }
64
+ /**
65
+ * Detect session mode (planning/execution) from JSONL transcript.
66
+ *
67
+ * For plan mode detection, scans raw JSONL text for EnterPlanMode/ExitPlanMode
68
+ * tool names. This is more reliable than parsed entries because the parser only
69
+ * captures the first tool_use block per assistant message — ExitPlanMode can be
70
+ * bundled with other tools (Edit, Write) and get silently dropped.
71
+ */
72
+ async detectSessionMode(transcriptPath) {
73
+ if (!transcriptPath)
74
+ return null;
75
+ try {
76
+ // Raw text scan for plan mode — catches all tool_use blocks regardless of position
77
+ const raw = await readFile(transcriptPath, 'utf-8');
78
+ const enterPlanIdx = raw.lastIndexOf('"name":"EnterPlanMode"');
79
+ const exitPlanIdx = raw.lastIndexOf('"name":"ExitPlanMode"');
80
+ // Also check spaced variant: "name": "EnterPlanMode"
81
+ const enterPlanIdxSpaced = raw.lastIndexOf('"name": "EnterPlanMode"');
82
+ const exitPlanIdxSpaced = raw.lastIndexOf('"name": "ExitPlanMode"');
83
+ const lastEnter = Math.max(enterPlanIdx, enterPlanIdxSpaced);
84
+ const lastExit = Math.max(exitPlanIdx, exitPlanIdxSpaced);
85
+ if (lastEnter > lastExit) {
86
+ return 'planning';
87
+ }
88
+ // Fall back to parsed detection for execution mode
89
+ const entries = await parseJSONL(transcriptPath);
90
+ if (entries.length === 0)
91
+ return null;
92
+ const { mode } = detectModeAndPlans(entries);
93
+ // If plan mode was explicitly exited (ExitPlanMode in JSONL) but parsed
94
+ // detection found no specific mode, return 'default' to clear stale 'planning'
95
+ if (!mode && lastExit !== -1 && lastExit > lastEnter) {
96
+ return 'default';
97
+ }
98
+ return mode;
99
+ }
100
+ catch (err) {
101
+ this.warn(`[Registry] Failed to detect mode from JSONL: ${err}`);
102
+ return null;
103
+ }
104
+ }
105
+ /**
106
+ * Register a session discovered at startup from process scanning
107
+ * Creates a session with DISCOVERED: terminal key prefix
108
+ * @param discovered Detected session from process scanner
109
+ * @returns The created session, or existing session if already registered
110
+ */
111
+ registerDiscoveredSession(discovered) {
112
+ // Check if session already exists (registered via hooks before scanner finished)
113
+ const existing = this.sessions.get(discovered.sessionId);
114
+ if (existing) {
115
+ this.log(`[Registry] Session already registered, skipping discovery: ${discovered.sessionId}`);
116
+ return existing;
117
+ }
118
+ const session = createFromDiscovered(discovered);
119
+ this.sessions.set(discovered.sessionId, session);
120
+ // Auto-focus if this is the only session
121
+ if (this.sessions.size === 1) {
122
+ this.focusedSessionId = discovered.sessionId;
123
+ }
124
+ const contextInfo = session.context_metrics
125
+ ? `~${session.context_metrics.used_percentage.toFixed(1)}%`
126
+ : 'unknown';
127
+ const terminalInfo = discovered.terminalType || 'Unknown terminal';
128
+ const gitInfo = session.git_branch
129
+ ? ` [${session.git_branch}${session.git_worktree ? `@${session.git_worktree}` : ''}]`
130
+ : '';
131
+ const modeInfo = session.mode ? ` mode=${session.mode}` : '';
132
+ this.log(`[Registry] Discovered session: ${discovered.sessionId} [${discovered.project}]${gitInfo}${modeInfo} - ${contextInfo} (${terminalInfo})`);
133
+ this.log(`[Registry] Terminal key: ${session.terminal_key}`);
134
+ return session;
135
+ }
136
+ /**
137
+ * Register a new session or update an existing auto-registered one
138
+ * @param event SessionStart event data
139
+ * @returns The created/updated session
140
+ */
141
+ registerSession(event) {
142
+ // Clean up any existing sessions with the same terminal_key (different session_id)
143
+ // This handles the case where a new session starts in the same terminal tab
144
+ if (event.terminal_key) {
145
+ for (const [id, session] of this.sessions) {
146
+ if (id !== event.session_id && session.terminal_key === event.terminal_key) {
147
+ this.log(`[Registry] Removing stale session ${id} (same terminal_key as new session ${event.session_id})`);
148
+ this.unregisterSession(id);
149
+ }
150
+ }
151
+ }
152
+ // Check if session was already auto-registered from context_update or discovered at startup
153
+ const existing = this.sessions.get(event.session_id);
154
+ if (existing) {
155
+ // Check if upgrading from a discovered session
156
+ const wasDiscovered = existing.terminal_key?.startsWith('DISCOVERED:');
157
+ // Update the existing session with terminal identity info
158
+ this.log(`[Registry] Updating ${wasDiscovered ? 'discovered' : 'auto-registered'} session with terminal info: ${event.session_id}`);
159
+ existing.terminal = event.terminal;
160
+ existing.terminal_key = event.terminal_key;
161
+ const newTitle = event.session_title?.trim();
162
+ if (newTitle && !newTitle.startsWith('<local-command') && !newTitle.startsWith('<command-')) {
163
+ existing.session_title = event.session_title;
164
+ }
165
+ existing.transcript_path = event.transcript_path || existing.transcript_path;
166
+ if (event.autocompact) {
167
+ existing.autocompact = event.autocompact;
168
+ }
169
+ if (event.git_branch !== undefined) {
170
+ existing.git_branch = event.git_branch || null;
171
+ existing.git_worktree = event.git_worktree || null;
172
+ }
173
+ if (event.git_repo_root !== undefined) {
174
+ existing.git_repo_root = event.git_repo_root || null;
175
+ }
176
+ this.log(`[Registry] Terminal key updated: ${existing.terminal_key}`);
177
+ return existing;
178
+ }
179
+ const session = createFromHook(event);
180
+ this.sessions.set(event.session_id, session);
181
+ // Check if this session was launched with --dangerously-skip-permissions
182
+ if (this.processMonitor.consumePendingBypass(session.cwd)) {
183
+ session.is_bypass = true;
184
+ this.log(`[Registry] Session marked as bypass (launched with --dangerously-skip-permissions): ${event.session_id}`);
185
+ }
186
+ // Set mode from permission_mode if available (bypass is orthogonal to mode)
187
+ this.updateModeFromPermission(session, event.permission_mode);
188
+ // Auto-focus new session
189
+ this.focusedSessionId = event.session_id;
190
+ // Log autocompact status if present
191
+ const acStatus = session.autocompact
192
+ ? `AC:${session.autocompact.enabled ? 'ON' : 'OFF'}@${session.autocompact.threshold}%`
193
+ : 'AC:unknown';
194
+ this.log(`[Registry] Session registered: ${event.session_id} [${session.source}] - "${session.session_title || 'Untitled'}" (${acStatus})`);
195
+ this.log(`[Registry] Terminal key: ${session.terminal_key}`);
196
+ return session;
197
+ }
198
+ /**
199
+ * Update session with activity event
200
+ * @param event Activity event data
201
+ * @returns Updated session or null if session not found
202
+ */
203
+ updateActivity(event) {
204
+ const session = this.sessions.get(event.session_id);
205
+ if (!session) {
206
+ this.warn(`[Registry] Activity for unknown session: ${event.session_id}`);
207
+ return null;
208
+ }
209
+ // Cancel any pending awaiting timer (PostToolUse means tool was approved/completed)
210
+ this.cancelAwaitingTimer(event.session_id);
211
+ session.last_activity = event.timestamp;
212
+ session.status = 'working';
213
+ session.last_tool_name = event.tool_name || null;
214
+ // Store terminal_pid if not already known (enables bypass detection for auto-registered sessions)
215
+ this.processMonitor.storeTerminalPid(session, event.terminal_pid);
216
+ // Update mode from permission_mode if available
217
+ this.updateModeFromPermission(session, event.permission_mode);
218
+ // Update title if changed (filter internal command titles to prevent flickering)
219
+ if (event.session_title && event.session_title !== session.session_title) {
220
+ const trimmed = event.session_title.trim();
221
+ if (!trimmed.startsWith('<local-command') && !trimmed.startsWith('<command-')) {
222
+ session.session_title = event.session_title;
223
+ }
224
+ }
225
+ // Update context metrics if provided
226
+ if (event.context_metrics) {
227
+ session.context_metrics = event.context_metrics;
228
+ }
229
+ return session;
230
+ }
231
+ /**
232
+ * Update session with context data from statusLine or preCompact
233
+ * @param event Context update event data
234
+ * @returns Updated session (auto-creates if not found)
235
+ */
236
+ updateContext(event) {
237
+ let session = this.sessions.get(event.session_id);
238
+ let isNewSession = false;
239
+ // Auto-register session if it doesn't exist
240
+ // This handles the timing issue where statusLine/preCompact fires before SessionStart
241
+ if (!session) {
242
+ // Check if this session was recently ended - don't auto-register
243
+ if (this.cleanupService.wasRecentlyEnded(event.session_id)) {
244
+ this.log(`[Registry] Ignoring context_update for recently ended session: ${event.session_id}`);
245
+ return null;
246
+ }
247
+ // Determine source from event, default to claude_code for backward compatibility
248
+ const source = event.source || 'claude_code';
249
+ this.log(`[Registry] Auto-registering session from context_update: ${event.session_id} [${source}]`);
250
+ session = createFromContextUpdate(event);
251
+ // Check if this session was launched with --dangerously-skip-permissions
252
+ if (this.processMonitor.consumePendingBypass(session.cwd)) {
253
+ session.is_bypass = true;
254
+ this.log(`[Registry] Auto-registered session marked as bypass: ${event.session_id}`);
255
+ }
256
+ this.sessions.set(event.session_id, session);
257
+ isNewSession = true;
258
+ }
259
+ // Update source if provided and not already set (or was auto-detected)
260
+ if (event.source && (!session.source || session.source === 'claude_code')) {
261
+ session.source = event.source;
262
+ }
263
+ session.last_activity = event.timestamp;
264
+ // context_update implies Claude is actively processing (statusLine fires during generation)
265
+ // Transition active → working so discovered sessions don't stay stuck on "Starting..."
266
+ if (session.status === 'active') {
267
+ session.status = 'working';
268
+ this.log(`[Registry] Session status: active → working (from context_update)`);
269
+ }
270
+ // Update context metrics
271
+ const metrics = {
272
+ used_percentage: event.used_percentage ?? 0,
273
+ remaining_percentage: event.remaining_percentage ?? 100,
274
+ context_window_size: event.context_window_size ?? 0,
275
+ total_input_tokens: event.total_input_tokens ?? 0,
276
+ total_output_tokens: event.total_output_tokens ?? 0,
277
+ is_estimate: event.is_estimate ?? false,
278
+ };
279
+ session.context_metrics = metrics;
280
+ // Debug: log context update details (show ~ for estimates)
281
+ const estimateMarker = metrics.is_estimate ? '~' : '';
282
+ this.log(`[Registry] Context updated for ${event.session_id}: ${estimateMarker}${metrics.used_percentage.toFixed(1)}% used, model: ${event.model || 'unchanged'}`);
283
+ // Update autocompact status if provided
284
+ if (event.autocompact) {
285
+ session.autocompact = event.autocompact;
286
+ }
287
+ // Update model if provided
288
+ if (event.model) {
289
+ session.model = {
290
+ id: event.model,
291
+ display_name: event.model_display_name || event.model,
292
+ };
293
+ }
294
+ // Update workspace info - prefer project_dir for project name
295
+ if (event.project_dir) {
296
+ session.workspace = {
297
+ current_dir: event.cwd || session.cwd,
298
+ project_dir: event.project_dir,
299
+ };
300
+ // Use project_dir for project name (more accurate than cwd)
301
+ const projectName = event.project_dir.split('/').filter(Boolean).pop();
302
+ if (projectName) {
303
+ session.project = projectName;
304
+ }
305
+ }
306
+ else if (event.cwd) {
307
+ session.cwd = event.cwd;
308
+ // Only use cwd for project name if we don't have project_dir
309
+ if (!session.workspace?.project_dir) {
310
+ session.project = event.cwd.split('/').filter(Boolean).pop() || event.cwd;
311
+ }
312
+ }
313
+ // Focus is driven by terminal focus watcher, not by events
314
+ // Update terminal_key if provided (from statusLine hook)
315
+ // Allow upgrading AUTO: (hook-registered) and DISCOVERED: (process-scanner) keys
316
+ const canUpgradeKey = session.terminal_key.startsWith('AUTO:') || session.terminal_key.startsWith('DISCOVERED:');
317
+ if (event.terminal_key && event.terminal_key !== '' && canUpgradeKey) {
318
+ this.log(`[Registry] Updating terminal_key from context_update: ${session.terminal_key} -> ${event.terminal_key}`);
319
+ // Clean up any existing sessions with the same terminal_key (same logic as registerSession)
320
+ for (const [id, existingSession] of this.sessions) {
321
+ if (id !== event.session_id && existingSession.terminal_key === event.terminal_key) {
322
+ this.log(`[Registry] Removing stale session ${id} (same terminal_key as updated session ${event.session_id})`);
323
+ this.unregisterSession(id);
324
+ }
325
+ }
326
+ session.terminal_key = event.terminal_key;
327
+ }
328
+ // Update session_title if provided and different (from statusLine hook reading transcript)
329
+ // Filter internal command titles to prevent flickering with "Active Session"
330
+ if (event.session_title && event.session_title.trim() !== '' && event.session_title !== session.session_title
331
+ && !event.session_title.trim().startsWith('<local-command') && !event.session_title.trim().startsWith('<command-')) {
332
+ const oldTitle = session.session_title;
333
+ session.session_title = event.session_title.trim();
334
+ this.log(`[Registry] Session title updated: "${oldTitle}" -> "${session.session_title}"`);
335
+ }
336
+ // Update transcript_path if provided and not already set (from statusLine hook)
337
+ if (event.transcript_path && !session.transcript_path) {
338
+ session.transcript_path = event.transcript_path;
339
+ this.log(`[Registry] Transcript path set: ${session.transcript_path}`);
340
+ }
341
+ // Update git branch if provided AND non-empty (from statusLine hook)
342
+ if (event.git_branch !== undefined && event.git_branch) {
343
+ if (event.git_branch !== session.git_branch) {
344
+ this.log(`[Registry] Git branch updated: "${session.git_branch}" -> "${event.git_branch}"`);
345
+ }
346
+ session.git_branch = event.git_branch;
347
+ }
348
+ if (event.git_worktree !== undefined && event.git_worktree) {
349
+ session.git_worktree = event.git_worktree;
350
+ }
351
+ // Update git_repo_root if provided AND non-empty (from statusLine hook)
352
+ if (event.git_repo_root !== undefined && event.git_repo_root) {
353
+ if (event.git_repo_root !== session.git_repo_root) {
354
+ this.log(`[Registry] Git repo root updated: "${session.git_repo_root}" -> "${event.git_repo_root}"`);
355
+ }
356
+ session.git_repo_root = event.git_repo_root;
357
+ }
358
+ // Store terminal_pid for bypass detection (statusLine sends PID)
359
+ if (event.terminal_pid) {
360
+ this.processMonitor.storeTerminalPid(session, event.terminal_pid);
361
+ }
362
+ if (isNewSession) {
363
+ // Auto-focus newly registered sessions (same as registerSession)
364
+ this.focusedSessionId = event.session_id;
365
+ this.log(`[Registry] Session auto-registered: ${event.session_id} - Project: "${session.project}"`);
366
+ }
367
+ return session;
368
+ }
369
+ /**
370
+ * Update session mode by detecting from JSONL transcript.
371
+ */
372
+ async updateSessionMode(sessionId) {
373
+ const session = this.sessions.get(sessionId);
374
+ if (!session) {
375
+ return null;
376
+ }
377
+ if (!session.transcript_path) {
378
+ return session;
379
+ }
380
+ try {
381
+ const newMode = await this.detectSessionMode(session.transcript_path);
382
+ if (newMode && newMode !== session.mode) {
383
+ const oldMode = session.mode;
384
+ session.mode = newMode;
385
+ if (newMode) {
386
+ this.log(`[Registry] Session mode changed: ${sessionId} - ${oldMode || 'null'} -> ${newMode}`);
387
+ }
388
+ }
389
+ }
390
+ catch (err) {
391
+ this.warn(`[Registry] Failed to update mode for ${sessionId}: ${err}`);
392
+ }
393
+ return session;
394
+ }
395
+ /**
396
+ * Mark session as idle
397
+ */
398
+ setSessionIdle(sessionId, permissionMode, terminalPid) {
399
+ const session = this.sessions.get(sessionId);
400
+ if (!session) {
401
+ this.warn(`[Registry] Idle event for unknown session: ${sessionId}`);
402
+ return null;
403
+ }
404
+ if (terminalPid) {
405
+ this.processMonitor.storeTerminalPid(session, terminalPid);
406
+ }
407
+ this.cancelAwaitingTimer(sessionId);
408
+ session.status = 'idle';
409
+ this.updateModeFromPermission(session, permissionMode);
410
+ this.log(`[Registry] Session idle: ${sessionId}`);
411
+ return session;
412
+ }
413
+ /**
414
+ * Start debounced awaiting status for a session.
415
+ */
416
+ setSessionAwaiting(sessionId, toolName, permissionMode, onTimeout, terminalPid) {
417
+ const session = this.sessions.get(sessionId);
418
+ if (!session) {
419
+ return;
420
+ }
421
+ if (terminalPid) {
422
+ this.processMonitor.storeTerminalPid(session, terminalPid);
423
+ }
424
+ this.updateModeFromPermission(session, permissionMode);
425
+ this.cancelAwaitingTimer(sessionId);
426
+ const timer = setTimeout(() => {
427
+ this.awaitingTimers.delete(sessionId);
428
+ const currentSession = this.sessions.get(sessionId);
429
+ if (currentSession && (currentSession.status === 'working' || currentSession.status === 'active')) {
430
+ currentSession.status = 'awaiting';
431
+ currentSession.last_tool_name = toolName;
432
+ this.log(`[Registry] Session awaiting approval: ${sessionId} (${toolName})`);
433
+ onTimeout(currentSession);
434
+ }
435
+ }, 1000);
436
+ this.awaitingTimers.set(sessionId, timer);
437
+ }
438
+ /**
439
+ * Cancel a pending awaiting timer for a session
440
+ */
441
+ cancelAwaitingTimer(sessionId) {
442
+ const timer = this.awaitingTimers.get(sessionId);
443
+ if (timer) {
444
+ clearTimeout(timer);
445
+ this.awaitingTimers.delete(sessionId);
446
+ }
447
+ }
448
+ /**
449
+ * Update session mode from permission_mode hook field.
450
+ */
451
+ updateModeFromPermission(session, permissionMode) {
452
+ if (!permissionMode)
453
+ return;
454
+ const validModes = ['default', 'plan', 'acceptEdits', 'dontAsk', 'bypassPermissions'];
455
+ if (!validModes.includes(permissionMode))
456
+ return;
457
+ if (permissionMode === 'bypassPermissions') {
458
+ if (!session.is_bypass) {
459
+ session.is_bypass = true;
460
+ this.log(`[Registry] Session marked as bypass from permission_mode: ${session.session_id}`);
461
+ }
462
+ return;
463
+ }
464
+ if (session.is_bypass && permissionMode !== 'plan')
465
+ return;
466
+ const newMode = permissionMode === 'plan' ? 'plan'
467
+ : permissionMode === 'acceptEdits' ? 'acceptEdits'
468
+ : 'default';
469
+ if (newMode !== session.mode) {
470
+ const oldMode = session.mode;
471
+ session.mode = newMode;
472
+ this.log(`[Registry] Session mode changed: ${session.session_id} - ${oldMode || 'null'} -> ${newMode} (from permission_mode: ${permissionMode})`);
473
+ }
474
+ }
475
+ /**
476
+ * Mark a CWD as expecting a bypass session.
477
+ * Delegates to ProcessMonitor.
478
+ */
479
+ markPendingBypass(cwd) {
480
+ this.processMonitor.markPendingBypass(cwd);
481
+ }
482
+ /**
483
+ * Unregister a session
484
+ */
485
+ unregisterSession(sessionId) {
486
+ const session = this.sessions.get(sessionId);
487
+ if (!session) {
488
+ this.warn(`[Registry] Unregister for unknown session: ${sessionId}`);
489
+ return;
490
+ }
491
+ this.cancelAwaitingTimer(sessionId);
492
+ // Track this session as recently ended to prevent re-registration
493
+ this.cleanupService.markRecentlyEnded(sessionId);
494
+ // Call the removal callback before deleting (for catalog extraction, etc.)
495
+ if (this.onSessionRemovedCallback) {
496
+ try {
497
+ this.onSessionRemovedCallback(session);
498
+ }
499
+ catch (err) {
500
+ this.warn(`[Registry] onSessionRemoved callback error: ${err}`);
501
+ }
502
+ }
503
+ this.sessions.delete(sessionId);
504
+ this.log(`[Registry] Session removed: ${sessionId}`);
505
+ // Clear focus if this was the focused session
506
+ if (this.focusedSessionId === sessionId) {
507
+ const remaining = Array.from(this.sessions.values())
508
+ .sort((a, b) => b.last_activity - a.last_activity);
509
+ this.focusedSessionId = remaining[0]?.session_id || null;
510
+ if (this.focusedSessionId) {
511
+ this.log(`[Registry] Focus shifted to: ${this.focusedSessionId}`);
512
+ }
513
+ }
514
+ }
515
+ /**
516
+ * Get a session by ID
517
+ */
518
+ getSession(sessionId) {
519
+ return this.sessions.get(sessionId);
520
+ }
521
+ /**
522
+ * Get all sessions sorted by last activity (most recent first)
523
+ */
524
+ getAllSessions() {
525
+ return Array.from(this.sessions.values())
526
+ .sort((a, b) => b.last_activity - a.last_activity);
527
+ }
528
+ /**
529
+ * Get the focused session ID
530
+ */
531
+ getFocusedSessionId() {
532
+ return this.focusedSessionId;
533
+ }
534
+ /**
535
+ * Get the focused session
536
+ */
537
+ getFocusedSession() {
538
+ if (!this.focusedSessionId)
539
+ return null;
540
+ return this.sessions.get(this.focusedSessionId) || null;
541
+ }
542
+ /**
543
+ * Manually set the focused session
544
+ */
545
+ setFocusedSession(sessionId) {
546
+ if (!this.sessions.has(sessionId)) {
547
+ this.warn(`[Registry] Cannot focus unknown session: ${sessionId}`);
548
+ return false;
549
+ }
550
+ this.focusedSessionId = sessionId;
551
+ this.log(`[Registry] Focus set to: ${sessionId}`);
552
+ return true;
553
+ }
554
+ /**
555
+ * Get the number of active sessions
556
+ */
557
+ getSessionCount() {
558
+ return this.sessions.size;
559
+ }
560
+ /**
561
+ * Check if a session exists
562
+ */
563
+ hasSession(sessionId) {
564
+ return this.sessions.has(sessionId);
565
+ }
566
+ /**
567
+ * Find a session by terminal key
568
+ */
569
+ findSessionByTerminalKey(terminalKey) {
570
+ for (const session of this.sessions.values()) {
571
+ if (session.terminal_key && matchTerminalKeys(session.terminal_key, terminalKey)) {
572
+ return session;
573
+ }
574
+ }
575
+ return null;
576
+ }
577
+ /**
578
+ * Clear all sessions (for testing or reset)
579
+ */
580
+ clear() {
581
+ for (const timer of this.awaitingTimers.values()) {
582
+ clearTimeout(timer);
583
+ }
584
+ this.awaitingTimers.clear();
585
+ this.sessions.clear();
586
+ this.cleanupService.clear();
587
+ this.focusedSessionId = null;
588
+ this.log('[Registry] All sessions cleared');
589
+ }
590
+ /**
591
+ * Start periodic cleanup of stale sessions.
592
+ * Delegates to CleanupService.
593
+ */
594
+ startCleanup(maxIdleMinutes = 60) {
595
+ this.cleanupService.startCleanup(maxIdleMinutes);
596
+ }
597
+ /**
598
+ * Stop periodic cleanup of stale sessions.
599
+ */
600
+ stopCleanup() {
601
+ this.cleanupService.stopCleanup();
602
+ this.processMonitor.stopProcessVerification();
603
+ }
604
+ /**
605
+ * Verify sessions are still valid.
606
+ * Delegates to ProcessMonitor.
607
+ */
608
+ async verifyProcesses() {
609
+ return this.processMonitor.verifyProcesses();
610
+ }
611
+ /**
612
+ * Detect bypass sessions by checking process command lines.
613
+ * Delegates to ProcessMonitor.
614
+ */
615
+ async detectBypassSessions() {
616
+ return this.processMonitor.detectBypassSessions();
617
+ }
618
+ /**
619
+ * Start periodic process verification.
620
+ * Delegates to ProcessMonitor.
621
+ */
622
+ startProcessVerification(intervalMs) {
623
+ this.processMonitor.startProcessVerification(intervalMs);
624
+ }
625
+ }
626
+ //# sourceMappingURL=session-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-registry.js","sourceRoot":"","sources":["../src/session-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAYH,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAW9D;;;;;;;;;GASG;AACH,MAAM,OAAO,eAAe;IAClB,QAAQ,GAAG,IAAI,GAAG,EAAmB,CAAC;IACtC,gBAAgB,GAAkB,IAAI,CAAC;IACvC,MAAM,CAAS;IACf,wBAAwB,CAA8B;IAE9D,qEAAqE;IAC7D,cAAc,GAAG,IAAI,GAAG,EAA0B,CAAC;IAE3D,YAAY;IACJ,cAAc,CAAiB;IAC/B,cAAc,CAAiB;IAEvC,YAAY,UAAkC,EAAE;QAC9C,wDAAwD;QACxD,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,YAAY,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACzE,IAAI,CAAC,wBAAwB,GAAG,OAAO,CAAC,gBAAgB,CAAC;QAEzD,yDAAyD;QACzD,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC;YACvC,SAAS,EAAE;gBACT,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzC,cAAc,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACzD,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;aAClD;YACD,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;QAEH,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC;YACvC,SAAS,EAAE;gBACT,cAAc,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACzD,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;aAClD;YACD,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;IACL,CAAC;IAED,iFAAiF;IACjF,IAAY,GAAG,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC/D,IAAY,IAAI,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAEjE;;;;;;;OAOG;IACK,KAAK,CAAC,iBAAiB,CAAC,cAA6B;QAC3D,IAAI,CAAC,cAAc;YAAE,OAAO,IAAI,CAAC;QAEjC,IAAI,CAAC;YACH,mFAAmF;YACnF,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;YACpD,MAAM,YAAY,GAAG,GAAG,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC;YAC/D,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;YAC7D,qDAAqD;YACrD,MAAM,kBAAkB,GAAG,GAAG,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC;YACtE,MAAM,iBAAiB,GAAG,GAAG,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC;YACpE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC;YAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;YAE1D,IAAI,SAAS,GAAG,QAAQ,EAAE,CAAC;gBACzB,OAAO,UAAU,CAAC;YACpB,CAAC;YAED,mDAAmD;YACnD,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,cAAc,CAAC,CAAC;YACjD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;YAEtC,MAAM,EAAE,IAAI,EAAE,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAC7C,wEAAwE;YACxE,+EAA+E;YAC/E,IAAI,CAAC,IAAI,IAAI,QAAQ,KAAK,CAAC,CAAC,IAAI,QAAQ,GAAG,SAAS,EAAE,CAAC;gBACrD,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,gDAAgD,GAAG,EAAE,CAAC,CAAC;YACjE,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,yBAAyB,CAAC,UAA2B;QACnD,iFAAiF;QACjF,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACzD,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,8DAA8D,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC;YAC/F,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,MAAM,OAAO,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAEjD,yCAAyC;QACzC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC,SAAS,CAAC;QAC/C,CAAC;QAED,MAAM,WAAW,GAAG,OAAO,CAAC,eAAe;YACzC,CAAC,CAAC,IAAI,OAAO,CAAC,eAAe,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;YAC3D,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,YAAY,GAAG,UAAU,CAAC,YAAY,IAAI,kBAAkB,CAAC;QACnE,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU;YAChC,CAAC,CAAC,KAAK,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG;YACrF,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,IAAI,CAAC,GAAG,CAAC,kCAAkC,UAAU,CAAC,SAAS,KAAK,UAAU,CAAC,OAAO,IAAI,OAAO,GAAG,QAAQ,MAAM,WAAW,KAAK,YAAY,GAAG,CAAC,CAAC;QACnJ,IAAI,CAAC,GAAG,CAAC,4BAA4B,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QAE7D,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;OAIG;IACH,eAAe,CAAC,KAAwB;QACtC,mFAAmF;QACnF,4EAA4E;QAC5E,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;YACvB,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC1C,IAAI,EAAE,KAAK,KAAK,CAAC,UAAU,IAAI,OAAO,CAAC,YAAY,KAAK,KAAK,CAAC,YAAY,EAAE,CAAC;oBAC3E,IAAI,CAAC,GAAG,CAAC,qCAAqC,EAAE,sCAAsC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC;oBAC3G,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC;QACH,CAAC;QAED,4FAA4F;QAC5F,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACrD,IAAI,QAAQ,EAAE,CAAC;YACb,+CAA+C;YAC/C,MAAM,aAAa,GAAG,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;YAEvE,0DAA0D;YAC1D,IAAI,CAAC,GAAG,CAAC,uBAAuB,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,iBAAiB,gCAAgC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;YACpI,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;YACnC,QAAQ,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;YAC3C,MAAM,QAAQ,GAAG,KAAK,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC;YAC7C,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC5F,QAAQ,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;YAC/C,CAAC;YACD,QAAQ,CAAC,eAAe,GAAG,KAAK,CAAC,eAAe,IAAI,QAAQ,CAAC,eAAe,CAAC;YAC7E,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;gBACtB,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;YAC3C,CAAC;YACD,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;gBACnC,QAAQ,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC;gBAC/C,QAAQ,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC;YACrD,CAAC;YACD,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;gBACtC,QAAQ,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,IAAI,IAAI,CAAC;YACvD,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,oCAAoC,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC;YACtE,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAE7C,yEAAyE;QACzE,IAAI,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1D,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,GAAG,CAAC,uFAAuF,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;QACtH,CAAC;QAED,4EAA4E;QAC5E,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;QAE9D,yBAAyB;QACzB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,UAAU,CAAC;QAEzC,oCAAoC;QACpC,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW;YAClC,CAAC,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,OAAO,CAAC,WAAW,CAAC,SAAS,GAAG;YACtF,CAAC,CAAC,YAAY,CAAC;QACjB,IAAI,CAAC,GAAG,CAAC,kCAAkC,KAAK,CAAC,UAAU,KAAK,OAAO,CAAC,MAAM,QAAQ,OAAO,CAAC,aAAa,IAAI,UAAU,MAAM,QAAQ,GAAG,CAAC,CAAC;QAC5I,IAAI,CAAC,GAAG,CAAC,4BAA4B,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QAE7D,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;OAIG;IACH,cAAc,CAAC,KAAoB;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACpD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,4CAA4C,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;YAC1E,OAAO,IAAI,CAAC;QACd,CAAC;QAED,oFAAoF;QACpF,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAE3C,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC,SAAS,CAAC;QACxC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;QAC3B,OAAO,CAAC,cAAc,GAAG,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC;QAEjD,kGAAkG;QAClG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;QAElE,gDAAgD;QAChD,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;QAE9D,iFAAiF;QACjF,IAAI,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,aAAa,KAAK,OAAO,CAAC,aAAa,EAAE,CAAC;YACzE,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;YAC3C,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC9E,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;YAC9C,CAAC;QACH,CAAC;QAED,qCAAqC;QACrC,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;YAC1B,OAAO,CAAC,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC;QAClD,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;OAIG;IACH,aAAa,CAAC,KAAyB;QACrC,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAClD,IAAI,YAAY,GAAG,KAAK,CAAC;QAEzB,4CAA4C;QAC5C,sFAAsF;QACtF,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,iEAAiE;YACjE,IAAI,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC3D,IAAI,CAAC,GAAG,CAAC,kEAAkE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;gBAC/F,OAAO,IAAI,CAAC;YACd,CAAC;YAED,iFAAiF;YACjF,MAAM,MAAM,GAAkB,KAAK,CAAC,MAAM,IAAI,aAAa,CAAC;YAE5D,IAAI,CAAC,GAAG,CAAC,4DAA4D,KAAK,CAAC,UAAU,KAAK,MAAM,GAAG,CAAC,CAAC;YAErG,OAAO,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;YAEzC,yEAAyE;YACzE,IAAI,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC1D,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;gBACzB,IAAI,CAAC,GAAG,CAAC,wDAAwD,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;YACvF,CAAC;YAED,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAC7C,YAAY,GAAG,IAAI,CAAC;QACtB,CAAC;QAED,uEAAuE;QACvE,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,aAAa,CAAC,EAAE,CAAC;YAC1E,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAChC,CAAC;QAED,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC,SAAS,CAAC;QAExC,4FAA4F;QAC5F,uFAAuF;QACvF,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAChC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;YAC3B,IAAI,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC;QAChF,CAAC;QAED,yBAAyB;QACzB,MAAM,OAAO,GAAmB;YAC9B,eAAe,EAAE,KAAK,CAAC,eAAe,IAAI,CAAC;YAC3C,oBAAoB,EAAE,KAAK,CAAC,oBAAoB,IAAI,GAAG;YACvD,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,IAAI,CAAC;YACnD,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,IAAI,CAAC;YACjD,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,IAAI,CAAC;YACnD,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,KAAK;SACxC,CAAC;QACF,OAAO,CAAC,eAAe,GAAG,OAAO,CAAC;QAElC,2DAA2D;QAC3D,MAAM,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,IAAI,CAAC,GAAG,CAAC,kCAAkC,KAAK,CAAC,UAAU,KAAK,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,KAAK,CAAC,KAAK,IAAI,WAAW,EAAE,CAAC,CAAC;QAEnK,wCAAwC;QACxC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QAC1C,CAAC;QAED,2BAA2B;QAC3B,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,GAAG;gBACd,EAAE,EAAE,KAAK,CAAC,KAAK;gBACf,YAAY,EAAE,KAAK,CAAC,kBAAkB,IAAI,KAAK,CAAC,KAAK;aACtD,CAAC;QACJ,CAAC;QAED,8DAA8D;QAC9D,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO,CAAC,SAAS,GAAG;gBAClB,WAAW,EAAE,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG;gBACrC,WAAW,EAAE,KAAK,CAAC,WAAW;aAC/B,CAAC;YACF,4DAA4D;YAC5D,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC;YACvE,IAAI,WAAW,EAAE,CAAC;gBAChB,OAAO,CAAC,OAAO,GAAG,WAAW,CAAC;YAChC,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;YACxB,6DAA6D;YAC7D,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC;gBACpC,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC;YAC5E,CAAC;QACH,CAAC;QAED,2DAA2D;QAE3D,yDAAyD;QACzD,iFAAiF;QACjF,MAAM,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QACjH,IAAI,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,YAAY,KAAK,EAAE,IAAI,aAAa,EAAE,CAAC;YACrE,IAAI,CAAC,GAAG,CAAC,yDAAyD,OAAO,CAAC,YAAY,OAAO,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;YAEnH,4FAA4F;YAC5F,KAAK,MAAM,CAAC,EAAE,EAAE,eAAe,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClD,IAAI,EAAE,KAAK,KAAK,CAAC,UAAU,IAAI,eAAe,CAAC,YAAY,KAAK,KAAK,CAAC,YAAY,EAAE,CAAC;oBACnF,IAAI,CAAC,GAAG,CAAC,qCAAqC,EAAE,0CAA0C,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC;oBAC/G,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC;YAED,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;QAC5C,CAAC;QAED,2FAA2F;QAC3F,6EAA6E;QAC7E,IAAI,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,aAAa,KAAK,OAAO,CAAC,aAAa;eACxG,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YACrH,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC;YACvC,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;YACnD,IAAI,CAAC,GAAG,CAAC,sCAAsC,QAAQ,SAAS,OAAO,CAAC,aAAa,GAAG,CAAC,CAAC;QAC5F,CAAC;QAED,gFAAgF;QAChF,IAAI,KAAK,CAAC,eAAe,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;YACtD,OAAO,CAAC,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC;YAChD,IAAI,CAAC,GAAG,CAAC,mCAAmC,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;QACzE,CAAC;QAED,qEAAqE;QACrE,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACvD,IAAI,KAAK,CAAC,UAAU,KAAK,OAAO,CAAC,UAAU,EAAE,CAAC;gBAC5C,IAAI,CAAC,GAAG,CAAC,mCAAmC,OAAO,CAAC,UAAU,SAAS,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC;YAC9F,CAAC;YACD,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QACxC,CAAC;QACD,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;YAC3D,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;QAC5C,CAAC;QAED,wEAAwE;QACxE,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;YAC7D,IAAI,KAAK,CAAC,aAAa,KAAK,OAAO,CAAC,aAAa,EAAE,CAAC;gBAClD,IAAI,CAAC,GAAG,CAAC,sCAAsC,OAAO,CAAC,aAAa,SAAS,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC;YACvG,CAAC;YACD,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;QAC9C,CAAC;QAED,iEAAiE;QACjE,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;YACvB,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,YAAY,EAAE,CAAC;YACjB,iEAAiE;YACjE,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,UAAU,CAAC;YACzC,IAAI,CAAC,GAAG,CAAC,uCAAuC,KAAK,CAAC,UAAU,gBAAgB,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC;QACtG,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CAAC,SAAiB;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;YAC7B,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;YAEtE,IAAI,OAAO,IAAI,OAAO,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;gBACxC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;gBAC7B,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC;gBACvB,IAAI,OAAO,EAAE,CAAC;oBACZ,IAAI,CAAC,GAAG,CAAC,oCAAoC,SAAS,MAAM,OAAO,IAAI,MAAM,OAAO,OAAO,EAAE,CAAC,CAAC;gBACjG,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,wCAAwC,SAAS,KAAK,GAAG,EAAE,CAAC,CAAC;QACzE,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,SAAiB,EAAE,cAAuB,EAAE,WAAoB;QAC7E,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,8CAA8C,SAAS,EAAE,CAAC,CAAC;YACrE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC7D,CAAC;QAED,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAEpC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;QACxB,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QACvD,IAAI,CAAC,GAAG,CAAC,4BAA4B,SAAS,EAAE,CAAC,CAAC;QAElD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,kBAAkB,CAChB,SAAiB,EACjB,QAAgB,EAChB,cAAkC,EAClC,SAAqC,EACrC,WAAoB;QAEpB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QAED,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC7D,CAAC;QAED,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QACvD,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAEpC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACtC,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACpD,IAAI,cAAc,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,SAAS,IAAI,cAAc,CAAC,MAAM,KAAK,QAAQ,CAAC,EAAE,CAAC;gBAClG,cAAc,CAAC,MAAM,GAAG,UAAU,CAAC;gBACnC,cAAc,CAAC,cAAc,GAAG,QAAQ,CAAC;gBACzC,IAAI,CAAC,GAAG,CAAC,yCAAyC,SAAS,KAAK,QAAQ,GAAG,CAAC,CAAC;gBAC7E,SAAS,CAAC,cAAc,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC,EAAE,IAAI,CAAC,CAAC;QAET,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,SAAiB;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACjD,IAAI,KAAK,EAAE,CAAC;YACV,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED;;OAEG;IACK,wBAAwB,CAAC,OAAgB,EAAE,cAAuB;QACxE,IAAI,CAAC,cAAc;YAAE,OAAO;QAC5B,MAAM,UAAU,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,mBAAmB,CAAC,CAAC;QACtF,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC;YAAE,OAAO;QAEjD,IAAI,cAAc,KAAK,mBAAmB,EAAE,CAAC;YAC3C,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;gBACvB,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;gBACzB,IAAI,CAAC,GAAG,CAAC,6DAA6D,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;YAC9F,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC,SAAS,IAAI,cAAc,KAAK,MAAM;YAAE,OAAO;QAE3D,MAAM,OAAO,GAAgB,cAAc,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM;YAC7D,CAAC,CAAC,cAAc,KAAK,aAAa,CAAC,CAAC,CAAC,aAAa;gBAClD,CAAC,CAAC,SAAS,CAAC;QAEd,IAAI,OAAO,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;YAC7B,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC;YACvB,IAAI,CAAC,GAAG,CAAC,oCAAoC,OAAO,CAAC,UAAU,MAAM,OAAO,IAAI,MAAM,OAAO,OAAO,2BAA2B,cAAc,GAAG,CAAC,CAAC;QACpJ,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,iBAAiB,CAAC,GAAW;QAC3B,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,SAAiB;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,8CAA8C,SAAS,EAAE,CAAC,CAAC;YACrE,OAAO;QACT,CAAC;QAED,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAEpC,kEAAkE;QAClE,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAEjD,2EAA2E;QAC3E,IAAI,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;YACzC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,IAAI,CAAC,+CAA+C,GAAG,EAAE,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAChC,IAAI,CAAC,GAAG,CAAC,+BAA+B,SAAS,EAAE,CAAC,CAAC;QAErD,8CAA8C;QAC9C,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;YACxC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;iBACjD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC;YACrD,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,IAAI,IAAI,CAAC;YAEzD,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC1B,IAAI,CAAC,GAAG,CAAC,gCAAgC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,SAAiB;QAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;aACtC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,mBAAmB;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,iBAAiB;QACf,IAAI,CAAC,IAAI,CAAC,gBAAgB;YAAE,OAAO,IAAI,CAAC;QACxC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,SAAiB;QACjC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,IAAI,CAAC,4CAA4C,SAAS,EAAE,CAAC,CAAC;YACnE,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;QAClC,IAAI,CAAC,GAAG,CAAC,4BAA4B,SAAS,EAAE,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,SAAiB;QAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,wBAAwB,CAAC,WAAmB;QAC1C,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YAC7C,IAAI,OAAO,CAAC,YAAY,IAAI,iBAAiB,CAAC,OAAO,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,CAAC;gBACjF,OAAO,OAAO,CAAC;YACjB,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,KAAK;QACH,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC;YACjD,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,iBAAyB,EAAE;QACtC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,WAAW;QACT,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;QAClC,IAAI,CAAC,cAAc,CAAC,uBAAuB,EAAE,CAAC;IAChD,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,eAAe;QACnB,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;IAC/C,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,oBAAoB;QACxB,OAAO,IAAI,CAAC,cAAc,CAAC,oBAAoB,EAAE,CAAC;IACpD,CAAC;IAED;;;OAGG;IACH,wBAAwB,CAAC,UAAmB;QAC1C,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC;IAC3D,CAAC;CACF"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Session Registry Tests
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=session-registry.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-registry.test.d.ts","sourceRoot":"","sources":["../src/session-registry.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}