@surething/cockpit 1.0.242 → 1.0.244

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 (626) hide show
  1. package/.next-prod/BUILD_ID +1 -1
  2. package/.next-prod/app-path-routes-manifest.json +6 -4
  3. package/.next-prod/build-manifest.json +3 -3
  4. package/.next-prod/prerender-manifest.json +3 -3
  5. package/.next-prod/react-loadable-manifest.json +11 -11
  6. package/.next-prod/routes-manifest.json +12 -0
  7. package/.next-prod/server/app/_global-error/page.js +3 -3
  8. package/.next-prod/server/app/_global-error/page.js.nft.json +1 -1
  9. package/.next-prod/server/app/_global-error/page_client-reference-manifest.js +1 -1
  10. package/.next-prod/server/app/_global-error.html +1 -1
  11. package/.next-prod/server/app/_global-error.rsc +1 -1
  12. package/.next-prod/server/app/_global-error.segments/_full.segment.rsc +1 -1
  13. package/.next-prod/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  14. package/.next-prod/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  15. package/.next-prod/server/app/_global-error.segments/_head.segment.rsc +1 -1
  16. package/.next-prod/server/app/_global-error.segments/_index.segment.rsc +1 -1
  17. package/.next-prod/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  18. package/.next-prod/server/app/_not-found/page.js +2 -2
  19. package/.next-prod/server/app/_not-found/page.js.nft.json +1 -1
  20. package/.next-prod/server/app/_not-found/page_client-reference-manifest.js +1 -1
  21. package/.next-prod/server/app/_not-found.html +2 -2
  22. package/.next-prod/server/app/_not-found.rsc +3 -3
  23. package/.next-prod/server/app/_not-found.segments/_full.segment.rsc +3 -3
  24. package/.next-prod/server/app/_not-found.segments/_head.segment.rsc +1 -1
  25. package/.next-prod/server/app/_not-found.segments/_index.segment.rsc +3 -3
  26. package/.next-prod/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  27. package/.next-prod/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  28. package/.next-prod/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  29. package/.next-prod/server/app/api/agent/test/route.js +1 -1
  30. package/.next-prod/server/app/api/agent/test/route.js.nft.json +1 -1
  31. package/.next-prod/server/app/api/bash/route.js +1 -1
  32. package/.next-prod/server/app/api/bash/route.js.nft.json +1 -1
  33. package/.next-prod/server/app/api/chat/codex/route.js +2 -2
  34. package/.next-prod/server/app/api/chat/codex/route.js.nft.json +1 -1
  35. package/.next-prod/server/app/api/chat/deepseek/route.js +1 -1
  36. package/.next-prod/server/app/api/chat/deepseek/route.js.nft.json +1 -1
  37. package/.next-prod/server/app/api/chat/kimi/route.js +2 -2
  38. package/.next-prod/server/app/api/chat/kimi/route.js.nft.json +1 -1
  39. package/.next-prod/server/app/api/chat/ollama/route.js +1 -1
  40. package/.next-prod/server/app/api/chat/ollama/route.js.nft.json +1 -1
  41. package/.next-prod/server/app/api/chat/pty-input/route.js +1 -1
  42. package/.next-prod/server/app/api/chat/pty-input/route.js.nft.json +1 -1
  43. package/.next-prod/server/app/api/chat/route.js +1 -1
  44. package/.next-prod/server/app/api/chat/route.js.nft.json +1 -1
  45. package/.next-prod/server/app/api/chat/stop/route.js +1 -1
  46. package/.next-prod/server/app/api/chat/stop/route.js.nft.json +1 -1
  47. package/.next-prod/server/app/api/claude-stats/route.js +1 -1
  48. package/.next-prod/server/app/api/claude-stats/route.js.nft.json +1 -1
  49. package/.next-prod/server/app/api/commands/route.js +1 -1
  50. package/.next-prod/server/app/api/commands/route.js.nft.json +1 -1
  51. package/.next-prod/server/app/api/comments/route.js +1 -1
  52. package/.next-prod/server/app/api/comments/route.js.nft.json +1 -1
  53. package/.next-prod/server/app/api/db/columns/route.js +1 -1
  54. package/.next-prod/server/app/api/db/columns/route.js.nft.json +1 -1
  55. package/.next-prod/server/app/api/db/connect/route.js +1 -1
  56. package/.next-prod/server/app/api/db/connect/route.js.nft.json +1 -1
  57. package/.next-prod/server/app/api/db/disconnect/route.js +1 -1
  58. package/.next-prod/server/app/api/db/disconnect/route.js.nft.json +1 -1
  59. package/.next-prod/server/app/api/db/export/route.js +1 -1
  60. package/.next-prod/server/app/api/db/export/route.js.nft.json +1 -1
  61. package/.next-prod/server/app/api/db/query/route.js +1 -1
  62. package/.next-prod/server/app/api/db/query/route.js.nft.json +1 -1
  63. package/.next-prod/server/app/api/db/schemas/route.js +2 -2
  64. package/.next-prod/server/app/api/db/schemas/route.js.nft.json +1 -1
  65. package/.next-prod/server/app/api/deepseek/credentials/route.js +1 -0
  66. package/.next-prod/server/app/api/deepseek/credentials/route.js.nft.json +1 -0
  67. package/.next-prod/server/app/api/deepseek/credentials/route_client-reference-manifest.js +1 -0
  68. package/.next-prod/server/app/api/dev/spans/route.js +1 -1
  69. package/.next-prod/server/app/api/dev/spans/route.js.nft.json +1 -1
  70. package/.next-prod/server/app/api/extension/version/route.js +1 -1
  71. package/.next-prod/server/app/api/extension/version/route.js.nft.json +1 -1
  72. package/.next-prod/server/app/api/file/route.js +1 -1
  73. package/.next-prod/server/app/api/file/route.js.nft.json +1 -1
  74. package/.next-prod/server/app/api/files/blame/route.js +1 -1
  75. package/.next-prod/server/app/api/files/blame/route.js.nft.json +1 -1
  76. package/.next-prod/server/app/api/files/clipboard/route.js +1 -1
  77. package/.next-prod/server/app/api/files/clipboard/route.js.nft.json +1 -1
  78. package/.next-prod/server/app/api/files/copy/route.js +1 -1
  79. package/.next-prod/server/app/api/files/copy/route.js.nft.json +1 -1
  80. package/.next-prod/server/app/api/files/delete/route.js +1 -1
  81. package/.next-prod/server/app/api/files/delete/route.js.nft.json +1 -1
  82. package/.next-prod/server/app/api/files/expanded/route.js +1 -1
  83. package/.next-prod/server/app/api/files/expanded/route.js.nft.json +1 -1
  84. package/.next-prod/server/app/api/files/index/route.js +1 -1
  85. package/.next-prod/server/app/api/files/index/route.js.nft.json +1 -1
  86. package/.next-prod/server/app/api/files/init/route.js +1 -1
  87. package/.next-prod/server/app/api/files/init/route.js.nft.json +1 -1
  88. package/.next-prod/server/app/api/files/paste/route.js +1 -1
  89. package/.next-prod/server/app/api/files/paste/route.js.nft.json +1 -1
  90. package/.next-prod/server/app/api/files/read/route.js +1 -1
  91. package/.next-prod/server/app/api/files/read/route.js.nft.json +1 -1
  92. package/.next-prod/server/app/api/files/readdir/route.js +1 -1
  93. package/.next-prod/server/app/api/files/readdir/route.js.nft.json +1 -1
  94. package/.next-prod/server/app/api/files/recent/route.js +1 -1
  95. package/.next-prod/server/app/api/files/recent/route.js.nft.json +1 -1
  96. package/.next-prod/server/app/api/files/save/route.js +1 -1
  97. package/.next-prod/server/app/api/files/save/route.js.nft.json +1 -1
  98. package/.next-prod/server/app/api/files/search/route.js +1 -1
  99. package/.next-prod/server/app/api/files/search/route.js.nft.json +1 -1
  100. package/.next-prod/server/app/api/files/stat/route.js +1 -1
  101. package/.next-prod/server/app/api/files/stat/route.js.nft.json +1 -1
  102. package/.next-prod/server/app/api/files/text/route.js +1 -1
  103. package/.next-prod/server/app/api/files/text/route.js.nft.json +1 -1
  104. package/.next-prod/server/app/api/git/branch-diff/route.js +1 -1
  105. package/.next-prod/server/app/api/git/branch-diff/route.js.nft.json +1 -1
  106. package/.next-prod/server/app/api/git/branches/route.js +1 -1
  107. package/.next-prod/server/app/api/git/branches/route.js.nft.json +1 -1
  108. package/.next-prod/server/app/api/git/commit-diff/route.js +1 -1
  109. package/.next-prod/server/app/api/git/commit-diff/route.js.nft.json +1 -1
  110. package/.next-prod/server/app/api/git/commits/route.js +1 -1
  111. package/.next-prod/server/app/api/git/commits/route.js.nft.json +1 -1
  112. package/.next-prod/server/app/api/git/current-branch/route.js +1 -1
  113. package/.next-prod/server/app/api/git/current-branch/route.js.nft.json +1 -1
  114. package/.next-prod/server/app/api/git/diff/route.js +1 -1
  115. package/.next-prod/server/app/api/git/diff/route.js.nft.json +1 -1
  116. package/.next-prod/server/app/api/git/discard/route.js +1 -1
  117. package/.next-prod/server/app/api/git/discard/route.js.nft.json +1 -1
  118. package/.next-prod/server/app/api/git/stage/route.js +1 -1
  119. package/.next-prod/server/app/api/git/stage/route.js.nft.json +1 -1
  120. package/.next-prod/server/app/api/git/status/route.js +1 -1
  121. package/.next-prod/server/app/api/git/status/route.js.nft.json +1 -1
  122. package/.next-prod/server/app/api/git/unstage/route.js +1 -1
  123. package/.next-prod/server/app/api/git/unstage/route.js.nft.json +1 -1
  124. package/.next-prod/server/app/api/git/worktree/route.js +1 -1
  125. package/.next-prod/server/app/api/git/worktree/route.js.nft.json +1 -1
  126. package/.next-prod/server/app/api/global-state/route.js +2 -2
  127. package/.next-prod/server/app/api/global-state/route.js.nft.json +1 -1
  128. package/.next-prod/server/app/api/health/route.js +1 -1
  129. package/.next-prod/server/app/api/health/route.js.nft.json +1 -1
  130. package/.next-prod/server/app/api/jupyter/load/route.js +1 -1
  131. package/.next-prod/server/app/api/jupyter/load/route.js.nft.json +1 -1
  132. package/.next-prod/server/app/api/jupyter/save/route.js +1 -1
  133. package/.next-prod/server/app/api/jupyter/save/route.js.nft.json +1 -1
  134. package/.next-prod/server/app/api/jupyter/shutdown/route.js +1 -1
  135. package/.next-prod/server/app/api/jupyter/shutdown/route.js.nft.json +1 -1
  136. package/.next-prod/server/app/api/lsp/definition/route.js +1 -1
  137. package/.next-prod/server/app/api/lsp/definition/route.js.nft.json +1 -1
  138. package/.next-prod/server/app/api/lsp/hover/route.js +1 -1
  139. package/.next-prod/server/app/api/lsp/hover/route.js.nft.json +1 -1
  140. package/.next-prod/server/app/api/lsp/references/route.js +1 -1
  141. package/.next-prod/server/app/api/lsp/references/route.js.nft.json +1 -1
  142. package/.next-prod/server/app/api/lsp/status/route.js +1 -1
  143. package/.next-prod/server/app/api/lsp/status/route.js.nft.json +1 -1
  144. package/.next-prod/server/app/api/lsp/warmup/route.js +1 -1
  145. package/.next-prod/server/app/api/lsp/warmup/route.js.nft.json +1 -1
  146. package/.next-prod/server/app/api/mysql/columns/route.js +1 -1
  147. package/.next-prod/server/app/api/mysql/columns/route.js.nft.json +1 -1
  148. package/.next-prod/server/app/api/mysql/connect/route.js +1 -1
  149. package/.next-prod/server/app/api/mysql/connect/route.js.nft.json +1 -1
  150. package/.next-prod/server/app/api/mysql/disconnect/route.js +1 -1
  151. package/.next-prod/server/app/api/mysql/disconnect/route.js.nft.json +1 -1
  152. package/.next-prod/server/app/api/mysql/export/route.js +1 -1
  153. package/.next-prod/server/app/api/mysql/export/route.js.nft.json +1 -1
  154. package/.next-prod/server/app/api/mysql/query/route.js +1 -1
  155. package/.next-prod/server/app/api/mysql/query/route.js.nft.json +1 -1
  156. package/.next-prod/server/app/api/mysql/schemas/route.js +2 -2
  157. package/.next-prod/server/app/api/mysql/schemas/route.js.nft.json +1 -1
  158. package/.next-prod/server/app/api/neo4j/connect/route.js +1 -1
  159. package/.next-prod/server/app/api/neo4j/connect/route.js.nft.json +1 -1
  160. package/.next-prod/server/app/api/neo4j/disconnect/route.js +1 -1
  161. package/.next-prod/server/app/api/neo4j/disconnect/route.js.nft.json +1 -1
  162. package/.next-prod/server/app/api/neo4j/query/route.js +1 -1
  163. package/.next-prod/server/app/api/neo4j/query/route.js.nft.json +1 -1
  164. package/.next-prod/server/app/api/neo4j/schema/route.js +1 -1
  165. package/.next-prod/server/app/api/neo4j/schema/route.js.nft.json +1 -1
  166. package/.next-prod/server/app/api/note/route.js +1 -1
  167. package/.next-prod/server/app/api/note/route.js.nft.json +1 -1
  168. package/.next-prod/server/app/api/ollama/config/route.js +1 -0
  169. package/.next-prod/server/app/api/ollama/config/route.js.nft.json +1 -0
  170. package/.next-prod/server/app/api/ollama/config/route_client-reference-manifest.js +1 -0
  171. package/.next-prod/server/app/api/ollama/models/route.js +1 -1
  172. package/.next-prod/server/app/api/ollama/models/route.js.nft.json +1 -1
  173. package/.next-prod/server/app/api/ollama/start/route.js +1 -1
  174. package/.next-prod/server/app/api/ollama/start/route.js.nft.json +1 -1
  175. package/.next-prod/server/app/api/open-cursor/route.js +1 -1
  176. package/.next-prod/server/app/api/open-cursor/route.js.nft.json +1 -1
  177. package/.next-prod/server/app/api/open-vscode/route.js +1 -1
  178. package/.next-prod/server/app/api/open-vscode/route.js.nft.json +1 -1
  179. package/.next-prod/server/app/api/pick-folder/route.js +1 -1
  180. package/.next-prod/server/app/api/pick-folder/route.js.nft.json +1 -1
  181. package/.next-prod/server/app/api/pinned-sessions/route.js +1 -1
  182. package/.next-prod/server/app/api/pinned-sessions/route.js.nft.json +1 -1
  183. package/.next-prod/server/app/api/preview/[...path]/route.js +1 -1
  184. package/.next-prod/server/app/api/preview/[...path]/route.js.nft.json +1 -1
  185. package/.next-prod/server/app/api/project-settings/route.js +1 -1
  186. package/.next-prod/server/app/api/project-settings/route.js.nft.json +1 -1
  187. package/.next-prod/server/app/api/project-state/route.js +2 -2
  188. package/.next-prod/server/app/api/project-state/route.js.nft.json +1 -1
  189. package/.next-prod/server/app/api/projectGraph/affected/route.js +1 -1
  190. package/.next-prod/server/app/api/projectGraph/affected/route.js.nft.json +1 -1
  191. package/.next-prod/server/app/api/projectGraph/callees/route.js +1 -1
  192. package/.next-prod/server/app/api/projectGraph/callees/route.js.nft.json +1 -1
  193. package/.next-prod/server/app/api/projectGraph/callers/route.js +1 -1
  194. package/.next-prod/server/app/api/projectGraph/callers/route.js.nft.json +1 -1
  195. package/.next-prod/server/app/api/projectGraph/coedit/route.js +1 -1
  196. package/.next-prod/server/app/api/projectGraph/coedit/route.js.nft.json +1 -1
  197. package/.next-prod/server/app/api/projectGraph/context/route.js +1 -1
  198. package/.next-prod/server/app/api/projectGraph/context/route.js.nft.json +1 -1
  199. package/.next-prod/server/app/api/projectGraph/file/route.js +1 -1
  200. package/.next-prod/server/app/api/projectGraph/file/route.js.nft.json +1 -1
  201. package/.next-prod/server/app/api/projectGraph/file-functions/route.js +1 -1
  202. package/.next-prod/server/app/api/projectGraph/file-functions/route.js.nft.json +1 -1
  203. package/.next-prod/server/app/api/projectGraph/impact/route.js +1 -1
  204. package/.next-prod/server/app/api/projectGraph/impact/route.js.nft.json +1 -1
  205. package/.next-prod/server/app/api/projectGraph/related/route.js +1 -1
  206. package/.next-prod/server/app/api/projectGraph/related/route.js.nft.json +1 -1
  207. package/.next-prod/server/app/api/projectGraph/risk/route.js +1 -1
  208. package/.next-prod/server/app/api/projectGraph/risk/route.js.nft.json +1 -1
  209. package/.next-prod/server/app/api/projectGraph/search/route.js +1 -1
  210. package/.next-prod/server/app/api/projectGraph/search/route.js.nft.json +1 -1
  211. package/.next-prod/server/app/api/projects/route.js +1 -1
  212. package/.next-prod/server/app/api/projects/route.js.nft.json +1 -1
  213. package/.next-prod/server/app/api/push/public-key/route.js +1 -1
  214. package/.next-prod/server/app/api/push/public-key/route.js.nft.json +1 -1
  215. package/.next-prod/server/app/api/push/subscribe/route.js +1 -1
  216. package/.next-prod/server/app/api/push/subscribe/route.js.nft.json +1 -1
  217. package/.next-prod/server/app/api/push/unsubscribe/route.js +1 -1
  218. package/.next-prod/server/app/api/push/unsubscribe/route.js.nft.json +1 -1
  219. package/.next-prod/server/app/api/redis/command/route.js +1 -1
  220. package/.next-prod/server/app/api/redis/command/route.js.nft.json +1 -1
  221. package/.next-prod/server/app/api/redis/connect/route.js +1 -1
  222. package/.next-prod/server/app/api/redis/connect/route.js.nft.json +1 -1
  223. package/.next-prod/server/app/api/redis/delete/route.js +1 -1
  224. package/.next-prod/server/app/api/redis/delete/route.js.nft.json +1 -1
  225. package/.next-prod/server/app/api/redis/disconnect/route.js +1 -1
  226. package/.next-prod/server/app/api/redis/disconnect/route.js.nft.json +1 -1
  227. package/.next-prod/server/app/api/redis/get/route.js +1 -1
  228. package/.next-prod/server/app/api/redis/get/route.js.nft.json +1 -1
  229. package/.next-prod/server/app/api/redis/keys/route.js +1 -1
  230. package/.next-prod/server/app/api/redis/keys/route.js.nft.json +1 -1
  231. package/.next-prod/server/app/api/redis/set/route.js +1 -1
  232. package/.next-prod/server/app/api/redis/set/route.js.nft.json +1 -1
  233. package/.next-prod/server/app/api/review/[id]/comments/route.js +1 -1
  234. package/.next-prod/server/app/api/review/[id]/comments/route.js.nft.json +1 -1
  235. package/.next-prod/server/app/api/review/[id]/replies/route.js +1 -1
  236. package/.next-prod/server/app/api/review/[id]/replies/route.js.nft.json +1 -1
  237. package/.next-prod/server/app/api/review/[id]/route.js +1 -1
  238. package/.next-prod/server/app/api/review/[id]/route.js.nft.json +1 -1
  239. package/.next-prod/server/app/api/review/identify/route.js +1 -1
  240. package/.next-prod/server/app/api/review/identify/route.js.nft.json +1 -1
  241. package/.next-prod/server/app/api/review/order/route.js +1 -1
  242. package/.next-prod/server/app/api/review/order/route.js.nft.json +1 -1
  243. package/.next-prod/server/app/api/review/route.js +1 -1
  244. package/.next-prod/server/app/api/review/route.js.nft.json +1 -1
  245. package/.next-prod/server/app/api/review/share-info/route.js +1 -1
  246. package/.next-prod/server/app/api/review/share-info/route.js.nft.json +1 -1
  247. package/.next-prod/server/app/api/review/users/route.js +1 -1
  248. package/.next-prod/server/app/api/review/users/route.js.nft.json +1 -1
  249. package/.next-prod/server/app/api/scheduled-tasks/route.js +3 -3
  250. package/.next-prod/server/app/api/scheduled-tasks/route.js.nft.json +1 -1
  251. package/.next-prod/server/app/api/services/config/route.js +1 -1
  252. package/.next-prod/server/app/api/services/config/route.js.nft.json +1 -1
  253. package/.next-prod/server/app/api/services/scripts/route.js +1 -1
  254. package/.next-prod/server/app/api/services/scripts/route.js.nft.json +1 -1
  255. package/.next-prod/server/app/api/session/[sessionId]/fork/route.js +1 -1
  256. package/.next-prod/server/app/api/session/[sessionId]/fork/route.js.nft.json +1 -1
  257. package/.next-prod/server/app/api/session/[sessionId]/history/route.js +1 -1
  258. package/.next-prod/server/app/api/session/[sessionId]/history/route.js.nft.json +1 -1
  259. package/.next-prod/server/app/api/session-by-path/route.js +1 -1
  260. package/.next-prod/server/app/api/session-by-path/route.js.nft.json +1 -1
  261. package/.next-prod/server/app/api/sessions/projects/[encodedPath]/route.js +1 -1
  262. package/.next-prod/server/app/api/sessions/projects/[encodedPath]/route.js.nft.json +1 -1
  263. package/.next-prod/server/app/api/sessions/projects/route.js +1 -1
  264. package/.next-prod/server/app/api/sessions/projects/route.js.nft.json +1 -1
  265. package/.next-prod/server/app/api/sessions/route.js +1 -1
  266. package/.next-prod/server/app/api/sessions/route.js.nft.json +1 -1
  267. package/.next-prod/server/app/api/settings/route.js +1 -1
  268. package/.next-prod/server/app/api/settings/route.js.nft.json +1 -1
  269. package/.next-prod/server/app/api/skills/[id]/route.js +1 -1
  270. package/.next-prod/server/app/api/skills/[id]/route.js.nft.json +1 -1
  271. package/.next-prod/server/app/api/skills/content/route.js +1 -1
  272. package/.next-prod/server/app/api/skills/content/route.js.nft.json +1 -1
  273. package/.next-prod/server/app/api/skills/route.js +1 -1
  274. package/.next-prod/server/app/api/skills/route.js.nft.json +1 -1
  275. package/.next-prod/server/app/api/snapshots/diff/route.js +1 -1
  276. package/.next-prod/server/app/api/snapshots/diff/route.js.nft.json +1 -1
  277. package/.next-prod/server/app/api/snapshots/route.js +1 -1
  278. package/.next-prod/server/app/api/snapshots/route.js.nft.json +1 -1
  279. package/.next-prod/server/app/api/terminal/aliases/route.js +1 -1
  280. package/.next-prod/server/app/api/terminal/aliases/route.js.nft.json +1 -1
  281. package/.next-prod/server/app/api/terminal/autocomplete/route.js +1 -1
  282. package/.next-prod/server/app/api/terminal/autocomplete/route.js.nft.json +1 -1
  283. package/.next-prod/server/app/api/terminal/bubble-order/route.js +1 -1
  284. package/.next-prod/server/app/api/terminal/bubble-order/route.js.nft.json +1 -1
  285. package/.next-prod/server/app/api/terminal/env/route.js +1 -1
  286. package/.next-prod/server/app/api/terminal/env/route.js.nft.json +1 -1
  287. package/.next-prod/server/app/api/terminal/history/route.js +1 -1
  288. package/.next-prod/server/app/api/terminal/history/route.js.nft.json +1 -1
  289. package/.next-prod/server/app/api/version/route.js +1 -1
  290. package/.next-prod/server/app/api/version/route.js.nft.json +1 -1
  291. package/.next-prod/server/app/favicon.ico/route.js +1 -1
  292. package/.next-prod/server/app/favicon.ico/route.js.nft.json +1 -1
  293. package/.next-prod/server/app/m/page.js +2 -2
  294. package/.next-prod/server/app/m/page.js.nft.json +1 -1
  295. package/.next-prod/server/app/m/page_client-reference-manifest.js +1 -1
  296. package/.next-prod/server/app/manifest.webmanifest/route.js +2 -2
  297. package/.next-prod/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  298. package/.next-prod/server/app/page.js +2 -2
  299. package/.next-prod/server/app/page.js.nft.json +1 -1
  300. package/.next-prod/server/app/page_client-reference-manifest.js +1 -1
  301. package/.next-prod/server/app/project/page.js +2 -2
  302. package/.next-prod/server/app/project/page.js.nft.json +1 -1
  303. package/.next-prod/server/app/project/page_client-reference-manifest.js +1 -1
  304. package/.next-prod/server/app/review/[id]/page.js +2 -2
  305. package/.next-prod/server/app/review/[id]/page.js.nft.json +1 -1
  306. package/.next-prod/server/app/review/[id]/page_client-reference-manifest.js +1 -1
  307. package/.next-prod/server/app-paths-manifest.json +6 -4
  308. package/.next-prod/server/chunks/2939.js +1 -1
  309. package/.next-prod/server/chunks/304.js +1 -1
  310. package/.next-prod/server/chunks/6038.js +1 -0
  311. package/.next-prod/server/chunks/7338.js +4 -4
  312. package/.next-prod/server/chunks/9658.js +15 -15
  313. package/.next-prod/server/chunks/9830.js +1 -1
  314. package/.next-prod/server/middleware-build-manifest.js +1 -1
  315. package/.next-prod/server/middleware-react-loadable-manifest.js +1 -1
  316. package/.next-prod/server/pages/404.html +2 -2
  317. package/.next-prod/server/pages/500.html +1 -1
  318. package/.next-prod/server/server-reference-manifest.json +1 -1
  319. package/.next-prod/static/chunks/1871-4468d75ec99d71fc.js +25 -0
  320. package/.next-prod/static/chunks/{2501.8a795c737a86ac2f.js → 2501.4e65b56602faa956.js} +1 -1
  321. package/.next-prod/static/chunks/{3304.540e84c28c47b48b.js → 3304.16305e84f4ff6598.js} +1 -1
  322. package/.next-prod/static/chunks/{4523.a6c0a4fb0a46d0bb.js → 4523.aaab4b1bd81167d4.js} +1 -1
  323. package/.next-prod/static/chunks/{4678.9870fc2e3d7d1e5d.js → 4678.867dfae26694be02.js} +1 -1
  324. package/.next-prod/static/chunks/{6729.582a7ca4e74b0aea.js → 6729.77a5381ac8f5c9ae.js} +1 -1
  325. package/.next-prod/static/chunks/{6784-a155388d7e43ef3d.js → 6784-53d80dc3b480cf9a.js} +0 -0
  326. package/.next-prod/static/chunks/{7799.ada4812ac0884dcc.js → 7799.40b047a634f96a24.js} +1 -1
  327. package/.next-prod/static/chunks/9530-08419cb81f88a0e6.js +15 -0
  328. package/.next-prod/static/chunks/app/_global-error/page-6d7aa508d9d8bcc3.js +1 -0
  329. package/.next-prod/static/chunks/app/api/agent/test/route-6d7aa508d9d8bcc3.js +1 -0
  330. package/.next-prod/static/chunks/app/api/bash/route-6d7aa508d9d8bcc3.js +1 -0
  331. package/.next-prod/static/chunks/app/api/chat/codex/route-6d7aa508d9d8bcc3.js +1 -0
  332. package/.next-prod/static/chunks/app/api/chat/deepseek/route-6d7aa508d9d8bcc3.js +1 -0
  333. package/.next-prod/static/chunks/app/api/chat/kimi/route-6d7aa508d9d8bcc3.js +1 -0
  334. package/.next-prod/static/chunks/app/api/chat/ollama/route-6d7aa508d9d8bcc3.js +1 -0
  335. package/.next-prod/static/chunks/app/api/chat/pty-input/route-6d7aa508d9d8bcc3.js +1 -0
  336. package/.next-prod/static/chunks/app/api/chat/route-6d7aa508d9d8bcc3.js +1 -0
  337. package/.next-prod/static/chunks/app/api/chat/stop/route-6d7aa508d9d8bcc3.js +1 -0
  338. package/.next-prod/static/chunks/app/api/claude-stats/route-6d7aa508d9d8bcc3.js +1 -0
  339. package/.next-prod/static/chunks/app/api/commands/route-6d7aa508d9d8bcc3.js +1 -0
  340. package/.next-prod/static/chunks/app/api/comments/route-6d7aa508d9d8bcc3.js +1 -0
  341. package/.next-prod/static/chunks/app/api/db/columns/route-6d7aa508d9d8bcc3.js +1 -0
  342. package/.next-prod/static/chunks/app/api/db/connect/route-6d7aa508d9d8bcc3.js +1 -0
  343. package/.next-prod/static/chunks/app/api/db/disconnect/route-6d7aa508d9d8bcc3.js +1 -0
  344. package/.next-prod/static/chunks/app/api/db/export/route-6d7aa508d9d8bcc3.js +1 -0
  345. package/.next-prod/static/chunks/app/api/db/query/route-6d7aa508d9d8bcc3.js +1 -0
  346. package/.next-prod/static/chunks/app/api/db/schemas/route-6d7aa508d9d8bcc3.js +1 -0
  347. package/.next-prod/static/chunks/app/api/deepseek/credentials/route-6d7aa508d9d8bcc3.js +1 -0
  348. package/.next-prod/static/chunks/app/api/dev/spans/route-6d7aa508d9d8bcc3.js +1 -0
  349. package/.next-prod/static/chunks/app/api/extension/version/route-6d7aa508d9d8bcc3.js +1 -0
  350. package/.next-prod/static/chunks/app/api/file/route-6d7aa508d9d8bcc3.js +1 -0
  351. package/.next-prod/static/chunks/app/api/files/blame/route-6d7aa508d9d8bcc3.js +1 -0
  352. package/.next-prod/static/chunks/app/api/files/clipboard/route-6d7aa508d9d8bcc3.js +1 -0
  353. package/.next-prod/static/chunks/app/api/files/copy/route-6d7aa508d9d8bcc3.js +1 -0
  354. package/.next-prod/static/chunks/app/api/files/delete/route-6d7aa508d9d8bcc3.js +1 -0
  355. package/.next-prod/static/chunks/app/api/files/expanded/route-6d7aa508d9d8bcc3.js +1 -0
  356. package/.next-prod/static/chunks/app/api/files/index/route-6d7aa508d9d8bcc3.js +1 -0
  357. package/.next-prod/static/chunks/app/api/files/init/route-6d7aa508d9d8bcc3.js +1 -0
  358. package/.next-prod/static/chunks/app/api/files/paste/route-6d7aa508d9d8bcc3.js +1 -0
  359. package/.next-prod/static/chunks/app/api/files/read/route-6d7aa508d9d8bcc3.js +1 -0
  360. package/.next-prod/static/chunks/app/api/files/readdir/route-6d7aa508d9d8bcc3.js +1 -0
  361. package/.next-prod/static/chunks/app/api/files/recent/route-6d7aa508d9d8bcc3.js +1 -0
  362. package/.next-prod/static/chunks/app/api/files/save/route-6d7aa508d9d8bcc3.js +1 -0
  363. package/.next-prod/static/chunks/app/api/files/search/route-6d7aa508d9d8bcc3.js +1 -0
  364. package/.next-prod/static/chunks/app/api/files/stat/route-6d7aa508d9d8bcc3.js +1 -0
  365. package/.next-prod/static/chunks/app/api/files/text/route-6d7aa508d9d8bcc3.js +1 -0
  366. package/.next-prod/static/chunks/app/api/git/branch-diff/route-6d7aa508d9d8bcc3.js +1 -0
  367. package/.next-prod/static/chunks/app/api/git/branches/route-6d7aa508d9d8bcc3.js +1 -0
  368. package/.next-prod/static/chunks/app/api/git/commit-diff/route-6d7aa508d9d8bcc3.js +1 -0
  369. package/.next-prod/static/chunks/app/api/git/commits/route-6d7aa508d9d8bcc3.js +1 -0
  370. package/.next-prod/static/chunks/app/api/git/current-branch/route-6d7aa508d9d8bcc3.js +1 -0
  371. package/.next-prod/static/chunks/app/api/git/diff/route-6d7aa508d9d8bcc3.js +1 -0
  372. package/.next-prod/static/chunks/app/api/git/discard/route-6d7aa508d9d8bcc3.js +1 -0
  373. package/.next-prod/static/chunks/app/api/git/stage/route-6d7aa508d9d8bcc3.js +1 -0
  374. package/.next-prod/static/chunks/app/api/git/status/route-6d7aa508d9d8bcc3.js +1 -0
  375. package/.next-prod/static/chunks/app/api/git/unstage/route-6d7aa508d9d8bcc3.js +1 -0
  376. package/.next-prod/static/chunks/app/api/git/worktree/route-6d7aa508d9d8bcc3.js +1 -0
  377. package/.next-prod/static/chunks/app/api/global-state/route-6d7aa508d9d8bcc3.js +1 -0
  378. package/.next-prod/static/chunks/app/api/health/route-6d7aa508d9d8bcc3.js +1 -0
  379. package/.next-prod/static/chunks/app/api/jupyter/load/route-6d7aa508d9d8bcc3.js +1 -0
  380. package/.next-prod/static/chunks/app/api/jupyter/save/route-6d7aa508d9d8bcc3.js +1 -0
  381. package/.next-prod/static/chunks/app/api/jupyter/shutdown/route-6d7aa508d9d8bcc3.js +1 -0
  382. package/.next-prod/static/chunks/app/api/lsp/definition/route-6d7aa508d9d8bcc3.js +1 -0
  383. package/.next-prod/static/chunks/app/api/lsp/hover/route-6d7aa508d9d8bcc3.js +1 -0
  384. package/.next-prod/static/chunks/app/api/lsp/references/route-6d7aa508d9d8bcc3.js +1 -0
  385. package/.next-prod/static/chunks/app/api/lsp/status/route-6d7aa508d9d8bcc3.js +1 -0
  386. package/.next-prod/static/chunks/app/api/lsp/warmup/route-6d7aa508d9d8bcc3.js +1 -0
  387. package/.next-prod/static/chunks/app/api/mysql/columns/route-6d7aa508d9d8bcc3.js +1 -0
  388. package/.next-prod/static/chunks/app/api/mysql/connect/route-6d7aa508d9d8bcc3.js +1 -0
  389. package/.next-prod/static/chunks/app/api/mysql/disconnect/route-6d7aa508d9d8bcc3.js +1 -0
  390. package/.next-prod/static/chunks/app/api/mysql/export/route-6d7aa508d9d8bcc3.js +1 -0
  391. package/.next-prod/static/chunks/app/api/mysql/query/route-6d7aa508d9d8bcc3.js +1 -0
  392. package/.next-prod/static/chunks/app/api/mysql/schemas/route-6d7aa508d9d8bcc3.js +1 -0
  393. package/.next-prod/static/chunks/app/api/neo4j/connect/route-6d7aa508d9d8bcc3.js +1 -0
  394. package/.next-prod/static/chunks/app/api/neo4j/disconnect/route-6d7aa508d9d8bcc3.js +1 -0
  395. package/.next-prod/static/chunks/app/api/neo4j/query/route-6d7aa508d9d8bcc3.js +1 -0
  396. package/.next-prod/static/chunks/app/api/neo4j/schema/route-6d7aa508d9d8bcc3.js +1 -0
  397. package/.next-prod/static/chunks/app/api/note/route-6d7aa508d9d8bcc3.js +1 -0
  398. package/.next-prod/static/chunks/app/api/ollama/config/route-6d7aa508d9d8bcc3.js +1 -0
  399. package/.next-prod/static/chunks/app/api/ollama/models/route-6d7aa508d9d8bcc3.js +1 -0
  400. package/.next-prod/static/chunks/app/api/ollama/start/route-6d7aa508d9d8bcc3.js +1 -0
  401. package/.next-prod/static/chunks/app/api/open-cursor/route-6d7aa508d9d8bcc3.js +1 -0
  402. package/.next-prod/static/chunks/app/api/open-vscode/route-6d7aa508d9d8bcc3.js +1 -0
  403. package/.next-prod/static/chunks/app/api/pick-folder/route-6d7aa508d9d8bcc3.js +1 -0
  404. package/.next-prod/static/chunks/app/api/pinned-sessions/route-6d7aa508d9d8bcc3.js +1 -0
  405. package/.next-prod/static/chunks/app/api/preview/[...path]/route-6d7aa508d9d8bcc3.js +1 -0
  406. package/.next-prod/static/chunks/app/api/project-settings/route-6d7aa508d9d8bcc3.js +1 -0
  407. package/.next-prod/static/chunks/app/api/project-state/route-6d7aa508d9d8bcc3.js +1 -0
  408. package/.next-prod/static/chunks/app/api/projectGraph/affected/route-6d7aa508d9d8bcc3.js +1 -0
  409. package/.next-prod/static/chunks/app/api/projectGraph/callees/route-6d7aa508d9d8bcc3.js +1 -0
  410. package/.next-prod/static/chunks/app/api/projectGraph/callers/route-6d7aa508d9d8bcc3.js +1 -0
  411. package/.next-prod/static/chunks/app/api/projectGraph/coedit/route-6d7aa508d9d8bcc3.js +1 -0
  412. package/.next-prod/static/chunks/app/api/projectGraph/context/route-6d7aa508d9d8bcc3.js +1 -0
  413. package/.next-prod/static/chunks/app/api/projectGraph/file/route-6d7aa508d9d8bcc3.js +1 -0
  414. package/.next-prod/static/chunks/app/api/projectGraph/file-functions/route-6d7aa508d9d8bcc3.js +1 -0
  415. package/.next-prod/static/chunks/app/api/projectGraph/impact/route-6d7aa508d9d8bcc3.js +1 -0
  416. package/.next-prod/static/chunks/app/api/projectGraph/related/route-6d7aa508d9d8bcc3.js +1 -0
  417. package/.next-prod/static/chunks/app/api/projectGraph/risk/route-6d7aa508d9d8bcc3.js +1 -0
  418. package/.next-prod/static/chunks/app/api/projectGraph/search/route-6d7aa508d9d8bcc3.js +1 -0
  419. package/.next-prod/static/chunks/app/api/projects/route-6d7aa508d9d8bcc3.js +1 -0
  420. package/.next-prod/static/chunks/app/api/push/public-key/route-6d7aa508d9d8bcc3.js +1 -0
  421. package/.next-prod/static/chunks/app/api/push/subscribe/route-6d7aa508d9d8bcc3.js +1 -0
  422. package/.next-prod/static/chunks/app/api/push/unsubscribe/route-6d7aa508d9d8bcc3.js +1 -0
  423. package/.next-prod/static/chunks/app/api/redis/command/route-6d7aa508d9d8bcc3.js +1 -0
  424. package/.next-prod/static/chunks/app/api/redis/connect/route-6d7aa508d9d8bcc3.js +1 -0
  425. package/.next-prod/static/chunks/app/api/redis/delete/route-6d7aa508d9d8bcc3.js +1 -0
  426. package/.next-prod/static/chunks/app/api/redis/disconnect/route-6d7aa508d9d8bcc3.js +1 -0
  427. package/.next-prod/static/chunks/app/api/redis/get/route-6d7aa508d9d8bcc3.js +1 -0
  428. package/.next-prod/static/chunks/app/api/redis/keys/route-6d7aa508d9d8bcc3.js +1 -0
  429. package/.next-prod/static/chunks/app/api/redis/set/route-6d7aa508d9d8bcc3.js +1 -0
  430. package/.next-prod/static/chunks/app/api/review/[id]/comments/route-6d7aa508d9d8bcc3.js +1 -0
  431. package/.next-prod/static/chunks/app/api/review/[id]/replies/route-6d7aa508d9d8bcc3.js +1 -0
  432. package/.next-prod/static/chunks/app/api/review/[id]/route-6d7aa508d9d8bcc3.js +1 -0
  433. package/.next-prod/static/chunks/app/api/review/identify/route-6d7aa508d9d8bcc3.js +1 -0
  434. package/.next-prod/static/chunks/app/api/review/order/route-6d7aa508d9d8bcc3.js +1 -0
  435. package/.next-prod/static/chunks/app/api/review/route-6d7aa508d9d8bcc3.js +1 -0
  436. package/.next-prod/static/chunks/app/api/review/share-info/route-6d7aa508d9d8bcc3.js +1 -0
  437. package/.next-prod/static/chunks/app/api/review/users/route-6d7aa508d9d8bcc3.js +1 -0
  438. package/.next-prod/static/chunks/app/api/scheduled-tasks/route-6d7aa508d9d8bcc3.js +1 -0
  439. package/.next-prod/static/chunks/app/api/services/config/route-6d7aa508d9d8bcc3.js +1 -0
  440. package/.next-prod/static/chunks/app/api/services/scripts/route-6d7aa508d9d8bcc3.js +1 -0
  441. package/.next-prod/static/chunks/app/api/session/[sessionId]/fork/route-6d7aa508d9d8bcc3.js +1 -0
  442. package/.next-prod/static/chunks/app/api/session/[sessionId]/history/route-6d7aa508d9d8bcc3.js +1 -0
  443. package/.next-prod/static/chunks/app/api/session-by-path/route-6d7aa508d9d8bcc3.js +1 -0
  444. package/.next-prod/static/chunks/app/api/sessions/projects/[encodedPath]/route-6d7aa508d9d8bcc3.js +1 -0
  445. package/.next-prod/static/chunks/app/api/sessions/projects/route-6d7aa508d9d8bcc3.js +1 -0
  446. package/.next-prod/static/chunks/app/api/sessions/route-6d7aa508d9d8bcc3.js +1 -0
  447. package/.next-prod/static/chunks/app/api/settings/route-6d7aa508d9d8bcc3.js +1 -0
  448. package/.next-prod/static/chunks/app/api/skills/[id]/route-6d7aa508d9d8bcc3.js +1 -0
  449. package/.next-prod/static/chunks/app/api/skills/content/route-6d7aa508d9d8bcc3.js +1 -0
  450. package/.next-prod/static/chunks/app/api/skills/route-6d7aa508d9d8bcc3.js +1 -0
  451. package/.next-prod/static/chunks/app/api/snapshots/diff/route-6d7aa508d9d8bcc3.js +1 -0
  452. package/.next-prod/static/chunks/app/api/snapshots/route-6d7aa508d9d8bcc3.js +1 -0
  453. package/.next-prod/static/chunks/app/api/terminal/aliases/route-6d7aa508d9d8bcc3.js +1 -0
  454. package/.next-prod/static/chunks/app/api/terminal/autocomplete/route-6d7aa508d9d8bcc3.js +1 -0
  455. package/.next-prod/static/chunks/app/api/terminal/bubble-order/route-6d7aa508d9d8bcc3.js +1 -0
  456. package/.next-prod/static/chunks/app/api/terminal/env/route-6d7aa508d9d8bcc3.js +1 -0
  457. package/.next-prod/static/chunks/app/api/terminal/history/route-6d7aa508d9d8bcc3.js +1 -0
  458. package/.next-prod/static/chunks/app/api/version/route-6d7aa508d9d8bcc3.js +1 -0
  459. package/.next-prod/static/chunks/app/{layout-fdd40a9f4769a9d2.js → layout-392444ad665c7748.js} +1 -1
  460. package/.next-prod/static/chunks/app/manifest.webmanifest/route-6d7aa508d9d8bcc3.js +1 -0
  461. package/.next-prod/static/chunks/app/{page-7e283c0e1ba7bf80.js → page-a32d8344284e99cb.js} +1 -1
  462. package/.next-prod/static/chunks/app/project/{page-7e283c0e1ba7bf80.js → page-a32d8344284e99cb.js} +1 -1
  463. package/.next-prod/static/chunks/next/dist/client/components/builtin/app-error-6d7aa508d9d8bcc3.js +1 -0
  464. package/.next-prod/static/chunks/next/dist/client/components/builtin/forbidden-6d7aa508d9d8bcc3.js +1 -0
  465. package/.next-prod/static/chunks/next/dist/client/components/builtin/not-found-6d7aa508d9d8bcc3.js +1 -0
  466. package/.next-prod/static/chunks/next/dist/client/components/builtin/unauthorized-6d7aa508d9d8bcc3.js +1 -0
  467. package/.next-prod/static/chunks/{webpack-798abcb0f340ce75.js → webpack-01274185cb710e57.js} +1 -1
  468. package/.next-prod/static/css/1d52d90207f3b441.css +1 -0
  469. package/.next-prod/static/sMb_F5kg6en8USwL7FYkb/_buildManifest.js +1 -0
  470. package/.next-prod/trace +13 -13
  471. package/.next-prod/trace-build +1 -1
  472. package/.next-prod/types/app/api/deepseek/credentials/route.ts +351 -0
  473. package/.next-prod/types/app/api/ollama/config/route.ts +351 -0
  474. package/.next-prod/types/routes.d.ts +3 -1
  475. package/.next-prod/types/validator.ts +18 -0
  476. package/dist/{chunk-RBT65EBM.mjs → chunk-3X4GQZL4.mjs} +73 -11
  477. package/dist/{chunk-PTHQK26K.mjs → chunk-BFESJMNO.mjs} +160 -17
  478. package/dist/{chunk-53DHIXIY.mjs → chunk-FMJUH423.mjs} +1 -1
  479. package/dist/httpApi.mjs +2 -2
  480. package/dist/scheduledTasks.mjs +13 -6
  481. package/dist/{server-XWLYHEMD.mjs → server-HKW65PHP.mjs} +2 -2
  482. package/dist/wsServer.mjs +4 -4
  483. package/package.json +1 -1
  484. package/server.mjs +24 -0
  485. package/.next-prod/server/chunks/6955.js +0 -1
  486. package/.next-prod/server/chunks/8916.js +0 -1
  487. package/.next-prod/server/chunks/9989.js +0 -1
  488. package/.next-prod/static/YsWseNHOrhvA60UWaNkzK/_buildManifest.js +0 -1
  489. package/.next-prod/static/chunks/5408-f9fd9ece18d916dc.js +0 -25
  490. package/.next-prod/static/chunks/9530-44f82b2151a66f3c.js +0 -15
  491. package/.next-prod/static/chunks/app/_global-error/page-f265b8a7128b7a1a.js +0 -1
  492. package/.next-prod/static/chunks/app/api/agent/test/route-f265b8a7128b7a1a.js +0 -1
  493. package/.next-prod/static/chunks/app/api/bash/route-f265b8a7128b7a1a.js +0 -1
  494. package/.next-prod/static/chunks/app/api/chat/codex/route-f265b8a7128b7a1a.js +0 -1
  495. package/.next-prod/static/chunks/app/api/chat/deepseek/route-f265b8a7128b7a1a.js +0 -1
  496. package/.next-prod/static/chunks/app/api/chat/kimi/route-f265b8a7128b7a1a.js +0 -1
  497. package/.next-prod/static/chunks/app/api/chat/ollama/route-f265b8a7128b7a1a.js +0 -1
  498. package/.next-prod/static/chunks/app/api/chat/pty-input/route-f265b8a7128b7a1a.js +0 -1
  499. package/.next-prod/static/chunks/app/api/chat/route-f265b8a7128b7a1a.js +0 -1
  500. package/.next-prod/static/chunks/app/api/chat/stop/route-f265b8a7128b7a1a.js +0 -1
  501. package/.next-prod/static/chunks/app/api/claude-stats/route-f265b8a7128b7a1a.js +0 -1
  502. package/.next-prod/static/chunks/app/api/commands/route-f265b8a7128b7a1a.js +0 -1
  503. package/.next-prod/static/chunks/app/api/comments/route-f265b8a7128b7a1a.js +0 -1
  504. package/.next-prod/static/chunks/app/api/db/columns/route-f265b8a7128b7a1a.js +0 -1
  505. package/.next-prod/static/chunks/app/api/db/connect/route-f265b8a7128b7a1a.js +0 -1
  506. package/.next-prod/static/chunks/app/api/db/disconnect/route-f265b8a7128b7a1a.js +0 -1
  507. package/.next-prod/static/chunks/app/api/db/export/route-f265b8a7128b7a1a.js +0 -1
  508. package/.next-prod/static/chunks/app/api/db/query/route-f265b8a7128b7a1a.js +0 -1
  509. package/.next-prod/static/chunks/app/api/db/schemas/route-f265b8a7128b7a1a.js +0 -1
  510. package/.next-prod/static/chunks/app/api/dev/spans/route-f265b8a7128b7a1a.js +0 -1
  511. package/.next-prod/static/chunks/app/api/extension/version/route-f265b8a7128b7a1a.js +0 -1
  512. package/.next-prod/static/chunks/app/api/file/route-f265b8a7128b7a1a.js +0 -1
  513. package/.next-prod/static/chunks/app/api/files/blame/route-f265b8a7128b7a1a.js +0 -1
  514. package/.next-prod/static/chunks/app/api/files/clipboard/route-f265b8a7128b7a1a.js +0 -1
  515. package/.next-prod/static/chunks/app/api/files/copy/route-f265b8a7128b7a1a.js +0 -1
  516. package/.next-prod/static/chunks/app/api/files/delete/route-f265b8a7128b7a1a.js +0 -1
  517. package/.next-prod/static/chunks/app/api/files/expanded/route-f265b8a7128b7a1a.js +0 -1
  518. package/.next-prod/static/chunks/app/api/files/index/route-f265b8a7128b7a1a.js +0 -1
  519. package/.next-prod/static/chunks/app/api/files/init/route-f265b8a7128b7a1a.js +0 -1
  520. package/.next-prod/static/chunks/app/api/files/paste/route-f265b8a7128b7a1a.js +0 -1
  521. package/.next-prod/static/chunks/app/api/files/read/route-f265b8a7128b7a1a.js +0 -1
  522. package/.next-prod/static/chunks/app/api/files/readdir/route-f265b8a7128b7a1a.js +0 -1
  523. package/.next-prod/static/chunks/app/api/files/recent/route-f265b8a7128b7a1a.js +0 -1
  524. package/.next-prod/static/chunks/app/api/files/save/route-f265b8a7128b7a1a.js +0 -1
  525. package/.next-prod/static/chunks/app/api/files/search/route-f265b8a7128b7a1a.js +0 -1
  526. package/.next-prod/static/chunks/app/api/files/stat/route-f265b8a7128b7a1a.js +0 -1
  527. package/.next-prod/static/chunks/app/api/files/text/route-f265b8a7128b7a1a.js +0 -1
  528. package/.next-prod/static/chunks/app/api/git/branch-diff/route-f265b8a7128b7a1a.js +0 -1
  529. package/.next-prod/static/chunks/app/api/git/branches/route-f265b8a7128b7a1a.js +0 -1
  530. package/.next-prod/static/chunks/app/api/git/commit-diff/route-f265b8a7128b7a1a.js +0 -1
  531. package/.next-prod/static/chunks/app/api/git/commits/route-f265b8a7128b7a1a.js +0 -1
  532. package/.next-prod/static/chunks/app/api/git/current-branch/route-f265b8a7128b7a1a.js +0 -1
  533. package/.next-prod/static/chunks/app/api/git/diff/route-f265b8a7128b7a1a.js +0 -1
  534. package/.next-prod/static/chunks/app/api/git/discard/route-f265b8a7128b7a1a.js +0 -1
  535. package/.next-prod/static/chunks/app/api/git/stage/route-f265b8a7128b7a1a.js +0 -1
  536. package/.next-prod/static/chunks/app/api/git/status/route-f265b8a7128b7a1a.js +0 -1
  537. package/.next-prod/static/chunks/app/api/git/unstage/route-f265b8a7128b7a1a.js +0 -1
  538. package/.next-prod/static/chunks/app/api/git/worktree/route-f265b8a7128b7a1a.js +0 -1
  539. package/.next-prod/static/chunks/app/api/global-state/route-f265b8a7128b7a1a.js +0 -1
  540. package/.next-prod/static/chunks/app/api/health/route-f265b8a7128b7a1a.js +0 -1
  541. package/.next-prod/static/chunks/app/api/jupyter/load/route-f265b8a7128b7a1a.js +0 -1
  542. package/.next-prod/static/chunks/app/api/jupyter/save/route-f265b8a7128b7a1a.js +0 -1
  543. package/.next-prod/static/chunks/app/api/jupyter/shutdown/route-f265b8a7128b7a1a.js +0 -1
  544. package/.next-prod/static/chunks/app/api/lsp/definition/route-f265b8a7128b7a1a.js +0 -1
  545. package/.next-prod/static/chunks/app/api/lsp/hover/route-f265b8a7128b7a1a.js +0 -1
  546. package/.next-prod/static/chunks/app/api/lsp/references/route-f265b8a7128b7a1a.js +0 -1
  547. package/.next-prod/static/chunks/app/api/lsp/status/route-f265b8a7128b7a1a.js +0 -1
  548. package/.next-prod/static/chunks/app/api/lsp/warmup/route-f265b8a7128b7a1a.js +0 -1
  549. package/.next-prod/static/chunks/app/api/mysql/columns/route-f265b8a7128b7a1a.js +0 -1
  550. package/.next-prod/static/chunks/app/api/mysql/connect/route-f265b8a7128b7a1a.js +0 -1
  551. package/.next-prod/static/chunks/app/api/mysql/disconnect/route-f265b8a7128b7a1a.js +0 -1
  552. package/.next-prod/static/chunks/app/api/mysql/export/route-f265b8a7128b7a1a.js +0 -1
  553. package/.next-prod/static/chunks/app/api/mysql/query/route-f265b8a7128b7a1a.js +0 -1
  554. package/.next-prod/static/chunks/app/api/mysql/schemas/route-f265b8a7128b7a1a.js +0 -1
  555. package/.next-prod/static/chunks/app/api/neo4j/connect/route-f265b8a7128b7a1a.js +0 -1
  556. package/.next-prod/static/chunks/app/api/neo4j/disconnect/route-f265b8a7128b7a1a.js +0 -1
  557. package/.next-prod/static/chunks/app/api/neo4j/query/route-f265b8a7128b7a1a.js +0 -1
  558. package/.next-prod/static/chunks/app/api/neo4j/schema/route-f265b8a7128b7a1a.js +0 -1
  559. package/.next-prod/static/chunks/app/api/note/route-f265b8a7128b7a1a.js +0 -1
  560. package/.next-prod/static/chunks/app/api/ollama/models/route-f265b8a7128b7a1a.js +0 -1
  561. package/.next-prod/static/chunks/app/api/ollama/start/route-f265b8a7128b7a1a.js +0 -1
  562. package/.next-prod/static/chunks/app/api/open-cursor/route-f265b8a7128b7a1a.js +0 -1
  563. package/.next-prod/static/chunks/app/api/open-vscode/route-f265b8a7128b7a1a.js +0 -1
  564. package/.next-prod/static/chunks/app/api/pick-folder/route-f265b8a7128b7a1a.js +0 -1
  565. package/.next-prod/static/chunks/app/api/pinned-sessions/route-f265b8a7128b7a1a.js +0 -1
  566. package/.next-prod/static/chunks/app/api/preview/[...path]/route-f265b8a7128b7a1a.js +0 -1
  567. package/.next-prod/static/chunks/app/api/project-settings/route-f265b8a7128b7a1a.js +0 -1
  568. package/.next-prod/static/chunks/app/api/project-state/route-f265b8a7128b7a1a.js +0 -1
  569. package/.next-prod/static/chunks/app/api/projectGraph/affected/route-f265b8a7128b7a1a.js +0 -1
  570. package/.next-prod/static/chunks/app/api/projectGraph/callees/route-f265b8a7128b7a1a.js +0 -1
  571. package/.next-prod/static/chunks/app/api/projectGraph/callers/route-f265b8a7128b7a1a.js +0 -1
  572. package/.next-prod/static/chunks/app/api/projectGraph/coedit/route-f265b8a7128b7a1a.js +0 -1
  573. package/.next-prod/static/chunks/app/api/projectGraph/context/route-f265b8a7128b7a1a.js +0 -1
  574. package/.next-prod/static/chunks/app/api/projectGraph/file/route-f265b8a7128b7a1a.js +0 -1
  575. package/.next-prod/static/chunks/app/api/projectGraph/file-functions/route-f265b8a7128b7a1a.js +0 -1
  576. package/.next-prod/static/chunks/app/api/projectGraph/impact/route-f265b8a7128b7a1a.js +0 -1
  577. package/.next-prod/static/chunks/app/api/projectGraph/related/route-f265b8a7128b7a1a.js +0 -1
  578. package/.next-prod/static/chunks/app/api/projectGraph/risk/route-f265b8a7128b7a1a.js +0 -1
  579. package/.next-prod/static/chunks/app/api/projectGraph/search/route-f265b8a7128b7a1a.js +0 -1
  580. package/.next-prod/static/chunks/app/api/projects/route-f265b8a7128b7a1a.js +0 -1
  581. package/.next-prod/static/chunks/app/api/push/public-key/route-f265b8a7128b7a1a.js +0 -1
  582. package/.next-prod/static/chunks/app/api/push/subscribe/route-f265b8a7128b7a1a.js +0 -1
  583. package/.next-prod/static/chunks/app/api/push/unsubscribe/route-f265b8a7128b7a1a.js +0 -1
  584. package/.next-prod/static/chunks/app/api/redis/command/route-f265b8a7128b7a1a.js +0 -1
  585. package/.next-prod/static/chunks/app/api/redis/connect/route-f265b8a7128b7a1a.js +0 -1
  586. package/.next-prod/static/chunks/app/api/redis/delete/route-f265b8a7128b7a1a.js +0 -1
  587. package/.next-prod/static/chunks/app/api/redis/disconnect/route-f265b8a7128b7a1a.js +0 -1
  588. package/.next-prod/static/chunks/app/api/redis/get/route-f265b8a7128b7a1a.js +0 -1
  589. package/.next-prod/static/chunks/app/api/redis/keys/route-f265b8a7128b7a1a.js +0 -1
  590. package/.next-prod/static/chunks/app/api/redis/set/route-f265b8a7128b7a1a.js +0 -1
  591. package/.next-prod/static/chunks/app/api/review/[id]/comments/route-f265b8a7128b7a1a.js +0 -1
  592. package/.next-prod/static/chunks/app/api/review/[id]/replies/route-f265b8a7128b7a1a.js +0 -1
  593. package/.next-prod/static/chunks/app/api/review/[id]/route-f265b8a7128b7a1a.js +0 -1
  594. package/.next-prod/static/chunks/app/api/review/identify/route-f265b8a7128b7a1a.js +0 -1
  595. package/.next-prod/static/chunks/app/api/review/order/route-f265b8a7128b7a1a.js +0 -1
  596. package/.next-prod/static/chunks/app/api/review/route-f265b8a7128b7a1a.js +0 -1
  597. package/.next-prod/static/chunks/app/api/review/share-info/route-f265b8a7128b7a1a.js +0 -1
  598. package/.next-prod/static/chunks/app/api/review/users/route-f265b8a7128b7a1a.js +0 -1
  599. package/.next-prod/static/chunks/app/api/scheduled-tasks/route-f265b8a7128b7a1a.js +0 -1
  600. package/.next-prod/static/chunks/app/api/services/config/route-f265b8a7128b7a1a.js +0 -1
  601. package/.next-prod/static/chunks/app/api/services/scripts/route-f265b8a7128b7a1a.js +0 -1
  602. package/.next-prod/static/chunks/app/api/session/[sessionId]/fork/route-f265b8a7128b7a1a.js +0 -1
  603. package/.next-prod/static/chunks/app/api/session/[sessionId]/history/route-f265b8a7128b7a1a.js +0 -1
  604. package/.next-prod/static/chunks/app/api/session-by-path/route-f265b8a7128b7a1a.js +0 -1
  605. package/.next-prod/static/chunks/app/api/sessions/projects/[encodedPath]/route-f265b8a7128b7a1a.js +0 -1
  606. package/.next-prod/static/chunks/app/api/sessions/projects/route-f265b8a7128b7a1a.js +0 -1
  607. package/.next-prod/static/chunks/app/api/sessions/route-f265b8a7128b7a1a.js +0 -1
  608. package/.next-prod/static/chunks/app/api/settings/route-f265b8a7128b7a1a.js +0 -1
  609. package/.next-prod/static/chunks/app/api/skills/[id]/route-f265b8a7128b7a1a.js +0 -1
  610. package/.next-prod/static/chunks/app/api/skills/content/route-f265b8a7128b7a1a.js +0 -1
  611. package/.next-prod/static/chunks/app/api/skills/route-f265b8a7128b7a1a.js +0 -1
  612. package/.next-prod/static/chunks/app/api/snapshots/diff/route-f265b8a7128b7a1a.js +0 -1
  613. package/.next-prod/static/chunks/app/api/snapshots/route-f265b8a7128b7a1a.js +0 -1
  614. package/.next-prod/static/chunks/app/api/terminal/aliases/route-f265b8a7128b7a1a.js +0 -1
  615. package/.next-prod/static/chunks/app/api/terminal/autocomplete/route-f265b8a7128b7a1a.js +0 -1
  616. package/.next-prod/static/chunks/app/api/terminal/bubble-order/route-f265b8a7128b7a1a.js +0 -1
  617. package/.next-prod/static/chunks/app/api/terminal/env/route-f265b8a7128b7a1a.js +0 -1
  618. package/.next-prod/static/chunks/app/api/terminal/history/route-f265b8a7128b7a1a.js +0 -1
  619. package/.next-prod/static/chunks/app/api/version/route-f265b8a7128b7a1a.js +0 -1
  620. package/.next-prod/static/chunks/app/manifest.webmanifest/route-f265b8a7128b7a1a.js +0 -1
  621. package/.next-prod/static/chunks/next/dist/client/components/builtin/app-error-f265b8a7128b7a1a.js +0 -1
  622. package/.next-prod/static/chunks/next/dist/client/components/builtin/forbidden-f265b8a7128b7a1a.js +0 -1
  623. package/.next-prod/static/chunks/next/dist/client/components/builtin/not-found-f265b8a7128b7a1a.js +0 -1
  624. package/.next-prod/static/chunks/next/dist/client/components/builtin/unauthorized-f265b8a7128b7a1a.js +0 -1
  625. package/.next-prod/static/css/9f26a08be661160a.css +0 -1
  626. /package/.next-prod/static/{YsWseNHOrhvA60UWaNkzK → sMb_F5kg6en8USwL7FYkb}/_ssgManifest.js +0 -0
@@ -2,7 +2,7 @@
2
2
  // Do not edit this file manually
3
3
 
4
4
  type AppRoutes = "/" | "/m" | "/project" | "/review/[id]"
5
- type AppRouteHandlerRoutes = "/api/agent/test" | "/api/bash" | "/api/chat" | "/api/chat/codex" | "/api/chat/deepseek" | "/api/chat/kimi" | "/api/chat/ollama" | "/api/chat/pty-input" | "/api/chat/stop" | "/api/claude-stats" | "/api/commands" | "/api/comments" | "/api/db/columns" | "/api/db/connect" | "/api/db/disconnect" | "/api/db/export" | "/api/db/query" | "/api/db/schemas" | "/api/dev/spans" | "/api/extension/version" | "/api/file" | "/api/files/blame" | "/api/files/clipboard" | "/api/files/copy" | "/api/files/delete" | "/api/files/expanded" | "/api/files/index" | "/api/files/init" | "/api/files/paste" | "/api/files/read" | "/api/files/readdir" | "/api/files/recent" | "/api/files/save" | "/api/files/search" | "/api/files/stat" | "/api/files/text" | "/api/git/branch-diff" | "/api/git/branches" | "/api/git/commit-diff" | "/api/git/commits" | "/api/git/current-branch" | "/api/git/diff" | "/api/git/discard" | "/api/git/stage" | "/api/git/status" | "/api/git/unstage" | "/api/git/worktree" | "/api/global-state" | "/api/health" | "/api/jupyter/load" | "/api/jupyter/save" | "/api/jupyter/shutdown" | "/api/lsp/definition" | "/api/lsp/hover" | "/api/lsp/references" | "/api/lsp/status" | "/api/lsp/warmup" | "/api/mysql/columns" | "/api/mysql/connect" | "/api/mysql/disconnect" | "/api/mysql/export" | "/api/mysql/query" | "/api/mysql/schemas" | "/api/neo4j/connect" | "/api/neo4j/disconnect" | "/api/neo4j/query" | "/api/neo4j/schema" | "/api/note" | "/api/ollama/models" | "/api/ollama/start" | "/api/open-cursor" | "/api/open-vscode" | "/api/pick-folder" | "/api/pinned-sessions" | "/api/preview/[...path]" | "/api/project-settings" | "/api/project-state" | "/api/projectGraph/affected" | "/api/projectGraph/callees" | "/api/projectGraph/callers" | "/api/projectGraph/coedit" | "/api/projectGraph/context" | "/api/projectGraph/file" | "/api/projectGraph/file-functions" | "/api/projectGraph/impact" | "/api/projectGraph/related" | "/api/projectGraph/risk" | "/api/projectGraph/search" | "/api/projects" | "/api/push/public-key" | "/api/push/subscribe" | "/api/push/unsubscribe" | "/api/redis/command" | "/api/redis/connect" | "/api/redis/delete" | "/api/redis/disconnect" | "/api/redis/get" | "/api/redis/keys" | "/api/redis/set" | "/api/review" | "/api/review/[id]" | "/api/review/[id]/comments" | "/api/review/[id]/replies" | "/api/review/identify" | "/api/review/order" | "/api/review/share-info" | "/api/review/users" | "/api/scheduled-tasks" | "/api/services/config" | "/api/services/scripts" | "/api/session-by-path" | "/api/session/[sessionId]/fork" | "/api/session/[sessionId]/history" | "/api/sessions" | "/api/sessions/projects" | "/api/sessions/projects/[encodedPath]" | "/api/settings" | "/api/skills" | "/api/skills/[id]" | "/api/skills/content" | "/api/snapshots" | "/api/snapshots/diff" | "/api/terminal/aliases" | "/api/terminal/autocomplete" | "/api/terminal/bubble-order" | "/api/terminal/env" | "/api/terminal/history" | "/api/version"
5
+ type AppRouteHandlerRoutes = "/api/agent/test" | "/api/bash" | "/api/chat" | "/api/chat/codex" | "/api/chat/deepseek" | "/api/chat/kimi" | "/api/chat/ollama" | "/api/chat/pty-input" | "/api/chat/stop" | "/api/claude-stats" | "/api/commands" | "/api/comments" | "/api/db/columns" | "/api/db/connect" | "/api/db/disconnect" | "/api/db/export" | "/api/db/query" | "/api/db/schemas" | "/api/deepseek/credentials" | "/api/dev/spans" | "/api/extension/version" | "/api/file" | "/api/files/blame" | "/api/files/clipboard" | "/api/files/copy" | "/api/files/delete" | "/api/files/expanded" | "/api/files/index" | "/api/files/init" | "/api/files/paste" | "/api/files/read" | "/api/files/readdir" | "/api/files/recent" | "/api/files/save" | "/api/files/search" | "/api/files/stat" | "/api/files/text" | "/api/git/branch-diff" | "/api/git/branches" | "/api/git/commit-diff" | "/api/git/commits" | "/api/git/current-branch" | "/api/git/diff" | "/api/git/discard" | "/api/git/stage" | "/api/git/status" | "/api/git/unstage" | "/api/git/worktree" | "/api/global-state" | "/api/health" | "/api/jupyter/load" | "/api/jupyter/save" | "/api/jupyter/shutdown" | "/api/lsp/definition" | "/api/lsp/hover" | "/api/lsp/references" | "/api/lsp/status" | "/api/lsp/warmup" | "/api/mysql/columns" | "/api/mysql/connect" | "/api/mysql/disconnect" | "/api/mysql/export" | "/api/mysql/query" | "/api/mysql/schemas" | "/api/neo4j/connect" | "/api/neo4j/disconnect" | "/api/neo4j/query" | "/api/neo4j/schema" | "/api/note" | "/api/ollama/config" | "/api/ollama/models" | "/api/ollama/start" | "/api/open-cursor" | "/api/open-vscode" | "/api/pick-folder" | "/api/pinned-sessions" | "/api/preview/[...path]" | "/api/project-settings" | "/api/project-state" | "/api/projectGraph/affected" | "/api/projectGraph/callees" | "/api/projectGraph/callers" | "/api/projectGraph/coedit" | "/api/projectGraph/context" | "/api/projectGraph/file" | "/api/projectGraph/file-functions" | "/api/projectGraph/impact" | "/api/projectGraph/related" | "/api/projectGraph/risk" | "/api/projectGraph/search" | "/api/projects" | "/api/push/public-key" | "/api/push/subscribe" | "/api/push/unsubscribe" | "/api/redis/command" | "/api/redis/connect" | "/api/redis/delete" | "/api/redis/disconnect" | "/api/redis/get" | "/api/redis/keys" | "/api/redis/set" | "/api/review" | "/api/review/[id]" | "/api/review/[id]/comments" | "/api/review/[id]/replies" | "/api/review/identify" | "/api/review/order" | "/api/review/share-info" | "/api/review/users" | "/api/scheduled-tasks" | "/api/services/config" | "/api/services/scripts" | "/api/session-by-path" | "/api/session/[sessionId]/fork" | "/api/session/[sessionId]/history" | "/api/sessions" | "/api/sessions/projects" | "/api/sessions/projects/[encodedPath]" | "/api/settings" | "/api/skills" | "/api/skills/[id]" | "/api/skills/content" | "/api/snapshots" | "/api/snapshots/diff" | "/api/terminal/aliases" | "/api/terminal/autocomplete" | "/api/terminal/bubble-order" | "/api/terminal/env" | "/api/terminal/history" | "/api/version"
6
6
  type PageRoutes = never
7
7
  type LayoutRoutes = "/"
8
8
  type RedirectRoutes = never
@@ -30,6 +30,7 @@ interface ParamMap {
30
30
  "/api/db/export": {}
31
31
  "/api/db/query": {}
32
32
  "/api/db/schemas": {}
33
+ "/api/deepseek/credentials": {}
33
34
  "/api/dev/spans": {}
34
35
  "/api/extension/version": {}
35
36
  "/api/file": {}
@@ -80,6 +81,7 @@ interface ParamMap {
80
81
  "/api/neo4j/query": {}
81
82
  "/api/neo4j/schema": {}
82
83
  "/api/note": {}
84
+ "/api/ollama/config": {}
83
85
  "/api/ollama/models": {}
84
86
  "/api/ollama/start": {}
85
87
  "/api/open-cursor": {}
@@ -245,6 +245,15 @@ type RouteHandlerConfig<Route extends AppRouteHandlerRoutes = AppRouteHandlerRou
245
245
  type __Unused = __Check
246
246
  }
247
247
 
248
+ // Validate ../../src/app/api/deepseek/credentials/route.ts
249
+ {
250
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/deepseek/credentials">> = Specific
251
+ const handler = {} as typeof import("../../src/app/api/deepseek/credentials/route.js")
252
+ type __Check = __IsExpected<typeof handler>
253
+ // @ts-ignore
254
+ type __Unused = __Check
255
+ }
256
+
248
257
  // Validate ../../src/app/api/dev/spans/route.ts
249
258
  {
250
259
  type __IsExpected<Specific extends RouteHandlerConfig<"/api/dev/spans">> = Specific
@@ -695,6 +704,15 @@ type RouteHandlerConfig<Route extends AppRouteHandlerRoutes = AppRouteHandlerRou
695
704
  type __Unused = __Check
696
705
  }
697
706
 
707
+ // Validate ../../src/app/api/ollama/config/route.ts
708
+ {
709
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/ollama/config">> = Specific
710
+ const handler = {} as typeof import("../../src/app/api/ollama/config/route.js")
711
+ type __Check = __IsExpected<typeof handler>
712
+ // @ts-ignore
713
+ type __Unused = __Check
714
+ }
715
+
698
716
  // Validate ../../src/app/api/ollama/models/route.ts
699
717
  {
700
718
  type __IsExpected<Specific extends RouteHandlerConfig<"/api/ollama/models">> = Specific
@@ -10,10 +10,10 @@ import {
10
10
  readJsonFile,
11
11
  withFileLock,
12
12
  writeJsonFile
13
- } from "./chunk-PTHQK26K.mjs";
13
+ } from "./chunk-BFESJMNO.mjs";
14
14
 
15
15
  // packages/feature/agent/src/server/state/globalState.ts
16
- import { createReadStream, existsSync } from "fs";
16
+ import { createReadStream, existsSync, statSync } from "fs";
17
17
  import { createInterface } from "readline";
18
18
  import { basename } from "path";
19
19
 
@@ -254,28 +254,66 @@ async function getLastUserMessage(cwd, sessionId) {
254
254
  var SUMMARY_THRESHOLD = 10;
255
255
  var SUMMARY_HEAD = 5;
256
256
  var SUMMARY_TAIL = 5;
257
- async function getSessionContent(cwd, sessionId) {
257
+ var UNTITLED_SESSION = "Untitled Session";
258
+ function resolveSessionFile(cwd, sessionId) {
258
259
  const claudePath = getClaudeSessionPath(cwd, sessionId);
259
- if (existsSync(claudePath)) return getClaudeStyleContent(claudePath);
260
+ if (existsSync(claudePath)) return { path: claudePath, read: getClaudeStyleContent };
260
261
  const claude2Path = getClaude2SessionPath(cwd, sessionId);
261
- if (existsSync(claude2Path)) return getClaudeStyleContent(claude2Path);
262
+ if (existsSync(claude2Path)) return { path: claude2Path, read: getClaudeStyleContent };
262
263
  const ollamaPath = getOllamaSessionPath(cwd, sessionId);
263
- if (existsSync(ollamaPath)) return getClaudeStyleContent(ollamaPath);
264
+ if (existsSync(ollamaPath)) return { path: ollamaPath, read: getClaudeStyleContent };
264
265
  const codexPath = findCodexSessionPath(sessionId);
265
266
  if (codexPath && existsSync(codexPath)) {
266
- return { aiTitle: "", summary: "", messages: await getCodexUserMessages(codexPath) };
267
+ return {
268
+ path: codexPath,
269
+ read: async (p) => ({ aiTitle: "", summary: "", messages: await getCodexUserMessages(p) })
270
+ };
267
271
  }
268
272
  const kimiPath = findKimiSessionPath(sessionId);
269
273
  if (kimiPath && existsSync(kimiPath)) {
270
- return { aiTitle: "", summary: "", messages: await getKimiUserMessages(kimiPath) };
274
+ return {
275
+ path: kimiPath,
276
+ read: async (p) => ({ aiTitle: "", summary: "", messages: await getKimiUserMessages(p) })
277
+ };
278
+ }
279
+ return null;
280
+ }
281
+ var CONTENT_CACHE_MAX = 40;
282
+ var contentCache = /* @__PURE__ */ new Map();
283
+ function fileFingerprint(filePath) {
284
+ const st = statSync(filePath);
285
+ return `${st.mtimeMs}-${st.size}`;
286
+ }
287
+ async function getSessionContent(cwd, sessionId) {
288
+ const resolved = resolveSessionFile(cwd, sessionId);
289
+ if (!resolved) return { aiTitle: "", summary: "", messages: [] };
290
+ let fingerprint = "";
291
+ try {
292
+ fingerprint = fileFingerprint(resolved.path);
293
+ const cached = contentCache.get(resolved.path);
294
+ if (cached && cached.fingerprint === fingerprint) {
295
+ contentCache.delete(resolved.path);
296
+ contentCache.set(resolved.path, cached);
297
+ return cached.content;
298
+ }
299
+ } catch {
271
300
  }
272
- return { aiTitle: "", summary: "", messages: [] };
301
+ const content = await resolved.read(resolved.path);
302
+ if (fingerprint) {
303
+ contentCache.delete(resolved.path);
304
+ contentCache.set(resolved.path, { fingerprint, content });
305
+ if (contentCache.size > CONTENT_CACHE_MAX) {
306
+ const oldest = contentCache.keys().next().value;
307
+ if (oldest !== void 0) contentCache.delete(oldest);
308
+ }
309
+ }
310
+ return content;
273
311
  }
274
- async function getSessionPreview(cwd, sessionId) {
312
+ async function getSessionPreview(cwd, sessionId, opts) {
275
313
  const { aiTitle, summary, messages } = await getSessionContent(cwd, sessionId);
276
314
  const title = generateTitle(aiTitle, summary, messages);
277
315
  const lastUserMessage = messages[messages.length - 1];
278
- const searchText = [summary, ...messages].join("\n").toLowerCase();
316
+ const searchText = opts?.includeSearchText ? [summary, ...messages].join("\n").toLowerCase() : "";
279
317
  if (messages.length <= SUMMARY_THRESHOLD) {
280
318
  return { title, lastUserMessage, firstMessages: messages.map((m) => truncate(m)), lastMessages: [], searchText };
281
319
  }
@@ -304,6 +342,13 @@ async function getGlobalSessionsSnapshot(limit = 15) {
304
342
  const preview = await getSessionPreview(session.cwd, session.sessionId);
305
343
  return {
306
344
  ...session,
345
+ // Re-derive the title from disk on every read (aiTitle > summary >
346
+ // first message) instead of trusting the value persisted in
347
+ // state.json — that snapshot is only refreshed when a run finishes,
348
+ // so it goes stale whenever the aiTitle lands after completion.
349
+ // Fall back to the persisted title only when the transcript is gone
350
+ // (preview degrades to UNTITLED_SESSION). Mirrors /api/global-state.
351
+ title: preview.title !== UNTITLED_SESSION ? preview.title : session.title ?? preview.title,
307
352
  lastUserMessage: preview.lastUserMessage ?? session.lastUserMessage,
308
353
  firstMessages: preview.firstMessages,
309
354
  lastMessages: preview.lastMessages
@@ -326,6 +371,20 @@ function isValidUserMessage(text) {
326
371
  if (!text.trim()) return false;
327
372
  return true;
328
373
  }
374
+ var SNAPSHOT_TYPE_MARKERS = [
375
+ '"type":"user"',
376
+ '"type": "user"',
377
+ '"type":"summary"',
378
+ '"type": "summary"',
379
+ '"type":"ai-title"',
380
+ '"type": "ai-title"'
381
+ ];
382
+ function isSnapshotRelevantLine(line) {
383
+ for (const marker of SNAPSHOT_TYPE_MARKERS) {
384
+ if (line.includes(marker)) return true;
385
+ }
386
+ return false;
387
+ }
329
388
  async function getClaudeStyleTitle(filePath) {
330
389
  try {
331
390
  const fileStream = createReadStream(filePath);
@@ -335,6 +394,7 @@ async function getClaudeStyleTitle(filePath) {
335
394
  const userMessages = [];
336
395
  for await (const line of rl) {
337
396
  if (!line.trim()) continue;
397
+ if (!isSnapshotRelevantLine(line)) continue;
338
398
  try {
339
399
  const entry = JSON.parse(line);
340
400
  if (entry.type === "ai-title" && entry.aiTitle) {
@@ -369,6 +429,7 @@ async function getClaudeStyleUserMessages(filePath) {
369
429
  const rl = createInterface({ input: fileStream, crlfDelay: Infinity });
370
430
  for await (const line of rl) {
371
431
  if (!line.trim()) continue;
432
+ if (!isSnapshotRelevantLine(line)) continue;
372
433
  try {
373
434
  const entry = JSON.parse(line);
374
435
  if (entry.type !== "user") continue;
@@ -406,6 +467,7 @@ async function getClaudeStyleContent(filePath) {
406
467
  const rl = createInterface({ input: fileStream, crlfDelay: Infinity });
407
468
  for await (const line of rl) {
408
469
  if (!line.trim()) continue;
470
+ if (!isSnapshotRelevantLine(line)) continue;
409
471
  try {
410
472
  const entry = JSON.parse(line);
411
473
  if (entry.type === "ai-title" && entry.aiTitle) {
@@ -28644,6 +28644,9 @@ var CLAUDE2_DIR = join4(HOME_DIR, ".claude2");
28644
28644
  var CLAUDE2_PROJECTS_DIR = join4(CLAUDE2_DIR, "projects");
28645
28645
  var DEEPSEEK_DIR = join4(COCKPIT_DIR, "deepseek");
28646
28646
  var DEEPSEEK_PROJECTS_DIR = join4(DEEPSEEK_DIR, "projects");
28647
+ var DEEPSEEK_CREDENTIALS_FILE = join4(DEEPSEEK_DIR, "credentials.json");
28648
+ var OLLAMA_DIR = join4(COCKPIT_DIR, "ollama");
28649
+ var OLLAMA_CONFIG_FILE = join4(OLLAMA_DIR, "config.json");
28647
28650
  function encodePath(path) {
28648
28651
  return path.replace(/[/.]/g, "-");
28649
28652
  }
@@ -29008,6 +29011,9 @@ var snapshotRepoTtlDaysConfig = Config_exports.integer(
29008
29011
  var snapshotMaxFileKbConfig = Config_exports.integer(
29009
29012
  "COCKPIT_SNAPSHOT_MAX_FILE_KB"
29010
29013
  ).pipe(Config_exports.withDefault(2048));
29014
+ var sessionKeepDaysConfig = Config_exports.integer("COCKPIT_SESSION_KEEP_DAYS").pipe(
29015
+ Config_exports.withDefault(30)
29016
+ );
29011
29017
  var CockpitConfig = Effect_exports.gen(
29012
29018
  function* () {
29013
29019
  const env = yield* envConfig;
@@ -29019,6 +29025,7 @@ var CockpitConfig = Effect_exports.gen(
29019
29025
  const snapshotKeepDays = yield* snapshotKeepDaysConfig;
29020
29026
  const snapshotRepoTtlDays = yield* snapshotRepoTtlDaysConfig;
29021
29027
  const snapshotMaxFileKb = yield* snapshotMaxFileKbConfig;
29028
+ const sessionKeepDays = yield* sessionKeepDaysConfig;
29022
29029
  const cockpitDir = yield* Effect_exports.sync(() => {
29023
29030
  const env2 = typeof process !== "undefined" ? process.env : void 0;
29024
29031
  const home = env2?.HOME || env2?.USERPROFILE || ".";
@@ -29039,7 +29046,8 @@ var CockpitConfig = Effect_exports.gen(
29039
29046
  logFile,
29040
29047
  snapshotKeepDays,
29041
29048
  snapshotRepoTtlDays,
29042
- snapshotMaxFileKb
29049
+ snapshotMaxFileKb,
29050
+ sessionKeepDays
29043
29051
  };
29044
29052
  }
29045
29053
  ).pipe(Effect_exports.orDie);
@@ -29749,12 +29757,20 @@ import { createOpenAI } from "@ai-sdk/openai";
29749
29757
 
29750
29758
  // packages/shared/utils/src/ollamaEnv.ts
29751
29759
  var DEFAULT_BASE = "http://127.0.0.1:11434";
29752
- function getOllamaBaseURL() {
29753
- const raw = process.env.OLLAMA_BASE_URL || DEFAULT_BASE;
29760
+ var DEFAULT_API_KEY = "ollama";
29761
+ function normalizeBase(raw) {
29754
29762
  return raw.replace(/\/v1\/?$/, "").replace(/\/+$/, "");
29755
29763
  }
29756
- function getOllamaOpenAIBaseURL() {
29757
- return `${getOllamaBaseURL()}/v1/`;
29764
+ async function readOllamaStoredConfig() {
29765
+ return readJsonFile(OLLAMA_CONFIG_FILE, {});
29766
+ }
29767
+ async function resolveOllamaConnection() {
29768
+ const cfg = await readOllamaStoredConfig();
29769
+ const baseUrl = normalizeBase(
29770
+ cfg.baseUrl?.trim() || process.env.OLLAMA_BASE_URL || DEFAULT_BASE
29771
+ );
29772
+ const apiKey = cfg.apiKey?.trim() || process.env.OLLAMA_API_KEY || DEFAULT_API_KEY;
29773
+ return { baseUrl, apiKey };
29758
29774
  }
29759
29775
 
29760
29776
  // packages/feature/agent/src/server/engines/ollama/model.ts
@@ -29777,13 +29793,11 @@ var ollamaFetch = async (input, init) => {
29777
29793
  }
29778
29794
  return fetch(input, init);
29779
29795
  };
29780
- function createOllamaModel(modelName) {
29796
+ async function createOllamaModel(modelName) {
29797
+ const { baseUrl, apiKey } = await resolveOllamaConnection();
29781
29798
  const provider = createOpenAI({
29782
- // EFFECT.md §0 exemption: third-party plugin API key in the same category as
29783
- // OPENAI_API_KEY / ANTHROPIC_API_KEY; not pulled into CockpitConfig (would over-couple
29784
- // cockpit configuration with third-party authentication).
29785
- apiKey: process.env.OLLAMA_API_KEY || "ollama",
29786
- baseURL: getOllamaOpenAIBaseURL(),
29799
+ apiKey,
29800
+ baseURL: `${baseUrl}/v1/`,
29787
29801
  fetch: ollamaFetch
29788
29802
  });
29789
29803
  return provider.chat(modelName);
@@ -29811,7 +29825,7 @@ var ollamaStream = (req) => Stream_exports.async((emit2) => {
29811
29825
  const abortController = new AbortController();
29812
29826
  void (async () => {
29813
29827
  try {
29814
- const ollamaModel = createOllamaModel(req.model);
29828
+ const ollamaModel = await createOllamaModel(req.model);
29815
29829
  const result = streamText({
29816
29830
  model: ollamaModel,
29817
29831
  messages: toModelMessages(req.messages),
@@ -30011,7 +30025,7 @@ var runGitOk = (repoDir, workTree, args2, input) => runGit(repoDir, workTree, ar
30011
30025
  );
30012
30026
  var SYMLINK_PATHSPEC_RE = /beyond a symbolic link/;
30013
30027
  var stageAdds = (repoDir, cwd, paths) => Effect_exports.gen(function* () {
30014
- const addArgs = ["add", "-A", "--pathspec-from-file=-", "--pathspec-file-nul"];
30028
+ const addArgs = ["add", "-A", "--force", "--pathspec-from-file=-", "--pathspec-file-nul"];
30015
30029
  const batch = yield* runGit(repoDir, cwd, addArgs, paths.map((p) => `:(literal)${p}`).join("\0"));
30016
30030
  if (batch.code === 0) return;
30017
30031
  if (!SYMLINK_PATHSPEC_RE.test(batch.stderr)) {
@@ -30172,6 +30186,10 @@ var snapshotOnce = (snapshotsRoot, maxFileBytes, trigger, kind) => Effect_export
30172
30186
  return skip;
30173
30187
  });
30174
30188
  const stageOnce = Effect_exports.gen(function* () {
30189
+ const headOk = yield* runGit(repoDir, cwd, ["rev-parse", "--quiet", "--verify", "HEAD"]);
30190
+ if (headOk.code === 0) {
30191
+ yield* runGitOk(repoDir, cwd, ["read-tree", "HEAD"]);
30192
+ }
30175
30193
  const status3 = yield* runGitOk(repoDir, cwd, [
30176
30194
  "status",
30177
30195
  "--porcelain",
@@ -30190,14 +30208,17 @@ var snapshotOnce = (snapshotsRoot, maxFileBytes, trigger, kind) => Effect_export
30190
30208
  for (const e of entries2) {
30191
30209
  const path = e.slice(3);
30192
30210
  if (!path) continue;
30193
- if (e[1] === "D") rmPaths.push(path);
30211
+ if (e[0] === "D" || e[1] === "D") rmPaths.push(path);
30194
30212
  else addPaths.push(path);
30195
30213
  }
30196
30214
  const sizes = yield* Effect_exports.all(
30197
30215
  addPaths.map(
30198
30216
  (p) => fsTry("stat", () => stat(join5(cwd, p)).then((s) => s.isFile() ? s.size : 0)).pipe(
30199
- // Untracked path vanishing between status and stat size 0.
30200
- Effect_exports.orElseSucceed(() => 0)
30217
+ // Path gone between status and stat (concurrent session/build) or
30218
+ // unreadable → -1, excluded below so a vanished path never reaches
30219
+ // `git add`, which would abort the whole batch with "pathspec did
30220
+ // not match any files".
30221
+ Effect_exports.orElseSucceed(() => -1)
30201
30222
  )
30202
30223
  ),
30203
30224
  { concurrency: 16 }
@@ -30205,6 +30226,7 @@ var snapshotOnce = (snapshotsRoot, maxFileBytes, trigger, kind) => Effect_export
30205
30226
  const includedAdds = [];
30206
30227
  let totalBytes = 0;
30207
30228
  for (let i = 0; i < addPaths.length; i++) {
30229
+ if (sizes[i] < 0) continue;
30208
30230
  if (sizes[i] > maxFileBytes) continue;
30209
30231
  includedAdds.push(addPaths[i]);
30210
30232
  totalBytes += sizes[i];
@@ -30502,6 +30524,124 @@ var SnapshotServiceLive = Layer_exports.scoped(
30502
30524
  })
30503
30525
  );
30504
30526
 
30527
+ // packages/feature/agent/src/effect/sessionCleanupLive.ts
30528
+ import { readdir as readdir2, readFile as readFile3, rm as rm2, rmdir, stat as stat2 } from "fs/promises";
30529
+ import { join as join6 } from "path";
30530
+ var DAY_MS = 24 * 3600 * 1e3;
30531
+ var fsTry2 = (op, fn2) => Effect_exports.tryPromise({
30532
+ try: fn2,
30533
+ catch: (cause3) => new AppError({ message: `session cleanup fs ${op} failed`, cause: cause3 })
30534
+ });
30535
+ var isDirectory = (p) => fsTry2("stat", () => stat2(p).then((s) => s.isDirectory())).pipe(
30536
+ Effect_exports.orElseSucceed(() => false)
30537
+ );
30538
+ var loadPinnedIds = (pinnedFile) => Effect_exports.tryPromise({
30539
+ try: async () => {
30540
+ let raw;
30541
+ try {
30542
+ raw = await readFile3(pinnedFile, "utf8");
30543
+ } catch (e) {
30544
+ if (e?.code === "ENOENT") {
30545
+ return { ok: true, ids: /* @__PURE__ */ new Set() };
30546
+ }
30547
+ throw e;
30548
+ }
30549
+ const parsed = JSON.parse(raw);
30550
+ const ids3 = /* @__PURE__ */ new Set();
30551
+ for (const p of Array.isArray(parsed) ? parsed : []) {
30552
+ if (p && typeof p.sessionId === "string") ids3.add(p.sessionId);
30553
+ }
30554
+ return { ok: true, ids: ids3 };
30555
+ },
30556
+ catch: () => null
30557
+ }).pipe(Effect_exports.orElseSucceed(() => ({ ok: false })));
30558
+ var cleanupSessions = (root, keepDays, pinnedFile) => Effect_exports.gen(function* () {
30559
+ const pins = yield* loadPinnedIds(pinnedFile);
30560
+ if (!pins.ok) {
30561
+ yield* Effect_exports.logWarning(
30562
+ "session cleanup: pinned-sessions.json is unreadable/corrupt -- skipping this pass (refusing to risk deleting protected sessions)"
30563
+ );
30564
+ return;
30565
+ }
30566
+ const cutoff = Date.now() - keepDays * DAY_MS;
30567
+ const cwdDirs = yield* fsTry2("readdir root", () => readdir2(root)).pipe(
30568
+ Effect_exports.orElseSucceed(() => [])
30569
+ );
30570
+ for (const cwdName of cwdDirs) {
30571
+ const cwdDir = join6(root, cwdName);
30572
+ if (!(yield* isDirectory(cwdDir))) continue;
30573
+ const entries2 = yield* fsTry2("readdir cwd", () => readdir2(cwdDir)).pipe(
30574
+ Effect_exports.orElseSucceed(() => [])
30575
+ );
30576
+ const sessions = /* @__PURE__ */ new Map();
30577
+ for (const name of entries2) {
30578
+ const full = join6(cwdDir, name);
30579
+ if (name.endsWith(".jsonl")) {
30580
+ const stem = name.slice(0, -".jsonl".length);
30581
+ const s = sessions.get(stem) ?? {};
30582
+ s.jsonl = full;
30583
+ sessions.set(stem, s);
30584
+ } else if (yield* isDirectory(full)) {
30585
+ const s = sessions.get(name) ?? {};
30586
+ s.subdir = full;
30587
+ sessions.set(name, s);
30588
+ }
30589
+ }
30590
+ for (const [stem, s] of sessions) {
30591
+ if (pins.ids.has(stem)) continue;
30592
+ const basis = s.jsonl ?? s.subdir;
30593
+ if (!basis) continue;
30594
+ const mtime = yield* fsTry2(
30595
+ "stat basis",
30596
+ () => stat2(basis).then((st) => st.mtimeMs)
30597
+ ).pipe(Effect_exports.orElseSucceed(() => Number.POSITIVE_INFINITY));
30598
+ if (mtime >= cutoff) continue;
30599
+ if (s.jsonl) {
30600
+ yield* fsTry2("rm jsonl", () => rm2(s.jsonl, { force: true })).pipe(
30601
+ Effect_exports.orElseSucceed(() => void 0)
30602
+ );
30603
+ }
30604
+ if (s.subdir) {
30605
+ yield* fsTry2(
30606
+ "rm subdir",
30607
+ () => rm2(s.subdir, { recursive: true, force: true })
30608
+ ).pipe(Effect_exports.orElseSucceed(() => void 0));
30609
+ }
30610
+ yield* Effect_exports.logInfo(
30611
+ `session cleanup: removed ollama session ${stem} under ${cwdName} (older than ${keepDays}d)`
30612
+ );
30613
+ }
30614
+ const rest = yield* fsTry2("readdir cwd (recount)", () => readdir2(cwdDir)).pipe(
30615
+ Effect_exports.orElseSucceed(() => ["keep"])
30616
+ );
30617
+ if (rest.length === 0) {
30618
+ yield* fsTry2("rmdir cwd", () => rmdir(cwdDir)).pipe(
30619
+ Effect_exports.orElseSucceed(() => void 0)
30620
+ );
30621
+ }
30622
+ }
30623
+ }).pipe(Effect_exports.withSpan("session.cleanup"));
30624
+ var SessionCleanupService = Context_exports.GenericTag(
30625
+ "@cockpit/SessionCleanupService"
30626
+ );
30627
+ var SessionCleanupLive = Layer_exports.scoped(
30628
+ SessionCleanupService,
30629
+ Effect_exports.gen(function* () {
30630
+ const cfg = yield* CockpitConfig;
30631
+ const root = join6(cfg.cockpitDir, "ollama-sessions");
30632
+ const pinnedFile = join6(cfg.cockpitDir, "pinned-sessions.json");
30633
+ const keepDays = Math.max(1, cfg.sessionKeepDays);
30634
+ const cleanup = cleanupSessions(root, keepDays, pinnedFile);
30635
+ yield* Effect_exports.forkScoped(
30636
+ cleanup.pipe(
30637
+ Effect_exports.catchAll((e) => Effect_exports.logWarning(`session cleanup failed: ${e.message}`)),
30638
+ Effect_exports.repeat(Schedule_exports.spaced("24 hours"))
30639
+ )
30640
+ );
30641
+ return SessionCleanupService.of({ cleanup });
30642
+ })
30643
+ );
30644
+
30505
30645
  // packages/shared/effect-runtime/src/server/runtime.ts
30506
30646
  var isDev = process.env.COCKPIT_ENV === "dev";
30507
30647
  var ServerBaseLayer = Layer_exports.unwrapEffect(
@@ -30525,7 +30665,9 @@ var AppLayer = Layer_exports.mergeAll(
30525
30665
  // Agent
30526
30666
  AgentServiceLive,
30527
30667
  // Tool-call snapshots (shadow git)
30528
- SnapshotServiceLive
30668
+ SnapshotServiceLive,
30669
+ // Ollama session transcript retention (daily sweep)
30670
+ SessionCleanupLive
30529
30671
  );
30530
30672
  var AppRuntime = ManagedRuntime_exports.make(AppLayer);
30531
30673
 
@@ -30559,6 +30701,7 @@ export {
30559
30701
  REVIEW_SIGNAL_FILE,
30560
30702
  CLAUDE2_DIR,
30561
30703
  DEEPSEEK_DIR,
30704
+ DEEPSEEK_CREDENTIALS_FILE,
30562
30705
  encodePath,
30563
30706
  getTerminalHistoryPath,
30564
30707
  getTerminalOutputPath,
@@ -13,7 +13,7 @@ import {
13
13
  getTerminalOutputPath,
14
14
  readJsonFile,
15
15
  writeJsonFile
16
- } from "./chunk-PTHQK26K.mjs";
16
+ } from "./chunk-BFESJMNO.mjs";
17
17
 
18
18
  // packages/feature/console/src/server/plugins/browser/BrowserBridge.ts
19
19
  import { WebSocket } from "ws";
package/dist/httpApi.mjs CHANGED
@@ -22,10 +22,10 @@ import {
22
22
  unregisterBrowser,
23
23
  unregisterTerminal,
24
24
  writeStdinToCommand
25
- } from "./chunk-53DHIXIY.mjs";
25
+ } from "./chunk-FMJUH423.mjs";
26
26
  import {
27
27
  getTerminalHistoryPath
28
- } from "./chunk-PTHQK26K.mjs";
28
+ } from "./chunk-BFESJMNO.mjs";
29
29
  import "./chunk-7P6ASYW6.mjs";
30
30
 
31
31
  // src/lib/httpApi.ts
@@ -10,12 +10,13 @@ import {
10
10
  setRunAbort,
11
11
  startRun,
12
12
  updateGlobalState
13
- } from "./chunk-RBT65EBM.mjs";
13
+ } from "./chunk-3X4GQZL4.mjs";
14
14
  import {
15
15
  AgentError,
16
16
  AppRuntime,
17
17
  CLAUDE2_DIR,
18
18
  COCKPIT_DIR,
19
+ DEEPSEEK_CREDENTIALS_FILE,
19
20
  DEEPSEEK_DIR,
20
21
  Effect_exports,
21
22
  SCHEDULED_TASKS_FILE,
@@ -36,7 +37,7 @@ import {
36
37
  settlePendingRecord,
37
38
  withFileLock,
38
39
  writeJsonFile
39
- } from "./chunk-PTHQK26K.mjs";
40
+ } from "./chunk-BFESJMNO.mjs";
40
41
  import {
41
42
  __export
42
43
  } from "./chunk-7P6ASYW6.mjs";
@@ -2658,6 +2659,12 @@ var claudeSpec = {
2658
2659
  }
2659
2660
  };
2660
2661
 
2662
+ // packages/feature/agent/src/server/engines/deepseekCredentials.ts
2663
+ async function readDeepseekApiKey() {
2664
+ const creds = await readJsonFile(DEEPSEEK_CREDENTIALS_FILE, {});
2665
+ return creds.apiKey?.trim() ?? "";
2666
+ }
2667
+
2661
2668
  // packages/feature/agent/src/server/engines/deepseek.ts
2662
2669
  var DEEPSEEK_BASE_URL = "https://api.deepseek.com/anthropic";
2663
2670
  var DEFAULT_MODEL = "deepseek-v4-pro";
@@ -2707,7 +2714,7 @@ var deepseekSpec = {
2707
2714
  // Pre-check BEFORE startRun: API key must exist; resolve model into params (no registry pollution).
2708
2715
  async preflight(params) {
2709
2716
  const settings = await readSettings();
2710
- const apiKey = settings.engines?.deepseek?.apiKey?.trim();
2717
+ const apiKey = await readDeepseekApiKey();
2711
2718
  if (!apiKey) {
2712
2719
  return {
2713
2720
  ok: false,
@@ -2720,8 +2727,7 @@ var deepseekSpec = {
2720
2727
  },
2721
2728
  runner: {
2722
2729
  async run(ctx) {
2723
- const settings = await readSettings();
2724
- const apiKey = settings.engines?.deepseek?.apiKey?.trim() ?? "";
2730
+ const apiKey = await readDeepseekApiKey();
2725
2731
  const model = typeof ctx.params.model === "string" ? ctx.params.model : DEFAULT_MODEL;
2726
2732
  const env = buildDeepseekEnv(apiKey, model);
2727
2733
  await runSdkLoop(ctx, buildDeepseekOptions(ctx, env));
@@ -17153,8 +17159,9 @@ var ollamaSpec = {
17153
17159
 
17154
17160
  `);
17155
17161
  const context = { cwd, todos: [] };
17162
+ const languageModel = await createOllamaModel(model);
17156
17163
  const result = streamText({
17157
- model: createOllamaModel(model),
17164
+ model: languageModel,
17158
17165
  system: buildSystemPrompt(cwd),
17159
17166
  messages,
17160
17167
  tools: createTools(context),
@@ -45,12 +45,12 @@ import {
45
45
  unregisterTerminal,
46
46
  updateBrowserWs,
47
47
  writeStdinToCommand
48
- } from "./chunk-53DHIXIY.mjs";
48
+ } from "./chunk-FMJUH423.mjs";
49
49
  import {
50
50
  createNeo4jDriver,
51
51
  runCypherWithDriver,
52
52
  serializeValue
53
- } from "./chunk-PTHQK26K.mjs";
53
+ } from "./chunk-BFESJMNO.mjs";
54
54
  import "./chunk-7P6ASYW6.mjs";
55
55
  export {
56
56
  INTERRUPTED_EXIT_CODE,
package/dist/wsServer.mjs CHANGED
@@ -2,7 +2,7 @@ import {
2
2
  addRunListener,
3
3
  getGlobalSessionsSnapshot,
4
4
  getRunSnapshot
5
- } from "./chunk-RBT65EBM.mjs";
5
+ } from "./chunk-3X4GQZL4.mjs";
6
6
  import {
7
7
  addExitListener,
8
8
  addOutputListener,
@@ -18,7 +18,7 @@ import {
18
18
  resolvePendingRequest,
19
19
  unregisterBrowser,
20
20
  writeStdinToCommand
21
- } from "./chunk-53DHIXIY.mjs";
21
+ } from "./chunk-FMJUH423.mjs";
22
22
  import {
23
23
  AppError,
24
24
  Effect_exports,
@@ -33,7 +33,7 @@ import {
33
33
  Stream_exports,
34
34
  ValidationError,
35
35
  WSError
36
- } from "./chunk-PTHQK26K.mjs";
36
+ } from "./chunk-BFESJMNO.mjs";
37
37
  import "./chunk-7P6ASYW6.mjs";
38
38
 
39
39
  // src/lib/wsServer.ts
@@ -665,7 +665,7 @@ var handleJupyter = (conn, bubbleId, cwd) => Effect_exports.gen(function* () {
665
665
  Effect_exports.annotateLogs("cwd", cwd)
666
666
  );
667
667
  const { kernelManager } = yield* Effect_exports.tryPromise({
668
- try: () => import("./server-XWLYHEMD.mjs"),
668
+ try: () => import("./server-HKW65PHP.mjs"),
669
669
  catch: (cause) => new AppError({
670
670
  message: "failed to import kernel manager",
671
671
  cause
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@surething/cockpit",
3
- "version": "1.0.242",
3
+ "version": "1.0.244",
4
4
  "description": "The open-source Claude Code GUI — an IDE-like workbench for parallel AI coding. Drive Claude (default), Codex, DeepSeek, Kimi, or local Ollama in tabs. Terminal, browser & DB bubbles, code review. Self-host on a shared dev box — a seat for every teammate. Local-first, MIT.",
5
5
  "author": "Robert",
6
6
  "license": "MIT",