claude-ws 0.3.100 → 0.3.101

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 (365) hide show
  1. package/README.md +99 -16
  2. package/locales/de.json +9 -1
  3. package/locales/en.json +12 -1
  4. package/locales/es.json +9 -1
  5. package/locales/fr.json +9 -1
  6. package/locales/ja.json +9 -1
  7. package/locales/ko.json +9 -1
  8. package/locales/vi.json +9 -1
  9. package/locales/zh.json +9 -1
  10. package/package.json +14 -5
  11. package/public/desktop-review-0.png +0 -0
  12. package/public/desktop-review-1.png +0 -0
  13. package/public/desktop-review-3.png +0 -0
  14. package/public/desktop-review-4.png +0 -0
  15. package/public/docs/swagger/swagger-core.yaml +3629 -0
  16. package/public/mobile-review-0.png +0 -0
  17. package/server.ts +149 -5
  18. package/src/app/[locale]/page.tsx +25 -158
  19. package/src/app/api/agent-factory/compare/route.ts +8 -95
  20. package/src/app/api/agent-factory/dependencies/[id]/install/route.ts +6 -44
  21. package/src/app/api/agent-factory/dependencies/route.ts +11 -62
  22. package/src/app/api/agent-factory/discover/route.ts +5 -310
  23. package/src/app/api/agent-factory/file-content/route.ts +8 -95
  24. package/src/app/api/agent-factory/files/route.ts +8 -74
  25. package/src/app/api/agent-factory/import/route.ts +13 -64
  26. package/src/app/api/agent-factory/plugins/[id]/dependencies/route.ts +22 -246
  27. package/src/app/api/agent-factory/plugins/[id]/files/[...path]/route.ts +12 -122
  28. package/src/app/api/agent-factory/plugins/[id]/files/route.ts +10 -101
  29. package/src/app/api/agent-factory/plugins/[id]/files/save/route.ts +10 -55
  30. package/src/app/api/agent-factory/plugins/[id]/route.ts +12 -90
  31. package/src/app/api/agent-factory/plugins/route.ts +15 -104
  32. package/src/app/api/agent-factory/projects/[projectId]/components/route.ts +12 -56
  33. package/src/app/api/agent-factory/projects/[projectId]/installed/route.ts +7 -106
  34. package/src/app/api/agent-factory/projects/[projectId]/plugins/route.ts +17 -102
  35. package/src/app/api/agent-factory/projects/[projectId]/sync/route.ts +13 -326
  36. package/src/app/api/agent-factory/projects/[projectId]/uninstall/route.ts +9 -174
  37. package/src/app/api/agent-factory/upload/route.ts +48 -620
  38. package/src/app/api/attempts/[id]/answer/route.ts +10 -13
  39. package/src/app/api/attempts/[id]/route.ts +19 -67
  40. package/src/app/api/attempts/[id]/status/route.ts +7 -9
  41. package/src/app/api/attempts/[id]/workflow/route.ts +27 -44
  42. package/src/app/api/attempts/route.ts +24 -427
  43. package/src/app/api/auth/verify/route.ts +7 -14
  44. package/src/app/api/checkpoints/backfill/route.ts +6 -74
  45. package/src/app/api/checkpoints/fork/route.ts +76 -0
  46. package/src/app/api/checkpoints/rewind/route.ts +47 -143
  47. package/src/app/api/checkpoints/route.ts +5 -37
  48. package/src/app/api/commands/[name]/route.ts +19 -101
  49. package/src/app/api/commands/route.ts +6 -197
  50. package/src/app/api/files/content/route.ts +33 -219
  51. package/src/app/api/files/metadata/route.ts +18 -34
  52. package/src/app/api/files/operations/route.ts +55 -344
  53. package/src/app/api/files/route.ts +10 -157
  54. package/src/app/api/files/search/route.ts +10 -101
  55. package/src/app/api/files/upload/route.ts +27 -250
  56. package/src/app/api/filesystem/route.ts +11 -0
  57. package/src/app/api/git/generate-message/route.ts +8 -42
  58. package/src/app/api/models/route.ts +12 -6
  59. package/src/app/api/projects/[id]/route.ts +25 -103
  60. package/src/app/api/projects/[id]/settings/route.ts +19 -111
  61. package/src/app/api/projects/route.ts +11 -74
  62. package/src/app/api/proxy/anthropic/[[...path]]/route.ts +5 -3
  63. package/src/app/api/search/chat-history/route.ts +15 -171
  64. package/src/app/api/search/content/route.ts +19 -206
  65. package/src/app/api/search/files/route.ts +9 -108
  66. package/src/app/api/settings/api-access-key/route.ts +32 -3
  67. package/src/app/api/shells/route.ts +6 -20
  68. package/src/app/api/tasks/[id]/attempts/route.ts +6 -9
  69. package/src/app/api/tasks/[id]/compact/route.ts +15 -20
  70. package/src/app/api/tasks/[id]/conversation/route.ts +5 -147
  71. package/src/app/api/tasks/[id]/pending-question/route.ts +32 -0
  72. package/src/app/api/tasks/[id]/route.ts +30 -45
  73. package/src/app/api/tasks/[id]/running-attempt/route.ts +7 -67
  74. package/src/app/api/tasks/[id]/stats/route.ts +7 -82
  75. package/src/app/api/tasks/reorder/route.ts +10 -27
  76. package/src/app/api/tasks/route.ts +16 -55
  77. package/src/app/api/uploads/[fileId]/route.ts +26 -77
  78. package/src/app/api/uploads/route.ts +42 -62
  79. package/src/components/access-anywhere/use-ctunnel-registration-state.ts +153 -0
  80. package/src/components/access-anywhere/wizard-step-ctunnel-input-and-confirm-steps.tsx +146 -0
  81. package/src/components/access-anywhere/wizard-step-ctunnel-labels-builder.ts +39 -0
  82. package/src/components/access-anywhere/wizard-step-ctunnel-step-views.tsx +89 -0
  83. package/src/components/access-anywhere/wizard-step-ctunnel.tsx +74 -364
  84. package/src/components/agent-factory/discovery-comparison-utils.ts +55 -0
  85. package/src/components/agent-factory/discovery-dialog-scanned-results-panel.tsx +84 -0
  86. package/src/components/agent-factory/discovery-dialog-use-import-actions.ts +113 -0
  87. package/src/components/agent-factory/discovery-dialog-use-scan-state.ts +101 -0
  88. package/src/components/agent-factory/discovery-dialog.tsx +53 -604
  89. package/src/components/agent-factory/discovery-tree-node-status-badge.tsx +38 -0
  90. package/src/components/agent-factory/discovery-tree-view.tsx +181 -0
  91. package/src/components/agent-factory/plugin-dependencies-library-section.tsx +57 -0
  92. package/src/components/agent-factory/plugin-dependencies-plugin-list-section.tsx +98 -0
  93. package/src/components/agent-factory/plugin-detail-dependencies-tab.tsx +150 -0
  94. package/src/components/agent-factory/plugin-detail-dialog.tsx +71 -920
  95. package/src/components/agent-factory/plugin-detail-file-content-modal.tsx +186 -0
  96. package/src/components/agent-factory/plugin-detail-file-icon-color-utils.ts +46 -0
  97. package/src/components/agent-factory/plugin-detail-files-tab.tsx +200 -0
  98. package/src/components/agent-factory/plugin-detail-info-tab.tsx +119 -0
  99. package/src/components/agent-factory/plugin-detail-install-scripts-panel.tsx +126 -0
  100. package/src/components/agent-factory/plugin-form-dialog.tsx +18 -84
  101. package/src/components/agent-factory/plugin-list-card.tsx +68 -0
  102. package/src/components/agent-factory/plugin-list-filter-bar.tsx +65 -0
  103. package/src/components/agent-factory/plugin-list.tsx +26 -123
  104. package/src/components/agent-factory/plugin-type-utils.tsx +47 -0
  105. package/src/components/agent-factory/upload-dialog-archive-info-panel.tsx +31 -0
  106. package/src/components/agent-factory/upload-dialog-drop-zone.tsx +131 -0
  107. package/src/components/agent-factory/upload-dialog-preview-items-list.tsx +60 -0
  108. package/src/components/agent-factory/upload-dialog.tsx +40 -338
  109. package/src/components/auth/agent-provider-custom-key-form.tsx +135 -0
  110. package/src/components/auth/agent-provider-custom-key-model-tier-inputs.tsx +71 -0
  111. package/src/components/auth/agent-provider-dialog.tsx +4 -760
  112. package/src/components/auth/agent-provider-instruction-views.tsx +126 -0
  113. package/src/components/auth/agent-provider-option-card.tsx +64 -0
  114. package/src/components/auth/agent-provider-option-selection-view.tsx +116 -0
  115. package/src/components/auth/agent-provider-setup-form.tsx +179 -0
  116. package/src/components/auth/api-key-dialog.tsx +19 -304
  117. package/src/components/auth/api-key-fetch-interceptor-provider.tsx +134 -0
  118. package/src/components/auth/api-key-localstorage-and-server-verify-utils.ts +97 -0
  119. package/src/components/auth/api-key-required-check-hook.ts +64 -0
  120. package/src/components/claude/agent-spawned-card.tsx +166 -0
  121. package/src/components/claude/diff-view-lcs-line-diff-algorithm.ts +98 -0
  122. package/src/components/claude/diff-view-syntax-highlight-engine.ts +126 -0
  123. package/src/components/claude/diff-view.tsx +3 -227
  124. package/src/components/claude/mermaid-diagram.tsx +55 -0
  125. package/src/components/claude/message-block-markdown-content-renderer.tsx +115 -0
  126. package/src/components/claude/message-block.tsx +5 -111
  127. package/src/components/claude/response-renderer.tsx +3 -0
  128. package/src/components/claude/tool-use-block-bash-command-renderer.tsx +78 -0
  129. package/src/components/claude/tool-use-block-edit-diff-renderer.tsx +24 -0
  130. package/src/components/claude/tool-use-block-icon-verb-display-utils.ts +129 -0
  131. package/src/components/claude/tool-use-block-todo-list-renderer.tsx +57 -0
  132. package/src/components/claude/tool-use-block.tsx +31 -274
  133. package/src/components/editor/code-editor-definition-handler.ts +118 -0
  134. package/src/components/editor/code-editor-extensions-builder.ts +176 -0
  135. package/src/components/editor/code-editor-inline-edit-overlay.tsx +153 -0
  136. package/src/components/editor/code-editor-with-inline-edit.tsx +59 -333
  137. package/src/components/editor/diff-algorithm.ts +140 -0
  138. package/src/components/editor/diff-panel-local.tsx +84 -0
  139. package/src/components/editor/diff-panel-remote.tsx +137 -0
  140. package/src/components/editor/extensions/goto-definition-symbol-extractor.ts +98 -0
  141. package/src/components/editor/extensions/goto-definition-types-and-state.ts +70 -0
  142. package/src/components/editor/extensions/goto-definition.ts +30 -238
  143. package/src/components/editor/extensions/inline-edit-diff-decoration-builder.ts +142 -0
  144. package/src/components/editor/extensions/inline-edit-types.ts +39 -0
  145. package/src/components/editor/extensions/inline-edit.ts +21 -231
  146. package/src/components/editor/file-diff-resolver-modal.tsx +15 -414
  147. package/src/components/editor/markdown-file-viewer.tsx +4 -0
  148. package/src/components/header.tsx +43 -28
  149. package/src/components/kanban/board-collision-detector.ts +47 -0
  150. package/src/components/kanban/board-column-visibility-filter.tsx +48 -0
  151. package/src/components/kanban/board-drag-overlay.tsx +27 -0
  152. package/src/components/kanban/board-mobile-column-swipe-view.tsx +268 -0
  153. package/src/components/kanban/board-mobile-status-tabs.tsx +60 -0
  154. package/src/components/kanban/board.tsx +51 -612
  155. package/src/components/kanban/task-card-context-menu.tsx +96 -0
  156. package/src/components/kanban/task-card.tsx +3 -0
  157. package/src/components/kanban/use-board-drag-and-drop-handlers.ts +180 -0
  158. package/src/components/kanban/use-board-mobile-swipe-gesture.ts +138 -0
  159. package/src/components/project-settings/component-selector-plugin-list-item.tsx +92 -0
  160. package/src/components/project-settings/component-selector.tsx +42 -160
  161. package/src/components/project-settings/plugin-upload-dialog-use-confirm-import.ts +103 -0
  162. package/src/components/project-settings/plugin-upload-dialog.tsx +38 -398
  163. package/src/components/project-settings/plugin-upload-installation-options-panel.tsx +40 -0
  164. package/src/components/project-settings/project-settings-dialog.tsx +35 -181
  165. package/src/components/project-settings/project-settings-install-result-panel.tsx +74 -0
  166. package/src/components/settings/folder-browser-create-and-rename-folder-dialogs.tsx +167 -0
  167. package/src/components/settings/folder-browser-dialog.tsx +57 -339
  168. package/src/components/settings/folder-browser-directory-listing.tsx +77 -0
  169. package/src/components/settings/settings-page-agent-provider-and-api-key-sections.tsx +95 -0
  170. package/src/components/settings/settings-page.tsx +31 -143
  171. package/src/components/settings/setup-dialog-create-new-project-tab.tsx +107 -0
  172. package/src/components/settings/setup-dialog-open-existing-project-tab.tsx +89 -0
  173. package/src/components/settings/setup-dialog.tsx +56 -235
  174. package/src/components/sidebar/file-browser/file-create-buttons.tsx +22 -140
  175. package/src/components/sidebar/file-browser/file-create-name-dialog.tsx +156 -0
  176. package/src/components/sidebar/file-browser/file-tab-content.tsx +77 -812
  177. package/src/components/sidebar/file-browser/file-tab-markdown-view.tsx +81 -0
  178. package/src/components/sidebar/file-browser/file-tab-search-bar.tsx +96 -0
  179. package/src/components/sidebar/file-browser/file-tab-toolbar-attach-to-chat-button.tsx +83 -0
  180. package/src/components/sidebar/file-browser/file-tab-toolbar.tsx +150 -0
  181. package/src/components/sidebar/file-browser/file-tree-context-menu-dialogs.tsx +154 -0
  182. package/src/components/sidebar/file-browser/file-tree-context-menu.tsx +35 -309
  183. package/src/components/sidebar/file-browser/file-tree-item-inline-rename.tsx +111 -0
  184. package/src/components/sidebar/file-browser/file-tree-item.tsx +35 -151
  185. package/src/components/sidebar/file-browser/file-tree.tsx +5 -22
  186. package/src/components/sidebar/file-browser/file-upload-dialog.tsx +47 -296
  187. package/src/components/sidebar/file-browser/file-upload-drop-zone.tsx +75 -0
  188. package/src/components/sidebar/file-browser/file-upload-pending-files-list.tsx +83 -0
  189. package/src/components/sidebar/file-browser/unified-search-results-view.tsx +190 -0
  190. package/src/components/sidebar/file-browser/unified-search.tsx +20 -232
  191. package/src/components/sidebar/file-browser/use-file-tab-attach-to-chat.ts +82 -0
  192. package/src/components/sidebar/file-browser/use-file-tab-content-loader.ts +64 -0
  193. package/src/components/sidebar/file-browser/use-file-tab-save-copy-download-operations.ts +112 -0
  194. package/src/components/sidebar/file-browser/use-file-tab-search.ts +124 -0
  195. package/src/components/sidebar/file-browser/use-file-tab-state.ts +168 -0
  196. package/src/components/sidebar/file-browser/use-file-tab-undo-redo-history.ts +80 -0
  197. package/src/components/sidebar/git-changes/commit-details-create-branch-dialog.tsx +134 -0
  198. package/src/components/sidebar/git-changes/commit-details-file-list-item.tsx +51 -0
  199. package/src/components/sidebar/git-changes/commit-details-metadata-and-files-panel.tsx +182 -0
  200. package/src/components/sidebar/git-changes/commit-details-modal.tsx +18 -300
  201. package/src/components/sidebar/git-changes/commit-file-diff-viewer.tsx +16 -150
  202. package/src/components/sidebar/git-changes/diff-line-renderer.tsx +74 -0
  203. package/src/components/sidebar/git-changes/diff-syntax-highlight-utils.ts +100 -0
  204. package/src/components/sidebar/git-changes/diff-viewer.tsx +19 -176
  205. package/src/components/sidebar/git-changes/git-commit-form.tsx +167 -0
  206. package/src/components/sidebar/git-changes/git-graph-commit-row.tsx +181 -0
  207. package/src/components/sidebar/git-changes/git-graph-toolbar-header.tsx +111 -0
  208. package/src/components/sidebar/git-changes/git-graph.tsx +34 -243
  209. package/src/components/sidebar/git-changes/git-panel-staged-unstaged-file-lists.tsx +110 -0
  210. package/src/components/sidebar/git-changes/git-panel.tsx +36 -473
  211. package/src/components/sidebar/git-changes/use-git-actions.ts +119 -0
  212. package/src/components/sidebar/git-changes/use-git-stage-unstage-discard-actions.ts +105 -0
  213. package/src/components/sidebar/git-changes/use-git-sync-and-branch-checkout-actions.ts +59 -0
  214. package/src/components/task/chat-model-selector.tsx +57 -25
  215. package/src/components/task/command-selector.tsx +16 -128
  216. package/src/components/task/conversation-view-content-block-renderer.tsx +113 -0
  217. package/src/components/task/conversation-view-historical-assistant-turn.tsx +42 -0
  218. package/src/components/task/conversation-view-historical-user-turn.tsx +71 -0
  219. package/src/components/task/conversation-view-streaming-prompt-bubble.tsx +54 -0
  220. package/src/components/task/conversation-view-turn-renderers.tsx +8 -0
  221. package/src/components/task/conversation-view-utils.ts +176 -0
  222. package/src/components/task/conversation-view.tsx +54 -551
  223. package/src/components/task/floating-chat-window.tsx +55 -280
  224. package/src/components/task/interactive-command/checkpoint-list.tsx +82 -13
  225. package/src/components/task/interactive-command/question-answer-utils.ts +79 -0
  226. package/src/components/task/interactive-command/question-options-view-and-footer-hint.tsx +156 -0
  227. package/src/components/task/interactive-command/question-prompt.tsx +160 -469
  228. package/src/components/task/interactive-command/question-renderer.tsx +5 -0
  229. package/src/components/task/interactive-command/question-tab-bar-and-submit-view.tsx +219 -0
  230. package/src/components/task/prompt-input-action-toolbar.tsx +91 -0
  231. package/src/components/task/prompt-input-attachments.tsx +130 -0
  232. package/src/components/task/prompt-input-context-stats-bar.tsx +68 -0
  233. package/src/components/task/prompt-input-form-body.tsx +180 -0
  234. package/src/components/task/prompt-input-mentions.tsx +133 -0
  235. package/src/components/task/prompt-input.tsx +76 -650
  236. package/src/components/task/status-line-format-utils.ts +37 -0
  237. package/src/components/task/status-line-token-cost-display.tsx +82 -0
  238. package/src/components/task/status-line-workflow-tree-display.tsx +92 -0
  239. package/src/components/task/status-line.tsx +28 -212
  240. package/src/components/task/task-detail-panel-header.tsx +146 -0
  241. package/src/components/task/task-detail-panel.tsx +86 -444
  242. package/src/components/task/task-status-badge-dropdown.tsx +77 -0
  243. package/src/components/task/use-command-selector-data-and-keyboard.ts +120 -0
  244. package/src/components/task/use-conversation-auto-scroll.ts +111 -0
  245. package/src/components/task/use-prompt-keyboard.ts +55 -0
  246. package/src/components/task/use-prompt-rewind-restore.ts +44 -0
  247. package/src/components/task/use-prompt-slash-command-detection.ts +109 -0
  248. package/src/components/task/use-prompt-submit-handler.ts +108 -0
  249. package/src/components/task/use-task-attempt-stream-handler.ts +126 -0
  250. package/src/components/task/use-task-stats.ts +41 -0
  251. package/src/components/team-view/agent-detail-tab.tsx +95 -0
  252. package/src/components/team-view/task-list-tab.tsx +59 -0
  253. package/src/components/team-view/team-chat-tab.tsx +131 -0
  254. package/src/components/team-view/team-tree-sidebar.tsx +161 -0
  255. package/src/components/team-view/team-view.tsx +282 -0
  256. package/src/components/team-view/workflow-status-indicators.tsx +74 -0
  257. package/src/components/terminal/setup-terminal-mobile-touch-handlers.ts +201 -0
  258. package/src/components/terminal/terminal-instance.tsx +2 -515
  259. package/src/components/terminal/terminal-themes.ts +50 -0
  260. package/src/components/terminal/use-terminal-lifecycle.ts +273 -0
  261. package/src/components/ui/detachable-window-resize-handles.tsx +105 -0
  262. package/src/components/ui/detachable-window-storage.ts +90 -0
  263. package/src/components/ui/detachable-window.tsx +8 -193
  264. package/src/hooks/use-attempt-questions.ts +174 -0
  265. package/src/hooks/use-attempt-socket-output-handler.ts +183 -0
  266. package/src/hooks/use-attempt-socket.ts +214 -0
  267. package/src/hooks/use-attempt-stream-running-attempt-utils.ts +194 -0
  268. package/src/hooks/use-attempt-stream.ts +69 -549
  269. package/src/hooks/use-file-sync-change-check-and-polling.ts +187 -0
  270. package/src/hooks/use-file-sync-remote-fetch-utils.ts +75 -0
  271. package/src/hooks/use-file-sync.ts +23 -174
  272. package/src/hooks/use-inline-edit-socket-event-handlers.ts +81 -0
  273. package/src/hooks/use-inline-edit.ts +9 -40
  274. package/src/hooks/use-kanban-keyboard-shortcuts.ts +74 -0
  275. package/src/hooks/use-kanban-url-sync-and-deep-links.ts +128 -0
  276. package/src/lib/agent-event-wiring.ts +150 -0
  277. package/src/lib/agent-factory-dir.ts +2 -27
  278. package/src/lib/agent-manager.ts +108 -909
  279. package/src/lib/agent-output-handler.ts +103 -0
  280. package/src/lib/agent-persistent-question-store.ts +36 -0
  281. package/src/lib/agent-workflow-message-tracker.ts +170 -0
  282. package/src/lib/anthropic-proxy-config-loader.ts +177 -0
  283. package/src/lib/anthropic-proxy-env-interceptor.ts +71 -0
  284. package/src/lib/anthropic-proxy-setup.ts +15 -254
  285. package/src/lib/api-auth.ts +14 -1
  286. package/src/lib/checkpoint-fork-helpers.ts +119 -0
  287. package/src/lib/claude-code-config-file-loaders.ts +66 -0
  288. package/src/lib/claude-code-settings.ts +15 -83
  289. package/src/lib/cli-query.ts +219 -0
  290. package/src/lib/content-types.ts +30 -3
  291. package/src/lib/context-health-display-helpers.ts +62 -0
  292. package/src/lib/context-health.ts +2 -53
  293. package/src/lib/db/db-migration-alter-table-helpers.ts +93 -0
  294. package/src/lib/db/index.ts +48 -82
  295. package/src/lib/db/schema.ts +47 -340
  296. package/src/lib/dependency-extractor-package-file-parsers.ts +126 -0
  297. package/src/lib/dependency-extractor.ts +22 -222
  298. package/src/lib/file-to-attachment.ts +4 -2
  299. package/src/lib/file-utils.ts +6 -24
  300. package/src/lib/git-snapshot.ts +8 -4
  301. package/src/lib/inline-edit-manager.ts +18 -124
  302. package/src/lib/inline-edit-prompt-builder.ts +70 -0
  303. package/src/lib/logger.ts +3 -75
  304. package/src/lib/models.ts +12 -101
  305. package/src/lib/output-format-converters.ts +245 -0
  306. package/src/lib/output-formatter.ts +2 -240
  307. package/src/lib/plugin-file-generator.ts +8 -107
  308. package/src/lib/providers/claude-cli-process-spawner.ts +78 -0
  309. package/src/lib/providers/claude-cli-provider.ts +198 -0
  310. package/src/lib/providers/claude-cli-session-and-pending-question-types.ts +82 -0
  311. package/src/lib/providers/claude-cli-stdout-line-to-provider-event-parser.ts +106 -0
  312. package/src/lib/providers/claude-sdk-mcp-config-loader.ts +149 -0
  313. package/src/lib/providers/claude-sdk-model-alias-and-server-command-utils.ts +42 -0
  314. package/src/lib/providers/claude-sdk-provider.ts +198 -0
  315. package/src/lib/providers/claude-sdk-query-options-builder.ts +158 -0
  316. package/src/lib/providers/index.ts +44 -0
  317. package/src/lib/providers/types.ts +112 -0
  318. package/src/lib/proxy-token-cache-disk-storage.ts +97 -0
  319. package/src/lib/proxy-token-cache.ts +20 -138
  320. package/src/lib/sdk-event-adapter.ts +33 -417
  321. package/src/lib/session-manager-conversation-summary.ts +67 -0
  322. package/src/lib/session-manager-file-operations.ts +131 -0
  323. package/src/lib/session-manager.ts +40 -251
  324. package/src/lib/shell-cleanup-and-stop.ts +110 -0
  325. package/src/lib/shell-instance-output-helpers.ts +94 -0
  326. package/src/lib/shell-manager.ts +46 -324
  327. package/src/lib/shell-process-monitor.ts +147 -0
  328. package/src/lib/timing-safe-compare.ts +4 -0
  329. package/src/lib/tunnel-service-health-checker.ts +153 -0
  330. package/src/lib/tunnel-service-reconnection-manager.ts +145 -0
  331. package/src/lib/tunnel-service.ts +52 -258
  332. package/src/lib/usage-context-token-calculator.ts +80 -0
  333. package/src/lib/usage-tracker.ts +79 -101
  334. package/src/lib/validate-path-within-home-directory.ts +21 -0
  335. package/src/lib/workflow-format-utils.ts +21 -0
  336. package/src/lib/workflow-state-query-helpers.ts +54 -0
  337. package/src/lib/workflow-tracker-types.ts +71 -0
  338. package/src/lib/workflow-tracker.ts +96 -145
  339. package/src/stores/attachment-store-upload-and-remove-api-actions.ts +173 -0
  340. package/src/stores/attachment-store.ts +19 -181
  341. package/src/stores/inline-edit-store-session-lifecycle-actions.ts +163 -0
  342. package/src/stores/inline-edit-store.ts +33 -176
  343. package/src/stores/project-store-crud-api-actions.ts +134 -0
  344. package/src/stores/project-store.ts +45 -177
  345. package/src/stores/shell-store-socket-and-api-actions.ts +157 -0
  346. package/src/stores/shell-store.ts +28 -169
  347. package/src/stores/sidebar-store-tab-and-diff-actions.ts +97 -0
  348. package/src/stores/sidebar-store.ts +26 -135
  349. package/src/stores/task-store-api-actions.ts +106 -0
  350. package/src/stores/task-store-mutation-api-actions.ts +192 -0
  351. package/src/stores/task-store.ts +43 -300
  352. package/src/stores/terminal-store-socket-session-actions.ts +173 -0
  353. package/src/stores/terminal-store.ts +25 -172
  354. package/src/stores/tunnel-store-api-and-socket-actions.ts +200 -0
  355. package/src/stores/tunnel-store.ts +22 -173
  356. package/src/stores/workflow-store.ts +26 -1
  357. package/src/types/index.ts +4 -0
  358. package/tsconfig.json +3 -0
  359. package/public/desktop-review-0.jpeg +0 -0
  360. package/public/desktop-review-1.jpeg +0 -0
  361. package/public/mobile-review-0.jpg +0 -0
  362. package/src/components/workflow/workflow-panel.tsx +0 -181
  363. package/src/lib/context-tracker.ts +0 -153
  364. package/src/lib/process-manager.ts +0 -297
  365. package/src/lib/usage-command-handler.ts +0 -46
package/README.md CHANGED
@@ -1,49 +1,99 @@
1
1
  # Claude Workspace
2
2
 
3
+ **AI-powered workspace for solo CEOs and indie builders** — manage your entire business with AI agents, not just code. Kanban board, code editor, Git integration, claw agent hub, local-first SQLite.
4
+
3
5
  > **DISCLAIMER:** This software is provided "AS IS" without warranty. [Read full disclaimer](./DISCLAIMER.md).
4
6
 
5
- **Visual workspace for Claude Code** — Kanban board, code editor, Git integration, local-first SQLite.
7
+ ![Desktop](./public/desktop-review-0.png)
8
+
9
+ ---
10
+
11
+ ## Vision
6
12
 
7
- ![Desktop](./public/desktop-review-0.jpeg)
13
+ Claude Workspace is evolving from a developer tool into a **full AI-powered business hub**. By integrating ClaudeWs existing multi-agents, [OpenClaw](https://openclaw.ai/) and compatible claw agents, solo founders can manage email, calendar, messaging, sales, support, and operations — all from one workspace alongside their code. See the [Project Roadmap](./docs/project-roadmap.md) for details.
8
14
 
9
15
  ---
10
16
 
11
17
  ## Features
12
18
 
19
+ ### Development
13
20
  - **Kanban Board** — Drag-and-drop task management with full conversation history
14
21
  - **Real-time Streaming** — Live Claude responses via Socket.io
15
22
  - **Checkpoints** — Save and rewind to any conversation state
16
23
  - **Code Editor** — Tabbed CodeMirror with syntax highlighting and AI suggestions
17
24
  - **Git Integration** — Status, stage, commit, diff, visual graph
18
25
  - **Agent Factory** — Plugin system for custom skills, commands, agents
26
+ - **Agentic SDK** — Headless REST + SSE backend for programmatic access ([docs](./packages/agentic-sdk/README.md))
19
27
  - **Themes** — Light, Dark, VS Code variants, Dracula
20
28
 
29
+ ### Business Hub (Coming Q2 2026)
30
+ - **Claw Agent Hub** — Adopt and manage [OpenClaw](https://openclaw.ai/) agents for business tasks
31
+ - **Multi-Channel Inbox** — Unified messaging across WhatsApp, Slack, Discord, Teams, email
32
+ - **Business Agent Templates** — Pre-built agents for email, calendar, social media, customer support
33
+ - **Workflow Automation** — Visual pipelines connecting agents to automate business operations
34
+
21
35
  ---
22
36
 
23
37
  ## Quick Start
24
38
 
25
- **Prerequisites:** Node.js 20+, [Claude Code CLI](https://docs.anthropic.com/en/docs/claude-code)
39
+ **Prerequisites:** Node.js 20+, pnpm 9+, [Claude Code CLI](https://docs.anthropic.com/en/docs/claude-code)
26
40
 
27
41
  ```bash
28
42
  # Option 1: npx (quick try)
29
43
  npx -y claude-ws
30
44
 
31
- # Option 2: Global install (recommended)
45
+ # Option 2: Global install
32
46
  npm install -g claude-ws
33
47
  claude-ws
34
48
 
35
49
  # Option 3: From source
36
50
  git clone https://github.com/Claude-Workspace/claude-ws.git
37
51
  cd claude-ws
38
- pnpm install && pnpm run dev
39
- or
40
- pnpm install && pmpm run build && pnpm start
52
+ pnpm install && pnpm dev
41
53
  ```
42
54
 
43
55
  Open http://localhost:8556
44
56
 
45
57
  ---
46
58
 
59
+ ## Project Structure
60
+
61
+ ```
62
+ claude-ws/
63
+ ├── src/ # Next.js app (frontend + API routes)
64
+ ├── server.ts # Custom server entry point
65
+ ├── packages/
66
+ │ └── agentic-sdk/ # Headless Fastify backend (REST + SSE)
67
+ ├── public/ # Static assets, swagger docs
68
+ ├── drizzle/ # Database migrations
69
+ ├── locales/ # i18n translations
70
+ └── scripts/ # Build and maintenance scripts
71
+ ```
72
+
73
+ ### Packages
74
+
75
+ | Package | Description |
76
+ |---------|-------------|
77
+ | **[agentic-sdk](./packages/agentic-sdk/)** | Standalone Fastify server implementing the full claude-ws API. No frontend, no Socket.io — pure REST + SSE. Use it for headless automation, CI/CD pipelines, or custom integrations. |
78
+
79
+ ---
80
+
81
+ ## Running the Agentic SDK
82
+
83
+ The agentic-sdk is a headless backend that exposes the same API as the main claude-ws server but without the UI. Useful for programmatic task execution, automation, and integration with external tools.
84
+
85
+ ```bash
86
+ # Development (with file watching)
87
+ pnpm agentic-sdk:dev
88
+
89
+ # Production
90
+ pnpm agentic-sdk:start
91
+ ```
92
+
93
+ Server starts at http://localhost:3100. See [agentic-sdk README](./packages/agentic-sdk/README.md) for full API documentation.
94
+
95
+ ---
96
+
47
97
  ## API Documentation
48
98
 
49
99
  See [Swagger API Docs](README-docs-swagger.md)
@@ -52,24 +102,37 @@ See [Swagger API Docs](README-docs-swagger.md)
52
102
 
53
103
  ## Configuration
54
104
 
55
- Create `.env` file (or use `~/.claude-ws/.env`):
105
+ Create `.env` file at the project root:
56
106
 
57
107
  ```bash
58
- # Optional: API authentication for remote access
108
+ # Server
109
+ PORT=8556
59
110
  API_ACCESS_KEY=your-secret-key
60
111
 
61
- # Optional: Custom Claude CLI path
62
- CLAUDE_PATH=/path/to/claude
112
+ # Anthropic API (or custom proxy)
113
+ ANTHROPIC_BASE_URL=https://api.anthropic.com
114
+ ANTHROPIC_AUTH_TOKEN=your-token
115
+ ANTHROPIC_MODEL=claude-sonnet-4-20250514
116
+
117
+ # Model tier overrides (optional)
118
+ ANTHROPIC_DEFAULT_OPUS_MODEL=claude-opus-4-6
119
+ ANTHROPIC_DEFAULT_SONNET_MODEL=claude-sonnet-4-6
120
+ ANTHROPIC_DEFAULT_HAIKU_MODEL=claude-haiku-4-5-20251001
63
121
  ```
64
122
 
65
123
  | Variable | Description | Default |
66
124
  |----------|-------------|---------|
67
125
  | `PORT` | Server port | `8556` |
68
126
  | `API_ACCESS_KEY` | API authentication key | (empty) |
69
- | `LOG_LEVEL` | Logging level: `debug`, `info`, `warn`, `error`, `silent` | `debug` (dev), `warn` (prod) |
70
- | `ANTHROPIC_API_RETRY_TIMES` | Number of retry attempts for failed Anthropic API requests (5xx errors or network failures) | `3` |
71
- | `ANTHROPIC_API_RETRY_DELAY_MS` | Delay between retry attempts in milliseconds | `10000` |
72
-
127
+ | `ANTHROPIC_BASE_URL` | Anthropic API base URL (or custom endpoint) | `https://api.anthropic.com` |
128
+ | `ANTHROPIC_AUTH_TOKEN` | Auth token for the Anthropic API | |
129
+ | `ANTHROPIC_MODEL` | Default model | |
130
+ | `ANTHROPIC_DEFAULT_OPUS_MODEL` | Model for opus tier | Falls back to `ANTHROPIC_MODEL` |
131
+ | `ANTHROPIC_DEFAULT_SONNET_MODEL` | Model for sonnet tier | Falls back to `ANTHROPIC_MODEL` |
132
+ | `ANTHROPIC_DEFAULT_HAIKU_MODEL` | Model for haiku tier | Falls back to `ANTHROPIC_MODEL` |
133
+ | `LOG_LEVEL` | Logging level | `debug` (dev), `warn` (prod) |
134
+ | `ANTHROPIC_API_RETRY_TIMES` | Retry attempts for failed API requests | `3` |
135
+ | `ANTHROPIC_API_RETRY_DELAY_MS` | Delay between retries (ms) | `10000` |
73
136
 
74
137
  ---
75
138
 
@@ -81,10 +144,30 @@ For secure remote access, see [Cloudflare Tunnel Setup](./docs/cloudflare-tunnel
81
144
 
82
145
  ## Tech Stack
83
146
 
84
- Next.js 16, React 19, SQLite + Drizzle ORM, Socket.io, Tailwind CSS 4, Radix UI, Zustand
147
+ Next.js 16, React 19, Fastify 5, SQLite + Drizzle ORM, Socket.io, Claude Agent SDK, Tailwind CSS 4, Radix UI, Zustand, Pino
148
+
149
+ ---
150
+
151
+ ## Documentation
152
+
153
+ - [Project Overview & PDR](./docs/project-overview-pdr.md) — Features, tech stack, requirements
154
+ - [Project Roadmap](./docs/project-roadmap.md) — Feature timeline, claw agent integration plans
155
+ - [System Architecture](./docs/system-architecture.md) — Component design, API structure
156
+ - [Code Standards](./docs/code-standards.md) — Development conventions and patterns
157
+ - [Cloudflare Tunnel Setup](./docs/cloudflare-tunnel.md) — Remote access configuration
85
158
 
86
159
  ---
87
160
 
88
161
  ## License
89
162
 
90
163
  MIT
164
+
165
+ ---
166
+
167
+ ## Screenshots
168
+
169
+ ![Desktop](./public/desktop-review-0.png)
170
+ ![Desktop](./public/desktop-review-1.png)
171
+ ![Desktop](./public/desktop-review-3.png)
172
+ ![Desktop](./public/desktop-review-4.png)
173
+ ![Mobile](./public/mobile-review-0.png)
package/locales/de.json CHANGED
@@ -111,7 +111,10 @@
111
111
  "waitFileUpload": "Bitte warten Sie, bis der Datei-Upload abgeschlossen ist",
112
112
  "failedToCreate": "Aufgabe konnte nicht erstellt werden",
113
113
  "dragToReorder": "Zum Neuanordnen ziehen",
114
- "deleteTask": "Aufgabe löschen"
114
+ "deleteTask": "Aufgabe löschen",
115
+ "moveTo": "Verschieben nach",
116
+ "duplicate": "Duplizieren",
117
+ "delete": "Löschen"
115
118
  },
116
119
  "task": {
117
120
  "title": "Titel",
@@ -344,6 +347,11 @@
344
347
  "showAllBranches": "Alle Branches anzeigen",
345
348
  "showCurrentBranchOnly": "Nur aktuellen Branch anzeigen",
346
349
  "fetch": "Abrufen",
350
+ "fetching": "Abrufen...",
351
+ "pull": "Pull",
352
+ "pulling": "Pulling...",
353
+ "push": "Push",
354
+ "pushing": "Pushing...",
347
355
  "searchBranches": "Branches suchen...",
348
356
  "copyFullHash": "Vollständigen Hash kopieren",
349
357
  "checkoutCommit": "Diesen Commit auschecken (abgetrennter HEAD-Zustand)",
package/locales/en.json CHANGED
@@ -111,7 +111,10 @@
111
111
  "waitFileUpload": "Please wait for files to finish uploading",
112
112
  "failedToCreate": "Failed to create task",
113
113
  "dragToReorder": "Drag to reorder",
114
- "deleteTask": "Delete task"
114
+ "deleteTask": "Delete task",
115
+ "moveTo": "Move to",
116
+ "duplicate": "Duplicate",
117
+ "delete": "Delete"
115
118
  },
116
119
  "task": {
117
120
  "title": "Title",
@@ -344,6 +347,11 @@
344
347
  "showAllBranches": "Show all branches",
345
348
  "showCurrentBranchOnly": "Show current branch only",
346
349
  "fetch": "Fetch",
350
+ "fetching": "Fetching...",
351
+ "pull": "Pull",
352
+ "pulling": "Pulling...",
353
+ "push": "Push",
354
+ "pushing": "Pushing...",
347
355
  "searchBranches": "Search branches...",
348
356
  "copyFullHash": "Copy full hash",
349
357
  "checkoutCommit": "Checkout this commit (detached HEAD state)",
@@ -595,6 +603,9 @@
595
603
  "rewoundToCheckpoint": "Rewound conversation & files to checkpoint",
596
604
  "rewoundConversationOnly": "Rewound conversation only",
597
605
  "rewoundConversation": "Rewound conversation to checkpoint",
606
+ "forkedToCheckpoint": "Forked conversation & files from checkpoint",
607
+ "forkedConversationOnly": "Forked conversation only",
608
+ "forkedConversation": "Forked conversation from checkpoint",
598
609
  "waitForUpload": "Please wait for files to finish uploading"
599
610
  },
600
611
  "agentProvider": {
package/locales/es.json CHANGED
@@ -111,7 +111,10 @@
111
111
  "waitFileUpload": "Por favor espere a que los archivos terminen de subir",
112
112
  "failedToCreate": "Fallo al crear tarea",
113
113
  "dragToReorder": "Arrastrar para reordenar",
114
- "deleteTask": "Eliminar tarea"
114
+ "deleteTask": "Eliminar tarea",
115
+ "moveTo": "Mover a",
116
+ "duplicate": "Duplicar",
117
+ "delete": "Eliminar"
115
118
  },
116
119
  "task": {
117
120
  "title": "Título",
@@ -344,6 +347,11 @@
344
347
  "showAllBranches": "Mostrar todas las ramas",
345
348
  "showCurrentBranchOnly": "Mostrar solo la rama actual",
346
349
  "fetch": "Obtener",
350
+ "fetching": "Obteniendo...",
351
+ "pull": "Pull",
352
+ "pulling": "Pulling...",
353
+ "push": "Push",
354
+ "pushing": "Pushing...",
347
355
  "searchBranches": "Buscar ramas...",
348
356
  "copyFullHash": "Copiar hash completo",
349
357
  "checkoutCommit": "Cambiar a este commit (estado HEAD desconectado)",
package/locales/fr.json CHANGED
@@ -111,7 +111,10 @@
111
111
  "waitFileUpload": "Veuillez attendre que les fichiers finissent de télécharger",
112
112
  "failedToCreate": "Échec de la création de la tâche",
113
113
  "dragToReorder": "Glisser pour réorganiser",
114
- "deleteTask": "Supprimer la tâche"
114
+ "deleteTask": "Supprimer la tâche",
115
+ "moveTo": "Déplacer vers",
116
+ "duplicate": "Dupliquer",
117
+ "delete": "Supprimer"
115
118
  },
116
119
  "task": {
117
120
  "title": "Titre",
@@ -344,6 +347,11 @@
344
347
  "showAllBranches": "Afficher toutes les branches",
345
348
  "showCurrentBranchOnly": "Afficher uniquement la branche courante",
346
349
  "fetch": "Fetch",
350
+ "fetching": "Récupération...",
351
+ "pull": "Pull",
352
+ "pulling": "Pulling...",
353
+ "push": "Push",
354
+ "pushing": "Pushing...",
347
355
  "searchBranches": "Rechercher des branches...",
348
356
  "copyFullHash": "Copier le hash complet",
349
357
  "checkoutCommit": "Extraire ce commit (état HEAD détaché)",
package/locales/ja.json CHANGED
@@ -111,7 +111,10 @@
111
111
  "waitFileUpload": "ファイルのアップロードが完了するまでお待ちください",
112
112
  "failedToCreate": "タスクの作成に失敗しました",
113
113
  "dragToReorder": "ドラッグして並べ替え",
114
- "deleteTask": "タスクを削除"
114
+ "deleteTask": "タスクを削除",
115
+ "moveTo": "移動先",
116
+ "duplicate": "複製",
117
+ "delete": "削除"
115
118
  },
116
119
  "task": {
117
120
  "title": "タイトル",
@@ -344,6 +347,11 @@
344
347
  "showAllBranches": "すべてのブランチを表示",
345
348
  "showCurrentBranchOnly": "現在のブランチのみ表示",
346
349
  "fetch": "フェッチ",
350
+ "fetching": "フェッチ中...",
351
+ "pull": "Pull",
352
+ "pulling": "Pull中...",
353
+ "push": "Push",
354
+ "pushing": "Push中...",
347
355
  "searchBranches": "ブランチを検索...",
348
356
  "copyFullHash": "完全なハッシュをコピー",
349
357
  "checkoutCommit": "このコミットをチェックアウト(detached HEAD 状態)",
package/locales/ko.json CHANGED
@@ -111,7 +111,10 @@
111
111
  "waitFileUpload": "파일 업로드가 완료될 때까지 기다려주세요",
112
112
  "failedToCreate": "작업 만들기 실패",
113
113
  "dragToReorder": "드래그하여 재정렬",
114
- "deleteTask": "작업 삭제"
114
+ "deleteTask": "작업 삭제",
115
+ "moveTo": "이동",
116
+ "duplicate": "복제",
117
+ "delete": "삭제"
115
118
  },
116
119
  "task": {
117
120
  "title": "제목",
@@ -344,6 +347,11 @@
344
347
  "showAllBranches": "모든 브랜치 표시",
345
348
  "showCurrentBranchOnly": "현재 브랜치만 표시",
346
349
  "fetch": "가져오기",
350
+ "fetching": "가져오는 중...",
351
+ "pull": "Pull",
352
+ "pulling": "Pull 중...",
353
+ "push": "Push",
354
+ "pushing": "Push 중...",
347
355
  "searchBranches": "브랜치 검색...",
348
356
  "copyFullHash": "전체 해시 복사",
349
357
  "checkoutCommit": "이 커밋 체크아웃 (분리된 HEAD 상태)",
package/locales/vi.json CHANGED
@@ -111,7 +111,10 @@
111
111
  "waitFileUpload": "Vui lòng đợi tập tin tải lên xong",
112
112
  "failedToCreate": "Không thể tạo nhiệm vụ",
113
113
  "dragToReorder": "Kéo để sắp xếp lại",
114
- "deleteTask": "Xóa nhiệm vụ"
114
+ "deleteTask": "Xóa nhiệm vụ",
115
+ "moveTo": "Di chuyển đến",
116
+ "duplicate": "Nhân bản",
117
+ "delete": "Xóa"
115
118
  },
116
119
  "task": {
117
120
  "title": "Tiêu đề",
@@ -344,6 +347,11 @@
344
347
  "showAllBranches": "Hiển thị tất cả nhánh",
345
348
  "showCurrentBranchOnly": "Chỉ hiển thị nhánh hiện tại",
346
349
  "fetch": "Tải về",
350
+ "fetching": "Đang fetch...",
351
+ "pull": "Pull",
352
+ "pulling": "Đang pull...",
353
+ "push": "Push",
354
+ "pushing": "Đang push...",
347
355
  "searchBranches": "Tìm kiếm nhánh...",
348
356
  "copyFullHash": "Sao chép mã hash đầy đủ",
349
357
  "checkoutCommit": "Checkout commit này (trạng thái HEAD tách rời)",
package/locales/zh.json CHANGED
@@ -111,7 +111,10 @@
111
111
  "waitFileUpload": "请等待文件上传完成",
112
112
  "failedToCreate": "创建任务失败",
113
113
  "dragToReorder": "拖动以重新排序",
114
- "deleteTask": "删除任务"
114
+ "deleteTask": "删除任务",
115
+ "moveTo": "移动到",
116
+ "duplicate": "复制",
117
+ "delete": "删除"
115
118
  },
116
119
  "task": {
117
120
  "title": "标题",
@@ -344,6 +347,11 @@
344
347
  "showAllBranches": "显示所有分支",
345
348
  "showCurrentBranchOnly": "仅显示当前分支",
346
349
  "fetch": "拉取",
350
+ "fetching": "正在拉取...",
351
+ "pull": "Pull",
352
+ "pulling": "正在Pull...",
353
+ "push": "Push",
354
+ "pushing": "正在Push...",
347
355
  "searchBranches": "搜索分支...",
348
356
  "copyFullHash": "复制完整哈希值",
349
357
  "checkoutCommit": "检出此提交(分离 HEAD 状态)",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-ws",
3
- "version": "0.3.100",
3
+ "version": "0.3.101",
4
4
  "private": false,
5
5
  "description": "A beautifully crafted workspace interface for Claude Code with real-time streaming and local SQLite database",
6
6
  "keywords": [
@@ -62,11 +62,13 @@
62
62
  },
63
63
  "scripts": {
64
64
  "postinstall": "node -e \"try{require('fs').chmodSync(require('path').join('node_modules','@homebridge','node-pty-prebuilt-multiarch','prebuilds',process.platform+'-'+process.arch,'spawn-helper'),0o755)}catch{}\"",
65
- "dev": "tsx server.ts",
65
+ "dev": "cross-env CLAUDECODE= tsx server.ts",
66
66
  "build": "cross-env NODE_ENV=production next build",
67
- "start": "cross-env NODE_ENV=production tsx server.ts",
67
+ "start": "cross-env NODE_ENV=production CLAUDECODE= tsx server.ts",
68
68
  "db:generate": "drizzle-kit generate",
69
- "db:fix": "tsx scripts/db-fix-columns.ts"
69
+ "db:fix": "tsx scripts/db-fix-columns.ts",
70
+ "agentic-sdk:dev": "tsx watch packages/agentic-sdk/bin/server-entrypoint.ts",
71
+ "agentic-sdk:start": "cross-env NODE_ENV=production tsx packages/agentic-sdk/bin/server-entrypoint.ts"
70
72
  },
71
73
  "dependencies": {
72
74
  "@anthropic-ai/claude-agent-sdk": "^0.2.42",
@@ -91,6 +93,9 @@
91
93
  "@dnd-kit/core": "^6.3.1",
92
94
  "@dnd-kit/sortable": "^10.0.0",
93
95
  "@dnd-kit/utilities": "^3.2.2",
96
+ "@fastify/cors": "^11.2.0",
97
+ "@fastify/multipart": "^9.4.0",
98
+ "@homebridge/node-pty-prebuilt-multiarch": "^0.13.1",
94
99
  "@radix-ui/react-checkbox": "^1.3.3",
95
100
  "@radix-ui/react-context-menu": "^2.2.16",
96
101
  "@radix-ui/react-dialog": "^1.1.15",
@@ -108,6 +113,7 @@
108
113
  "@types/adm-zip": "^0.5.7",
109
114
  "@types/better-sqlite3": "^7.6.13",
110
115
  "@types/compression": "^1.8.1",
116
+ "@types/dompurify": "^3.2.0",
111
117
  "@types/node": "^20.19.33",
112
118
  "@types/react": "^19.2.14",
113
119
  "@types/react-dom": "^19.2.3",
@@ -116,6 +122,7 @@
116
122
  "@xterm/addon-web-links": "^0.12.0",
117
123
  "@xterm/xterm": "^6.0.0",
118
124
  "adm-zip": "^0.5.16",
125
+ "beautiful-mermaid": "^1.1.3",
119
126
  "better-sqlite3": "^12.6.2",
120
127
  "class-variance-authority": "^0.7.1",
121
128
  "clsx": "^2.1.1",
@@ -125,11 +132,14 @@
125
132
  "ctunnel": "^1.0.3",
126
133
  "date-fns": "^4.1.0",
127
134
  "diff": "^8.0.3",
135
+ "dompurify": "^3.3.3",
128
136
  "dotenv": "^17.2.4",
129
137
  "drizzle-kit": "^0.31.9",
130
138
  "drizzle-orm": "^0.45.1",
131
139
  "eslint": "^9.39.2",
132
140
  "eslint-config-next": "^16.1.6",
141
+ "fastify": "^5.8.2",
142
+ "fastify-plugin": "^5.1.0",
133
143
  "highlight.js": "^11.11.1",
134
144
  "js-yaml": "^4.1.1",
135
145
  "lowlight": "^3.3.0",
@@ -138,7 +148,6 @@
138
148
  "next": "^16.1.6",
139
149
  "next-intl": "^4.8.2",
140
150
  "next-themes": "^0.4.6",
141
- "@homebridge/node-pty-prebuilt-multiarch": "^0.13.1",
142
151
  "pino": "^10.3.1",
143
152
  "pino-pretty": "^13.1.3",
144
153
  "react": "19.2.3",
Binary file
Binary file
Binary file
Binary file