@surething/cockpit 1.0.185 → 1.0.187

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 (310) hide show
  1. package/.next-prod/BUILD_ID +1 -1
  2. package/.next-prod/app-path-routes-manifest.json +26 -26
  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 +1 -1
  265. package/.next-prod/server/app/page.js.nft.json +1 -1
  266. package/.next-prod/server/app/page_client-reference-manifest.js +1 -1
  267. package/.next-prod/server/app/project/page.js +11 -11
  268. package/.next-prod/server/app/project/page.js.nft.json +1 -1
  269. package/.next-prod/server/app/project/page_client-reference-manifest.js +1 -1
  270. package/.next-prod/server/app/review/[id]/page.js.nft.json +1 -1
  271. package/.next-prod/server/app/review/[id]/page_client-reference-manifest.js +1 -1
  272. package/.next-prod/server/app-paths-manifest.json +26 -26
  273. package/.next-prod/server/chunks/3269.js +1 -0
  274. package/.next-prod/server/chunks/4098.js +1 -1
  275. package/.next-prod/server/chunks/4490.js +1 -1
  276. package/.next-prod/server/chunks/4741.js +4 -4
  277. package/.next-prod/server/chunks/5394.js +1 -0
  278. package/.next-prod/server/chunks/6062.js +1 -1
  279. package/.next-prod/server/chunks/700.js +1 -0
  280. package/.next-prod/server/chunks/7284.js +1 -1
  281. package/.next-prod/server/functions-config-manifest.json +0 -1
  282. package/.next-prod/server/middleware-build-manifest.js +1 -1
  283. package/.next-prod/server/middleware-react-loadable-manifest.js +1 -1
  284. package/.next-prod/server/pages/404.html +2 -2
  285. package/.next-prod/server/pages/500.html +2 -2
  286. package/.next-prod/server/server-reference-manifest.json +1 -1
  287. package/.next-prod/static/chunks/{1593-7902218f5b10761f.js → 1593-d845ec6e5c8de67e.js} +1 -1
  288. package/.next-prod/static/chunks/5493-83d6a5ec42d6cbb3.js +1 -0
  289. package/.next-prod/static/chunks/{700.65a02f6a597083dc.js → 700.0aaec5a3a570d182.js} +1 -1
  290. package/.next-prod/static/chunks/app/page-cc2b332242bc2c93.js +1 -0
  291. package/.next-prod/static/chunks/app/project/page-95039285184e0c74.js +25 -0
  292. package/.next-prod/static/chunks/{webpack-67d02a2a41508d41.js → webpack-0f527ee7ab644d02.js} +1 -1
  293. package/.next-prod/static/css/bbd65867698c479b.css +3 -0
  294. package/.next-prod/trace +12 -12
  295. package/.next-prod/trace-build +1 -1
  296. package/bin/postinstall.mjs +20 -0
  297. package/dist/{JupyterKernelManager-475VNVA5.mjs → JupyterKernelManager-VBKKSRVJ.mjs} +23 -2
  298. package/dist/chunk-KLV3PBIZ.mjs +427 -0
  299. package/dist/scheduledTasks.mjs +7 -2
  300. package/dist/wsServer.mjs +3 -3
  301. package/kernels/jupyter_bridge.py +162 -0
  302. package/package.json +5 -2
  303. package/server.mjs +5 -1
  304. package/.next-prod/static/chunks/5493-9f80ad2c7c9cf840.js +0 -1
  305. package/.next-prod/static/chunks/app/page-cc2bf3ca4c337090.js +0 -1
  306. package/.next-prod/static/chunks/app/project/page-b73536c67304e489.js +0 -25
  307. package/.next-prod/static/css/786ec7ade22e6269.css +0 -3
  308. package/dist/chunk-SWMKAZSL.mjs +0 -250
  309. /package/.next-prod/static/{ZA65Kd3f2tNa-NfgtOil4 → Avd2f2SegjGOElSYvrTlK}/_buildManifest.js +0 -0
  310. /package/.next-prod/static/{ZA65Kd3f2tNa-NfgtOil4 → Avd2f2SegjGOElSYvrTlK}/_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:()=>I,A0:()=>S,An:()=>V,BF:()=>E,Ct:()=>M,Eu:()=>D,Ex:()=>s,JE:()=>U,JY:()=>H,Ki:()=>y,Kk:()=>N,Kv:()=>j,LN:()=>k,Mx:()=>z,O0:()=>x,Sr:()=>F,Tb:()=>q,Ux:()=>X,Wd:()=>T,aO:()=>m,at:()=>w,ec:()=>n,eg:()=>Q,h9:()=>v,i4:()=>C,iK:()=>o,iy:()=>L,lq:()=>B,ls:()=>G,mT:()=>u,oK:()=>K,oZ:()=>O,of:()=>A,po:()=>J,tP:()=>p,th:()=>t,v4:()=>l,vI:()=>R,yw:()=>P});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"),v=(0,e.join)(i,".claude2"),w=(0,e.join)(v,"projects");function x(a){return a.replace(/[/.]/g,"-")}function y(a){return(0,e.join)(k,x(a))}function z(a){return(0,e.join)(y(a),"session.json")}function A(a){return(0,e.join)(y(a),"recent-files.json")}function B(a){return(0,e.join)(y(a),"expanded-paths.json")}function C(a){return(0,e.join)(y(a),"comments.json")}function D(a){return(0,e.join)(y(a),"services.json")}function E(a){return(0,e.join)(y(a),"note.md")}function F(a,b){return(0,e.join)(y(a),`terminal-history-${b}.jsonl`)}function G(a,b){return(0,e.join)(y(a),`terminal-output-${b}.txt`)}function H(a,b){let c=b?`terminal-env-${b}.json`:"terminal-env-global.json";return(0,e.join)(y(a),c)}function I(){return(0,e.join)(j,"terminal-aliases.json")}function J(){return(0,e.join)(j,"services.json")}function K(a){return(0,e.join)(y(a),"project-settings.json")}function L(a,b){return(0,e.join)(y(a),`terminal-bubble-order-${b}.json`)}function M(a){return(0,e.join)(q,`${a}.json`)}function N(a,b){return(0,e.join)((0,e.join)(u,x(a)),`${b}.jsonl`)}function O(a,b){return(0,e.join)((0,e.join)(w,x(a)),`${b}.jsonl`)}function P(a,b){return(0,e.join)((0,e.join)(j,"ollama-sessions",x(a)),`${b}.jsonl`)}function Q(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 R(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 S(a){(0,g.existsSync)(a)||await (0,f.mkdir)(a,{recursive:!0})}async function T(a){let b=(0,e.join)(a,"..");await S(b)}async function U(a,b){try{let b=await (0,f.readFile)(a,"utf-8");return JSON.parse(b)}catch{return b}}async function V(a,b){await T(a),await (0,f.writeFile)(a,JSON.stringify(b,null,2),"utf-8")}let W=new Map;function X(a,b){let c=(W.get(a)??Promise.resolve()).then(b),d=c.then(()=>{},()=>{});return W.set(a,d),d.then(()=>{W.get(a)===d&&W.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.oZ)(a,b);if((0,e.existsSync)(f))return m(f);let g=(0,d.yw)(a,b);if((0,e.existsSync)(g))return m(g);let h=(0,d.eg)(b);if(h&&(0,e.existsSync)(h))return await p(h)||"Untitled Session";let i=(0,d.vI)(b);return i&&(0,e.existsSync)(i)&&await r(i)||"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.oZ)(a,b);if((0,e.existsSync)(f))return await n(f);let g=(0,d.yw)(a,b);if((0,e.existsSync)(g))return await n(g);let h=(0,d.eg)(b);if(h&&(0,e.existsSync)(h))return await o(h);let i=(0,d.vI)(b);if(i&&(0,e.existsSync)(i))return await q(i)}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 ${"claude2"===b.engine?"bg-orange-500/15 text-orange-11":"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()}}};
@@ -1 +1 @@
1
- "use strict";exports.id=7284,exports.ids=[7284],exports.modules={15622:(a,b,c)=>{c.d(b,{_:()=>k});var d=c(48249),e=c(67484),f=c(44384),g=c(31172),h=c(81749),i=c(41564);function j(a,b,c){let d=(a,c)=>b[a]||c,e=[],f=null!=c?`[${c+1}] `:"",g=a.anchor.selectedText.length>200?a.anchor.selectedText.slice(0,197)+"...":a.anchor.selectedText;for(let b of(e.push(`${f}${i.A.t("review.quoteRef",{text:g})}`),e.push(i.A.t("review.commentAuthor",{author:d(a.authorId,a.author),content:a.content})),a.replies))e.push(i.A.t("review.replyAuthor",{author:d(b.authorId,b.author),content:b.content}));return e.join("\n")}function k({isOpen:a,onClose:b,comments:c,reviewTitle:k,userNameMap:m,onCommentClick:n}){let{t:o}=(0,f.Bd)(),[p,q]=(0,e.useState)(null),[r,s]=(0,e.useState)(!1);if(!a)return null;let t=[...c].sort((a,b)=>a.anchor.startOffset-b.anchor.startOffset),u=(a,b)=>m[a]||b,v=async a=>{q(a.id);try{let b=j(a,m);await navigator.clipboard.writeText(b),(0,h.oR)(o("toast.copiedComment"))}catch{(0,h.oR)(o("toast.copyFailed"),"error")}finally{q(null)}},w=async()=>{if(0!==c.length){s(!0);try{let a=function(a,b,c){if(0===a.length)return"";let d=[...a].sort((a,b)=>a.anchor.startOffset-b.anchor.startOffset),e=[i.A.t("review.reviewSummary",{title:b}),""];return d.forEach((a,b)=>{e.push(j(a,c,b)),e.push("")}),e.push(i.A.t("review.totalNComments",{count:a.length})),e.join("\n").trim()}(c,k,m);await navigator.clipboard.writeText(a),(0,h.oR)(o("toast.copiedAllComments"))}catch{(0,h.oR)(o("toast.copyFailed"),"error")}finally{s(!1)}}},x=a=>{n?.(a),b()},y=t.filter(a=>!a.closed),z=t.filter(a=>a.closed),A=(0,d.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4",onClick:b,children:(0,d.jsxs)("div",{className:"w-full max-w-2xl max-h-[80vh] bg-card border border-border rounded-lg shadow-xl flex flex-col overflow-hidden",onClick:a=>a.stopPropagation(),children:[(0,d.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-border bg-secondary",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("h2",{className:"text-sm font-semibold text-foreground",children:o("review.allCommentsTitle")}),(0,d.jsxs)("span",{className:"text-xs text-muted-foreground",children:[o("review.commentsCountBrief",{count:c.length}),z.length>0&&` (${o("review.closedCount",{count:z.length})})`]}),c.length>0&&(0,d.jsx)("button",{onClick:w,disabled:r,className:"p-1 rounded hover:bg-accent text-muted-foreground disabled:opacity-50",title:o("review.copyAllComments"),children:r?(0,d.jsx)("span",{className:"inline-block w-4 h-4 border-2 border-current border-t-transparent rounded-full animate-spin"}):(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:"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"})})})]}),(0,d.jsx)("button",{onClick:b,className:"p-1 rounded hover:bg-accent text-muted-foreground",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.jsx)("div",{className:"flex-1 overflow-y-auto p-3",children:0===c.length?(0,d.jsxs)("div",{className:"flex flex-col items-center justify-center py-12 text-muted-foreground",children:[(0,d.jsx)("div",{className:"text-2xl mb-2",children:"\uD83D\uDCAC"}),(0,d.jsx)("span",{className:"text-sm",children:o("review.noComments")})]}):(0,d.jsxs)("div",{className:"space-y-2",children:[y.map((a,b)=>(0,d.jsx)(l,{comment:a,index:b,resolveAuthor:u,copyingId:p,onCopy:v,onClick:x},a.id)),z.length>0&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("div",{className:"text-[11px] text-muted-foreground/60 pt-2 pb-1 px-1",children:o("review.closedComments",{count:z.length})}),z.map((a,b)=>(0,d.jsx)(l,{comment:a,index:y.length+b,resolveAuthor:u,copyingId:p,onCopy:v,onClick:x,closed:!0},a.id))]})]})})]})});return(0,d.jsx)(g.Z,{children:A})}function l({comment:a,index:b,resolveAuthor:c,copyingId:e,onCopy:f,onClick:g,closed:h}){let j=a.anchor.selectedText.length>100?a.anchor.selectedText.slice(0,97)+"...":a.anchor.selectedText;return(0,d.jsxs)("div",{className:`rounded-lg border border-border hover:border-muted-foreground/30 transition-all cursor-pointer group ${h?"opacity-50":""}`,onClick:()=>g(a.id),children:[(0,d.jsx)("div",{className:"px-3 pt-2.5 pb-1",children:(0,d.jsx)("div",{className:"text-xs bg-yellow-500/10 border-l-2 border-yellow-500 px-2 py-1 rounded-r text-muted-foreground truncate",children:j})}),(0,d.jsxs)("div",{className:"px-3 pt-1.5 pb-2 flex items-start gap-2",children:[(0,d.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 mb-0.5",children:[(0,d.jsx)("span",{className:"w-4 h-4 rounded-full bg-brand/20 text-brand flex items-center justify-center text-[9px] font-bold flex-shrink-0",children:c(a.authorId,a.author).charAt(0)}),(0,d.jsx)("span",{className:"text-xs font-medium",children:c(a.authorId,a.author)}),(0,d.jsx)("span",{className:"text-[10px] text-muted-foreground",children:new Date(a.createdAt).toLocaleString("zh-CN",{month:"numeric",day:"numeric",hour:"2-digit",minute:"2-digit"})}),h&&(0,d.jsx)("span",{className:"text-[10px] text-muted-foreground/60",children:i.A.t("review.closedLabel")})]}),(0,d.jsx)("p",{className:"text-sm text-foreground line-clamp-2 pl-6",children:a.content}),a.replies.length>0&&(0,d.jsxs)("div",{className:"pl-6 mt-1 space-y-0.5",children:[a.replies.slice(0,3).map(a=>(0,d.jsxs)("div",{className:"text-xs text-muted-foreground truncate",children:[(0,d.jsx)("span",{className:"font-medium",children:c(a.authorId,a.author)}),": ",a.content]},a.id)),a.replies.length>3&&(0,d.jsx)("div",{className:"text-[10px] text-muted-foreground/60",children:i.A.t("review.moreReplies",{count:a.replies.length-3})})]})]}),(0,d.jsx)("button",{onClick:b=>{b.stopPropagation(),f(a)},disabled:e===a.id,className:"p-1 rounded opacity-0 group-hover:opacity-100 hover:bg-accent text-muted-foreground transition-opacity disabled:opacity-50 flex-shrink-0 mt-0.5",title:i.A.t("review.copyComment"),children:e===a.id?(0,d.jsx)("span",{className:"inline-block w-4 h-4 border-2 border-current border-t-transparent rounded-full animate-spin"}):(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:"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"})})})]})]})}},30068:(a,b,c)=>{c.d(b,{l:()=>h});var d=c(48249),e=c(67484),f=c(44384),g=c(69005);function h({content:a,containerRef:b,width:c="w-80"}){let{t:h}=(0,f.Bd)(),i=(0,e.useMemo)(()=>(function(a){let b=[],c=a.split("\n"),d=!1;for(let a=0;a<c.length;a++){let e=c[a];if(e.trimStart().startsWith("```")){d=!d;continue}if(d)continue;let f=/^(#{1,6})\s+(.+)$/.exec(e);f&&b.push({level:f[1].length,text:f[2].replace(/\s*#+\s*$/,""),sourceLine:a+1})}return b})(a),[a]),[j,k]=(0,e.useState)(!1),[l,m]=(0,e.useState)(null),n=(0,e.useCallback)(a=>{let c=b.current;if(!c)return;let d=c.querySelector(`h1[data-source-start="${a}"], h2[data-source-start="${a}"], h3[data-source-start="${a}"], h4[data-source-start="${a}"], h5[data-source-start="${a}"], h6[data-source-start="${a}"]`);d&&d.scrollIntoView({behavior:"smooth",block:"start"})},[b]);return 0===i.length?null:(0,d.jsxs)("div",{className:`border-r border-border flex-shrink-0 flex flex-col transition-[width] duration-200 ${j?"w-8":c}`,children:[(0,d.jsxs)("div",{className:"flex items-center justify-between px-2 py-1.5 border-b border-border flex-shrink-0",children:[!j&&(0,d.jsx)("span",{className:"text-xs font-medium text-muted-foreground",children:h("editor.toc")}),(0,d.jsx)("button",{onClick:()=>k(a=>!a),className:"p-0.5 text-muted-foreground hover:text-foreground hover:bg-accent rounded transition-colors",title:h(j?"editor.expandToc":"editor.collapseToc"),children:(0,d.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:j?(0,d.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"}):(0,d.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 19l-7-7 7-7"})})})]}),!j&&(0,d.jsx)("nav",{className:"flex-1 overflow-y-auto py-1",children:i.map((a,b)=>(0,d.jsx)(g.m,{content:a.text,delay:400,children:(0,d.jsx)("button",{onClick:()=>n(a.sourceLine),className:`block w-full text-left text-sm py-1 px-2 truncate transition-colors hover:bg-accent ${l===a.sourceLine?"text-brand font-medium bg-brand/5":"text-muted-foreground"}`,style:{paddingLeft:`${(a.level-1)*12+8}px`},children:a.text})},b))})]})}},31172:(a,b,c)=>{c.d(b,{Z:()=>i});var d=c(67484),e=c(74429);let f=()=>()=>{},g=()=>document.body,h=()=>null;function i({children:a}){let b=(0,d.useSyncExternalStore)(f,g,h);return b?(0,e.createPortal)(a,b):null}},44741:(a,b,c)=>{c.d(b,{T:()=>z});var d=c(48249),e=c(98051),f=c(38368),g=c(33972),h=c(10841),i=c(99773),j=c(61003);c(55583),c(87023);var k=c(50757),l=c(27454),m=c(37752),n=c(67484),o=c(3532),p=c(74429),q=c(44384);function r({code:a,isDark:b}){let{t:c}=(0,q.Bd)(),[e,f]=(0,n.useState)("diagram"),[g,h]=(0,n.useState)(null),[i,j]=(0,n.useState)(null),[o,r]=(0,n.useState)(!1);return(0,n.useRef)(0),(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"my-3 rounded-lg border border-border overflow-hidden",children:[(0,d.jsxs)("div",{className:"flex items-center justify-end gap-1 px-3 py-1.5 border-b border-border",children:[(0,d.jsxs)(s,{active:"diagram"===e,onClick:()=>f("diagram"),children:[(0,d.jsx)("span",{className:"text-xs",children:"\uD83D\uDCCA"})," ",c("mermaid.chart")]}),(0,d.jsxs)(s,{active:"code"===e,onClick:()=>f("code"),children:[(0,d.jsx)("span",{className:"text-xs opacity-70",children:"</>"})," ",c("mermaid.code")]})]}),"diagram"===e?(0,d.jsx)("div",{className:"p-4",children:i?(0,d.jsxs)("div",{className:"flex items-start gap-2 p-3 rounded bg-red-500/10 border border-red-500/20 text-red-400 text-sm",children:[(0,d.jsx)("span",{className:"flex-shrink-0 mt-0.5",children:"⚠️"}),(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"font-medium mb-1",children:c("mermaid.renderFailed")}),(0,d.jsx)("pre",{className:"text-xs opacity-80 whitespace-pre-wrap break-all",children:i})]})]}):g?(0,d.jsx)("div",{className:"mermaid-preview cursor-pointer hover:opacity-90 transition-opacity [&>svg]:max-w-full [&>svg]:max-h-[300px] [&>svg]:mx-auto",onClick:()=>r(!0),title:c("mermaid.clickToEnlarge"),dangerouslySetInnerHTML:{__html:g}}):(0,d.jsx)("div",{className:"flex items-center justify-center py-6 text-muted-foreground text-sm",children:c("mermaid.rendering")})}):(0,d.jsx)(k.A,{style:b?l.A:m.A,language:"mermaid",PreTag:"div",customStyle:{margin:0,borderRadius:0,fontSize:"0.875rem"},children:a})]}),o&&g&&(0,p.createPortal)((0,d.jsx)(t,{svgHtml:g,onClose:()=>r(!1)}),document.body)]})}function s({active:a,onClick:b,children:c}){return(0,d.jsx)("button",{onClick:b,className:`flex items-center gap-1.5 px-2.5 py-1 text-xs rounded transition-colors ${a?"bg-accent text-foreground":"text-muted-foreground hover:text-foreground hover:bg-accent"}`,children:c})}function t({svgHtml:a,onClose:b}){let{t:c}=(0,q.Bd)();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-[96vw] h-[94vh] flex flex-col overflow-hidden",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between px-4 py-2.5 border-b border-border flex-shrink-0",children:[(0,d.jsx)("h3",{className:"text-sm font-medium text-foreground",children:c("mermaid.mermaidChart")}),(0,d.jsx)("button",{onClick:b,className:"p-1 text-muted-foreground hover:text-foreground hover:bg-accent rounded transition-colors",title:c("mermaid.closeEsc"),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.jsx)("div",{className:"flex-1 min-h-0 flex items-center justify-center p-6",children:(0,d.jsx)("div",{className:"w-full h-full flex items-center justify-center [&>svg]:max-w-full [&>svg]:max-h-full",dangerouslySetInnerHTML:{__html:a}})})]})]})}let u=[f.A,g.A,h.jb],v=[i.A,j.A];function w(a){return a.replace(/^(\|.+\|)$/gm,a=>/^\|[\s:|-]+\|$/.test(a)?a:a.replace(/`([^`]*)`/g,(a,b)=>b.includes("|")?"`"+b.replace(/\|/g,"\\|")+"`":a))}function x(a){return a.replace(/\$(\d)/g,"\\$$1")}function y(a,b){return{code({className:c,children:e,node:f,...g}){let h=/language-(\w+)/.exec(c||""),i=String(e);if(!h&&!c&&!i.includes("\n"))return(0,d.jsx)("code",{className:"px-1.5 py-0.5 mx-0.5 rounded bg-accent text-sm font-mono",...g,children:e});let j=String(e).replace(/\n$/,""),n=h?.[1]||"text";if("mermaid"===n&&!b)return(0,d.jsx)(r,{code:j,isDark:a});let o=Number(g["data-source-start"])||0,p=o?o+1:0,q=0;return(0,d.jsx)(k.A,{style:a?l.A:m.A,language:n,PreTag:"div",customStyle:{margin:"0.75rem 0",borderRadius:"0.375rem",fontSize:"0.875rem"},wrapLines:!0,lineProps:()=>{let a=p+q;return q++,{"data-source-start":a,"data-source-end":a,style:{display:"block"}}},children:j})},p:({children:a,node:b,...c})=>(0,d.jsx)("p",{className:"mb-3 last:mb-0",...c,children:a}),h1:({children:a,node:b,...c})=>(0,d.jsx)("h1",{className:"text-xl font-bold mb-3 mt-4 first:mt-0",...c,children:a}),h2:({children:a,node:b,...c})=>(0,d.jsx)("h2",{className:"text-lg font-bold mb-2 mt-3 first:mt-0",...c,children:a}),h3:({children:a,node:b,...c})=>(0,d.jsx)("h3",{className:"text-base font-bold mb-2 mt-3 first:mt-0",...c,children:a}),ul:({children:a,node:b,...c})=>(0,d.jsx)("ul",{className:"list-disc list-inside mb-3 space-y-1",...c,children:a}),ol:({children:a,node:b,...c})=>(0,d.jsx)("ol",{className:"list-decimal list-inside mb-3 space-y-1",...c,children:a}),li:({children:a,node:b,...c})=>(0,d.jsx)("li",{className:"leading-relaxed",...c,children:a}),blockquote:({children:a,node:b,...c})=>(0,d.jsx)("blockquote",{className:"border-l-4 border-border pl-4 my-3 italic text-muted-foreground",...c,children:a}),a:({href:a,children:b,node:c,...e})=>(0,d.jsx)("a",{href:a,target:"_blank",rel:"noopener noreferrer",className:"text-brand hover:underline",...e,children:b}),table:({children:a,node:b,...c})=>(0,d.jsx)("div",{className:"overflow-x-auto my-3",...c,children:(0,d.jsx)("table",{className:"min-w-full border border-border",children:a})}),thead:({children:a,node:b,...c})=>(0,d.jsx)("thead",{className:"bg-accent",...c,children:a}),th:({children:a,node:b,...c})=>(0,d.jsx)("th",{className:"px-4 py-2 text-left font-semibold border-b border-border",...c,children:a}),td:({children:a,node:b,...c})=>(0,d.jsx)("td",{className:"px-4 py-2 border-b border-border",...c,children:a}),hr:({node:a,...b})=>(0,d.jsx)("hr",{className:"my-4 border-border",...b}),img:({src:a,alt:b,node:c,height:e,width:f,style:g,...h})=>{if(!(e||f||g))return(0,d.jsx)("img",{src:a,alt:b||"",className:"max-w-full h-auto rounded-lg my-3",...h});let i=a=>a?/^\d+$/.test(String(a))?`${a}px`:String(a):void 0,j={...g,height:i(e)??g?.height,width:i(f)??g?.width};return(0,d.jsx)("img",{src:a,alt:b||"",style:j,className:"inline-block align-middle",...h})},strong:({children:a,node:b,...c})=>(0,d.jsx)("strong",{className:"font-bold",...c,children:a}),em:({children:a,node:b,...c})=>(0,d.jsx)("em",{className:"italic",...c,children:a}),del:({children:a,node:b,...c})=>(0,d.jsx)("del",{className:"line-through",...c,children:a})}}let z=(0,n.memo)(function({content:a,isUser:b=!1,isStreaming:c=!1,rehypePlugins:f}){let{resolvedTheme:g}=(0,o.D)(),h="dark"===g,i=(0,n.useMemo)(()=>y(h),[h]),j=(0,n.useMemo)(()=>y(h,!0),[h]),k=(0,n.useMemo)(()=>b||c?a:x(w(!function(a){if(/^\|[\s:|-]+\|$/m.test(a))return!1;if(/[┌┐└┘│─├┤┬┴┼╔╗╚╝║═╭╮╯╰▲▼◀▶△▽◁▷]/.test(a)||/\+[-=]{2,}\+/.test(a))return!0;let b=a.split("\n").filter(a=>/^\s*\||\|\s*$/.test(a));if(b.length>=3){let a=b.map(a=>(a.match(/\|/g)||[]).length);return!a.every(b=>b===a[0])||!(a[0]>=3)}return!1}(a)||/^```[\s\S]*```$/m.test(a.trim())?a:"```text\n"+a.trim()+"\n```")),[a,b,c]),l=(0,n.useMemo)(()=>f?.length?[...v,...f]:v,[f]);if(b)return(0,d.jsx)("div",{className:"whitespace-pre-wrap break-words",children:a});if(c){let b=a.lastIndexOf("\n");if(-1===b)return(0,d.jsx)("div",{className:"whitespace-pre-wrap break-words",children:a});let c=a.slice(0,b+1),f=a.slice(b+1);return(0,d.jsxs)("div",{className:"markdown-body",children:[(0,d.jsx)(e.oz,{remarkPlugins:u,rehypePlugins:v,components:j,children:x(w(c))}),f&&(0,d.jsx)("span",{className:"whitespace-pre-wrap",children:f})]})}return(0,d.jsx)("div",{className:"markdown-body",children:(0,d.jsx)(e.oz,{remarkPlugins:u,rehypePlugins:l,components:i,children:k})})})},69005:(a,b,c)=>{c.d(b,{m:()=>g});var d=c(48249),e=c(67484),f=c(74429);function g({content:a,children:b,delay:c=300,className:g=""}){let[h,i]=(0,e.useState)(!1),[j,k]=(0,e.useState)({top:0,left:0}),l=(0,e.useRef)(null),m=(0,e.useRef)({x:0,y:0}),n=(0,e.useRef)(null);return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("div",{onMouseEnter:()=>{l.current=setTimeout(()=>{let{x:a,y:b}=m.current;k({top:b+12,left:a}),i(!0)},c)},onMouseMove:a=>{m.current={x:a.clientX,y:a.clientY}},onMouseLeave:()=>{l.current&&(clearTimeout(l.current),l.current=null),i(!1)},className:g,children:b}),h&&(0,f.createPortal)((0,d.jsx)("div",{ref:n,className:"fixed z-[9999] px-2 py-1 text-xs text-foreground bg-accent rounded shadow-lg max-w-md break-words pointer-events-none",style:{top:j.top,left:j.left},children:a}),document.body)]})}},90500:(a,b,c)=>{c.d(b,{W:()=>f});var d=c(50300);let e=new Set(["p","h1","h2","h3","h4","h5","h6","li","blockquote","pre","table","tr","hr","div","ul","ol"]);function f(){return a=>{(0,d.YR)(a,"element",a=>{if(e.has(a.tagName)&&a.position&&(a.properties||(a.properties={}),a.properties["data-source-start"]=a.position.start.line,a.properties["data-source-end"]=a.position.end.line,"pre"===a.tagName)){let b=a.children?.find(a=>"element"===a.type&&"code"===a.tagName);b&&(b.properties||(b.properties={}),b.properties["data-source-start"]=a.position.start.line,b.properties["data-source-end"]=a.position.end.line)}})}}}};
1
+ "use strict";exports.id=7284,exports.ids=[7284],exports.modules={15622:(a,b,c)=>{c.d(b,{_:()=>k});var d=c(48249),e=c(67484),f=c(44384),g=c(31172),h=c(81749),i=c(41564);function j(a,b,c){let d=(a,c)=>b[a]||c,e=[],f=null!=c?`[${c+1}] `:"",g=a.anchor.selectedText.length>200?a.anchor.selectedText.slice(0,197)+"...":a.anchor.selectedText;for(let b of(e.push(`${f}${i.A.t("review.quoteRef",{text:g})}`),e.push(i.A.t("review.commentAuthor",{author:d(a.authorId,a.author),content:a.content})),a.replies))e.push(i.A.t("review.replyAuthor",{author:d(b.authorId,b.author),content:b.content}));return e.join("\n")}function k({isOpen:a,onClose:b,comments:c,reviewTitle:k,userNameMap:m,onCommentClick:n}){let{t:o}=(0,f.Bd)(),[p,q]=(0,e.useState)(null),[r,s]=(0,e.useState)(!1);if(!a)return null;let t=[...c].sort((a,b)=>a.anchor.startOffset-b.anchor.startOffset),u=(a,b)=>m[a]||b,v=async a=>{q(a.id);try{let b=j(a,m);await navigator.clipboard.writeText(b),(0,h.oR)(o("toast.copiedComment"))}catch{(0,h.oR)(o("toast.copyFailed"),"error")}finally{q(null)}},w=async()=>{if(0!==c.length){s(!0);try{let a=function(a,b,c){if(0===a.length)return"";let d=[...a].sort((a,b)=>a.anchor.startOffset-b.anchor.startOffset),e=[i.A.t("review.reviewSummary",{title:b}),""];return d.forEach((a,b)=>{e.push(j(a,c,b)),e.push("")}),e.push(i.A.t("review.totalNComments",{count:a.length})),e.join("\n").trim()}(c,k,m);await navigator.clipboard.writeText(a),(0,h.oR)(o("toast.copiedAllComments"))}catch{(0,h.oR)(o("toast.copyFailed"),"error")}finally{s(!1)}}},x=a=>{n?.(a),b()},y=t.filter(a=>!a.closed),z=t.filter(a=>a.closed),A=(0,d.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4",onClick:b,children:(0,d.jsxs)("div",{className:"w-full max-w-2xl max-h-[80vh] bg-card border border-border rounded-lg shadow-xl flex flex-col overflow-hidden",onClick:a=>a.stopPropagation(),children:[(0,d.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-border bg-secondary",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("h2",{className:"text-sm font-semibold text-foreground",children:o("review.allCommentsTitle")}),(0,d.jsxs)("span",{className:"text-xs text-muted-foreground",children:[o("review.commentsCountBrief",{count:c.length}),z.length>0&&` (${o("review.closedCount",{count:z.length})})`]}),c.length>0&&(0,d.jsx)("button",{onClick:w,disabled:r,className:"p-1 rounded hover:bg-accent text-muted-foreground disabled:opacity-50",title:o("review.copyAllComments"),children:r?(0,d.jsx)("span",{className:"inline-block w-4 h-4 border-2 border-current border-t-transparent rounded-full animate-spin"}):(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:"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"})})})]}),(0,d.jsx)("button",{onClick:b,className:"p-1 rounded hover:bg-accent text-muted-foreground",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.jsx)("div",{className:"flex-1 overflow-y-auto p-3",children:0===c.length?(0,d.jsxs)("div",{className:"flex flex-col items-center justify-center py-12 text-muted-foreground",children:[(0,d.jsx)("div",{className:"text-2xl mb-2",children:"\uD83D\uDCAC"}),(0,d.jsx)("span",{className:"text-sm",children:o("review.noComments")})]}):(0,d.jsxs)("div",{className:"space-y-2",children:[y.map((a,b)=>(0,d.jsx)(l,{comment:a,index:b,resolveAuthor:u,copyingId:p,onCopy:v,onClick:x},a.id)),z.length>0&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("div",{className:"text-[11px] text-muted-foreground/60 pt-2 pb-1 px-1",children:o("review.closedComments",{count:z.length})}),z.map((a,b)=>(0,d.jsx)(l,{comment:a,index:y.length+b,resolveAuthor:u,copyingId:p,onCopy:v,onClick:x,closed:!0},a.id))]})]})})]})});return(0,d.jsx)(g.Z,{children:A})}function l({comment:a,index:b,resolveAuthor:c,copyingId:e,onCopy:f,onClick:g,closed:h}){let j=a.anchor.selectedText.length>100?a.anchor.selectedText.slice(0,97)+"...":a.anchor.selectedText;return(0,d.jsxs)("div",{className:`rounded-lg border border-border hover:border-muted-foreground/30 transition-all cursor-pointer group ${h?"opacity-50":""}`,onClick:()=>g(a.id),children:[(0,d.jsx)("div",{className:"px-3 pt-2.5 pb-1",children:(0,d.jsx)("div",{className:"text-xs bg-yellow-500/10 border-l-2 border-yellow-500 px-2 py-1 rounded-r text-muted-foreground truncate",children:j})}),(0,d.jsxs)("div",{className:"px-3 pt-1.5 pb-2 flex items-start gap-2",children:[(0,d.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 mb-0.5",children:[(0,d.jsx)("span",{className:"w-4 h-4 rounded-full bg-brand/20 text-brand flex items-center justify-center text-[9px] font-bold flex-shrink-0",children:c(a.authorId,a.author).charAt(0)}),(0,d.jsx)("span",{className:"text-xs font-medium",children:c(a.authorId,a.author)}),(0,d.jsx)("span",{className:"text-[10px] text-muted-foreground",children:new Date(a.createdAt).toLocaleString("zh-CN",{month:"numeric",day:"numeric",hour:"2-digit",minute:"2-digit"})}),h&&(0,d.jsx)("span",{className:"text-[10px] text-muted-foreground/60",children:i.A.t("review.closedLabel")})]}),(0,d.jsx)("p",{className:"text-sm text-foreground line-clamp-2 pl-6",children:a.content}),a.replies.length>0&&(0,d.jsxs)("div",{className:"pl-6 mt-1 space-y-0.5",children:[a.replies.slice(0,3).map(a=>(0,d.jsxs)("div",{className:"text-xs text-muted-foreground truncate",children:[(0,d.jsx)("span",{className:"font-medium",children:c(a.authorId,a.author)}),": ",a.content]},a.id)),a.replies.length>3&&(0,d.jsx)("div",{className:"text-[10px] text-muted-foreground/60",children:i.A.t("review.moreReplies",{count:a.replies.length-3})})]})]}),(0,d.jsx)("button",{onClick:b=>{b.stopPropagation(),f(a)},disabled:e===a.id,className:"p-1 rounded opacity-0 group-hover:opacity-100 hover:bg-accent text-muted-foreground transition-opacity disabled:opacity-50 flex-shrink-0 mt-0.5",title:i.A.t("review.copyComment"),children:e===a.id?(0,d.jsx)("span",{className:"inline-block w-4 h-4 border-2 border-current border-t-transparent rounded-full animate-spin"}):(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:"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"})})})]})]})}},30068:(a,b,c)=>{c.d(b,{l:()=>h});var d=c(48249),e=c(67484),f=c(44384),g=c(69005);function h({content:a,containerRef:b,width:c="w-80"}){let{t:h}=(0,f.Bd)(),i=(0,e.useMemo)(()=>(function(a){let b=[],c=a.split("\n"),d=!1;for(let a=0;a<c.length;a++){let e=c[a];if(e.trimStart().startsWith("```")){d=!d;continue}if(d)continue;let f=/^(#{1,6})\s+(.+)$/.exec(e);f&&b.push({level:f[1].length,text:f[2].replace(/\s*#+\s*$/,""),sourceLine:a+1})}return b})(a),[a]),[j,k]=(0,e.useState)(!1),[l,m]=(0,e.useState)(null),n=(0,e.useCallback)(a=>{let c=b.current;if(!c)return;let d=c.querySelector(`h1[data-source-start="${a}"], h2[data-source-start="${a}"], h3[data-source-start="${a}"], h4[data-source-start="${a}"], h5[data-source-start="${a}"], h6[data-source-start="${a}"]`);d&&d.scrollIntoView({behavior:"smooth",block:"start"})},[b]);return 0===i.length?null:(0,d.jsxs)("div",{className:`border-r border-border flex-shrink-0 flex flex-col transition-[width] duration-200 ${j?"w-8":c}`,children:[(0,d.jsxs)("div",{className:"flex items-center justify-between px-2 py-1.5 border-b border-border flex-shrink-0",children:[!j&&(0,d.jsx)("span",{className:"text-xs font-medium text-muted-foreground",children:h("editor.toc")}),(0,d.jsx)("button",{onClick:()=>k(a=>!a),className:"p-0.5 text-muted-foreground hover:text-foreground hover:bg-accent rounded transition-colors",title:h(j?"editor.expandToc":"editor.collapseToc"),children:(0,d.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:j?(0,d.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"}):(0,d.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 19l-7-7 7-7"})})})]}),!j&&(0,d.jsx)("nav",{className:"flex-1 overflow-y-auto py-1",children:i.map((a,b)=>(0,d.jsx)(g.m,{content:a.text,delay:400,children:(0,d.jsx)("button",{onClick:()=>n(a.sourceLine),className:`block w-full text-left text-sm py-1 px-2 truncate transition-colors hover:bg-accent ${l===a.sourceLine?"text-brand font-medium bg-brand/5":"text-muted-foreground"}`,style:{paddingLeft:`${(a.level-1)*12+8}px`},children:a.text})},b))})]})}},31172:(a,b,c)=>{c.d(b,{Z:()=>i});var d=c(67484),e=c(74429);let f=()=>()=>{},g=()=>document.body,h=()=>null;function i({children:a}){let b=(0,d.useSyncExternalStore)(f,g,h);return b?(0,e.createPortal)(a,b):null}},44741:(a,b,c)=>{c.d(b,{T:()=>B});var d=c(48249),e=c(98051),f=c(38368),g=c(33972),h=c(10841),i=c(99773),j=c(61003);c(55583),c(87023);var k=c(50757),l=c(27454),m=c(37752),n=c(67484),o=c(3532),p=c(74429),q=c(44384);function r({code:a,isDark:b}){let{t:c}=(0,q.Bd)(),[e,f]=(0,n.useState)("diagram"),[g,h]=(0,n.useState)(null),[i,j]=(0,n.useState)(null),[o,r]=(0,n.useState)(!1);return(0,n.useRef)(0),(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"my-3 rounded-lg border border-border overflow-hidden",children:[(0,d.jsxs)("div",{className:"flex items-center justify-end gap-1 px-3 py-1.5 border-b border-border",children:[(0,d.jsxs)(s,{active:"diagram"===e,onClick:()=>f("diagram"),children:[(0,d.jsx)("span",{className:"text-xs",children:"\uD83D\uDCCA"})," ",c("mermaid.chart")]}),(0,d.jsxs)(s,{active:"code"===e,onClick:()=>f("code"),children:[(0,d.jsx)("span",{className:"text-xs opacity-70",children:"</>"})," ",c("mermaid.code")]})]}),"diagram"===e?(0,d.jsx)("div",{className:"p-4",children:i?(0,d.jsxs)("div",{className:"flex items-start gap-2 p-3 rounded bg-red-500/10 border border-red-500/20 text-red-400 text-sm",children:[(0,d.jsx)("span",{className:"flex-shrink-0 mt-0.5",children:"⚠️"}),(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"font-medium mb-1",children:c("mermaid.renderFailed")}),(0,d.jsx)("pre",{className:"text-xs opacity-80 whitespace-pre-wrap break-all",children:i})]})]}):g?(0,d.jsx)("div",{className:"mermaid-preview cursor-pointer hover:opacity-90 transition-opacity [&>svg]:max-w-full [&>svg]:max-h-[300px] [&>svg]:mx-auto",onClick:()=>r(!0),title:c("mermaid.clickToEnlarge"),dangerouslySetInnerHTML:{__html:g}}):(0,d.jsx)("div",{className:"flex items-center justify-center py-6 text-muted-foreground text-sm",children:c("mermaid.rendering")})}):(0,d.jsx)(k.A,{style:b?l.A:m.A,language:"mermaid",PreTag:"div",customStyle:{margin:0,borderRadius:0,fontSize:"0.875rem"},children:a})]}),o&&g&&(0,p.createPortal)((0,d.jsx)(t,{svgHtml:g,onClose:()=>r(!1)}),document.body)]})}function s({active:a,onClick:b,children:c}){return(0,d.jsx)("button",{onClick:b,className:`flex items-center gap-1.5 px-2.5 py-1 text-xs rounded transition-colors ${a?"bg-accent text-foreground":"text-muted-foreground hover:text-foreground hover:bg-accent"}`,children:c})}function t({svgHtml:a,onClose:b}){let{t:c}=(0,q.Bd)();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-[96vw] h-[94vh] flex flex-col overflow-hidden",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between px-4 py-2.5 border-b border-border flex-shrink-0",children:[(0,d.jsx)("h3",{className:"text-sm font-medium text-foreground",children:c("mermaid.mermaidChart")}),(0,d.jsx)("button",{onClick:b,className:"p-1 text-muted-foreground hover:text-foreground hover:bg-accent rounded transition-colors",title:c("mermaid.closeEsc"),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.jsx)("div",{className:"flex-1 min-h-0 flex items-center justify-center p-6",children:(0,d.jsx)("div",{className:"w-full h-full flex items-center justify-center [&>svg]:max-w-full [&>svg]:max-h-full",dangerouslySetInnerHTML:{__html:a}})})]})]})}let u=[f.A,g.A,h.jb],v=[f.A,h.jb],w=[i.A,j.A],x=[i.A];function y(a){return a.replace(/^(\|.+\|)$/gm,a=>/^\|[\s:|-]+\|$/.test(a)?a:a.replace(/`([^`]*)`/g,(a,b)=>b.includes("|")?"`"+b.replace(/\|/g,"\\|")+"`":a))}function z(a){return a.replace(/\$(\d)/g,"\\$$1")}function A(a,b){return{code({className:c,children:e,node:f,...g}){let h=/language-(\w+)/.exec(c||""),i=String(e);if(!h&&!c&&!i.includes("\n"))return(0,d.jsx)("code",{className:"px-1.5 py-0.5 mx-0.5 rounded bg-accent text-sm font-mono",...g,children:e});let j=String(e).replace(/\n$/,""),n=h?.[1]||"text";if("mermaid"===n&&!b)return(0,d.jsx)(r,{code:j,isDark:a});let o=Number(g["data-source-start"])||0,p=o?o+1:0,q=0;return(0,d.jsx)(k.A,{style:a?l.A:m.A,language:n,PreTag:"div",customStyle:{margin:"0.75rem 0",borderRadius:"0.375rem",fontSize:"0.875rem"},wrapLines:!0,lineProps:()=>{let a=p+q;return q++,{"data-source-start":a,"data-source-end":a,style:{display:"block"}}},children:j})},p:({children:a,node:b,...c})=>(0,d.jsx)("p",{className:"mb-3 last:mb-0",...c,children:a}),h1:({children:a,node:b,...c})=>(0,d.jsx)("h1",{className:"text-xl font-bold mb-3 mt-4 first:mt-0",...c,children:a}),h2:({children:a,node:b,...c})=>(0,d.jsx)("h2",{className:"text-lg font-bold mb-2 mt-3 first:mt-0",...c,children:a}),h3:({children:a,node:b,...c})=>(0,d.jsx)("h3",{className:"text-base font-bold mb-2 mt-3 first:mt-0",...c,children:a}),ul:({children:a,node:b,...c})=>(0,d.jsx)("ul",{className:"list-disc list-inside mb-3 space-y-1",...c,children:a}),ol:({children:a,node:b,...c})=>(0,d.jsx)("ol",{className:"list-decimal list-inside mb-3 space-y-1",...c,children:a}),li:({children:a,node:b,...c})=>(0,d.jsx)("li",{className:"leading-relaxed",...c,children:a}),blockquote:({children:a,node:b,...c})=>(0,d.jsx)("blockquote",{className:"border-l-4 border-border pl-4 my-3 italic text-muted-foreground",...c,children:a}),a:({href:a,children:b,node:c,...e})=>(0,d.jsx)("a",{href:a,target:"_blank",rel:"noopener noreferrer",className:"text-brand hover:underline",...e,children:b}),table:({children:a,node:b,...c})=>(0,d.jsx)("div",{className:"overflow-x-auto my-3",...c,children:(0,d.jsx)("table",{className:"min-w-full border border-border",children:a})}),thead:({children:a,node:b,...c})=>(0,d.jsx)("thead",{className:"bg-accent",...c,children:a}),th:({children:a,node:b,...c})=>(0,d.jsx)("th",{className:"px-4 py-2 text-left font-semibold border-b border-border",...c,children:a}),td:({children:a,node:b,...c})=>(0,d.jsx)("td",{className:"px-4 py-2 border-b border-border",...c,children:a}),hr:({node:a,...b})=>(0,d.jsx)("hr",{className:"my-4 border-border",...b}),img:({src:a,alt:b,node:c,height:e,width:f,style:g,...h})=>{if(!(e||f||g))return(0,d.jsx)("img",{src:a,alt:b||"",className:"max-w-full h-auto rounded-lg my-3",...h});let i=a=>a?/^\d+$/.test(String(a))?`${a}px`:String(a):void 0,j={...g,height:i(e)??g?.height,width:i(f)??g?.width};return(0,d.jsx)("img",{src:a,alt:b||"",style:j,className:"inline-block align-middle",...h})},strong:({children:a,node:b,...c})=>(0,d.jsx)("strong",{className:"font-bold",...c,children:a}),em:({children:a,node:b,...c})=>(0,d.jsx)("em",{className:"italic",...c,children:a}),del:({children:a,node:b,...c})=>(0,d.jsx)("del",{className:"line-through",...c,children:a})}}let B=(0,n.memo)(function({content:a,isUser:b=!1,isStreaming:c=!1,enableMath:f=!0,rehypePlugins:g}){let{resolvedTheme:h}=(0,o.D)(),i="dark"===h,j=(0,n.useMemo)(()=>A(i),[i]),k=(0,n.useMemo)(()=>A(i,!0),[i]),l=f?u:v,m=f?w:x,p=(0,n.useMemo)(()=>{if(b||c)return a;let d=y(!function(a){if(/^\|[\s:|-]+\|$/m.test(a))return!1;if(/[┌┐└┘│─├┤┬┴┼╔╗╚╝║═╭╮╯╰▲▼◀▶△▽◁▷]/.test(a)||/\+[-=]{2,}\+/.test(a))return!0;let b=a.split("\n").filter(a=>/^\s*\||\|\s*$/.test(a));if(b.length>=3){let a=b.map(a=>(a.match(/\|/g)||[]).length);return!a.every(b=>b===a[0])||!(a[0]>=3)}return!1}(a)||/^```[\s\S]*```$/m.test(a.trim())?a:"```text\n"+a.trim()+"\n```");return f?z(d):d},[a,b,c,f]),q=(0,n.useMemo)(()=>g?.length?[...m,...g]:m,[g,m]);if(b)return(0,d.jsx)("div",{className:"whitespace-pre-wrap break-words",children:a});if(c){let b=a.lastIndexOf("\n");if(-1===b)return(0,d.jsx)("div",{className:"whitespace-pre-wrap break-words",children:a});let c=a.slice(0,b+1),g=a.slice(b+1);return(0,d.jsxs)("div",{className:"markdown-body",children:[(0,d.jsx)(e.oz,{remarkPlugins:l,rehypePlugins:m,components:k,children:f?z(y(c)):y(c)}),g&&(0,d.jsx)("span",{className:"whitespace-pre-wrap",children:g})]})}return(0,d.jsx)("div",{className:"markdown-body",children:(0,d.jsx)(e.oz,{remarkPlugins:l,rehypePlugins:q,components:j,children:p})})})},69005:(a,b,c)=>{c.d(b,{m:()=>g});var d=c(48249),e=c(67484),f=c(74429);function g({content:a,children:b,delay:c=300,className:g=""}){let[h,i]=(0,e.useState)(!1),[j,k]=(0,e.useState)({top:0,left:0}),l=(0,e.useRef)(null),m=(0,e.useRef)({x:0,y:0}),n=(0,e.useRef)(null);return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("div",{onMouseEnter:()=>{l.current=setTimeout(()=>{let{x:a,y:b}=m.current;k({top:b+12,left:a}),i(!0)},c)},onMouseMove:a=>{m.current={x:a.clientX,y:a.clientY}},onMouseLeave:()=>{l.current&&(clearTimeout(l.current),l.current=null),i(!1)},className:g,children:b}),h&&(0,f.createPortal)((0,d.jsx)("div",{ref:n,className:"fixed z-[9999] px-2 py-1 text-xs text-foreground bg-accent rounded shadow-lg max-w-md break-words pointer-events-none",style:{top:j.top,left:j.left},children:a}),document.body)]})}},90500:(a,b,c)=>{c.d(b,{W:()=>f});var d=c(50300);let e=new Set(["p","h1","h2","h3","h4","h5","h6","li","blockquote","pre","table","tr","hr","div","ul","ol"]);function f(){return a=>{(0,d.YR)(a,"element",a=>{if(e.has(a.tagName)&&a.position&&(a.properties||(a.properties={}),a.properties["data-source-start"]=a.position.start.line,a.properties["data-source-end"]=a.position.end.line,"pre"===a.tagName)){let b=a.children?.find(a=>"element"===a.type&&"code"===a.tagName);b&&(b.properties||(b.properties={}),b.properties["data-source-start"]=a.position.start.line,b.properties["data-source-end"]=a.position.end.line)}})}}}};
@@ -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"];