@surething/cockpit 1.0.260 → 1.0.262

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 (678) hide show
  1. package/.next-prod/BUILD_ID +1 -1
  2. package/.next-prod/app-path-routes-manifest.json +7 -4
  3. package/.next-prod/build-manifest.json +2 -2
  4. package/.next-prod/cockpit-build.json +1 -1
  5. package/.next-prod/prerender-manifest.json +4 -4
  6. package/.next-prod/routes-manifest.json +18 -0
  7. package/.next-prod/server/app/_global-error/page.js +2 -2
  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/_tree.segment.rsc +1 -1
  15. package/.next-prod/server/app/_not-found/page.js +1 -1
  16. package/.next-prod/server/app/_not-found/page.js.nft.json +1 -1
  17. package/.next-prod/server/app/_not-found/page_client-reference-manifest.js +1 -1
  18. package/.next-prod/server/app/_not-found.html +2 -2
  19. package/.next-prod/server/app/_not-found.rsc +4 -4
  20. package/.next-prod/server/app/_not-found.segments/_full.segment.rsc +4 -4
  21. package/.next-prod/server/app/_not-found.segments/_index.segment.rsc +12 -11
  22. package/.next-prod/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  23. package/.next-prod/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  24. package/.next-prod/server/app/api/agent/test/route.js +1 -1
  25. package/.next-prod/server/app/api/agent/test/route.js.nft.json +1 -1
  26. package/.next-prod/server/app/api/bash/route.js +1 -1
  27. package/.next-prod/server/app/api/bash/route.js.nft.json +1 -1
  28. package/.next-prod/server/app/api/chat/codex/route.js +1 -1
  29. package/.next-prod/server/app/api/chat/codex/route.js.nft.json +1 -1
  30. package/.next-prod/server/app/api/chat/deepseek/route.js +1 -1
  31. package/.next-prod/server/app/api/chat/deepseek/route.js.nft.json +1 -1
  32. package/.next-prod/server/app/api/chat/glm/route.js +1 -1
  33. package/.next-prod/server/app/api/chat/glm/route.js.nft.json +1 -1
  34. package/.next-prod/server/app/api/chat/kimi/route.js +1 -1
  35. package/.next-prod/server/app/api/chat/kimi/route.js.nft.json +1 -1
  36. package/.next-prod/server/app/api/chat/ollama/route.js +1 -1
  37. package/.next-prod/server/app/api/chat/ollama/route.js.nft.json +1 -1
  38. package/.next-prod/server/app/api/chat/route.js +1 -1
  39. package/.next-prod/server/app/api/chat/route.js.nft.json +1 -1
  40. package/.next-prod/server/app/api/chat/stop/route.js +1 -1
  41. package/.next-prod/server/app/api/chat/stop/route.js.nft.json +1 -1
  42. package/.next-prod/server/app/api/claude-stats/route.js +1 -1
  43. package/.next-prod/server/app/api/claude-stats/route.js.nft.json +1 -1
  44. package/.next-prod/server/app/api/commands/route.js +1 -1
  45. package/.next-prod/server/app/api/commands/route.js.nft.json +1 -1
  46. package/.next-prod/server/app/api/comments/route.js +1 -1
  47. package/.next-prod/server/app/api/comments/route.js.nft.json +1 -1
  48. package/.next-prod/server/app/api/db/columns/route.js +1 -1
  49. package/.next-prod/server/app/api/db/columns/route.js.nft.json +1 -1
  50. package/.next-prod/server/app/api/db/connect/route.js +1 -1
  51. package/.next-prod/server/app/api/db/connect/route.js.nft.json +1 -1
  52. package/.next-prod/server/app/api/db/disconnect/route.js +1 -1
  53. package/.next-prod/server/app/api/db/disconnect/route.js.nft.json +1 -1
  54. package/.next-prod/server/app/api/db/export/route.js +1 -1
  55. package/.next-prod/server/app/api/db/export/route.js.nft.json +1 -1
  56. package/.next-prod/server/app/api/db/query/route.js +1 -1
  57. package/.next-prod/server/app/api/db/query/route.js.nft.json +1 -1
  58. package/.next-prod/server/app/api/db/schemas/route.js +2 -2
  59. package/.next-prod/server/app/api/db/schemas/route.js.nft.json +1 -1
  60. package/.next-prod/server/app/api/deepseek/balance/route.js +1 -1
  61. package/.next-prod/server/app/api/deepseek/balance/route.js.nft.json +1 -1
  62. package/.next-prod/server/app/api/deepseek/credentials/route.js +1 -1
  63. package/.next-prod/server/app/api/deepseek/credentials/route.js.nft.json +1 -1
  64. package/.next-prod/server/app/api/deepseek/models/route.js +1 -1
  65. package/.next-prod/server/app/api/deepseek/models/route.js.nft.json +1 -1
  66. package/.next-prod/server/app/api/dev/spans/route.js +1 -1
  67. package/.next-prod/server/app/api/dev/spans/route.js.nft.json +1 -1
  68. package/.next-prod/server/app/api/extension/version/route.js +1 -1
  69. package/.next-prod/server/app/api/extension/version/route.js.nft.json +1 -1
  70. package/.next-prod/server/app/api/file/route.js +1 -1
  71. package/.next-prod/server/app/api/file/route.js.nft.json +1 -1
  72. package/.next-prod/server/app/api/files/blame/route.js +1 -1
  73. package/.next-prod/server/app/api/files/blame/route.js.nft.json +1 -1
  74. package/.next-prod/server/app/api/files/clipboard/route.js +1 -1
  75. package/.next-prod/server/app/api/files/clipboard/route.js.nft.json +1 -1
  76. package/.next-prod/server/app/api/files/copy/route.js +1 -1
  77. package/.next-prod/server/app/api/files/copy/route.js.nft.json +1 -1
  78. package/.next-prod/server/app/api/files/delete/route.js +1 -1
  79. package/.next-prod/server/app/api/files/delete/route.js.nft.json +1 -1
  80. package/.next-prod/server/app/api/files/expanded/route.js +1 -1
  81. package/.next-prod/server/app/api/files/expanded/route.js.nft.json +1 -1
  82. package/.next-prod/server/app/api/files/index/route.js +1 -1
  83. package/.next-prod/server/app/api/files/index/route.js.nft.json +1 -1
  84. package/.next-prod/server/app/api/files/init/route.js +1 -1
  85. package/.next-prod/server/app/api/files/init/route.js.nft.json +1 -1
  86. package/.next-prod/server/app/api/files/paste/route.js +1 -1
  87. package/.next-prod/server/app/api/files/paste/route.js.nft.json +1 -1
  88. package/.next-prod/server/app/api/files/read/route.js +1 -1
  89. package/.next-prod/server/app/api/files/read/route.js.nft.json +1 -1
  90. package/.next-prod/server/app/api/files/readdir/route.js +1 -1
  91. package/.next-prod/server/app/api/files/readdir/route.js.nft.json +1 -1
  92. package/.next-prod/server/app/api/files/recent/route.js +1 -1
  93. package/.next-prod/server/app/api/files/recent/route.js.nft.json +1 -1
  94. package/.next-prod/server/app/api/files/save/route.js +1 -1
  95. package/.next-prod/server/app/api/files/save/route.js.nft.json +1 -1
  96. package/.next-prod/server/app/api/files/search/route.js +1 -1
  97. package/.next-prod/server/app/api/files/search/route.js.nft.json +1 -1
  98. package/.next-prod/server/app/api/files/stat/route.js +1 -1
  99. package/.next-prod/server/app/api/files/stat/route.js.nft.json +1 -1
  100. package/.next-prod/server/app/api/files/text/route.js +1 -1
  101. package/.next-prod/server/app/api/files/text/route.js.nft.json +1 -1
  102. package/.next-prod/server/app/api/git/branch-diff/route.js +1 -1
  103. package/.next-prod/server/app/api/git/branch-diff/route.js.nft.json +1 -1
  104. package/.next-prod/server/app/api/git/branches/route.js +1 -1
  105. package/.next-prod/server/app/api/git/branches/route.js.nft.json +1 -1
  106. package/.next-prod/server/app/api/git/commit-diff/route.js +1 -1
  107. package/.next-prod/server/app/api/git/commit-diff/route.js.nft.json +1 -1
  108. package/.next-prod/server/app/api/git/commits/route.js +1 -1
  109. package/.next-prod/server/app/api/git/commits/route.js.nft.json +1 -1
  110. package/.next-prod/server/app/api/git/current-branch/route.js +1 -1
  111. package/.next-prod/server/app/api/git/current-branch/route.js.nft.json +1 -1
  112. package/.next-prod/server/app/api/git/diff/route.js +1 -1
  113. package/.next-prod/server/app/api/git/diff/route.js.nft.json +1 -1
  114. package/.next-prod/server/app/api/git/discard/route.js +1 -1
  115. package/.next-prod/server/app/api/git/discard/route.js.nft.json +1 -1
  116. package/.next-prod/server/app/api/git/stage/route.js +1 -1
  117. package/.next-prod/server/app/api/git/stage/route.js.nft.json +1 -1
  118. package/.next-prod/server/app/api/git/status/route.js +1 -1
  119. package/.next-prod/server/app/api/git/status/route.js.nft.json +1 -1
  120. package/.next-prod/server/app/api/git/unstage/route.js +1 -1
  121. package/.next-prod/server/app/api/git/unstage/route.js.nft.json +1 -1
  122. package/.next-prod/server/app/api/git/worktree/route.js +1 -1
  123. package/.next-prod/server/app/api/git/worktree/route.js.nft.json +1 -1
  124. package/.next-prod/server/app/api/glm/credentials/route.js +1 -1
  125. package/.next-prod/server/app/api/glm/credentials/route.js.nft.json +1 -1
  126. package/.next-prod/server/app/api/glm/models/route.js +1 -1
  127. package/.next-prod/server/app/api/glm/models/route.js.nft.json +1 -1
  128. package/.next-prod/server/app/api/glm/usage/route.js +1 -1
  129. package/.next-prod/server/app/api/glm/usage/route.js.nft.json +1 -1
  130. package/.next-prod/server/app/api/global-state/route.js +1 -1
  131. package/.next-prod/server/app/api/global-state/route.js.nft.json +1 -1
  132. package/.next-prod/server/app/api/health/route.js +1 -1
  133. package/.next-prod/server/app/api/health/route.js.nft.json +1 -1
  134. package/.next-prod/server/app/api/html-apps/[id]/route.js +1 -1
  135. package/.next-prod/server/app/api/html-apps/[id]/route.js.nft.json +1 -1
  136. package/.next-prod/server/app/api/html-apps/route.js +1 -1
  137. package/.next-prod/server/app/api/html-apps/route.js.nft.json +1 -1
  138. package/.next-prod/server/app/api/jupyter/load/route.js +1 -1
  139. package/.next-prod/server/app/api/jupyter/load/route.js.nft.json +1 -1
  140. package/.next-prod/server/app/api/jupyter/save/route.js +1 -1
  141. package/.next-prod/server/app/api/jupyter/save/route.js.nft.json +1 -1
  142. package/.next-prod/server/app/api/jupyter/shutdown/route.js +1 -1
  143. package/.next-prod/server/app/api/jupyter/shutdown/route.js.nft.json +1 -1
  144. package/.next-prod/server/app/api/kimi/credentials/route.js +1 -1
  145. package/.next-prod/server/app/api/kimi/credentials/route.js.nft.json +1 -1
  146. package/.next-prod/server/app/api/kimi/models/route.js +1 -1
  147. package/.next-prod/server/app/api/kimi/models/route.js.nft.json +1 -1
  148. package/.next-prod/server/app/api/kimi/usage/route.js +1 -1
  149. package/.next-prod/server/app/api/kimi/usage/route.js.nft.json +1 -1
  150. package/.next-prod/server/app/api/lsp/definition/route.js +1 -1
  151. package/.next-prod/server/app/api/lsp/definition/route.js.nft.json +1 -1
  152. package/.next-prod/server/app/api/lsp/hover/route.js +1 -1
  153. package/.next-prod/server/app/api/lsp/hover/route.js.nft.json +1 -1
  154. package/.next-prod/server/app/api/lsp/references/route.js +1 -1
  155. package/.next-prod/server/app/api/lsp/references/route.js.nft.json +1 -1
  156. package/.next-prod/server/app/api/lsp/status/route.js +1 -1
  157. package/.next-prod/server/app/api/lsp/status/route.js.nft.json +1 -1
  158. package/.next-prod/server/app/api/lsp/warmup/route.js +1 -1
  159. package/.next-prod/server/app/api/lsp/warmup/route.js.nft.json +1 -1
  160. package/.next-prod/server/app/api/mysql/columns/route.js +2 -2
  161. package/.next-prod/server/app/api/mysql/columns/route.js.nft.json +1 -1
  162. package/.next-prod/server/app/api/mysql/connect/route.js +1 -1
  163. package/.next-prod/server/app/api/mysql/connect/route.js.nft.json +1 -1
  164. package/.next-prod/server/app/api/mysql/disconnect/route.js +1 -1
  165. package/.next-prod/server/app/api/mysql/disconnect/route.js.nft.json +1 -1
  166. package/.next-prod/server/app/api/mysql/export/route.js +1 -1
  167. package/.next-prod/server/app/api/mysql/export/route.js.nft.json +1 -1
  168. package/.next-prod/server/app/api/mysql/query/route.js +1 -1
  169. package/.next-prod/server/app/api/mysql/query/route.js.nft.json +1 -1
  170. package/.next-prod/server/app/api/mysql/schemas/route.js +1 -1
  171. package/.next-prod/server/app/api/mysql/schemas/route.js.nft.json +1 -1
  172. package/.next-prod/server/app/api/neo4j/connect/route.js +1 -1
  173. package/.next-prod/server/app/api/neo4j/connect/route.js.nft.json +1 -1
  174. package/.next-prod/server/app/api/neo4j/disconnect/route.js +1 -1
  175. package/.next-prod/server/app/api/neo4j/disconnect/route.js.nft.json +1 -1
  176. package/.next-prod/server/app/api/neo4j/query/route.js +1 -1
  177. package/.next-prod/server/app/api/neo4j/query/route.js.nft.json +1 -1
  178. package/.next-prod/server/app/api/neo4j/schema/route.js +1 -1
  179. package/.next-prod/server/app/api/neo4j/schema/route.js.nft.json +1 -1
  180. package/.next-prod/server/app/api/note/route.js +1 -1
  181. package/.next-prod/server/app/api/note/route.js.nft.json +1 -1
  182. package/.next-prod/server/app/api/ollama/config/route.js +1 -1
  183. package/.next-prod/server/app/api/ollama/config/route.js.nft.json +1 -1
  184. package/.next-prod/server/app/api/ollama/models/route.js +1 -1
  185. package/.next-prod/server/app/api/ollama/models/route.js.nft.json +1 -1
  186. package/.next-prod/server/app/api/ollama/start/route.js +1 -1
  187. package/.next-prod/server/app/api/ollama/start/route.js.nft.json +1 -1
  188. package/.next-prod/server/app/api/open-cursor/route.js +1 -1
  189. package/.next-prod/server/app/api/open-cursor/route.js.nft.json +1 -1
  190. package/.next-prod/server/app/api/open-vscode/route.js +1 -1
  191. package/.next-prod/server/app/api/open-vscode/route.js.nft.json +1 -1
  192. package/.next-prod/server/app/api/pick-folder/route.js +1 -1
  193. package/.next-prod/server/app/api/pick-folder/route.js.nft.json +1 -1
  194. package/.next-prod/server/app/api/pinned-sessions/route.js +1 -1
  195. package/.next-prod/server/app/api/pinned-sessions/route.js.nft.json +1 -1
  196. package/.next-prod/server/app/api/project-settings/route.js +1 -1
  197. package/.next-prod/server/app/api/project-settings/route.js.nft.json +1 -1
  198. package/.next-prod/server/app/api/project-state/route.js +2 -2
  199. package/.next-prod/server/app/api/project-state/route.js.nft.json +1 -1
  200. package/.next-prod/server/app/api/projectGraph/affected/route.js +1 -1
  201. package/.next-prod/server/app/api/projectGraph/affected/route.js.nft.json +1 -1
  202. package/.next-prod/server/app/api/projectGraph/callees/route.js +1 -1
  203. package/.next-prod/server/app/api/projectGraph/callees/route.js.nft.json +1 -1
  204. package/.next-prod/server/app/api/projectGraph/callers/route.js +1 -1
  205. package/.next-prod/server/app/api/projectGraph/callers/route.js.nft.json +1 -1
  206. package/.next-prod/server/app/api/projectGraph/coedit/route.js +1 -1
  207. package/.next-prod/server/app/api/projectGraph/coedit/route.js.nft.json +1 -1
  208. package/.next-prod/server/app/api/projectGraph/context/route.js +1 -1
  209. package/.next-prod/server/app/api/projectGraph/context/route.js.nft.json +1 -1
  210. package/.next-prod/server/app/api/projectGraph/file/route.js +1 -1
  211. package/.next-prod/server/app/api/projectGraph/file/route.js.nft.json +1 -1
  212. package/.next-prod/server/app/api/projectGraph/file-functions/route.js +1 -1
  213. package/.next-prod/server/app/api/projectGraph/file-functions/route.js.nft.json +1 -1
  214. package/.next-prod/server/app/api/projectGraph/impact/route.js +1 -1
  215. package/.next-prod/server/app/api/projectGraph/impact/route.js.nft.json +1 -1
  216. package/.next-prod/server/app/api/projectGraph/related/route.js +1 -1
  217. package/.next-prod/server/app/api/projectGraph/related/route.js.nft.json +1 -1
  218. package/.next-prod/server/app/api/projectGraph/risk/route.js +1 -1
  219. package/.next-prod/server/app/api/projectGraph/risk/route.js.nft.json +1 -1
  220. package/.next-prod/server/app/api/projectGraph/search/route.js +1 -1
  221. package/.next-prod/server/app/api/projectGraph/search/route.js.nft.json +1 -1
  222. package/.next-prod/server/app/api/projects/route.js +1 -1
  223. package/.next-prod/server/app/api/projects/route.js.nft.json +1 -1
  224. package/.next-prod/server/app/api/prompts/config/route.js +1 -1
  225. package/.next-prod/server/app/api/prompts/config/route.js.nft.json +1 -1
  226. package/.next-prod/server/app/api/push/public-key/route.js +1 -1
  227. package/.next-prod/server/app/api/push/public-key/route.js.nft.json +1 -1
  228. package/.next-prod/server/app/api/push/subscribe/route.js +1 -1
  229. package/.next-prod/server/app/api/push/subscribe/route.js.nft.json +1 -1
  230. package/.next-prod/server/app/api/push/unsubscribe/route.js +1 -1
  231. package/.next-prod/server/app/api/push/unsubscribe/route.js.nft.json +1 -1
  232. package/.next-prod/server/app/api/redis/command/route.js +1 -1
  233. package/.next-prod/server/app/api/redis/command/route.js.nft.json +1 -1
  234. package/.next-prod/server/app/api/redis/connect/route.js +1 -1
  235. package/.next-prod/server/app/api/redis/connect/route.js.nft.json +1 -1
  236. package/.next-prod/server/app/api/redis/delete/route.js +1 -1
  237. package/.next-prod/server/app/api/redis/delete/route.js.nft.json +1 -1
  238. package/.next-prod/server/app/api/redis/disconnect/route.js +1 -1
  239. package/.next-prod/server/app/api/redis/disconnect/route.js.nft.json +1 -1
  240. package/.next-prod/server/app/api/redis/get/route.js +1 -1
  241. package/.next-prod/server/app/api/redis/get/route.js.nft.json +1 -1
  242. package/.next-prod/server/app/api/redis/keys/route.js +1 -1
  243. package/.next-prod/server/app/api/redis/keys/route.js.nft.json +1 -1
  244. package/.next-prod/server/app/api/redis/set/route.js +1 -1
  245. package/.next-prod/server/app/api/redis/set/route.js.nft.json +1 -1
  246. package/.next-prod/server/app/api/restart/route.js +1 -0
  247. package/.next-prod/server/app/api/restart/route.js.nft.json +1 -0
  248. package/.next-prod/server/app/api/restart/route_client-reference-manifest.js +1 -0
  249. package/.next-prod/server/app/api/review/[id]/comments/route.js +1 -1
  250. package/.next-prod/server/app/api/review/[id]/comments/route.js.nft.json +1 -1
  251. package/.next-prod/server/app/api/review/[id]/replies/route.js +1 -1
  252. package/.next-prod/server/app/api/review/[id]/replies/route.js.nft.json +1 -1
  253. package/.next-prod/server/app/api/review/[id]/route.js +1 -1
  254. package/.next-prod/server/app/api/review/[id]/route.js.nft.json +1 -1
  255. package/.next-prod/server/app/api/review/identify/route.js +1 -1
  256. package/.next-prod/server/app/api/review/identify/route.js.nft.json +1 -1
  257. package/.next-prod/server/app/api/review/order/route.js +1 -1
  258. package/.next-prod/server/app/api/review/order/route.js.nft.json +1 -1
  259. package/.next-prod/server/app/api/review/route.js +1 -1
  260. package/.next-prod/server/app/api/review/route.js.nft.json +1 -1
  261. package/.next-prod/server/app/api/review/share-info/route.js +1 -1
  262. package/.next-prod/server/app/api/review/share-info/route.js.nft.json +1 -1
  263. package/.next-prod/server/app/api/review/users/route.js +1 -1
  264. package/.next-prod/server/app/api/review/users/route.js.nft.json +1 -1
  265. package/.next-prod/server/app/api/scheduled-tasks/route.js +2 -2
  266. package/.next-prod/server/app/api/scheduled-tasks/route.js.nft.json +1 -1
  267. package/.next-prod/server/app/api/services/config/route.js +1 -1
  268. package/.next-prod/server/app/api/services/config/route.js.nft.json +1 -1
  269. package/.next-prod/server/app/api/services/scripts/route.js +1 -1
  270. package/.next-prod/server/app/api/services/scripts/route.js.nft.json +1 -1
  271. package/.next-prod/server/app/api/session/[sessionId]/fork/route.js +1 -1
  272. package/.next-prod/server/app/api/session/[sessionId]/fork/route.js.nft.json +1 -1
  273. package/.next-prod/server/app/api/session/[sessionId]/history/route.js +1 -1
  274. package/.next-prod/server/app/api/session/[sessionId]/history/route.js.nft.json +1 -1
  275. package/.next-prod/server/app/api/session-by-path/route.js +1 -1
  276. package/.next-prod/server/app/api/session-by-path/route.js.nft.json +1 -1
  277. package/.next-prod/server/app/api/sessions/projects/[encodedPath]/route.js +1 -1
  278. package/.next-prod/server/app/api/sessions/projects/[encodedPath]/route.js.nft.json +1 -1
  279. package/.next-prod/server/app/api/sessions/projects/route.js +1 -1
  280. package/.next-prod/server/app/api/sessions/projects/route.js.nft.json +1 -1
  281. package/.next-prod/server/app/api/sessions/route.js +1 -1
  282. package/.next-prod/server/app/api/sessions/route.js.nft.json +1 -1
  283. package/.next-prod/server/app/api/settings/route.js +1 -1
  284. package/.next-prod/server/app/api/settings/route.js.nft.json +1 -1
  285. package/.next-prod/server/app/api/shutdown/route.js +1 -0
  286. package/.next-prod/server/app/api/shutdown/route.js.nft.json +1 -0
  287. package/.next-prod/server/app/api/shutdown/route_client-reference-manifest.js +1 -0
  288. package/.next-prod/server/app/api/skills/[id]/route.js +1 -1
  289. package/.next-prod/server/app/api/skills/[id]/route.js.nft.json +1 -1
  290. package/.next-prod/server/app/api/skills/content/route.js +1 -1
  291. package/.next-prod/server/app/api/skills/content/route.js.nft.json +1 -1
  292. package/.next-prod/server/app/api/skills/route.js +1 -1
  293. package/.next-prod/server/app/api/skills/route.js.nft.json +1 -1
  294. package/.next-prod/server/app/api/snapshots/diff/route.js +1 -1
  295. package/.next-prod/server/app/api/snapshots/diff/route.js.nft.json +1 -1
  296. package/.next-prod/server/app/api/snapshots/route.js +1 -1
  297. package/.next-prod/server/app/api/snapshots/route.js.nft.json +1 -1
  298. package/.next-prod/server/app/api/terminal/aliases/route.js +1 -1
  299. package/.next-prod/server/app/api/terminal/aliases/route.js.nft.json +1 -1
  300. package/.next-prod/server/app/api/terminal/autocomplete/route.js +1 -1
  301. package/.next-prod/server/app/api/terminal/autocomplete/route.js.nft.json +1 -1
  302. package/.next-prod/server/app/api/terminal/bubble-order/route.js +1 -1
  303. package/.next-prod/server/app/api/terminal/bubble-order/route.js.nft.json +1 -1
  304. package/.next-prod/server/app/api/terminal/env/route.js +1 -1
  305. package/.next-prod/server/app/api/terminal/env/route.js.nft.json +1 -1
  306. package/.next-prod/server/app/api/terminal/history/route.js +1 -1
  307. package/.next-prod/server/app/api/terminal/history/route.js.nft.json +1 -1
  308. package/.next-prod/server/app/api/update/route.js +1 -0
  309. package/.next-prod/server/app/api/update/route.js.nft.json +1 -0
  310. package/.next-prod/server/app/api/update/route_client-reference-manifest.js +1 -0
  311. package/.next-prod/server/app/api/version/route.js +1 -1
  312. package/.next-prod/server/app/api/version/route.js.nft.json +1 -1
  313. package/.next-prod/server/app/apps/[...path]/route.js +1 -1
  314. package/.next-prod/server/app/apps/[...path]/route.js.nft.json +1 -1
  315. package/.next-prod/server/app/favicon.ico/route.js +1 -1
  316. package/.next-prod/server/app/favicon.ico/route.js.nft.json +1 -1
  317. package/.next-prod/server/app/m/page.js +1 -1
  318. package/.next-prod/server/app/m/page.js.nft.json +1 -1
  319. package/.next-prod/server/app/m/page_client-reference-manifest.js +1 -1
  320. package/.next-prod/server/app/manifest.webmanifest/route.js +2 -2
  321. package/.next-prod/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  322. package/.next-prod/server/app/page.js +1 -1
  323. package/.next-prod/server/app/page.js.nft.json +1 -1
  324. package/.next-prod/server/app/page_client-reference-manifest.js +1 -1
  325. package/.next-prod/server/app/project/page.js +1 -1
  326. package/.next-prod/server/app/project/page.js.nft.json +1 -1
  327. package/.next-prod/server/app/project/page_client-reference-manifest.js +1 -1
  328. package/.next-prod/server/app/review/[id]/page.js +1 -1
  329. package/.next-prod/server/app/review/[id]/page.js.nft.json +1 -1
  330. package/.next-prod/server/app/review/[id]/page_client-reference-manifest.js +1 -1
  331. package/.next-prod/server/app-paths-manifest.json +7 -4
  332. package/.next-prod/server/chunks/516.js +1 -0
  333. package/.next-prod/server/chunks/5750.js +16 -13
  334. package/.next-prod/server/chunks/6495.js +1 -1
  335. package/.next-prod/server/chunks/6548.js +1 -1
  336. package/.next-prod/server/chunks/7184.js +1 -1
  337. package/.next-prod/server/chunks/841.js +1 -1
  338. package/.next-prod/server/chunks/9352.js +2 -2
  339. package/.next-prod/server/functions-config-manifest.json +3 -0
  340. package/.next-prod/server/middleware-build-manifest.js +1 -1
  341. package/.next-prod/server/pages/404.html +2 -2
  342. package/.next-prod/server/pages/500.html +1 -1
  343. package/.next-prod/server/server-reference-manifest.json +1 -1
  344. package/.next-prod/static/chunks/{1372-d16d68b1b03a345a.js → 1372-a26fa30d21bd1ecc.js} +1 -1
  345. package/.next-prod/static/chunks/5400-bf3fe22440a73161.js +36 -0
  346. package/.next-prod/static/chunks/6784-d51b98432358f755.js +381 -0
  347. package/.next-prod/static/chunks/app/_global-error/page-7c7e4c414aa6453c.js +1 -0
  348. package/.next-prod/static/chunks/app/api/agent/test/route-7c7e4c414aa6453c.js +1 -0
  349. package/.next-prod/static/chunks/app/api/bash/route-7c7e4c414aa6453c.js +1 -0
  350. package/.next-prod/static/chunks/app/api/chat/codex/route-7c7e4c414aa6453c.js +1 -0
  351. package/.next-prod/static/chunks/app/api/chat/deepseek/route-7c7e4c414aa6453c.js +1 -0
  352. package/.next-prod/static/chunks/app/api/chat/glm/route-7c7e4c414aa6453c.js +1 -0
  353. package/.next-prod/static/chunks/app/api/chat/kimi/route-7c7e4c414aa6453c.js +1 -0
  354. package/.next-prod/static/chunks/app/api/chat/ollama/route-7c7e4c414aa6453c.js +1 -0
  355. package/.next-prod/static/chunks/app/api/chat/route-7c7e4c414aa6453c.js +1 -0
  356. package/.next-prod/static/chunks/app/api/chat/stop/route-7c7e4c414aa6453c.js +1 -0
  357. package/.next-prod/static/chunks/app/api/claude-stats/route-7c7e4c414aa6453c.js +1 -0
  358. package/.next-prod/static/chunks/app/api/commands/route-7c7e4c414aa6453c.js +1 -0
  359. package/.next-prod/static/chunks/app/api/comments/route-7c7e4c414aa6453c.js +1 -0
  360. package/.next-prod/static/chunks/app/api/db/columns/route-7c7e4c414aa6453c.js +1 -0
  361. package/.next-prod/static/chunks/app/api/db/connect/route-7c7e4c414aa6453c.js +1 -0
  362. package/.next-prod/static/chunks/app/api/db/disconnect/route-7c7e4c414aa6453c.js +1 -0
  363. package/.next-prod/static/chunks/app/api/db/export/route-7c7e4c414aa6453c.js +1 -0
  364. package/.next-prod/static/chunks/app/api/db/query/route-7c7e4c414aa6453c.js +1 -0
  365. package/.next-prod/static/chunks/app/api/db/schemas/route-7c7e4c414aa6453c.js +1 -0
  366. package/.next-prod/static/chunks/app/api/deepseek/balance/route-7c7e4c414aa6453c.js +1 -0
  367. package/.next-prod/static/chunks/app/api/deepseek/credentials/route-7c7e4c414aa6453c.js +1 -0
  368. package/.next-prod/static/chunks/app/api/deepseek/models/route-7c7e4c414aa6453c.js +1 -0
  369. package/.next-prod/static/chunks/app/api/dev/spans/route-7c7e4c414aa6453c.js +1 -0
  370. package/.next-prod/static/chunks/app/api/extension/version/route-7c7e4c414aa6453c.js +1 -0
  371. package/.next-prod/static/chunks/app/api/file/route-7c7e4c414aa6453c.js +1 -0
  372. package/.next-prod/static/chunks/app/api/files/blame/route-7c7e4c414aa6453c.js +1 -0
  373. package/.next-prod/static/chunks/app/api/files/clipboard/route-7c7e4c414aa6453c.js +1 -0
  374. package/.next-prod/static/chunks/app/api/files/copy/route-7c7e4c414aa6453c.js +1 -0
  375. package/.next-prod/static/chunks/app/api/files/delete/route-7c7e4c414aa6453c.js +1 -0
  376. package/.next-prod/static/chunks/app/api/files/expanded/route-7c7e4c414aa6453c.js +1 -0
  377. package/.next-prod/static/chunks/app/api/files/index/route-7c7e4c414aa6453c.js +1 -0
  378. package/.next-prod/static/chunks/app/api/files/init/route-7c7e4c414aa6453c.js +1 -0
  379. package/.next-prod/static/chunks/app/api/files/paste/route-7c7e4c414aa6453c.js +1 -0
  380. package/.next-prod/static/chunks/app/api/files/read/route-7c7e4c414aa6453c.js +1 -0
  381. package/.next-prod/static/chunks/app/api/files/readdir/route-7c7e4c414aa6453c.js +1 -0
  382. package/.next-prod/static/chunks/app/api/files/recent/route-7c7e4c414aa6453c.js +1 -0
  383. package/.next-prod/static/chunks/app/api/files/save/route-7c7e4c414aa6453c.js +1 -0
  384. package/.next-prod/static/chunks/app/api/files/search/route-7c7e4c414aa6453c.js +1 -0
  385. package/.next-prod/static/chunks/app/api/files/stat/route-7c7e4c414aa6453c.js +1 -0
  386. package/.next-prod/static/chunks/app/api/files/text/route-7c7e4c414aa6453c.js +1 -0
  387. package/.next-prod/static/chunks/app/api/git/branch-diff/route-7c7e4c414aa6453c.js +1 -0
  388. package/.next-prod/static/chunks/app/api/git/branches/route-7c7e4c414aa6453c.js +1 -0
  389. package/.next-prod/static/chunks/app/api/git/commit-diff/route-7c7e4c414aa6453c.js +1 -0
  390. package/.next-prod/static/chunks/app/api/git/commits/route-7c7e4c414aa6453c.js +1 -0
  391. package/.next-prod/static/chunks/app/api/git/current-branch/route-7c7e4c414aa6453c.js +1 -0
  392. package/.next-prod/static/chunks/app/api/git/diff/route-7c7e4c414aa6453c.js +1 -0
  393. package/.next-prod/static/chunks/app/api/git/discard/route-7c7e4c414aa6453c.js +1 -0
  394. package/.next-prod/static/chunks/app/api/git/stage/route-7c7e4c414aa6453c.js +1 -0
  395. package/.next-prod/static/chunks/app/api/git/status/route-7c7e4c414aa6453c.js +1 -0
  396. package/.next-prod/static/chunks/app/api/git/unstage/route-7c7e4c414aa6453c.js +1 -0
  397. package/.next-prod/static/chunks/app/api/git/worktree/route-7c7e4c414aa6453c.js +1 -0
  398. package/.next-prod/static/chunks/app/api/glm/credentials/route-7c7e4c414aa6453c.js +1 -0
  399. package/.next-prod/static/chunks/app/api/glm/models/route-7c7e4c414aa6453c.js +1 -0
  400. package/.next-prod/static/chunks/app/api/glm/usage/route-7c7e4c414aa6453c.js +1 -0
  401. package/.next-prod/static/chunks/app/api/global-state/route-7c7e4c414aa6453c.js +1 -0
  402. package/.next-prod/static/chunks/app/api/health/route-7c7e4c414aa6453c.js +1 -0
  403. package/.next-prod/static/chunks/app/api/html-apps/[id]/route-7c7e4c414aa6453c.js +1 -0
  404. package/.next-prod/static/chunks/app/api/html-apps/route-7c7e4c414aa6453c.js +1 -0
  405. package/.next-prod/static/chunks/app/api/jupyter/load/route-7c7e4c414aa6453c.js +1 -0
  406. package/.next-prod/static/chunks/app/api/jupyter/save/route-7c7e4c414aa6453c.js +1 -0
  407. package/.next-prod/static/chunks/app/api/jupyter/shutdown/route-7c7e4c414aa6453c.js +1 -0
  408. package/.next-prod/static/chunks/app/api/kimi/credentials/route-7c7e4c414aa6453c.js +1 -0
  409. package/.next-prod/static/chunks/app/api/kimi/models/route-7c7e4c414aa6453c.js +1 -0
  410. package/.next-prod/static/chunks/app/api/kimi/usage/route-7c7e4c414aa6453c.js +1 -0
  411. package/.next-prod/static/chunks/app/api/lsp/definition/route-7c7e4c414aa6453c.js +1 -0
  412. package/.next-prod/static/chunks/app/api/lsp/hover/route-7c7e4c414aa6453c.js +1 -0
  413. package/.next-prod/static/chunks/app/api/lsp/references/route-7c7e4c414aa6453c.js +1 -0
  414. package/.next-prod/static/chunks/app/api/lsp/status/route-7c7e4c414aa6453c.js +1 -0
  415. package/.next-prod/static/chunks/app/api/lsp/warmup/route-7c7e4c414aa6453c.js +1 -0
  416. package/.next-prod/static/chunks/app/api/mysql/columns/route-7c7e4c414aa6453c.js +1 -0
  417. package/.next-prod/static/chunks/app/api/mysql/connect/route-7c7e4c414aa6453c.js +1 -0
  418. package/.next-prod/static/chunks/app/api/mysql/disconnect/route-7c7e4c414aa6453c.js +1 -0
  419. package/.next-prod/static/chunks/app/api/mysql/export/route-7c7e4c414aa6453c.js +1 -0
  420. package/.next-prod/static/chunks/app/api/mysql/query/route-7c7e4c414aa6453c.js +1 -0
  421. package/.next-prod/static/chunks/app/api/mysql/schemas/route-7c7e4c414aa6453c.js +1 -0
  422. package/.next-prod/static/chunks/app/api/neo4j/connect/route-7c7e4c414aa6453c.js +1 -0
  423. package/.next-prod/static/chunks/app/api/neo4j/disconnect/route-7c7e4c414aa6453c.js +1 -0
  424. package/.next-prod/static/chunks/app/api/neo4j/query/route-7c7e4c414aa6453c.js +1 -0
  425. package/.next-prod/static/chunks/app/api/neo4j/schema/route-7c7e4c414aa6453c.js +1 -0
  426. package/.next-prod/static/chunks/app/api/note/route-7c7e4c414aa6453c.js +1 -0
  427. package/.next-prod/static/chunks/app/api/ollama/config/route-7c7e4c414aa6453c.js +1 -0
  428. package/.next-prod/static/chunks/app/api/ollama/models/route-7c7e4c414aa6453c.js +1 -0
  429. package/.next-prod/static/chunks/app/api/ollama/start/route-7c7e4c414aa6453c.js +1 -0
  430. package/.next-prod/static/chunks/app/api/open-cursor/route-7c7e4c414aa6453c.js +1 -0
  431. package/.next-prod/static/chunks/app/api/open-vscode/route-7c7e4c414aa6453c.js +1 -0
  432. package/.next-prod/static/chunks/app/api/pick-folder/route-7c7e4c414aa6453c.js +1 -0
  433. package/.next-prod/static/chunks/app/api/pinned-sessions/route-7c7e4c414aa6453c.js +1 -0
  434. package/.next-prod/static/chunks/app/api/project-settings/route-7c7e4c414aa6453c.js +1 -0
  435. package/.next-prod/static/chunks/app/api/project-state/route-7c7e4c414aa6453c.js +1 -0
  436. package/.next-prod/static/chunks/app/api/projectGraph/affected/route-7c7e4c414aa6453c.js +1 -0
  437. package/.next-prod/static/chunks/app/api/projectGraph/callees/route-7c7e4c414aa6453c.js +1 -0
  438. package/.next-prod/static/chunks/app/api/projectGraph/callers/route-7c7e4c414aa6453c.js +1 -0
  439. package/.next-prod/static/chunks/app/api/projectGraph/coedit/route-7c7e4c414aa6453c.js +1 -0
  440. package/.next-prod/static/chunks/app/api/projectGraph/context/route-7c7e4c414aa6453c.js +1 -0
  441. package/.next-prod/static/chunks/app/api/projectGraph/file/route-7c7e4c414aa6453c.js +1 -0
  442. package/.next-prod/static/chunks/app/api/projectGraph/file-functions/route-7c7e4c414aa6453c.js +1 -0
  443. package/.next-prod/static/chunks/app/api/projectGraph/impact/route-7c7e4c414aa6453c.js +1 -0
  444. package/.next-prod/static/chunks/app/api/projectGraph/related/route-7c7e4c414aa6453c.js +1 -0
  445. package/.next-prod/static/chunks/app/api/projectGraph/risk/route-7c7e4c414aa6453c.js +1 -0
  446. package/.next-prod/static/chunks/app/api/projectGraph/search/route-7c7e4c414aa6453c.js +1 -0
  447. package/.next-prod/static/chunks/app/api/projects/route-7c7e4c414aa6453c.js +1 -0
  448. package/.next-prod/static/chunks/app/api/prompts/config/route-7c7e4c414aa6453c.js +1 -0
  449. package/.next-prod/static/chunks/app/api/push/public-key/route-7c7e4c414aa6453c.js +1 -0
  450. package/.next-prod/static/chunks/app/api/push/subscribe/route-7c7e4c414aa6453c.js +1 -0
  451. package/.next-prod/static/chunks/app/api/push/unsubscribe/route-7c7e4c414aa6453c.js +1 -0
  452. package/.next-prod/static/chunks/app/api/redis/command/route-7c7e4c414aa6453c.js +1 -0
  453. package/.next-prod/static/chunks/app/api/redis/connect/route-7c7e4c414aa6453c.js +1 -0
  454. package/.next-prod/static/chunks/app/api/redis/delete/route-7c7e4c414aa6453c.js +1 -0
  455. package/.next-prod/static/chunks/app/api/redis/disconnect/route-7c7e4c414aa6453c.js +1 -0
  456. package/.next-prod/static/chunks/app/api/redis/get/route-7c7e4c414aa6453c.js +1 -0
  457. package/.next-prod/static/chunks/app/api/redis/keys/route-7c7e4c414aa6453c.js +1 -0
  458. package/.next-prod/static/chunks/app/api/redis/set/route-7c7e4c414aa6453c.js +1 -0
  459. package/.next-prod/static/chunks/app/api/restart/route-7c7e4c414aa6453c.js +1 -0
  460. package/.next-prod/static/chunks/app/api/review/[id]/comments/route-7c7e4c414aa6453c.js +1 -0
  461. package/.next-prod/static/chunks/app/api/review/[id]/replies/route-7c7e4c414aa6453c.js +1 -0
  462. package/.next-prod/static/chunks/app/api/review/[id]/route-7c7e4c414aa6453c.js +1 -0
  463. package/.next-prod/static/chunks/app/api/review/identify/route-7c7e4c414aa6453c.js +1 -0
  464. package/.next-prod/static/chunks/app/api/review/order/route-7c7e4c414aa6453c.js +1 -0
  465. package/.next-prod/static/chunks/app/api/review/route-7c7e4c414aa6453c.js +1 -0
  466. package/.next-prod/static/chunks/app/api/review/share-info/route-7c7e4c414aa6453c.js +1 -0
  467. package/.next-prod/static/chunks/app/api/review/users/route-7c7e4c414aa6453c.js +1 -0
  468. package/.next-prod/static/chunks/app/api/scheduled-tasks/route-7c7e4c414aa6453c.js +1 -0
  469. package/.next-prod/static/chunks/app/api/services/config/route-7c7e4c414aa6453c.js +1 -0
  470. package/.next-prod/static/chunks/app/api/services/scripts/route-7c7e4c414aa6453c.js +1 -0
  471. package/.next-prod/static/chunks/app/api/session/[sessionId]/fork/route-7c7e4c414aa6453c.js +1 -0
  472. package/.next-prod/static/chunks/app/api/session/[sessionId]/history/route-7c7e4c414aa6453c.js +1 -0
  473. package/.next-prod/static/chunks/app/api/session-by-path/route-7c7e4c414aa6453c.js +1 -0
  474. package/.next-prod/static/chunks/app/api/sessions/projects/[encodedPath]/route-7c7e4c414aa6453c.js +1 -0
  475. package/.next-prod/static/chunks/app/api/sessions/projects/route-7c7e4c414aa6453c.js +1 -0
  476. package/.next-prod/static/chunks/app/api/sessions/route-7c7e4c414aa6453c.js +1 -0
  477. package/.next-prod/static/chunks/app/api/settings/route-7c7e4c414aa6453c.js +1 -0
  478. package/.next-prod/static/chunks/app/api/shutdown/route-7c7e4c414aa6453c.js +1 -0
  479. package/.next-prod/static/chunks/app/api/skills/[id]/route-7c7e4c414aa6453c.js +1 -0
  480. package/.next-prod/static/chunks/app/api/skills/content/route-7c7e4c414aa6453c.js +1 -0
  481. package/.next-prod/static/chunks/app/api/skills/route-7c7e4c414aa6453c.js +1 -0
  482. package/.next-prod/static/chunks/app/api/snapshots/diff/route-7c7e4c414aa6453c.js +1 -0
  483. package/.next-prod/static/chunks/app/api/snapshots/route-7c7e4c414aa6453c.js +1 -0
  484. package/.next-prod/static/chunks/app/api/terminal/aliases/route-7c7e4c414aa6453c.js +1 -0
  485. package/.next-prod/static/chunks/app/api/terminal/autocomplete/route-7c7e4c414aa6453c.js +1 -0
  486. package/.next-prod/static/chunks/app/api/terminal/bubble-order/route-7c7e4c414aa6453c.js +1 -0
  487. package/.next-prod/static/chunks/app/api/terminal/env/route-7c7e4c414aa6453c.js +1 -0
  488. package/.next-prod/static/chunks/app/api/terminal/history/route-7c7e4c414aa6453c.js +1 -0
  489. package/.next-prod/static/chunks/app/api/update/route-7c7e4c414aa6453c.js +1 -0
  490. package/.next-prod/static/chunks/app/api/version/route-7c7e4c414aa6453c.js +1 -0
  491. package/.next-prod/static/chunks/app/apps/[...path]/route-7c7e4c414aa6453c.js +1 -0
  492. package/.next-prod/static/chunks/app/{layout-ab52fc1a83af968b.js → layout-7b31e254e348e208.js} +1 -1
  493. package/.next-prod/static/chunks/app/manifest.webmanifest/route-7c7e4c414aa6453c.js +1 -0
  494. package/.next-prod/static/chunks/app/{page-5de8b6584e328a6f.js → page-cb0d12250512641d.js} +1 -1
  495. package/.next-prod/static/chunks/app/project/{page-5de8b6584e328a6f.js → page-cb0d12250512641d.js} +1 -1
  496. package/.next-prod/static/chunks/next/dist/client/components/builtin/app-error-7c7e4c414aa6453c.js +1 -0
  497. package/.next-prod/static/chunks/next/dist/client/components/builtin/forbidden-7c7e4c414aa6453c.js +1 -0
  498. package/.next-prod/static/chunks/next/dist/client/components/builtin/not-found-7c7e4c414aa6453c.js +1 -0
  499. package/.next-prod/static/chunks/next/dist/client/components/builtin/unauthorized-7c7e4c414aa6453c.js +1 -0
  500. package/.next-prod/static/css/38ad6f470b64a40f.css +1 -0
  501. package/.next-prod/static/noNfrQRJFchmZSWx_yn1K/_buildManifest.js +1 -0
  502. package/.next-prod/trace +14 -14
  503. package/.next-prod/trace-build +1 -1
  504. package/.next-prod/types/app/api/restart/route.ts +353 -0
  505. package/.next-prod/types/app/api/shutdown/route.ts +353 -0
  506. package/.next-prod/types/app/api/update/route.ts +353 -0
  507. package/.next-prod/types/routes.d.ts +4 -1
  508. package/.next-prod/types/validator.ts +27 -0
  509. package/README.md +75 -0
  510. package/README.zh.md +64 -0
  511. package/apps/devkit/app.jsx +20 -18
  512. package/bin/cock-service.mjs +498 -0
  513. package/bin/cock.mjs +35 -27
  514. package/bin/cockpitHome.mjs +33 -0
  515. package/bin/rotateLog.mjs +52 -0
  516. package/bin/updater.mjs +231 -0
  517. package/dist/{chunk-CLPJYIFC.mjs → chunk-AI7T3EXM.mjs} +4 -3
  518. package/dist/{chunk-B5LXMESP.mjs → chunk-LC4LAEWJ.mjs} +1 -1
  519. package/dist/{chunk-TU3GL2HK.mjs → chunk-ZCMAJV2M.mjs} +15 -4
  520. package/dist/httpApi.mjs +2 -2
  521. package/dist/scheduledTasks.mjs +61 -7
  522. package/dist/{server-2UJDVZ32.mjs → server-CQXVJT3F.mjs} +2 -2
  523. package/dist/wsServer.mjs +144 -112
  524. package/package.json +1 -1
  525. package/server.mjs +127 -11
  526. package/.next-prod/server/chunks/151.js +0 -1
  527. package/.next-prod/static/4Jgc-wu2w_CC8iS5G1QZf/_buildManifest.js +0 -1
  528. package/.next-prod/static/chunks/1157-164bcf046a0a9b15.js +0 -32
  529. package/.next-prod/static/chunks/6784-09dffdb0e8ca7fb3.js +0 -381
  530. package/.next-prod/static/chunks/app/_global-error/page-3c1c06e2de280418.js +0 -1
  531. package/.next-prod/static/chunks/app/api/agent/test/route-3c1c06e2de280418.js +0 -1
  532. package/.next-prod/static/chunks/app/api/bash/route-3c1c06e2de280418.js +0 -1
  533. package/.next-prod/static/chunks/app/api/chat/codex/route-3c1c06e2de280418.js +0 -1
  534. package/.next-prod/static/chunks/app/api/chat/deepseek/route-3c1c06e2de280418.js +0 -1
  535. package/.next-prod/static/chunks/app/api/chat/glm/route-3c1c06e2de280418.js +0 -1
  536. package/.next-prod/static/chunks/app/api/chat/kimi/route-3c1c06e2de280418.js +0 -1
  537. package/.next-prod/static/chunks/app/api/chat/ollama/route-3c1c06e2de280418.js +0 -1
  538. package/.next-prod/static/chunks/app/api/chat/route-3c1c06e2de280418.js +0 -1
  539. package/.next-prod/static/chunks/app/api/chat/stop/route-3c1c06e2de280418.js +0 -1
  540. package/.next-prod/static/chunks/app/api/claude-stats/route-3c1c06e2de280418.js +0 -1
  541. package/.next-prod/static/chunks/app/api/commands/route-3c1c06e2de280418.js +0 -1
  542. package/.next-prod/static/chunks/app/api/comments/route-3c1c06e2de280418.js +0 -1
  543. package/.next-prod/static/chunks/app/api/db/columns/route-3c1c06e2de280418.js +0 -1
  544. package/.next-prod/static/chunks/app/api/db/connect/route-3c1c06e2de280418.js +0 -1
  545. package/.next-prod/static/chunks/app/api/db/disconnect/route-3c1c06e2de280418.js +0 -1
  546. package/.next-prod/static/chunks/app/api/db/export/route-3c1c06e2de280418.js +0 -1
  547. package/.next-prod/static/chunks/app/api/db/query/route-3c1c06e2de280418.js +0 -1
  548. package/.next-prod/static/chunks/app/api/db/schemas/route-3c1c06e2de280418.js +0 -1
  549. package/.next-prod/static/chunks/app/api/deepseek/balance/route-3c1c06e2de280418.js +0 -1
  550. package/.next-prod/static/chunks/app/api/deepseek/credentials/route-3c1c06e2de280418.js +0 -1
  551. package/.next-prod/static/chunks/app/api/deepseek/models/route-3c1c06e2de280418.js +0 -1
  552. package/.next-prod/static/chunks/app/api/dev/spans/route-3c1c06e2de280418.js +0 -1
  553. package/.next-prod/static/chunks/app/api/extension/version/route-3c1c06e2de280418.js +0 -1
  554. package/.next-prod/static/chunks/app/api/file/route-3c1c06e2de280418.js +0 -1
  555. package/.next-prod/static/chunks/app/api/files/blame/route-3c1c06e2de280418.js +0 -1
  556. package/.next-prod/static/chunks/app/api/files/clipboard/route-3c1c06e2de280418.js +0 -1
  557. package/.next-prod/static/chunks/app/api/files/copy/route-3c1c06e2de280418.js +0 -1
  558. package/.next-prod/static/chunks/app/api/files/delete/route-3c1c06e2de280418.js +0 -1
  559. package/.next-prod/static/chunks/app/api/files/expanded/route-3c1c06e2de280418.js +0 -1
  560. package/.next-prod/static/chunks/app/api/files/index/route-3c1c06e2de280418.js +0 -1
  561. package/.next-prod/static/chunks/app/api/files/init/route-3c1c06e2de280418.js +0 -1
  562. package/.next-prod/static/chunks/app/api/files/paste/route-3c1c06e2de280418.js +0 -1
  563. package/.next-prod/static/chunks/app/api/files/read/route-3c1c06e2de280418.js +0 -1
  564. package/.next-prod/static/chunks/app/api/files/readdir/route-3c1c06e2de280418.js +0 -1
  565. package/.next-prod/static/chunks/app/api/files/recent/route-3c1c06e2de280418.js +0 -1
  566. package/.next-prod/static/chunks/app/api/files/save/route-3c1c06e2de280418.js +0 -1
  567. package/.next-prod/static/chunks/app/api/files/search/route-3c1c06e2de280418.js +0 -1
  568. package/.next-prod/static/chunks/app/api/files/stat/route-3c1c06e2de280418.js +0 -1
  569. package/.next-prod/static/chunks/app/api/files/text/route-3c1c06e2de280418.js +0 -1
  570. package/.next-prod/static/chunks/app/api/git/branch-diff/route-3c1c06e2de280418.js +0 -1
  571. package/.next-prod/static/chunks/app/api/git/branches/route-3c1c06e2de280418.js +0 -1
  572. package/.next-prod/static/chunks/app/api/git/commit-diff/route-3c1c06e2de280418.js +0 -1
  573. package/.next-prod/static/chunks/app/api/git/commits/route-3c1c06e2de280418.js +0 -1
  574. package/.next-prod/static/chunks/app/api/git/current-branch/route-3c1c06e2de280418.js +0 -1
  575. package/.next-prod/static/chunks/app/api/git/diff/route-3c1c06e2de280418.js +0 -1
  576. package/.next-prod/static/chunks/app/api/git/discard/route-3c1c06e2de280418.js +0 -1
  577. package/.next-prod/static/chunks/app/api/git/stage/route-3c1c06e2de280418.js +0 -1
  578. package/.next-prod/static/chunks/app/api/git/status/route-3c1c06e2de280418.js +0 -1
  579. package/.next-prod/static/chunks/app/api/git/unstage/route-3c1c06e2de280418.js +0 -1
  580. package/.next-prod/static/chunks/app/api/git/worktree/route-3c1c06e2de280418.js +0 -1
  581. package/.next-prod/static/chunks/app/api/glm/credentials/route-3c1c06e2de280418.js +0 -1
  582. package/.next-prod/static/chunks/app/api/glm/models/route-3c1c06e2de280418.js +0 -1
  583. package/.next-prod/static/chunks/app/api/glm/usage/route-3c1c06e2de280418.js +0 -1
  584. package/.next-prod/static/chunks/app/api/global-state/route-3c1c06e2de280418.js +0 -1
  585. package/.next-prod/static/chunks/app/api/health/route-3c1c06e2de280418.js +0 -1
  586. package/.next-prod/static/chunks/app/api/html-apps/[id]/route-3c1c06e2de280418.js +0 -1
  587. package/.next-prod/static/chunks/app/api/html-apps/route-3c1c06e2de280418.js +0 -1
  588. package/.next-prod/static/chunks/app/api/jupyter/load/route-3c1c06e2de280418.js +0 -1
  589. package/.next-prod/static/chunks/app/api/jupyter/save/route-3c1c06e2de280418.js +0 -1
  590. package/.next-prod/static/chunks/app/api/jupyter/shutdown/route-3c1c06e2de280418.js +0 -1
  591. package/.next-prod/static/chunks/app/api/kimi/credentials/route-3c1c06e2de280418.js +0 -1
  592. package/.next-prod/static/chunks/app/api/kimi/models/route-3c1c06e2de280418.js +0 -1
  593. package/.next-prod/static/chunks/app/api/kimi/usage/route-3c1c06e2de280418.js +0 -1
  594. package/.next-prod/static/chunks/app/api/lsp/definition/route-3c1c06e2de280418.js +0 -1
  595. package/.next-prod/static/chunks/app/api/lsp/hover/route-3c1c06e2de280418.js +0 -1
  596. package/.next-prod/static/chunks/app/api/lsp/references/route-3c1c06e2de280418.js +0 -1
  597. package/.next-prod/static/chunks/app/api/lsp/status/route-3c1c06e2de280418.js +0 -1
  598. package/.next-prod/static/chunks/app/api/lsp/warmup/route-3c1c06e2de280418.js +0 -1
  599. package/.next-prod/static/chunks/app/api/mysql/columns/route-3c1c06e2de280418.js +0 -1
  600. package/.next-prod/static/chunks/app/api/mysql/connect/route-3c1c06e2de280418.js +0 -1
  601. package/.next-prod/static/chunks/app/api/mysql/disconnect/route-3c1c06e2de280418.js +0 -1
  602. package/.next-prod/static/chunks/app/api/mysql/export/route-3c1c06e2de280418.js +0 -1
  603. package/.next-prod/static/chunks/app/api/mysql/query/route-3c1c06e2de280418.js +0 -1
  604. package/.next-prod/static/chunks/app/api/mysql/schemas/route-3c1c06e2de280418.js +0 -1
  605. package/.next-prod/static/chunks/app/api/neo4j/connect/route-3c1c06e2de280418.js +0 -1
  606. package/.next-prod/static/chunks/app/api/neo4j/disconnect/route-3c1c06e2de280418.js +0 -1
  607. package/.next-prod/static/chunks/app/api/neo4j/query/route-3c1c06e2de280418.js +0 -1
  608. package/.next-prod/static/chunks/app/api/neo4j/schema/route-3c1c06e2de280418.js +0 -1
  609. package/.next-prod/static/chunks/app/api/note/route-3c1c06e2de280418.js +0 -1
  610. package/.next-prod/static/chunks/app/api/ollama/config/route-3c1c06e2de280418.js +0 -1
  611. package/.next-prod/static/chunks/app/api/ollama/models/route-3c1c06e2de280418.js +0 -1
  612. package/.next-prod/static/chunks/app/api/ollama/start/route-3c1c06e2de280418.js +0 -1
  613. package/.next-prod/static/chunks/app/api/open-cursor/route-3c1c06e2de280418.js +0 -1
  614. package/.next-prod/static/chunks/app/api/open-vscode/route-3c1c06e2de280418.js +0 -1
  615. package/.next-prod/static/chunks/app/api/pick-folder/route-3c1c06e2de280418.js +0 -1
  616. package/.next-prod/static/chunks/app/api/pinned-sessions/route-3c1c06e2de280418.js +0 -1
  617. package/.next-prod/static/chunks/app/api/project-settings/route-3c1c06e2de280418.js +0 -1
  618. package/.next-prod/static/chunks/app/api/project-state/route-3c1c06e2de280418.js +0 -1
  619. package/.next-prod/static/chunks/app/api/projectGraph/affected/route-3c1c06e2de280418.js +0 -1
  620. package/.next-prod/static/chunks/app/api/projectGraph/callees/route-3c1c06e2de280418.js +0 -1
  621. package/.next-prod/static/chunks/app/api/projectGraph/callers/route-3c1c06e2de280418.js +0 -1
  622. package/.next-prod/static/chunks/app/api/projectGraph/coedit/route-3c1c06e2de280418.js +0 -1
  623. package/.next-prod/static/chunks/app/api/projectGraph/context/route-3c1c06e2de280418.js +0 -1
  624. package/.next-prod/static/chunks/app/api/projectGraph/file/route-3c1c06e2de280418.js +0 -1
  625. package/.next-prod/static/chunks/app/api/projectGraph/file-functions/route-3c1c06e2de280418.js +0 -1
  626. package/.next-prod/static/chunks/app/api/projectGraph/impact/route-3c1c06e2de280418.js +0 -1
  627. package/.next-prod/static/chunks/app/api/projectGraph/related/route-3c1c06e2de280418.js +0 -1
  628. package/.next-prod/static/chunks/app/api/projectGraph/risk/route-3c1c06e2de280418.js +0 -1
  629. package/.next-prod/static/chunks/app/api/projectGraph/search/route-3c1c06e2de280418.js +0 -1
  630. package/.next-prod/static/chunks/app/api/projects/route-3c1c06e2de280418.js +0 -1
  631. package/.next-prod/static/chunks/app/api/prompts/config/route-3c1c06e2de280418.js +0 -1
  632. package/.next-prod/static/chunks/app/api/push/public-key/route-3c1c06e2de280418.js +0 -1
  633. package/.next-prod/static/chunks/app/api/push/subscribe/route-3c1c06e2de280418.js +0 -1
  634. package/.next-prod/static/chunks/app/api/push/unsubscribe/route-3c1c06e2de280418.js +0 -1
  635. package/.next-prod/static/chunks/app/api/redis/command/route-3c1c06e2de280418.js +0 -1
  636. package/.next-prod/static/chunks/app/api/redis/connect/route-3c1c06e2de280418.js +0 -1
  637. package/.next-prod/static/chunks/app/api/redis/delete/route-3c1c06e2de280418.js +0 -1
  638. package/.next-prod/static/chunks/app/api/redis/disconnect/route-3c1c06e2de280418.js +0 -1
  639. package/.next-prod/static/chunks/app/api/redis/get/route-3c1c06e2de280418.js +0 -1
  640. package/.next-prod/static/chunks/app/api/redis/keys/route-3c1c06e2de280418.js +0 -1
  641. package/.next-prod/static/chunks/app/api/redis/set/route-3c1c06e2de280418.js +0 -1
  642. package/.next-prod/static/chunks/app/api/review/[id]/comments/route-3c1c06e2de280418.js +0 -1
  643. package/.next-prod/static/chunks/app/api/review/[id]/replies/route-3c1c06e2de280418.js +0 -1
  644. package/.next-prod/static/chunks/app/api/review/[id]/route-3c1c06e2de280418.js +0 -1
  645. package/.next-prod/static/chunks/app/api/review/identify/route-3c1c06e2de280418.js +0 -1
  646. package/.next-prod/static/chunks/app/api/review/order/route-3c1c06e2de280418.js +0 -1
  647. package/.next-prod/static/chunks/app/api/review/route-3c1c06e2de280418.js +0 -1
  648. package/.next-prod/static/chunks/app/api/review/share-info/route-3c1c06e2de280418.js +0 -1
  649. package/.next-prod/static/chunks/app/api/review/users/route-3c1c06e2de280418.js +0 -1
  650. package/.next-prod/static/chunks/app/api/scheduled-tasks/route-3c1c06e2de280418.js +0 -1
  651. package/.next-prod/static/chunks/app/api/services/config/route-3c1c06e2de280418.js +0 -1
  652. package/.next-prod/static/chunks/app/api/services/scripts/route-3c1c06e2de280418.js +0 -1
  653. package/.next-prod/static/chunks/app/api/session/[sessionId]/fork/route-3c1c06e2de280418.js +0 -1
  654. package/.next-prod/static/chunks/app/api/session/[sessionId]/history/route-3c1c06e2de280418.js +0 -1
  655. package/.next-prod/static/chunks/app/api/session-by-path/route-3c1c06e2de280418.js +0 -1
  656. package/.next-prod/static/chunks/app/api/sessions/projects/[encodedPath]/route-3c1c06e2de280418.js +0 -1
  657. package/.next-prod/static/chunks/app/api/sessions/projects/route-3c1c06e2de280418.js +0 -1
  658. package/.next-prod/static/chunks/app/api/sessions/route-3c1c06e2de280418.js +0 -1
  659. package/.next-prod/static/chunks/app/api/settings/route-3c1c06e2de280418.js +0 -1
  660. package/.next-prod/static/chunks/app/api/skills/[id]/route-3c1c06e2de280418.js +0 -1
  661. package/.next-prod/static/chunks/app/api/skills/content/route-3c1c06e2de280418.js +0 -1
  662. package/.next-prod/static/chunks/app/api/skills/route-3c1c06e2de280418.js +0 -1
  663. package/.next-prod/static/chunks/app/api/snapshots/diff/route-3c1c06e2de280418.js +0 -1
  664. package/.next-prod/static/chunks/app/api/snapshots/route-3c1c06e2de280418.js +0 -1
  665. package/.next-prod/static/chunks/app/api/terminal/aliases/route-3c1c06e2de280418.js +0 -1
  666. package/.next-prod/static/chunks/app/api/terminal/autocomplete/route-3c1c06e2de280418.js +0 -1
  667. package/.next-prod/static/chunks/app/api/terminal/bubble-order/route-3c1c06e2de280418.js +0 -1
  668. package/.next-prod/static/chunks/app/api/terminal/env/route-3c1c06e2de280418.js +0 -1
  669. package/.next-prod/static/chunks/app/api/terminal/history/route-3c1c06e2de280418.js +0 -1
  670. package/.next-prod/static/chunks/app/api/version/route-3c1c06e2de280418.js +0 -1
  671. package/.next-prod/static/chunks/app/apps/[...path]/route-3c1c06e2de280418.js +0 -1
  672. package/.next-prod/static/chunks/app/manifest.webmanifest/route-3c1c06e2de280418.js +0 -1
  673. package/.next-prod/static/chunks/next/dist/client/components/builtin/app-error-3c1c06e2de280418.js +0 -1
  674. package/.next-prod/static/chunks/next/dist/client/components/builtin/forbidden-3c1c06e2de280418.js +0 -1
  675. package/.next-prod/static/chunks/next/dist/client/components/builtin/not-found-3c1c06e2de280418.js +0 -1
  676. package/.next-prod/static/chunks/next/dist/client/components/builtin/unauthorized-3c1c06e2de280418.js +0 -1
  677. package/.next-prod/static/css/83c134c954630942.css +0 -1
  678. /package/.next-prod/static/{4Jgc-wu2w_CC8iS5G1QZf → noNfrQRJFchmZSWx_yn1K}/_ssgManifest.js +0 -0
@@ -0,0 +1,231 @@
1
+ // Out-of-process updater. Started detached by POST /api/update, runs while the
2
+ // server is down, and brings it back up afterwards.
3
+ //
4
+ // SELF-CONTAINED BY REQUIREMENT — do not add imports of cockpit's own modules.
5
+ // This script is copied out to <cockpitHome>/updater/ before being run, because
6
+ // `npm i -g` replaces the whole install directory underneath it. A script
7
+ // running from that directory, or importing anything inside it, can vanish
8
+ // mid-execution. Node builtins only.
9
+ //
10
+ // Why an external process at all: a process cannot reinstall the package it is
11
+ // running from. On Windows that is a hard block (node-pty's pty.node/conpty.node
12
+ // are dlopen'd, so the files are locked and the install fails outright); on
13
+ // POSIX it "works" only until the server lazily imports a chunk that npm has
14
+ // already deleted. So: server exits -> updater installs -> updater respawns it.
15
+ //
16
+ // The environment is inherited through this whole chain. That is what preserves
17
+ // COCKPIT_TOKEN, PORT, COCKPIT_HOST and COCKPIT_HOME across the restart —
18
+ // losing the token would silently turn a tunnel-exposed instance into an open
19
+ // one, so it must never be re-derived from defaults.
20
+ import { spawn, spawnSync } from 'child_process';
21
+ import { appendFileSync, mkdirSync, openSync, readFileSync, writeFileSync } from 'fs';
22
+ import { join } from 'path';
23
+
24
+ const PKG = '@surething/cockpit';
25
+ const EXIT_WAIT_MS = 30_000;
26
+ const POLL_MS = 250;
27
+
28
+ function arg(name, fallback = null) {
29
+ const i = process.argv.indexOf(`--${name}`);
30
+ return i !== -1 && process.argv[i + 1] ? process.argv[i + 1] : fallback;
31
+ }
32
+
33
+ const serverPid = Number(arg('pid', '0'));
34
+ const installRoot = arg('root');
35
+ const cockpitHome = arg('home');
36
+ const fromVersion = arg('from', 'unknown');
37
+ const target = arg('to', 'latest');
38
+
39
+ // --restart-only reuses everything here except the install step. A restart has
40
+ // the same hard requirement as an update — the replacement must be launched by
41
+ // a process that is NOT the one being replaced — and, more importantly, it is
42
+ // how the server's environment survives: COCKPIT_TOKEN, PORT and COCKPIT_HOST
43
+ // are inherited down this chain. A CLI-driven stop+start instead rebuilds the
44
+ // environment from whatever shell the user happens to be in, which silently
45
+ // drops the token and leaves the instance open.
46
+ const restartOnly = process.argv.includes('--restart-only');
47
+
48
+ if (!installRoot || !cockpitHome) {
49
+ console.error('updater: --root and --home are required');
50
+ process.exit(2);
51
+ }
52
+
53
+ const logPath = join(cockpitHome, 'logs', 'updater.log');
54
+ const statePath = join(cockpitHome, 'update-state.json');
55
+
56
+ function log(line) {
57
+ const stamped = `[${new Date().toISOString()}] ${line}\n`;
58
+ try {
59
+ appendFileSync(logPath, stamped);
60
+ } catch { /* logging must never abort an update */ }
61
+ }
62
+
63
+ function writeState(patch) {
64
+ try {
65
+ writeFileSync(
66
+ statePath,
67
+ JSON.stringify({ from: fromVersion, target, pid: process.pid, ...patch }, null, 2)
68
+ );
69
+ } catch { /* best effort */ }
70
+ }
71
+
72
+ const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
73
+
74
+ function pidAlive(pid) {
75
+ if (!pid) return false;
76
+ try {
77
+ process.kill(pid, 0);
78
+ return true;
79
+ } catch {
80
+ return false;
81
+ }
82
+ }
83
+
84
+ function readInstalledVersion() {
85
+ try {
86
+ return JSON.parse(readFileSync(join(installRoot, 'package.json'), 'utf8')).version;
87
+ } catch {
88
+ return null;
89
+ }
90
+ }
91
+
92
+ function runNpm(args) {
93
+ log(`npm ${args.join(' ')}`);
94
+ const r = spawnSync('npm', args, {
95
+ encoding: 'utf-8',
96
+ // Windows npm is npm.cmd; Node >=18.20/20.12 refuses to spawn .cmd without
97
+ // a shell (CVE-2024-27980).
98
+ shell: process.platform === 'win32',
99
+ });
100
+ if (r.error) {
101
+ log(`npm failed to launch: ${r.error.message}`);
102
+ return { ok: false, reason: `could not run npm: ${r.error.message}` };
103
+ }
104
+ if (r.stdout) log(r.stdout.trim());
105
+ if (r.stderr) log(r.stderr.trim());
106
+ if (r.status !== 0) return { ok: false, reason: `npm exited ${r.status}` };
107
+ return { ok: true };
108
+ }
109
+
110
+ /**
111
+ * Restart the server.
112
+ *
113
+ * Always detached, even when the old instance ran in the foreground: the
114
+ * terminal that owned it has already returned to its shell by the time we get
115
+ * here, so there is nothing to hand it back to. The UI states this outright
116
+ * before starting, rather than silently changing how the user stops cockpit.
117
+ */
118
+ function startServer() {
119
+ try {
120
+ mkdirSync(join(cockpitHome, 'logs'), { recursive: true });
121
+ const fd = openSync(join(cockpitHome, 'logs', 'server.log'), 'a');
122
+ const child = spawn(process.execPath, ['server.mjs'], {
123
+ cwd: installRoot,
124
+ env: {
125
+ ...process.env,
126
+ // Inherited env carries the original PORT/token/host. Only the
127
+ // supervision mode and the browser-opening behaviour change: the user
128
+ // is already looking at the page that triggered this.
129
+ COCKPIT_MANAGED: 'bare',
130
+ COCKPIT_NO_OPEN: '1',
131
+ COCKPIT_OPEN_PROJECT: '',
132
+ },
133
+ detached: true,
134
+ windowsHide: true,
135
+ stdio: ['ignore', fd, fd],
136
+ });
137
+ child.unref();
138
+ log(`server respawned, pid ${child.pid}`);
139
+ return true;
140
+ } catch (e) {
141
+ log(`failed to respawn server: ${e.message}`);
142
+ return false;
143
+ }
144
+ }
145
+
146
+ async function main() {
147
+ mkdirSync(join(cockpitHome, 'logs'), { recursive: true });
148
+ const mode = restartOnly ? 'restart' : 'update';
149
+ log(
150
+ restartOnly
151
+ ? `--- restart start (server pid ${serverPid}) ---`
152
+ : `--- update start: ${fromVersion} -> ${target} (server pid ${serverPid}) ---`
153
+ );
154
+ writeState({ mode, phase: 'waiting-for-exit', startedAt: Date.now() });
155
+
156
+ // 1. Wait for the server to release the install directory.
157
+ const deadline = Date.now() + EXIT_WAIT_MS;
158
+ while (pidAlive(serverPid) && Date.now() < deadline) await sleep(POLL_MS);
159
+ if (pidAlive(serverPid)) {
160
+ log(`server ${serverPid} still alive after ${EXIT_WAIT_MS}ms — forcing`);
161
+ try {
162
+ if (process.platform === 'win32') {
163
+ spawnSync('taskkill', ['/PID', String(serverPid), '/T', '/F'], { stdio: 'ignore' });
164
+ } else {
165
+ process.kill(serverPid, 'SIGKILL');
166
+ }
167
+ } catch { /* already gone */ }
168
+ await sleep(1000);
169
+ }
170
+ // Windows needs a beat after exit for the loader to drop its handles on the
171
+ // native .node files; installing too early fails with EPERM/EBUSY.
172
+ if (process.platform === 'win32') await sleep(2000);
173
+
174
+ // 2. Bring it back. A restart stops here — no install, no rollback path.
175
+ if (restartOnly) {
176
+ writeState({ mode, phase: 'restarting' });
177
+ const ok = startServer();
178
+ writeState({ mode, phase: ok ? 'done' : 'failed', restarted: ok, finishedAt: Date.now() });
179
+ log(`--- restart ${ok ? 'complete' : 'FAILED'} ---`);
180
+ process.exit(ok ? 0 : 1);
181
+ }
182
+
183
+ writeState({ mode, phase: 'installing', startedAt: Date.now() });
184
+ const install = runNpm(['install', '-g', `${PKG}@${target}`, '--include=optional']);
185
+
186
+ if (!install.ok) {
187
+ // 3a. Roll back to the version we came from. npm may have already removed
188
+ // the old tree, so leaving it as-is can mean no cockpit at all.
189
+ log(`install failed (${install.reason}) — rolling back to ${fromVersion}`);
190
+ writeState({ phase: 'rolling-back', error: install.reason });
191
+ const rollback =
192
+ fromVersion !== 'unknown'
193
+ ? runNpm(['install', '-g', `${PKG}@${fromVersion}`, '--include=optional'])
194
+ : { ok: false, reason: 'unknown previous version' };
195
+ const restarted = startServer();
196
+ writeState({
197
+ phase: 'failed',
198
+ error: install.reason,
199
+ rolledBack: rollback.ok,
200
+ restarted,
201
+ finishedAt: Date.now(),
202
+ });
203
+ log(`--- update failed; rollback ${rollback.ok ? 'ok' : 'FAILED'} ---`);
204
+ process.exit(1);
205
+ }
206
+
207
+ // 3b. Success.
208
+ const installed = readInstalledVersion();
209
+ log(`installed version now: ${installed}`);
210
+ writeState({ phase: 'restarting', installed });
211
+
212
+ const restarted = startServer();
213
+ writeState({
214
+ phase: restarted ? 'done' : 'failed',
215
+ installed,
216
+ restarted,
217
+ // Same version means npm had nothing newer to give — not an error.
218
+ unchanged: installed === fromVersion,
219
+ finishedAt: Date.now(),
220
+ });
221
+ log(`--- update ${restarted ? 'complete' : 'installed but respawn FAILED'} ---`);
222
+ process.exit(restarted ? 0 : 1);
223
+ }
224
+
225
+ main().catch((e) => {
226
+ log(`updater crashed: ${e && e.stack ? e.stack : e}`);
227
+ // Never leave the user without a server because the updater itself broke.
228
+ const restarted = startServer();
229
+ writeState({ phase: 'failed', error: String(e), restarted, finishedAt: Date.now() });
230
+ process.exit(1);
231
+ });
@@ -14,7 +14,7 @@ import {
14
14
  readJsonFile,
15
15
  sanitizedSpawnEnv,
16
16
  writeJsonFile
17
- } from "./chunk-TU3GL2HK.mjs";
17
+ } from "./chunk-ZCMAJV2M.mjs";
18
18
 
19
19
  // packages/feature/console/src/server/plugins/browser/BrowserBridge.ts
20
20
  import { WebSocket } from "ws";
@@ -679,6 +679,7 @@ function registerCommand(cmd) {
679
679
  });
680
680
  } else {
681
681
  const child = cmd.process;
682
+ if (!child) return;
682
683
  child.stdout?.on("data", (data) => {
683
684
  appendCommandOutput(cmd.commandId, data.toString());
684
685
  });
@@ -988,12 +989,12 @@ function writeStdinToCommand(cmd, data) {
988
989
  }
989
990
  if (data === "") {
990
991
  try {
991
- cmd.process.stdin?.end();
992
+ cmd.process?.stdin?.end();
992
993
  } catch {
993
994
  }
994
995
  return true;
995
996
  }
996
- if (cmd.process.stdin?.writable) {
997
+ if (cmd.process?.stdin?.writable) {
997
998
  cmd.process.stdin.write(data);
998
999
  return true;
999
1000
  }
@@ -14,7 +14,7 @@ import {
14
14
  readJsonFile,
15
15
  withFileLock,
16
16
  writeJsonFile
17
- } from "./chunk-TU3GL2HK.mjs";
17
+ } from "./chunk-ZCMAJV2M.mjs";
18
18
 
19
19
  // packages/feature/agent/src/server/state/globalState.ts
20
20
  import { createReadStream, existsSync, statSync } from "fs";
@@ -28626,6 +28626,20 @@ import { dirname, join as join4, resolve } from "path";
28626
28626
  import { mkdir, readFile, writeFile } from "fs/promises";
28627
28627
  import { closeSync, existsSync, mkdirSync, openSync, readSync, realpathSync, renameSync, statSync, unlinkSync, writeFileSync, readdirSync, readFileSync } from "fs";
28628
28628
  import { execSync } from "child_process";
28629
+
28630
+ // packages/shared/utils/src/encodePath.ts
28631
+ var CLAUDE_ENCODED_MAX_LEN = 200;
28632
+ function claudePathHash(path) {
28633
+ let h = 0;
28634
+ for (let i = 0; i < path.length; i++) h = (h << 5) - h + path.charCodeAt(i) | 0;
28635
+ return Math.abs(h).toString(36);
28636
+ }
28637
+ function encodePath(path) {
28638
+ const encoded = path.replace(/[^a-zA-Z0-9]/g, "-");
28639
+ return encoded.length <= CLAUDE_ENCODED_MAX_LEN ? encoded : `${encoded.slice(0, CLAUDE_ENCODED_MAX_LEN)}-${claudePathHash(path)}`;
28640
+ }
28641
+
28642
+ // packages/shared/utils/src/paths.ts
28629
28643
  var HOME_DIR = homedir();
28630
28644
  var COCKPIT_DIR = process.env.COCKPIT_HOME ? resolve(process.env.COCKPIT_HOME.replace(/^~(?=$|\/)/, HOME_DIR)) : join4(HOME_DIR, ".cockpit");
28631
28645
  var COCKPIT_PROJECTS_DIR = join4(COCKPIT_DIR, "projects");
@@ -28651,9 +28665,6 @@ var GLM_DIR = join4(COCKPIT_DIR, "glm");
28651
28665
  var GLM_CREDENTIALS_FILE = join4(GLM_DIR, "credentials.json");
28652
28666
  var OLLAMA_DIR = join4(COCKPIT_DIR, "ollama");
28653
28667
  var OLLAMA_CONFIG_FILE = join4(OLLAMA_DIR, "config.json");
28654
- function encodePath(path) {
28655
- return path.replace(/[/.]/g, "-");
28656
- }
28657
28668
  function getCockpitProjectDir(cwd) {
28658
28669
  return join4(COCKPIT_PROJECTS_DIR, encodePath(cwd));
28659
28670
  }
@@ -30757,6 +30768,7 @@ export {
30757
30768
  createNeo4jDriver,
30758
30769
  runCypherWithDriver,
30759
30770
  serializeValue,
30771
+ encodePath,
30760
30772
  COCKPIT_DIR,
30761
30773
  GLOBAL_STATE_FILE,
30762
30774
  PUSH_SUBSCRIPTIONS_FILE,
@@ -30769,7 +30781,6 @@ export {
30769
30781
  DEEPSEEK_CREDENTIALS_FILE,
30770
30782
  KIMI_CREDENTIALS_FILE,
30771
30783
  GLM_CREDENTIALS_FILE,
30772
- encodePath,
30773
30784
  getSessionFilePath,
30774
30785
  getTerminalHistoryPath,
30775
30786
  getTerminalOutputPath,
package/dist/httpApi.mjs CHANGED
@@ -22,10 +22,10 @@ import {
22
22
  unregisterBrowser,
23
23
  unregisterTerminal,
24
24
  writeStdinToCommand
25
- } from "./chunk-CLPJYIFC.mjs";
25
+ } from "./chunk-AI7T3EXM.mjs";
26
26
  import {
27
27
  getTerminalHistoryPath
28
- } from "./chunk-TU3GL2HK.mjs";
28
+ } from "./chunk-ZCMAJV2M.mjs";
29
29
  import "./chunk-7P6ASYW6.mjs";
30
30
 
31
31
  // src/lib/httpApi.ts
@@ -14,7 +14,7 @@ import {
14
14
  stashCodexRollout,
15
15
  stashTranscript,
16
16
  updateGlobalState
17
- } from "./chunk-B5LXMESP.mjs";
17
+ } from "./chunk-LC4LAEWJ.mjs";
18
18
  import {
19
19
  AgentError,
20
20
  AppRuntime,
@@ -45,7 +45,7 @@ import {
45
45
  settlePendingRecord,
46
46
  withFileLock,
47
47
  writeJsonFile
48
- } from "./chunk-TU3GL2HK.mjs";
48
+ } from "./chunk-ZCMAJV2M.mjs";
49
49
  import {
50
50
  __export
51
51
  } from "./chunk-7P6ASYW6.mjs";
@@ -17478,6 +17478,8 @@ var CODEX_IMAGE_ONLY_TEXT = "[Image]";
17478
17478
  var CODEX_TOOL_NAMES = {
17479
17479
  bash: "Bash",
17480
17480
  applyPatch: "ApplyPatch",
17481
+ /** `view_image` → claude's Read: it opens a file, and Read is in READ_ONLY_TOOLS. */
17482
+ read: "Read",
17481
17483
  /** `spawn_agent` → claude's Task, so one bubble == one sub-agent. */
17482
17484
  task: "Task",
17483
17485
  /** `update_plan` / live `todo_list` → the checklist MessageBubble already renders. */
@@ -17488,6 +17490,7 @@ var CODEX_TOOL_NAMES = {
17488
17490
  var CODEX_MCP_NAMESPACE_PREFIX = "mcp__";
17489
17491
  var codexMcpToolName = (server, tool2) => `${CODEX_MCP_NAMESPACE_PREFIX}${server}__${tool2}`;
17490
17492
  var CODEX_SPAWN_FN_NAME = "spawn_agent";
17493
+ var CODEX_SUB_AGENT_ACTIVITY_TYPE = "sub_agent_activity";
17491
17494
  var CODEX_PATCH_FN_NAME = "apply_patch";
17492
17495
  var CODEX_EXEC_SCRIPT_FN_NAME = "exec";
17493
17496
  function codexTodoInput(items) {
@@ -17596,15 +17599,37 @@ function parseCodexExecScript(script) {
17596
17599
  }
17597
17600
  var CODEX_AGENT_DONE = /* @__PURE__ */ new Set(["completed", "errored", "interrupted", "not_found", "failed"]);
17598
17601
  function parseCodexSpawnInput(args, extra) {
17599
- const prompt = typeof args.message === "string" ? args.message : "";
17600
- const agentType = typeof args.agent_type === "string" ? args.agent_type : void 0;
17602
+ const message = typeof args.message === "string" ? args.message : "";
17603
+ const encrypted = isCodexEncryptedPayload(message);
17604
+ const prompt = encrypted ? "" : message;
17605
+ const agentType = typeof args.agent_type === "string" ? args.agent_type : typeof args.task_name === "string" ? codexAgentPathName(args.task_name) : void 0;
17601
17606
  return {
17602
17607
  ...agentType ? { subagent_type: agentType } : {},
17603
17608
  description: codexSpawnDescription(extra?.nickname, agentType, prompt),
17604
- prompt,
17609
+ ...encrypted ? { message_encrypted: true } : { prompt },
17605
17610
  ...extra?.agentId ? { agent_id: extra.agentId } : {}
17606
17611
  };
17607
17612
  }
17613
+ var CODEX_FERNET_TOKEN_RE = /^gAAAAA[A-Za-z0-9_-]{32,}={0,2}$/;
17614
+ function isCodexEncryptedPayload(text) {
17615
+ return CODEX_FERNET_TOKEN_RE.test(text.trim());
17616
+ }
17617
+ function codexAgentPathName(agentPath) {
17618
+ const segments = agentPath.split("/").filter(Boolean);
17619
+ return segments[segments.length - 1] || agentPath;
17620
+ }
17621
+ function parseCodexSubAgentActivity(payload) {
17622
+ if (!payload || payload.type !== CODEX_SUB_AGENT_ACTIVITY_TYPE) return null;
17623
+ const { event_id: callId, agent_thread_id: agentThreadId } = payload;
17624
+ if (typeof callId !== "string" || !callId) return null;
17625
+ if (typeof agentThreadId !== "string" || !agentThreadId) return null;
17626
+ return {
17627
+ callId,
17628
+ agentThreadId,
17629
+ ...typeof payload.agent_path === "string" ? { agentPath: payload.agent_path } : {},
17630
+ ...typeof payload.kind === "string" ? { kind: payload.kind } : {}
17631
+ };
17632
+ }
17608
17633
  function codexSpawnDescription(nickname, agentType, prompt) {
17609
17634
  if (nickname) return agentType ? `${nickname} (${agentType})` : nickname;
17610
17635
  const firstLine = prompt.split("\n", 1)[0]?.trim() || "";
@@ -17714,6 +17739,15 @@ function parseCallLines(text, exec2, patch, spawns, mcps) {
17714
17739
  target.nickname = parsed.nickname;
17715
17740
  }
17716
17741
  }
17742
+ } else {
17743
+ const activity = parseCodexSubAgentActivity(p);
17744
+ if (activity) {
17745
+ const target = spawns.find((s) => s.callId === activity.callId && !s.agentId);
17746
+ if (target) {
17747
+ target.agentId = activity.agentThreadId;
17748
+ if (activity.agentPath) target.agentPath = activity.agentPath;
17749
+ }
17750
+ }
17717
17751
  }
17718
17752
  }
17719
17753
  }
@@ -18428,7 +18462,14 @@ var en_default2 = {
18428
18462
  help: "Help",
18429
18463
  updateAvailable: "v{{version}} available",
18430
18464
  copyUpgradeCommand: "Copy cockpit update",
18465
+ updateNow: "Update now",
18466
+ updating: "Updating\u2026",
18467
+ updateComplete: "Update complete",
18468
+ updateFailed: "Update failed: {{reason}}",
18469
+ updateRestartNote: "Cockpit will restart in the background.",
18431
18470
  viewChangelog: "View changelog",
18471
+ serverRestarted: "Cockpit was updated in the background.",
18472
+ reloadNow: "Reload",
18432
18473
  upgradeCommandCopied: "Copied `cockpit update`",
18433
18474
  projectNotes: "Project Notes",
18434
18475
  closeProject: "Close project"
@@ -18456,6 +18497,7 @@ var en_default2 = {
18456
18497
  projectSessions: "Project Sessions",
18457
18498
  browseAllSessions: "Browse all sessions",
18458
18499
  sessionList: "Session List",
18500
+ search: "Search",
18459
18501
  searchSessions: "Search sessions...",
18460
18502
  searchRecentSessions: "Search recent sessions",
18461
18503
  loadSessionsFailed: "Failed to load sessions",
@@ -19198,7 +19240,9 @@ var en_default2 = {
19198
19240
  },
19199
19241
  imagePreview: {
19200
19242
  previewImage: "Preview image",
19201
- deleteImage: "Delete image"
19243
+ deleteImage: "Delete image",
19244
+ copyImage: "Copy image",
19245
+ copiedImage: "Image copied"
19202
19246
  },
19203
19247
  tokenStats: {
19204
19248
  title: "Claude Code Token Stats",
@@ -19631,7 +19675,14 @@ var zh_default = {
19631
19675
  help: "\u5E2E\u52A9",
19632
19676
  updateAvailable: "\u65B0\u7248\u672C v{{version}} \u53EF\u7528",
19633
19677
  copyUpgradeCommand: "\u590D\u5236 cockpit update",
19678
+ updateNow: "\u7ACB\u5373\u66F4\u65B0",
19679
+ updating: "\u6B63\u5728\u66F4\u65B0\u2026",
19680
+ updateComplete: "\u66F4\u65B0\u5B8C\u6210",
19681
+ updateFailed: "\u66F4\u65B0\u5931\u8D25\uFF1A{{reason}}",
19682
+ updateRestartNote: "Cockpit \u5C06\u5728\u540E\u53F0\u91CD\u542F\u3002",
19634
19683
  viewChangelog: "\u67E5\u770B\u53D8\u66F4\u65E5\u5FD7",
19684
+ serverRestarted: "Cockpit \u5DF2\u5728\u540E\u53F0\u66F4\u65B0\u3002",
19685
+ reloadNow: "\u5237\u65B0",
19635
19686
  upgradeCommandCopied: "\u5DF2\u590D\u5236 `cockpit update`",
19636
19687
  projectNotes: "\u9879\u76EE\u7B14\u8BB0",
19637
19688
  closeProject: "\u5173\u95ED\u9879\u76EE"
@@ -19659,6 +19710,7 @@ var zh_default = {
19659
19710
  projectSessions: "\u9879\u76EE\u4F1A\u8BDD",
19660
19711
  browseAllSessions: "\u6D4F\u89C8\u6240\u6709\u4F1A\u8BDD",
19661
19712
  sessionList: "\u4F1A\u8BDD\u5217\u8868",
19713
+ search: "\u641C\u7D22",
19662
19714
  searchSessions: "\u641C\u7D22\u4F1A\u8BDD...",
19663
19715
  searchRecentSessions: "\u641C\u7D22\u6700\u8FD1\u4F1A\u8BDD",
19664
19716
  loadSessionsFailed: "\u52A0\u8F7D\u4F1A\u8BDD\u5931\u8D25",
@@ -20401,7 +20453,9 @@ var zh_default = {
20401
20453
  },
20402
20454
  imagePreview: {
20403
20455
  previewImage: "\u9884\u89C8\u56FE\u7247",
20404
- deleteImage: "\u5220\u9664\u56FE\u7247"
20456
+ deleteImage: "\u5220\u9664\u56FE\u7247",
20457
+ copyImage: "\u590D\u5236\u56FE\u7247",
20458
+ copiedImage: "\u5DF2\u590D\u5236\u56FE\u7247"
20405
20459
  },
20406
20460
  tokenStats: {
20407
20461
  title: "Claude Code Token \u7EDF\u8BA1",
@@ -46,12 +46,12 @@ import {
46
46
  unregisterTerminal,
47
47
  updateBrowserWs,
48
48
  writeStdinToCommand
49
- } from "./chunk-CLPJYIFC.mjs";
49
+ } from "./chunk-AI7T3EXM.mjs";
50
50
  import {
51
51
  createNeo4jDriver,
52
52
  runCypherWithDriver,
53
53
  serializeValue
54
- } from "./chunk-TU3GL2HK.mjs";
54
+ } from "./chunk-ZCMAJV2M.mjs";
55
55
  import "./chunk-7P6ASYW6.mjs";
56
56
  export {
57
57
  INTERRUPTED_EXIT_CODE,