@myrialabs/clopen 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (456) hide show
  1. package/.env.example +6 -0
  2. package/.github/workflows/release.yml +60 -0
  3. package/.github/workflows/test.yml +40 -0
  4. package/CONTRIBUTING.md +499 -0
  5. package/LICENSE +21 -0
  6. package/README.md +209 -0
  7. package/backend/index.ts +156 -0
  8. package/backend/lib/chat/helpers.ts +42 -0
  9. package/backend/lib/chat/index.ts +2 -0
  10. package/backend/lib/chat/stream-manager.ts +1126 -0
  11. package/backend/lib/database/README.md +77 -0
  12. package/backend/lib/database/index.ts +119 -0
  13. package/backend/lib/database/migrations/001_create_projects_table.ts +31 -0
  14. package/backend/lib/database/migrations/002_create_chat_sessions_table.ts +33 -0
  15. package/backend/lib/database/migrations/003_create_messages_table.ts +32 -0
  16. package/backend/lib/database/migrations/004_create_prompt_templates_table.ts +34 -0
  17. package/backend/lib/database/migrations/005_create_settings_table.ts +24 -0
  18. package/backend/lib/database/migrations/006_add_user_to_messages.ts +58 -0
  19. package/backend/lib/database/migrations/007_create_stream_states_table.ts +41 -0
  20. package/backend/lib/database/migrations/008_create_message_snapshots_table.ts +62 -0
  21. package/backend/lib/database/migrations/009_add_delta_snapshot_fields.ts +41 -0
  22. package/backend/lib/database/migrations/010_add_soft_delete_and_branch_support.ts +70 -0
  23. package/backend/lib/database/migrations/011_git_like_commit_graph.ts +156 -0
  24. package/backend/lib/database/migrations/012_add_file_change_statistics.ts +41 -0
  25. package/backend/lib/database/migrations/013_checkpoint_tree_state.ts +118 -0
  26. package/backend/lib/database/migrations/014_add_engine_to_sessions.ts +18 -0
  27. package/backend/lib/database/migrations/015_add_model_to_sessions.ts +18 -0
  28. package/backend/lib/database/migrations/016_create_user_projects_table.ts +34 -0
  29. package/backend/lib/database/migrations/017_add_current_session_to_user_projects.ts +32 -0
  30. package/backend/lib/database/migrations/018_create_claude_accounts_table.ts +24 -0
  31. package/backend/lib/database/migrations/019_add_claude_account_to_sessions.ts +18 -0
  32. package/backend/lib/database/migrations/020_add_snapshot_tree_hash.ts +32 -0
  33. package/backend/lib/database/migrations/021_drop_prompt_templates_table.ts +33 -0
  34. package/backend/lib/database/migrations/index.ts +154 -0
  35. package/backend/lib/database/queries/checkpoint-queries.ts +87 -0
  36. package/backend/lib/database/queries/engine-queries.ts +75 -0
  37. package/backend/lib/database/queries/index.ts +9 -0
  38. package/backend/lib/database/queries/message-queries.ts +472 -0
  39. package/backend/lib/database/queries/project-queries.ts +117 -0
  40. package/backend/lib/database/queries/session-queries.ts +271 -0
  41. package/backend/lib/database/queries/settings-queries.ts +34 -0
  42. package/backend/lib/database/queries/snapshot-queries.ts +326 -0
  43. package/backend/lib/database/queries/utils-queries.ts +59 -0
  44. package/backend/lib/database/seeders/index.ts +13 -0
  45. package/backend/lib/database/seeders/settings_seeder.ts +84 -0
  46. package/backend/lib/database/utils/connection.ts +174 -0
  47. package/backend/lib/database/utils/index.ts +4 -0
  48. package/backend/lib/database/utils/migration-runner.ts +118 -0
  49. package/backend/lib/database/utils/seeder-runner.ts +121 -0
  50. package/backend/lib/engine/adapters/claude/environment.ts +164 -0
  51. package/backend/lib/engine/adapters/claude/error-handler.ts +60 -0
  52. package/backend/lib/engine/adapters/claude/index.ts +1 -0
  53. package/backend/lib/engine/adapters/claude/path-utils.ts +38 -0
  54. package/backend/lib/engine/adapters/claude/stream.ts +177 -0
  55. package/backend/lib/engine/adapters/opencode/index.ts +2 -0
  56. package/backend/lib/engine/adapters/opencode/message-converter.ts +862 -0
  57. package/backend/lib/engine/adapters/opencode/server.ts +104 -0
  58. package/backend/lib/engine/adapters/opencode/stream.ts +755 -0
  59. package/backend/lib/engine/index.ts +196 -0
  60. package/backend/lib/engine/types.ts +58 -0
  61. package/backend/lib/files/file-operations.ts +478 -0
  62. package/backend/lib/files/file-reading.ts +308 -0
  63. package/backend/lib/files/file-watcher.ts +383 -0
  64. package/backend/lib/files/path-browsing.ts +382 -0
  65. package/backend/lib/git/git-executor.ts +88 -0
  66. package/backend/lib/git/git-parser.ts +411 -0
  67. package/backend/lib/git/git-service.ts +505 -0
  68. package/backend/lib/mcp/README.md +1144 -0
  69. package/backend/lib/mcp/config.ts +316 -0
  70. package/backend/lib/mcp/index.ts +35 -0
  71. package/backend/lib/mcp/project-context.ts +236 -0
  72. package/backend/lib/mcp/servers/browser-automation/actions.ts +156 -0
  73. package/backend/lib/mcp/servers/browser-automation/browser.ts +419 -0
  74. package/backend/lib/mcp/servers/browser-automation/index.ts +791 -0
  75. package/backend/lib/mcp/servers/browser-automation/inspection.ts +501 -0
  76. package/backend/lib/mcp/servers/helper.ts +143 -0
  77. package/backend/lib/mcp/servers/index.ts +45 -0
  78. package/backend/lib/mcp/servers/weather/get-temperature.ts +56 -0
  79. package/backend/lib/mcp/servers/weather/index.ts +31 -0
  80. package/backend/lib/mcp/stdio-server.ts +103 -0
  81. package/backend/lib/mcp/types.ts +65 -0
  82. package/backend/lib/preview/browser/browser-audio-capture.ts +86 -0
  83. package/backend/lib/preview/browser/browser-console-manager.ts +263 -0
  84. package/backend/lib/preview/browser/browser-dialog-handler.ts +222 -0
  85. package/backend/lib/preview/browser/browser-interaction-handler.ts +421 -0
  86. package/backend/lib/preview/browser/browser-mcp-control.ts +415 -0
  87. package/backend/lib/preview/browser/browser-native-ui-handler.ts +512 -0
  88. package/backend/lib/preview/browser/browser-navigation-tracker.ts +104 -0
  89. package/backend/lib/preview/browser/browser-pool.ts +357 -0
  90. package/backend/lib/preview/browser/browser-preview-service.ts +882 -0
  91. package/backend/lib/preview/browser/browser-tab-manager.ts +935 -0
  92. package/backend/lib/preview/browser/browser-video-capture.ts +695 -0
  93. package/backend/lib/preview/browser/scripts/audio-stream.ts +292 -0
  94. package/backend/lib/preview/browser/scripts/cursor-tracking.ts +85 -0
  95. package/backend/lib/preview/browser/scripts/video-stream.ts +438 -0
  96. package/backend/lib/preview/browser/types.ts +359 -0
  97. package/backend/lib/preview/index.ts +24 -0
  98. package/backend/lib/project/index.ts +2 -0
  99. package/backend/lib/project/status-manager.ts +182 -0
  100. package/backend/lib/shared/index.ts +2 -0
  101. package/backend/lib/shared/port-utils.ts +25 -0
  102. package/backend/lib/shared/process-manager.ts +281 -0
  103. package/backend/lib/snapshot/blob-store.ts +227 -0
  104. package/backend/lib/snapshot/gitignore.ts +307 -0
  105. package/backend/lib/snapshot/helpers.ts +397 -0
  106. package/backend/lib/snapshot/snapshot-service.ts +483 -0
  107. package/backend/lib/terminal/helpers.ts +14 -0
  108. package/backend/lib/terminal/index.ts +8 -0
  109. package/backend/lib/terminal/pty-manager.ts +4 -0
  110. package/backend/lib/terminal/pty-session-manager.ts +387 -0
  111. package/backend/lib/terminal/shell-utils.ts +313 -0
  112. package/backend/lib/terminal/stream-manager.ts +293 -0
  113. package/backend/lib/tunnel/global-tunnel-manager.ts +243 -0
  114. package/backend/lib/tunnel/project-tunnel-manager.ts +311 -0
  115. package/backend/lib/user/helpers.ts +87 -0
  116. package/backend/lib/utils/ws.ts +944 -0
  117. package/backend/lib/vite-dev.ts +353 -0
  118. package/backend/middleware/cors.ts +15 -0
  119. package/backend/middleware/error-handler.ts +49 -0
  120. package/backend/middleware/logger.ts +9 -0
  121. package/backend/types/api.ts +24 -0
  122. package/backend/ws/README.md +1505 -0
  123. package/backend/ws/chat/background.ts +198 -0
  124. package/backend/ws/chat/index.ts +21 -0
  125. package/backend/ws/chat/stream.ts +707 -0
  126. package/backend/ws/engine/claude/accounts.ts +401 -0
  127. package/backend/ws/engine/claude/index.ts +13 -0
  128. package/backend/ws/engine/claude/status.ts +43 -0
  129. package/backend/ws/engine/index.ts +14 -0
  130. package/backend/ws/engine/opencode/index.ts +11 -0
  131. package/backend/ws/engine/opencode/status.ts +30 -0
  132. package/backend/ws/engine/utils.ts +36 -0
  133. package/backend/ws/files/index.ts +30 -0
  134. package/backend/ws/files/read.ts +189 -0
  135. package/backend/ws/files/search.ts +453 -0
  136. package/backend/ws/files/watch.ts +124 -0
  137. package/backend/ws/files/write.ts +143 -0
  138. package/backend/ws/git/branch.ts +106 -0
  139. package/backend/ws/git/commit.ts +39 -0
  140. package/backend/ws/git/conflict.ts +68 -0
  141. package/backend/ws/git/diff.ts +69 -0
  142. package/backend/ws/git/index.ts +24 -0
  143. package/backend/ws/git/log.ts +41 -0
  144. package/backend/ws/git/remote.ts +214 -0
  145. package/backend/ws/git/staging.ts +84 -0
  146. package/backend/ws/git/status.ts +90 -0
  147. package/backend/ws/index.ts +69 -0
  148. package/backend/ws/mcp/index.ts +61 -0
  149. package/backend/ws/messages/crud.ts +74 -0
  150. package/backend/ws/messages/index.ts +14 -0
  151. package/backend/ws/preview/browser/cleanup.ts +129 -0
  152. package/backend/ws/preview/browser/console.ts +114 -0
  153. package/backend/ws/preview/browser/interact.ts +513 -0
  154. package/backend/ws/preview/browser/mcp.ts +129 -0
  155. package/backend/ws/preview/browser/native-ui.ts +235 -0
  156. package/backend/ws/preview/browser/stats.ts +55 -0
  157. package/backend/ws/preview/browser/tab-info.ts +126 -0
  158. package/backend/ws/preview/browser/tab.ts +166 -0
  159. package/backend/ws/preview/browser/webcodecs.ts +293 -0
  160. package/backend/ws/preview/index.ts +146 -0
  161. package/backend/ws/projects/crud.ts +113 -0
  162. package/backend/ws/projects/index.ts +25 -0
  163. package/backend/ws/projects/presence.ts +46 -0
  164. package/backend/ws/projects/status.ts +116 -0
  165. package/backend/ws/sessions/crud.ts +327 -0
  166. package/backend/ws/sessions/index.ts +33 -0
  167. package/backend/ws/settings/crud.ts +112 -0
  168. package/backend/ws/settings/index.ts +14 -0
  169. package/backend/ws/snapshot/index.ts +17 -0
  170. package/backend/ws/snapshot/restore.ts +173 -0
  171. package/backend/ws/snapshot/timeline.ts +141 -0
  172. package/backend/ws/system/index.ts +14 -0
  173. package/backend/ws/system/operations.ts +49 -0
  174. package/backend/ws/terminal/index.ts +40 -0
  175. package/backend/ws/terminal/persistence.ts +153 -0
  176. package/backend/ws/terminal/session.ts +382 -0
  177. package/backend/ws/terminal/stream.ts +79 -0
  178. package/backend/ws/tunnel/index.ts +14 -0
  179. package/backend/ws/tunnel/operations.ts +91 -0
  180. package/backend/ws/types.ts +20 -0
  181. package/backend/ws/user/crud.ts +156 -0
  182. package/backend/ws/user/index.ts +14 -0
  183. package/bin/clopen.ts +307 -0
  184. package/bun.lock +1352 -0
  185. package/frontend/App.svelte +34 -0
  186. package/frontend/app.css +313 -0
  187. package/frontend/lib/app-environment.ts +10 -0
  188. package/frontend/lib/components/chat/ChatInterface.svelte +407 -0
  189. package/frontend/lib/components/chat/formatters/ErrorMessage.svelte +57 -0
  190. package/frontend/lib/components/chat/formatters/MessageFormatter.svelte +224 -0
  191. package/frontend/lib/components/chat/formatters/TextMessage.svelte +395 -0
  192. package/frontend/lib/components/chat/formatters/Tools.svelte +70 -0
  193. package/frontend/lib/components/chat/formatters/index.ts +3 -0
  194. package/frontend/lib/components/chat/input/ChatInput.svelte +421 -0
  195. package/frontend/lib/components/chat/input/components/ChatInputActions.svelte +78 -0
  196. package/frontend/lib/components/chat/input/components/DragDropOverlay.svelte +30 -0
  197. package/frontend/lib/components/chat/input/components/EditModeIndicator.svelte +33 -0
  198. package/frontend/lib/components/chat/input/components/EngineModelPicker.svelte +619 -0
  199. package/frontend/lib/components/chat/input/components/FileAttachmentPreview.svelte +48 -0
  200. package/frontend/lib/components/chat/input/components/LoadingIndicator.svelte +31 -0
  201. package/frontend/lib/components/chat/input/composables/use-animations.svelte.ts +201 -0
  202. package/frontend/lib/components/chat/input/composables/use-chat-actions.svelte.ts +148 -0
  203. package/frontend/lib/components/chat/input/composables/use-file-handling.svelte.ts +216 -0
  204. package/frontend/lib/components/chat/input/composables/use-input-state.svelte.ts +357 -0
  205. package/frontend/lib/components/chat/input/composables/use-textarea-resize.svelte.ts +57 -0
  206. package/frontend/lib/components/chat/message/ChatMessage.svelte +478 -0
  207. package/frontend/lib/components/chat/message/ChatMessages.svelte +541 -0
  208. package/frontend/lib/components/chat/message/DateSeparator.svelte +86 -0
  209. package/frontend/lib/components/chat/message/MessageBubble.svelte +86 -0
  210. package/frontend/lib/components/chat/message/MessageHeader.svelte +157 -0
  211. package/frontend/lib/components/chat/modal/DebugModal.svelte +59 -0
  212. package/frontend/lib/components/chat/modal/TokenUsageModal.svelte +124 -0
  213. package/frontend/lib/components/chat/shared/index.ts +2 -0
  214. package/frontend/lib/components/chat/shared/utils.ts +116 -0
  215. package/frontend/lib/components/chat/tools/BashOutputTool.svelte +35 -0
  216. package/frontend/lib/components/chat/tools/BashTool.svelte +46 -0
  217. package/frontend/lib/components/chat/tools/CustomMcpTool.svelte +139 -0
  218. package/frontend/lib/components/chat/tools/EditTool.svelte +48 -0
  219. package/frontend/lib/components/chat/tools/ExitPlanModeTool.svelte +32 -0
  220. package/frontend/lib/components/chat/tools/GlobTool.svelte +51 -0
  221. package/frontend/lib/components/chat/tools/GrepTool.svelte +90 -0
  222. package/frontend/lib/components/chat/tools/KillShellTool.svelte +26 -0
  223. package/frontend/lib/components/chat/tools/ListMcpResourcesTool.svelte +31 -0
  224. package/frontend/lib/components/chat/tools/NotebookEditTool.svelte +38 -0
  225. package/frontend/lib/components/chat/tools/ReadMcpResourceTool.svelte +34 -0
  226. package/frontend/lib/components/chat/tools/ReadTool.svelte +41 -0
  227. package/frontend/lib/components/chat/tools/TaskTool.svelte +64 -0
  228. package/frontend/lib/components/chat/tools/TodoWriteTool.svelte +75 -0
  229. package/frontend/lib/components/chat/tools/WebFetchTool.svelte +35 -0
  230. package/frontend/lib/components/chat/tools/WebSearchTool.svelte +84 -0
  231. package/frontend/lib/components/chat/tools/WriteTool.svelte +33 -0
  232. package/frontend/lib/components/chat/tools/components/CodeBlock.svelte +79 -0
  233. package/frontend/lib/components/chat/tools/components/DiffBlock.svelte +408 -0
  234. package/frontend/lib/components/chat/tools/components/FileHeader.svelte +45 -0
  235. package/frontend/lib/components/chat/tools/components/InfoLine.svelte +19 -0
  236. package/frontend/lib/components/chat/tools/components/StatsBadges.svelte +27 -0
  237. package/frontend/lib/components/chat/tools/components/TerminalCommand.svelte +54 -0
  238. package/frontend/lib/components/chat/tools/components/index.ts +7 -0
  239. package/frontend/lib/components/chat/tools/index.ts +26 -0
  240. package/frontend/lib/components/chat/widgets/FloatingTodoList.svelte +249 -0
  241. package/frontend/lib/components/chat/widgets/TokenUsage.svelte +78 -0
  242. package/frontend/lib/components/checkpoint/TimelineModal.svelte +391 -0
  243. package/frontend/lib/components/checkpoint/timeline/TimelineEdge.svelte +26 -0
  244. package/frontend/lib/components/checkpoint/timeline/TimelineGraph.svelte +87 -0
  245. package/frontend/lib/components/checkpoint/timeline/TimelineNode.svelte +108 -0
  246. package/frontend/lib/components/checkpoint/timeline/TimelineVersionGroup.svelte +59 -0
  247. package/frontend/lib/components/checkpoint/timeline/animation.ts +168 -0
  248. package/frontend/lib/components/checkpoint/timeline/config.ts +44 -0
  249. package/frontend/lib/components/checkpoint/timeline/graph-builder.ts +304 -0
  250. package/frontend/lib/components/checkpoint/timeline/types.ts +65 -0
  251. package/frontend/lib/components/checkpoint/timeline/utils.ts +53 -0
  252. package/frontend/lib/components/common/Alert.svelte +139 -0
  253. package/frontend/lib/components/common/AvatarBubble.svelte +56 -0
  254. package/frontend/lib/components/common/Button.svelte +71 -0
  255. package/frontend/lib/components/common/Card.svelte +102 -0
  256. package/frontend/lib/components/common/Checkbox.svelte +48 -0
  257. package/frontend/lib/components/common/Dialog.svelte +249 -0
  258. package/frontend/lib/components/common/FolderBrowser.svelte +843 -0
  259. package/frontend/lib/components/common/Icon.svelte +58 -0
  260. package/frontend/lib/components/common/Input.svelte +72 -0
  261. package/frontend/lib/components/common/Lightbox.svelte +233 -0
  262. package/frontend/lib/components/common/LoadingScreen.svelte +52 -0
  263. package/frontend/lib/components/common/LoadingSpinner.svelte +48 -0
  264. package/frontend/lib/components/common/Modal.svelte +177 -0
  265. package/frontend/lib/components/common/ModalProvider.svelte +28 -0
  266. package/frontend/lib/components/common/ModelSelector.svelte +110 -0
  267. package/frontend/lib/components/common/MonacoEditor.svelte +569 -0
  268. package/frontend/lib/components/common/NotificationToast.svelte +113 -0
  269. package/frontend/lib/components/common/PageTemplate.svelte +76 -0
  270. package/frontend/lib/components/common/ProjectUserAvatars.svelte +79 -0
  271. package/frontend/lib/components/common/Select.svelte +98 -0
  272. package/frontend/lib/components/common/Textarea.svelte +80 -0
  273. package/frontend/lib/components/common/ThemeToggle.svelte +44 -0
  274. package/frontend/lib/components/common/lucide-icons.ts +1642 -0
  275. package/frontend/lib/components/common/material-icons.ts +1082 -0
  276. package/frontend/lib/components/common/xterm/XTerm.svelte +796 -0
  277. package/frontend/lib/components/common/xterm/index.ts +16 -0
  278. package/frontend/lib/components/common/xterm/terminal-config.ts +68 -0
  279. package/frontend/lib/components/common/xterm/types.ts +31 -0
  280. package/frontend/lib/components/common/xterm/xterm-service.ts +353 -0
  281. package/frontend/lib/components/files/FileNode.svelte +384 -0
  282. package/frontend/lib/components/files/FileTree.svelte +681 -0
  283. package/frontend/lib/components/files/FileViewer.svelte +728 -0
  284. package/frontend/lib/components/files/SearchResults.svelte +303 -0
  285. package/frontend/lib/components/git/BranchManager.svelte +458 -0
  286. package/frontend/lib/components/git/ChangesSection.svelte +107 -0
  287. package/frontend/lib/components/git/CommitForm.svelte +76 -0
  288. package/frontend/lib/components/git/ConflictResolver.svelte +158 -0
  289. package/frontend/lib/components/git/DiffViewer.svelte +364 -0
  290. package/frontend/lib/components/git/FileChangeItem.svelte +97 -0
  291. package/frontend/lib/components/git/GitButton.svelte +33 -0
  292. package/frontend/lib/components/git/GitLog.svelte +361 -0
  293. package/frontend/lib/components/git/GitModal.svelte +80 -0
  294. package/frontend/lib/components/history/HistoryModal.svelte +563 -0
  295. package/frontend/lib/components/history/HistoryView.svelte +615 -0
  296. package/frontend/lib/components/index.ts +34 -0
  297. package/frontend/lib/components/preview/browser/BrowserPreview.svelte +549 -0
  298. package/frontend/lib/components/preview/browser/components/Canvas.svelte +1058 -0
  299. package/frontend/lib/components/preview/browser/components/ConsolePanel.svelte +757 -0
  300. package/frontend/lib/components/preview/browser/components/Container.svelte +450 -0
  301. package/frontend/lib/components/preview/browser/components/ContextMenu.svelte +236 -0
  302. package/frontend/lib/components/preview/browser/components/SelectDropdown.svelte +224 -0
  303. package/frontend/lib/components/preview/browser/components/Toolbar.svelte +339 -0
  304. package/frontend/lib/components/preview/browser/components/VirtualCursor.svelte +36 -0
  305. package/frontend/lib/components/preview/browser/core/cleanup.svelte.ts +155 -0
  306. package/frontend/lib/components/preview/browser/core/coordinator.svelte.ts +837 -0
  307. package/frontend/lib/components/preview/browser/core/interactions.svelte.ts +113 -0
  308. package/frontend/lib/components/preview/browser/core/mcp-handlers.svelte.ts +296 -0
  309. package/frontend/lib/components/preview/browser/core/native-ui-handlers.svelte.ts +391 -0
  310. package/frontend/lib/components/preview/browser/core/stream-handler.svelte.ts +231 -0
  311. package/frontend/lib/components/preview/browser/core/tab-manager.svelte.ts +210 -0
  312. package/frontend/lib/components/preview/browser/core/tab-operations.svelte.ts +239 -0
  313. package/frontend/lib/components/preview/index.ts +2 -0
  314. package/frontend/lib/components/settings/SettingsModal.svelte +235 -0
  315. package/frontend/lib/components/settings/SettingsView.svelte +36 -0
  316. package/frontend/lib/components/settings/appearance/AppearanceSettings.svelte +51 -0
  317. package/frontend/lib/components/settings/appearance/LayoutPresetSettings.svelte +160 -0
  318. package/frontend/lib/components/settings/appearance/LayoutPreview.svelte +76 -0
  319. package/frontend/lib/components/settings/engines/AIEnginesSettings.svelte +917 -0
  320. package/frontend/lib/components/settings/general/AdvancedSettings.svelte +187 -0
  321. package/frontend/lib/components/settings/general/DataManagementSettings.svelte +203 -0
  322. package/frontend/lib/components/settings/general/GeneralSettings.svelte +10 -0
  323. package/frontend/lib/components/settings/model/ModelSettings.svelte +357 -0
  324. package/frontend/lib/components/settings/notifications/NotificationSettings.svelte +205 -0
  325. package/frontend/lib/components/settings/user/UserSettings.svelte +197 -0
  326. package/frontend/lib/components/terminal/Terminal.svelte +368 -0
  327. package/frontend/lib/components/terminal/TerminalTabs.svelte +87 -0
  328. package/frontend/lib/components/terminal/TerminalView.svelte +55 -0
  329. package/frontend/lib/components/tunnel/TunnelActive.svelte +142 -0
  330. package/frontend/lib/components/tunnel/TunnelButton.svelte +54 -0
  331. package/frontend/lib/components/tunnel/TunnelInactive.svelte +284 -0
  332. package/frontend/lib/components/tunnel/TunnelModal.svelte +47 -0
  333. package/frontend/lib/components/tunnel/TunnelQRCode.svelte +49 -0
  334. package/frontend/lib/components/workspace/DesktopNavigator.svelte +382 -0
  335. package/frontend/lib/components/workspace/MobileNavigator.svelte +403 -0
  336. package/frontend/lib/components/workspace/PanelContainer.svelte +100 -0
  337. package/frontend/lib/components/workspace/PanelHeader.svelte +505 -0
  338. package/frontend/lib/components/workspace/ViewMenu.svelte +162 -0
  339. package/frontend/lib/components/workspace/WorkspaceLayout.svelte +169 -0
  340. package/frontend/lib/components/workspace/layout/DesktopLayout.svelte +15 -0
  341. package/frontend/lib/components/workspace/layout/MobileLayout.svelte +17 -0
  342. package/frontend/lib/components/workspace/layout/split-pane/Container.svelte +42 -0
  343. package/frontend/lib/components/workspace/layout/split-pane/Handle.svelte +85 -0
  344. package/frontend/lib/components/workspace/layout/split-pane/Layout.svelte +37 -0
  345. package/frontend/lib/components/workspace/panels/ChatPanel.svelte +274 -0
  346. package/frontend/lib/components/workspace/panels/FilesPanel.svelte +1261 -0
  347. package/frontend/lib/components/workspace/panels/GitPanel.svelte +1560 -0
  348. package/frontend/lib/components/workspace/panels/PreviewPanel.svelte +150 -0
  349. package/frontend/lib/components/workspace/panels/TerminalPanel.svelte +73 -0
  350. package/frontend/lib/constants/preview.ts +45 -0
  351. package/frontend/lib/services/chat/chat.service.ts +704 -0
  352. package/frontend/lib/services/chat/index.ts +7 -0
  353. package/frontend/lib/services/notification/global-stream-monitor.ts +86 -0
  354. package/frontend/lib/services/notification/index.ts +8 -0
  355. package/frontend/lib/services/notification/push.service.ts +144 -0
  356. package/frontend/lib/services/notification/sound.service.ts +127 -0
  357. package/frontend/lib/services/preview/browser/browser-console.service.ts +61 -0
  358. package/frontend/lib/services/preview/browser/browser-webcodecs.service.ts +1499 -0
  359. package/frontend/lib/services/preview/browser/mcp-integration.svelte.ts +67 -0
  360. package/frontend/lib/services/preview/index.ts +23 -0
  361. package/frontend/lib/services/project/index.ts +8 -0
  362. package/frontend/lib/services/project/status.service.ts +159 -0
  363. package/frontend/lib/services/snapshot/snapshot.service.ts +47 -0
  364. package/frontend/lib/services/terminal/background/index.ts +130 -0
  365. package/frontend/lib/services/terminal/background/session-restore.ts +274 -0
  366. package/frontend/lib/services/terminal/background/stream-manager.ts +286 -0
  367. package/frontend/lib/services/terminal/index.ts +14 -0
  368. package/frontend/lib/services/terminal/persistence.service.ts +260 -0
  369. package/frontend/lib/services/terminal/project.service.ts +953 -0
  370. package/frontend/lib/services/terminal/session.service.ts +364 -0
  371. package/frontend/lib/services/terminal/terminal.service.ts +369 -0
  372. package/frontend/lib/stores/core/app.svelte.ts +117 -0
  373. package/frontend/lib/stores/core/files.svelte.ts +73 -0
  374. package/frontend/lib/stores/core/presence.svelte.ts +48 -0
  375. package/frontend/lib/stores/core/projects.svelte.ts +317 -0
  376. package/frontend/lib/stores/core/sessions.svelte.ts +383 -0
  377. package/frontend/lib/stores/features/claude-accounts.svelte.ts +58 -0
  378. package/frontend/lib/stores/features/models.svelte.ts +89 -0
  379. package/frontend/lib/stores/features/settings.svelte.ts +87 -0
  380. package/frontend/lib/stores/features/terminal.svelte.ts +701 -0
  381. package/frontend/lib/stores/features/tunnel.svelte.ts +161 -0
  382. package/frontend/lib/stores/features/user.svelte.ts +96 -0
  383. package/frontend/lib/stores/ui/chat-input.svelte.ts +57 -0
  384. package/frontend/lib/stores/ui/chat-model.svelte.ts +61 -0
  385. package/frontend/lib/stores/ui/dialog.svelte.ts +59 -0
  386. package/frontend/lib/stores/ui/edit-mode.svelte.ts +214 -0
  387. package/frontend/lib/stores/ui/notification.svelte.ts +166 -0
  388. package/frontend/lib/stores/ui/settings-modal.svelte.ts +88 -0
  389. package/frontend/lib/stores/ui/theme.svelte.ts +179 -0
  390. package/frontend/lib/stores/ui/workspace.svelte.ts +754 -0
  391. package/frontend/lib/types/native-ui.ts +73 -0
  392. package/frontend/lib/utils/chat/date-separator.ts +39 -0
  393. package/frontend/lib/utils/chat/message-grouper.ts +219 -0
  394. package/frontend/lib/utils/chat/message-processor.ts +135 -0
  395. package/frontend/lib/utils/chat/tool-handler.ts +161 -0
  396. package/frontend/lib/utils/chat/virtual-scroll.svelte.ts +142 -0
  397. package/frontend/lib/utils/click-outside.ts +20 -0
  398. package/frontend/lib/utils/context-manager.ts +257 -0
  399. package/frontend/lib/utils/file-icon-mappings.ts +769 -0
  400. package/frontend/lib/utils/folder-icon-mappings.ts +1030 -0
  401. package/frontend/lib/utils/git-status.ts +68 -0
  402. package/frontend/lib/utils/platform.ts +113 -0
  403. package/frontend/lib/utils/port-check.ts +65 -0
  404. package/frontend/lib/utils/terminalFormatter.ts +207 -0
  405. package/frontend/lib/utils/theme.ts +6 -0
  406. package/frontend/lib/utils/tree-visualizer.ts +320 -0
  407. package/frontend/lib/utils/ws.ts +44 -0
  408. package/frontend/main.ts +13 -0
  409. package/index.html +70 -0
  410. package/package.json +111 -0
  411. package/scripts/generate-icons.ts +87 -0
  412. package/scripts/pre-publish-check.sh +142 -0
  413. package/scripts/setup-hooks.sh +134 -0
  414. package/scripts/validate-branch-name.sh +47 -0
  415. package/scripts/validate-commit-msg.sh +42 -0
  416. package/shared/constants/engines.ts +134 -0
  417. package/shared/types/database/connection.ts +16 -0
  418. package/shared/types/database/index.ts +6 -0
  419. package/shared/types/database/schema.ts +141 -0
  420. package/shared/types/engine/index.ts +45 -0
  421. package/shared/types/filesystem/index.ts +22 -0
  422. package/shared/types/git.ts +171 -0
  423. package/shared/types/messaging/index.ts +239 -0
  424. package/shared/types/messaging/tool.ts +526 -0
  425. package/shared/types/network/api.ts +18 -0
  426. package/shared/types/network/index.ts +5 -0
  427. package/shared/types/stores/app.ts +23 -0
  428. package/shared/types/stores/dialog.ts +21 -0
  429. package/shared/types/stores/index.ts +3 -0
  430. package/shared/types/stores/settings.ts +15 -0
  431. package/shared/types/terminal/index.ts +44 -0
  432. package/shared/types/ui/components.ts +61 -0
  433. package/shared/types/ui/icons.ts +23 -0
  434. package/shared/types/ui/index.ts +22 -0
  435. package/shared/types/ui/notifications.ts +14 -0
  436. package/shared/types/ui/theme.ts +12 -0
  437. package/shared/types/websocket/index.ts +43 -0
  438. package/shared/types/window.d.ts +13 -0
  439. package/shared/utils/anonymous-user.ts +168 -0
  440. package/shared/utils/async.ts +10 -0
  441. package/shared/utils/diff-calculator.ts +184 -0
  442. package/shared/utils/file-type-detection.ts +166 -0
  443. package/shared/utils/logger.ts +158 -0
  444. package/shared/utils/message-formatter.ts +79 -0
  445. package/shared/utils/path.ts +47 -0
  446. package/shared/utils/ws-client.ts +768 -0
  447. package/shared/utils/ws-server.ts +660 -0
  448. package/static/audio/notification.ogg +0 -0
  449. package/static/favicon.svg +8 -0
  450. package/static/fonts/dm-sans/dm-sans-italic-latin-ext.woff2 +0 -0
  451. package/static/fonts/dm-sans/dm-sans-italic-latin.woff2 +0 -0
  452. package/static/fonts/dm-sans/dm-sans-normal-latin-ext.woff2 +0 -0
  453. package/static/fonts/dm-sans/dm-sans-normal-latin.woff2 +0 -0
  454. package/static/fonts/dm-sans.css +96 -0
  455. package/svelte.config.js +20 -0
  456. package/vite.config.ts +33 -0
@@ -0,0 +1,526 @@
1
+ /**
2
+ * Tool Input Types
3
+ *
4
+ * Defines all tool input interfaces for UI components
5
+ */
6
+
7
+ // Import tool input types statically
8
+ import type {
9
+ BashInput,
10
+ TaskOutputInput,
11
+ FileEditInput,
12
+ ExitPlanModeInput,
13
+ GlobInput,
14
+ GrepInput,
15
+ KillShellInput,
16
+ ListMcpResourcesInput,
17
+ NotebookEditInput,
18
+ ReadMcpResourceInput,
19
+ FileReadInput,
20
+ AgentInput,
21
+ TodoWriteInput,
22
+ WebFetchInput,
23
+ WebSearchInput,
24
+ FileWriteInput
25
+ } from '@anthropic-ai/claude-agent-sdk/sdk-tools';
26
+
27
+ // Tool output types based on Claude Code SDK
28
+
29
+ /**
30
+ * Output from Task tool execution
31
+ */
32
+ export interface TaskOutput {
33
+ /** Final result message from the subagent */
34
+ result: string;
35
+ /** Token usage statistics */
36
+ usage?: {
37
+ /** Number of input tokens consumed */
38
+ input_tokens: number;
39
+ /** Number of output tokens generated */
40
+ output_tokens: number;
41
+ /** Number of cache creation input tokens */
42
+ cache_creation_input_tokens?: number;
43
+ /** Number of cache read input tokens */
44
+ cache_read_input_tokens?: number;
45
+ };
46
+ /** Total cost in USD for this task execution */
47
+ total_cost_usd?: number;
48
+ /** Execution duration in milliseconds */
49
+ duration_ms?: number;
50
+ }
51
+
52
+ /**
53
+ * Output from Bash tool execution
54
+ */
55
+ export interface BashOutput {
56
+ /** Combined stdout and stderr output */
57
+ output: string;
58
+ /** Exit code of the command */
59
+ exitCode: number;
60
+ /** Whether the command was killed due to timeout */
61
+ killed?: boolean;
62
+ /** Shell ID for background processes */
63
+ shellId?: string;
64
+ }
65
+
66
+ /**
67
+ * Output from BashOutput tool for monitoring background processes
68
+ */
69
+ export interface BashOutputToolOutput {
70
+ /** Output from the background process */
71
+ output: string;
72
+ /** Current status of the background process */
73
+ status: 'running' | 'completed' | 'failed';
74
+ /** Exit code if the process has completed */
75
+ exitCode?: number;
76
+ }
77
+
78
+ /**
79
+ * Output from Edit tool for file modifications
80
+ */
81
+ export interface EditOutput {
82
+ /** Confirmation message about the edit operation */
83
+ message: string;
84
+ /** Number of replacements made */
85
+ replacements: number;
86
+ /** Path to the edited file */
87
+ file_path: string;
88
+ }
89
+
90
+ /**
91
+ * Output when reading a text file
92
+ */
93
+ export interface TextFileOutput {
94
+ /** Text content of the file */
95
+ content: string;
96
+ /** Total number of lines in the file */
97
+ total_lines: number;
98
+ /** Number of lines returned (may be limited by offset/limit) */
99
+ lines_returned: number;
100
+ }
101
+
102
+ /**
103
+ * Output when reading an image file
104
+ */
105
+ export interface ImageFileOutput {
106
+ /** Base64-encoded image data */
107
+ image: string;
108
+ /** MIME type of the image */
109
+ mime_type: string;
110
+ /** File size in bytes */
111
+ file_size: number;
112
+ }
113
+
114
+ /**
115
+ * Output when reading a PDF file
116
+ */
117
+ export interface PDFFileOutput {
118
+ /** Array of pages with text and images */
119
+ pages: Array<{
120
+ /** Page number (1-indexed) */
121
+ page_number: number;
122
+ /** Extracted text from the page */
123
+ text?: string;
124
+ /** Images found on the page */
125
+ images?: Array<{
126
+ /** Base64-encoded image data */
127
+ image: string;
128
+ /** MIME type of the image */
129
+ mime_type: string;
130
+ }>;
131
+ }>;
132
+ /** Total number of pages in the PDF */
133
+ total_pages: number;
134
+ }
135
+
136
+ /**
137
+ * Output when reading a Jupyter notebook file
138
+ */
139
+ export interface NotebookFileOutput {
140
+ /** Array of notebook cells */
141
+ cells: Array<{
142
+ /** Type of the cell */
143
+ cell_type: 'code' | 'markdown';
144
+ /** Source code or markdown content */
145
+ source: string;
146
+ /** Cell outputs (for code cells) */
147
+ outputs?: any[];
148
+ /** Execution count (for code cells) */
149
+ execution_count?: number;
150
+ }>;
151
+ /** Notebook metadata */
152
+ metadata?: Record<string, any>;
153
+ }
154
+
155
+ /**
156
+ * Union type for all possible Read tool outputs
157
+ */
158
+ export type ReadOutput =
159
+ | TextFileOutput
160
+ | ImageFileOutput
161
+ | PDFFileOutput
162
+ | NotebookFileOutput;
163
+
164
+ /**
165
+ * Output from Glob tool for file pattern matching
166
+ */
167
+ export interface GlobOutput {
168
+ /** Array of file paths matching the pattern */
169
+ matches: string[];
170
+ /** Number of matches found */
171
+ count: number;
172
+ /** Search directory used */
173
+ search_path: string;
174
+ }
175
+
176
+ /**
177
+ * Output from Grep tool for content searching (content mode)
178
+ */
179
+ export interface GrepContentOutput {
180
+ /** Matching lines with context */
181
+ matches: Array<{
182
+ /** File path where the match was found */
183
+ file: string;
184
+ /** Line number of the match (if available) */
185
+ line_number?: number;
186
+ /** Content of the matching line */
187
+ line: string;
188
+ /** Lines before the match (if -B or -C was used) */
189
+ before_context?: string[];
190
+ /** Lines after the match (if -A or -C was used) */
191
+ after_context?: string[];
192
+ }>;
193
+ /** Total number of matches found */
194
+ total_matches: number;
195
+ }
196
+
197
+ /**
198
+ * Output from Grep tool for files mode
199
+ */
200
+ export interface GrepFilesOutput {
201
+ /** Files containing matches */
202
+ files: string[];
203
+ /** Number of files with matches */
204
+ count: number;
205
+ }
206
+
207
+ /**
208
+ * Output from Grep tool for count mode
209
+ */
210
+ export interface GrepCountOutput {
211
+ /** Match counts per file */
212
+ counts: Array<{
213
+ /** File path */
214
+ file: string;
215
+ /** Number of matches in this file */
216
+ count: number;
217
+ }>;
218
+ /** Total matches across all files */
219
+ total: number;
220
+ }
221
+
222
+ /**
223
+ * Union type for all possible Grep outputs based on output_mode
224
+ */
225
+ export type GrepOutput =
226
+ | GrepContentOutput
227
+ | GrepFilesOutput
228
+ | GrepCountOutput;
229
+
230
+ /**
231
+ * Output from WebFetch tool for web content retrieval
232
+ */
233
+ export interface WebFetchOutput {
234
+ /** AI model's response to the prompt */
235
+ response: string;
236
+ /** URL that was fetched */
237
+ url: string;
238
+ /** Final URL after redirects */
239
+ final_url?: string;
240
+ /** HTTP status code */
241
+ status_code?: number;
242
+ }
243
+
244
+ /**
245
+ * Output from WebSearch tool for web searching
246
+ */
247
+ export interface WebSearchOutput {
248
+ /** Array of search results */
249
+ results: Array<{
250
+ /** Title of the search result */
251
+ title: string;
252
+ /** URL of the search result */
253
+ url: string;
254
+ /** Snippet/description of the search result */
255
+ snippet: string;
256
+ }>;
257
+ /** Total number of results found */
258
+ total_results: number;
259
+ }
260
+
261
+ /**
262
+ * Output from Write tool for file creation
263
+ */
264
+ export interface WriteOutput {
265
+ /** Confirmation message about the write operation */
266
+ message: string;
267
+ /** Path to the written file */
268
+ file_path: string;
269
+ /** Number of bytes written */
270
+ bytes_written: number;
271
+ }
272
+
273
+ /**
274
+ * Output from NotebookEdit tool for Jupyter notebook modifications
275
+ */
276
+ export interface NotebookEditOutput {
277
+ /** Confirmation message about the notebook edit */
278
+ message: string;
279
+ /** Type of edit performed */
280
+ edit_type: 'replaced' | 'inserted' | 'deleted';
281
+ /** ID of the edited cell (if applicable) */
282
+ cell_id?: string;
283
+ /** Total cells in notebook after edit */
284
+ total_cells: number;
285
+ }
286
+
287
+ /**
288
+ * Output from TodoWrite tool for task management
289
+ */
290
+ export interface TodoWriteOutput {
291
+ /** Confirmation message about the todo operation */
292
+ message: string;
293
+ /** Current todo statistics */
294
+ stats: {
295
+ /** Total number of todos */
296
+ total: number;
297
+ /** Number of pending todos */
298
+ pending: number;
299
+ /** Number of in-progress todos */
300
+ in_progress: number;
301
+ /** Number of completed todos */
302
+ completed: number;
303
+ };
304
+ }
305
+
306
+ /**
307
+ * Output from ExitPlanMode tool
308
+ */
309
+ export interface ExitPlanModeOutput {
310
+ /** Confirmation message about exiting plan mode */
311
+ message: string;
312
+ }
313
+
314
+ /**
315
+ * Output from KillShell tool for terminating background processes
316
+ */
317
+ export interface KillShellOutput {
318
+ /** Confirmation message about killing the shell */
319
+ message: string;
320
+ /** ID of the killed shell */
321
+ shell_id: string;
322
+ }
323
+
324
+ /**
325
+ * Output from ListMcpResources tool for MCP resource listing
326
+ */
327
+ export interface ListMcpResourcesOutput {
328
+ /** Array of available MCP resources */
329
+ resources: Array<{
330
+ /** URI of the resource */
331
+ uri: string;
332
+ /** Name of the resource */
333
+ name: string;
334
+ /** Description of the resource */
335
+ description?: string;
336
+ /** MIME type of the resource */
337
+ mimeType?: string;
338
+ /** Server that provides this resource */
339
+ server: string;
340
+ }>;
341
+ /** Total number of resources */
342
+ total: number;
343
+ }
344
+
345
+ /**
346
+ * Output from ReadMcpResource tool for MCP resource reading
347
+ */
348
+ export interface ReadMcpResourceOutput {
349
+ /** Resource contents (can be multiple if resource has multiple parts) */
350
+ contents: Array<{
351
+ /** URI of the resource */
352
+ uri: string;
353
+ /** MIME type of the resource */
354
+ mimeType?: string;
355
+ /** Text content (for text resources) */
356
+ text?: string;
357
+ /** Base64-encoded blob (for binary resources) */
358
+ blob?: string;
359
+ }>;
360
+ /** Server that provided the resource */
361
+ server: string;
362
+ }
363
+
364
+ /**
365
+ * Union type for all possible tool outputs
366
+ */
367
+ export type ToolOutput =
368
+ | TaskOutput
369
+ | BashOutput
370
+ | BashOutputToolOutput
371
+ | EditOutput
372
+ | ReadOutput
373
+ | GlobOutput
374
+ | GrepOutput
375
+ | WebFetchOutput
376
+ | WebSearchOutput
377
+ | WriteOutput
378
+ | NotebookEditOutput
379
+ | TodoWriteOutput
380
+ | ExitPlanModeOutput
381
+ | KillShellOutput
382
+ | ListMcpResourcesOutput
383
+ | ReadMcpResourceOutput;
384
+
385
+ // Tool result type for embedding in tool_use
386
+ export interface ToolResult {
387
+ type: 'tool_result';
388
+ tool_use_id: string;
389
+ content: string;
390
+ }
391
+
392
+ // Tool input types for UI components
393
+ export interface BashToolInput {
394
+ type: 'tool_use';
395
+ id: string;
396
+ name: 'Bash';
397
+ input: BashInput;
398
+ $result?: ToolResult;
399
+ }
400
+
401
+ export interface BashOutputToolInput {
402
+ type: 'tool_use';
403
+ id: string;
404
+ name: 'TaskOutput';
405
+ input: TaskOutputInput;
406
+ $result?: ToolResult;
407
+ }
408
+
409
+ export interface EditToolInput {
410
+ type: 'tool_use';
411
+ id: string;
412
+ name: 'Edit';
413
+ input: FileEditInput;
414
+ $result?: ToolResult;
415
+ }
416
+
417
+ export interface ExitPlanModeToolInput {
418
+ type: 'tool_use';
419
+ id: string;
420
+ name: 'ExitPlanMode';
421
+ input: ExitPlanModeInput;
422
+ $result?: ToolResult;
423
+ }
424
+
425
+ export interface GlobToolInput {
426
+ type: 'tool_use';
427
+ id: string;
428
+ name: 'Glob';
429
+ input: GlobInput;
430
+ $result?: ToolResult;
431
+ }
432
+
433
+ export interface GrepToolInput {
434
+ type: 'tool_use';
435
+ id: string;
436
+ name: 'Grep';
437
+ input: GrepInput;
438
+ $result?: ToolResult;
439
+ }
440
+
441
+ export interface KillShellToolInput {
442
+ type: 'tool_use';
443
+ id: string;
444
+ name: 'KillShell';
445
+ input: KillShellInput;
446
+ $result?: ToolResult;
447
+ }
448
+
449
+ export interface ListMcpResourcesToolInput {
450
+ type: 'tool_use';
451
+ id: string;
452
+ name: 'ListMcpResources';
453
+ input: ListMcpResourcesInput;
454
+ $result?: ToolResult;
455
+ }
456
+
457
+ export interface NotebookEditToolInput {
458
+ type: 'tool_use';
459
+ id: string;
460
+ name: 'NotebookEdit';
461
+ input: NotebookEditInput;
462
+ $result?: ToolResult;
463
+ }
464
+
465
+ export interface ReadMcpResourceToolInput {
466
+ type: 'tool_use';
467
+ id: string;
468
+ name: 'ReadMcpResource';
469
+ input: ReadMcpResourceInput;
470
+ $result?: ToolResult;
471
+ }
472
+
473
+ export interface ReadToolInput {
474
+ type: 'tool_use';
475
+ id: string;
476
+ name: 'Read';
477
+ input: FileReadInput;
478
+ $result?: ToolResult;
479
+ }
480
+
481
+ export interface TaskToolInput {
482
+ type: 'tool_use';
483
+ id: string;
484
+ name: 'Task';
485
+ input: AgentInput;
486
+ $result?: ToolResult;
487
+ }
488
+
489
+ export interface TodoWriteToolInput {
490
+ type: 'tool_use';
491
+ id: string;
492
+ name: 'TodoWrite';
493
+ input: TodoWriteInput;
494
+ $result?: ToolResult;
495
+ }
496
+
497
+ export interface WebFetchToolInput {
498
+ type: 'tool_use';
499
+ id: string;
500
+ name: 'WebFetch';
501
+ input: WebFetchInput;
502
+ $result?: ToolResult;
503
+ }
504
+
505
+ export interface WebSearchToolInput {
506
+ type: 'tool_use';
507
+ id: string;
508
+ name: 'WebSearch';
509
+ input: WebSearchInput;
510
+ $result?: ToolResult;
511
+ }
512
+
513
+ export interface WriteToolInput {
514
+ type: 'tool_use';
515
+ id: string;
516
+ name: 'Write';
517
+ input: FileWriteInput;
518
+ $result?: ToolResult;
519
+ }
520
+
521
+ export type ToolInput =
522
+ | BashToolInput | BashOutputToolInput | EditToolInput | ExitPlanModeToolInput
523
+ | GlobToolInput | GrepToolInput | KillShellToolInput | ListMcpResourcesToolInput
524
+ | NotebookEditToolInput
525
+ | ReadMcpResourceToolInput | ReadToolInput | TaskToolInput | TodoWriteToolInput
526
+ | WebFetchToolInput | WebSearchToolInput | WriteToolInput;
@@ -0,0 +1,18 @@
1
+ /**
2
+ * API response and request types
3
+ */
4
+
5
+ export interface APIResponse<T = unknown> {
6
+ success: boolean;
7
+ data?: T;
8
+ error?: string;
9
+ message?: string;
10
+ }
11
+
12
+ export interface PaginatedResponse<T> {
13
+ data: T[];
14
+ total: number;
15
+ page: number;
16
+ per_page: number;
17
+ total_pages: number;
18
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Network types barrel export
3
+ */
4
+
5
+ export * from './api';
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Application state types
3
+ */
4
+
5
+ import type { Project, ChatSession } from '../database/schema';
6
+ import type { FileNode } from '../filesystem';
7
+ import type { ToastNotification } from '../ui/notifications';
8
+
9
+ export interface PageInfo {
10
+ title: string;
11
+ description: string;
12
+ actions?: import('svelte').Snippet;
13
+ }
14
+
15
+ export interface AppState {
16
+ currentProject: Project | null;
17
+ currentSession: ChatSession | null;
18
+ currentView: string;
19
+ files: FileNode[];
20
+ isLoading: boolean;
21
+ notifications: ToastNotification[];
22
+ pageInfo: PageInfo;
23
+ }
@@ -0,0 +1,21 @@
1
+ import type { BaseDialogOptions } from '../ui';
2
+
3
+ export interface AlertOptions extends BaseDialogOptions {}
4
+
5
+ export interface ConfirmOptions extends BaseDialogOptions {
6
+ confirmText?: string;
7
+ cancelText?: string;
8
+ }
9
+
10
+ export interface DialogState {
11
+ alert: {
12
+ isOpen: boolean;
13
+ options: AlertOptions;
14
+ resolve?: () => void;
15
+ };
16
+ confirm: {
17
+ isOpen: boolean;
18
+ options: ConfirmOptions;
19
+ resolve?: (value: boolean) => void;
20
+ };
21
+ }
@@ -0,0 +1,3 @@
1
+ export * from './settings';
2
+ export * from './dialog';
3
+ export * from './app';
@@ -0,0 +1,15 @@
1
+ import type { EngineType } from '$shared/types/engine';
2
+
3
+ export interface AppSettings {
4
+ selectedEngine: EngineType;
5
+ selectedModel: string;
6
+ /** Remembers the last selected model per engine so switching engines preserves choices */
7
+ engineModelMemory: Record<string, string>;
8
+ autoSave: boolean;
9
+ theme: 'light' | 'dark' | 'system';
10
+ soundNotifications: boolean;
11
+ pushNotifications: boolean;
12
+ layoutPresetVisibility: Record<string, boolean>;
13
+ /** Restrict folder browser to only these base paths. Empty = no restriction. */
14
+ allowedBasePaths: string[];
15
+ }
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Terminal and command execution types
3
+ */
4
+
5
+ export interface TerminalLine {
6
+ id?: string;
7
+ content: string;
8
+ type: 'input' | 'output' | 'error' | 'warning' | 'success' | 'info' | 'exit' | 'prompt-trigger' | 'clear-screen' | 'system';
9
+ timestamp: Date;
10
+ directory?: string; // Directory context when this line was created (for input commands)
11
+ }
12
+
13
+ export interface TerminalCommand {
14
+ id: string;
15
+ command: string;
16
+ description?: string;
17
+ timestamp: Date;
18
+ duration?: number;
19
+ exitCode?: number;
20
+ directory?: string;
21
+ output?: string;
22
+ }
23
+
24
+ export interface TerminalBuffer {
25
+ lines: string[];
26
+ cursorY: number;
27
+ cursorX: number;
28
+ viewportY: number;
29
+ }
30
+
31
+ export interface TerminalSession {
32
+ id: string;
33
+ name: string;
34
+ directory: string;
35
+ lines: TerminalLine[];
36
+ commandHistory: string[];
37
+ isActive: boolean;
38
+ createdAt: Date;
39
+ lastUsedAt: Date;
40
+ shellType?: string; // Terminal type: PowerShell, Bash, etc.
41
+ terminalBuffer?: TerminalBuffer; // Store terminal buffer state
42
+ projectId?: string; // Associated project ID for multi-project support
43
+ projectPath?: string; // Associated project path
44
+ }