@myrialabs/clopen 0.2.1 → 0.2.2

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 (413) hide show
  1. package/backend/{lib/auth → auth}/auth-service.ts +2 -2
  2. package/backend/{lib/chat → chat}/stream-manager.ts +1 -1
  3. package/backend/{lib/engine → engine}/adapters/claude/environment.ts +1 -1
  4. package/backend/{lib/engine → engine}/adapters/opencode/message-converter.ts +1 -1
  5. package/backend/{lib/files → files}/file-watcher.ts +1 -1
  6. package/backend/{lib/git → git}/git-executor.ts +1 -1
  7. package/backend/index.ts +7 -7
  8. package/backend/{lib/mcp → mcp}/README.md +68 -79
  9. package/backend/{lib/mcp → mcp}/config.ts +1 -1
  10. package/backend/{lib/mcp → mcp}/servers/browser-automation/actions.ts +4 -4
  11. package/backend/{lib/mcp → mcp}/servers/browser-automation/browser.ts +3 -3
  12. package/backend/{lib/mcp → mcp}/servers/browser-automation/inspection.ts +3 -3
  13. package/backend/middleware/cors.ts +1 -1
  14. package/backend/middleware/error-handler.ts +1 -1
  15. package/backend/{lib/preview → preview}/browser/browser-preview-service.ts +1 -1
  16. package/backend/{lib/preview → preview}/browser/browser-tab-manager.ts +1 -1
  17. package/backend/{lib/preview → preview}/browser/types.ts +1 -1
  18. package/backend/{lib/project → project}/status-manager.ts +223 -223
  19. package/backend/{lib/terminal → terminal}/shell-utils.ts +1 -1
  20. package/backend/{lib/utils → utils}/ws.ts +2 -2
  21. package/backend/ws/README.md +9 -9
  22. package/backend/ws/auth/invites.ts +2 -2
  23. package/backend/ws/auth/login.ts +9 -9
  24. package/backend/ws/auth/status.ts +2 -2
  25. package/backend/ws/auth/users.ts +1 -1
  26. package/backend/ws/chat/background.ts +2 -2
  27. package/backend/ws/chat/stream.ts +3 -3
  28. package/backend/ws/engine/claude/accounts.ts +4 -4
  29. package/backend/ws/engine/claude/status.ts +1 -1
  30. package/backend/ws/files/read.ts +2 -2
  31. package/backend/ws/files/watch.ts +2 -2
  32. package/backend/ws/files/write.ts +1 -1
  33. package/backend/ws/git/branch.ts +2 -2
  34. package/backend/ws/git/commit.ts +2 -2
  35. package/backend/ws/git/conflict.ts +2 -2
  36. package/backend/ws/git/diff.ts +2 -2
  37. package/backend/ws/git/log.ts +2 -2
  38. package/backend/ws/git/remote.ts +2 -2
  39. package/backend/ws/git/staging.ts +2 -2
  40. package/backend/ws/git/status.ts +3 -3
  41. package/backend/ws/messages/crud.ts +1 -1
  42. package/backend/ws/preview/browser/cleanup.ts +2 -2
  43. package/backend/ws/preview/browser/console.ts +2 -2
  44. package/backend/ws/preview/browser/interact.ts +2 -2
  45. package/backend/ws/preview/browser/mcp.ts +1 -1
  46. package/backend/ws/preview/browser/native-ui.ts +2 -2
  47. package/backend/ws/preview/browser/stats.ts +2 -2
  48. package/backend/ws/preview/browser/tab-info.ts +2 -2
  49. package/backend/ws/preview/browser/tab.ts +2 -2
  50. package/backend/ws/preview/browser/webcodecs.ts +2 -2
  51. package/backend/ws/projects/crud.ts +3 -3
  52. package/backend/ws/projects/presence.ts +3 -3
  53. package/backend/ws/projects/status.ts +3 -3
  54. package/backend/ws/sessions/crud.ts +2 -2
  55. package/backend/ws/settings/crud.ts +2 -2
  56. package/backend/ws/snapshot/restore.ts +5 -5
  57. package/backend/ws/snapshot/timeline.ts +3 -3
  58. package/backend/ws/system/operations.ts +1 -1
  59. package/backend/ws/terminal/persistence.ts +3 -3
  60. package/backend/ws/terminal/session.ts +6 -6
  61. package/backend/ws/terminal/stream.ts +2 -2
  62. package/backend/ws/tunnel/operations.ts +1 -1
  63. package/backend/ws/user/crud.ts +4 -4
  64. package/frontend/App.svelte +13 -13
  65. package/frontend/{lib/components → components}/auth/InvitePage.svelte +2 -2
  66. package/frontend/{lib/components → components}/auth/LoginPage.svelte +1 -1
  67. package/frontend/{lib/components → components}/auth/SetupPage.svelte +6 -6
  68. package/frontend/{lib/components → components}/chat/ChatInterface.svelte +14 -14
  69. package/frontend/{lib/components → components}/chat/formatters/ErrorMessage.svelte +1 -1
  70. package/frontend/{lib/components → components}/chat/formatters/MessageFormatter.svelte +4 -4
  71. package/frontend/{lib/components → components}/chat/formatters/TextMessage.svelte +1 -1
  72. package/frontend/{lib/components → components}/chat/formatters/Tools.svelte +1 -1
  73. package/frontend/{lib/components → components}/chat/input/ChatInput.svelte +12 -12
  74. package/frontend/{lib/components → components}/chat/input/components/ChatInputActions.svelte +1 -1
  75. package/frontend/{lib/components → components}/chat/input/components/EditModeIndicator.svelte +2 -2
  76. package/frontend/{lib/components → components}/chat/input/components/EngineModelPicker.svelte +9 -9
  77. package/frontend/{lib/components → components}/chat/input/components/FileAttachmentPreview.svelte +1 -1
  78. package/frontend/{lib/components → components}/chat/input/components/LoadingIndicator.svelte +2 -2
  79. package/frontend/{lib/components → components}/chat/input/composables/use-chat-actions.svelte.ts +8 -8
  80. package/frontend/{lib/components → components}/chat/input/composables/use-file-handling.svelte.ts +1 -1
  81. package/frontend/{lib/components → components}/chat/input/composables/use-input-state.svelte.ts +6 -6
  82. package/frontend/{lib/components → components}/chat/message/ChatMessage.svelte +8 -8
  83. package/frontend/{lib/components → components}/chat/message/ChatMessages.svelte +7 -7
  84. package/frontend/{lib/components → components}/chat/message/MessageBubble.svelte +1 -1
  85. package/frontend/{lib/components → components}/chat/message/MessageHeader.svelte +2 -2
  86. package/frontend/{lib/components → components}/chat/modal/DebugModal.svelte +2 -2
  87. package/frontend/{lib/components → components}/chat/modal/TokenUsageModal.svelte +2 -2
  88. package/frontend/{lib/components → components}/chat/tools/AskUserQuestionTool.svelte +4 -4
  89. package/frontend/{lib/components → components}/chat/tools/CustomMcpTool.svelte +1 -1
  90. package/frontend/{lib/components → components}/chat/tools/EditTool.svelte +1 -1
  91. package/frontend/{lib/components → components}/chat/tools/TodoWriteTool.svelte +1 -1
  92. package/frontend/{lib/components → components}/chat/tools/components/CodeBlock.svelte +2 -2
  93. package/frontend/{lib/components → components}/chat/tools/components/DiffBlock.svelte +1 -1
  94. package/frontend/{lib/components → components}/chat/tools/components/FileHeader.svelte +2 -2
  95. package/frontend/{lib/components → components}/chat/tools/components/InfoLine.svelte +1 -1
  96. package/frontend/{lib/components → components}/chat/widgets/FloatingTodoList.svelte +3 -3
  97. package/frontend/{lib/components → components}/chat/widgets/TokenUsage.svelte +4 -4
  98. package/frontend/{lib/components → components}/checkpoint/TimelineModal.svelte +10 -10
  99. package/frontend/{lib/components → components}/checkpoint/timeline/TimelineNode.svelte +1 -1
  100. package/frontend/{lib/components/common → components/common/display}/Icon.svelte +2 -2
  101. package/frontend/{lib/components/common → components/common/display}/PageTemplate.svelte +1 -1
  102. package/frontend/{lib/components/common → components/common/display}/ProjectUserAvatars.svelte +1 -1
  103. package/frontend/{lib/components/common → components/common/display}/ThemeToggle.svelte +1 -1
  104. package/frontend/{lib/components/common → components/common/editor}/MonacoEditor.svelte +2 -2
  105. package/frontend/{lib/components/common → components/common/feedback}/Alert.svelte +1 -1
  106. package/frontend/{lib/components/common → components/common/feedback}/ConnectionBanner.svelte +3 -3
  107. package/frontend/{lib/components/common → components/common/feedback}/LoadingScreen.svelte +1 -1
  108. package/frontend/{lib/components/common → components/common/feedback}/NotificationToast.svelte +2 -2
  109. package/frontend/{lib/components/common → components/common/feedback}/UpdateBanner.svelte +3 -3
  110. package/frontend/{lib/components/common → components/common/form}/Checkbox.svelte +1 -1
  111. package/frontend/{lib/components/common → components/common/form}/FolderBrowser.svelte +6 -6
  112. package/frontend/{lib/components/common → components/common/form}/Input.svelte +1 -1
  113. package/frontend/{lib/components/common → components/common/form}/ModelSelector.svelte +3 -3
  114. package/frontend/{lib/components/common → components/common/form}/Select.svelte +1 -1
  115. package/frontend/{lib/components/common → components/common/form}/Textarea.svelte +1 -1
  116. package/frontend/{lib/components/common → components/common/overlay}/Dialog.svelte +1 -1
  117. package/frontend/{lib/components/common → components/common/overlay}/Lightbox.svelte +3 -3
  118. package/frontend/{lib/components/common → components/common/overlay}/ModalProvider.svelte +2 -2
  119. package/frontend/{lib/components → components}/common/xterm/XTerm.svelte +5 -5
  120. package/frontend/{lib/components → components}/common/xterm/xterm-service.ts +2 -2
  121. package/frontend/{lib/components → components}/files/FileNode.svelte +3 -3
  122. package/frontend/{lib/components → components}/files/FileTree.svelte +5 -5
  123. package/frontend/{lib/components → components}/files/FileViewer.svelte +7 -7
  124. package/frontend/{lib/components → components}/files/SearchResults.svelte +3 -3
  125. package/frontend/{lib/components → components}/git/BranchManager.svelte +6 -6
  126. package/frontend/{lib/components → components}/git/ChangesSection.svelte +1 -1
  127. package/frontend/{lib/components → components}/git/CommitForm.svelte +1 -1
  128. package/frontend/{lib/components → components}/git/ConflictResolver.svelte +1 -1
  129. package/frontend/{lib/components → components}/git/DiffViewer.svelte +7 -7
  130. package/frontend/{lib/components → components}/git/FileChangeItem.svelte +3 -3
  131. package/frontend/{lib/components → components}/git/GitButton.svelte +1 -1
  132. package/frontend/{lib/components → components}/git/GitLog.svelte +2 -2
  133. package/frontend/{lib/components → components}/git/GitModal.svelte +3 -3
  134. package/frontend/{lib/components → components}/history/HistoryModal.svelte +11 -11
  135. package/frontend/{lib/components → components}/history/HistoryView.svelte +12 -12
  136. package/frontend/{lib/components → components}/index.ts +9 -9
  137. package/frontend/{lib/components → components}/preview/browser/BrowserPreview.svelte +3 -3
  138. package/frontend/{lib/components → components}/preview/browser/components/Canvas.svelte +2 -2
  139. package/frontend/{lib/components → components}/preview/browser/components/ConsolePanel.svelte +1 -1
  140. package/frontend/{lib/components → components}/preview/browser/components/Container.svelte +2 -2
  141. package/frontend/{lib/components → components}/preview/browser/components/ContextMenu.svelte +1 -1
  142. package/frontend/{lib/components → components}/preview/browser/components/SelectDropdown.svelte +1 -1
  143. package/frontend/{lib/components → components}/preview/browser/components/Toolbar.svelte +2 -2
  144. package/frontend/{lib/components → components}/preview/browser/core/cleanup.svelte.ts +1 -1
  145. package/frontend/{lib/components → components}/preview/browser/core/coordinator.svelte.ts +4 -4
  146. package/frontend/{lib/components → components}/preview/browser/core/interactions.svelte.ts +3 -3
  147. package/frontend/{lib/components → components}/preview/browser/core/mcp-handlers.svelte.ts +2 -2
  148. package/frontend/{lib/components → components}/preview/browser/core/native-ui-handlers.svelte.ts +2 -2
  149. package/frontend/{lib/components → components}/preview/browser/core/tab-manager.svelte.ts +1 -1
  150. package/frontend/{lib/components → components}/preview/browser/core/tab-operations.svelte.ts +3 -3
  151. package/frontend/{lib/components → components}/settings/SettingsModal.svelte +4 -4
  152. package/frontend/{lib/components → components}/settings/SettingsView.svelte +2 -2
  153. package/frontend/{lib/components → components}/settings/admin/InviteManagement.svelte +5 -5
  154. package/frontend/{lib/components → components}/settings/admin/UserManagement.svelte +5 -5
  155. package/frontend/{lib/components → components}/settings/appearance/AppearanceSettings.svelte +3 -3
  156. package/frontend/{lib/components → components}/settings/appearance/LayoutPresetSettings.svelte +3 -3
  157. package/frontend/{lib/components → components}/settings/appearance/LayoutPreview.svelte +1 -1
  158. package/frontend/{lib/components → components}/settings/engines/AIEnginesSettings.svelte +6 -6
  159. package/frontend/{lib/components → components}/settings/general/AdvancedSettings.svelte +5 -5
  160. package/frontend/{lib/components → components}/settings/general/AuthModeSettings.svelte +5 -5
  161. package/frontend/{lib/components → components}/settings/general/DataManagementSettings.svelte +9 -9
  162. package/frontend/{lib/components → components}/settings/general/UpdateSettings.svelte +3 -3
  163. package/frontend/{lib/components → components}/settings/model/ModelSettings.svelte +2 -2
  164. package/frontend/{lib/components → components}/settings/notifications/NotificationSettings.svelte +4 -4
  165. package/frontend/{lib/components → components}/settings/user/UserSettings.svelte +5 -5
  166. package/frontend/{lib/components → components}/terminal/Terminal.svelte +9 -9
  167. package/frontend/{lib/components → components}/terminal/TerminalTabs.svelte +1 -1
  168. package/frontend/{lib/components → components}/terminal/TerminalView.svelte +5 -5
  169. package/frontend/{lib/components → components}/tunnel/TunnelActive.svelte +3 -3
  170. package/frontend/{lib/components → components}/tunnel/TunnelButton.svelte +2 -2
  171. package/frontend/{lib/components → components}/tunnel/TunnelInactive.svelte +4 -4
  172. package/frontend/{lib/components → components}/tunnel/TunnelModal.svelte +2 -2
  173. package/frontend/{lib/components → components}/workspace/DesktopNavigator.svelte +372 -372
  174. package/frontend/{lib/components → components}/workspace/MobileNavigator.svelte +380 -380
  175. package/frontend/{lib/components → components}/workspace/PanelContainer.svelte +3 -3
  176. package/frontend/{lib/components → components}/workspace/PanelHeader.svelte +10 -10
  177. package/frontend/{lib/components → components}/workspace/ViewMenu.svelte +4 -4
  178. package/frontend/{lib/components → components}/workspace/WorkspaceLayout.svelte +17 -17
  179. package/frontend/{lib/components → components}/workspace/layout/DesktopLayout.svelte +1 -1
  180. package/frontend/{lib/components → components}/workspace/layout/MobileLayout.svelte +1 -1
  181. package/frontend/{lib/components → components}/workspace/layout/split-pane/Container.svelte +1 -1
  182. package/frontend/{lib/components → components}/workspace/layout/split-pane/Handle.svelte +2 -2
  183. package/frontend/{lib/components → components}/workspace/layout/split-pane/Layout.svelte +2 -2
  184. package/frontend/{lib/components → components}/workspace/panels/ChatPanel.svelte +14 -14
  185. package/frontend/{lib/components → components}/workspace/panels/FilesPanel.svelte +10 -10
  186. package/frontend/{lib/components → components}/workspace/panels/GitPanel.svelte +14 -14
  187. package/frontend/{lib/components → components}/workspace/panels/PreviewPanel.svelte +5 -5
  188. package/frontend/{lib/components → components}/workspace/panels/TerminalPanel.svelte +6 -6
  189. package/frontend/{lib/services → services}/chat/chat.service.ts +8 -8
  190. package/frontend/{lib/services → services}/notification/global-stream-monitor.ts +117 -117
  191. package/frontend/{lib/services → services}/notification/push.service.ts +1 -1
  192. package/frontend/{lib/services → services}/notification/sound.service.ts +1 -1
  193. package/frontend/{lib/services → services}/preview/browser/browser-console.service.ts +1 -1
  194. package/frontend/{lib/services → services}/preview/browser/browser-webcodecs.service.ts +1 -1
  195. package/frontend/{lib/services → services}/preview/browser/mcp-integration.svelte.ts +2 -2
  196. package/frontend/{lib/services → services}/project/status.service.ts +160 -160
  197. package/frontend/{lib/services → services}/snapshot/snapshot.service.ts +2 -2
  198. package/frontend/{lib/services → services}/terminal/background/index.ts +1 -1
  199. package/frontend/{lib/services → services}/terminal/background/session-restore.ts +1 -1
  200. package/frontend/{lib/services → services}/terminal/background/stream-manager.ts +1 -1
  201. package/frontend/{lib/services → services}/terminal/project.service.ts +2 -2
  202. package/frontend/{lib/services → services}/terminal/terminal.service.ts +2 -2
  203. package/frontend/{lib/stores → stores}/core/app.svelte.ts +1 -1
  204. package/frontend/{lib/stores → stores}/core/presence.svelte.ts +4 -4
  205. package/frontend/{lib/stores → stores}/core/projects.svelte.ts +5 -5
  206. package/frontend/{lib/stores → stores}/core/sessions.svelte.ts +3 -3
  207. package/frontend/{lib/stores → stores}/features/auth.svelte.ts +2 -2
  208. package/frontend/{lib/stores → stores}/features/claude-accounts.svelte.ts +1 -1
  209. package/frontend/{lib/stores → stores}/features/models.svelte.ts +1 -1
  210. package/frontend/{lib/stores → stores}/features/settings.svelte.ts +2 -2
  211. package/frontend/{lib/stores → stores}/features/terminal.svelte.ts +4 -4
  212. package/frontend/{lib/stores → stores}/features/tunnel.svelte.ts +1 -1
  213. package/frontend/{lib/stores → stores}/features/user.svelte.ts +1 -1
  214. package/frontend/{lib/stores → stores}/ui/edit-mode.svelte.ts +3 -3
  215. package/frontend/{lib/stores → stores}/ui/update.svelte.ts +2 -2
  216. package/frontend/{lib/utils → utils}/theme.ts +1 -1
  217. package/frontend/{lib/utils → utils}/ws.ts +1 -1
  218. package/package.json +1 -1
  219. package/scripts/dev.ts +1 -1
  220. package/scripts/generate-icons.ts +2 -2
  221. package/shared/types/ui/icons.ts +4 -4
  222. package/shared/utils/anonymous-user.ts +1 -1
  223. package/shared/utils/ws-server.ts +3 -3
  224. /package/backend/{lib/auth → auth}/index.ts +0 -0
  225. /package/backend/{lib/auth → auth}/permissions.ts +0 -0
  226. /package/backend/{lib/auth → auth}/rate-limiter.ts +0 -0
  227. /package/backend/{lib/auth → auth}/tokens.ts +0 -0
  228. /package/backend/{lib/chat → chat}/helpers.ts +0 -0
  229. /package/backend/{lib/chat → chat}/index.ts +0 -0
  230. /package/backend/{lib/database → database}/README.md +0 -0
  231. /package/backend/{lib/database → database}/index.ts +0 -0
  232. /package/backend/{lib/database → database}/migrations/001_create_projects_table.ts +0 -0
  233. /package/backend/{lib/database → database}/migrations/002_create_chat_sessions_table.ts +0 -0
  234. /package/backend/{lib/database → database}/migrations/003_create_messages_table.ts +0 -0
  235. /package/backend/{lib/database → database}/migrations/004_create_prompt_templates_table.ts +0 -0
  236. /package/backend/{lib/database → database}/migrations/005_create_settings_table.ts +0 -0
  237. /package/backend/{lib/database → database}/migrations/006_add_user_to_messages.ts +0 -0
  238. /package/backend/{lib/database → database}/migrations/007_create_stream_states_table.ts +0 -0
  239. /package/backend/{lib/database → database}/migrations/008_create_message_snapshots_table.ts +0 -0
  240. /package/backend/{lib/database → database}/migrations/009_add_delta_snapshot_fields.ts +0 -0
  241. /package/backend/{lib/database → database}/migrations/010_add_soft_delete_and_branch_support.ts +0 -0
  242. /package/backend/{lib/database → database}/migrations/011_git_like_commit_graph.ts +0 -0
  243. /package/backend/{lib/database → database}/migrations/012_add_file_change_statistics.ts +0 -0
  244. /package/backend/{lib/database → database}/migrations/013_checkpoint_tree_state.ts +0 -0
  245. /package/backend/{lib/database → database}/migrations/014_add_engine_to_sessions.ts +0 -0
  246. /package/backend/{lib/database → database}/migrations/015_add_model_to_sessions.ts +0 -0
  247. /package/backend/{lib/database → database}/migrations/016_create_user_projects_table.ts +0 -0
  248. /package/backend/{lib/database → database}/migrations/017_add_current_session_to_user_projects.ts +0 -0
  249. /package/backend/{lib/database → database}/migrations/018_create_claude_accounts_table.ts +0 -0
  250. /package/backend/{lib/database → database}/migrations/019_add_claude_account_to_sessions.ts +0 -0
  251. /package/backend/{lib/database → database}/migrations/020_add_snapshot_tree_hash.ts +0 -0
  252. /package/backend/{lib/database → database}/migrations/021_drop_prompt_templates_table.ts +0 -0
  253. /package/backend/{lib/database → database}/migrations/022_add_snapshot_changes_column.ts +0 -0
  254. /package/backend/{lib/database → database}/migrations/023_create_user_unread_sessions_table.ts +0 -0
  255. /package/backend/{lib/database → database}/migrations/024_create_users_table.ts +0 -0
  256. /package/backend/{lib/database → database}/migrations/025_create_auth_sessions_table.ts +0 -0
  257. /package/backend/{lib/database → database}/migrations/026_create_invite_tokens_table.ts +0 -0
  258. /package/backend/{lib/database → database}/migrations/index.ts +0 -0
  259. /package/backend/{lib/database → database}/queries/auth-queries.ts +0 -0
  260. /package/backend/{lib/database → database}/queries/checkpoint-queries.ts +0 -0
  261. /package/backend/{lib/database → database}/queries/engine-queries.ts +0 -0
  262. /package/backend/{lib/database → database}/queries/index.ts +0 -0
  263. /package/backend/{lib/database → database}/queries/message-queries.ts +0 -0
  264. /package/backend/{lib/database → database}/queries/project-queries.ts +0 -0
  265. /package/backend/{lib/database → database}/queries/session-queries.ts +0 -0
  266. /package/backend/{lib/database → database}/queries/settings-queries.ts +0 -0
  267. /package/backend/{lib/database → database}/queries/snapshot-queries.ts +0 -0
  268. /package/backend/{lib/database → database}/queries/utils-queries.ts +0 -0
  269. /package/backend/{lib/database → database}/seeders/index.ts +0 -0
  270. /package/backend/{lib/database → database}/seeders/settings_seeder.ts +0 -0
  271. /package/backend/{lib/database → database}/utils/connection.ts +0 -0
  272. /package/backend/{lib/database → database}/utils/index.ts +0 -0
  273. /package/backend/{lib/database → database}/utils/migration-runner.ts +0 -0
  274. /package/backend/{lib/database → database}/utils/seeder-runner.ts +0 -0
  275. /package/backend/{lib/engine → engine}/adapters/claude/error-handler.ts +0 -0
  276. /package/backend/{lib/engine → engine}/adapters/claude/index.ts +0 -0
  277. /package/backend/{lib/engine → engine}/adapters/claude/path-utils.ts +0 -0
  278. /package/backend/{lib/engine → engine}/adapters/claude/stream.ts +0 -0
  279. /package/backend/{lib/engine → engine}/adapters/opencode/index.ts +0 -0
  280. /package/backend/{lib/engine → engine}/adapters/opencode/server.ts +0 -0
  281. /package/backend/{lib/engine → engine}/adapters/opencode/stream.ts +0 -0
  282. /package/backend/{lib/engine → engine}/index.ts +0 -0
  283. /package/backend/{lib/engine → engine}/types.ts +0 -0
  284. /package/backend/{lib/files → files}/file-operations.ts +0 -0
  285. /package/backend/{lib/files → files}/file-reading.ts +0 -0
  286. /package/backend/{lib/files → files}/path-browsing.ts +0 -0
  287. /package/backend/{lib/git → git}/git-parser.ts +0 -0
  288. /package/backend/{lib/git → git}/git-service.ts +0 -0
  289. /package/backend/{lib/mcp → mcp}/index.ts +0 -0
  290. /package/backend/{lib/mcp → mcp}/project-context.ts +0 -0
  291. /package/backend/{lib/mcp → mcp}/remote-server.ts +0 -0
  292. /package/backend/{lib/mcp → mcp}/servers/browser-automation/index.ts +0 -0
  293. /package/backend/{lib/mcp → mcp}/servers/helper.ts +0 -0
  294. /package/backend/{lib/mcp → mcp}/servers/index.ts +0 -0
  295. /package/backend/{lib/mcp → mcp}/servers/weather/get-temperature.ts +0 -0
  296. /package/backend/{lib/mcp → mcp}/servers/weather/index.ts +0 -0
  297. /package/backend/{lib/mcp → mcp}/types.ts +0 -0
  298. /package/backend/{lib/preview → preview}/browser/browser-audio-capture.ts +0 -0
  299. /package/backend/{lib/preview → preview}/browser/browser-console-manager.ts +0 -0
  300. /package/backend/{lib/preview → preview}/browser/browser-dialog-handler.ts +0 -0
  301. /package/backend/{lib/preview → preview}/browser/browser-interaction-handler.ts +0 -0
  302. /package/backend/{lib/preview → preview}/browser/browser-mcp-control.ts +0 -0
  303. /package/backend/{lib/preview → preview}/browser/browser-native-ui-handler.ts +0 -0
  304. /package/backend/{lib/preview → preview}/browser/browser-navigation-tracker.ts +0 -0
  305. /package/backend/{lib/preview → preview}/browser/browser-pool.ts +0 -0
  306. /package/backend/{lib/preview → preview}/browser/browser-video-capture.ts +0 -0
  307. /package/backend/{lib/preview → preview}/browser/scripts/audio-stream.ts +0 -0
  308. /package/backend/{lib/preview → preview}/browser/scripts/cursor-tracking.ts +0 -0
  309. /package/backend/{lib/preview → preview}/browser/scripts/video-stream.ts +0 -0
  310. /package/backend/{lib/preview → preview}/index.ts +0 -0
  311. /package/backend/{lib/project → project}/index.ts +0 -0
  312. /package/backend/{lib/snapshot → snapshot}/blob-store.ts +0 -0
  313. /package/backend/{lib/snapshot → snapshot}/gitignore.ts +0 -0
  314. /package/backend/{lib/snapshot → snapshot}/helpers.ts +0 -0
  315. /package/backend/{lib/snapshot → snapshot}/snapshot-service.ts +0 -0
  316. /package/backend/{lib/terminal → terminal}/helpers.ts +0 -0
  317. /package/backend/{lib/terminal → terminal}/index.ts +0 -0
  318. /package/backend/{lib/terminal → terminal}/pty-manager.ts +0 -0
  319. /package/backend/{lib/terminal → terminal}/pty-session-manager.ts +0 -0
  320. /package/backend/{lib/terminal → terminal}/stream-manager.ts +0 -0
  321. /package/backend/{lib/tunnel → tunnel}/global-tunnel-manager.ts +0 -0
  322. /package/backend/{lib/tunnel → tunnel}/project-tunnel-manager.ts +0 -0
  323. /package/backend/{lib/shared → utils}/env.ts +0 -0
  324. /package/backend/{lib/shared → utils}/index.ts +0 -0
  325. /package/backend/{lib/shared → utils}/port-utils.ts +0 -0
  326. /package/backend/{lib/shared → utils}/process-manager.ts +0 -0
  327. /package/backend/{lib/user/helpers.ts → utils/user-helpers.ts} +0 -0
  328. /package/frontend/{lib/app-environment.ts → app-environment.ts} +0 -0
  329. /package/frontend/{lib/components → components}/chat/formatters/index.ts +0 -0
  330. /package/frontend/{lib/components → components}/chat/input/components/DragDropOverlay.svelte +0 -0
  331. /package/frontend/{lib/components → components}/chat/input/composables/use-animations.svelte.ts +0 -0
  332. /package/frontend/{lib/components → components}/chat/input/composables/use-textarea-resize.svelte.ts +0 -0
  333. /package/frontend/{lib/components → components}/chat/message/DateSeparator.svelte +0 -0
  334. /package/frontend/{lib/components → components}/chat/shared/index.ts +0 -0
  335. /package/frontend/{lib/components → components}/chat/shared/utils.ts +0 -0
  336. /package/frontend/{lib/components → components}/chat/tools/AgentTool.svelte +0 -0
  337. /package/frontend/{lib/components → components}/chat/tools/BashOutputTool.svelte +0 -0
  338. /package/frontend/{lib/components → components}/chat/tools/BashTool.svelte +0 -0
  339. /package/frontend/{lib/components → components}/chat/tools/EnterPlanModeTool.svelte +0 -0
  340. /package/frontend/{lib/components → components}/chat/tools/ExitPlanModeTool.svelte +0 -0
  341. /package/frontend/{lib/components → components}/chat/tools/GlobTool.svelte +0 -0
  342. /package/frontend/{lib/components → components}/chat/tools/GrepTool.svelte +0 -0
  343. /package/frontend/{lib/components → components}/chat/tools/ListMcpResourcesTool.svelte +0 -0
  344. /package/frontend/{lib/components → components}/chat/tools/NotebookEditTool.svelte +0 -0
  345. /package/frontend/{lib/components → components}/chat/tools/ReadMcpResourceTool.svelte +0 -0
  346. /package/frontend/{lib/components → components}/chat/tools/ReadTool.svelte +0 -0
  347. /package/frontend/{lib/components → components}/chat/tools/TaskStopTool.svelte +0 -0
  348. /package/frontend/{lib/components → components}/chat/tools/TaskTool.svelte +0 -0
  349. /package/frontend/{lib/components → components}/chat/tools/WebFetchTool.svelte +0 -0
  350. /package/frontend/{lib/components → components}/chat/tools/WebSearchTool.svelte +0 -0
  351. /package/frontend/{lib/components → components}/chat/tools/WriteTool.svelte +0 -0
  352. /package/frontend/{lib/components → components}/chat/tools/components/StatsBadges.svelte +0 -0
  353. /package/frontend/{lib/components → components}/chat/tools/components/TerminalCommand.svelte +0 -0
  354. /package/frontend/{lib/components → components}/chat/tools/components/index.ts +0 -0
  355. /package/frontend/{lib/components → components}/chat/tools/index.ts +0 -0
  356. /package/frontend/{lib/components → components}/checkpoint/timeline/TimelineEdge.svelte +0 -0
  357. /package/frontend/{lib/components → components}/checkpoint/timeline/TimelineGraph.svelte +0 -0
  358. /package/frontend/{lib/components → components}/checkpoint/timeline/TimelineVersionGroup.svelte +0 -0
  359. /package/frontend/{lib/components → components}/checkpoint/timeline/animation.ts +0 -0
  360. /package/frontend/{lib/components → components}/checkpoint/timeline/config.ts +0 -0
  361. /package/frontend/{lib/components → components}/checkpoint/timeline/graph-builder.ts +0 -0
  362. /package/frontend/{lib/components → components}/checkpoint/timeline/types.ts +0 -0
  363. /package/frontend/{lib/components → components}/checkpoint/timeline/utils.ts +0 -0
  364. /package/frontend/{lib/components/common → components/common/display}/AvatarBubble.svelte +0 -0
  365. /package/frontend/{lib/components/common → components/common/display}/Button.svelte +0 -0
  366. /package/frontend/{lib/components/common → components/common/display}/Card.svelte +0 -0
  367. /package/frontend/{lib/components/common → components/common/feedback}/LoadingSpinner.svelte +0 -0
  368. /package/frontend/{lib/components → components}/common/lucide-icons.ts +0 -0
  369. /package/frontend/{lib/components → components}/common/material-icons.ts +0 -0
  370. /package/frontend/{lib/components/common → components/common/overlay}/Modal.svelte +0 -0
  371. /package/frontend/{lib/components → components}/common/xterm/index.ts +0 -0
  372. /package/frontend/{lib/components → components}/common/xterm/terminal-config.ts +0 -0
  373. /package/frontend/{lib/components → components}/common/xterm/types.ts +0 -0
  374. /package/frontend/{lib/components → components}/preview/browser/components/VirtualCursor.svelte +0 -0
  375. /package/frontend/{lib/components → components}/preview/browser/core/stream-handler.svelte.ts +0 -0
  376. /package/frontend/{lib/components → components}/preview/index.ts +0 -0
  377. /package/frontend/{lib/components → components}/settings/account/AccountSettings.svelte +0 -0
  378. /package/frontend/{lib/components → components}/settings/general/GeneralSettings.svelte +0 -0
  379. /package/frontend/{lib/components → components}/settings/security/SecuritySettings.svelte +0 -0
  380. /package/frontend/{lib/components → components}/settings/system/SystemSettings.svelte +0 -0
  381. /package/frontend/{lib/components → components}/tunnel/TunnelQRCode.svelte +0 -0
  382. /package/frontend/{lib/services → services}/chat/index.ts +0 -0
  383. /package/frontend/{lib/services → services}/notification/index.ts +0 -0
  384. /package/frontend/{lib/services → services}/preview/index.ts +0 -0
  385. /package/frontend/{lib/services → services}/project/index.ts +0 -0
  386. /package/frontend/{lib/services → services}/terminal/index.ts +0 -0
  387. /package/frontend/{lib/services → services}/terminal/persistence.service.ts +0 -0
  388. /package/frontend/{lib/services → services}/terminal/session.service.ts +0 -0
  389. /package/frontend/{lib/stores → stores}/core/files.svelte.ts +0 -0
  390. /package/frontend/{lib/stores → stores}/ui/chat-input.svelte.ts +0 -0
  391. /package/frontend/{lib/stores → stores}/ui/chat-model.svelte.ts +0 -0
  392. /package/frontend/{lib/stores → stores}/ui/connection.svelte.ts +0 -0
  393. /package/frontend/{lib/stores → stores}/ui/dialog.svelte.ts +0 -0
  394. /package/frontend/{lib/stores → stores}/ui/notification.svelte.ts +0 -0
  395. /package/frontend/{lib/stores → stores}/ui/settings-modal.svelte.ts +0 -0
  396. /package/frontend/{lib/stores → stores}/ui/theme.svelte.ts +0 -0
  397. /package/frontend/{lib/stores → stores}/ui/workspace.svelte.ts +0 -0
  398. /package/frontend/{lib/utils → utils}/chat/date-separator.ts +0 -0
  399. /package/frontend/{lib/utils → utils}/chat/message-grouper.ts +0 -0
  400. /package/frontend/{lib/utils → utils}/chat/message-processor.ts +0 -0
  401. /package/frontend/{lib/utils → utils}/chat/tool-handler.ts +0 -0
  402. /package/frontend/{lib/utils → utils}/chat/virtual-scroll.svelte.ts +0 -0
  403. /package/frontend/{lib/utils → utils}/click-outside.ts +0 -0
  404. /package/frontend/{lib/utils → utils}/context-manager.ts +0 -0
  405. /package/frontend/{lib/utils → utils}/file-icon-mappings.ts +0 -0
  406. /package/frontend/{lib/utils → utils}/folder-icon-mappings.ts +0 -0
  407. /package/frontend/{lib/utils → utils}/git-status.ts +0 -0
  408. /package/frontend/{lib/types → utils}/native-ui.ts +0 -0
  409. /package/frontend/{lib/utils → utils}/platform.ts +0 -0
  410. /package/frontend/{lib/utils → utils}/port-check.ts +0 -0
  411. /package/frontend/{lib/constants/preview.ts → utils/preview-constants.ts} +0 -0
  412. /package/frontend/{lib/utils/terminalFormatter.ts → utils/terminal-formatter.ts} +0 -0
  413. /package/frontend/{lib/utils → utils}/tree-visualizer.ts +0 -0
@@ -4,9 +4,9 @@
4
4
  * Core authentication logic: user creation, session management, invite handling.
5
5
  */
6
6
 
7
- import { authQueries, settingsQueries } from '$backend/lib/database/queries';
7
+ import { authQueries, settingsQueries } from '$backend/database/queries';
8
8
  import { generateSessionToken, generatePAT, generateInviteToken, hashToken, getTokenType } from './tokens';
9
- import { generateColorFromString, getInitials } from '$backend/lib/user/helpers';
9
+ import { generateColorFromString, getInitials } from '$backend/utils/user-helpers';
10
10
  import { debug } from '$shared/utils/logger';
11
11
 
12
12
  /** Default session lifetime in days */
@@ -1097,7 +1097,7 @@ class StreamManager extends EventEmitter {
1097
1097
  // Update checkpoint_tree_state when saving a new checkpoint (real user message)
1098
1098
  if (message.type === 'user') {
1099
1099
  try {
1100
- const { isCheckpointMessage, buildCheckpointTree, getCheckpointPathToRoot } = await import('../../lib/snapshot/helpers');
1100
+ const { isCheckpointMessage, buildCheckpointTree, getCheckpointPathToRoot } = await import('../snapshot/helpers');
1101
1101
  const { checkpointQueries } = await import('../database/queries');
1102
1102
 
1103
1103
  // Check if this new message is a checkpoint
@@ -12,7 +12,7 @@ import { join } from 'path';
12
12
  import { isWindows, findGitBash } from '../../../terminal/shell-utils.js';
13
13
  import { engineQueries } from '../../../database/queries';
14
14
  import { debug } from '$shared/utils/logger';
15
- import { getCleanSpawnEnv } from '../../../shared/env';
15
+ import { getCleanSpawnEnv } from '../../../utils/env';
16
16
 
17
17
  let _ready = false;
18
18
  let _initPromise: Promise<void> | null = null;
@@ -141,7 +141,7 @@ const TOOL_NAME_MAP: Record<string, string> = {
141
141
 
142
142
  /** Map Open Code tool name to Claude Code tool name for UI rendering */
143
143
  export function mapToolName(openCodeToolName: string): string {
144
- // Check if this is a custom MCP tool (resolves via single source in backend/lib/mcp)
144
+ // Check if this is a custom MCP tool (resolves via single source in backend/mcp)
145
145
  const mcpName = resolveOpenCodeToolName(openCodeToolName);
146
146
  if (mcpName) return mcpName;
147
147
 
@@ -12,7 +12,7 @@
12
12
  import { watch, type FSWatcher, existsSync } from 'node:fs';
13
13
  import { stat } from 'node:fs/promises';
14
14
  import { join, relative, normalize, sep } from 'node:path';
15
- import { ws } from '$backend/lib/utils/ws';
15
+ import { ws } from '$backend/utils/ws';
16
16
  import { debug } from '$shared/utils/logger';
17
17
  import type { FileChange } from '$shared/types/filesystem';
18
18
 
@@ -4,7 +4,7 @@
4
4
  */
5
5
 
6
6
  import { debug } from '$shared/utils/logger';
7
- import { getCleanSpawnEnv } from '../shared/env';
7
+ import { getCleanSpawnEnv } from '../utils/env';
8
8
 
9
9
  export interface GitExecResult {
10
10
  stdout: string;
package/backend/index.ts CHANGED
@@ -9,7 +9,7 @@ if (typeof globalThis.Bun === 'undefined') {
9
9
  }
10
10
 
11
11
  // MUST be first import — cleans process.env before any other module reads it
12
- import { SERVER_ENV } from './lib/shared/env';
12
+ import { SERVER_ENV } from './utils/env';
13
13
 
14
14
  import { Elysia } from 'elysia';
15
15
  import { corsMiddleware } from './middleware/cors';
@@ -17,10 +17,10 @@ import { errorHandlerMiddleware } from './middleware/error-handler';
17
17
  import { loggerMiddleware } from './middleware/logger';
18
18
 
19
19
  // Database initialization
20
- import { initializeDatabase, closeDatabase } from './lib/database';
21
- import { disposeAllEngines } from './lib/engine';
20
+ import { initializeDatabase, closeDatabase } from './database';
21
+ import { disposeAllEngines } from './engine';
22
22
  import { debug } from '$shared/utils/logger';
23
- import { findAvailablePort } from './lib/shared/port-utils';
23
+ import { findAvailablePort } from './utils/port-utils';
24
24
  import { networkInterfaces } from 'os';
25
25
  import { resolve } from 'node:path';
26
26
  import { statSync } from 'node:fs';
@@ -29,11 +29,11 @@ import { statSync } from 'node:fs';
29
29
  import { wsRouter } from './ws';
30
30
 
31
31
  // MCP remote server for Open Code custom tools
32
- import { handleMcpRequest, closeMcpServer } from './lib/mcp/remote-server';
32
+ import { handleMcpRequest, closeMcpServer } from './mcp/remote-server';
33
33
 
34
34
  // Auth middleware
35
- import { checkRouteAccess } from './lib/auth/permissions';
36
- import { ws as wsServer } from './lib/utils/ws';
35
+ import { checkRouteAccess } from './auth/permissions';
36
+ import { ws as wsServer } from './utils/ws';
37
37
 
38
38
  // Register auth gate on WebSocket router — blocks unauthenticated/unauthorized access
39
39
  wsRouter.setAuthMiddleware(async (conn, action) => {
@@ -19,13 +19,13 @@ Custom MCP (Model Context Protocol) tools for adding specialized functionality t
19
19
  ## Overview
20
20
 
21
21
  **What is Custom MCP Tools?**
22
- System for adding custom tools to AI engines with type-safe TypeScript definitions. Tools are defined once using `defineServer()` and automatically available to both Claude Code (in-process) and Open Code (stdio subprocess).
22
+ System for adding custom tools to AI engines with type-safe TypeScript definitions. Tools are defined once using `defineServer()` and automatically available to both Claude Code (in-process) and Open Code (remote HTTP MCP server).
23
23
 
24
24
  **Features:**
25
25
  - Single source of truth — define tools once, use in both engines
26
26
  - In-process execution for Claude Code via `createSdkMcpServer`
27
- - Stdio subprocess for Open Code via `@modelcontextprotocol/sdk`
28
- - WebSocket bridge for tool handlers that need in-process access
27
+ - Remote HTTP MCP server for Open Code via `createRemoteMcpServer`
28
+ - Both engines execute handlers in-process (no subprocess, no bridge)
29
29
  - Type-safe with TypeScript
30
30
  - Auto metadata extraction and registration
31
31
  - Configuration-based enable/disable
@@ -91,7 +91,7 @@ import weather from './weather';
91
91
  import calculator from './calculator';
92
92
  import { buildServerRegistries } from './helper';
93
93
 
94
- const allServers = [
94
+ export const allServers = [
95
95
  weather,
96
96
  calculator, // Simply add your server here!
97
97
  // Add more servers...
@@ -131,27 +131,25 @@ Tool available to Claude as: `mcp__calculator__calculate`
131
131
  ## Architecture
132
132
 
133
133
  ```
134
- backend/lib/mcp/
135
- ├── types.ts # TypeScript type definitions (auto-inferred from metadata)
136
- ├── config.ts # User configuration (enabled, tools) + auto-merge with registry
137
- # + resolveOpenCodeToolName() & getOpenCodeMcpConfig()
138
- ├── index.ts # Main export point
139
- ├── stdio-server.ts # Standalone MCP stdio server for Open Code (subprocess)
140
- ├── servers/ # Server implementations (single source of truth)
141
- ├── index.ts # Auto-build registries from server array
142
- │ ├── helper.ts # defineServer & buildServerRegistries functions
143
- │ ├── weather/ # Example: Weather service
144
- ├── index.ts # Server definition using defineServer
134
+ backend/mcp/
135
+ ├── types.ts # TypeScript type definitions (auto-inferred from metadata)
136
+ ├── config.ts # User configuration (enabled, tools) + auto-merge with registry
137
+ # + resolveOpenCodeToolName() & getOpenCodeMcpConfig()
138
+ ├── index.ts # Main export point
139
+ ├── remote-server.ts # Remote HTTP MCP server for Open Code (Streamable HTTP transport)
140
+ ├── project-context.ts # Project context service for MCP tool handlers
141
+ ├── servers/ # Server implementations (single source of truth)
142
+ │ ├── index.ts # Auto-build registries from server array + export allServers
143
+ │ ├── helper.ts # defineServer, buildServerRegistries & createRemoteMcpServer
144
+ │ ├── weather/ # Example: Weather service
145
+ │ │ ├── index.ts # Server definition using defineServer
145
146
  │ │ └── get-temperature.ts # Tool handler implementation
146
147
  │ └── browser-automation/ # Example: Browser automation service
147
- │ ├── index.ts # Server definition
148
- │ ├── session.ts # Session management handlers
149
- │ ├── navigation.ts # Navigation handlers
150
- │ └── ... # Other tool handlers
151
- └── README.md # This file
152
-
153
- backend/ws/mcp/ # WebSocket bridge route (lives in ws/ per convention)
154
- └── index.ts # WS .http() route for stdio server → main server
148
+ │ ├── index.ts # Server definition
149
+ │ ├── actions.ts # Browser action handlers
150
+ │ ├── browser.ts # Browser instance management
151
+ │ └── inspection.ts # Page inspection handlers
152
+ └── README.md # This file
155
153
  ```
156
154
 
157
155
  ### Server Organization
@@ -205,29 +203,27 @@ servers/browser-automation/
205
203
  6. UI displays result (CustomMcpTool.svelte)
206
204
  ```
207
205
 
208
- **Open Code (stdio subprocess + WS bridge):**
206
+ **Open Code (remote HTTP MCP server):**
209
207
  ```
210
208
  1. Server Definition (servers/weather/index.ts)
211
209
  └─> Same defineServer() — single source of truth
212
210
 
213
- 2. Open Code engine (opencode/stream.ts)
214
- └─> Uses getOpenCodeMcpConfig() spawns stdio-server.ts
211
+ 2. Remote MCP server (remote-server.ts)
212
+ └─> createRemoteMcpServer() registers tools from allServers
213
+ └─> Mounted at /mcp on the main Elysia server
215
214
 
216
- 3. stdio-server.ts (subprocess)
217
- └─> Reads serverMetadata for tool schemas/descriptions
218
- └─> Registers tools via @modelcontextprotocol/sdk
215
+ 3. Open Code engine (opencode/stream.ts)
216
+ └─> Uses getOpenCodeMcpConfig() { type: 'remote', url: '/mcp' }
219
217
 
220
- 4. Open Code calls a tool stdio-server receives JSON-RPC
218
+ 4. Open Code connects via Streamable HTTP transport
219
+ └─> Sends JSON-RPC tool calls to /mcp endpoint
221
220
 
222
- 5. stdio-server proxies via WSClient.http('mcp:execute', ...)
223
-
224
- 6. WS bridge route (backend/ws/mcp/)
225
- └─> Looks up handler from serverMetadata.toolDefs
221
+ 5. remote-server.ts handles the request
226
222
  └─> Executes handler in-process (same context as main server)
227
223
 
228
- 7. Response flows back: bridgeWSClient → stdio → Open Code
224
+ 6. Response flows back: HTTP → Open Code
229
225
 
230
- 8. UI displays result (CustomMcpTool.svelte)
226
+ 7. UI displays result (CustomMcpTool.svelte)
231
227
  ```
232
228
 
233
229
  ### Key Components
@@ -235,23 +231,25 @@ servers/browser-automation/
235
231
  **`defineServer`**
236
232
  Helper function to define MCP server with automatic metadata extraction.
237
233
  Stores both Claude SDK server instance AND raw tool definitions (`toolDefs`)
238
- for reuse by other transports (stdio server, bridge).
234
+ for reuse by both engines.
239
235
 
240
236
  **`buildServerRegistries`**
241
237
  Function to build server registries from server array.
242
238
 
239
+ **`createRemoteMcpServer`**
240
+ Creates a `McpServer` instance (from `@modelcontextprotocol/sdk`) with tools
241
+ registered from the same `RawToolDef` definitions used by Claude Code.
242
+ Handlers execute directly in-process — no subprocess, no bridge.
243
+
243
244
  **`mcpServers`**
244
245
  Final configuration combining user config with server instances.
245
246
 
246
- **`stdio-server.ts`**
247
- Standalone MCP stdio server subprocess spawned by Open Code. Reads tool
248
- definitions from `serverMetadata` and proxies all calls to the main server
249
- via `WSClient.http()`. Uses `@modelcontextprotocol/sdk` for MCP protocol.
250
-
251
- **`backend/ws/mcp/`**
252
- WebSocket `.http()` route that receives tool calls from the stdio server
253
- and executes handlers in-process. Lives in `backend/ws/` per the WS
254
- module convention (see `backend/ws/README.md`).
247
+ **`remote-server.ts`**
248
+ Remote HTTP MCP server mounted at `/mcp` on the main Elysia server.
249
+ Uses `WebStandardStreamableHTTPServerTransport` for the MCP protocol.
250
+ Open Code connects to it via `type: 'remote'` config. Each session gets
251
+ its own transport and `McpServer` instance. Handles session lifecycle
252
+ (create, route, close) and graceful shutdown.
255
253
 
256
254
  ---
257
255
 
@@ -449,14 +447,14 @@ import type {
449
447
  McpServerConfigWithInstance, // Config + instance structure
450
448
  ParsedMcpToolName, // Parsed tool name components
451
449
  McpServerStatus // Server status from SDK
452
- } from '$backend/lib/mcp';
450
+ } from '$backend/mcp';
453
451
  ```
454
452
 
455
453
  #### Main Configuration
456
454
 
457
455
  **`mcpServers`** - Final merged configuration:
458
456
  ```typescript
459
- import { mcpServers } from '$backend/lib/mcp';
457
+ import { mcpServers } from '$backend/mcp';
460
458
 
461
459
  // Access server configuration
462
460
  const weatherConfig = mcpServers["weather-service"];
@@ -471,7 +469,7 @@ const weatherConfig = mcpServers["weather-service"];
471
469
 
472
470
  **`serverMetadata`** - Metadata for type inference:
473
471
  ```typescript
474
- import { serverMetadata } from '$backend/lib/mcp/servers';
472
+ import { serverMetadata } from '$backend/mcp/servers';
475
473
 
476
474
  // Access metadata
477
475
  const weatherMeta = serverMetadata["weather-service"];
@@ -480,7 +478,7 @@ const weatherMeta = serverMetadata["weather-service"];
480
478
 
481
479
  **`serverRegistry`** - Server instances:
482
480
  ```typescript
483
- import { serverRegistry } from '$backend/lib/mcp/servers';
481
+ import { serverRegistry } from '$backend/mcp/servers';
484
482
 
485
483
  // Access server instance
486
484
  const weatherServer = serverRegistry["weather-service"];
@@ -492,7 +490,7 @@ const weatherServer = serverRegistry["weather-service"];
492
490
  Returns all enabled MCP servers for use with Claude SDK.
493
491
 
494
492
  ```typescript
495
- import { getEnabledMcpServers } from '$backend/lib/mcp';
493
+ import { getEnabledMcpServers } from '$backend/mcp';
496
494
 
497
495
  const servers = getEnabledMcpServers();
498
496
  // Returns: Record<string, McpServerConfig>
@@ -502,7 +500,7 @@ const servers = getEnabledMcpServers();
502
500
  Returns array of allowed tool names (formatted for Claude SDK).
503
501
 
504
502
  ```typescript
505
- import { getAllowedMcpTools } from '$backend/lib/mcp';
503
+ import { getAllowedMcpTools } from '$backend/mcp';
506
504
 
507
505
  const tools = getAllowedMcpTools();
508
506
  // Returns: ["mcp__weather-service__get_temperature", ...]
@@ -512,7 +510,7 @@ const tools = getAllowedMcpTools();
512
510
  Parse MCP tool name into components.
513
511
 
514
512
  ```typescript
515
- import { parseMcpToolName } from '$backend/lib/mcp';
513
+ import { parseMcpToolName } from '$backend/mcp';
516
514
 
517
515
  const parsed = parseMcpToolName("mcp__weather-service__get_temperature");
518
516
  // Returns: { server: "weather-service", tool: "get_temperature", fullName: "..." }
@@ -522,27 +520,27 @@ const parsed = parseMcpToolName("mcp__weather-service__get_temperature");
522
520
  Check if a tool name is a custom MCP tool.
523
521
 
524
522
  ```typescript
525
- import { isMcpTool } from '$backend/lib/mcp';
523
+ import { isMcpTool } from '$backend/mcp';
526
524
 
527
525
  isMcpTool("mcp__weather-service__get_temperature"); // true
528
526
  isMcpTool("Bash"); // false
529
527
  ```
530
528
 
531
529
  #### `getOpenCodeMcpConfig()`
532
- Returns MCP configuration for Open Code engine (spawns stdio subprocess).
530
+ Returns MCP configuration for Open Code engine (remote HTTP MCP server).
533
531
 
534
532
  ```typescript
535
- import { getOpenCodeMcpConfig } from '$backend/lib/mcp';
533
+ import { getOpenCodeMcpConfig } from '$backend/mcp';
536
534
 
537
535
  const mcpConfig = getOpenCodeMcpConfig();
538
- // Returns: { 'clopen-mcp': { type: 'local', command: ['bun', 'run', '...'], ... } }
536
+ // Returns: { 'clopen-mcp': { type: 'remote', url: 'http://localhost:9151/mcp', ... } }
539
537
  ```
540
538
 
541
539
  #### `resolveOpenCodeToolName(toolName)`
542
540
  Resolve an Open Code tool name to `mcp__server__tool` format (single source of truth).
543
541
 
544
542
  ```typescript
545
- import { resolveOpenCodeToolName } from '$backend/lib/mcp';
543
+ import { resolveOpenCodeToolName } from '$backend/mcp';
546
544
 
547
545
  resolveOpenCodeToolName("clopen-mcp_get_temperature");
548
546
  // Returns: "mcp__weather-service__get_temperature"
@@ -565,7 +563,7 @@ import {
565
563
  getEnabledServerNames,
566
564
  getEnabledToolsForServer,
567
565
  getMcpStats
568
- } from '$backend/lib/mcp';
566
+ } from '$backend/mcp';
569
567
 
570
568
  // Get server configuration (includes instance)
571
569
  const config = getServerConfig("weather-service");
@@ -1084,38 +1082,30 @@ schema: {
1084
1082
 
1085
1083
  ### How It Works
1086
1084
 
1087
- Open Code uses a **stdio subprocess** pattern for MCP tools. The integration has three parts:
1088
-
1089
- 1. **`stdio-server.ts`** — Standalone Bun subprocess that Open Code spawns. It registers tools from `serverMetadata` using `@modelcontextprotocol/sdk` and communicates with Open Code via stdin/stdout (JSON-RPC 2.0).
1090
-
1091
- 2. **`WSClient` bridge** — The stdio server uses `WSClient` from `shared/utils/ws-client.ts` to connect to the main Clopen server via WebSocket. Tool calls are proxied using the standard `.http()` request-response pattern.
1092
-
1093
- 3. **`backend/ws/mcp-bridge/`** — WS `.http()` route that receives bridge requests and executes tool handlers in-process. This is necessary because handlers like browser-automation need access to Puppeteer instances managed by the main server.
1085
+ Open Code connects to a **remote HTTP MCP server** running in the main Clopen process. Tool handlers execute directly in-process — no subprocess, no bridge. This is architecturally identical to how Claude Code uses in-process MCP servers.
1094
1086
 
1095
- ### Why a Bridge?
1087
+ 1. **`remote-server.ts`** HTTP MCP server mounted at `/mcp` on the main Elysia server. Uses `WebStandardStreamableHTTPServerTransport` from `@modelcontextprotocol/sdk` for the Streamable HTTP transport protocol.
1096
1088
 
1097
- Tool handlers often need in-process access to resources managed by the main server (browser instances, project context, database connections). The stdio subprocess runs in a separate process and cannot access these directly. The WS bridge pattern solves this by:
1089
+ 2. **`createRemoteMcpServer()`** Factory in `servers/helper.ts` that creates a `McpServer` instance with tools registered from the same `RawToolDef` definitions used by Claude Code. Each MCP session gets its own server instance.
1098
1090
 
1099
- - Keeping tool **definitions** (schema, description) in the subprocess for MCP protocol
1100
- - Proxying tool **execution** to the main server where handlers run in-process
1101
- - Using the standard WSClient protocol (same as frontend), not custom WebSocket code
1091
+ 3. **`getOpenCodeMcpConfig()`** Returns `{ type: 'remote', url: 'http://localhost:<port>/mcp' }` so Open Code connects directly to the main server.
1102
1092
 
1103
1093
  ### Adding Open Code Support to New Tools
1104
1094
 
1105
1095
  No extra work needed! When you add a new tool via `defineServer()`, it's automatically available to both engines:
1106
1096
 
1107
1097
  - **Claude Code**: Uses the in-process `createSdkMcpServer` instance
1108
- - **Open Code**: `stdio-server.ts` reads from `serverMetadata` and `mcpServers` — the same registries
1098
+ - **Open Code**: `remote-server.ts` uses `createRemoteMcpServer()` with the same `allServers` and `mcpServersConfig`
1109
1099
 
1110
1100
  ### File Locations
1111
1101
 
1112
1102
  | File | Location | Purpose |
1113
1103
  |------|----------|---------|
1114
- | Tool definitions | `backend/lib/mcp/servers/` | Single source of truth |
1115
- | Stdio server | `backend/lib/mcp/stdio-server.ts` | Subprocess for Open Code |
1116
- | WS bridge route | `backend/ws/mcp/index.ts` | Bridge handler (in ws/) |
1117
- | Open Code config | `backend/lib/mcp/config.ts` | `getOpenCodeMcpConfig()` |
1118
- | Tool name resolver | `backend/lib/mcp/config.ts` | `resolveOpenCodeToolName()` |
1104
+ | Tool definitions | `backend/mcp/servers/` | Single source of truth |
1105
+ | Remote MCP server | `backend/mcp/remote-server.ts` | HTTP server for Open Code |
1106
+ | Server factory | `backend/mcp/servers/helper.ts` | `createRemoteMcpServer()` |
1107
+ | Open Code config | `backend/mcp/config.ts` | `getOpenCodeMcpConfig()` |
1108
+ | Tool name resolver | `backend/mcp/config.ts` | `resolveOpenCodeToolName()` |
1119
1109
 
1120
1110
  ---
1121
1111
 
@@ -1125,7 +1115,7 @@ No extra work needed! When you add a new tool via `defineServer()`, it's automat
1125
1115
  - [Custom Tools](https://platform.claude.com/docs/en/agent-sdk/custom-tools.md)
1126
1116
  - [MCP in the SDK](https://platform.claude.com/docs/en/agent-sdk/mcp.md)
1127
1117
  - [MCP SDK (@modelcontextprotocol/sdk)](https://github.com/modelcontextprotocol/typescript-sdk)
1128
- - [WebSocket API Documentation](../../../backend/ws/README.md)
1118
+ - [WebSocket API Documentation](../ws/README.md)
1129
1119
  - [Zod Documentation](https://zod.dev/)
1130
1120
 
1131
1121
  ---
@@ -1137,7 +1127,6 @@ For questions or issues:
1137
1127
  2. Review example implementations in `./servers/`
1138
1128
  3. Check console logs for error messages
1139
1129
  4. Review Claude Agent SDK documentation
1140
- 5. For WS bridge issues, see `backend/ws/README.md`
1141
1130
 
1142
1131
  ---
1143
1132
 
@@ -10,7 +10,7 @@ import type { McpRemoteConfig } from '@opencode-ai/sdk';
10
10
  import type { ServerConfig, ParsedMcpToolName, ServerName } from './types';
11
11
  import { serverRegistry, serverFactories } from './servers';
12
12
  import { debug } from '$shared/utils/logger';
13
- import { SERVER_ENV } from '../shared/env';
13
+ import { SERVER_ENV } from '../utils/env';
14
14
 
15
15
  /**
16
16
  * User-defined MCP Servers Configuration
@@ -2,10 +2,10 @@
2
2
  * Browser Action Handlers
3
3
  */
4
4
 
5
- import { browserPreviewServiceManager, type BrowserPreviewService } from "$backend/lib/preview";
6
- import type { BrowserAutonomousAction } from "$backend/lib/preview/browser/types";
7
- import { browserMcpControl } from "$backend/lib/preview";
8
- import { projectContextService } from "$backend/lib/mcp/project-context";
5
+ import { browserPreviewServiceManager, type BrowserPreviewService } from "$backend/preview";
6
+ import type { BrowserAutonomousAction } from "$backend/preview/browser/types";
7
+ import { browserMcpControl } from "$backend/preview";
8
+ import { projectContextService } from "$backend/mcp/project-context";
9
9
  import { getActiveTabSession } from "./browser";
10
10
  import { debug } from "$shared/utils/logger";
11
11
 
@@ -10,10 +10,10 @@
10
10
  * All operations work on the active tab automatically.
11
11
  */
12
12
 
13
- import { ws } from "$backend/lib/utils/ws";
13
+ import { ws } from "$backend/utils/ws";
14
14
  import { debug } from "$shared/utils/logger";
15
- import { browserMcpControl, browserPreviewServiceManager, type BrowserPreviewService } from "$backend/lib/preview";
16
- import { projectContextService } from "$backend/lib/mcp/project-context";
15
+ import { browserMcpControl, browserPreviewServiceManager, type BrowserPreviewService } from "$backend/preview";
16
+ import { projectContextService } from "$backend/mcp/project-context";
17
17
 
18
18
  /**
19
19
  * Get BrowserPreviewService for current MCP execution context
@@ -2,9 +2,9 @@
2
2
  * Page Inspection Handlers
3
3
  */
4
4
 
5
- import { browserPreviewServiceManager, type BrowserPreviewService } from "$backend/lib/preview";
6
- import { browserMcpControl } from "$backend/lib/preview";
7
- import { projectContextService } from "$backend/lib/mcp/project-context";
5
+ import { browserPreviewServiceManager, type BrowserPreviewService } from "$backend/preview";
6
+ import { browserMcpControl } from "$backend/preview";
7
+ import { projectContextService } from "$backend/mcp/project-context";
8
8
  import { getActiveTabSession } from "./browser";
9
9
  import { debug } from "$shared/utils/logger";
10
10
 
@@ -1,5 +1,5 @@
1
1
  import { cors } from '@elysiajs/cors';
2
- import { SERVER_ENV } from '../lib/shared/env';
2
+ import { SERVER_ENV } from '../utils/env';
3
3
 
4
4
  /**
5
5
  * CORS Middleware Configuration
@@ -1,5 +1,5 @@
1
1
  import type { Elysia } from 'elysia';
2
- import { SERVER_ENV } from '../lib/shared/env';
2
+ import { SERVER_ENV } from '../utils/env';
3
3
 
4
4
  /**
5
5
  * Global Error Handler Middleware
@@ -8,7 +8,7 @@ import { BrowserVideoCapture } from './browser-video-capture.js';
8
8
  import { BrowserDialogHandler } from './browser-dialog-handler.js';
9
9
  import { BrowserNativeUIHandler } from './browser-native-ui-handler.js';
10
10
  import { browserMcpControl } from './browser-mcp-control.js';
11
- import { ws } from '$backend/lib/utils/ws';
11
+ import { ws } from '$backend/utils/ws';
12
12
  import { debug } from '$shared/utils/logger';
13
13
  import type {
14
14
  BrowserTab,
@@ -1,6 +1,6 @@
1
1
  import type { Browser, BrowserContext, Page } from 'puppeteer';
2
2
  import { EventEmitter } from 'events';
3
- import { getViewportDimensions } from '$frontend/lib/constants/preview.js';
3
+ import { getViewportDimensions } from '$frontend/utils/preview-constants.js';
4
4
  import type { BrowserTab, BrowserTabInfo, DeviceSize, Rotation } from './types';
5
5
  import { DEFAULT_STREAMING_CONFIG } from './types';
6
6
  import { browserPool } from './browser-pool';
@@ -1,5 +1,5 @@
1
1
  import type { Browser, BrowserContext, Page } from 'puppeteer';
2
- import type { DeviceSize, Rotation } from '$frontend/lib/constants/preview.js';
2
+ import type { DeviceSize, Rotation } from '$frontend/utils/preview-constants.js';
3
3
 
4
4
  // Re-export types from preview config
5
5
  export type { DeviceSize, Rotation };