dmux 5.1.0 → 5.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (319) hide show
  1. package/README.md +46 -143
  2. package/dist/DmuxApp.d.ts.map +1 -1
  3. package/dist/DmuxApp.js +99 -56
  4. package/dist/DmuxApp.js.map +1 -1
  5. package/dist/actions/implementations/closeAction.d.ts.map +1 -1
  6. package/dist/actions/implementations/closeAction.js +55 -21
  7. package/dist/actions/implementations/closeAction.js.map +1 -1
  8. package/dist/actions/implementations/index.d.ts +1 -0
  9. package/dist/actions/implementations/index.d.ts.map +1 -1
  10. package/dist/actions/implementations/index.js +3 -0
  11. package/dist/actions/implementations/index.js.map +1 -1
  12. package/dist/actions/implementations/mergeAction.d.ts.map +1 -1
  13. package/dist/actions/implementations/mergeAction.js +61 -20
  14. package/dist/actions/implementations/mergeAction.js.map +1 -1
  15. package/dist/actions/index.d.ts.map +1 -1
  16. package/dist/actions/index.js +6 -0
  17. package/dist/actions/index.js.map +1 -1
  18. package/dist/actions/merge/conflictResolution.d.ts.map +1 -1
  19. package/dist/actions/merge/conflictResolution.js +19 -13
  20. package/dist/actions/merge/conflictResolution.js.map +1 -1
  21. package/dist/actions/merge/issueHandlers/mainDirtyHandler.d.ts.map +1 -1
  22. package/dist/actions/merge/issueHandlers/mainDirtyHandler.js +8 -6
  23. package/dist/actions/merge/issueHandlers/mainDirtyHandler.js.map +1 -1
  24. package/dist/actions/merge/issueHandlers/worktreeUncommittedHandler.d.ts +1 -1
  25. package/dist/actions/merge/issueHandlers/worktreeUncommittedHandler.d.ts.map +1 -1
  26. package/dist/actions/merge/issueHandlers/worktreeUncommittedHandler.js +9 -2
  27. package/dist/actions/merge/issueHandlers/worktreeUncommittedHandler.js.map +1 -1
  28. package/dist/actions/merge/mergeExecution.d.ts.map +1 -1
  29. package/dist/actions/merge/mergeExecution.js +2 -1
  30. package/dist/actions/merge/mergeExecution.js.map +1 -1
  31. package/dist/actions/merge/multiMergeOrchestrator.d.ts.map +1 -1
  32. package/dist/actions/merge/multiMergeOrchestrator.js +33 -14
  33. package/dist/actions/merge/multiMergeOrchestrator.js.map +1 -1
  34. package/dist/actions/types.d.ts +4 -2
  35. package/dist/actions/types.d.ts.map +1 -1
  36. package/dist/actions/types.js +19 -1
  37. package/dist/actions/types.js.map +1 -1
  38. package/dist/components/dialogs/AgentChoiceDialog.d.ts +2 -1
  39. package/dist/components/dialogs/AgentChoiceDialog.d.ts.map +1 -1
  40. package/dist/components/dialogs/AgentChoiceDialog.js +4 -5
  41. package/dist/components/dialogs/AgentChoiceDialog.js.map +1 -1
  42. package/dist/components/dialogs/SettingsDialog.d.ts.map +1 -1
  43. package/dist/components/dialogs/SettingsDialog.js +3 -1
  44. package/dist/components/dialogs/SettingsDialog.js.map +1 -1
  45. package/dist/components/panes/MergePane.d.ts +1 -0
  46. package/dist/components/panes/MergePane.d.ts.map +1 -1
  47. package/dist/components/panes/MergePane.js +14 -3
  48. package/dist/components/panes/MergePane.js.map +1 -1
  49. package/dist/components/panes/PaneCard.d.ts +1 -3
  50. package/dist/components/panes/PaneCard.d.ts.map +1 -1
  51. package/dist/components/panes/PaneCard.js +54 -37
  52. package/dist/components/panes/PaneCard.js.map +1 -1
  53. package/dist/components/panes/PanesGrid.d.ts +1 -0
  54. package/dist/components/panes/PanesGrid.d.ts.map +1 -1
  55. package/dist/components/panes/PanesGrid.js +60 -78
  56. package/dist/components/panes/PanesGrid.js.map +1 -1
  57. package/dist/components/popups/agentChoicePopup.d.ts +2 -2
  58. package/dist/components/popups/agentChoicePopup.js +85 -56
  59. package/dist/components/popups/agentChoicePopup.js.map +1 -1
  60. package/dist/components/popups/diffPeekPopup.d.ts +7 -0
  61. package/dist/components/popups/diffPeekPopup.d.ts.map +1 -0
  62. package/dist/components/popups/diffPeekPopup.js +99 -0
  63. package/dist/components/popups/diffPeekPopup.js.map +1 -0
  64. package/dist/components/popups/enabledAgentsPopup.d.ts +7 -0
  65. package/dist/components/popups/enabledAgentsPopup.d.ts.map +1 -0
  66. package/dist/components/popups/enabledAgentsPopup.js +196 -0
  67. package/dist/components/popups/enabledAgentsPopup.js.map +1 -0
  68. package/dist/components/popups/kebabMenuPopup.js +2 -2
  69. package/dist/components/popups/kebabMenuPopup.js.map +1 -1
  70. package/dist/components/popups/mergeUncommittedChoicePopup.d.ts +7 -0
  71. package/dist/components/popups/mergeUncommittedChoicePopup.d.ts.map +1 -0
  72. package/dist/components/popups/mergeUncommittedChoicePopup.js +289 -0
  73. package/dist/components/popups/mergeUncommittedChoicePopup.js.map +1 -0
  74. package/dist/components/popups/newPanePopup.js +8 -0
  75. package/dist/components/popups/newPanePopup.js.map +1 -1
  76. package/dist/components/popups/projectSelectPopup.d.ts +7 -0
  77. package/dist/components/popups/projectSelectPopup.d.ts.map +1 -0
  78. package/dist/components/popups/projectSelectPopup.js +124 -0
  79. package/dist/components/popups/projectSelectPopup.js.map +1 -0
  80. package/dist/components/popups/reopenWorktreePopup.js +33 -3
  81. package/dist/components/popups/reopenWorktreePopup.js.map +1 -1
  82. package/dist/components/popups/settingsPopup.js +25 -8
  83. package/dist/components/popups/settingsPopup.js.map +1 -1
  84. package/dist/components/popups/shared/DirectoryList.d.ts +14 -0
  85. package/dist/components/popups/shared/DirectoryList.d.ts.map +1 -0
  86. package/dist/components/popups/shared/DirectoryList.js +46 -0
  87. package/dist/components/popups/shared/DirectoryList.js.map +1 -0
  88. package/dist/components/popups/shared/index.d.ts +1 -0
  89. package/dist/components/popups/shared/index.d.ts.map +1 -1
  90. package/dist/components/popups/shared/index.js +1 -0
  91. package/dist/components/popups/shared/index.js.map +1 -1
  92. package/dist/components/popups/shortcutsPopup.js +15 -12
  93. package/dist/components/popups/shortcutsPopup.js.map +1 -1
  94. package/dist/components/popups/singleAgentChoicePopup.d.ts +7 -0
  95. package/dist/components/popups/singleAgentChoicePopup.d.ts.map +1 -0
  96. package/dist/components/popups/singleAgentChoicePopup.js +95 -0
  97. package/dist/components/popups/singleAgentChoicePopup.js.map +1 -0
  98. package/dist/components/ui/FooterHelp.js +1 -1
  99. package/dist/components/ui/FooterHelp.js.map +1 -1
  100. package/dist/hooks/useActionSystem.d.ts +1 -1
  101. package/dist/hooks/useActionSystem.d.ts.map +1 -1
  102. package/dist/hooks/useActionSystem.js +1 -1
  103. package/dist/hooks/useActionSystem.js.map +1 -1
  104. package/dist/hooks/useAgentDetection.d.ts +2 -2
  105. package/dist/hooks/useAgentDetection.d.ts.map +1 -1
  106. package/dist/hooks/useAgentDetection.js +18 -88
  107. package/dist/hooks/useAgentDetection.js.map +1 -1
  108. package/dist/hooks/useAutoUpdater.d.ts.map +1 -1
  109. package/dist/hooks/useAutoUpdater.js +43 -26
  110. package/dist/hooks/useAutoUpdater.js.map +1 -1
  111. package/dist/hooks/useInputHandling.d.ts +5 -0
  112. package/dist/hooks/useInputHandling.d.ts.map +1 -1
  113. package/dist/hooks/useInputHandling.js +89 -16
  114. package/dist/hooks/useInputHandling.js.map +1 -1
  115. package/dist/hooks/useNavigation.d.ts +1 -1
  116. package/dist/hooks/useNavigation.d.ts.map +1 -1
  117. package/dist/hooks/useNavigation.js +26 -4
  118. package/dist/hooks/useNavigation.js.map +1 -1
  119. package/dist/hooks/usePaneCreation.d.ts +5 -2
  120. package/dist/hooks/usePaneCreation.d.ts.map +1 -1
  121. package/dist/hooks/usePaneCreation.js +123 -23
  122. package/dist/hooks/usePaneCreation.js.map +1 -1
  123. package/dist/hooks/usePaneSync.d.ts +1 -1
  124. package/dist/hooks/usePaneSync.d.ts.map +1 -1
  125. package/dist/hooks/usePaneSync.js +14 -1
  126. package/dist/hooks/usePaneSync.js.map +1 -1
  127. package/dist/hooks/usePanes.js +1 -1
  128. package/dist/hooks/usePanes.js.map +1 -1
  129. package/dist/hooks/useServices.d.ts +1 -1
  130. package/dist/hooks/useServices.d.ts.map +1 -1
  131. package/dist/hooks/useServices.js +2 -2
  132. package/dist/hooks/useServices.js.map +1 -1
  133. package/dist/hooks/useWorktreeActions.d.ts.map +1 -1
  134. package/dist/hooks/useWorktreeActions.js +16 -8
  135. package/dist/hooks/useWorktreeActions.js.map +1 -1
  136. package/dist/index.js +199 -18
  137. package/dist/index.js.map +1 -1
  138. package/dist/layout/SpacerManager.d.ts.map +1 -1
  139. package/dist/layout/SpacerManager.js +2 -1
  140. package/dist/layout/SpacerManager.js.map +1 -1
  141. package/dist/server/embedded-assets.d.ts.map +1 -1
  142. package/dist/server/embedded-assets.js +37 -26
  143. package/dist/server/embedded-assets.js.map +1 -1
  144. package/dist/services/AutoUpdater.d.ts +4 -0
  145. package/dist/services/AutoUpdater.d.ts.map +1 -1
  146. package/dist/services/AutoUpdater.js +23 -0
  147. package/dist/services/AutoUpdater.js.map +1 -1
  148. package/dist/services/PaneEventService.d.ts.map +1 -1
  149. package/dist/services/PaneEventService.js +2 -5
  150. package/dist/services/PaneEventService.js.map +1 -1
  151. package/dist/services/PaneWorkerManager.d.ts.map +1 -1
  152. package/dist/services/PaneWorkerManager.js +2 -14
  153. package/dist/services/PaneWorkerManager.js.map +1 -1
  154. package/dist/services/PopupManager.d.ts +8 -2
  155. package/dist/services/PopupManager.d.ts.map +1 -1
  156. package/dist/services/PopupManager.js +149 -27
  157. package/dist/services/PopupManager.js.map +1 -1
  158. package/dist/services/TmuxService.d.ts +15 -1
  159. package/dist/services/TmuxService.d.ts.map +1 -1
  160. package/dist/services/TmuxService.js +29 -3
  161. package/dist/services/TmuxService.js.map +1 -1
  162. package/dist/services/WorktreeCleanupService.d.ts +22 -0
  163. package/dist/services/WorktreeCleanupService.d.ts.map +1 -0
  164. package/dist/services/WorktreeCleanupService.js +80 -0
  165. package/dist/services/WorktreeCleanupService.js.map +1 -0
  166. package/dist/types.d.ts +9 -3
  167. package/dist/types.d.ts.map +1 -1
  168. package/dist/utils/agentDetection.d.ts +15 -8
  169. package/dist/utils/agentDetection.d.ts.map +1 -1
  170. package/dist/utils/agentDetection.js +49 -73
  171. package/dist/utils/agentDetection.js.map +1 -1
  172. package/dist/utils/agentLaunch.d.ts +63 -1
  173. package/dist/utils/agentLaunch.d.ts.map +1 -1
  174. package/dist/utils/agentLaunch.js +497 -24
  175. package/dist/utils/agentLaunch.js.map +1 -1
  176. package/dist/utils/agentPromptDispatch.d.ts +33 -0
  177. package/dist/utils/agentPromptDispatch.d.ts.map +1 -0
  178. package/dist/utils/agentPromptDispatch.js +99 -0
  179. package/dist/utils/agentPromptDispatch.js.map +1 -0
  180. package/dist/utils/asciiArt.d.ts.map +1 -1
  181. package/dist/utils/asciiArt.js +6 -7
  182. package/dist/utils/asciiArt.js.map +1 -1
  183. package/dist/utils/attachAgent.d.ts +21 -0
  184. package/dist/utils/attachAgent.d.ts.map +1 -0
  185. package/dist/utils/attachAgent.js +128 -0
  186. package/dist/utils/attachAgent.js.map +1 -0
  187. package/dist/utils/conflictResolutionPane.d.ts +2 -1
  188. package/dist/utils/conflictResolutionPane.d.ts.map +1 -1
  189. package/dist/utils/conflictResolutionPane.js +69 -36
  190. package/dist/utils/conflictResolutionPane.js.map +1 -1
  191. package/dist/utils/devSource.d.ts +7 -0
  192. package/dist/utils/devSource.d.ts.map +1 -0
  193. package/dist/utils/devSource.js +19 -0
  194. package/dist/utils/devSource.js.map +1 -0
  195. package/dist/utils/devWatchCommand.d.ts +8 -0
  196. package/dist/utils/devWatchCommand.d.ts.map +1 -0
  197. package/dist/utils/devWatchCommand.js +14 -0
  198. package/dist/utils/devWatchCommand.js.map +1 -0
  199. package/dist/utils/dirScanner.d.ts +30 -0
  200. package/dist/utils/dirScanner.d.ts.map +1 -0
  201. package/dist/utils/dirScanner.js +99 -0
  202. package/dist/utils/dirScanner.js.map +1 -0
  203. package/dist/utils/geminiTrust.d.ts +8 -0
  204. package/dist/utils/geminiTrust.d.ts.map +1 -0
  205. package/dist/utils/geminiTrust.js +67 -0
  206. package/dist/utils/geminiTrust.js.map +1 -0
  207. package/dist/utils/generated-agents-doc.d.ts +1 -1
  208. package/dist/utils/generated-agents-doc.js +3 -3
  209. package/dist/utils/git.d.ts +13 -0
  210. package/dist/utils/git.d.ts.map +1 -1
  211. package/dist/utils/git.js +20 -0
  212. package/dist/utils/git.js.map +1 -1
  213. package/dist/utils/hooks.js +1 -1
  214. package/dist/utils/hooks.js.map +1 -1
  215. package/dist/utils/hooksDocs.d.ts +2 -9
  216. package/dist/utils/hooksDocs.d.ts.map +1 -1
  217. package/dist/utils/hooksDocs.js +26 -6
  218. package/dist/utils/hooksDocs.js.map +1 -1
  219. package/dist/utils/mergeExecution.d.ts.map +1 -1
  220. package/dist/utils/mergeExecution.js +6 -3
  221. package/dist/utils/mergeExecution.js.map +1 -1
  222. package/dist/utils/paneCreation.d.ts +8 -2
  223. package/dist/utils/paneCreation.d.ts.map +1 -1
  224. package/dist/utils/paneCreation.js +129 -80
  225. package/dist/utils/paneCreation.js.map +1 -1
  226. package/dist/utils/paneGrouping.d.ts.map +1 -1
  227. package/dist/utils/paneGrouping.js +30 -0
  228. package/dist/utils/paneGrouping.js.map +1 -1
  229. package/dist/utils/projectActions.d.ts +5 -0
  230. package/dist/utils/projectActions.d.ts.map +1 -1
  231. package/dist/utils/projectActions.js +15 -4
  232. package/dist/utils/projectActions.js.map +1 -1
  233. package/dist/utils/promptStore.d.ts +7 -0
  234. package/dist/utils/promptStore.d.ts.map +1 -0
  235. package/dist/utils/promptStore.js +75 -0
  236. package/dist/utils/promptStore.js.map +1 -0
  237. package/dist/utils/reopenWorktree.d.ts +1 -1
  238. package/dist/utils/reopenWorktree.d.ts.map +1 -1
  239. package/dist/utils/reopenWorktree.js +26 -27
  240. package/dist/utils/reopenWorktree.js.map +1 -1
  241. package/dist/utils/runtimePaths.d.ts +2 -0
  242. package/dist/utils/runtimePaths.d.ts.map +1 -0
  243. package/dist/utils/runtimePaths.js +8 -0
  244. package/dist/utils/runtimePaths.js.map +1 -0
  245. package/dist/utils/settingsManager.d.ts.map +1 -1
  246. package/dist/utils/settingsManager.js +96 -4
  247. package/dist/utils/settingsManager.js.map +1 -1
  248. package/dist/utils/systemCheck.d.ts.map +1 -1
  249. package/dist/utils/systemCheck.js +0 -13
  250. package/dist/utils/systemCheck.js.map +1 -1
  251. package/dist/utils/welcomePane.d.ts +2 -1
  252. package/dist/utils/welcomePane.d.ts.map +1 -1
  253. package/dist/utils/welcomePane.js +3 -2
  254. package/dist/utils/welcomePane.js.map +1 -1
  255. package/dist/utils/welcomePaneManager.js +1 -1
  256. package/dist/utils/welcomePaneManager.js.map +1 -1
  257. package/dist/workers/PaneWorker.js.map +1 -1
  258. package/dist/workers/WorkerMessages.d.ts +2 -1
  259. package/dist/workers/WorkerMessages.d.ts.map +1 -1
  260. package/dist/workers/WorkerMessages.js.map +1 -1
  261. package/dist/workers/updateChecker.js +21 -6
  262. package/dist/workers/updateChecker.js.map +1 -1
  263. package/package.json +14 -12
  264. package/dist/components/popups/remotePopup.d.ts +0 -6
  265. package/dist/components/popups/remotePopup.d.ts.map +0 -1
  266. package/dist/components/popups/remotePopup.js +0 -166
  267. package/dist/components/popups/remotePopup.js.map +0 -1
  268. package/dist/hooks/useTunnelManagement.d.ts +0 -18
  269. package/dist/hooks/useTunnelManagement.d.ts.map +0 -1
  270. package/dist/hooks/useTunnelManagement.js +0 -55
  271. package/dist/hooks/useTunnelManagement.js.map +0 -1
  272. package/dist/server/actionsApi.d.ts +0 -37
  273. package/dist/server/actionsApi.d.ts.map +0 -1
  274. package/dist/server/actionsApi.js +0 -256
  275. package/dist/server/actionsApi.js.map +0 -1
  276. package/dist/server/index.d.ts +0 -21
  277. package/dist/server/index.d.ts.map +0 -1
  278. package/dist/server/index.js +0 -100
  279. package/dist/server/index.js.map +0 -1
  280. package/dist/server/routes/actionsRoutes.d.ts +0 -2
  281. package/dist/server/routes/actionsRoutes.d.ts.map +0 -1
  282. package/dist/server/routes/actionsRoutes.js +0 -110
  283. package/dist/server/routes/actionsRoutes.js.map +0 -1
  284. package/dist/server/routes/healthRoutes.d.ts +0 -13
  285. package/dist/server/routes/healthRoutes.d.ts.map +0 -1
  286. package/dist/server/routes/healthRoutes.js +0 -70
  287. package/dist/server/routes/healthRoutes.js.map +0 -1
  288. package/dist/server/routes/index.d.ts +0 -8
  289. package/dist/server/routes/index.d.ts.map +0 -1
  290. package/dist/server/routes/index.js +0 -67
  291. package/dist/server/routes/index.js.map +0 -1
  292. package/dist/server/routes/keysRoutes.d.ts +0 -33
  293. package/dist/server/routes/keysRoutes.d.ts.map +0 -1
  294. package/dist/server/routes/keysRoutes.js +0 -128
  295. package/dist/server/routes/keysRoutes.js.map +0 -1
  296. package/dist/server/routes/panesRoutes.d.ts +0 -2
  297. package/dist/server/routes/panesRoutes.d.ts.map +0 -1
  298. package/dist/server/routes/panesRoutes.js +0 -414
  299. package/dist/server/routes/panesRoutes.js.map +0 -1
  300. package/dist/server/routes/settingsRoutes.d.ts +0 -94
  301. package/dist/server/routes/settingsRoutes.d.ts.map +0 -1
  302. package/dist/server/routes/settingsRoutes.js +0 -159
  303. package/dist/server/routes/settingsRoutes.js.map +0 -1
  304. package/dist/server/routes/streamRoutes.d.ts +0 -18
  305. package/dist/server/routes/streamRoutes.d.ts.map +0 -1
  306. package/dist/server/routes/streamRoutes.js +0 -87
  307. package/dist/server/routes/streamRoutes.js.map +0 -1
  308. package/dist/server/routes/tunnelRoutes.d.ts +0 -11
  309. package/dist/server/routes/tunnelRoutes.d.ts.map +0 -1
  310. package/dist/server/routes/tunnelRoutes.js +0 -28
  311. package/dist/server/routes/tunnelRoutes.js.map +0 -1
  312. package/dist/server/routes.d.ts +0 -17
  313. package/dist/server/routes.d.ts.map +0 -1
  314. package/dist/server/routes.js +0 -17
  315. package/dist/server/routes.js.map +0 -1
  316. package/dist/services/TunnelService.d.ts +0 -10
  317. package/dist/services/TunnelService.d.ts.map +0 -1
  318. package/dist/services/TunnelService.js +0 -98
  319. package/dist/services/TunnelService.js.map +0 -1
@@ -1,159 +0,0 @@
1
- import { eventHandler, readBody } from 'h3';
2
- import { StateManager } from '../../shared/StateManager.js';
3
- import { LogService } from '../../services/LogService.js';
4
- const stateManager = StateManager.getInstance();
5
- export function createSettingsRoutes() {
6
- return [
7
- // GET /api/session - Get session info
8
- {
9
- path: '/api/session',
10
- handler: eventHandler(async () => {
11
- const state = stateManager.getState();
12
- return {
13
- projectName: state.projectName,
14
- sessionName: state.sessionName,
15
- projectRoot: state.projectRoot,
16
- serverUrl: state.serverUrl,
17
- settings: state.settings,
18
- paneCount: state.panes.length,
19
- timestamp: Date.now()
20
- };
21
- })
22
- },
23
- // GET /api/settings - Get current settings (merged, global, and project)
24
- // PATCH /api/settings - Update a setting
25
- {
26
- path: '/api/settings',
27
- handler: eventHandler(async (event) => {
28
- if (event.node.req.method === 'GET') {
29
- const { SettingsManager, SETTING_DEFINITIONS } = await import('../../utils/settingsManager.js');
30
- const state = stateManager.getState();
31
- const projectRoot = state.projectRoot || process.cwd();
32
- const manager = new SettingsManager(projectRoot);
33
- return {
34
- settings: {
35
- merged: manager.getSettings(),
36
- global: manager.getGlobalSettings(),
37
- project: manager.getProjectSettings()
38
- },
39
- definitions: SETTING_DEFINITIONS
40
- };
41
- }
42
- // PATCH /api/settings - Update a setting
43
- if (event.node.req.method === 'PATCH') {
44
- try {
45
- const body = await readBody(event);
46
- const { key, value, scope } = body;
47
- if (!key || scope === undefined) {
48
- event.node.res.statusCode = 400;
49
- return { error: 'Missing key or scope' };
50
- }
51
- if (scope !== 'global' && scope !== 'project') {
52
- event.node.res.statusCode = 400;
53
- return { error: 'Invalid scope. Must be "global" or "project"' };
54
- }
55
- const { SettingsManager } = await import('../../utils/settingsManager.js');
56
- const state = stateManager.getState();
57
- const projectRoot = state.projectRoot || process.cwd();
58
- const manager = new SettingsManager(projectRoot);
59
- manager.updateSetting(key, value, scope);
60
- return {
61
- success: true,
62
- message: `Setting "${key}" updated at ${scope} level`
63
- };
64
- }
65
- catch (err) {
66
- const msg = 'Failed to update setting';
67
- console.error(msg, err);
68
- LogService.getInstance().error(msg, 'routes', undefined, err instanceof Error ? err : undefined);
69
- event.node.res.statusCode = 500;
70
- return { error: 'Failed to update setting', details: err.message };
71
- }
72
- }
73
- event.node.res.statusCode = 405;
74
- return { error: 'Method not allowed' };
75
- })
76
- },
77
- // GET /api/hooks - Get hooks status
78
- {
79
- path: '/api/hooks',
80
- handler: eventHandler(async (event) => {
81
- if (event.node.req.method === 'GET') {
82
- const { listAvailableHooks, hasHook } = await import('../../utils/hooks.js');
83
- const state = stateManager.getState();
84
- const projectRoot = state.projectRoot || process.cwd();
85
- // All possible hooks
86
- const allHookTypes = [
87
- 'before_pane_create',
88
- 'pane_created',
89
- 'worktree_created',
90
- 'before_pane_close',
91
- 'pane_closed',
92
- 'before_worktree_remove',
93
- 'worktree_removed',
94
- 'pre_merge',
95
- 'post_merge',
96
- 'run_test',
97
- 'run_dev',
98
- ];
99
- // Check status of each hook
100
- const hooks = allHookTypes.map(hookName => ({
101
- name: hookName,
102
- active: hasHook(projectRoot, hookName)
103
- }));
104
- return {
105
- hooks,
106
- activeCount: hooks.filter(h => h.active).length,
107
- totalCount: hooks.length
108
- };
109
- }
110
- event.node.res.statusCode = 405;
111
- return { error: 'Method not allowed' };
112
- })
113
- },
114
- // GET /api/logs - Get logs with optional filtering
115
- {
116
- path: '/api/logs',
117
- handler: eventHandler(async (event) => {
118
- if (event.node.req.method === 'GET') {
119
- const url = new URL(event.node.req.url || '', `http://${event.node.req.headers.host}`);
120
- const level = url.searchParams.get('level');
121
- const source = url.searchParams.get('source');
122
- const paneId = url.searchParams.get('paneId');
123
- const unreadOnly = url.searchParams.get('unreadOnly') === 'true';
124
- const filter = {};
125
- if (level)
126
- filter.level = level;
127
- if (source)
128
- filter.source = source;
129
- if (paneId)
130
- filter.paneId = paneId;
131
- if (unreadOnly)
132
- filter.unreadOnly = true;
133
- const logs = stateManager.getLogs(filter);
134
- const stats = stateManager.getLogStats();
135
- return {
136
- logs,
137
- stats,
138
- timestamp: Date.now()
139
- };
140
- }
141
- event.node.res.statusCode = 405;
142
- return { error: 'Method not allowed' };
143
- })
144
- },
145
- // POST /api/logs/mark-read - Mark all logs as read
146
- {
147
- path: '/api/logs/mark-read',
148
- handler: eventHandler(async (event) => {
149
- if (event.node.req.method === 'POST') {
150
- stateManager.markAllLogsAsRead();
151
- return { success: true, message: 'All logs marked as read' };
152
- }
153
- event.node.res.statusCode = 405;
154
- return { error: 'Method not allowed' };
155
- })
156
- }
157
- ];
158
- }
159
- //# sourceMappingURL=settingsRoutes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"settingsRoutes.js","sourceRoot":"","sources":["../../../src/server/routes/settingsRoutes.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- export declare function createStreamRoutes(): ({
2
- path: string;
3
- handler: import("h3").EventHandler<import("h3").EventHandlerRequest, Promise<import("stream").Readable | {
4
- error: string;
5
- }>>;
6
- } | {
7
- path: string;
8
- handler: import("h3").EventHandler<import("h3").EventHandlerRequest, Promise<{
9
- activeStreams: number;
10
- totalClients: number;
11
- streams: Array<{
12
- paneId: string;
13
- clients: number;
14
- dimensions: string;
15
- }>;
16
- }>>;
17
- })[];
18
- //# sourceMappingURL=streamRoutes.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"streamRoutes.d.ts","sourceRoot":"","sources":["../../../src/server/routes/streamRoutes.ts"],"names":[],"mappings":"AAOA,wBAAgB,kBAAkB;;;;;;;;;;;;;;;;KA6FjC"}
@@ -1,87 +0,0 @@
1
- import { eventHandler } from 'h3';
2
- import { StateManager } from '../../shared/StateManager.js';
3
- import { getTerminalStreamer } from '../../services/TerminalStreamer.js';
4
- import { formatStreamMessage } from '../../shared/StreamProtocol.js';
5
- const stateManager = StateManager.getInstance();
6
- export function createStreamRoutes() {
7
- return [
8
- // GET /api/stream/:paneId - Stream terminal output
9
- {
10
- path: '/api/stream',
11
- handler: eventHandler(async (event) => {
12
- const url = event.node.req.url || '';
13
- // When using app.use('/api/stream'), the URL is already stripped
14
- // So we just need to remove the leading slash
15
- const dmuxId = url.startsWith('/') ? url.substring(1) : url;
16
- if (!dmuxId || dmuxId.includes('/')) {
17
- event.node.res.statusCode = 404;
18
- return { error: 'Invalid pane ID' };
19
- }
20
- // Find the pane by dmux ID
21
- const pane = stateManager.getPaneById(decodeURIComponent(dmuxId));
22
- if (!pane || !pane.paneId) {
23
- event.node.res.statusCode = 404;
24
- return { error: 'Pane not found' };
25
- }
26
- // Create a readable stream
27
- const { Readable } = await import('stream');
28
- const stream = new Readable({
29
- read() { } // No-op, we'll push data as it arrives
30
- });
31
- const streamer = getTerminalStreamer();
32
- // Start streaming - pass the stream object
33
- await streamer.startStream(pane.id, pane.paneId, stream);
34
- // Handle client disconnect
35
- event.node.req.on('close', () => {
36
- streamer.stopStream(pane.id, stream);
37
- stream.destroy();
38
- });
39
- // Send heartbeat every 30 seconds to keep connection alive
40
- const heartbeat = setInterval(() => {
41
- try {
42
- const heartbeatMessage = {
43
- type: 'heartbeat',
44
- timestamp: Date.now()
45
- };
46
- stream.push(formatStreamMessage(heartbeatMessage));
47
- }
48
- catch {
49
- clearInterval(heartbeat);
50
- }
51
- }, 30000);
52
- // Cleanup heartbeat on disconnect
53
- event.node.req.on('close', () => {
54
- clearInterval(heartbeat);
55
- stream.destroy();
56
- });
57
- // Return the readable stream - h3 will pipe it to the response
58
- return stream;
59
- })
60
- },
61
- // GET /api/stream-stats - Get streaming statistics
62
- {
63
- path: '/api/stream-stats',
64
- handler: eventHandler(async () => {
65
- const streamer = getTerminalStreamer();
66
- return streamer.getStats();
67
- })
68
- },
69
- // GET /api/test-stream - Simple test stream
70
- {
71
- path: '/api/test-stream',
72
- handler: eventHandler(async (event) => {
73
- const { Readable } = await import('stream');
74
- const stream = new Readable({
75
- read() { }
76
- });
77
- // Send some test data
78
- stream.push('TEST:First message\n');
79
- setTimeout(() => stream.push('TEST:Second message\n'), 100);
80
- setTimeout(() => stream.push('TEST:Third message\n'), 200);
81
- setTimeout(() => stream.push(null), 300); // End stream
82
- return stream;
83
- })
84
- }
85
- ];
86
- }
87
- //# sourceMappingURL=streamRoutes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"streamRoutes.js","sourceRoot":"","sources":["../../../src/server/routes/streamRoutes.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- export declare function createTunnelRoutes(server?: any): {
2
- path: string;
3
- handler: import("h3").EventHandler<import("h3").EventHandlerRequest, Promise<{
4
- url: any;
5
- error?: undefined;
6
- } | {
7
- error: any;
8
- url?: undefined;
9
- }>>;
10
- }[];
11
- //# sourceMappingURL=tunnelRoutes.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tunnelRoutes.d.ts","sourceRoot":"","sources":["../../../src/server/routes/tunnelRoutes.ts"],"names":[],"mappings":"AAEA,wBAAgB,kBAAkB,CAAC,MAAM,CAAC,EAAE,GAAG;;;;;;;;;IA0B9C"}
@@ -1,28 +0,0 @@
1
- import { eventHandler } from 'h3';
2
- export function createTunnelRoutes(server) {
3
- return [
4
- // POST /api/tunnel - Create tunnel for remote access
5
- {
6
- path: '/api/tunnel',
7
- handler: eventHandler(async (event) => {
8
- if (event.node.req.method === 'POST') {
9
- if (!server) {
10
- event.node.res.statusCode = 500;
11
- return { error: 'Server instance not available' };
12
- }
13
- try {
14
- const url = await server.startTunnel();
15
- return { url };
16
- }
17
- catch (error) {
18
- event.node.res.statusCode = 500;
19
- return { error: error.message || 'Failed to create tunnel' };
20
- }
21
- }
22
- event.node.res.statusCode = 405;
23
- return { error: 'Method not allowed' };
24
- })
25
- }
26
- ];
27
- }
28
- //# sourceMappingURL=tunnelRoutes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tunnelRoutes.js","sourceRoot":"","sources":["../../../src/server/routes/tunnelRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAElC,MAAM,UAAU,kBAAkB,CAAC,MAAY;IAC7C,OAAO;QACL,qDAAqD;QACrD;YACE,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gBACpC,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;oBACrC,IAAI,CAAC,MAAM,EAAE,CAAC;wBACZ,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;wBAChC,OAAO,EAAE,KAAK,EAAE,+BAA+B,EAAE,CAAC;oBACpD,CAAC;oBAED,IAAI,CAAC;wBACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;wBACvC,OAAO,EAAE,GAAG,EAAE,CAAC;oBACjB,CAAC;oBAAC,OAAO,KAAU,EAAE,CAAC;wBACpB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;wBAChC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,IAAI,yBAAyB,EAAE,CAAC;oBAC/D,CAAC;gBACH,CAAC;gBAED,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;gBAChC,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;YACzC,CAAC,CAAC;SACH;KACF,CAAC;AACJ,CAAC"}
@@ -1,17 +0,0 @@
1
- /**
2
- * Legacy routes.ts - Re-exports from modular route structure
3
- *
4
- * This file maintains backward compatibility while delegating to the new
5
- * modular route system in src/server/routes/
6
- *
7
- * Route organization:
8
- * - panesRoutes.ts - Pane CRUD, snapshot, test/dev status
9
- * - streamRoutes.ts - SSE streaming endpoints
10
- * - keysRoutes.ts - Keystroke input endpoints
11
- * - actionsRoutes.ts - Action system endpoints
12
- * - settingsRoutes.ts - Settings, session, hooks, logs
13
- * - tunnelRoutes.ts - Remote tunnel creation
14
- * - healthRoutes.ts - Health check + static file serving
15
- */
16
- export { setupRoutes } from './routes/index.js';
17
- //# sourceMappingURL=routes.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/server/routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1,17 +0,0 @@
1
- /**
2
- * Legacy routes.ts - Re-exports from modular route structure
3
- *
4
- * This file maintains backward compatibility while delegating to the new
5
- * modular route system in src/server/routes/
6
- *
7
- * Route organization:
8
- * - panesRoutes.ts - Pane CRUD, snapshot, test/dev status
9
- * - streamRoutes.ts - SSE streaming endpoints
10
- * - keysRoutes.ts - Keystroke input endpoints
11
- * - actionsRoutes.ts - Action system endpoints
12
- * - settingsRoutes.ts - Settings, session, hooks, logs
13
- * - tunnelRoutes.ts - Remote tunnel creation
14
- * - healthRoutes.ts - Health check + static file serving
15
- */
16
- export { setupRoutes } from './routes/index.js';
17
- //# sourceMappingURL=routes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/server/routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1,10 +0,0 @@
1
- export declare class TunnelService {
2
- private tunnel;
3
- private tunnelUrl;
4
- private isCreating;
5
- start(port: number): Promise<string>;
6
- stop(): Promise<void>;
7
- getUrl(): string | null;
8
- }
9
- export declare const tunnelService: TunnelService;
10
- //# sourceMappingURL=TunnelService.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TunnelService.d.ts","sourceRoot":"","sources":["../../src/services/TunnelService.ts"],"names":[],"mappings":"AAIA,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,UAAU,CAAkB;IAE9B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAwFpC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ3B,MAAM,IAAI,MAAM,GAAG,IAAI;CAGxB;AAED,eAAO,MAAM,aAAa,eAAsB,CAAC"}
@@ -1,98 +0,0 @@
1
- import { startTunnel } from 'untun';
2
- import { LogService } from './LogService.js';
3
- import { TUNNEL_RETRY_DELAY } from '../constants/timing.js';
4
- export class TunnelService {
5
- tunnel = null;
6
- tunnelUrl = null;
7
- isCreating = false;
8
- async start(port) {
9
- // If we already have a URL, return it
10
- if (this.tunnelUrl) {
11
- LogService.getInstance().info('Returning existing tunnel URL', 'TunnelService');
12
- return this.tunnelUrl;
13
- }
14
- // If tunnel is being created, wait a bit and check again
15
- if (this.isCreating) {
16
- LogService.getInstance().info('Tunnel creation already in progress, waiting...', 'TunnelService');
17
- // Wait up to 45 seconds for existing creation to finish
18
- for (let i = 0; i < 45; i++) {
19
- await new Promise(resolve => setTimeout(resolve, TUNNEL_RETRY_DELAY));
20
- if (this.tunnelUrl) {
21
- return this.tunnelUrl;
22
- }
23
- }
24
- throw new Error('Tunnel creation timed out while waiting for existing process');
25
- }
26
- // If we have a tunnel but no URL yet, try to get the URL
27
- if (this.tunnel && !this.tunnelUrl) {
28
- try {
29
- LogService.getInstance().info('Found existing tunnel, attempting to get URL...', 'TunnelService');
30
- const urlPromise = this.tunnel.getURL();
31
- const urlTimeoutPromise = new Promise((_, reject) => {
32
- setTimeout(() => reject(new Error('Getting tunnel URL timed out after 30 seconds')), 30000);
33
- });
34
- this.tunnelUrl = await Promise.race([urlPromise, urlTimeoutPromise]);
35
- if (this.tunnelUrl) {
36
- LogService.getInstance().info(`Tunnel URL: ${this.tunnelUrl}`, 'TunnelService');
37
- return this.tunnelUrl;
38
- }
39
- }
40
- catch (error) {
41
- LogService.getInstance().error('Failed to get URL from existing tunnel', 'TunnelService', undefined, error);
42
- // Continue to create new tunnel
43
- }
44
- }
45
- this.isCreating = true;
46
- try {
47
- const msg = `Starting tunnel for port ${port}`;
48
- LogService.getInstance().info(msg, 'TunnelService');
49
- // Start tunnel with timeout and better error handling
50
- const tunnelPromise = startTunnel({
51
- port,
52
- acceptCloudflareNotice: true
53
- });
54
- // Add timeout to prevent hanging
55
- const timeoutPromise = new Promise((_, reject) => {
56
- setTimeout(() => reject(new Error('Tunnel creation timed out after 45 seconds')), 45000);
57
- });
58
- this.tunnel = await Promise.race([tunnelPromise, timeoutPromise]);
59
- const msg1 = 'Tunnel created, getting URL...';
60
- LogService.getInstance().info(msg1, 'TunnelService');
61
- // Get URL with longer timeout (cloudflare can be slow)
62
- const urlPromise = this.tunnel.getURL();
63
- const urlTimeoutPromise = new Promise((_, reject) => {
64
- setTimeout(() => reject(new Error('Getting tunnel URL timed out after 30 seconds')), 30000);
65
- });
66
- this.tunnelUrl = await Promise.race([urlPromise, urlTimeoutPromise]);
67
- if (!this.tunnelUrl) {
68
- throw new Error('Tunnel URL is null');
69
- }
70
- const msg2 = `Tunnel URL: ${this.tunnelUrl}`;
71
- LogService.getInstance().info(msg2, 'TunnelService');
72
- return this.tunnelUrl;
73
- }
74
- catch (error) {
75
- const msg = 'Failed to start tunnel';
76
- LogService.getInstance().error(msg, 'TunnelService', undefined, error instanceof Error ? error : undefined);
77
- // Don't clean up the tunnel on failure - it might be in progress
78
- // Just clean up the URL
79
- this.tunnelUrl = null;
80
- throw error;
81
- }
82
- finally {
83
- this.isCreating = false;
84
- }
85
- }
86
- async stop() {
87
- if (this.tunnel) {
88
- await this.tunnel.close();
89
- this.tunnel = null;
90
- this.tunnelUrl = null;
91
- }
92
- }
93
- getUrl() {
94
- return this.tunnelUrl;
95
- }
96
- }
97
- export const tunnelService = new TunnelService();
98
- //# sourceMappingURL=TunnelService.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TunnelService.js","sourceRoot":"","sources":["../../src/services/TunnelService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,MAAM,OAAO,aAAa;IAChB,MAAM,GAAQ,IAAI,CAAC;IACnB,SAAS,GAAkB,IAAI,CAAC;IAChC,UAAU,GAAY,KAAK,CAAC;IAEpC,KAAK,CAAC,KAAK,CAAC,IAAY;QACtB,sCAAsC;QACtC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,UAAU,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,+BAA+B,EAAE,eAAe,CAAC,CAAC;YAChF,OAAO,IAAI,CAAC,SAAS,CAAC;QACxB,CAAC;QAED,yDAAyD;QACzD,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,UAAU,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,iDAAiD,EAAE,eAAe,CAAC,CAAC;YAClG,wDAAwD;YACxD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC;gBACtE,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;oBACnB,OAAO,IAAI,CAAC,SAAS,CAAC;gBACxB,CAAC;YACH,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAClF,CAAC;QAED,yDAAyD;QACzD,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACnC,IAAI,CAAC;gBACH,UAAU,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,iDAAiD,EAAE,eAAe,CAAC,CAAC;gBAClG,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACxC,MAAM,iBAAiB,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;oBACzD,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBAC9F,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,SAAS,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC;gBACrE,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;oBACnB,UAAU,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,SAAS,EAAE,EAAE,eAAe,CAAC,CAAC;oBAChF,OAAO,IAAI,CAAC,SAAS,CAAC;gBACxB,CAAC;YACH,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,UAAU,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,wCAAwC,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;gBAC5G,gCAAgC;YAClC,CAAC;QACH,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAEvB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,4BAA4B,IAAI,EAAE,CAAC;YAC/C,UAAU,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;YAEpD,sDAAsD;YACtD,MAAM,aAAa,GAAG,WAAW,CAAC;gBAChC,IAAI;gBACJ,sBAAsB,EAAE,IAAI;aAC7B,CAAC,CAAC;YAEH,iCAAiC;YACjC,MAAM,cAAc,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;gBACtD,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAC3F,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC;YAElE,MAAM,IAAI,GAAG,gCAAgC,CAAC;YAC9C,UAAU,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;YAErD,uDAAuD;YACvD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACxC,MAAM,iBAAiB,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;gBACzD,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAC9F,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,SAAS,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC;YAErE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;YACxC,CAAC;YAED,MAAM,IAAI,GAAG,eAAe,IAAI,CAAC,SAAS,EAAE,CAAC;YAC7C,UAAU,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;YACrD,OAAO,IAAI,CAAC,SAAS,CAAC;QACxB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,GAAG,GAAG,wBAAwB,CAAC;YACrC,UAAU,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAC5G,iEAAiE;YACjE,wBAAwB;YACxB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,MAAM,KAAK,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAC1B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;IACH,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;CACF;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC"}