@surething/cockpit 1.0.185 → 1.0.186

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 (305) hide show
  1. package/.next-prod/BUILD_ID +1 -1
  2. package/.next-prod/app-path-routes-manifest.json +18 -18
  3. package/.next-prod/build-manifest.json +3 -3
  4. package/.next-prod/next-minimal-server.js.nft.json +1 -1
  5. package/.next-prod/next-server.js.nft.json +1 -1
  6. package/.next-prod/prerender-manifest.json +3 -3
  7. package/.next-prod/react-loadable-manifest.json +1 -1
  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 +2 -2
  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.nft.json +1 -1
  19. package/.next-prod/server/app/_not-found/page_client-reference-manifest.js +1 -1
  20. package/.next-prod/server/app/_not-found.html +2 -2
  21. package/.next-prod/server/app/_not-found.rsc +2 -2
  22. package/.next-prod/server/app/_not-found.segments/_full.segment.rsc +2 -2
  23. package/.next-prod/server/app/_not-found.segments/_head.segment.rsc +1 -1
  24. package/.next-prod/server/app/_not-found.segments/_index.segment.rsc +2 -2
  25. package/.next-prod/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  26. package/.next-prod/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  27. package/.next-prod/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  28. package/.next-prod/server/app/api/bash/route.js.nft.json +1 -1
  29. package/.next-prod/server/app/api/bash/route_client-reference-manifest.js +1 -1
  30. package/.next-prod/server/app/api/chat/codex/route.js +18 -7
  31. package/.next-prod/server/app/api/chat/codex/route.js.nft.json +1 -1
  32. package/.next-prod/server/app/api/chat/codex/route_client-reference-manifest.js +1 -1
  33. package/.next-prod/server/app/api/chat/kimi/route.js +21 -10
  34. package/.next-prod/server/app/api/chat/kimi/route.js.nft.json +1 -1
  35. package/.next-prod/server/app/api/chat/kimi/route_client-reference-manifest.js +1 -1
  36. package/.next-prod/server/app/api/chat/ollama/route.js +154 -6
  37. package/.next-prod/server/app/api/chat/ollama/route.js.nft.json +1 -1
  38. package/.next-prod/server/app/api/chat/ollama/route_client-reference-manifest.js +1 -1
  39. package/.next-prod/server/app/api/chat/route.js +14 -3
  40. package/.next-prod/server/app/api/chat/route.js.nft.json +1 -1
  41. package/.next-prod/server/app/api/chat/route_client-reference-manifest.js +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/claude-stats/route_client-reference-manifest.js +1 -1
  45. package/.next-prod/server/app/api/commands/route.js +1 -1
  46. package/.next-prod/server/app/api/commands/route.js.nft.json +1 -1
  47. package/.next-prod/server/app/api/commands/route_client-reference-manifest.js +1 -1
  48. package/.next-prod/server/app/api/comments/route.js +1 -1
  49. package/.next-prod/server/app/api/comments/route.js.nft.json +1 -1
  50. package/.next-prod/server/app/api/comments/route_client-reference-manifest.js +1 -1
  51. package/.next-prod/server/app/api/db/columns/route.js.nft.json +1 -1
  52. package/.next-prod/server/app/api/db/columns/route_client-reference-manifest.js +1 -1
  53. package/.next-prod/server/app/api/db/connect/route.js.nft.json +1 -1
  54. package/.next-prod/server/app/api/db/connect/route_client-reference-manifest.js +1 -1
  55. package/.next-prod/server/app/api/db/disconnect/route.js.nft.json +1 -1
  56. package/.next-prod/server/app/api/db/disconnect/route_client-reference-manifest.js +1 -1
  57. package/.next-prod/server/app/api/db/export/route.js.nft.json +1 -1
  58. package/.next-prod/server/app/api/db/export/route_client-reference-manifest.js +1 -1
  59. package/.next-prod/server/app/api/db/query/route.js.nft.json +1 -1
  60. package/.next-prod/server/app/api/db/query/route_client-reference-manifest.js +1 -1
  61. package/.next-prod/server/app/api/db/schemas/route.js.nft.json +1 -1
  62. package/.next-prod/server/app/api/db/schemas/route_client-reference-manifest.js +1 -1
  63. package/.next-prod/server/app/api/extension/version/route.js.nft.json +1 -1
  64. package/.next-prod/server/app/api/extension/version/route_client-reference-manifest.js +1 -1
  65. package/.next-prod/server/app/api/file/route.js.nft.json +1 -1
  66. package/.next-prod/server/app/api/file/route_client-reference-manifest.js +1 -1
  67. package/.next-prod/server/app/api/files/blame/route.js.nft.json +1 -1
  68. package/.next-prod/server/app/api/files/blame/route_client-reference-manifest.js +1 -1
  69. package/.next-prod/server/app/api/files/clipboard/route.js.nft.json +1 -1
  70. package/.next-prod/server/app/api/files/clipboard/route_client-reference-manifest.js +1 -1
  71. package/.next-prod/server/app/api/files/copy/route.js.nft.json +1 -1
  72. package/.next-prod/server/app/api/files/copy/route_client-reference-manifest.js +1 -1
  73. package/.next-prod/server/app/api/files/delete/route.js.nft.json +1 -1
  74. package/.next-prod/server/app/api/files/delete/route_client-reference-manifest.js +1 -1
  75. package/.next-prod/server/app/api/files/expanded/route.js +1 -1
  76. package/.next-prod/server/app/api/files/expanded/route.js.nft.json +1 -1
  77. package/.next-prod/server/app/api/files/expanded/route_client-reference-manifest.js +1 -1
  78. package/.next-prod/server/app/api/files/index/route.js.nft.json +1 -1
  79. package/.next-prod/server/app/api/files/index/route_client-reference-manifest.js +1 -1
  80. package/.next-prod/server/app/api/files/init/route.js +1 -1
  81. package/.next-prod/server/app/api/files/init/route.js.nft.json +1 -1
  82. package/.next-prod/server/app/api/files/init/route_client-reference-manifest.js +1 -1
  83. package/.next-prod/server/app/api/files/paste/route.js.nft.json +1 -1
  84. package/.next-prod/server/app/api/files/paste/route_client-reference-manifest.js +1 -1
  85. package/.next-prod/server/app/api/files/read/route.js.nft.json +1 -1
  86. package/.next-prod/server/app/api/files/read/route_client-reference-manifest.js +1 -1
  87. package/.next-prod/server/app/api/files/readdir/route.js.nft.json +1 -1
  88. package/.next-prod/server/app/api/files/readdir/route_client-reference-manifest.js +1 -1
  89. package/.next-prod/server/app/api/files/recent/route.js +1 -1
  90. package/.next-prod/server/app/api/files/recent/route.js.nft.json +1 -1
  91. package/.next-prod/server/app/api/files/recent/route_client-reference-manifest.js +1 -1
  92. package/.next-prod/server/app/api/files/save/route.js.nft.json +1 -1
  93. package/.next-prod/server/app/api/files/save/route_client-reference-manifest.js +1 -1
  94. package/.next-prod/server/app/api/files/search/route.js.nft.json +1 -1
  95. package/.next-prod/server/app/api/files/search/route_client-reference-manifest.js +1 -1
  96. package/.next-prod/server/app/api/git/branch-diff/route.js.nft.json +1 -1
  97. package/.next-prod/server/app/api/git/branch-diff/route_client-reference-manifest.js +1 -1
  98. package/.next-prod/server/app/api/git/branches/route.js.nft.json +1 -1
  99. package/.next-prod/server/app/api/git/branches/route_client-reference-manifest.js +1 -1
  100. package/.next-prod/server/app/api/git/commit-diff/route.js.nft.json +1 -1
  101. package/.next-prod/server/app/api/git/commit-diff/route_client-reference-manifest.js +1 -1
  102. package/.next-prod/server/app/api/git/commits/route.js.nft.json +1 -1
  103. package/.next-prod/server/app/api/git/commits/route_client-reference-manifest.js +1 -1
  104. package/.next-prod/server/app/api/git/diff/route.js.nft.json +1 -1
  105. package/.next-prod/server/app/api/git/diff/route_client-reference-manifest.js +1 -1
  106. package/.next-prod/server/app/api/git/discard/route.js.nft.json +1 -1
  107. package/.next-prod/server/app/api/git/discard/route_client-reference-manifest.js +1 -1
  108. package/.next-prod/server/app/api/git/stage/route.js.nft.json +1 -1
  109. package/.next-prod/server/app/api/git/stage/route_client-reference-manifest.js +1 -1
  110. package/.next-prod/server/app/api/git/status/route.js.nft.json +1 -1
  111. package/.next-prod/server/app/api/git/status/route_client-reference-manifest.js +1 -1
  112. package/.next-prod/server/app/api/git/unstage/route.js.nft.json +1 -1
  113. package/.next-prod/server/app/api/git/unstage/route_client-reference-manifest.js +1 -1
  114. package/.next-prod/server/app/api/git/worktree/route.js.nft.json +1 -1
  115. package/.next-prod/server/app/api/git/worktree/route_client-reference-manifest.js +1 -1
  116. package/.next-prod/server/app/api/global-state/route.js +1 -1
  117. package/.next-prod/server/app/api/global-state/route.js.nft.json +1 -1
  118. package/.next-prod/server/app/api/global-state/route_client-reference-manifest.js +1 -1
  119. package/.next-prod/server/app/api/jupyter/load/route.js.nft.json +1 -1
  120. package/.next-prod/server/app/api/jupyter/load/route_client-reference-manifest.js +1 -1
  121. package/.next-prod/server/app/api/jupyter/save/route.js.nft.json +1 -1
  122. package/.next-prod/server/app/api/jupyter/save/route_client-reference-manifest.js +1 -1
  123. package/.next-prod/server/app/api/jupyter/shutdown/route.js +1 -1
  124. package/.next-prod/server/app/api/jupyter/shutdown/route.js.nft.json +1 -1
  125. package/.next-prod/server/app/api/jupyter/shutdown/route_client-reference-manifest.js +1 -1
  126. package/.next-prod/server/app/api/lsp/definition/route.js.nft.json +1 -1
  127. package/.next-prod/server/app/api/lsp/definition/route_client-reference-manifest.js +1 -1
  128. package/.next-prod/server/app/api/lsp/hover/route.js.nft.json +1 -1
  129. package/.next-prod/server/app/api/lsp/hover/route_client-reference-manifest.js +1 -1
  130. package/.next-prod/server/app/api/lsp/references/route.js.nft.json +1 -1
  131. package/.next-prod/server/app/api/lsp/references/route_client-reference-manifest.js +1 -1
  132. package/.next-prod/server/app/api/lsp/status/route.js.nft.json +1 -1
  133. package/.next-prod/server/app/api/lsp/status/route_client-reference-manifest.js +1 -1
  134. package/.next-prod/server/app/api/lsp/warmup/route.js.nft.json +1 -1
  135. package/.next-prod/server/app/api/lsp/warmup/route_client-reference-manifest.js +1 -1
  136. package/.next-prod/server/app/api/mysql/columns/route.js.nft.json +1 -1
  137. package/.next-prod/server/app/api/mysql/columns/route_client-reference-manifest.js +1 -1
  138. package/.next-prod/server/app/api/mysql/connect/route.js.nft.json +1 -1
  139. package/.next-prod/server/app/api/mysql/connect/route_client-reference-manifest.js +1 -1
  140. package/.next-prod/server/app/api/mysql/disconnect/route.js.nft.json +1 -1
  141. package/.next-prod/server/app/api/mysql/disconnect/route_client-reference-manifest.js +1 -1
  142. package/.next-prod/server/app/api/mysql/export/route.js.nft.json +1 -1
  143. package/.next-prod/server/app/api/mysql/export/route_client-reference-manifest.js +1 -1
  144. package/.next-prod/server/app/api/mysql/query/route.js.nft.json +1 -1
  145. package/.next-prod/server/app/api/mysql/query/route_client-reference-manifest.js +1 -1
  146. package/.next-prod/server/app/api/mysql/schemas/route.js.nft.json +1 -1
  147. package/.next-prod/server/app/api/mysql/schemas/route_client-reference-manifest.js +1 -1
  148. package/.next-prod/server/app/api/neo4j/connect/route.js.nft.json +1 -1
  149. package/.next-prod/server/app/api/neo4j/connect/route_client-reference-manifest.js +1 -1
  150. package/.next-prod/server/app/api/neo4j/disconnect/route.js.nft.json +1 -1
  151. package/.next-prod/server/app/api/neo4j/disconnect/route_client-reference-manifest.js +1 -1
  152. package/.next-prod/server/app/api/neo4j/query/route.js.nft.json +1 -1
  153. package/.next-prod/server/app/api/neo4j/query/route_client-reference-manifest.js +1 -1
  154. package/.next-prod/server/app/api/neo4j/schema/route.js.nft.json +1 -1
  155. package/.next-prod/server/app/api/neo4j/schema/route_client-reference-manifest.js +1 -1
  156. package/.next-prod/server/app/api/note/route.js +1 -1
  157. package/.next-prod/server/app/api/note/route.js.nft.json +1 -1
  158. package/.next-prod/server/app/api/note/route_client-reference-manifest.js +1 -1
  159. package/.next-prod/server/app/api/ollama/models/route.js +1 -1
  160. package/.next-prod/server/app/api/ollama/models/route.js.nft.json +1 -1
  161. package/.next-prod/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
  162. package/.next-prod/server/app/api/ollama/start/route.js.nft.json +1 -1
  163. package/.next-prod/server/app/api/ollama/start/route_client-reference-manifest.js +1 -1
  164. package/.next-prod/server/app/api/open-cursor/route.js.nft.json +1 -1
  165. package/.next-prod/server/app/api/open-cursor/route_client-reference-manifest.js +1 -1
  166. package/.next-prod/server/app/api/open-vscode/route.js.nft.json +1 -1
  167. package/.next-prod/server/app/api/open-vscode/route_client-reference-manifest.js +1 -1
  168. package/.next-prod/server/app/api/pick-folder/route.js.nft.json +1 -1
  169. package/.next-prod/server/app/api/pick-folder/route_client-reference-manifest.js +1 -1
  170. package/.next-prod/server/app/api/pinned-sessions/route.js +1 -1
  171. package/.next-prod/server/app/api/pinned-sessions/route.js.nft.json +1 -1
  172. package/.next-prod/server/app/api/pinned-sessions/route_client-reference-manifest.js +1 -1
  173. package/.next-prod/server/app/api/project-settings/route.js +1 -1
  174. package/.next-prod/server/app/api/project-settings/route.js.nft.json +1 -1
  175. package/.next-prod/server/app/api/project-settings/route_client-reference-manifest.js +1 -1
  176. package/.next-prod/server/app/api/project-state/route.js +1 -1
  177. package/.next-prod/server/app/api/project-state/route.js.nft.json +1 -1
  178. package/.next-prod/server/app/api/project-state/route_client-reference-manifest.js +1 -1
  179. package/.next-prod/server/app/api/projects/route.js +1 -1
  180. package/.next-prod/server/app/api/projects/route.js.nft.json +1 -1
  181. package/.next-prod/server/app/api/projects/route_client-reference-manifest.js +1 -1
  182. package/.next-prod/server/app/api/redis/command/route.js.nft.json +1 -1
  183. package/.next-prod/server/app/api/redis/command/route_client-reference-manifest.js +1 -1
  184. package/.next-prod/server/app/api/redis/connect/route.js.nft.json +1 -1
  185. package/.next-prod/server/app/api/redis/connect/route_client-reference-manifest.js +1 -1
  186. package/.next-prod/server/app/api/redis/delete/route.js.nft.json +1 -1
  187. package/.next-prod/server/app/api/redis/delete/route_client-reference-manifest.js +1 -1
  188. package/.next-prod/server/app/api/redis/disconnect/route.js.nft.json +1 -1
  189. package/.next-prod/server/app/api/redis/disconnect/route_client-reference-manifest.js +1 -1
  190. package/.next-prod/server/app/api/redis/get/route.js.nft.json +1 -1
  191. package/.next-prod/server/app/api/redis/get/route_client-reference-manifest.js +1 -1
  192. package/.next-prod/server/app/api/redis/keys/route.js.nft.json +1 -1
  193. package/.next-prod/server/app/api/redis/keys/route_client-reference-manifest.js +1 -1
  194. package/.next-prod/server/app/api/redis/set/route.js.nft.json +1 -1
  195. package/.next-prod/server/app/api/redis/set/route_client-reference-manifest.js +1 -1
  196. package/.next-prod/server/app/api/review/[id]/comments/route.js.nft.json +1 -1
  197. package/.next-prod/server/app/api/review/[id]/comments/route_client-reference-manifest.js +1 -1
  198. package/.next-prod/server/app/api/review/[id]/replies/route.js.nft.json +1 -1
  199. package/.next-prod/server/app/api/review/[id]/replies/route_client-reference-manifest.js +1 -1
  200. package/.next-prod/server/app/api/review/[id]/route.js +1 -1
  201. package/.next-prod/server/app/api/review/[id]/route.js.nft.json +1 -1
  202. package/.next-prod/server/app/api/review/[id]/route_client-reference-manifest.js +1 -1
  203. package/.next-prod/server/app/api/review/identify/route.js +1 -1
  204. package/.next-prod/server/app/api/review/identify/route.js.nft.json +1 -1
  205. package/.next-prod/server/app/api/review/identify/route_client-reference-manifest.js +1 -1
  206. package/.next-prod/server/app/api/review/order/route.js +1 -1
  207. package/.next-prod/server/app/api/review/order/route.js.nft.json +1 -1
  208. package/.next-prod/server/app/api/review/order/route_client-reference-manifest.js +1 -1
  209. package/.next-prod/server/app/api/review/route.js.nft.json +1 -1
  210. package/.next-prod/server/app/api/review/route_client-reference-manifest.js +1 -1
  211. package/.next-prod/server/app/api/review/share-info/route.js.nft.json +1 -1
  212. package/.next-prod/server/app/api/review/share-info/route_client-reference-manifest.js +1 -1
  213. package/.next-prod/server/app/api/review/users/route.js +1 -1
  214. package/.next-prod/server/app/api/review/users/route.js.nft.json +1 -1
  215. package/.next-prod/server/app/api/review/users/route_client-reference-manifest.js +1 -1
  216. package/.next-prod/server/app/api/scheduled-tasks/route.js +1 -1
  217. package/.next-prod/server/app/api/scheduled-tasks/route.js.nft.json +1 -1
  218. package/.next-prod/server/app/api/scheduled-tasks/route_client-reference-manifest.js +1 -1
  219. package/.next-prod/server/app/api/services/config/route.js +1 -1
  220. package/.next-prod/server/app/api/services/config/route.js.nft.json +1 -1
  221. package/.next-prod/server/app/api/services/config/route_client-reference-manifest.js +1 -1
  222. package/.next-prod/server/app/api/services/scripts/route.js.nft.json +1 -1
  223. package/.next-prod/server/app/api/services/scripts/route_client-reference-manifest.js +1 -1
  224. package/.next-prod/server/app/api/session/[sessionId]/fork/route.js +1 -1
  225. package/.next-prod/server/app/api/session/[sessionId]/fork/route.js.nft.json +1 -1
  226. package/.next-prod/server/app/api/session/[sessionId]/fork/route_client-reference-manifest.js +1 -1
  227. package/.next-prod/server/app/api/session/[sessionId]/history/route.js +1 -1
  228. package/.next-prod/server/app/api/session/[sessionId]/history/route.js.nft.json +1 -1
  229. package/.next-prod/server/app/api/session/[sessionId]/history/route_client-reference-manifest.js +1 -1
  230. package/.next-prod/server/app/api/session-by-path/route.js +1 -1
  231. package/.next-prod/server/app/api/session-by-path/route.js.nft.json +1 -1
  232. package/.next-prod/server/app/api/session-by-path/route_client-reference-manifest.js +1 -1
  233. package/.next-prod/server/app/api/sessions/projects/[encodedPath]/route.js +1 -1
  234. package/.next-prod/server/app/api/sessions/projects/[encodedPath]/route.js.nft.json +1 -1
  235. package/.next-prod/server/app/api/sessions/projects/[encodedPath]/route_client-reference-manifest.js +1 -1
  236. package/.next-prod/server/app/api/sessions/projects/route.js +1 -1
  237. package/.next-prod/server/app/api/sessions/projects/route.js.nft.json +1 -1
  238. package/.next-prod/server/app/api/sessions/projects/route_client-reference-manifest.js +1 -1
  239. package/.next-prod/server/app/api/sessions/route.js +1 -1
  240. package/.next-prod/server/app/api/sessions/route.js.nft.json +1 -1
  241. package/.next-prod/server/app/api/sessions/route_client-reference-manifest.js +1 -1
  242. package/.next-prod/server/app/api/settings/route.js +1 -1
  243. package/.next-prod/server/app/api/settings/route.js.nft.json +1 -1
  244. package/.next-prod/server/app/api/settings/route_client-reference-manifest.js +1 -1
  245. package/.next-prod/server/app/api/terminal/aliases/route.js +1 -1
  246. package/.next-prod/server/app/api/terminal/aliases/route.js.nft.json +1 -1
  247. package/.next-prod/server/app/api/terminal/aliases/route_client-reference-manifest.js +1 -1
  248. package/.next-prod/server/app/api/terminal/autocomplete/route.js.nft.json +1 -1
  249. package/.next-prod/server/app/api/terminal/autocomplete/route_client-reference-manifest.js +1 -1
  250. package/.next-prod/server/app/api/terminal/bubble-order/route.js +1 -1
  251. package/.next-prod/server/app/api/terminal/bubble-order/route.js.nft.json +1 -1
  252. package/.next-prod/server/app/api/terminal/bubble-order/route_client-reference-manifest.js +1 -1
  253. package/.next-prod/server/app/api/terminal/env/route.js +1 -1
  254. package/.next-prod/server/app/api/terminal/env/route.js.nft.json +1 -1
  255. package/.next-prod/server/app/api/terminal/env/route_client-reference-manifest.js +1 -1
  256. package/.next-prod/server/app/api/terminal/history/route.js +1 -1
  257. package/.next-prod/server/app/api/terminal/history/route.js.nft.json +1 -1
  258. package/.next-prod/server/app/api/terminal/history/route_client-reference-manifest.js +1 -1
  259. package/.next-prod/server/app/api/version/route.js.nft.json +1 -1
  260. package/.next-prod/server/app/api/version/route_client-reference-manifest.js +1 -1
  261. package/.next-prod/server/app/favicon.ico/route.js.nft.json +1 -1
  262. package/.next-prod/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  263. package/.next-prod/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  264. package/.next-prod/server/app/page.js.nft.json +1 -1
  265. package/.next-prod/server/app/page_client-reference-manifest.js +1 -1
  266. package/.next-prod/server/app/project/page.js +10 -10
  267. package/.next-prod/server/app/project/page.js.nft.json +1 -1
  268. package/.next-prod/server/app/project/page_client-reference-manifest.js +1 -1
  269. package/.next-prod/server/app/review/[id]/page.js.nft.json +1 -1
  270. package/.next-prod/server/app/review/[id]/page_client-reference-manifest.js +1 -1
  271. package/.next-prod/server/app-paths-manifest.json +18 -18
  272. package/.next-prod/server/chunks/3269.js +1 -0
  273. package/.next-prod/server/chunks/4098.js +1 -1
  274. package/.next-prod/server/chunks/4490.js +1 -1
  275. package/.next-prod/server/chunks/4741.js +4 -4
  276. package/.next-prod/server/chunks/5394.js +1 -0
  277. package/.next-prod/server/chunks/6062.js +1 -1
  278. package/.next-prod/server/chunks/700.js +1 -0
  279. package/.next-prod/server/functions-config-manifest.json +0 -1
  280. package/.next-prod/server/middleware-build-manifest.js +1 -1
  281. package/.next-prod/server/middleware-react-loadable-manifest.js +1 -1
  282. package/.next-prod/server/pages/404.html +2 -2
  283. package/.next-prod/server/pages/500.html +2 -2
  284. package/.next-prod/server/server-reference-manifest.json +1 -1
  285. package/.next-prod/static/chunks/5493-482fc2bbb049e7a4.js +1 -0
  286. package/.next-prod/static/chunks/{700.65a02f6a597083dc.js → 700.0aaec5a3a570d182.js} +1 -1
  287. package/.next-prod/static/chunks/app/project/page-62d5a8ed458279b8.js +25 -0
  288. package/.next-prod/static/chunks/{webpack-67d02a2a41508d41.js → webpack-0f527ee7ab644d02.js} +1 -1
  289. package/.next-prod/static/css/1573b510894a4234.css +3 -0
  290. package/.next-prod/trace +12 -12
  291. package/.next-prod/trace-build +1 -1
  292. package/bin/postinstall.mjs +20 -0
  293. package/dist/{JupyterKernelManager-475VNVA5.mjs → JupyterKernelManager-VBKKSRVJ.mjs} +23 -2
  294. package/dist/chunk-VV5VMA4B.mjs +410 -0
  295. package/dist/scheduledTasks.mjs +1 -1
  296. package/dist/wsServer.mjs +3 -3
  297. package/kernels/jupyter_bridge.py +162 -0
  298. package/package.json +5 -2
  299. package/server.mjs +5 -1
  300. package/.next-prod/static/chunks/5493-9f80ad2c7c9cf840.js +0 -1
  301. package/.next-prod/static/chunks/app/project/page-b73536c67304e489.js +0 -25
  302. package/.next-prod/static/css/786ec7ade22e6269.css +0 -3
  303. package/dist/chunk-SWMKAZSL.mjs +0 -250
  304. /package/.next-prod/static/{ZA65Kd3f2tNa-NfgtOil4 → 0mBqfZkcLM2Y1ikI9uxKG}/_buildManifest.js +0 -0
  305. /package/.next-prod/static/{ZA65Kd3f2tNa-NfgtOil4 → 0mBqfZkcLM2Y1ikI9uxKG}/_ssgManifest.js +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@surething/cockpit",
3
- "version": "1.0.185",
3
+ "version": "1.0.186",
4
4
  "description": "The Cockpit That Drives AI",
5
5
  "author": "Robert",
6
6
  "license": "MIT",
@@ -32,6 +32,7 @@
32
32
  "server.mjs",
33
33
  "dist",
34
34
  ".next-prod",
35
+ "kernels",
35
36
  "next.config.mjs",
36
37
  "LICENSE",
37
38
  "README.md"
@@ -49,7 +50,8 @@
49
50
  "postinstall": "node bin/postinstall.mjs"
50
51
  },
51
52
  "dependencies": {
52
- "@anthropic-ai/claude-agent-sdk": "^0.2.34",
53
+ "@ai-sdk/openai": "^3.0.52",
54
+ "@anthropic-ai/claude-agent-sdk": "^0.2.92",
53
55
  "@tanstack/react-virtual": "^3.13.18",
54
56
  "@tiptap/extension-link": "^3.19.0",
55
57
  "@tiptap/extension-placeholder": "^3.19.0",
@@ -68,6 +70,7 @@
68
70
  "@xterm/addon-fit": "^0.11.0",
69
71
  "@xterm/addon-search": "^0.16.0",
70
72
  "@xterm/xterm": "^6.0.0",
73
+ "ai": "^6.0.154",
71
74
  "ansi_up": "^6.0.6",
72
75
  "i18next": "^25.10.9",
73
76
  "ioredis": "^5.10.0",
package/server.mjs CHANGED
@@ -2,9 +2,13 @@ import { createServer } from 'http';
2
2
  import { exec } from 'child_process';
3
3
  import { networkInterfaces, homedir } from 'os';
4
4
  import { writeFileSync, mkdirSync } from 'fs';
5
- import { join } from 'path';
5
+ import { join, dirname } from 'path';
6
+ import { fileURLToPath } from 'url';
6
7
  import next from 'next';
7
8
 
9
+ const __dirname = dirname(fileURLToPath(import.meta.url));
10
+ process.env.COCKPIT_ROOT = __dirname;
11
+
8
12
  const dev = process.env.COCKPIT_ENV === 'dev';
9
13
  const port = parseInt(process.env.PORT || (dev ? '3456' : '3457'), 10);
10
14
 
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5493],{10611:(e,t,s)=>{s.d(t,{G:()=>u,f:()=>h});var r=s(12115);function n(){if("u"<typeof document)return null;let e=document.querySelector('meta[name="cockpit-bridge"]');if(!e)return null;let t=e.dataset.id,s=e.dataset.version;return t?{id:t,version:s||"unknown"}:null}let a=null,o=new Set;function l(){o.forEach(e=>e())}function i(e){o.add(e);let t=n();return t&&!a&&(a=t,Promise.resolve().then(l)),()=>{o.delete(e)}}function d(){return a}function c(){return null}if("u">typeof document&&(a=n()),"u">typeof MutationObserver&&"u">typeof document){let e=new MutationObserver(()=>{let e=n();e&&(!a||e.id!==a.id||e.version!==a.version)&&(a=e,l())}),t=document.head||document.documentElement;t&&e.observe(t,{childList:!0})}function u(){return(0,r.useSyncExternalStore)(i,d,c)}function h(){return a??n()}},18658:(e,t,s)=>{s.d(t,{n:()=>o});var r=s(12115);let n="SCHEDULED_TASKS_CHANGED";function a(){try{window.parent.postMessage({type:n},"*")}catch{}document.querySelectorAll("iframe").forEach(e=>{try{e.contentWindow?.postMessage({type:n},"*")}catch{}})}function o(){let[e,t]=(0,r.useState)([]),[s,o]=(0,r.useState)(0),l=(0,r.useCallback)(()=>{fetch("/api/scheduled-tasks").then(e=>e.json()).then(e=>{t(e.tasks||[]),o(e.unreadCount||0)}).catch(()=>{})},[]);(0,r.useEffect)(()=>{l()},[l]),(0,r.useEffect)(()=>{let e=e=>{e.data?.type===n&&l()};return window.addEventListener("message",e),()=>window.removeEventListener("message",e)},[l]);let i=(0,r.useCallback)(async e=>{try{let t=await fetch("/api/scheduled-tasks",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}),s=await t.json();if(s.task)return l(),a(),s.task;return null}catch{return null}},[l]),d=(0,r.useCallback)(async e=>{await fetch("/api/scheduled-tasks",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:e,action:"pause"})}).catch(()=>{}),l(),a()},[l]),c=(0,r.useCallback)(async e=>{await fetch("/api/scheduled-tasks",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:e,action:"resume"})}).catch(()=>{}),l(),a()},[l]),u=(0,r.useCallback)(async e=>{await fetch("/api/scheduled-tasks",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:e})}).catch(()=>{}),l(),a()},[l]),h=(0,r.useCallback)(async(e,t)=>{await fetch("/api/scheduled-tasks",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:e,action:"update",fields:t})}).catch(()=>{}),l(),a()},[l]),m=(0,r.useCallback)(async e=>{await fetch("/api/scheduled-tasks",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:e,action:"trigger"})}).catch(()=>{}),l(),a()},[l]),x=(0,r.useCallback)(async e=>{await fetch("/api/scheduled-tasks",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:e,action:"markRead"})}).catch(()=>{}),l(),a()},[l]),f=(0,r.useCallback)(async()=>{await fetch("/api/scheduled-tasks",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:"_",action:"markAllRead"})}).catch(()=>{}),l(),a()},[l]),p=(0,r.useCallback)(async e=>{await fetch("/api/scheduled-tasks",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:"_",action:"reorder",fields:{orderedIds:e}})}).catch(()=>{}),l(),a()},[l]);return{tasks:e,unreadCount:s,reload:l,createTask:i,pauseTask:d,resumeTask:c,triggerTask:m,deleteTask:u,updateTask:h,markRead:x,markAllRead:f,reorderTasks:p}}},22552:(e,t,s)=>{s.d(t,{h:()=>a});var r=s(12115);let n=new Map;function a({url:e,onMessage:t,enabled:s=!0}){let a=(0,r.useRef)(t);(0,r.useEffect)(()=>{a.current=t}),(0,r.useEffect)(()=>{if(!s)return;let t=e=>a.current(e),r=function(e){let t=n.get(e);if(t)return t;let s={ws:null,listeners:new Set,retryCount:0,retryTimer:null,connect(){let t="https:"===window.location.protocol?"wss:":"ws:",r=new WebSocket(`${t}//${window.location.host}${e}`);r.onopen=()=>{s.retryCount=0},r.onmessage=e=>{try{let t=JSON.parse(e.data);if("ping"===t.type)return;s.listeners.forEach(e=>e(t))}catch{}},r.onclose=()=>{if(0===s.listeners.size)return;let e=Math.min(1e3*Math.pow(1.5,s.retryCount),1e4);s.retryCount++,s.retryTimer=setTimeout(()=>s.connect(),e)},r.onerror=()=>{},s.ws=r},destroy(){s.retryTimer&&clearTimeout(s.retryTimer),s.ws&&s.ws.close(),s.ws=null,n.delete(e)}};return n.set(e,s),s.connect(),s}(e);return r.listeners.add(t),()=>{r.listeners.delete(t),0===r.listeners.size&&r.destroy()}},[e,s])}},28147:(e,t,s)=>{s.d(t,{E:()=>d});var r=s(95155),n=s(12115),a=s(79114),o=s(87918),l=s(72588);let i={once:[{labelKey:"scheduledTasks.5minLater",value:5},{labelKey:"scheduledTasks.15minLater",value:15},{labelKey:"scheduledTasks.30minLater",value:30},{labelKey:"scheduledTasks.1hourLater",value:60}],interval:[{labelKey:"scheduledTasks.every15min",value:15},{labelKey:"scheduledTasks.every30min",value:30},{labelKey:"scheduledTasks.every1hour",value:60},{labelKey:"scheduledTasks.every2hours",value:120}],cron:[{labelKey:"scheduledTasks.daily9am",value:"0 9 * * *"},{labelKey:"scheduledTasks.daily6pm",value:"0 18 * * *"},{labelKey:"scheduledTasks.weeklyMon9am",value:"0 9 * * 1"},{labelKey:"scheduledTasks.monthly1st9am",value:"0 9 1 * *"}]};function d({onClose:e,onCreate:t,editTask:s,onUpdate:d}){let{t:c}=(0,a.Bd)(),u=!!s,[h,m]=(0,n.useState)(s?.type||"once"),[x,f]=(0,n.useState)(s?.message||""),[p,g]=(0,n.useState)(s?String(s.delayMinutes||s.intervalMinutes||""):""),[b,v]=(0,n.useState)(s?.cron||""),[y,j]=(0,n.useState)(s?.activeFrom||"09:00"),[k,N]=(0,n.useState)(s?.activeTo||"18:00"),[w,C]=(0,n.useState)(!!(s?.activeFrom&&s?.activeTo)),[T,S]=(0,n.useState)(null),E=(0,n.useRef)(null),P=(0,n.useRef)(null);(0,n.useEffect)(()=>{P.current?.focus()},[]),(0,n.useEffect)(()=>{let t=t=>{E.current&&!E.current.contains(t.target)&&e()};return document.addEventListener("mousedown",t),()=>document.removeEventListener("mousedown",t)},[e]);let L=(0,n.useCallback)(()=>{if(!x.trim())return;let r=null;if("once"===h){let e=T||parseInt(p,10);if(!e||e<=0)return;r={message:x.trim(),type:"once",delayMinutes:e}}else if("interval"===h){let e=T||parseInt(p,10);if(!e||e<=0)return;r={message:x.trim(),type:"interval",intervalMinutes:e,...w?{activeFrom:y,activeTo:k}:{}}}else if("cron"===h){let e=T||b.trim();if(!e)return;r={message:x.trim(),type:"cron",cron:e}}r&&(u&&s&&d?d(s.id,r):t(r),e())},[x,h,T,p,b,w,y,k,t,e,u,s,d]);return(0,r.jsxs)("div",{ref:E,className:`w-80 bg-popover border border-border rounded-lg shadow-lg z-50 ${u?"":"absolute bottom-full left-0 mb-2"}`,onKeyDown:t=>{"Escape"===t.key?e():"Enter"===t.key&&(t.metaKey||t.ctrlKey)&&L()},children:[(0,r.jsx)("div",{className:"px-3 py-2 border-b border-border bg-muted/50 rounded-t-lg",children:(0,r.jsx)("span",{className:"text-sm font-medium",children:u?c("scheduledTasks.editTask"):c("scheduledTasks.createTask")})}),(0,r.jsxs)("div",{className:"p-3 space-y-3",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("label",{className:"text-xs text-muted-foreground mb-1 block",children:c("scheduledTasks.sendMessage")}),(0,r.jsx)("textarea",{ref:P,value:x,onChange:e=>f(e.target.value),placeholder:c("scheduledTasks.messagePlaceholder"),rows:2,className:"w-full px-2 py-1.5 text-sm border border-border rounded bg-card text-foreground placeholder-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring resize-none"})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("label",{className:"text-xs text-muted-foreground mb-1 block",children:c("scheduledTasks.type")}),(0,r.jsx)("div",{className:"flex gap-1",children:["once","interval","cron"].map(e=>(0,r.jsx)("button",{onClick:()=>{m(e),S(null),g(""),v("")},className:`flex-1 px-2 py-1 text-xs rounded transition-colors ${h===e?"bg-brand text-white":"bg-muted text-muted-foreground hover:text-foreground"}`,children:"once"===e?c("scheduledTasks.once"):"interval"===e?c("scheduledTasks.interval"):"Cron"},e))})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("label",{className:"text-xs text-muted-foreground mb-1 block",children:c("scheduledTasks.quickSelect")}),(0,r.jsx)("div",{className:"grid grid-cols-2 gap-1",children:i[h].map(e=>(0,r.jsx)("button",{onClick:()=>{S(e.value),"cron"===h?v(String(e.value)):g(String(e.value))},className:`px-2 py-1 text-xs rounded border transition-colors ${T===e.value?"border-brand bg-brand/10 text-brand":"border-border text-muted-foreground hover:text-foreground hover:border-foreground/30"}`,children:c(e.labelKey)},e.labelKey))})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("label",{className:"text-xs text-muted-foreground mb-1 block",children:"cron"===h?c("scheduledTasks.customCron"):c("scheduledTasks.customMinutes")}),"cron"===h?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("input",{type:"text",value:b,onChange:e=>{v(e.target.value),S(null)},placeholder:c("scheduledTasks.cronPlaceholder"),className:"w-full px-2 py-1.5 text-sm border border-border rounded bg-card text-foreground placeholder-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring font-mono"}),b.trim()&&(0,r.jsx)("div",{className:"mt-1 text-xs text-muted-foreground",children:function(e){let t=o.A.t,s=e.trim().split(/\s+/);if(5!==s.length)return null;let[r,n,a,l,i]=s,d={0:t("cron.dowSun"),1:t("cron.dowMon"),2:t("cron.dowTue"),3:t("cron.dowWed"),4:t("cron.dowThu"),5:t("cron.dowFri"),6:t("cron.dowSat")},c={1:`1${t("cron.monthPrefix")}`,2:`2${t("cron.monthPrefix")}`,3:`3${t("cron.monthPrefix")}`,4:`4${t("cron.monthPrefix")}`,5:`5${t("cron.monthPrefix")}`,6:`6${t("cron.monthPrefix")}`,7:`7${t("cron.monthPrefix")}`,8:`8${t("cron.monthPrefix")}`,9:`9${t("cron.monthPrefix")}`,10:`10${t("cron.monthPrefix")}`,11:`11${t("cron.monthPrefix")}`,12:`12${t("cron.monthPrefix")}`};try{let e="";if(r.includes("/")||n.includes("/")){if("*"===n&&r.includes("/"))return t("cron.everyNMinutes",{n:r.split("/")[1]});if("0"===r&&n.includes("/"))return t("cron.everyNHours",{n:n.split("/")[1]});return null}let s=parseInt(n,10),o=parseInt(r,10);if(isNaN(s)&&"*"!==n||isNaN(o)&&"*"!==r)return null;e="*"===n&&"*"===r?t("cron.everyMinute"):"*"===n?t("cron.everyHourAtMin",{m:o}):"*"===r?t("cron.hourlyEveryMin",{h:s}):`${String(s).padStart(2,"0")}:${String(o).padStart(2,"0")}`;let u=[];if("*"!==l){let e=l.split(",").map(e=>c[e]||`${e}${t("cron.monthPrefix")}`);u.push(e.join(", "))}if("*"!==a)if(a.includes("-")){let[e,s]=a.split("-");u.push(t("cron.dayRange",{a:e,b:s}))}else a.includes(",")?u.push(a.split(",").map(e=>`${e}${t("cron.dayOfMonth")}`).join(", ")):u.push(`${a}${t("cron.dayOfMonth")}`);if("*"!==i)if("1-5"===i)u.push(t("cron.weekdays"));else if("0,6"===i||"6,0"===i)u.push(t("cron.weekends"));else{let e=i.split(",").map(e=>{if(e.includes("-")){let[s,r]=e.split("-");return t("cron.weekdayRange",{a:d[s]||s,b:d[r]||r})}return`${t("cron.weekdayPrefix")}${d[e]||e}`});u.push(e.join(", "))}if(0===u.length&&"*"===a&&"*"===l&&"*"===i)return t("cron.daily",{time:e});return`${u.join(" ")} ${e}`}catch{return null}}(b.trim())||(0,r.jsx)("span",{className:"text-destructive",children:c("scheduledTasks.cronFormat")})})]}):(0,r.jsx)("input",{type:"number",value:p,onChange:e=>{g(e.target.value),S(null)},placeholder:c("scheduledTasks.minutesPlaceholder"),min:1,className:"w-full px-2 py-1.5 text-sm border border-border rounded bg-card text-foreground placeholder-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring"})]}),"interval"===h&&(0,r.jsxs)("div",{children:[(0,r.jsxs)("label",{className:"flex items-center gap-2 text-xs text-muted-foreground mb-1 cursor-pointer",children:[(0,r.jsx)("input",{type:"checkbox",checked:w,onChange:e=>C(e.target.checked),className:"rounded border-border"}),c("scheduledTasks.limitTimeRange")]}),w&&(0,r.jsxs)("div",{className:"flex items-center gap-2 mt-1",children:[(0,r.jsx)("input",{type:"time",value:y,onChange:e=>j(e.target.value),className:"flex-1 px-2 py-1 text-sm border border-border rounded bg-card text-foreground focus:outline-none focus:ring-1 focus:ring-ring"}),(0,r.jsx)("span",{className:"text-xs text-muted-foreground",children:c("scheduledTasks.to")}),(0,r.jsx)("input",{type:"time",value:k,onChange:e=>N(e.target.value),className:"flex-1 px-2 py-1 text-sm border border-border rounded bg-card text-foreground focus:outline-none focus:ring-1 focus:ring-ring"})]})]}),(0,r.jsx)("button",{onClick:L,disabled:!(x.trim()&&("once"===h||"interval"===h?!!(T||p&&parseInt(p,10)>0):"cron"===h&&!!(T||b.trim()))),className:"w-full py-1.5 text-sm font-medium rounded bg-brand text-white hover:bg-brand/90 disabled:opacity-50 disabled:cursor-not-allowed transition-colors",children:u?c("scheduledTasks.saveBtn",{modKey:(0,l.Mu)()}):c("scheduledTasks.createBtn",{modKey:(0,l.Mu)()})})]})]})}},31914:(e,t,s)=>{s.d(t,{b:()=>c});var r=s(95155),n=s(12115),a=s(79114),o=s(72816),l=s(38093),i=s(72588),d=s(10611);function c({isOpen:e,onClose:t}){let{t:s,i18n:c}=(0,a.Bd)(),{theme:u,setTheme:h}=(0,o.D)(),m=(0,d.G)(),[x,f]=(0,n.useState)(""),[p,g]=(0,n.useState)(""),[b,v]=(0,n.useState)("auto");(0,n.useEffect)(()=>{e&&fetch("/api/settings").then(e=>e.json()).then(e=>{e.language&&v(e.language)}).catch(()=>{})},[e]);let y=(0,n.useCallback)(e=>{v(e),fetch("/api/settings",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({language:e})}).catch(()=>{});let t="auto"===e?navigator.language.startsWith("zh")?"zh":"en":e;c.changeLanguage(t)},[c]),j=m?"installed":"not-installed",k=m?.version??null;if((0,n.useEffect)(()=>{e&&fetch("/api/version").then(e=>e.json()).then(e=>{e.version&&g(e.version)}).catch(()=>{})},[e]),(0,n.useEffect)(()=>{e&&fetch("/api/extension/version").then(e=>e.json()).then(e=>{e.path&&f(e.path)}).catch(()=>{})},[e]),!e)return null;let N=[{value:"system",label:s("settings.themeSystem"),icon:"\uD83D\uDCBB"},{value:"light",label:s("settings.themeLight"),icon:"☀️"},{value:"dark",label:s("settings.themeDark"),icon:"\uD83C\uDF19"}];return(0,r.jsxs)("div",{className:"fixed inset-0 z-50 flex items-center justify-center",children:[(0,r.jsx)("div",{className:"absolute inset-0 bg-black/50",onClick:t}),(0,r.jsxs)("div",{className:"relative bg-card rounded-lg shadow-xl w-full max-w-md mx-4 overflow-hidden",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-border",children:[(0,r.jsx)("h2",{className:"text-sm font-medium text-foreground",children:s("settings.title")}),(0,r.jsx)("button",{onClick:t,className:"p-1 text-muted-foreground hover:text-foreground hover:bg-accent rounded transition-colors",children:(0,r.jsx)("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}),(0,r.jsxs)("div",{className:"p-4 space-y-4",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("label",{className:"block text-sm font-medium text-foreground mb-2",children:s("settings.theme")}),(0,r.jsx)("div",{className:"grid grid-cols-3 gap-2",children:N.map(e=>(0,r.jsxs)("button",{onClick:()=>h(e.value),className:`flex flex-col items-center gap-1 p-3 rounded-lg border transition-colors ${u===e.value?"border-brand bg-brand/10 text-brand":"border-border hover:border-slate-6 text-muted-foreground hover:text-foreground"}`,children:[(0,r.jsx)("span",{className:"text-xl",children:e.icon}),(0,r.jsx)("span",{className:"text-xs font-medium",children:e.label})]},e.value))})]}),(0,r.jsx)("div",{className:"border-t border-border"}),(0,r.jsxs)("div",{children:[(0,r.jsx)("label",{className:"block text-sm font-medium text-foreground mb-2",children:s("settings.language")}),(0,r.jsx)("div",{className:"grid grid-cols-3 gap-2",children:[{value:"auto",label:s("settings.languageAuto"),icon:"\uD83C\uDF10"},{value:"en",label:"English",icon:"\uD83C\uDDFA\uD83C\uDDF8"},{value:"zh",label:"中文",icon:"\uD83C\uDDE8\uD83C\uDDF3"}].map(e=>(0,r.jsxs)("button",{onClick:()=>y(e.value),className:`flex flex-col items-center gap-1 p-3 rounded-lg border transition-colors ${b===e.value?"border-brand bg-brand/10 text-brand":"border-border hover:border-slate-6 text-muted-foreground hover:text-foreground"}`,children:[(0,r.jsx)("span",{className:"text-xl",children:e.icon}),(0,r.jsx)("span",{className:"text-xs font-medium",children:e.label})]},e.value))})]}),(0,r.jsx)("div",{className:"border-t border-border"}),(0,r.jsxs)("div",{children:[(0,r.jsx)("label",{className:"block text-sm font-medium text-foreground mb-2",children:s("settings.browserExtension")}),(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[(0,r.jsx)("span",{className:`inline-block w-2 h-2 rounded-full flex-shrink-0 ${"installed"===j?"bg-green-500":"bg-slate-400"}`}),(0,r.jsxs)("span",{children:["installed"===j&&`${s("settings.extensionInstalled")}${k?` (v${k})`:""}`,"not-installed"===j&&s("settings.extensionNotInstalled")]})]}),(0,r.jsx)("p",{className:"text-xs text-muted-foreground leading-relaxed",children:s("settings.extensionDescription")}),"installed"!==j&&(0,r.jsxs)("div",{className:"text-xs text-muted-foreground bg-muted/50 rounded-md p-2 space-y-1",children:[(0,r.jsx)("p",{className:"font-medium text-foreground",children:s("settings.installSteps")}),(0,r.jsxs)("p",{children:[s("settings.step1")," ",(0,r.jsx)("code",{className:"px-1 py-0.5 bg-muted rounded text-foreground",children:"chrome://extensions"})]}),(0,r.jsx)("p",{children:s("settings.step2")}),(0,r.jsx)("p",{children:s("settings.step3")}),(0,i.L)()&&(0,r.jsx)("p",{dangerouslySetInnerHTML:{__html:s("settings.step4mac")}})]}),(0,r.jsxs)("div",{className:"flex gap-2",children:[(0,r.jsx)("button",{onClick:()=>{let e=x||"chrome-extension";navigator.clipboard.writeText(e),(0,l.oR)(s("toast.copiedName",{name:e}))},className:"px-3 py-1.5 text-xs bg-brand text-white rounded-md hover:bg-brand/90 transition-colors",children:s("settings.copyExtensionPath")}),"installed"===j&&(0,r.jsx)("button",{onClick:()=>{m?.id&&window.chrome?.runtime?.sendMessage&&(window.chrome.runtime.sendMessage(m.id,{type:"reload"}),(0,l.oR)(s("toast.pluginReloading")))},className:"px-3 py-1.5 text-xs border border-border text-foreground rounded-md hover:bg-muted transition-colors",children:s("settings.reloadExtension")})]}),x&&(0,r.jsx)("p",{className:"text-[11px] text-muted-foreground font-mono truncate",children:x})]})]}),(0,r.jsx)("div",{className:"border-t border-border"}),(0,r.jsxs)("div",{children:[(0,r.jsx)("label",{className:"block text-sm font-medium text-foreground mb-2",children:s("settings.about")}),(0,r.jsxs)("div",{className:"text-xs text-muted-foreground space-y-1",children:[(0,r.jsxs)("p",{children:["Cockpit",p?` v${p}`:""]}),(0,r.jsx)("p",{className:"text-muted-foreground/60",children:"One seat. One AI. Everything under control."})]})]})]})]})]})}},36998:(e,t,s)=>{s.d(t,{P:()=>n});var r=s(12115);function n(){let[e,t]=(0,r.useState)([]),s=(0,r.useCallback)(()=>{fetch("/api/pinned-sessions").then(e=>e.json()).then(e=>t(e.sessions||[])).catch(()=>{})},[]);(0,r.useEffect)(()=>{s()},[s]),(0,r.useEffect)(()=>{let e=e=>{e.data?.type==="PINNED_SESSIONS_CHANGED"&&s()};return window.addEventListener("message",e),()=>window.removeEventListener("message",e)},[s]);let n=(0,r.useCallback)(e=>{t(e),fetch("/api/pinned-sessions",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessions:e})}).catch(()=>{});try{window.parent.postMessage({type:"PINNED_SESSIONS_CHANGED"},"*")}catch{}},[]),a=(0,r.useCallback)(t=>e.some(e=>e.sessionId===t),[e]),o=(0,r.useCallback)((t,s,r)=>{e.some(e=>e.sessionId===t)||n([...e,{sessionId:t,cwd:s,customTitle:r}])},[e,n]),l=(0,r.useCallback)(t=>{n(e.filter(e=>e.sessionId!==t))},[e,n]),i=(0,r.useCallback)((t,s)=>{n(e.map(e=>e.sessionId===t?{...e,customTitle:s}:e))},[e,n]);return{pinnedSessions:e,isPinned:a,pinSession:o,unpinSession:l,updateTitle:i,reorder:(0,r.useCallback)(e=>{n(e)},[n]),reload:s}}},72588:(e,t,s)=>{s.d(t,{L:()=>n,Mu:()=>a});var r=s(41463);function n(){return!("u"<typeof navigator)&&(/Mac|iPhone|iPad/.test(navigator.platform||"")||navigator.userAgentData?.platform==="macOS")}function a(){return n()?"⌘":"Ctrl+"}r.platform,r.platform,r.platform},97440:(e,t,s)=>{s.d(t,{r:()=>o});var r=s(95155),n=s(12115),a=s(79114);function o({isOpen:e,onClose:t,onSelectSession:s,onAddProject:o}){let{t:l}=(0,a.Bd)(),[i,d]=(0,n.useState)(!1),[c,u]=(0,n.useState)([]),[h,m]=(0,n.useState)({}),[x,f]=(0,n.useState)(!1),[p,g]=(0,n.useState)(null),[b,v]=(0,n.useState)(""),y=(0,n.useRef)(null),j=(0,n.useCallback)(async()=>{f(!0),g(null),m({});try{let e=await fetch("/api/sessions/projects");if(!e.ok)throw Error("Failed to load projects");let t=await e.json();u(t)}catch(e){g(e instanceof Error?e.message:"Unknown error")}finally{f(!1)}},[]),k=(0,n.useCallback)(async e=>{m(t=>({...t,[e]:{...t[e],isExpanded:!0,isLoading:!0,sessions:[],error:null}}));try{let t=await fetch(`/api/sessions/projects/${encodeURIComponent(e)}`);if(!t.ok)throw Error("Failed to load sessions");let s=await t.json();m(t=>({...t,[e]:{...t[e],isLoading:!1,sessions:s}}))}catch(t){m(s=>({...s,[e]:{...s[e],isLoading:!1,error:t instanceof Error?t.message:"Unknown error"}}))}},[]),N=(0,n.useCallback)(e=>{let t=h[e];t?.isExpanded?m(t=>({...t,[e]:{...t[e],isExpanded:!1}})):t?.sessions?.length?m(t=>({...t,[e]:{...t[e],isExpanded:!0}})):k(e)},[h,k]);(0,n.useEffect)(()=>{e&&(j(),setTimeout(()=>{y.current?.focus()},100))},[e,j]);let w=(0,n.useCallback)(async()=>{if(!i){d(!0);try{let e=await fetch("/api/pick-folder"),s=await e.json();s.folder&&o&&(o(s.folder),t())}catch{}finally{d(!1)}}},[i,o,t]);return((0,n.useEffect)(()=>{let s=s=>{"Escape"===s.key&&e&&t()};return window.addEventListener("keydown",s),()=>window.removeEventListener("keydown",s)},[e,t]),e)?(0,r.jsxs)("div",{className:"fixed inset-0 z-50 flex items-center justify-center",children:[(0,r.jsx)("div",{className:"absolute inset-0 bg-black/50 backdrop-blur-sm",onClick:t}),(0,r.jsxs)("div",{className:"relative w-full max-w-6xl h-[90vh] mx-4 bg-card rounded-lg shadow-xl flex flex-col overflow-hidden",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-border",children:[(0,r.jsx)("h2",{className:"text-sm font-medium text-foreground",children:l("sessions.projectList")}),(0,r.jsxs)("div",{className:"flex items-center gap-3",children:[(0,r.jsx)("input",{ref:y,type:"text",placeholder:l("workspace.searchProjectPath"),value:b,onChange:e=>v(e.target.value),className:"px-2 py-1 text-xs border border-border rounded bg-card text-foreground placeholder-slate-9 focus:outline-none focus:ring-2 focus:ring-ring focus:border-transparent"}),o&&(0,r.jsxs)("button",{onClick:w,disabled:i,className:"flex items-center gap-1.5 px-2.5 py-1 text-xs rounded-md border border-border text-muted-foreground hover:text-foreground hover:bg-accent transition-colors disabled:opacity-50",title:l("sessions.openFolder"),children:[(0,r.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 10v6m3-3H9m-4 7h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"})}),i?l("sessions.selectingFolder"):l("sessions.openFolder")]}),(0,r.jsx)("button",{onClick:t,className:"p-1 text-slate-9 hover:text-foreground hover:bg-accent rounded transition-colors",children:(0,r.jsx)("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]})]}),(0,r.jsxs)("div",{className:"flex-1 overflow-y-auto p-4",children:[x&&(0,r.jsx)("div",{className:"flex items-center justify-center h-full",children:(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[(0,r.jsxs)("svg",{className:"animate-spin h-4 w-4",fill:"none",viewBox:"0 0 24 24",children:[(0,r.jsx)("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),(0,r.jsx)("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"})]}),(0,r.jsx)("span",{children:l("workspace.loadingProjects")})]})}),p&&(0,r.jsx)("div",{className:"flex items-center justify-center h-full",children:(0,r.jsx)("div",{className:"text-xs text-red-11",children:p})}),!x&&!p&&0===c.length&&(0,r.jsx)("div",{className:"flex items-center justify-center h-full",children:(0,r.jsx)("div",{className:"text-xs text-muted-foreground",children:l("workspace.projectNotFound")})}),!x&&!p&&c.filter(e=>e.fullPath.toLowerCase().includes(b.toLowerCase())).map(e=>{let t=h[e.encodedPath]||{isExpanded:!1,isLoading:!1,sessions:[],error:null};return(0,r.jsxs)("div",{className:"mb-3",children:[(0,r.jsxs)("button",{onClick:()=>N(e.encodedPath),className:"w-full flex items-center gap-2 p-2 rounded hover:bg-accent transition-colors text-left",children:[(0,r.jsx)("svg",{className:`w-3 h-3 text-muted-foreground transition-transform ${t.isExpanded?"rotate-90":""}`,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})}),(0,r.jsx)("svg",{className:"w-4 h-4 text-muted-foreground",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z"})}),(0,r.jsx)("span",{className:"flex-1 text-xs font-medium text-foreground truncate",title:e.fullPath,children:e.fullPath}),(0,r.jsxs)("span",{className:"text-xs text-muted-foreground",children:["(",e.sessionCount,")"]})]}),t.isExpanded&&(0,r.jsxs)("div",{className:"ml-6 mt-2",children:[t.isLoading&&(0,r.jsxs)("div",{className:"flex items-center gap-2 p-3 text-xs text-muted-foreground",children:[(0,r.jsxs)("svg",{className:"animate-spin h-3 w-3",fill:"none",viewBox:"0 0 24 24",children:[(0,r.jsx)("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),(0,r.jsx)("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"})]}),(0,r.jsx)("span",{children:l("sessions.loadingSessions")})]}),t.error&&(0,r.jsx)("div",{className:"p-3 text-xs text-red-11",children:t.error}),!t.isLoading&&!t.error&&(0,r.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-3",children:t.sessions.map(t=>(0,r.jsxs)("div",{onClick:()=>{var r;let n;return r=e.fullPath,n=(t.path.split("/").pop()||"").replace(".jsonl",""),void(s?s(r,n):window.parent.postMessage({type:"OPEN_PROJECT",cwd:r,sessionId:n},"*"))},className:"p-3 bg-secondary rounded border border-border hover:border-brand hover:shadow-md cursor-pointer transition-all",children:[(0,r.jsx)("h4",{className:"text-xs font-medium text-foreground mb-1 truncate",title:t.title,children:t.title}),(0,r.jsx)("div",{className:"text-xs text-muted-foreground mb-2",children:new Date(t.modifiedAt).toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})}),(0,r.jsxs)("div",{className:"space-y-0.5 text-xs",children:[t.firstMessages.map((e,t)=>(0,r.jsxs)("div",{className:"text-foreground truncate",title:e,children:[(0,r.jsx)("span",{className:"text-slate-9 mr-1",children:"•"}),e]},`first-${t}`)),t.lastMessages.length>0&&(0,r.jsx)("div",{className:"text-slate-9 text-center py-0.5",children:"\xb7\xb7\xb7"}),t.lastMessages.map((e,t)=>(0,r.jsxs)("div",{className:"text-foreground truncate",title:e,children:[(0,r.jsx)("span",{className:"text-slate-9 mr-1",children:"•"}),e]},`last-${t}`))]})]},t.path))})]})]},e.encodedPath)})]})]})]}):null}}}]);