@surething/cockpit 1.0.184 → 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 +24 -24
  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 +24 -24
  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-94e2a1e77495f17f.js +0 -25
  302. package/.next-prod/static/css/786ec7ade22e6269.css +0 -3
  303. package/dist/chunk-YNAZMVAD.mjs +0 -250
  304. /package/.next-prod/static/{Jd-PD9ePjHrv17OUyoAFo → 0mBqfZkcLM2Y1ikI9uxKG}/_buildManifest.js +0 -0
  305. /package/.next-prod/static/{Jd-PD9ePjHrv17OUyoAFo → 0mBqfZkcLM2Y1ikI9uxKG}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ exports.id=5394,exports.ids=[5394],exports.modules={25813:(a,b,c)=>{"use strict";c.d(b,{$A:()=>G,A0:()=>P,An:()=>S,BF:()=>C,Ct:()=>K,Eu:()=>B,Ex:()=>s,JE:()=>R,JY:()=>F,Ki:()=>w,Kk:()=>L,Kv:()=>j,LN:()=>k,Mx:()=>x,O0:()=>v,Sr:()=>D,Tb:()=>q,Ux:()=>U,Wd:()=>Q,aO:()=>m,ec:()=>n,eg:()=>N,i4:()=>A,iK:()=>o,iy:()=>J,lq:()=>z,ls:()=>E,mT:()=>u,oK:()=>I,of:()=>y,po:()=>H,tP:()=>p,th:()=>t,v4:()=>l,vI:()=>O,yw:()=>M});var d=c(21820),e=c(33873),f=c(79748),g=c(29021),h=c(79646);let i=(0,d.homedir)(),j=(0,e.join)(i,".cockpit"),k=(0,e.join)(j,"projects"),l=(0,e.join)(j,"state.json"),m=(0,e.join)(j,"pinned-sessions.json"),n=(0,e.join)(j,"note.md"),o=(0,e.join)(j,"scheduled-tasks.json"),p=(0,e.join)(j,"settings.json"),q=(0,e.join)(j,"review"),r=(0,e.join)(q,"_signal");function s(){try{(0,g.existsSync)(q)||(0,g.mkdirSync)(q,{recursive:!0}),(0,g.writeFileSync)(r,Date.now().toString())}catch{}}let t=(0,e.join)(i,".claude"),u=(0,e.join)(t,"projects");function v(a){return a.replace(/[/.]/g,"-")}function w(a){return(0,e.join)(k,v(a))}function x(a){return(0,e.join)(w(a),"session.json")}function y(a){return(0,e.join)(w(a),"recent-files.json")}function z(a){return(0,e.join)(w(a),"expanded-paths.json")}function A(a){return(0,e.join)(w(a),"comments.json")}function B(a){return(0,e.join)(w(a),"services.json")}function C(a){return(0,e.join)(w(a),"note.md")}function D(a,b){return(0,e.join)(w(a),`terminal-history-${b}.jsonl`)}function E(a,b){return(0,e.join)(w(a),`terminal-output-${b}.txt`)}function F(a,b){let c=b?`terminal-env-${b}.json`:"terminal-env-global.json";return(0,e.join)(w(a),c)}function G(){return(0,e.join)(j,"terminal-aliases.json")}function H(){return(0,e.join)(j,"services.json")}function I(a){return(0,e.join)(w(a),"project-settings.json")}function J(a,b){return(0,e.join)(w(a),`terminal-bubble-order-${b}.json`)}function K(a){return(0,e.join)(q,`${a}.json`)}function L(a,b){return(0,e.join)((0,e.join)(u,v(a)),`${b}.jsonl`)}function M(a,b){return(0,e.join)((0,e.join)(j,"ollama-sessions",v(a)),`${b}.jsonl`)}function N(a){let b=(0,e.join)(i,".codex","sessions");if(!(0,g.existsSync)(b))return null;try{let c=(0,h.execSync)(`find ${JSON.stringify(b)} -name "*${a}.jsonl" -type f 2>/dev/null`,{encoding:"utf8",timeout:3e3}).trim();if(c)return c.split("\n")[0]}catch{}return null}function O(a){let b=(0,e.join)(i,".kimi","sessions");if(!(0,g.existsSync)(b))return null;try{for(let c of(0,g.readdirSync)(b)){let d=(0,e.join)(b,c,a,"context.jsonl");if((0,g.existsSync)(d))return d}}catch{}return null}async function P(a){(0,g.existsSync)(a)||await (0,f.mkdir)(a,{recursive:!0})}async function Q(a){let b=(0,e.join)(a,"..");await P(b)}async function R(a,b){try{let b=await (0,f.readFile)(a,"utf-8");return JSON.parse(b)}catch{return b}}async function S(a,b){await Q(a),await (0,f.writeFile)(a,JSON.stringify(b,null,2),"utf-8")}let T=new Map;function U(a,b){let c=(T.get(a)??Promise.resolve()).then(b),d=c.then(()=>{},()=>{});return T.set(a,d),d.then(()=>{T.get(a)===d&&T.delete(a)}),c}},78335:()=>{},91878:(a,b,c)=>{"use strict";c.d(b,{CS:()=>h,Pn:()=>i,r8:()=>j});var d=c(25813),e=c(29021),f=c(4984);function g(a){if(!a)return a;let b=[...a];return b.length<=50?a:b.slice(0,50).join("")+"…"}async function h(a,b,c,f,h){if((0,e.existsSync)(a))return(0,d.Ux)(d.v4,async()=>{let e=await (0,d.JE)(d.v4,{sessions:[]});for(let a of e.sessions)a.status||(a.status=a.isLoading?"loading":"normal",delete a.isLoading);let i=e.sessions.findIndex(c=>c.cwd===a&&c.sessionId===b),j=i>=0?e.sessions[i]:void 0,k={cwd:a,sessionId:b,lastActive:Date.now(),status:c,title:g(f||j?.title),lastUserMessage:g(h||j?.lastUserMessage)};i>=0?e.sessions[i]=k:e.sessions.push(k),e.sessions.sort((a,b)=>b.lastActive-a.lastActive),e.sessions=e.sessions.slice(0,15),await (0,d.An)(d.v4,e)})}async function i(a,b){let c=(0,d.Kk)(a,b);if((0,e.existsSync)(c))return m(c);let f=(0,d.yw)(a,b);if((0,e.existsSync)(f))return m(f);let g=(0,d.eg)(b);if(g&&(0,e.existsSync)(g))return await p(g)||"Untitled Session";let h=(0,d.vI)(b);return h&&(0,e.existsSync)(h)&&await r(h)||"Untitled Session"}async function j(a,b){let c=(0,d.Kk)(a,b);if((0,e.existsSync)(c))return await n(c);let f=(0,d.yw)(a,b);if((0,e.existsSync)(f))return await n(f);let g=(0,d.eg)(b);if(g&&(0,e.existsSync)(g))return await o(g);let h=(0,d.vI)(b);if(h&&(0,e.existsSync)(h))return await q(h)}function k(a){let b=a.replace(/<command-[^>]*>[\s\S]*?<\/command-[^>]*>/g,"");return(b=b.replace(/<local-command-[^>]*>[\s\S]*?<\/local-command-[^>]*>/g,"")).trim()}function l(a){return!(a.startsWith("This session is being continued")||a.startsWith("Caveat: The messages below"))&&!!a.trim()}async function m(a){try{let d=(0,e.createReadStream)(a),g=(0,f.createInterface)({input:d,crlfDelay:1/0}),h="",i=[];for await(let a of g)if(a.trim())try{let b=JSON.parse(a);if("summary"===b.type&&b.summary&&(h=b.summary),"user"===b.type){let a=b.message;if(!a?.content)continue;if("string"==typeof a.content)i.push(a.content);else if(Array.isArray(a.content))for(let b of a.content)"text"===b.type&&b.text&&i.push(b.text)}}catch{}var b=h,c=i;if(b)return b;let j="";for(let a of c){let b=k(a);if(b){if(b.startsWith("/")&&!j){j=b;continue}if(j)return`${j} ${b}`;return b}}return j||"Untitled Session"}catch{return"Untitled Session"}}async function n(a){try{let b,c=(0,e.createReadStream)(a);for await(let a of(0,f.createInterface)({input:c,crlfDelay:1/0}))if(a.trim())try{let c=JSON.parse(a);if("user"!==c.type)continue;let d=c.message;if(!d?.content)continue;let e="";if("string"==typeof d.content)e=d.content;else if(Array.isArray(d.content)){for(let a of d.content)if("text"===a.type&&a.text){e=a.text;break}}if(!e)continue;let f=k(e);f&&l(f)&&(b=f)}catch{}return b}catch{return}}async function o(a){try{let b,c=(0,e.createReadStream)(a);for await(let a of(0,f.createInterface)({input:c,crlfDelay:1/0})){let c;if(!a.trim())continue;try{c=JSON.parse(a)}catch{continue}if("response_item"!==c.type)continue;let d=c.payload;if(!d||"message"!==d.type||"user"!==d.role)continue;let e=d.content?.filter(a=>"input_text"===a.type&&a.text).map(a=>a.text).join("")||"";if(!e||e.startsWith("<")||e.startsWith("#"))continue;let f=k(e);f&&l(f)&&(b=f)}return b}catch{return}}async function p(a){try{let b=(0,e.createReadStream)(a);for await(let a of(0,f.createInterface)({input:b,crlfDelay:1/0})){let b;if(!a.trim())continue;try{b=JSON.parse(a)}catch{continue}if("response_item"!==b.type)continue;let c=b.payload;if(!c||"message"!==c.type||"user"!==c.role)continue;let d=c.content?.filter(a=>"input_text"===a.type&&a.text).map(a=>a.text).join("")||"";if(!(!d||d.startsWith("<")||d.startsWith("#")))return d.slice(0,80)}return}catch{return}}async function q(a){try{let b,c=(0,e.createReadStream)(a);for await(let a of(0,f.createInterface)({input:c,crlfDelay:1/0})){let c;if(!a.trim())continue;try{c=JSON.parse(a)}catch{continue}if("user"!==c.role)continue;let d="string"==typeof c.content?c.content:Array.isArray(c.content)?c.content.filter(a=>("input_text"===a.type||"text"===a.type)&&a.text).map(a=>a.text).join(""):"";if(!d||d.startsWith("<system")||d.startsWith("<environment")||d.startsWith("# AGENTS.md")||d.startsWith("<permissions"))continue;let e=k(d);e&&l(e)&&(b=e)}return b}catch{return}}async function r(a){try{let b=(0,e.createReadStream)(a);for await(let a of(0,f.createInterface)({input:b,crlfDelay:1/0})){let b;if(!a.trim())continue;try{b=JSON.parse(a)}catch{continue}if("user"!==b.role)continue;let c="string"==typeof b.content?b.content:Array.isArray(b.content)?b.content.filter(a=>("input_text"===a.type||"text"===a.type)&&a.text).map(a=>a.text).join(""):"";if(!(!c||c.startsWith("<system")||c.startsWith("<environment")||c.startsWith("# AGENTS.md")||c.startsWith("<permissions")))return c.slice(0,80)}return}catch{return}}},96487:()=>{}};
@@ -1 +1 @@
1
- "use strict";exports.id=6062,exports.ids=[6062],exports.modules={132:(a,b,c)=>{c.d(b,{P:()=>e});var d=c(67484);function e(){let[a,b]=(0,d.useState)([]),c=(0,d.useCallback)(()=>{fetch("/api/pinned-sessions").then(a=>a.json()).then(a=>b(a.sessions||[])).catch(()=>{})},[]),e=(0,d.useCallback)(a=>{b(a),fetch("/api/pinned-sessions",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessions:a})}).catch(()=>{});try{window.parent.postMessage({type:"PINNED_SESSIONS_CHANGED"},"*")}catch{}},[]),f=(0,d.useCallback)(b=>a.some(a=>a.sessionId===b),[a]),g=(0,d.useCallback)((b,c,d)=>{a.some(a=>a.sessionId===b)||e([...a,{sessionId:b,cwd:c,customTitle:d}])},[a,e]),h=(0,d.useCallback)(b=>{e(a.filter(a=>a.sessionId!==b))},[a,e]),i=(0,d.useCallback)((b,c)=>{e(a.map(a=>a.sessionId===b?{...a,customTitle:c}:a))},[a,e]);return{pinnedSessions:a,isPinned:f,pinSession:g,unpinSession:h,updateTitle:i,reorder:(0,d.useCallback)(a=>{e(a)},[e]),reload:c}}},13928:(a,b,c)=>{c.d(b,{h:()=>e});var d=c(67484);function e({url:a,onMessage:b,enabled:c=!0}){(0,d.useRef)(b)}},21108:(a,b,c)=>{c.d(b,{n:()=>g});var d=c(67484);let e="SCHEDULED_TASKS_CHANGED";function f(){try{window.parent.postMessage({type:e},"*")}catch{}document.querySelectorAll("iframe").forEach(a=>{try{a.contentWindow?.postMessage({type:e},"*")}catch{}})}function g(){let[a,b]=(0,d.useState)([]),[c,e]=(0,d.useState)(0),g=(0,d.useCallback)(()=>{fetch("/api/scheduled-tasks").then(a=>a.json()).then(a=>{b(a.tasks||[]),e(a.unreadCount||0)}).catch(()=>{})},[]),h=(0,d.useCallback)(async a=>{try{let b=await fetch("/api/scheduled-tasks",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)}),c=await b.json();if(c.task)return g(),f(),c.task;return null}catch{return null}},[g]),i=(0,d.useCallback)(async a=>{await fetch("/api/scheduled-tasks",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:a,action:"pause"})}).catch(()=>{}),g(),f()},[g]),j=(0,d.useCallback)(async a=>{await fetch("/api/scheduled-tasks",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:a,action:"resume"})}).catch(()=>{}),g(),f()},[g]),k=(0,d.useCallback)(async a=>{await fetch("/api/scheduled-tasks",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:a})}).catch(()=>{}),g(),f()},[g]),l=(0,d.useCallback)(async(a,b)=>{await fetch("/api/scheduled-tasks",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:a,action:"update",fields:b})}).catch(()=>{}),g(),f()},[g]),m=(0,d.useCallback)(async a=>{await fetch("/api/scheduled-tasks",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:a,action:"trigger"})}).catch(()=>{}),g(),f()},[g]),n=(0,d.useCallback)(async a=>{await fetch("/api/scheduled-tasks",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:a,action:"markRead"})}).catch(()=>{}),g(),f()},[g]),o=(0,d.useCallback)(async()=>{await fetch("/api/scheduled-tasks",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:"_",action:"markAllRead"})}).catch(()=>{}),g(),f()},[g]),p=(0,d.useCallback)(async a=>{await fetch("/api/scheduled-tasks",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:"_",action:"reorder",fields:{orderedIds:a}})}).catch(()=>{}),g(),f()},[g]);return{tasks:a,unreadCount:c,reload:g,createTask:h,pauseTask:i,resumeTask:j,triggerTask:m,deleteTask:k,updateTask:l,markRead:n,markAllRead:o,reorderTasks:p}}},30976:(a,b,c)=>{function d(){return!("u"<typeof navigator)&&(/Mac|iPhone|iPad/.test(navigator.platform||"")||navigator.userAgentData?.platform==="macOS")}function e(){return d()?"⌘":"Ctrl+"}c.d(b,{L:()=>d,Mu:()=>e}),process.platform,process.platform,process.platform},31037:(a,b,c)=>{c.d(b,{E:()=>j});var d=c(48249),e=c(67484),f=c(44384),g=c(41564),h=c(30976);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 j({onClose:a,onCreate:b,editTask:c,onUpdate:j}){let{t:k}=(0,f.Bd)(),l=!!c,[m,n]=(0,e.useState)(c?.type||"once"),[o,p]=(0,e.useState)(c?.message||""),[q,r]=(0,e.useState)(c?String(c.delayMinutes||c.intervalMinutes||""):""),[s,t]=(0,e.useState)(c?.cron||""),[u,v]=(0,e.useState)(c?.activeFrom||"09:00"),[w,x]=(0,e.useState)(c?.activeTo||"18:00"),[y,z]=(0,e.useState)(!!(c?.activeFrom&&c?.activeTo)),[A,B]=(0,e.useState)(null),C=(0,e.useRef)(null),D=(0,e.useRef)(null),E=(0,e.useCallback)(()=>{if(!o.trim())return;let d=null;if("once"===m){let a=A||parseInt(q,10);if(!a||a<=0)return;d={message:o.trim(),type:"once",delayMinutes:a}}else if("interval"===m){let a=A||parseInt(q,10);if(!a||a<=0)return;d={message:o.trim(),type:"interval",intervalMinutes:a,...y?{activeFrom:u,activeTo:w}:{}}}else if("cron"===m){let a=A||s.trim();if(!a)return;d={message:o.trim(),type:"cron",cron:a}}d&&(l&&c&&j?j(c.id,d):b(d),a())},[o,m,A,q,s,y,u,w,b,a,l,c,j]);return(0,d.jsxs)("div",{ref:C,className:`w-80 bg-popover border border-border rounded-lg shadow-lg z-50 ${l?"":"absolute bottom-full left-0 mb-2"}`,onKeyDown:b=>{"Escape"===b.key?a():"Enter"===b.key&&(b.metaKey||b.ctrlKey)&&E()},children:[(0,d.jsx)("div",{className:"px-3 py-2 border-b border-border bg-muted/50 rounded-t-lg",children:(0,d.jsx)("span",{className:"text-sm font-medium",children:l?k("scheduledTasks.editTask"):k("scheduledTasks.createTask")})}),(0,d.jsxs)("div",{className:"p-3 space-y-3",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("label",{className:"text-xs text-muted-foreground mb-1 block",children:k("scheduledTasks.sendMessage")}),(0,d.jsx)("textarea",{ref:D,value:o,onChange:a=>p(a.target.value),placeholder:k("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,d.jsxs)("div",{children:[(0,d.jsx)("label",{className:"text-xs text-muted-foreground mb-1 block",children:k("scheduledTasks.type")}),(0,d.jsx)("div",{className:"flex gap-1",children:["once","interval","cron"].map(a=>(0,d.jsx)("button",{onClick:()=>{n(a),B(null),r(""),t("")},className:`flex-1 px-2 py-1 text-xs rounded transition-colors ${m===a?"bg-brand text-white":"bg-muted text-muted-foreground hover:text-foreground"}`,children:"once"===a?k("scheduledTasks.once"):"interval"===a?k("scheduledTasks.interval"):"Cron"},a))})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("label",{className:"text-xs text-muted-foreground mb-1 block",children:k("scheduledTasks.quickSelect")}),(0,d.jsx)("div",{className:"grid grid-cols-2 gap-1",children:i[m].map(a=>(0,d.jsx)("button",{onClick:()=>{B(a.value),"cron"===m?t(String(a.value)):r(String(a.value))},className:`px-2 py-1 text-xs rounded border transition-colors ${A===a.value?"border-brand bg-brand/10 text-brand":"border-border text-muted-foreground hover:text-foreground hover:border-foreground/30"}`,children:k(a.labelKey)},a.labelKey))})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("label",{className:"text-xs text-muted-foreground mb-1 block",children:"cron"===m?k("scheduledTasks.customCron"):k("scheduledTasks.customMinutes")}),"cron"===m?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("input",{type:"text",value:s,onChange:a=>{t(a.target.value),B(null)},placeholder:k("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"}),s.trim()&&(0,d.jsx)("div",{className:"mt-1 text-xs text-muted-foreground",children:function(a){let b=g.A.t,c=a.trim().split(/\s+/);if(5!==c.length)return null;let[d,e,f,h,i]=c,j={0:b("cron.dowSun"),1:b("cron.dowMon"),2:b("cron.dowTue"),3:b("cron.dowWed"),4:b("cron.dowThu"),5:b("cron.dowFri"),6:b("cron.dowSat")},k={1:`1${b("cron.monthPrefix")}`,2:`2${b("cron.monthPrefix")}`,3:`3${b("cron.monthPrefix")}`,4:`4${b("cron.monthPrefix")}`,5:`5${b("cron.monthPrefix")}`,6:`6${b("cron.monthPrefix")}`,7:`7${b("cron.monthPrefix")}`,8:`8${b("cron.monthPrefix")}`,9:`9${b("cron.monthPrefix")}`,10:`10${b("cron.monthPrefix")}`,11:`11${b("cron.monthPrefix")}`,12:`12${b("cron.monthPrefix")}`};try{let a="";if(d.includes("/")||e.includes("/")){if("*"===e&&d.includes("/"))return b("cron.everyNMinutes",{n:d.split("/")[1]});if("0"===d&&e.includes("/"))return b("cron.everyNHours",{n:e.split("/")[1]});return null}let c=parseInt(e,10),g=parseInt(d,10);if(isNaN(c)&&"*"!==e||isNaN(g)&&"*"!==d)return null;a="*"===e&&"*"===d?b("cron.everyMinute"):"*"===e?b("cron.everyHourAtMin",{m:g}):"*"===d?b("cron.hourlyEveryMin",{h:c}):`${String(c).padStart(2,"0")}:${String(g).padStart(2,"0")}`;let l=[];if("*"!==h){let a=h.split(",").map(a=>k[a]||`${a}${b("cron.monthPrefix")}`);l.push(a.join(", "))}if("*"!==f)if(f.includes("-")){let[a,c]=f.split("-");l.push(b("cron.dayRange",{a,b:c}))}else f.includes(",")?l.push(f.split(",").map(a=>`${a}${b("cron.dayOfMonth")}`).join(", ")):l.push(`${f}${b("cron.dayOfMonth")}`);if("*"!==i)if("1-5"===i)l.push(b("cron.weekdays"));else if("0,6"===i||"6,0"===i)l.push(b("cron.weekends"));else{let a=i.split(",").map(a=>{if(a.includes("-")){let[c,d]=a.split("-");return b("cron.weekdayRange",{a:j[c]||c,b:j[d]||d})}return`${b("cron.weekdayPrefix")}${j[a]||a}`});l.push(a.join(", "))}if(0===l.length&&"*"===f&&"*"===h&&"*"===i)return b("cron.daily",{time:a});return`${l.join(" ")} ${a}`}catch{return null}}(s.trim())||(0,d.jsx)("span",{className:"text-destructive",children:k("scheduledTasks.cronFormat")})})]}):(0,d.jsx)("input",{type:"number",value:q,onChange:a=>{r(a.target.value),B(null)},placeholder:k("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"===m&&(0,d.jsxs)("div",{children:[(0,d.jsxs)("label",{className:"flex items-center gap-2 text-xs text-muted-foreground mb-1 cursor-pointer",children:[(0,d.jsx)("input",{type:"checkbox",checked:y,onChange:a=>z(a.target.checked),className:"rounded border-border"}),k("scheduledTasks.limitTimeRange")]}),y&&(0,d.jsxs)("div",{className:"flex items-center gap-2 mt-1",children:[(0,d.jsx)("input",{type:"time",value:u,onChange:a=>v(a.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,d.jsx)("span",{className:"text-xs text-muted-foreground",children:k("scheduledTasks.to")}),(0,d.jsx)("input",{type:"time",value:w,onChange:a=>x(a.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,d.jsx)("button",{onClick:E,disabled:!(o.trim()&&("once"===m||"interval"===m?!!(A||q&&parseInt(q,10)>0):"cron"===m&&!!(A||s.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:l?k("scheduledTasks.saveBtn",{modKey:(0,h.Mu)()}):k("scheduledTasks.createBtn",{modKey:(0,h.Mu)()})})]})]})}},60306:(a,b,c)=>{c.d(b,{b:()=>k});var d=c(48249),e=c(67484),f=c(44384),g=c(3532),h=c(81749),i=c(30976),j=c(74955);function k({isOpen:a,onClose:b}){let{t:c,i18n:k}=(0,f.Bd)(),{theme:l,setTheme:m}=(0,g.D)(),n=(0,j.G)(),[o,p]=(0,e.useState)(""),[q,r]=(0,e.useState)(""),[s,t]=(0,e.useState)("auto"),u=(0,e.useCallback)(a=>{t(a),fetch("/api/settings",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({language:a})}).catch(()=>{});let b="auto"===a?navigator.language.startsWith("zh")?"zh":"en":a;k.changeLanguage(b)},[k]),v=n?"installed":"not-installed",w=n?.version??null;if(!a)return null;let x=[{value:"system",label:c("settings.themeSystem"),icon:"\uD83D\uDCBB"},{value:"light",label:c("settings.themeLight"),icon:"☀️"},{value:"dark",label:c("settings.themeDark"),icon:"\uD83C\uDF19"}];return(0,d.jsxs)("div",{className:"fixed inset-0 z-50 flex items-center justify-center",children:[(0,d.jsx)("div",{className:"absolute inset-0 bg-black/50",onClick:b}),(0,d.jsxs)("div",{className:"relative bg-card rounded-lg shadow-xl w-full max-w-md mx-4 overflow-hidden",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-border",children:[(0,d.jsx)("h2",{className:"text-sm font-medium text-foreground",children:c("settings.title")}),(0,d.jsx)("button",{onClick:b,className:"p-1 text-muted-foreground hover:text-foreground hover:bg-accent rounded transition-colors",children:(0,d.jsx)("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,d.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}),(0,d.jsxs)("div",{className:"p-4 space-y-4",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("label",{className:"block text-sm font-medium text-foreground mb-2",children:c("settings.theme")}),(0,d.jsx)("div",{className:"grid grid-cols-3 gap-2",children:x.map(a=>(0,d.jsxs)("button",{onClick:()=>m(a.value),className:`flex flex-col items-center gap-1 p-3 rounded-lg border transition-colors ${l===a.value?"border-brand bg-brand/10 text-brand":"border-border hover:border-slate-6 text-muted-foreground hover:text-foreground"}`,children:[(0,d.jsx)("span",{className:"text-xl",children:a.icon}),(0,d.jsx)("span",{className:"text-xs font-medium",children:a.label})]},a.value))})]}),(0,d.jsx)("div",{className:"border-t border-border"}),(0,d.jsxs)("div",{children:[(0,d.jsx)("label",{className:"block text-sm font-medium text-foreground mb-2",children:c("settings.language")}),(0,d.jsx)("div",{className:"grid grid-cols-3 gap-2",children:[{value:"auto",label:c("settings.languageAuto"),icon:"\uD83C\uDF10"},{value:"en",label:"English",icon:"\uD83C\uDDFA\uD83C\uDDF8"},{value:"zh",label:"中文",icon:"\uD83C\uDDE8\uD83C\uDDF3"}].map(a=>(0,d.jsxs)("button",{onClick:()=>u(a.value),className:`flex flex-col items-center gap-1 p-3 rounded-lg border transition-colors ${s===a.value?"border-brand bg-brand/10 text-brand":"border-border hover:border-slate-6 text-muted-foreground hover:text-foreground"}`,children:[(0,d.jsx)("span",{className:"text-xl",children:a.icon}),(0,d.jsx)("span",{className:"text-xs font-medium",children:a.label})]},a.value))})]}),(0,d.jsx)("div",{className:"border-t border-border"}),(0,d.jsxs)("div",{children:[(0,d.jsx)("label",{className:"block text-sm font-medium text-foreground mb-2",children:c("settings.browserExtension")}),(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[(0,d.jsx)("span",{className:`inline-block w-2 h-2 rounded-full flex-shrink-0 ${"installed"===v?"bg-green-500":"bg-slate-400"}`}),(0,d.jsxs)("span",{children:["installed"===v&&`${c("settings.extensionInstalled")}${w?` (v${w})`:""}`,"not-installed"===v&&c("settings.extensionNotInstalled")]})]}),(0,d.jsx)("p",{className:"text-xs text-muted-foreground leading-relaxed",children:c("settings.extensionDescription")}),"installed"!==v&&(0,d.jsxs)("div",{className:"text-xs text-muted-foreground bg-muted/50 rounded-md p-2 space-y-1",children:[(0,d.jsx)("p",{className:"font-medium text-foreground",children:c("settings.installSteps")}),(0,d.jsxs)("p",{children:[c("settings.step1")," ",(0,d.jsx)("code",{className:"px-1 py-0.5 bg-muted rounded text-foreground",children:"chrome://extensions"})]}),(0,d.jsx)("p",{children:c("settings.step2")}),(0,d.jsx)("p",{children:c("settings.step3")}),(0,i.L)()&&(0,d.jsx)("p",{dangerouslySetInnerHTML:{__html:c("settings.step4mac")}})]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)("button",{onClick:()=>{let a=o||"chrome-extension";navigator.clipboard.writeText(a),(0,h.oR)(c("toast.copiedName",{name:a}))},className:"px-3 py-1.5 text-xs bg-brand text-white rounded-md hover:bg-brand/90 transition-colors",children:c("settings.copyExtensionPath")}),"installed"===v&&(0,d.jsx)("button",{onClick:()=>{n?.id&&window.chrome?.runtime?.sendMessage&&(window.chrome.runtime.sendMessage(n.id,{type:"reload"}),(0,h.oR)(c("toast.pluginReloading")))},className:"px-3 py-1.5 text-xs border border-border text-foreground rounded-md hover:bg-muted transition-colors",children:c("settings.reloadExtension")})]}),o&&(0,d.jsx)("p",{className:"text-[11px] text-muted-foreground font-mono truncate",children:o})]})]}),(0,d.jsx)("div",{className:"border-t border-border"}),(0,d.jsxs)("div",{children:[(0,d.jsx)("label",{className:"block text-sm font-medium text-foreground mb-2",children:c("settings.about")}),(0,d.jsxs)("div",{className:"text-xs text-muted-foreground space-y-1",children:[(0,d.jsxs)("p",{children:["Cockpit",q?` v${q}`:""]}),(0,d.jsx)("p",{className:"text-muted-foreground/60",children:"One seat. One AI. Everything under control."})]})]})]})]})]})}},64874:(a,b,c)=>{c.d(b,{r:()=>g});var d=c(48249),e=c(67484),f=c(44384);function g({isOpen:a,onClose:b,onSelectSession:c,onAddProject:g}){let{t:h}=(0,f.Bd)(),[i,j]=(0,e.useState)(!1),[k,l]=(0,e.useState)([]),[m,n]=(0,e.useState)({}),[o,p]=(0,e.useState)(!1),[q,r]=(0,e.useState)(null),[s,t]=(0,e.useState)(""),u=(0,e.useRef)(null);(0,e.useCallback)(async()=>{p(!0),r(null),n({});try{let a=await fetch("/api/sessions/projects");if(!a.ok)throw Error("Failed to load projects");let b=await a.json();l(b)}catch(a){r(a instanceof Error?a.message:"Unknown error")}finally{p(!1)}},[]);let v=(0,e.useCallback)(async a=>{n(b=>({...b,[a]:{...b[a],isExpanded:!0,isLoading:!0,sessions:[],error:null}}));try{let b=await fetch(`/api/sessions/projects/${encodeURIComponent(a)}`);if(!b.ok)throw Error("Failed to load sessions");let c=await b.json();n(b=>({...b,[a]:{...b[a],isLoading:!1,sessions:c}}))}catch(b){n(c=>({...c,[a]:{...c[a],isLoading:!1,error:b instanceof Error?b.message:"Unknown error"}}))}},[]),w=(0,e.useCallback)(a=>{let b=m[a];b?.isExpanded?n(b=>({...b,[a]:{...b[a],isExpanded:!1}})):b?.sessions?.length?n(b=>({...b,[a]:{...b[a],isExpanded:!0}})):v(a)},[m,v]),x=(0,e.useCallback)(async()=>{if(!i){j(!0);try{let a=await fetch("/api/pick-folder"),c=await a.json();c.folder&&g&&(g(c.folder),b())}catch{}finally{j(!1)}}},[i,g,b]);return a?(0,d.jsxs)("div",{className:"fixed inset-0 z-50 flex items-center justify-center",children:[(0,d.jsx)("div",{className:"absolute inset-0 bg-black/50 backdrop-blur-sm",onClick:b}),(0,d.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,d.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-border",children:[(0,d.jsx)("h2",{className:"text-sm font-medium text-foreground",children:h("sessions.projectList")}),(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[(0,d.jsx)("input",{ref:u,type:"text",placeholder:h("workspace.searchProjectPath"),value:s,onChange:a=>t(a.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"}),g&&(0,d.jsxs)("button",{onClick:x,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:h("sessions.openFolder"),children:[(0,d.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,d.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?h("sessions.selectingFolder"):h("sessions.openFolder")]}),(0,d.jsx)("button",{onClick:b,className:"p-1 text-slate-9 hover:text-foreground hover:bg-accent rounded transition-colors",children:(0,d.jsx)("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,d.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]})]}),(0,d.jsxs)("div",{className:"flex-1 overflow-y-auto p-4",children:[o&&(0,d.jsx)("div",{className:"flex items-center justify-center h-full",children:(0,d.jsxs)("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[(0,d.jsxs)("svg",{className:"animate-spin h-4 w-4",fill:"none",viewBox:"0 0 24 24",children:[(0,d.jsx)("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),(0,d.jsx)("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"})]}),(0,d.jsx)("span",{children:h("workspace.loadingProjects")})]})}),q&&(0,d.jsx)("div",{className:"flex items-center justify-center h-full",children:(0,d.jsx)("div",{className:"text-xs text-red-11",children:q})}),!o&&!q&&0===k.length&&(0,d.jsx)("div",{className:"flex items-center justify-center h-full",children:(0,d.jsx)("div",{className:"text-xs text-muted-foreground",children:h("workspace.projectNotFound")})}),!o&&!q&&k.filter(a=>a.fullPath.toLowerCase().includes(s.toLowerCase())).map(a=>{let b=m[a.encodedPath]||{isExpanded:!1,isLoading:!1,sessions:[],error:null};return(0,d.jsxs)("div",{className:"mb-3",children:[(0,d.jsxs)("button",{onClick:()=>w(a.encodedPath),className:"w-full flex items-center gap-2 p-2 rounded hover:bg-accent transition-colors text-left",children:[(0,d.jsx)("svg",{className:`w-3 h-3 text-muted-foreground transition-transform ${b.isExpanded?"rotate-90":""}`,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,d.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})}),(0,d.jsx)("svg",{className:"w-4 h-4 text-muted-foreground",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,d.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,d.jsx)("span",{className:"flex-1 text-xs font-medium text-foreground truncate",title:a.fullPath,children:a.fullPath}),(0,d.jsxs)("span",{className:"text-xs text-muted-foreground",children:["(",a.sessionCount,")"]})]}),b.isExpanded&&(0,d.jsxs)("div",{className:"ml-6 mt-2",children:[b.isLoading&&(0,d.jsxs)("div",{className:"flex items-center gap-2 p-3 text-xs text-muted-foreground",children:[(0,d.jsxs)("svg",{className:"animate-spin h-3 w-3",fill:"none",viewBox:"0 0 24 24",children:[(0,d.jsx)("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),(0,d.jsx)("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"})]}),(0,d.jsx)("span",{children:h("sessions.loadingSessions")})]}),b.error&&(0,d.jsx)("div",{className:"p-3 text-xs text-red-11",children:b.error}),!b.isLoading&&!b.error&&(0,d.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-3",children:b.sessions.map(b=>(0,d.jsxs)("div",{onClick:()=>{var d;let e;return d=a.fullPath,e=(b.path.split("/").pop()||"").replace(".jsonl",""),void(c?c(d,e):window.parent.postMessage({type:"OPEN_PROJECT",cwd:d,sessionId:e},"*"))},className:"p-3 bg-secondary rounded border border-border hover:border-brand hover:shadow-md cursor-pointer transition-all",children:[(0,d.jsx)("h4",{className:"text-xs font-medium text-foreground mb-1 truncate",title:b.title,children:b.title}),(0,d.jsx)("div",{className:"text-xs text-muted-foreground mb-2",children:new Date(b.modifiedAt).toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})}),(0,d.jsxs)("div",{className:"space-y-0.5 text-xs",children:[b.firstMessages.map((a,b)=>(0,d.jsxs)("div",{className:"text-foreground truncate",title:a,children:[(0,d.jsx)("span",{className:"text-slate-9 mr-1",children:"•"}),a]},`first-${b}`)),b.lastMessages.length>0&&(0,d.jsx)("div",{className:"text-slate-9 text-center py-0.5",children:"\xb7\xb7\xb7"}),b.lastMessages.map((a,b)=>(0,d.jsxs)("div",{className:"text-foreground truncate",title:a,children:[(0,d.jsx)("span",{className:"text-slate-9 mr-1",children:"•"}),a]},`last-${b}`))]})]},b.path))})]})]},a.encodedPath)})]})]})]}):null}},74955:(a,b,c)=>{c.d(b,{G:()=>l,f:()=>m});var d=c(67484);function e(){if("u"<typeof document)return null;let a=document.querySelector('meta[name="cockpit-bridge"]');if(!a)return null;let b=a.dataset.id,c=a.dataset.version;return b?{id:b,version:c||"unknown"}:null}let f=null,g=new Set;function h(){g.forEach(a=>a())}function i(a){g.add(a);let b=e();return b&&!f&&(f=b,Promise.resolve().then(h)),()=>{g.delete(a)}}function j(){return f}function k(){return null}if("u">typeof document&&(f=e()),"u">typeof MutationObserver&&"u">typeof document){let a=new MutationObserver(()=>{let a=e();a&&(!f||a.id!==f.id||a.version!==f.version)&&(f=a,h())}),b=document.head||document.documentElement;b&&a.observe(b,{childList:!0})}function l(){return(0,d.useSyncExternalStore)(i,j,k)}function m(){return f??e()}}};
1
+ "use strict";exports.id=6062,exports.ids=[6062],exports.modules={132:(a,b,c)=>{c.d(b,{P:()=>e});var d=c(67484);function e(){let[a,b]=(0,d.useState)([]),c=(0,d.useCallback)(()=>{fetch("/api/pinned-sessions").then(a=>a.json()).then(a=>b(a.sessions||[])).catch(()=>{})},[]),e=(0,d.useCallback)(a=>{b(a),fetch("/api/pinned-sessions",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessions:a})}).catch(()=>{});try{window.parent.postMessage({type:"PINNED_SESSIONS_CHANGED"},"*")}catch{}},[]),f=(0,d.useCallback)(b=>a.some(a=>a.sessionId===b),[a]),g=(0,d.useCallback)((b,c,d)=>{a.some(a=>a.sessionId===b)||e([...a,{sessionId:b,cwd:c,customTitle:d}])},[a,e]),h=(0,d.useCallback)(b=>{e(a.filter(a=>a.sessionId!==b))},[a,e]),i=(0,d.useCallback)((b,c)=>{e(a.map(a=>a.sessionId===b?{...a,customTitle:c}:a))},[a,e]);return{pinnedSessions:a,isPinned:f,pinSession:g,unpinSession:h,updateTitle:i,reorder:(0,d.useCallback)(a=>{e(a)},[e]),reload:c}}},13928:(a,b,c)=>{c.d(b,{h:()=>e});var d=c(67484);function e({url:a,onMessage:b,enabled:c=!0}){(0,d.useRef)(b)}},21108:(a,b,c)=>{c.d(b,{n:()=>g});var d=c(67484);let e="SCHEDULED_TASKS_CHANGED";function f(){try{window.parent.postMessage({type:e},"*")}catch{}document.querySelectorAll("iframe").forEach(a=>{try{a.contentWindow?.postMessage({type:e},"*")}catch{}})}function g(){let[a,b]=(0,d.useState)([]),[c,e]=(0,d.useState)(0),g=(0,d.useCallback)(()=>{fetch("/api/scheduled-tasks").then(a=>a.json()).then(a=>{b(a.tasks||[]),e(a.unreadCount||0)}).catch(()=>{})},[]),h=(0,d.useCallback)(async a=>{try{let b=await fetch("/api/scheduled-tasks",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)}),c=await b.json();if(c.task)return g(),f(),c.task;return null}catch{return null}},[g]),i=(0,d.useCallback)(async a=>{await fetch("/api/scheduled-tasks",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:a,action:"pause"})}).catch(()=>{}),g(),f()},[g]),j=(0,d.useCallback)(async a=>{await fetch("/api/scheduled-tasks",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:a,action:"resume"})}).catch(()=>{}),g(),f()},[g]),k=(0,d.useCallback)(async a=>{await fetch("/api/scheduled-tasks",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:a})}).catch(()=>{}),g(),f()},[g]),l=(0,d.useCallback)(async(a,b)=>{await fetch("/api/scheduled-tasks",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:a,action:"update",fields:b})}).catch(()=>{}),g(),f()},[g]),m=(0,d.useCallback)(async a=>{await fetch("/api/scheduled-tasks",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:a,action:"trigger"})}).catch(()=>{}),g(),f()},[g]),n=(0,d.useCallback)(async a=>{await fetch("/api/scheduled-tasks",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:a,action:"markRead"})}).catch(()=>{}),g(),f()},[g]),o=(0,d.useCallback)(async()=>{await fetch("/api/scheduled-tasks",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:"_",action:"markAllRead"})}).catch(()=>{}),g(),f()},[g]),p=(0,d.useCallback)(async a=>{await fetch("/api/scheduled-tasks",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:"_",action:"reorder",fields:{orderedIds:a}})}).catch(()=>{}),g(),f()},[g]);return{tasks:a,unreadCount:c,reload:g,createTask:h,pauseTask:i,resumeTask:j,triggerTask:m,deleteTask:k,updateTask:l,markRead:n,markAllRead:o,reorderTasks:p}}},30976:(a,b,c)=>{function d(){return!("u"<typeof navigator)&&(/Mac|iPhone|iPad/.test(navigator.platform||"")||navigator.userAgentData?.platform==="macOS")}function e(){return d()?"⌘":"Ctrl+"}c.d(b,{L:()=>d,Mu:()=>e}),process.platform,process.platform,process.platform},31037:(a,b,c)=>{c.d(b,{E:()=>j});var d=c(48249),e=c(67484),f=c(44384),g=c(41564),h=c(30976);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 j({onClose:a,onCreate:b,editTask:c,onUpdate:j}){let{t:k}=(0,f.Bd)(),l=!!c,[m,n]=(0,e.useState)(c?.type||"once"),[o,p]=(0,e.useState)(c?.message||""),[q,r]=(0,e.useState)(c?String(c.delayMinutes||c.intervalMinutes||""):""),[s,t]=(0,e.useState)(c?.cron||""),[u,v]=(0,e.useState)(c?.activeFrom||"09:00"),[w,x]=(0,e.useState)(c?.activeTo||"18:00"),[y,z]=(0,e.useState)(!!(c?.activeFrom&&c?.activeTo)),[A,B]=(0,e.useState)(null),C=(0,e.useRef)(null),D=(0,e.useRef)(null),E=(0,e.useCallback)(()=>{if(!o.trim())return;let d=null;if("once"===m){let a=A||parseInt(q,10);if(!a||a<=0)return;d={message:o.trim(),type:"once",delayMinutes:a}}else if("interval"===m){let a=A||parseInt(q,10);if(!a||a<=0)return;d={message:o.trim(),type:"interval",intervalMinutes:a,...y?{activeFrom:u,activeTo:w}:{}}}else if("cron"===m){let a=A||s.trim();if(!a)return;d={message:o.trim(),type:"cron",cron:a}}d&&(l&&c&&j?j(c.id,d):b(d),a())},[o,m,A,q,s,y,u,w,b,a,l,c,j]);return(0,d.jsxs)("div",{ref:C,className:`w-80 bg-popover border border-border rounded-lg shadow-lg z-50 ${l?"":"absolute bottom-full left-0 mb-2"}`,onKeyDown:b=>{"Escape"===b.key?a():"Enter"===b.key&&(b.metaKey||b.ctrlKey)&&E()},children:[(0,d.jsx)("div",{className:"px-3 py-2 border-b border-border bg-muted/50 rounded-t-lg",children:(0,d.jsx)("span",{className:"text-sm font-medium",children:l?k("scheduledTasks.editTask"):k("scheduledTasks.createTask")})}),(0,d.jsxs)("div",{className:"p-3 space-y-3",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("label",{className:"text-xs text-muted-foreground mb-1 block",children:k("scheduledTasks.sendMessage")}),(0,d.jsx)("textarea",{ref:D,value:o,onChange:a=>p(a.target.value),placeholder:k("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,d.jsxs)("div",{children:[(0,d.jsx)("label",{className:"text-xs text-muted-foreground mb-1 block",children:k("scheduledTasks.type")}),(0,d.jsx)("div",{className:"flex gap-1",children:["once","interval","cron"].map(a=>(0,d.jsx)("button",{onClick:()=>{n(a),B(null),r(""),t("")},className:`flex-1 px-2 py-1 text-xs rounded transition-colors ${m===a?"bg-brand text-white":"bg-muted text-muted-foreground hover:text-foreground"}`,children:"once"===a?k("scheduledTasks.once"):"interval"===a?k("scheduledTasks.interval"):"Cron"},a))})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("label",{className:"text-xs text-muted-foreground mb-1 block",children:k("scheduledTasks.quickSelect")}),(0,d.jsx)("div",{className:"grid grid-cols-2 gap-1",children:i[m].map(a=>(0,d.jsx)("button",{onClick:()=>{B(a.value),"cron"===m?t(String(a.value)):r(String(a.value))},className:`px-2 py-1 text-xs rounded border transition-colors ${A===a.value?"border-brand bg-brand/10 text-brand":"border-border text-muted-foreground hover:text-foreground hover:border-foreground/30"}`,children:k(a.labelKey)},a.labelKey))})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("label",{className:"text-xs text-muted-foreground mb-1 block",children:"cron"===m?k("scheduledTasks.customCron"):k("scheduledTasks.customMinutes")}),"cron"===m?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("input",{type:"text",value:s,onChange:a=>{t(a.target.value),B(null)},placeholder:k("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"}),s.trim()&&(0,d.jsx)("div",{className:"mt-1 text-xs text-muted-foreground",children:function(a){let b=g.A.t,c=a.trim().split(/\s+/);if(5!==c.length)return null;let[d,e,f,h,i]=c,j={0:b("cron.dowSun"),1:b("cron.dowMon"),2:b("cron.dowTue"),3:b("cron.dowWed"),4:b("cron.dowThu"),5:b("cron.dowFri"),6:b("cron.dowSat")},k={1:`1${b("cron.monthPrefix")}`,2:`2${b("cron.monthPrefix")}`,3:`3${b("cron.monthPrefix")}`,4:`4${b("cron.monthPrefix")}`,5:`5${b("cron.monthPrefix")}`,6:`6${b("cron.monthPrefix")}`,7:`7${b("cron.monthPrefix")}`,8:`8${b("cron.monthPrefix")}`,9:`9${b("cron.monthPrefix")}`,10:`10${b("cron.monthPrefix")}`,11:`11${b("cron.monthPrefix")}`,12:`12${b("cron.monthPrefix")}`};try{let a="";if(d.includes("/")||e.includes("/")){if("*"===e&&d.includes("/"))return b("cron.everyNMinutes",{n:d.split("/")[1]});if("0"===d&&e.includes("/"))return b("cron.everyNHours",{n:e.split("/")[1]});return null}let c=parseInt(e,10),g=parseInt(d,10);if(isNaN(c)&&"*"!==e||isNaN(g)&&"*"!==d)return null;a="*"===e&&"*"===d?b("cron.everyMinute"):"*"===e?b("cron.everyHourAtMin",{m:g}):"*"===d?b("cron.hourlyEveryMin",{h:c}):`${String(c).padStart(2,"0")}:${String(g).padStart(2,"0")}`;let l=[];if("*"!==h){let a=h.split(",").map(a=>k[a]||`${a}${b("cron.monthPrefix")}`);l.push(a.join(", "))}if("*"!==f)if(f.includes("-")){let[a,c]=f.split("-");l.push(b("cron.dayRange",{a,b:c}))}else f.includes(",")?l.push(f.split(",").map(a=>`${a}${b("cron.dayOfMonth")}`).join(", ")):l.push(`${f}${b("cron.dayOfMonth")}`);if("*"!==i)if("1-5"===i)l.push(b("cron.weekdays"));else if("0,6"===i||"6,0"===i)l.push(b("cron.weekends"));else{let a=i.split(",").map(a=>{if(a.includes("-")){let[c,d]=a.split("-");return b("cron.weekdayRange",{a:j[c]||c,b:j[d]||d})}return`${b("cron.weekdayPrefix")}${j[a]||a}`});l.push(a.join(", "))}if(0===l.length&&"*"===f&&"*"===h&&"*"===i)return b("cron.daily",{time:a});return`${l.join(" ")} ${a}`}catch{return null}}(s.trim())||(0,d.jsx)("span",{className:"text-destructive",children:k("scheduledTasks.cronFormat")})})]}):(0,d.jsx)("input",{type:"number",value:q,onChange:a=>{r(a.target.value),B(null)},placeholder:k("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"===m&&(0,d.jsxs)("div",{children:[(0,d.jsxs)("label",{className:"flex items-center gap-2 text-xs text-muted-foreground mb-1 cursor-pointer",children:[(0,d.jsx)("input",{type:"checkbox",checked:y,onChange:a=>z(a.target.checked),className:"rounded border-border"}),k("scheduledTasks.limitTimeRange")]}),y&&(0,d.jsxs)("div",{className:"flex items-center gap-2 mt-1",children:[(0,d.jsx)("input",{type:"time",value:u,onChange:a=>v(a.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,d.jsx)("span",{className:"text-xs text-muted-foreground",children:k("scheduledTasks.to")}),(0,d.jsx)("input",{type:"time",value:w,onChange:a=>x(a.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,d.jsx)("button",{onClick:E,disabled:!(o.trim()&&("once"===m||"interval"===m?!!(A||q&&parseInt(q,10)>0):"cron"===m&&!!(A||s.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:l?k("scheduledTasks.saveBtn",{modKey:(0,h.Mu)()}):k("scheduledTasks.createBtn",{modKey:(0,h.Mu)()})})]})]})}},60306:(a,b,c)=>{c.d(b,{b:()=>k});var d=c(48249),e=c(67484),f=c(44384),g=c(3532),h=c(81749),i=c(30976),j=c(74955);function k({isOpen:a,onClose:b}){let{t:c,i18n:k}=(0,f.Bd)(),{theme:l,setTheme:m}=(0,g.D)(),n=(0,j.G)(),[o,p]=(0,e.useState)(""),[q,r]=(0,e.useState)(""),[s,t]=(0,e.useState)("auto"),u=(0,e.useCallback)(a=>{t(a),fetch("/api/settings",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({language:a})}).catch(()=>{});let b="auto"===a?navigator.language.startsWith("zh")?"zh":"en":a;k.changeLanguage(b)},[k]),v=n?"installed":"not-installed",w=n?.version??null;if(!a)return null;let x=[{value:"system",label:c("settings.themeSystem"),icon:"\uD83D\uDCBB"},{value:"light",label:c("settings.themeLight"),icon:"☀️"},{value:"dark",label:c("settings.themeDark"),icon:"\uD83C\uDF19"}];return(0,d.jsxs)("div",{className:"fixed inset-0 z-50 flex items-center justify-center",children:[(0,d.jsx)("div",{className:"absolute inset-0 bg-black/50",onClick:b}),(0,d.jsxs)("div",{className:"relative bg-card rounded-lg shadow-xl w-full max-w-md mx-4 overflow-hidden",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-border",children:[(0,d.jsx)("h2",{className:"text-sm font-medium text-foreground",children:c("settings.title")}),(0,d.jsx)("button",{onClick:b,className:"p-1 text-muted-foreground hover:text-foreground hover:bg-accent rounded transition-colors",children:(0,d.jsx)("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,d.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}),(0,d.jsxs)("div",{className:"p-4 space-y-4",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("label",{className:"block text-sm font-medium text-foreground mb-2",children:c("settings.theme")}),(0,d.jsx)("div",{className:"grid grid-cols-3 gap-2",children:x.map(a=>(0,d.jsxs)("button",{onClick:()=>m(a.value),className:`flex flex-col items-center gap-1 p-3 rounded-lg border transition-colors ${l===a.value?"border-brand bg-brand/10 text-brand":"border-border hover:border-slate-6 text-muted-foreground hover:text-foreground"}`,children:[(0,d.jsx)("span",{className:"text-xl",children:a.icon}),(0,d.jsx)("span",{className:"text-xs font-medium",children:a.label})]},a.value))})]}),(0,d.jsx)("div",{className:"border-t border-border"}),(0,d.jsxs)("div",{children:[(0,d.jsx)("label",{className:"block text-sm font-medium text-foreground mb-2",children:c("settings.language")}),(0,d.jsx)("div",{className:"grid grid-cols-3 gap-2",children:[{value:"auto",label:c("settings.languageAuto"),icon:"\uD83C\uDF10"},{value:"en",label:"English",icon:"\uD83C\uDDFA\uD83C\uDDF8"},{value:"zh",label:"中文",icon:"\uD83C\uDDE8\uD83C\uDDF3"}].map(a=>(0,d.jsxs)("button",{onClick:()=>u(a.value),className:`flex flex-col items-center gap-1 p-3 rounded-lg border transition-colors ${s===a.value?"border-brand bg-brand/10 text-brand":"border-border hover:border-slate-6 text-muted-foreground hover:text-foreground"}`,children:[(0,d.jsx)("span",{className:"text-xl",children:a.icon}),(0,d.jsx)("span",{className:"text-xs font-medium",children:a.label})]},a.value))})]}),(0,d.jsx)("div",{className:"border-t border-border"}),(0,d.jsxs)("div",{children:[(0,d.jsx)("label",{className:"block text-sm font-medium text-foreground mb-2",children:c("settings.browserExtension")}),(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[(0,d.jsx)("span",{className:`inline-block w-2 h-2 rounded-full flex-shrink-0 ${"installed"===v?"bg-green-500":"bg-slate-400"}`}),(0,d.jsxs)("span",{children:["installed"===v&&`${c("settings.extensionInstalled")}${w?` (v${w})`:""}`,"not-installed"===v&&c("settings.extensionNotInstalled")]})]}),(0,d.jsx)("p",{className:"text-xs text-muted-foreground leading-relaxed",children:c("settings.extensionDescription")}),"installed"!==v&&(0,d.jsxs)("div",{className:"text-xs text-muted-foreground bg-muted/50 rounded-md p-2 space-y-1",children:[(0,d.jsx)("p",{className:"font-medium text-foreground",children:c("settings.installSteps")}),(0,d.jsxs)("p",{children:[c("settings.step1")," ",(0,d.jsx)("code",{className:"px-1 py-0.5 bg-muted rounded text-foreground",children:"chrome://extensions"})]}),(0,d.jsx)("p",{children:c("settings.step2")}),(0,d.jsx)("p",{children:c("settings.step3")}),(0,i.L)()&&(0,d.jsx)("p",{dangerouslySetInnerHTML:{__html:c("settings.step4mac")}})]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)("button",{onClick:()=>{let a=o||"chrome-extension";navigator.clipboard.writeText(a),(0,h.oR)(c("toast.copiedName",{name:a}))},className:"px-3 py-1.5 text-xs bg-brand text-white rounded-md hover:bg-brand/90 transition-colors",children:c("settings.copyExtensionPath")}),"installed"===v&&(0,d.jsx)("button",{onClick:()=>{n?.id&&window.chrome?.runtime?.sendMessage&&(window.chrome.runtime.sendMessage(n.id,{type:"reload"}),(0,h.oR)(c("toast.pluginReloading")))},className:"px-3 py-1.5 text-xs border border-border text-foreground rounded-md hover:bg-muted transition-colors",children:c("settings.reloadExtension")})]}),o&&(0,d.jsx)("p",{className:"text-[11px] text-muted-foreground font-mono truncate",children:o})]})]}),(0,d.jsx)("div",{className:"border-t border-border"}),(0,d.jsxs)("div",{children:[(0,d.jsx)("label",{className:"block text-sm font-medium text-foreground mb-2",children:c("settings.about")}),(0,d.jsxs)("div",{className:"text-xs text-muted-foreground space-y-1",children:[(0,d.jsxs)("p",{children:["Cockpit",q?` v${q}`:""]}),(0,d.jsx)("p",{className:"text-muted-foreground/60",children:"One seat. One AI. Everything under control."})]})]})]})]})]})}},64874:(a,b,c)=>{c.d(b,{r:()=>g});var d=c(48249),e=c(67484),f=c(44384);function g({isOpen:a,onClose:b,onSelectSession:c,onAddProject:g}){let{t:h}=(0,f.Bd)(),[i,j]=(0,e.useState)(!1),[k,l]=(0,e.useState)([]),[m,n]=(0,e.useState)({}),[o,p]=(0,e.useState)(!1),[q,r]=(0,e.useState)(null),[s,t]=(0,e.useState)(""),u=(0,e.useRef)(null);(0,e.useCallback)(async()=>{p(!0),r(null),n({});try{let a=await fetch("/api/sessions/projects");if(!a.ok)throw Error("Failed to load projects");let b=await a.json();l(b)}catch(a){r(a instanceof Error?a.message:"Unknown error")}finally{p(!1)}},[]);let v=(0,e.useCallback)(async a=>{n(b=>({...b,[a]:{...b[a],isExpanded:!0,isLoading:!0,sessions:[],error:null}}));try{let b=await fetch(`/api/sessions/projects/${encodeURIComponent(a)}`);if(!b.ok)throw Error("Failed to load sessions");let c=await b.json();n(b=>({...b,[a]:{...b[a],isLoading:!1,sessions:c}}))}catch(b){n(c=>({...c,[a]:{...c[a],isLoading:!1,error:b instanceof Error?b.message:"Unknown error"}}))}},[]),w=(0,e.useCallback)(a=>{let b=m[a];b?.isExpanded?n(b=>({...b,[a]:{...b[a],isExpanded:!1}})):b?.sessions?.length?n(b=>({...b,[a]:{...b[a],isExpanded:!0}})):v(a)},[m,v]),x=(0,e.useCallback)(async()=>{if(!i){j(!0);try{let a=await fetch("/api/pick-folder"),c=await a.json();c.folder&&g&&(g(c.folder),b())}catch{}finally{j(!1)}}},[i,g,b]);return a?(0,d.jsxs)("div",{className:"fixed inset-0 z-50 flex items-center justify-center",children:[(0,d.jsx)("div",{className:"absolute inset-0 bg-black/50 backdrop-blur-sm",onClick:b}),(0,d.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,d.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-border",children:[(0,d.jsx)("h2",{className:"text-sm font-medium text-foreground",children:h("sessions.projectList")}),(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[(0,d.jsx)("input",{ref:u,type:"text",placeholder:h("workspace.searchProjectPath"),value:s,onChange:a=>t(a.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"}),g&&(0,d.jsxs)("button",{onClick:x,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:h("sessions.openFolder"),children:[(0,d.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,d.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?h("sessions.selectingFolder"):h("sessions.openFolder")]}),(0,d.jsx)("button",{onClick:b,className:"p-1 text-slate-9 hover:text-foreground hover:bg-accent rounded transition-colors",children:(0,d.jsx)("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,d.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]})]}),(0,d.jsxs)("div",{className:"flex-1 overflow-y-auto p-4",children:[o&&(0,d.jsx)("div",{className:"flex items-center justify-center h-full",children:(0,d.jsxs)("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[(0,d.jsxs)("svg",{className:"animate-spin h-4 w-4",fill:"none",viewBox:"0 0 24 24",children:[(0,d.jsx)("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),(0,d.jsx)("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"})]}),(0,d.jsx)("span",{children:h("workspace.loadingProjects")})]})}),q&&(0,d.jsx)("div",{className:"flex items-center justify-center h-full",children:(0,d.jsx)("div",{className:"text-xs text-red-11",children:q})}),!o&&!q&&0===k.length&&(0,d.jsx)("div",{className:"flex items-center justify-center h-full",children:(0,d.jsx)("div",{className:"text-xs text-muted-foreground",children:h("workspace.projectNotFound")})}),!o&&!q&&k.filter(a=>a.fullPath.toLowerCase().includes(s.toLowerCase())).map(a=>{let b=m[a.encodedPath]||{isExpanded:!1,isLoading:!1,sessions:[],error:null};return(0,d.jsxs)("div",{className:"mb-3",children:[(0,d.jsxs)("button",{onClick:()=>w(a.encodedPath),className:"w-full flex items-center gap-2 p-2 rounded hover:bg-accent transition-colors text-left",children:[(0,d.jsx)("svg",{className:`w-3 h-3 text-muted-foreground transition-transform ${b.isExpanded?"rotate-90":""}`,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,d.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})}),(0,d.jsx)("svg",{className:"w-4 h-4 text-muted-foreground",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,d.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,d.jsx)("span",{className:"flex-1 text-xs font-medium text-foreground truncate",title:a.fullPath,children:a.fullPath}),(0,d.jsxs)("span",{className:"text-xs text-muted-foreground",children:["(",a.sessionCount,")"]})]}),b.isExpanded&&(0,d.jsxs)("div",{className:"ml-6 mt-2",children:[b.isLoading&&(0,d.jsxs)("div",{className:"flex items-center gap-2 p-3 text-xs text-muted-foreground",children:[(0,d.jsxs)("svg",{className:"animate-spin h-3 w-3",fill:"none",viewBox:"0 0 24 24",children:[(0,d.jsx)("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),(0,d.jsx)("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"})]}),(0,d.jsx)("span",{children:h("sessions.loadingSessions")})]}),b.error&&(0,d.jsx)("div",{className:"p-3 text-xs text-red-11",children:b.error}),!b.isLoading&&!b.error&&(0,d.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-3",children:b.sessions.map(b=>(0,d.jsxs)("div",{onClick:()=>{var d;let e;return d=a.fullPath,e=(b.path.split("/").pop()||"").replace(".jsonl",""),void(c?c(d,e):window.parent.postMessage({type:"OPEN_PROJECT",cwd:d,sessionId:e},"*"))},className:"p-3 bg-secondary rounded border border-border hover:border-brand hover:shadow-md cursor-pointer transition-all",children:[(0,d.jsxs)("div",{className:"flex items-center gap-1.5 mb-1",children:[b.engine&&"claude"!==b.engine&&(0,d.jsx)("span",{className:`shrink-0 px-1 py-0.5 text-[10px] leading-none font-medium rounded ${"ollama"===b.engine?"bg-blue-500/15 text-blue-11":"codex"===b.engine?"bg-green-500/15 text-green-11":"kimi"===b.engine?"bg-purple-500/15 text-purple-11":"bg-muted text-muted-foreground"}`,children:b.engine}),(0,d.jsx)("h4",{className:"text-xs font-medium text-foreground truncate",title:b.title,children:b.title})]}),(0,d.jsx)("div",{className:"text-xs text-muted-foreground mb-2",children:new Date(b.modifiedAt).toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})}),(0,d.jsxs)("div",{className:"space-y-0.5 text-xs",children:[b.firstMessages.map((a,b)=>(0,d.jsxs)("div",{className:"text-foreground truncate",title:a,children:[(0,d.jsx)("span",{className:"text-slate-9 mr-1",children:"•"}),a]},`first-${b}`)),b.lastMessages.length>0&&(0,d.jsx)("div",{className:"text-slate-9 text-center py-0.5",children:"\xb7\xb7\xb7"}),b.lastMessages.map((a,b)=>(0,d.jsxs)("div",{className:"text-foreground truncate",title:a,children:[(0,d.jsx)("span",{className:"text-slate-9 mr-1",children:"•"}),a]},`last-${b}`))]})]},b.path))})]})]},a.encodedPath)})]})]})]}):null}},74955:(a,b,c)=>{c.d(b,{G:()=>l,f:()=>m});var d=c(67484);function e(){if("u"<typeof document)return null;let a=document.querySelector('meta[name="cockpit-bridge"]');if(!a)return null;let b=a.dataset.id,c=a.dataset.version;return b?{id:b,version:c||"unknown"}:null}let f=null,g=new Set;function h(){g.forEach(a=>a())}function i(a){g.add(a);let b=e();return b&&!f&&(f=b,Promise.resolve().then(h)),()=>{g.delete(a)}}function j(){return f}function k(){return null}if("u">typeof document&&(f=e()),"u">typeof MutationObserver&&"u">typeof document){let a=new MutationObserver(()=>{let a=e();a&&(!f||a.id!==f.id||a.version!==f.version)&&(f=a,h())}),b=document.head||document.documentElement;b&&a.observe(b,{childList:!0})}function l(){return(0,d.useSyncExternalStore)(i,j,k)}function m(){return f??e()}}};
@@ -0,0 +1 @@
1
+ "use strict";exports.id=700,exports.ids=[700],exports.modules={10494:(a,b,c)=>{var d=Object.create,e=Object.defineProperty,f=Object.getOwnPropertyDescriptor,g=Object.getOwnPropertyNames,h=Object.getPrototypeOf,i=Object.prototype.hasOwnProperty,j=(a,b,c,d)=>{if(b&&"object"==typeof b||"function"==typeof b)for(let h of g(b))i.call(a,h)||h===c||e(a,h,{get:()=>b[h],enumerable:!(d=f(b,h))||d.enumerable});return a},k=(a,b,c)=>(c=null!=a?d(h(a)):{},j(!b&&a&&a.__esModule?c:e(c,"default",{value:a,enumerable:!0}),a)),l={},m={findRootDir:()=>s,getUserDataDir:()=>t};for(var n in m)e(l,n,{get:m[n],enumerable:!0});a.exports=j(e({},"__esModule",{value:!0}),l);var o=k(c(33873)),p=k(c(29021)),q=k(c(21820)),r=c(13262);function s(){try{let a=process.cwd();for(;a!==o.default.dirname(a);){let b=o.default.join(a,".vercel");if(p.default.existsSync(b))return a;a=o.default.dirname(a)}}catch(a){throw new r.VercelOidcTokenError("Token refresh only supported in node server environments")}return null}function t(){if(process.env.XDG_DATA_HOME)return process.env.XDG_DATA_HOME;switch(q.default.platform()){case"darwin":return o.default.join(q.default.homedir(),"Library/Application Support");case"linux":return o.default.join(q.default.homedir(),".local/share");case"win32":if(process.env.LOCALAPPDATA)return process.env.LOCALAPPDATA;return null;default:return null}}},21451:(a,b,c)=>{var d=Object.create,e=Object.defineProperty,f=Object.getOwnPropertyDescriptor,g=Object.getOwnPropertyNames,h=Object.getPrototypeOf,i=Object.prototype.hasOwnProperty,j=(a,b,c,d)=>{if(b&&"object"==typeof b||"function"==typeof b)for(let h of g(b))i.call(a,h)||h===c||e(a,h,{get:()=>b[h],enumerable:!(d=f(b,h))||d.enumerable});return a},k=(a,b,c)=>(c=null!=a?d(h(a)):{},j(!b&&a&&a.__esModule?c:e(c,"default",{value:a,enumerable:!0}),a)),l={},m={isValidAccessToken:()=>u,readAuthConfig:()=>s,writeAuthConfig:()=>t};for(var n in m)e(l,n,{get:m[n],enumerable:!0});a.exports=j(e({},"__esModule",{value:!0}),l);var o=k(c(29021)),p=k(c(33873)),q=c(45814);function r(){let a=(0,q.getVercelDataDir)();if(!a)throw Error(`Unable to find Vercel CLI data directory. Your platform: ${process.platform}. Supported: darwin, linux, win32.`);return p.join(a,"auth.json")}function s(){try{let a=r();if(!o.existsSync(a))return null;let b=o.readFileSync(a,"utf8");if(!b)return null;return JSON.parse(b)}catch(a){return null}}function t(a){let b=r(),c=p.dirname(b);o.existsSync(c)||o.mkdirSync(c,{mode:504,recursive:!0}),o.writeFileSync(b,JSON.stringify(a,null,2),{mode:384})}function u(a){if(!a.token)return!1;if("number"!=typeof a.expiresAt)return!0;let b=Math.floor(Date.now()/1e3);return a.expiresAt>=b}},34044:(a,b,c)=>{var d=Object.defineProperty,e=Object.getOwnPropertyDescriptor,f=Object.getOwnPropertyNames,g=Object.prototype.hasOwnProperty,h={},i={processTokenResponse:()=>p,refreshTokenRequest:()=>o};for(var j in i)d(h,j,{get:i[j],enumerable:!0});a.exports=((a,b,c,h)=>{if(b&&"object"==typeof b||"function"==typeof b)for(let c of f(b))g.call(a,c)||void 0===c||d(a,c,{get:()=>b[c],enumerable:!(h=e(b,c))||h.enumerable});return a})(d({},"__esModule",{value:!0}),h);var k=c(21820);let l=`@vercel/oidc node-${process.version} ${(0,k.platform)()} (${(0,k.arch)()}) ${(0,k.hostname)()}`,m=null;async function n(){if(m)return m;let a=await fetch("https://vercel.com/.well-known/openid-configuration",{headers:{"user-agent":l}});if(!a.ok)throw Error("Failed to discover OAuth endpoints");let b=await a.json();if(!b||"string"!=typeof b.token_endpoint)throw Error("Invalid OAuth discovery response");let c=b.token_endpoint;return m=c,c}async function o(a){let b=await n();return await fetch(b,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded","user-agent":l},body:new URLSearchParams({client_id:"cl_HYyOPBNtFMfHhaUn9L4QPfTZz6TP47bp",grant_type:"refresh_token",...a})})}async function p(a){let b=await a.json();return a.ok?"object"!=typeof b||null===b?[Error("Invalid token response")]:"string"!=typeof b.access_token?[Error("Missing access_token in response")]:"Bearer"!==b.token_type?[Error("Invalid token_type in response")]:"number"!=typeof b.expires_in?[Error("Missing expires_in in response")]:[null,b]:[Error("object"==typeof b&&b&&"error"in b?String(b.error):"Token refresh failed")]}},45814:(a,b,c)=>{var d=Object.create,e=Object.defineProperty,f=Object.getOwnPropertyDescriptor,g=Object.getOwnPropertyNames,h=Object.getPrototypeOf,i=Object.prototype.hasOwnProperty,j=(a,b,c,d)=>{if(b&&"object"==typeof b||"function"==typeof b)for(let h of g(b))i.call(a,h)||h===c||e(a,h,{get:()=>b[h],enumerable:!(d=f(b,h))||d.enumerable});return a},k=(a,b,c)=>(c=null!=a?d(h(a)):{},j(!b&&a&&a.__esModule?c:e(c,"default",{value:a,enumerable:!0}),a)),l={},m={assertVercelOidcTokenResponse:()=>x,findProjectInfo:()=>y,getTokenPayload:()=>B,getVercelCliToken:()=>v,getVercelDataDir:()=>u,getVercelOidcToken:()=>w,isExpired:()=>C,loadToken:()=>A,saveToken:()=>z};for(var n in m)e(l,n,{get:m[n],enumerable:!0});a.exports=j(e({},"__esModule",{value:!0}),l);var o=k(c(33873)),p=k(c(29021)),q=c(13262),r=c(10494),s=c(21451),t=c(34044);function u(){let a=(0,r.getUserDataDir)();return a?o.join(a,"com.vercel.cli"):null}async function v(){let a=(0,s.readAuthConfig)();if(!a)return null;if((0,s.isValidAccessToken)(a))return a.token||null;if(!a.refreshToken)return(0,s.writeAuthConfig)({}),null;try{let b=await (0,t.refreshTokenRequest)({refresh_token:a.refreshToken}),[c,d]=await (0,t.processTokenResponse)(b);if(c||!d)return(0,s.writeAuthConfig)({}),null;let e={token:d.access_token,expiresAt:Math.floor(Date.now()/1e3)+d.expires_in};return d.refresh_token&&(e.refreshToken=d.refresh_token),(0,s.writeAuthConfig)(e),e.token??null}catch(a){return(0,s.writeAuthConfig)({}),null}}async function w(a,b,c){let d=`https://api.vercel.com/v1/projects/${b}/token?source=vercel-oidc-refresh${c?`&teamId=${c}`:""}`,e=await fetch(d,{method:"POST",headers:{Authorization:`Bearer ${a}`}});if(!e.ok)throw new q.VercelOidcTokenError(`Failed to refresh OIDC token: ${e.statusText}`);let f=await e.json();return x(f),f}function x(a){if(!a||"object"!=typeof a)throw TypeError("Vercel OIDC token is malformed. Expected an object. Please run `vc env pull` and try again");if(!("token"in a)||"string"!=typeof a.token)throw TypeError("Vercel OIDC token is malformed. Expected a string-valued token property. Please run `vc env pull` and try again")}function y(){let a=(0,r.findRootDir)();if(!a)throw new q.VercelOidcTokenError("Unable to find project root directory. Have you linked your project with `vc link?`");let b=o.join(a,".vercel","project.json");if(!p.existsSync(b))throw new q.VercelOidcTokenError("project.json not found, have you linked your project with `vc link?`");let c=JSON.parse(p.readFileSync(b,"utf8"));if("string"!=typeof c.projectId&&"string"!=typeof c.orgId)throw TypeError("Expected a string-valued projectId property. Try running `vc link` to re-link your project.");return{projectId:c.projectId,teamId:c.orgId}}function z(a,b){let c=(0,r.getUserDataDir)();if(!c)throw new q.VercelOidcTokenError("Unable to find user data directory. Please reach out to Vercel support.");let d=o.join(c,"com.vercel.token",`${b}.json`),e=JSON.stringify(a);p.mkdirSync(o.dirname(d),{mode:504,recursive:!0}),p.writeFileSync(d,e),p.chmodSync(d,432)}function A(a){let b=(0,r.getUserDataDir)();if(!b)throw new q.VercelOidcTokenError("Unable to find user data directory. Please reach out to Vercel support.");let c=o.join(b,"com.vercel.token",`${a}.json`);if(!p.existsSync(c))return null;let d=JSON.parse(p.readFileSync(c,"utf8"));return x(d),d}function B(a){let b=a.split(".");if(3!==b.length)throw new q.VercelOidcTokenError("Invalid token. Please run `vc env pull` and try again");let c=b[1].replace(/-/g,"+").replace(/_/g,"/"),d=c.padEnd(c.length+(4-c.length%4)%4,"=");return JSON.parse(Buffer.from(d,"base64").toString("utf8"))}function C(a){return 1e3*a.exp<Date.now()}}};
@@ -2,7 +2,6 @@
2
2
  "version": 1,
3
3
  "functions": {
4
4
  "/api/bash": {},
5
- "/api/chat": {},
6
5
  "/api/chat/codex": {},
7
6
  "/api/chat/kimi": {},
8
7
  "/api/chat/ollama": {},
@@ -1 +1 @@
1
- globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:[],rootMainFiles:["static/chunks/webpack-67d02a2a41508d41.js","static/chunks/4bd1b696-e5d7c65570c947b7.js","static/chunks/3794-337d1ca25ad99a89.js","static/chunks/main-app-b76c0df33a946918.js"],rootMainFilesTree:{},pages:{"/_app":[]}},globalThis.__BUILD_MANIFEST.lowPriorityFiles=["/static/"+process.env.__NEXT_BUILD_ID+"/_buildManifest.js","/static/"+process.env.__NEXT_BUILD_ID+"/_ssgManifest.js"];
1
+ globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:[],rootMainFiles:["static/chunks/webpack-0f527ee7ab644d02.js","static/chunks/4bd1b696-e5d7c65570c947b7.js","static/chunks/3794-337d1ca25ad99a89.js","static/chunks/main-app-b76c0df33a946918.js"],rootMainFilesTree:{},pages:{"/_app":[]}},globalThis.__BUILD_MANIFEST.lowPriorityFiles=["/static/"+process.env.__NEXT_BUILD_ID+"/_buildManifest.js","/static/"+process.env.__NEXT_BUILD_ID+"/_ssgManifest.js"];