@cloudcli-ai/cloudcli 1.29.5 → 1.31.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 (354) hide show
  1. package/README.de.md +1 -1
  2. package/README.ja.md +1 -1
  3. package/README.ko.md +1 -1
  4. package/README.md +1 -1
  5. package/README.ru.md +1 -1
  6. package/README.tr.md +252 -0
  7. package/README.zh-CN.md +1 -1
  8. package/dist/assets/index-DF8TTVHl.css +32 -0
  9. package/dist/assets/index-DbZAcc9z.js +1262 -0
  10. package/dist/index.html +2 -2
  11. package/dist-server/server/claude-sdk.js +13 -8
  12. package/dist-server/server/claude-sdk.js.map +1 -1
  13. package/dist-server/server/cursor-cli.js +7 -7
  14. package/dist-server/server/cursor-cli.js.map +1 -1
  15. package/dist-server/server/gemini-cli.js +5 -5
  16. package/dist-server/server/gemini-cli.js.map +1 -1
  17. package/dist-server/server/gemini-response-handler.js +2 -2
  18. package/dist-server/server/gemini-response-handler.js.map +1 -1
  19. package/dist-server/server/index.js +139 -977
  20. package/dist-server/server/index.js.map +1 -1
  21. package/dist-server/server/middleware/auth.js +1 -1
  22. package/dist-server/server/middleware/auth.js.map +1 -1
  23. package/dist-server/server/modules/database/connection.js +125 -0
  24. package/dist-server/server/modules/database/connection.js.map +1 -0
  25. package/dist-server/server/modules/database/index.js +13 -0
  26. package/dist-server/server/modules/database/index.js.map +1 -0
  27. package/dist-server/server/modules/database/init-db.js +18 -0
  28. package/dist-server/server/modules/database/init-db.js.map +1 -0
  29. package/dist-server/server/modules/database/migrations.js +370 -0
  30. package/dist-server/server/modules/database/migrations.js.map +1 -0
  31. package/dist-server/server/modules/database/repositories/api-keys.js +72 -0
  32. package/dist-server/server/modules/database/repositories/api-keys.js.map +1 -0
  33. package/dist-server/server/modules/database/repositories/app-config.js +47 -0
  34. package/dist-server/server/modules/database/repositories/app-config.js.map +1 -0
  35. package/dist-server/server/modules/database/repositories/credentials.js +68 -0
  36. package/dist-server/server/modules/database/repositories/credentials.js.map +1 -0
  37. package/dist-server/server/modules/database/repositories/github-tokens.js +54 -0
  38. package/dist-server/server/modules/database/repositories/github-tokens.js.map +1 -0
  39. package/dist-server/server/modules/database/repositories/notification-preferences.js +72 -0
  40. package/dist-server/server/modules/database/repositories/notification-preferences.js.map +1 -0
  41. package/dist-server/server/modules/database/repositories/projects.db.integration.test.js +64 -0
  42. package/dist-server/server/modules/database/repositories/projects.db.integration.test.js.map +1 -0
  43. package/dist-server/server/modules/database/repositories/projects.db.js +160 -0
  44. package/dist-server/server/modules/database/repositories/projects.db.js.map +1 -0
  45. package/dist-server/server/modules/database/repositories/push-subscriptions.js +49 -0
  46. package/dist-server/server/modules/database/repositories/push-subscriptions.js.map +1 -0
  47. package/dist-server/server/modules/database/repositories/scan-state.db.js +31 -0
  48. package/dist-server/server/modules/database/repositories/scan-state.db.js.map +1 -0
  49. package/dist-server/server/modules/database/repositories/sessions.db.js +109 -0
  50. package/dist-server/server/modules/database/repositories/sessions.db.js.map +1 -0
  51. package/dist-server/server/modules/database/repositories/users.js +88 -0
  52. package/dist-server/server/modules/database/repositories/users.js.map +1 -0
  53. package/dist-server/server/modules/database/repositories/vapid-keys.js +38 -0
  54. package/dist-server/server/modules/database/repositories/vapid-keys.js.map +1 -0
  55. package/dist-server/server/modules/database/schema.js +143 -0
  56. package/dist-server/server/modules/database/schema.js.map +1 -0
  57. package/dist-server/server/modules/projects/index.js +4 -0
  58. package/dist-server/server/modules/projects/index.js.map +1 -0
  59. package/dist-server/server/modules/projects/projects.routes.js +188 -0
  60. package/dist-server/server/modules/projects/projects.routes.js.map +1 -0
  61. package/dist-server/server/modules/projects/services/project-clone.service.js +219 -0
  62. package/dist-server/server/modules/projects/services/project-clone.service.js.map +1 -0
  63. package/dist-server/server/modules/projects/services/project-delete.service.js +65 -0
  64. package/dist-server/server/modules/projects/services/project-delete.service.js.map +1 -0
  65. package/dist-server/server/modules/projects/services/project-management.service.js +93 -0
  66. package/dist-server/server/modules/projects/services/project-management.service.js.map +1 -0
  67. package/dist-server/server/modules/projects/services/project-star.service.js +60 -0
  68. package/dist-server/server/modules/projects/services/project-star.service.js.map +1 -0
  69. package/dist-server/server/modules/projects/services/projects-has-taskmaster.service.js +167 -0
  70. package/dist-server/server/modules/projects/services/projects-has-taskmaster.service.js.map +1 -0
  71. package/dist-server/server/modules/projects/services/projects-with-sessions-fetch.service.js +169 -0
  72. package/dist-server/server/modules/projects/services/projects-with-sessions-fetch.service.js.map +1 -0
  73. package/dist-server/server/modules/projects/tests/project-clone.service.test.js +126 -0
  74. package/dist-server/server/modules/projects/tests/project-clone.service.test.js.map +1 -0
  75. package/dist-server/server/modules/projects/tests/project-management.service.test.js +85 -0
  76. package/dist-server/server/modules/projects/tests/project-management.service.test.js.map +1 -0
  77. package/dist-server/server/modules/projects/tests/project-star.service.test.js +95 -0
  78. package/dist-server/server/modules/projects/tests/project-star.service.test.js.map +1 -0
  79. package/dist-server/server/modules/projects/tests/projects-has-taskmaster.service.test.js +87 -0
  80. package/dist-server/server/modules/projects/tests/projects-has-taskmaster.service.test.js.map +1 -0
  81. package/dist-server/server/modules/providers/index.js +4 -0
  82. package/dist-server/server/modules/providers/index.js.map +1 -0
  83. package/dist-server/server/modules/providers/list/claude/claude-auth.provider.js +103 -0
  84. package/dist-server/server/modules/providers/list/claude/claude-auth.provider.js.map +1 -0
  85. package/dist-server/server/modules/providers/list/claude/claude-mcp.provider.js +103 -0
  86. package/dist-server/server/modules/providers/list/claude/claude-mcp.provider.js.map +1 -0
  87. package/dist-server/server/modules/providers/list/claude/claude-session-synchronizer.provider.js +63 -0
  88. package/dist-server/server/modules/providers/list/claude/claude-session-synchronizer.provider.js.map +1 -0
  89. package/dist-server/server/modules/providers/list/claude/claude-sessions.provider.js +403 -0
  90. package/dist-server/server/modules/providers/list/claude/claude-sessions.provider.js.map +1 -0
  91. package/dist-server/server/modules/providers/list/claude/claude.provider.js +15 -0
  92. package/dist-server/server/modules/providers/list/claude/claude.provider.js.map +1 -0
  93. package/dist-server/server/modules/providers/list/codex/codex-auth.provider.js +84 -0
  94. package/dist-server/server/modules/providers/list/codex/codex-auth.provider.js.map +1 -0
  95. package/dist-server/server/modules/providers/list/codex/codex-mcp.provider.js +107 -0
  96. package/dist-server/server/modules/providers/list/codex/codex-mcp.provider.js.map +1 -0
  97. package/dist-server/server/modules/providers/list/codex/codex-session-synchronizer.provider.js +71 -0
  98. package/dist-server/server/modules/providers/list/codex/codex-session-synchronizer.provider.js.map +1 -0
  99. package/dist-server/server/modules/providers/list/codex/codex-sessions.provider.js +494 -0
  100. package/dist-server/server/modules/providers/list/codex/codex-sessions.provider.js.map +1 -0
  101. package/dist-server/server/modules/providers/list/codex/codex.provider.js +15 -0
  102. package/dist-server/server/modules/providers/list/codex/codex.provider.js.map +1 -0
  103. package/dist-server/server/modules/providers/list/cursor/cursor-auth.provider.js +118 -0
  104. package/dist-server/server/modules/providers/list/cursor/cursor-auth.provider.js.map +1 -0
  105. package/dist-server/server/modules/providers/list/cursor/cursor-mcp.provider.js +80 -0
  106. package/dist-server/server/modules/providers/list/cursor/cursor-mcp.provider.js.map +1 -0
  107. package/dist-server/server/modules/providers/list/cursor/cursor-session-synchronizer.provider.js +127 -0
  108. package/dist-server/server/modules/providers/list/cursor/cursor-session-synchronizer.provider.js.map +1 -0
  109. package/dist-server/server/modules/providers/list/cursor/cursor-sessions.provider.js +369 -0
  110. package/dist-server/server/modules/providers/list/cursor/cursor-sessions.provider.js.map +1 -0
  111. package/dist-server/server/modules/providers/list/cursor/cursor.provider.js +15 -0
  112. package/dist-server/server/modules/providers/list/cursor/cursor.provider.js.map +1 -0
  113. package/dist-server/server/modules/providers/list/gemini/gemini-auth.provider.js +131 -0
  114. package/dist-server/server/modules/providers/list/gemini/gemini-auth.provider.js.map +1 -0
  115. package/dist-server/server/modules/providers/list/gemini/gemini-mcp.provider.js +82 -0
  116. package/dist-server/server/modules/providers/list/gemini/gemini-mcp.provider.js.map +1 -0
  117. package/dist-server/server/modules/providers/list/gemini/gemini-session-synchronizer.provider.js +296 -0
  118. package/dist-server/server/modules/providers/list/gemini/gemini-session-synchronizer.provider.js.map +1 -0
  119. package/dist-server/server/modules/providers/list/gemini/gemini-sessions.provider.js +474 -0
  120. package/dist-server/server/modules/providers/list/gemini/gemini-sessions.provider.js.map +1 -0
  121. package/dist-server/server/modules/providers/list/gemini/gemini.provider.js +15 -0
  122. package/dist-server/server/modules/providers/list/gemini/gemini.provider.js.map +1 -0
  123. package/dist-server/server/modules/providers/provider.registry.js +31 -0
  124. package/dist-server/server/modules/providers/provider.registry.js.map +1 -0
  125. package/dist-server/server/modules/providers/provider.routes.js +331 -0
  126. package/dist-server/server/modules/providers/provider.routes.js.map +1 -0
  127. package/dist-server/server/modules/providers/services/mcp.service.js +69 -0
  128. package/dist-server/server/modules/providers/services/mcp.service.js.map +1 -0
  129. package/dist-server/server/modules/providers/services/provider-auth.service.js +25 -0
  130. package/dist-server/server/modules/providers/services/provider-auth.service.js.map +1 -0
  131. package/dist-server/server/modules/providers/services/session-conversations-search.service.js +868 -0
  132. package/dist-server/server/modules/providers/services/session-conversations-search.service.js.map +1 -0
  133. package/dist-server/server/modules/providers/services/session-synchronizer.service.js +56 -0
  134. package/dist-server/server/modules/providers/services/session-synchronizer.service.js.map +1 -0
  135. package/dist-server/server/modules/providers/services/sessions-watcher.service.js +234 -0
  136. package/dist-server/server/modules/providers/services/sessions-watcher.service.js.map +1 -0
  137. package/dist-server/server/modules/providers/services/sessions.service.js +104 -0
  138. package/dist-server/server/modules/providers/services/sessions.service.js.map +1 -0
  139. package/dist-server/server/modules/providers/shared/base/abstract.provider.js +14 -0
  140. package/dist-server/server/modules/providers/shared/base/abstract.provider.js.map +1 -0
  141. package/dist-server/server/modules/providers/shared/mcp/mcp.provider.js +102 -0
  142. package/dist-server/server/modules/providers/shared/mcp/mcp.provider.js.map +1 -0
  143. package/dist-server/server/modules/providers/tests/mcp.test.js +250 -0
  144. package/dist-server/server/modules/providers/tests/mcp.test.js.map +1 -0
  145. package/dist-server/server/modules/websocket/index.js +3 -0
  146. package/dist-server/server/modules/websocket/index.js.map +1 -0
  147. package/dist-server/server/modules/websocket/services/chat-websocket.service.js +188 -0
  148. package/dist-server/server/modules/websocket/services/chat-websocket.service.js.map +1 -0
  149. package/dist-server/server/modules/websocket/services/plugin-websocket-proxy.service.js +52 -0
  150. package/dist-server/server/modules/websocket/services/plugin-websocket-proxy.service.js.map +1 -0
  151. package/dist-server/server/modules/websocket/services/shell-websocket.service.js +334 -0
  152. package/dist-server/server/modules/websocket/services/shell-websocket.service.js.map +1 -0
  153. package/dist-server/server/modules/websocket/services/websocket-auth.service.js +32 -0
  154. package/dist-server/server/modules/websocket/services/websocket-auth.service.js.map +1 -0
  155. package/dist-server/server/modules/websocket/services/websocket-server.service.js +36 -0
  156. package/dist-server/server/modules/websocket/services/websocket-server.service.js.map +1 -0
  157. package/dist-server/server/modules/websocket/services/websocket-state.service.js +14 -0
  158. package/dist-server/server/modules/websocket/services/websocket-state.service.js.map +1 -0
  159. package/dist-server/server/modules/websocket/services/websocket-writer.service.js +32 -0
  160. package/dist-server/server/modules/websocket/services/websocket-writer.service.js.map +1 -0
  161. package/dist-server/server/openai-codex.js +5 -5
  162. package/dist-server/server/openai-codex.js.map +1 -1
  163. package/dist-server/server/routes/agent.js +10 -17
  164. package/dist-server/server/routes/agent.js.map +1 -1
  165. package/dist-server/server/routes/auth.js +3 -1
  166. package/dist-server/server/routes/auth.js.map +1 -1
  167. package/dist-server/server/routes/commands.js +1 -45
  168. package/dist-server/server/routes/commands.js.map +1 -1
  169. package/dist-server/server/routes/cursor.js +9 -489
  170. package/dist-server/server/routes/cursor.js.map +1 -1
  171. package/dist-server/server/routes/gemini.js +2 -2
  172. package/dist-server/server/routes/gemini.js.map +1 -1
  173. package/dist-server/server/routes/git.js +33 -29
  174. package/dist-server/server/routes/git.js.map +1 -1
  175. package/dist-server/server/routes/mcp-utils.js +1 -18
  176. package/dist-server/server/routes/mcp-utils.js.map +1 -1
  177. package/dist-server/server/routes/settings.js +11 -1
  178. package/dist-server/server/routes/settings.js.map +1 -1
  179. package/dist-server/server/routes/taskmaster.js +97 -569
  180. package/dist-server/server/routes/taskmaster.js.map +1 -1
  181. package/dist-server/server/routes/user.js +1 -1
  182. package/dist-server/server/routes/user.js.map +1 -1
  183. package/dist-server/server/services/notification-orchestrator.js +2 -2
  184. package/dist-server/server/services/notification-orchestrator.js.map +1 -1
  185. package/dist-server/server/services/vapid-keys.js +2 -1
  186. package/dist-server/server/services/vapid-keys.js.map +1 -1
  187. package/dist-server/server/shared/interfaces.js +2 -0
  188. package/dist-server/server/shared/interfaces.js.map +1 -0
  189. package/dist-server/server/shared/types.js +2 -0
  190. package/dist-server/server/shared/types.js.map +1 -0
  191. package/dist-server/server/shared/utils.js +551 -0
  192. package/dist-server/server/shared/utils.js.map +1 -0
  193. package/dist-server/server/utils/mcp-detector.js +0 -49
  194. package/dist-server/server/utils/mcp-detector.js.map +1 -1
  195. package/dist-server/server/utils/taskmaster-websocket.js +18 -12
  196. package/dist-server/server/utils/taskmaster-websocket.js.map +1 -1
  197. package/dist-server/shared/modelConstants.js +3 -1
  198. package/dist-server/shared/modelConstants.js.map +1 -1
  199. package/package.json +7 -2
  200. package/server/claude-sdk.js +14 -8
  201. package/server/cursor-cli.js +7 -7
  202. package/server/gemini-cli.js +5 -5
  203. package/server/gemini-response-handler.js +2 -2
  204. package/server/index.js +173 -1035
  205. package/server/middleware/auth.js +1 -1
  206. package/server/modules/database/connection.ts +143 -0
  207. package/server/modules/database/index.ts +12 -0
  208. package/server/modules/database/init-db.ts +17 -0
  209. package/server/modules/database/migrations.ts +442 -0
  210. package/server/modules/database/repositories/api-keys.ts +119 -0
  211. package/server/modules/database/repositories/app-config.ts +53 -0
  212. package/server/modules/database/repositories/credentials.ts +106 -0
  213. package/server/modules/database/repositories/github-tokens.ts +100 -0
  214. package/server/modules/database/repositories/notification-preferences.ts +103 -0
  215. package/server/modules/database/repositories/projects.db.integration.test.ts +72 -0
  216. package/server/modules/database/repositories/projects.db.ts +183 -0
  217. package/server/modules/database/repositories/push-subscriptions.ts +80 -0
  218. package/server/modules/database/repositories/scan-state.db.ts +42 -0
  219. package/server/modules/database/repositories/sessions.db.ts +174 -0
  220. package/server/modules/database/repositories/users.ts +140 -0
  221. package/server/modules/database/repositories/vapid-keys.ts +57 -0
  222. package/server/modules/database/schema.ts +152 -0
  223. package/server/modules/projects/index.ts +6 -0
  224. package/server/modules/projects/projects.routes.ts +247 -0
  225. package/server/modules/projects/services/project-clone.service.ts +321 -0
  226. package/server/modules/projects/services/project-delete.service.ts +75 -0
  227. package/server/modules/projects/services/project-management.service.ts +150 -0
  228. package/server/modules/projects/services/project-star.service.ts +78 -0
  229. package/server/modules/projects/services/projects-has-taskmaster.service.ts +248 -0
  230. package/server/modules/projects/services/projects-with-sessions-fetch.service.ts +285 -0
  231. package/server/modules/projects/tests/project-clone.service.test.ts +183 -0
  232. package/server/modules/projects/tests/project-management.service.test.ts +117 -0
  233. package/server/modules/projects/tests/project-star.service.test.ts +123 -0
  234. package/server/modules/projects/tests/projects-has-taskmaster.service.test.ts +105 -0
  235. package/server/modules/providers/index.ts +4 -0
  236. package/server/modules/providers/list/claude/claude-auth.provider.ts +123 -0
  237. package/server/modules/providers/list/claude/claude-mcp.provider.ts +135 -0
  238. package/server/modules/providers/list/claude/claude-session-synchronizer.provider.ts +110 -0
  239. package/server/modules/providers/list/claude/claude-sessions.provider.ts +475 -0
  240. package/server/modules/providers/list/claude/claude.provider.ts +17 -0
  241. package/server/modules/providers/list/codex/codex-auth.provider.ts +100 -0
  242. package/server/modules/providers/list/codex/codex-mcp.provider.ts +135 -0
  243. package/server/modules/providers/list/codex/codex-session-synchronizer.provider.ts +119 -0
  244. package/server/modules/providers/list/codex/codex-sessions.provider.ts +564 -0
  245. package/server/modules/providers/list/codex/codex.provider.ts +17 -0
  246. package/server/modules/providers/list/cursor/cursor-auth.provider.ts +143 -0
  247. package/server/modules/providers/list/cursor/cursor-mcp.provider.ts +108 -0
  248. package/server/modules/providers/list/cursor/cursor-session-synchronizer.provider.ts +176 -0
  249. package/server/modules/providers/list/cursor/cursor-sessions.provider.ts +421 -0
  250. package/server/modules/providers/list/cursor/cursor.provider.ts +17 -0
  251. package/server/modules/providers/list/gemini/gemini-auth.provider.ts +151 -0
  252. package/server/modules/providers/list/gemini/gemini-mcp.provider.ts +110 -0
  253. package/server/modules/providers/list/gemini/gemini-session-synchronizer.provider.ts +401 -0
  254. package/server/modules/providers/list/gemini/gemini-sessions.provider.ts +541 -0
  255. package/server/modules/providers/list/gemini/gemini.provider.ts +17 -0
  256. package/server/modules/providers/provider.registry.ts +36 -0
  257. package/server/modules/providers/provider.routes.ts +425 -0
  258. package/server/modules/providers/services/mcp.service.ts +94 -0
  259. package/server/modules/providers/services/provider-auth.service.ts +26 -0
  260. package/server/modules/providers/services/session-conversations-search.service.ts +1167 -0
  261. package/server/modules/providers/services/session-synchronizer.service.ts +74 -0
  262. package/server/modules/providers/services/sessions-watcher.service.ts +283 -0
  263. package/server/modules/providers/services/sessions.service.ts +130 -0
  264. package/server/modules/providers/shared/base/abstract.provider.ts +27 -0
  265. package/server/modules/providers/shared/mcp/mcp.provider.ts +151 -0
  266. package/server/modules/providers/tests/mcp.test.ts +293 -0
  267. package/server/modules/websocket/README.md +267 -0
  268. package/server/modules/websocket/index.ts +2 -0
  269. package/server/modules/websocket/services/chat-websocket.service.ts +271 -0
  270. package/server/modules/websocket/services/plugin-websocket-proxy.service.ts +65 -0
  271. package/server/modules/websocket/services/shell-websocket.service.ts +453 -0
  272. package/server/modules/websocket/services/websocket-auth.service.ts +54 -0
  273. package/server/modules/websocket/services/websocket-server.service.ts +58 -0
  274. package/server/modules/websocket/services/websocket-state.service.ts +16 -0
  275. package/server/modules/websocket/services/websocket-writer.service.ts +38 -0
  276. package/server/openai-codex.js +5 -5
  277. package/server/routes/agent.js +11 -16
  278. package/server/routes/auth.js +4 -2
  279. package/server/routes/commands.js +1 -50
  280. package/server/routes/cursor.js +15 -527
  281. package/server/routes/gemini.js +3 -2
  282. package/server/routes/git.js +33 -28
  283. package/server/routes/mcp-utils.js +2 -19
  284. package/server/routes/settings.js +11 -1
  285. package/server/routes/taskmaster.js +107 -602
  286. package/server/routes/user.js +1 -1
  287. package/server/services/notification-orchestrator.js +3 -2
  288. package/server/services/vapid-keys.js +2 -1
  289. package/server/shared/interfaces.ts +92 -0
  290. package/server/shared/types.ts +327 -0
  291. package/server/shared/utils.ts +669 -0
  292. package/server/tsconfig.json +6 -3
  293. package/server/utils/mcp-detector.js +0 -51
  294. package/server/utils/taskmaster-websocket.js +19 -13
  295. package/shared/modelConstants.js +3 -1
  296. package/dist/assets/index-BBAE1OJ_.css +0 -32
  297. package/dist/assets/index-Ci1GOyV7.js +0 -1262
  298. package/dist-server/server/database/db.js +0 -535
  299. package/dist-server/server/database/db.js.map +0 -1
  300. package/dist-server/server/database/schema.js +0 -97
  301. package/dist-server/server/database/schema.js.map +0 -1
  302. package/dist-server/server/projects.js +0 -2325
  303. package/dist-server/server/projects.js.map +0 -1
  304. package/dist-server/server/providers/claude/adapter.js +0 -266
  305. package/dist-server/server/providers/claude/adapter.js.map +0 -1
  306. package/dist-server/server/providers/claude/status.js +0 -121
  307. package/dist-server/server/providers/claude/status.js.map +0 -1
  308. package/dist-server/server/providers/codex/adapter.js +0 -232
  309. package/dist-server/server/providers/codex/adapter.js.map +0 -1
  310. package/dist-server/server/providers/codex/status.js +0 -70
  311. package/dist-server/server/providers/codex/status.js.map +0 -1
  312. package/dist-server/server/providers/cursor/adapter.js +0 -342
  313. package/dist-server/server/providers/cursor/adapter.js.map +0 -1
  314. package/dist-server/server/providers/cursor/status.js +0 -118
  315. package/dist-server/server/providers/cursor/status.js.map +0 -1
  316. package/dist-server/server/providers/gemini/adapter.js +0 -174
  317. package/dist-server/server/providers/gemini/adapter.js.map +0 -1
  318. package/dist-server/server/providers/gemini/status.js +0 -104
  319. package/dist-server/server/providers/gemini/status.js.map +0 -1
  320. package/dist-server/server/providers/registry.js +0 -58
  321. package/dist-server/server/providers/registry.js.map +0 -1
  322. package/dist-server/server/providers/types.js +0 -117
  323. package/dist-server/server/providers/types.js.map +0 -1
  324. package/dist-server/server/providers/utils.js +0 -28
  325. package/dist-server/server/providers/utils.js.map +0 -1
  326. package/dist-server/server/routes/cli-auth.js +0 -25
  327. package/dist-server/server/routes/cli-auth.js.map +0 -1
  328. package/dist-server/server/routes/codex.js +0 -294
  329. package/dist-server/server/routes/codex.js.map +0 -1
  330. package/dist-server/server/routes/mcp.js +0 -480
  331. package/dist-server/server/routes/mcp.js.map +0 -1
  332. package/dist-server/server/routes/messages.js +0 -56
  333. package/dist-server/server/routes/messages.js.map +0 -1
  334. package/dist-server/server/routes/projects.js +0 -505
  335. package/dist-server/server/routes/projects.js.map +0 -1
  336. package/server/database/db.js +0 -593
  337. package/server/database/schema.js +0 -102
  338. package/server/projects.js +0 -2555
  339. package/server/providers/claude/adapter.js +0 -278
  340. package/server/providers/claude/status.js +0 -136
  341. package/server/providers/codex/adapter.js +0 -248
  342. package/server/providers/codex/status.js +0 -78
  343. package/server/providers/cursor/adapter.js +0 -348
  344. package/server/providers/cursor/status.js +0 -128
  345. package/server/providers/gemini/adapter.js +0 -186
  346. package/server/providers/gemini/status.js +0 -111
  347. package/server/providers/registry.js +0 -67
  348. package/server/providers/types.js +0 -132
  349. package/server/providers/utils.js +0 -29
  350. package/server/routes/cli-auth.js +0 -27
  351. package/server/routes/codex.js +0 -329
  352. package/server/routes/mcp.js +0 -552
  353. package/server/routes/messages.js +0 -61
  354. package/server/routes/projects.js +0 -548
@@ -2,12 +2,9 @@ import express from 'express';
2
2
  import { promises as fs } from 'fs';
3
3
  import path from 'path';
4
4
  import os from 'os';
5
- import Database from 'better-sqlite3';
6
- import crypto from 'crypto';
7
5
  import { CURSOR_MODELS } from '../../shared/modelConstants.js';
8
- import { applyCustomSessionNames } from '../database/db.js';
9
6
  const router = express.Router();
10
- // GET /api/cursor/config - Read Cursor CLI configuration
7
+ // GET /api/cursor/config - Read Cursor CLI configuration.
11
8
  router.get('/config', async (req, res) => {
12
9
  try {
13
10
  const configPath = path.join(os.homedir(), '.cursor', 'cli-config.json');
@@ -16,28 +13,27 @@ router.get('/config', async (req, res) => {
16
13
  const config = JSON.parse(configContent);
17
14
  res.json({
18
15
  success: true,
19
- config: config,
20
- path: configPath
16
+ config,
17
+ path: configPath,
21
18
  });
22
19
  }
23
20
  catch (error) {
24
- // Config doesn't exist or is invalid
21
+ // Config doesn't exist or is invalid, so return the UI default shape.
25
22
  console.log('Cursor config not found or invalid:', error.message);
26
- // Return default config
27
23
  res.json({
28
24
  success: true,
29
25
  config: {
30
26
  version: 1,
31
27
  model: {
32
28
  modelId: CURSOR_MODELS.DEFAULT,
33
- displayName: "GPT-5"
29
+ displayName: 'GPT-5',
34
30
  },
35
31
  permissions: {
36
32
  allow: [],
37
- deny: []
38
- }
33
+ deny: [],
34
+ },
39
35
  },
40
- isDefault: true
36
+ isDefault: true,
41
37
  });
42
38
  }
43
39
  }
@@ -45,483 +41,7 @@ router.get('/config', async (req, res) => {
45
41
  console.error('Error reading Cursor config:', error);
46
42
  res.status(500).json({
47
43
  error: 'Failed to read Cursor configuration',
48
- details: error.message
49
- });
50
- }
51
- });
52
- // POST /api/cursor/config - Update Cursor CLI configuration
53
- router.post('/config', async (req, res) => {
54
- try {
55
- const { permissions, model } = req.body;
56
- const configPath = path.join(os.homedir(), '.cursor', 'cli-config.json');
57
- // Read existing config or create default
58
- let config = {
59
- version: 1,
60
- editor: {
61
- vimMode: false
62
- },
63
- hasChangedDefaultModel: false,
64
- privacyCache: {
65
- ghostMode: false,
66
- privacyMode: 3,
67
- updatedAt: Date.now()
68
- }
69
- };
70
- try {
71
- const existing = await fs.readFile(configPath, 'utf8');
72
- config = JSON.parse(existing);
73
- }
74
- catch (error) {
75
- // Config doesn't exist, use defaults
76
- console.log('Creating new Cursor config');
77
- }
78
- // Update permissions if provided
79
- if (permissions) {
80
- config.permissions = {
81
- allow: permissions.allow || [],
82
- deny: permissions.deny || []
83
- };
84
- }
85
- // Update model if provided
86
- if (model) {
87
- config.model = model;
88
- config.hasChangedDefaultModel = true;
89
- }
90
- // Ensure directory exists
91
- const configDir = path.dirname(configPath);
92
- await fs.mkdir(configDir, { recursive: true });
93
- // Write updated config
94
- await fs.writeFile(configPath, JSON.stringify(config, null, 2));
95
- res.json({
96
- success: true,
97
- config: config,
98
- message: 'Cursor configuration updated successfully'
99
- });
100
- }
101
- catch (error) {
102
- console.error('Error updating Cursor config:', error);
103
- res.status(500).json({
104
- error: 'Failed to update Cursor configuration',
105
- details: error.message
106
- });
107
- }
108
- });
109
- // GET /api/cursor/mcp - Read Cursor MCP servers configuration
110
- router.get('/mcp', async (req, res) => {
111
- try {
112
- const mcpPath = path.join(os.homedir(), '.cursor', 'mcp.json');
113
- try {
114
- const mcpContent = await fs.readFile(mcpPath, 'utf8');
115
- const mcpConfig = JSON.parse(mcpContent);
116
- // Convert to UI-friendly format
117
- const servers = [];
118
- if (mcpConfig.mcpServers && typeof mcpConfig.mcpServers === 'object') {
119
- for (const [name, config] of Object.entries(mcpConfig.mcpServers)) {
120
- const server = {
121
- id: name,
122
- name: name,
123
- type: 'stdio',
124
- scope: 'cursor',
125
- config: {},
126
- raw: config
127
- };
128
- // Determine transport type and extract config
129
- if (config.command) {
130
- server.type = 'stdio';
131
- server.config.command = config.command;
132
- server.config.args = config.args || [];
133
- server.config.env = config.env || {};
134
- }
135
- else if (config.url) {
136
- server.type = config.transport || 'http';
137
- server.config.url = config.url;
138
- server.config.headers = config.headers || {};
139
- }
140
- servers.push(server);
141
- }
142
- }
143
- res.json({
144
- success: true,
145
- servers: servers,
146
- path: mcpPath
147
- });
148
- }
149
- catch (error) {
150
- // MCP config doesn't exist
151
- console.log('Cursor MCP config not found:', error.message);
152
- res.json({
153
- success: true,
154
- servers: [],
155
- isDefault: true
156
- });
157
- }
158
- }
159
- catch (error) {
160
- console.error('Error reading Cursor MCP config:', error);
161
- res.status(500).json({
162
- error: 'Failed to read Cursor MCP configuration',
163
- details: error.message
164
- });
165
- }
166
- });
167
- // POST /api/cursor/mcp/add - Add MCP server to Cursor configuration
168
- router.post('/mcp/add', async (req, res) => {
169
- try {
170
- const { name, type = 'stdio', command, args = [], url, headers = {}, env = {} } = req.body;
171
- const mcpPath = path.join(os.homedir(), '.cursor', 'mcp.json');
172
- console.log(`➕ Adding MCP server to Cursor config: ${name}`);
173
- // Read existing config or create new
174
- let mcpConfig = { mcpServers: {} };
175
- try {
176
- const existing = await fs.readFile(mcpPath, 'utf8');
177
- mcpConfig = JSON.parse(existing);
178
- if (!mcpConfig.mcpServers) {
179
- mcpConfig.mcpServers = {};
180
- }
181
- }
182
- catch (error) {
183
- console.log('Creating new Cursor MCP config');
184
- }
185
- // Build server config based on type
186
- let serverConfig = {};
187
- if (type === 'stdio') {
188
- serverConfig = {
189
- command: command,
190
- args: args,
191
- env: env
192
- };
193
- }
194
- else if (type === 'http' || type === 'sse') {
195
- serverConfig = {
196
- url: url,
197
- transport: type,
198
- headers: headers
199
- };
200
- }
201
- // Add server to config
202
- mcpConfig.mcpServers[name] = serverConfig;
203
- // Ensure directory exists
204
- const mcpDir = path.dirname(mcpPath);
205
- await fs.mkdir(mcpDir, { recursive: true });
206
- // Write updated config
207
- await fs.writeFile(mcpPath, JSON.stringify(mcpConfig, null, 2));
208
- res.json({
209
- success: true,
210
- message: `MCP server "${name}" added to Cursor configuration`,
211
- config: mcpConfig
212
- });
213
- }
214
- catch (error) {
215
- console.error('Error adding MCP server to Cursor:', error);
216
- res.status(500).json({
217
- error: 'Failed to add MCP server',
218
- details: error.message
219
- });
220
- }
221
- });
222
- // DELETE /api/cursor/mcp/:name - Remove MCP server from Cursor configuration
223
- router.delete('/mcp/:name', async (req, res) => {
224
- try {
225
- const { name } = req.params;
226
- const mcpPath = path.join(os.homedir(), '.cursor', 'mcp.json');
227
- console.log(`🗑️ Removing MCP server from Cursor config: ${name}`);
228
- // Read existing config
229
- let mcpConfig = { mcpServers: {} };
230
- try {
231
- const existing = await fs.readFile(mcpPath, 'utf8');
232
- mcpConfig = JSON.parse(existing);
233
- }
234
- catch (error) {
235
- return res.status(404).json({
236
- error: 'Cursor MCP configuration not found'
237
- });
238
- }
239
- // Check if server exists
240
- if (!mcpConfig.mcpServers || !mcpConfig.mcpServers[name]) {
241
- return res.status(404).json({
242
- error: `MCP server "${name}" not found in Cursor configuration`
243
- });
244
- }
245
- // Remove server from config
246
- delete mcpConfig.mcpServers[name];
247
- // Write updated config
248
- await fs.writeFile(mcpPath, JSON.stringify(mcpConfig, null, 2));
249
- res.json({
250
- success: true,
251
- message: `MCP server "${name}" removed from Cursor configuration`,
252
- config: mcpConfig
253
- });
254
- }
255
- catch (error) {
256
- console.error('Error removing MCP server from Cursor:', error);
257
- res.status(500).json({
258
- error: 'Failed to remove MCP server',
259
- details: error.message
260
- });
261
- }
262
- });
263
- // POST /api/cursor/mcp/add-json - Add MCP server using JSON format
264
- router.post('/mcp/add-json', async (req, res) => {
265
- try {
266
- const { name, jsonConfig } = req.body;
267
- const mcpPath = path.join(os.homedir(), '.cursor', 'mcp.json');
268
- console.log(`➕ Adding MCP server to Cursor config via JSON: ${name}`);
269
- // Validate and parse JSON config
270
- let parsedConfig;
271
- try {
272
- parsedConfig = typeof jsonConfig === 'string' ? JSON.parse(jsonConfig) : jsonConfig;
273
- }
274
- catch (parseError) {
275
- return res.status(400).json({
276
- error: 'Invalid JSON configuration',
277
- details: parseError.message
278
- });
279
- }
280
- // Read existing config or create new
281
- let mcpConfig = { mcpServers: {} };
282
- try {
283
- const existing = await fs.readFile(mcpPath, 'utf8');
284
- mcpConfig = JSON.parse(existing);
285
- if (!mcpConfig.mcpServers) {
286
- mcpConfig.mcpServers = {};
287
- }
288
- }
289
- catch (error) {
290
- console.log('Creating new Cursor MCP config');
291
- }
292
- // Add server to config
293
- mcpConfig.mcpServers[name] = parsedConfig;
294
- // Ensure directory exists
295
- const mcpDir = path.dirname(mcpPath);
296
- await fs.mkdir(mcpDir, { recursive: true });
297
- // Write updated config
298
- await fs.writeFile(mcpPath, JSON.stringify(mcpConfig, null, 2));
299
- res.json({
300
- success: true,
301
- message: `MCP server "${name}" added to Cursor configuration via JSON`,
302
- config: mcpConfig
303
- });
304
- }
305
- catch (error) {
306
- console.error('Error adding MCP server to Cursor via JSON:', error);
307
- res.status(500).json({
308
- error: 'Failed to add MCP server',
309
- details: error.message
310
- });
311
- }
312
- });
313
- // GET /api/cursor/sessions - Get Cursor sessions from SQLite database
314
- router.get('/sessions', async (req, res) => {
315
- try {
316
- const { projectPath } = req.query;
317
- // Calculate cwdID hash for the project path (Cursor uses MD5 hash)
318
- const cwdId = crypto.createHash('md5').update(projectPath || process.cwd()).digest('hex');
319
- const cursorChatsPath = path.join(os.homedir(), '.cursor', 'chats', cwdId);
320
- // Check if the directory exists
321
- try {
322
- await fs.access(cursorChatsPath);
323
- }
324
- catch (error) {
325
- // No sessions for this project
326
- return res.json({
327
- success: true,
328
- sessions: [],
329
- cwdId: cwdId,
330
- path: cursorChatsPath
331
- });
332
- }
333
- // List all session directories
334
- const sessionDirs = await fs.readdir(cursorChatsPath);
335
- const sessions = [];
336
- for (const sessionId of sessionDirs) {
337
- const sessionPath = path.join(cursorChatsPath, sessionId);
338
- const storeDbPath = path.join(sessionPath, 'store.db');
339
- let dbStatMtimeMs = null;
340
- try {
341
- // Check if store.db exists
342
- await fs.access(storeDbPath);
343
- // Capture store.db mtime as a reliable fallback timestamp (last activity)
344
- try {
345
- const stat = await fs.stat(storeDbPath);
346
- dbStatMtimeMs = stat.mtimeMs;
347
- }
348
- catch (_) { }
349
- // Open SQLite database
350
- const db = new Database(storeDbPath, { readonly: true, fileMustExist: true });
351
- // Get metadata from meta table
352
- const metaRows = db.prepare('SELECT key, value FROM meta').all();
353
- let sessionData = {
354
- id: sessionId,
355
- name: 'Untitled Session',
356
- createdAt: null,
357
- mode: null,
358
- projectPath: projectPath,
359
- lastMessage: null,
360
- messageCount: 0
361
- };
362
- // Parse meta table entries
363
- for (const row of metaRows) {
364
- if (row.value) {
365
- try {
366
- // Try to decode as hex-encoded JSON
367
- const hexMatch = row.value.toString().match(/^[0-9a-fA-F]+$/);
368
- if (hexMatch) {
369
- const jsonStr = Buffer.from(row.value, 'hex').toString('utf8');
370
- const data = JSON.parse(jsonStr);
371
- if (row.key === 'agent') {
372
- sessionData.name = data.name || sessionData.name;
373
- // Normalize createdAt to ISO string in milliseconds
374
- let createdAt = data.createdAt;
375
- if (typeof createdAt === 'number') {
376
- if (createdAt < 1e12) {
377
- createdAt = createdAt * 1000; // seconds -> ms
378
- }
379
- sessionData.createdAt = new Date(createdAt).toISOString();
380
- }
381
- else if (typeof createdAt === 'string') {
382
- const n = Number(createdAt);
383
- if (!Number.isNaN(n)) {
384
- const ms = n < 1e12 ? n * 1000 : n;
385
- sessionData.createdAt = new Date(ms).toISOString();
386
- }
387
- else {
388
- // Assume it's already an ISO/date string
389
- const d = new Date(createdAt);
390
- sessionData.createdAt = isNaN(d.getTime()) ? null : d.toISOString();
391
- }
392
- }
393
- else {
394
- sessionData.createdAt = sessionData.createdAt || null;
395
- }
396
- sessionData.mode = data.mode;
397
- sessionData.agentId = data.agentId;
398
- sessionData.latestRootBlobId = data.latestRootBlobId;
399
- }
400
- }
401
- else {
402
- // If not hex, use raw value for simple keys
403
- if (row.key === 'name') {
404
- sessionData.name = row.value.toString();
405
- }
406
- }
407
- }
408
- catch (e) {
409
- console.log(`Could not parse meta value for key ${row.key}:`, e.message);
410
- }
411
- }
412
- }
413
- // Get message count from JSON blobs only (actual messages, not DAG structure)
414
- try {
415
- const blobCount = db.prepare(`SELECT COUNT(*) as count FROM blobs WHERE substr(data, 1, 1) = X'7B'`).get();
416
- sessionData.messageCount = blobCount.count;
417
- // Get the most recent JSON blob for preview (actual message, not DAG structure)
418
- const lastBlob = db.prepare(`SELECT data FROM blobs WHERE substr(data, 1, 1) = X'7B' ORDER BY rowid DESC LIMIT 1`).get();
419
- if (lastBlob && lastBlob.data) {
420
- try {
421
- // Try to extract readable preview from blob (may contain binary with embedded JSON)
422
- const raw = lastBlob.data.toString('utf8');
423
- let preview = '';
424
- // Attempt direct JSON parse
425
- try {
426
- const parsed = JSON.parse(raw);
427
- if (parsed?.content) {
428
- if (Array.isArray(parsed.content)) {
429
- const firstText = parsed.content.find(p => p?.type === 'text' && p.text)?.text || '';
430
- preview = firstText;
431
- }
432
- else if (typeof parsed.content === 'string') {
433
- preview = parsed.content;
434
- }
435
- }
436
- }
437
- catch (_) { }
438
- if (!preview) {
439
- // Strip non-printable and try to find JSON chunk
440
- const cleaned = raw.replace(/[^\x09\x0A\x0D\x20-\x7E]/g, '');
441
- const s = cleaned;
442
- const start = s.indexOf('{');
443
- const end = s.lastIndexOf('}');
444
- if (start !== -1 && end > start) {
445
- const jsonStr = s.slice(start, end + 1);
446
- try {
447
- const parsed = JSON.parse(jsonStr);
448
- if (parsed?.content) {
449
- if (Array.isArray(parsed.content)) {
450
- const firstText = parsed.content.find(p => p?.type === 'text' && p.text)?.text || '';
451
- preview = firstText;
452
- }
453
- else if (typeof parsed.content === 'string') {
454
- preview = parsed.content;
455
- }
456
- }
457
- }
458
- catch (_) {
459
- preview = s;
460
- }
461
- }
462
- else {
463
- preview = s;
464
- }
465
- }
466
- if (preview && preview.length > 0) {
467
- sessionData.lastMessage = preview.substring(0, 100) + (preview.length > 100 ? '...' : '');
468
- }
469
- }
470
- catch (e) {
471
- console.log('Could not parse blob data:', e.message);
472
- }
473
- }
474
- }
475
- catch (e) {
476
- console.log('Could not read blobs:', e.message);
477
- }
478
- db.close();
479
- // Finalize createdAt: use parsed meta value when valid, else fall back to store.db mtime
480
- if (!sessionData.createdAt) {
481
- if (dbStatMtimeMs && Number.isFinite(dbStatMtimeMs)) {
482
- sessionData.createdAt = new Date(dbStatMtimeMs).toISOString();
483
- }
484
- }
485
- sessions.push(sessionData);
486
- }
487
- catch (error) {
488
- console.log(`Could not read session ${sessionId}:`, error.message);
489
- }
490
- }
491
- // Fallback: ensure createdAt is a valid ISO string (use session directory mtime as last resort)
492
- for (const s of sessions) {
493
- if (!s.createdAt) {
494
- try {
495
- const sessionDir = path.join(cursorChatsPath, s.id);
496
- const st = await fs.stat(sessionDir);
497
- s.createdAt = new Date(st.mtimeMs).toISOString();
498
- }
499
- catch {
500
- s.createdAt = new Date().toISOString();
501
- }
502
- }
503
- }
504
- // Sort sessions by creation date (newest first)
505
- sessions.sort((a, b) => {
506
- if (!a.createdAt)
507
- return 1;
508
- if (!b.createdAt)
509
- return -1;
510
- return new Date(b.createdAt) - new Date(a.createdAt);
511
- });
512
- applyCustomSessionNames(sessions, 'cursor');
513
- res.json({
514
- success: true,
515
- sessions: sessions,
516
- cwdId: cwdId,
517
- path: cursorChatsPath
518
- });
519
- }
520
- catch (error) {
521
- console.error('Error reading Cursor sessions:', error);
522
- res.status(500).json({
523
- error: 'Failed to read Cursor sessions',
524
- details: error.message
44
+ details: error.message,
525
45
  });
526
46
  }
527
47
  });
@@ -1 +1 @@
1
- {"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../../server/routes/cursor.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../../server/routes/cursor.js"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;AAEhC,0DAA0D;AAC1D,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;IACvC,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC;QAEzE,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAEzC,GAAG,CAAC,IAAI,CAAC;gBACP,OAAO,EAAE,IAAI;gBACb,MAAM;gBACN,IAAI,EAAE,UAAU;aACjB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,sEAAsE;YACtE,OAAO,CAAC,GAAG,CAAC,qCAAqC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAElE,GAAG,CAAC,IAAI,CAAC;gBACP,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE;oBACN,OAAO,EAAE,CAAC;oBACV,KAAK,EAAE;wBACL,OAAO,EAAE,aAAa,CAAC,OAAO;wBAC9B,WAAW,EAAE,OAAO;qBACrB;oBACD,WAAW,EAAE;wBACX,KAAK,EAAE,EAAE;wBACT,IAAI,EAAE,EAAE;qBACT;iBACF;gBACD,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;QACrD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACnB,KAAK,EAAE,qCAAqC;YAC5C,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,eAAe,MAAM,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import express from 'express';
2
2
  import sessionManager from '../sessionManager.js';
3
- import { sessionNamesDb } from '../database/db.js';
3
+ import { sessionsDb } from '../modules/database/index.js';
4
4
  const router = express.Router();
5
5
  router.delete('/sessions/:sessionId', async (req, res) => {
6
6
  try {
@@ -9,7 +9,7 @@ router.delete('/sessions/:sessionId', async (req, res) => {
9
9
  return res.status(400).json({ success: false, error: 'Invalid session ID format' });
10
10
  }
11
11
  await sessionManager.deleteSession(sessionId);
12
- sessionNamesDb.deleteName(sessionId, 'gemini');
12
+ sessionsDb.deleteSessionById(sessionId);
13
13
  res.json({ success: true });
14
14
  }
15
15
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../../server/routes/gemini.js"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,cAAc,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;AAEhC,MAAM,CAAC,MAAM,CAAC,sBAAsB,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;IACrD,IAAI,CAAC;QACD,MAAM,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAEjC,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5F,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAAC,CAAC;QACxF,CAAC;QAED,MAAM,cAAc,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAC9C,cAAc,CAAC,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC/C,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,iCAAiC,GAAG,CAAC,MAAM,CAAC,SAAS,GAAG,EAAE,KAAK,CAAC,CAAC;QAC/E,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACnE,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../../server/routes/gemini.js"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,cAAc,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE1D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;AAEhC,MAAM,CAAC,MAAM,CAAC,sBAAsB,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;IACrD,IAAI,CAAC;QACD,MAAM,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAEjC,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5F,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAAC,CAAC;QACxF,CAAC;QAED,MAAM,cAAc,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAC9C,UAAU,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QACxC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,iCAAiC,GAAG,CAAC,MAAM,CAAC,SAAS,GAAG,EAAE,KAAK,CAAC,CAAC;QAC/E,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACnE,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,eAAe,MAAM,CAAC"}