@cloudcli-ai/cloudcli 1.34.0 → 1.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (324) hide show
  1. package/README.de.md +9 -1
  2. package/README.ja.md +8 -0
  3. package/README.ko.md +9 -1
  4. package/README.md +16 -3
  5. package/README.ru.md +9 -1
  6. package/README.tr.md +8 -1
  7. package/README.zh-CN.md +9 -1
  8. package/README.zh-TW.md +9 -1
  9. package/dist/api-docs.html +36 -18
  10. package/dist/assets/index-CtwxqzGG.js +1407 -0
  11. package/dist/assets/index-DlvtxFyt.css +32 -0
  12. package/dist/index.html +2 -2
  13. package/dist-server/server/browser-use-mcp.js +350 -0
  14. package/dist-server/server/browser-use-mcp.js.map +1 -0
  15. package/dist-server/server/claude-sdk.js +25 -5
  16. package/dist-server/server/claude-sdk.js.map +1 -1
  17. package/dist-server/server/cli.js +14 -6
  18. package/dist-server/server/cli.js.map +1 -1
  19. package/dist-server/server/computer-use-agent.js +242 -0
  20. package/dist-server/server/computer-use-agent.js.map +1 -0
  21. package/dist-server/server/computer-use-mcp.js +519 -0
  22. package/dist-server/server/computer-use-mcp.js.map +1 -0
  23. package/dist-server/server/cursor-cli.js +27 -11
  24. package/dist-server/server/cursor-cli.js.map +1 -1
  25. package/dist-server/server/gemini-cli.js +17 -2
  26. package/dist-server/server/gemini-cli.js.map +1 -1
  27. package/dist-server/server/index.js +149 -40
  28. package/dist-server/server/index.js.map +1 -1
  29. package/dist-server/server/load-env.js +1 -1
  30. package/dist-server/server/load-env.js.map +1 -1
  31. package/dist-server/server/modules/browser-use/browser-use-mcp.routes.js +107 -0
  32. package/dist-server/server/modules/browser-use/browser-use-mcp.routes.js.map +1 -0
  33. package/dist-server/server/modules/browser-use/browser-use.routes.js +93 -0
  34. package/dist-server/server/modules/browser-use/browser-use.routes.js.map +1 -0
  35. package/dist-server/server/modules/browser-use/browser-use.service.js +688 -0
  36. package/dist-server/server/modules/browser-use/browser-use.service.js.map +1 -0
  37. package/dist-server/server/modules/browser-use/tests/browser-use.service.test.js +8 -0
  38. package/dist-server/server/modules/browser-use/tests/browser-use.service.test.js.map +1 -0
  39. package/dist-server/server/modules/computer-use/actions/raw-action-dispatcher.js +55 -0
  40. package/dist-server/server/modules/computer-use/actions/raw-action-dispatcher.js.map +1 -0
  41. package/dist-server/server/modules/computer-use/actions/raw-action-types.js +2 -0
  42. package/dist-server/server/modules/computer-use/actions/raw-action-types.js.map +1 -0
  43. package/dist-server/server/modules/computer-use/computer-executor.js +212 -0
  44. package/dist-server/server/modules/computer-use/computer-executor.js.map +1 -0
  45. package/dist-server/server/modules/computer-use/computer-semantics.service.js +422 -0
  46. package/dist-server/server/modules/computer-use/computer-semantics.service.js.map +1 -0
  47. package/dist-server/server/modules/computer-use/computer-use-mcp.routes.js +126 -0
  48. package/dist-server/server/modules/computer-use/computer-use-mcp.routes.js.map +1 -0
  49. package/dist-server/server/modules/computer-use/computer-use.routes.js +196 -0
  50. package/dist-server/server/modules/computer-use/computer-use.routes.js.map +1 -0
  51. package/dist-server/server/modules/computer-use/computer-use.service.js +759 -0
  52. package/dist-server/server/modules/computer-use/computer-use.service.js.map +1 -0
  53. package/dist-server/server/modules/computer-use/desktop-agent-relay.service.js +126 -0
  54. package/dist-server/server/modules/computer-use/desktop-agent-relay.service.js.map +1 -0
  55. package/dist-server/server/modules/computer-use/index.js +3 -0
  56. package/dist-server/server/modules/computer-use/index.js.map +1 -0
  57. package/dist-server/server/modules/computer-use/semantics/adapters/helper-semantic-adapter.js +59 -0
  58. package/dist-server/server/modules/computer-use/semantics/adapters/helper-semantic-adapter.js.map +1 -0
  59. package/dist-server/server/modules/computer-use/semantics/adapters/macos/macos-semantic-adapter.js +5 -0
  60. package/dist-server/server/modules/computer-use/semantics/adapters/macos/macos-semantic-adapter.js.map +1 -0
  61. package/dist-server/server/modules/computer-use/semantics/adapters/semantic-adapter.js +2 -0
  62. package/dist-server/server/modules/computer-use/semantics/adapters/semantic-adapter.js.map +1 -0
  63. package/dist-server/server/modules/computer-use/semantics/adapters/windows/windows-semantic-adapter.js +5 -0
  64. package/dist-server/server/modules/computer-use/semantics/adapters/windows/windows-semantic-adapter.js.map +1 -0
  65. package/dist-server/server/modules/computer-use/semantics/bin/darwin-arm64/CloudCLISemantics +0 -0
  66. package/dist-server/server/modules/computer-use/semantics/bin/darwin-x64/CloudCLISemantics +0 -0
  67. package/dist-server/server/modules/computer-use/semantics/bin/win32-arm64/CloudCLISemantics.exe +0 -0
  68. package/dist-server/server/modules/computer-use/semantics/bin/win32-x64/CloudCLISemantics.exe +0 -0
  69. package/dist-server/server/modules/computer-use/semantics/helpers/semantic-helper-process.js +106 -0
  70. package/dist-server/server/modules/computer-use/semantics/helpers/semantic-helper-process.js.map +1 -0
  71. package/dist-server/server/modules/computer-use/semantics/helpers/semantic-helper-resolver.js +78 -0
  72. package/dist-server/server/modules/computer-use/semantics/helpers/semantic-helper-resolver.js.map +1 -0
  73. package/dist-server/server/modules/computer-use/semantics/semantic-session-store.js +68 -0
  74. package/dist-server/server/modules/computer-use/semantics/semantic-session-store.js.map +1 -0
  75. package/dist-server/server/modules/computer-use/semantics/semantic-tool-dispatcher.js +16 -0
  76. package/dist-server/server/modules/computer-use/semantics/semantic-tool-dispatcher.js.map +1 -0
  77. package/dist-server/server/modules/computer-use/semantics/semantic-types.js +2 -0
  78. package/dist-server/server/modules/computer-use/semantics/semantic-types.js.map +1 -0
  79. package/dist-server/server/modules/database/index.js +1 -0
  80. package/dist-server/server/modules/database/index.js.map +1 -1
  81. package/dist-server/server/modules/database/migrations.js +23 -1
  82. package/dist-server/server/modules/database/migrations.js.map +1 -1
  83. package/dist-server/server/modules/database/repositories/notification-channel-endpoints.js +100 -0
  84. package/dist-server/server/modules/database/repositories/notification-channel-endpoints.js.map +1 -0
  85. package/dist-server/server/modules/database/repositories/notification-preferences.js +8 -0
  86. package/dist-server/server/modules/database/repositories/notification-preferences.js.map +1 -1
  87. package/dist-server/server/modules/database/repositories/sessions.db.js +173 -17
  88. package/dist-server/server/modules/database/repositories/sessions.db.js.map +1 -1
  89. package/dist-server/server/modules/database/schema.js +26 -0
  90. package/dist-server/server/modules/database/schema.js.map +1 -1
  91. package/dist-server/server/modules/database/tests/projects.db.integration.test.js.map +1 -0
  92. package/dist-server/server/modules/database/tests/sessions-provider-mapping.test.js +78 -0
  93. package/dist-server/server/modules/database/tests/sessions-provider-mapping.test.js.map +1 -0
  94. package/dist-server/server/modules/database/{repositories → tests}/sessions.db.integration.test.js +10 -0
  95. package/dist-server/server/modules/database/tests/sessions.db.integration.test.js.map +1 -0
  96. package/dist-server/server/modules/notifications/index.js +4 -0
  97. package/dist-server/server/modules/notifications/index.js.map +1 -0
  98. package/dist-server/server/modules/notifications/notifications.routes.js +115 -0
  99. package/dist-server/server/modules/notifications/notifications.routes.js.map +1 -0
  100. package/dist-server/server/modules/notifications/services/desktop-notification-clients.service.js +97 -0
  101. package/dist-server/server/modules/notifications/services/desktop-notification-clients.service.js.map +1 -0
  102. package/dist-server/server/modules/notifications/services/notification-orchestrator.service.js +229 -0
  103. package/dist-server/server/modules/notifications/services/notification-orchestrator.service.js.map +1 -0
  104. package/dist-server/server/modules/notifications/websocket/desktop-notifications-websocket.service.js +79 -0
  105. package/dist-server/server/modules/notifications/websocket/desktop-notifications-websocket.service.js.map +1 -0
  106. package/dist-server/server/modules/projects/services/project-management.service.js +0 -4
  107. package/dist-server/server/modules/projects/services/project-management.service.js.map +1 -1
  108. package/dist-server/server/modules/projects/services/projects-with-sessions-fetch.service.js +10 -38
  109. package/dist-server/server/modules/projects/services/projects-with-sessions-fetch.service.js.map +1 -1
  110. package/dist-server/server/modules/providers/index.js +1 -0
  111. package/dist-server/server/modules/providers/index.js.map +1 -1
  112. package/dist-server/server/modules/providers/list/claude/claude-session-synchronizer.provider.js +24 -1
  113. package/dist-server/server/modules/providers/list/claude/claude-session-synchronizer.provider.js.map +1 -1
  114. package/dist-server/server/modules/providers/list/claude/claude-sessions.provider.js +9 -12
  115. package/dist-server/server/modules/providers/list/claude/claude-sessions.provider.js.map +1 -1
  116. package/dist-server/server/modules/providers/list/claude/claude-skills.provider.js +7 -0
  117. package/dist-server/server/modules/providers/list/claude/claude-skills.provider.js.map +1 -1
  118. package/dist-server/server/modules/providers/list/codex/codex-session-synchronizer.provider.js +7 -3
  119. package/dist-server/server/modules/providers/list/codex/codex-session-synchronizer.provider.js.map +1 -1
  120. package/dist-server/server/modules/providers/list/codex/codex-sessions.provider.js +3 -9
  121. package/dist-server/server/modules/providers/list/codex/codex-sessions.provider.js.map +1 -1
  122. package/dist-server/server/modules/providers/list/codex/codex-skills.provider.js +7 -0
  123. package/dist-server/server/modules/providers/list/codex/codex-skills.provider.js.map +1 -1
  124. package/dist-server/server/modules/providers/list/cursor/cursor-sessions.provider.js +13 -22
  125. package/dist-server/server/modules/providers/list/cursor/cursor-sessions.provider.js.map +1 -1
  126. package/dist-server/server/modules/providers/list/cursor/cursor-skills.provider.js +7 -0
  127. package/dist-server/server/modules/providers/list/cursor/cursor-skills.provider.js.map +1 -1
  128. package/dist-server/server/modules/providers/list/gemini/gemini-models.provider.js +5 -8
  129. package/dist-server/server/modules/providers/list/gemini/gemini-models.provider.js.map +1 -1
  130. package/dist-server/server/modules/providers/list/gemini/gemini-sessions.provider.js +6 -6
  131. package/dist-server/server/modules/providers/list/gemini/gemini-sessions.provider.js.map +1 -1
  132. package/dist-server/server/modules/providers/list/gemini/gemini-skills.provider.js +7 -0
  133. package/dist-server/server/modules/providers/list/gemini/gemini-skills.provider.js.map +1 -1
  134. package/dist-server/server/modules/providers/list/opencode/opencode-session-synchronizer.provider.js +17 -3
  135. package/dist-server/server/modules/providers/list/opencode/opencode-session-synchronizer.provider.js.map +1 -1
  136. package/dist-server/server/modules/providers/list/opencode/opencode-sessions.provider.js +9 -10
  137. package/dist-server/server/modules/providers/list/opencode/opencode-sessions.provider.js.map +1 -1
  138. package/dist-server/server/modules/providers/provider.routes.js +123 -1
  139. package/dist-server/server/modules/providers/provider.routes.js.map +1 -1
  140. package/dist-server/server/modules/providers/services/mcp.service.js +23 -0
  141. package/dist-server/server/modules/providers/services/mcp.service.js.map +1 -1
  142. package/dist-server/server/modules/providers/services/provider-capabilities.service.js +65 -0
  143. package/dist-server/server/modules/providers/services/provider-capabilities.service.js.map +1 -0
  144. package/dist-server/server/modules/providers/services/provider-models.service.js +1 -1
  145. package/dist-server/server/modules/providers/services/provider-models.service.js.map +1 -1
  146. package/dist-server/server/modules/providers/services/sessions-watcher.service.js +62 -23
  147. package/dist-server/server/modules/providers/services/sessions-watcher.service.js.map +1 -1
  148. package/dist-server/server/modules/providers/services/sessions.service.js +62 -4
  149. package/dist-server/server/modules/providers/services/sessions.service.js.map +1 -1
  150. package/dist-server/server/modules/providers/services/skills.service.js +11 -0
  151. package/dist-server/server/modules/providers/services/skills.service.js.map +1 -1
  152. package/dist-server/server/modules/providers/shared/skills/skills.provider.js +163 -1
  153. package/dist-server/server/modules/providers/shared/skills/skills.provider.js.map +1 -1
  154. package/dist-server/server/modules/providers/tests/opencode-sessions.test.js +45 -0
  155. package/dist-server/server/modules/providers/tests/opencode-sessions.test.js.map +1 -1
  156. package/dist-server/server/modules/providers/tests/skills.test.js +160 -0
  157. package/dist-server/server/modules/providers/tests/skills.test.js.map +1 -1
  158. package/dist-server/server/modules/websocket/index.js +1 -0
  159. package/dist-server/server/modules/websocket/index.js.map +1 -1
  160. package/dist-server/server/modules/websocket/services/chat-run-registry.service.js +252 -0
  161. package/dist-server/server/modules/websocket/services/chat-run-registry.service.js.map +1 -0
  162. package/dist-server/server/modules/websocket/services/chat-session-writer.service.js +105 -0
  163. package/dist-server/server/modules/websocket/services/chat-session-writer.service.js.map +1 -0
  164. package/dist-server/server/modules/websocket/services/chat-websocket.service.js +218 -156
  165. package/dist-server/server/modules/websocket/services/chat-websocket.service.js.map +1 -1
  166. package/dist-server/server/modules/websocket/services/desktop-agent-websocket.service.js +39 -0
  167. package/dist-server/server/modules/websocket/services/desktop-agent-websocket.service.js.map +1 -0
  168. package/dist-server/server/modules/websocket/services/shell-websocket.service.js +83 -31
  169. package/dist-server/server/modules/websocket/services/shell-websocket.service.js.map +1 -1
  170. package/dist-server/server/modules/websocket/services/websocket-server.service.js +10 -0
  171. package/dist-server/server/modules/websocket/services/websocket-server.service.js.map +1 -1
  172. package/dist-server/server/modules/websocket/tests/chat-run-registry.test.js +216 -0
  173. package/dist-server/server/modules/websocket/tests/chat-run-registry.test.js.map +1 -0
  174. package/dist-server/server/openai-codex.js +24 -14
  175. package/dist-server/server/openai-codex.js.map +1 -1
  176. package/dist-server/server/opencode-cli.js +21 -8
  177. package/dist-server/server/opencode-cli.js.map +1 -1
  178. package/dist-server/server/opencode-cli.test.js +19 -1
  179. package/dist-server/server/opencode-cli.test.js.map +1 -1
  180. package/dist-server/server/routes/settings.js +1 -1
  181. package/dist-server/server/routes/settings.js.map +1 -1
  182. package/dist-server/server/services/notification-orchestrator.js +1 -176
  183. package/dist-server/server/services/notification-orchestrator.js.map +1 -1
  184. package/dist-server/server/services/tests/notification-orchestrator.test.js +64 -0
  185. package/dist-server/server/services/tests/notification-orchestrator.test.js.map +1 -0
  186. package/dist-server/server/shared/{claude-cli-path.test.js → tests/claude-cli-path.test.js} +1 -1
  187. package/dist-server/server/shared/tests/claude-cli-path.test.js.map +1 -0
  188. package/dist-server/server/shared/tests/slice-tail-page.test.js +35 -0
  189. package/dist-server/server/shared/tests/slice-tail-page.test.js.map +1 -0
  190. package/dist-server/server/shared/utils.js +73 -1
  191. package/dist-server/server/shared/utils.js.map +1 -1
  192. package/dist-server/server/voice-proxy.js +226 -0
  193. package/dist-server/server/voice-proxy.js.map +1 -0
  194. package/electron/assets/logo-macos.icns +0 -0
  195. package/electron/assets/logo-macos.png +0 -0
  196. package/electron/assets/logo-windows.ico +0 -0
  197. package/electron/cloud.js +260 -0
  198. package/electron/computerAgent.js +290 -0
  199. package/electron/desktopNotifications.js +378 -0
  200. package/electron/desktopWindow.js +781 -0
  201. package/electron/launcher/index.html +14 -0
  202. package/electron/launcher/launcher.css +801 -0
  203. package/electron/launcher/launcher.js +829 -0
  204. package/electron/localServer.js +550 -0
  205. package/electron/main.js +1060 -0
  206. package/electron/preload.cjs +63 -0
  207. package/electron/scripts/generate-macos-icon.js +62 -0
  208. package/electron/serverInstaller.js +277 -0
  209. package/electron/tabs.js +87 -0
  210. package/electron/viewHost.js +331 -0
  211. package/package.json +86 -5
  212. package/public/api-docs.html +36 -18
  213. package/scripts/build-computer-semantics.mjs +133 -0
  214. package/scripts/copy-computer-semantics-bin.mjs +24 -0
  215. package/scripts/release/build-server-bundle.js +176 -0
  216. package/scripts/release/prepare-desktop-app.js +158 -0
  217. package/server/browser-use-mcp.ts +384 -0
  218. package/server/claude-sdk.js +27 -5
  219. package/server/cli.js +15 -6
  220. package/server/computer-use-agent.ts +279 -0
  221. package/server/computer-use-mcp.ts +574 -0
  222. package/server/cursor-cli.js +27 -11
  223. package/server/gemini-cli.js +17 -2
  224. package/server/index.js +151 -47
  225. package/server/load-env.js +1 -1
  226. package/server/modules/browser-use/browser-use-mcp.routes.ts +120 -0
  227. package/server/modules/browser-use/browser-use.routes.ts +96 -0
  228. package/server/modules/browser-use/browser-use.service.ts +836 -0
  229. package/server/modules/browser-use/tests/browser-use.service.test.ts +10 -0
  230. package/server/modules/computer-use/actions/raw-action-dispatcher.ts +67 -0
  231. package/server/modules/computer-use/actions/raw-action-types.ts +28 -0
  232. package/server/modules/computer-use/computer-executor.ts +242 -0
  233. package/server/modules/computer-use/computer-semantics.service.ts +460 -0
  234. package/server/modules/computer-use/computer-use-mcp.routes.ts +141 -0
  235. package/server/modules/computer-use/computer-use.routes.ts +211 -0
  236. package/server/modules/computer-use/computer-use.service.ts +920 -0
  237. package/server/modules/computer-use/desktop-agent-relay.service.ts +158 -0
  238. package/server/modules/computer-use/index.ts +2 -0
  239. package/server/modules/computer-use/semantics/adapters/helper-semantic-adapter.ts +82 -0
  240. package/server/modules/computer-use/semantics/adapters/macos/macos-semantic-adapter.ts +5 -0
  241. package/server/modules/computer-use/semantics/adapters/semantic-adapter.ts +23 -0
  242. package/server/modules/computer-use/semantics/adapters/windows/windows-semantic-adapter.ts +5 -0
  243. package/server/modules/computer-use/semantics/bin/darwin-arm64/CloudCLISemantics +0 -0
  244. package/server/modules/computer-use/semantics/bin/darwin-x64/CloudCLISemantics +0 -0
  245. package/server/modules/computer-use/semantics/bin/win32-arm64/CloudCLISemantics.exe +0 -0
  246. package/server/modules/computer-use/semantics/bin/win32-x64/CloudCLISemantics.exe +0 -0
  247. package/server/modules/computer-use/semantics/helpers/macos/CloudCLISemantics.swift +467 -0
  248. package/server/modules/computer-use/semantics/helpers/semantic-helper-process.ts +124 -0
  249. package/server/modules/computer-use/semantics/helpers/semantic-helper-resolver.ts +97 -0
  250. package/server/modules/computer-use/semantics/helpers/windows/CloudCLISemantics.csproj +11 -0
  251. package/server/modules/computer-use/semantics/helpers/windows/Program.cs +534 -0
  252. package/server/modules/computer-use/semantics/semantic-session-store.ts +87 -0
  253. package/server/modules/computer-use/semantics/semantic-tool-dispatcher.ts +17 -0
  254. package/server/modules/computer-use/semantics/semantic-types.ts +58 -0
  255. package/server/modules/database/index.ts +1 -0
  256. package/server/modules/database/migrations.ts +25 -0
  257. package/server/modules/database/repositories/notification-channel-endpoints.ts +153 -0
  258. package/server/modules/database/repositories/notification-preferences.ts +12 -1
  259. package/server/modules/database/repositories/sessions.db.ts +227 -23
  260. package/server/modules/database/schema.ts +27 -0
  261. package/server/modules/database/tests/sessions-provider-mapping.test.ts +108 -0
  262. package/server/modules/database/{repositories → tests}/sessions.db.integration.test.ts +12 -0
  263. package/server/modules/notifications/index.ts +13 -0
  264. package/server/modules/notifications/notifications.routes.ts +127 -0
  265. package/server/modules/notifications/services/desktop-notification-clients.service.ts +124 -0
  266. package/server/modules/notifications/services/notification-orchestrator.service.js +288 -0
  267. package/server/modules/notifications/websocket/desktop-notifications-websocket.service.ts +109 -0
  268. package/server/modules/projects/services/project-management.service.ts +0 -8
  269. package/server/modules/projects/services/projects-with-sessions-fetch.service.ts +12 -53
  270. package/server/modules/providers/README.md +1 -1
  271. package/server/modules/providers/index.ts +1 -0
  272. package/server/modules/providers/list/claude/claude-session-synchronizer.provider.ts +26 -1
  273. package/server/modules/providers/list/claude/claude-sessions.provider.ts +9 -14
  274. package/server/modules/providers/list/claude/claude-skills.provider.ts +8 -0
  275. package/server/modules/providers/list/codex/codex-session-synchronizer.provider.ts +7 -3
  276. package/server/modules/providers/list/codex/codex-sessions.provider.ts +3 -12
  277. package/server/modules/providers/list/codex/codex-skills.provider.ts +8 -0
  278. package/server/modules/providers/list/cursor/cursor-sessions.provider.ts +13 -22
  279. package/server/modules/providers/list/cursor/cursor-skills.provider.ts +8 -0
  280. package/server/modules/providers/list/gemini/gemini-models.provider.ts +5 -8
  281. package/server/modules/providers/list/gemini/gemini-sessions.provider.ts +6 -6
  282. package/server/modules/providers/list/gemini/gemini-skills.provider.ts +8 -0
  283. package/server/modules/providers/list/opencode/opencode-session-synchronizer.provider.ts +18 -4
  284. package/server/modules/providers/list/opencode/opencode-sessions.provider.ts +9 -12
  285. package/server/modules/providers/provider.routes.ts +167 -1
  286. package/server/modules/providers/services/mcp.service.ts +26 -0
  287. package/server/modules/providers/services/provider-capabilities.service.ts +91 -0
  288. package/server/modules/providers/services/provider-models.service.ts +1 -1
  289. package/server/modules/providers/services/sessions-watcher.service.ts +71 -25
  290. package/server/modules/providers/services/sessions.service.ts +79 -4
  291. package/server/modules/providers/services/skills.service.ts +25 -1
  292. package/server/modules/providers/shared/skills/skills.provider.ts +223 -0
  293. package/server/modules/providers/tests/opencode-sessions.test.ts +49 -0
  294. package/server/modules/providers/tests/skills.test.ts +212 -0
  295. package/server/modules/websocket/README.md +33 -27
  296. package/server/modules/websocket/index.ts +1 -0
  297. package/server/modules/websocket/services/chat-run-registry.service.ts +327 -0
  298. package/server/modules/websocket/services/chat-session-writer.service.ts +145 -0
  299. package/server/modules/websocket/services/chat-websocket.service.ts +292 -207
  300. package/server/modules/websocket/services/desktop-agent-websocket.service.ts +51 -0
  301. package/server/modules/websocket/services/shell-websocket.service.ts +108 -32
  302. package/server/modules/websocket/services/websocket-server.service.ts +12 -0
  303. package/server/modules/websocket/tests/chat-run-registry.test.ts +244 -0
  304. package/server/openai-codex.js +24 -14
  305. package/server/opencode-cli.js +21 -8
  306. package/server/opencode-cli.test.js +20 -1
  307. package/server/routes/settings.js +6 -1
  308. package/server/services/notification-orchestrator.js +3 -224
  309. package/server/services/tests/notification-orchestrator.test.js +80 -0
  310. package/server/shared/interfaces.ts +15 -0
  311. package/server/shared/tests/slice-tail-page.test.ts +42 -0
  312. package/server/shared/types.ts +84 -1
  313. package/server/shared/utils.ts +95 -1
  314. package/server/voice-proxy.js +224 -0
  315. package/dist/assets/index-73Xw3i9v.css +0 -32
  316. package/dist/assets/index-BIHaviaA.js +0 -1361
  317. package/dist/modelConstants.js +0 -854
  318. package/dist-server/server/modules/database/repositories/projects.db.integration.test.js.map +0 -1
  319. package/dist-server/server/modules/database/repositories/sessions.db.integration.test.js.map +0 -1
  320. package/dist-server/server/shared/claude-cli-path.test.js.map +0 -1
  321. package/public/modelConstants.js +0 -854
  322. /package/dist-server/server/modules/database/{repositories → tests}/projects.db.integration.test.js +0 -0
  323. /package/server/modules/database/{repositories → tests}/projects.db.integration.test.ts +0 -0
  324. /package/server/shared/{claude-cli-path.test.ts → tests/claude-cli-path.test.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"skills.test.js","sourceRoot":"","sources":["../../../../../server/modules/providers/tests/skills.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skills.test.js","sourceRoot":"","sources":["../../../../../server/modules/providers/tests/skills.test.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  export { WS_OPEN_STATE, connectedClients } from './services/websocket-state.service.js';
2
2
  export { createWebSocketServer } from './services/websocket-server.service.js';
3
+ export { chatRunRegistry } from './services/chat-run-registry.service.js';
3
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../server/modules/websocket/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AACxF,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../server/modules/websocket/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AACxF,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC"}
@@ -0,0 +1,252 @@
1
+ import path from 'node:path';
2
+ import { projectsDb, sessionsDb } from '../../../modules/database/index.js';
3
+ import { generateDisplayName } from '../../../modules/projects/index.js';
4
+ import { ChatSessionWriter } from '../../../modules/websocket/services/chat-session-writer.service.js';
5
+ import { connectedClients, WS_OPEN_STATE } from '../../../modules/websocket/services/websocket-state.service.js';
6
+ /**
7
+ * How long a completed run stays available for replay. Covers the window
8
+ * between a run finishing and the client refreshing history over REST (for
9
+ * example when the browser tab was asleep while the run completed).
10
+ */
11
+ const COMPLETED_RUN_RETENTION_MS = 5 * 60 * 1000;
12
+ /**
13
+ * Upper bound on buffered events per run so a very long tool-heavy run cannot
14
+ * grow memory unbounded. When exceeded, the oldest events are dropped —
15
+ * a reconnecting client whose `lastSeq` predates the buffer falls back to a
16
+ * REST history refresh, which is always the authoritative source.
17
+ */
18
+ const MAX_BUFFERED_EVENTS_PER_RUN = 5000;
19
+ /**
20
+ * Active and recently-completed runs keyed by app session id.
21
+ *
22
+ * This map is the single in-memory source of truth for "is something running
23
+ * for this session" — the chat websocket handler, abort path, and subscribe
24
+ * path all consult it instead of asking each provider runtime individually.
25
+ */
26
+ const runs = new Map();
27
+ async function broadcastCanonicalSessionUpsert(appSessionId) {
28
+ const row = sessionsDb.getSessionById(appSessionId);
29
+ if (!row || row.isArchived) {
30
+ return;
31
+ }
32
+ const projectPath = row.project_path;
33
+ const project = projectPath ? projectsDb.getProjectPath(projectPath) : null;
34
+ const displayName = project?.custom_project_name?.trim()
35
+ ? project.custom_project_name
36
+ : await generateDisplayName(path.basename(projectPath ?? '') || (projectPath ?? ''), projectPath);
37
+ const payload = JSON.stringify({
38
+ kind: 'session_upserted',
39
+ sessionId: row.session_id,
40
+ providerSessionId: row.provider_session_id,
41
+ provider: row.provider,
42
+ session: {
43
+ id: row.session_id,
44
+ summary: row.custom_name || '',
45
+ messageCount: 0,
46
+ lastActivity: row.updated_at ?? row.created_at ?? new Date().toISOString(),
47
+ },
48
+ project: project
49
+ ? {
50
+ projectId: project.project_id,
51
+ path: project.project_path,
52
+ fullPath: project.project_path,
53
+ displayName,
54
+ isStarred: Boolean(project.isStarred),
55
+ }
56
+ : null,
57
+ timestamp: new Date().toISOString(),
58
+ });
59
+ connectedClients.forEach((client) => {
60
+ if (client.readyState === WS_OPEN_STATE) {
61
+ client.send(payload);
62
+ }
63
+ });
64
+ }
65
+ function evictRunLater(appSessionId) {
66
+ const timer = setTimeout(() => {
67
+ const run = runs.get(appSessionId);
68
+ if (run && run.status === 'completed') {
69
+ runs.delete(appSessionId);
70
+ }
71
+ }, COMPLETED_RUN_RETENTION_MS);
72
+ // Never keep the process alive just to evict a buffered run.
73
+ timer.unref?.();
74
+ }
75
+ /**
76
+ * Decorates one outbound live event for a run and records it in the event log.
77
+ *
78
+ * Responsibilities:
79
+ * 1. Remap `sessionId` (and `actualSessionId` on `complete`) to the stable
80
+ * app session id — provider-native ids never leave the backend.
81
+ * 2. Assign the next `seq` so clients can detect/replay gaps.
82
+ * 3. Buffer the event for `chat.subscribe` replay.
83
+ * 4. Flip the run to `completed` when the terminal `complete` event passes by.
84
+ */
85
+ function decorateAndRecordEvent(run, message) {
86
+ // Exactly-one-complete contract: when a run is aborted the chat handler
87
+ // emits the terminal `complete` immediately, but the killed runtime may
88
+ // still emit its own `complete` from its exit handler moments later.
89
+ // Whichever arrives first wins; the duplicate is dropped here.
90
+ if (message.kind === 'complete' && run.status === 'completed') {
91
+ return null;
92
+ }
93
+ run.lastSeq += 1;
94
+ const outbound = {
95
+ ...message,
96
+ sessionId: run.appSessionId,
97
+ seq: run.lastSeq,
98
+ };
99
+ if (message.kind === 'complete') {
100
+ // The provider may report its own id here; the frontend only ever knows
101
+ // the app id, so the "actual" id is by definition the app id as well.
102
+ outbound.actualSessionId = run.appSessionId;
103
+ run.status = 'completed';
104
+ run.completedAt = Date.now();
105
+ evictRunLater(run.appSessionId);
106
+ }
107
+ run.events.push(outbound);
108
+ if (run.events.length > MAX_BUFFERED_EVENTS_PER_RUN) {
109
+ run.events.splice(0, run.events.length - MAX_BUFFERED_EVENTS_PER_RUN);
110
+ }
111
+ return outbound;
112
+ }
113
+ /**
114
+ * Records the provider-native session id for a run and persists the
115
+ * app-id-to-provider-id mapping so history fetches and future resumes can
116
+ * address the provider transcript.
117
+ *
118
+ * Called from the gateway writer when the runtime either calls
119
+ * `setSessionId(...)` or emits its `session_created` event — whichever
120
+ * happens first wins; later calls with the same id are no-ops.
121
+ */
122
+ function recordProviderSessionId(run, providerSessionId) {
123
+ if (!providerSessionId || run.providerSessionId === providerSessionId) {
124
+ return;
125
+ }
126
+ run.providerSessionId = providerSessionId;
127
+ try {
128
+ sessionsDb.assignProviderSessionId(run.appSessionId, providerSessionId);
129
+ void broadcastCanonicalSessionUpsert(run.appSessionId).catch((error) => {
130
+ const message = error instanceof Error ? error.message : String(error);
131
+ console.error('[ChatRunRegistry] Failed to broadcast canonical session mapping', {
132
+ appSessionId: run.appSessionId,
133
+ providerSessionId,
134
+ error: message,
135
+ });
136
+ });
137
+ }
138
+ catch (error) {
139
+ const message = error instanceof Error ? error.message : String(error);
140
+ console.error('[ChatRunRegistry] Failed to persist provider session id mapping', {
141
+ appSessionId: run.appSessionId,
142
+ providerSessionId,
143
+ error: message,
144
+ });
145
+ }
146
+ }
147
+ /**
148
+ * Registry of live provider runs keyed by the stable app session id.
149
+ *
150
+ * The registry is what makes the websocket protocol provider-independent:
151
+ * every run gets a `ChatSessionWriter` that remaps provider-native session
152
+ * ids to the app id, assigns `seq` numbers, and buffers events for replay —
153
+ * regardless of which provider runtime produced them.
154
+ */
155
+ export const chatRunRegistry = {
156
+ /**
157
+ * Starts tracking a run and returns it, or `null` when a run is already in
158
+ * progress for the session (callers must reject the duplicate send).
159
+ */
160
+ startRun(input) {
161
+ const existing = runs.get(input.appSessionId);
162
+ if (existing && existing.status === 'running') {
163
+ return null;
164
+ }
165
+ const run = {
166
+ appSessionId: input.appSessionId,
167
+ provider: input.provider,
168
+ providerSessionId: input.providerSessionId,
169
+ status: 'running',
170
+ lastSeq: 0,
171
+ events: [],
172
+ writer: null,
173
+ startedAt: Date.now(),
174
+ completedAt: null,
175
+ };
176
+ run.writer = new ChatSessionWriter({
177
+ connection: input.connection,
178
+ userId: input.userId,
179
+ provider: input.provider,
180
+ providerSessionId: input.providerSessionId,
181
+ onProviderSessionId: (providerSessionId) => {
182
+ recordProviderSessionId(run, providerSessionId);
183
+ },
184
+ decorateOutboundEvent: (message) => decorateAndRecordEvent(run, message),
185
+ });
186
+ runs.set(input.appSessionId, run);
187
+ return run;
188
+ },
189
+ getRun(appSessionId) {
190
+ return runs.get(appSessionId);
191
+ },
192
+ isProcessing(appSessionId) {
193
+ return runs.get(appSessionId)?.status === 'running';
194
+ },
195
+ listRunningRuns() {
196
+ return Array.from(runs.values())
197
+ .filter((run) => run.status === 'running')
198
+ .map((run) => ({
199
+ sessionId: run.appSessionId,
200
+ provider: run.provider,
201
+ startedAt: run.startedAt,
202
+ lastSeq: run.lastSeq,
203
+ }));
204
+ },
205
+ /**
206
+ * Re-attaches a run's outbound stream to a (new) websocket connection.
207
+ *
208
+ * This is the generic replacement for the Claude-only writer reconnect:
209
+ * after a page refresh the new socket subscribes and immediately starts
210
+ * receiving the still-running stream, for every provider.
211
+ */
212
+ attachConnection(appSessionId, connection) {
213
+ const run = runs.get(appSessionId);
214
+ if (!run) {
215
+ return false;
216
+ }
217
+ run.writer.updateWebSocket(connection);
218
+ return true;
219
+ },
220
+ /**
221
+ * Returns buffered events with `seq` greater than `afterSeq` for replay.
222
+ *
223
+ * An empty array with `run.lastSeq > afterSeq` not covered by the buffer
224
+ * means the buffer was truncated; the client should refresh over REST.
225
+ */
226
+ replayEvents(appSessionId, afterSeq) {
227
+ const run = runs.get(appSessionId);
228
+ if (!run) {
229
+ return [];
230
+ }
231
+ return run.events.filter((event) => typeof event.seq === 'number' && event.seq > afterSeq);
232
+ },
233
+ /**
234
+ * Emits a synthetic terminal `complete` if (and only if) the run is still
235
+ * marked running. Used when a provider runtime throws or resolves without
236
+ * having produced its own terminal event, and by the abort path.
237
+ */
238
+ completeRun(appSessionId, opts) {
239
+ const run = runs.get(appSessionId);
240
+ if (!run || run.status !== 'running') {
241
+ return;
242
+ }
243
+ run.writer.sendComplete(opts);
244
+ },
245
+ /**
246
+ * Test-only escape hatch: clears every tracked run.
247
+ */
248
+ clearAll() {
249
+ runs.clear();
250
+ },
251
+ };
252
+ //# sourceMappingURL=chat-run-registry.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-run-registry.service.js","sourceRoot":"","sources":["../../../../../server/modules/websocket/services/chat-run-registry.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ import { WS_OPEN_STATE } from '../../../modules/websocket/services/websocket-state.service.js';
2
+ import { createCompleteMessage, readObjectRecord } from '../../../shared/utils.js';
3
+ /**
4
+ * Gateway writer handed to provider runtimes instead of a raw websocket writer.
5
+ *
6
+ * It exposes the exact same surface as `WebSocketWriter` (`send`,
7
+ * `setSessionId`, `getSessionId`, `updateWebSocket`, `userId`,
8
+ * `isWebSocketWriter`) so the provider runtimes (`claude-sdk.js`,
9
+ * `cursor-cli.js`, ...) need zero changes — but everything that flows through
10
+ * it is translated from the provider's world into the app's protocol:
11
+ *
12
+ * - `session_created` events are swallowed and turned into a provider-id
13
+ * mapping; the frontend never learns provider-native ids.
14
+ * - every other event gets `sessionId` remapped to the app session id and a
15
+ * per-run `seq` assigned before being forwarded.
16
+ * - `setSessionId(...)` calls (used by runtimes to label captured ids) are
17
+ * intercepted and recorded as the provider-id mapping as well.
18
+ */
19
+ export class ChatSessionWriter {
20
+ ws;
21
+ userId;
22
+ /**
23
+ * Some runtimes feature-detect their writer with this flag; keep it so the
24
+ * gateway writer is a drop-in replacement for `WebSocketWriter`.
25
+ */
26
+ isWebSocketWriter = true;
27
+ options;
28
+ /**
29
+ * The provider-native session id as the runtime knows it. Kept locally
30
+ * (besides the registry) because runtimes read it back via `getSessionId()`
31
+ * to label their own outgoing events — those labels are remapped on send
32
+ * anyway, but the runtime-visible value must stay provider-native.
33
+ */
34
+ providerSessionId;
35
+ constructor(options) {
36
+ this.options = options;
37
+ this.ws = options.connection;
38
+ this.userId = options.userId;
39
+ this.providerSessionId = options.providerSessionId;
40
+ }
41
+ send(data) {
42
+ const record = readObjectRecord(data);
43
+ if (!record || typeof record.kind !== 'string') {
44
+ // Provider runtimes only emit kind-based normalized messages. Anything
45
+ // else indicates a programming error; drop it rather than leaking an
46
+ // un-remapped payload to the client.
47
+ console.error('[ChatSessionWriter] Dropping non-normalized outbound payload', data);
48
+ return;
49
+ }
50
+ const message = record;
51
+ if (message.kind === 'session_created') {
52
+ const announcedId = typeof message.newSessionId === 'string' && message.newSessionId
53
+ ? message.newSessionId
54
+ : message.sessionId;
55
+ if (announcedId) {
56
+ this.captureProviderSessionId(announcedId);
57
+ }
58
+ // Swallowed on purpose: the frontend already has the stable app session
59
+ // id, so there is no client-side handoff to perform anymore.
60
+ return;
61
+ }
62
+ const outbound = this.options.decorateOutboundEvent(message);
63
+ if (outbound) {
64
+ this.forward(outbound);
65
+ }
66
+ }
67
+ /**
68
+ * Emits the synthetic terminal `complete` for runs that ended without one
69
+ * (runtime crash before completing, or user abort).
70
+ */
71
+ sendComplete(opts) {
72
+ const message = createCompleteMessage({
73
+ provider: this.options.provider,
74
+ sessionId: this.providerSessionId,
75
+ exitCode: opts.exitCode,
76
+ aborted: opts.aborted,
77
+ });
78
+ const outbound = this.options.decorateOutboundEvent(message);
79
+ if (outbound) {
80
+ this.forward(outbound);
81
+ }
82
+ }
83
+ updateWebSocket(newConnection) {
84
+ this.ws = newConnection;
85
+ }
86
+ setSessionId(sessionId) {
87
+ this.captureProviderSessionId(sessionId);
88
+ }
89
+ getSessionId() {
90
+ return this.providerSessionId;
91
+ }
92
+ captureProviderSessionId(providerSessionId) {
93
+ if (!providerSessionId || this.providerSessionId === providerSessionId) {
94
+ return;
95
+ }
96
+ this.providerSessionId = providerSessionId;
97
+ this.options.onProviderSessionId(providerSessionId);
98
+ }
99
+ forward(message) {
100
+ if (this.ws.readyState === WS_OPEN_STATE) {
101
+ this.ws.send(JSON.stringify(message));
102
+ }
103
+ }
104
+ }
105
+ //# sourceMappingURL=chat-session-writer.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-session-writer.service.js","sourceRoot":"","sources":["../../../../../server/modules/websocket/services/chat-session-writer.service.ts"],"names":[],"mappings":"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"}