@surething/cockpit 1.0.210 → 1.0.212

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 (540) hide show
  1. package/.next-prod/BUILD_ID +1 -1
  2. package/.next-prod/app-path-routes-manifest.json +9 -5
  3. package/.next-prod/build-manifest.json +2 -2
  4. package/.next-prod/prerender-manifest.json +3 -3
  5. package/.next-prod/routes-manifest.json +24 -0
  6. package/.next-prod/server/app/_global-error/page.js +3 -3
  7. package/.next-prod/server/app/_global-error/page.js.nft.json +1 -1
  8. package/.next-prod/server/app/_global-error/page_client-reference-manifest.js +1 -1
  9. package/.next-prod/server/app/_global-error.html +1 -1
  10. package/.next-prod/server/app/_global-error.rsc +1 -1
  11. package/.next-prod/server/app/_global-error.segments/_full.segment.rsc +1 -1
  12. package/.next-prod/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  13. package/.next-prod/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  14. package/.next-prod/server/app/_global-error.segments/_head.segment.rsc +1 -1
  15. package/.next-prod/server/app/_global-error.segments/_index.segment.rsc +1 -1
  16. package/.next-prod/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  17. package/.next-prod/server/app/_not-found/page.js +2 -2
  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 +1 -1
  21. package/.next-prod/server/app/_not-found.rsc +4 -4
  22. package/.next-prod/server/app/_not-found.segments/_full.segment.rsc +4 -4
  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 +3 -3
  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/agent/test/route.js +1 -1
  29. package/.next-prod/server/app/api/agent/test/route.js.nft.json +1 -1
  30. package/.next-prod/server/app/api/bash/route.js +1 -1
  31. package/.next-prod/server/app/api/bash/route.js.nft.json +1 -1
  32. package/.next-prod/server/app/api/chat/codex/route.js +78 -4
  33. package/.next-prod/server/app/api/chat/codex/route.js.nft.json +1 -1
  34. package/.next-prod/server/app/api/chat/deepseek/route.js +78 -4
  35. package/.next-prod/server/app/api/chat/deepseek/route.js.nft.json +1 -1
  36. package/.next-prod/server/app/api/chat/kimi/route.js +87 -13
  37. package/.next-prod/server/app/api/chat/kimi/route.js.nft.json +1 -1
  38. package/.next-prod/server/app/api/chat/ollama/route.js +89 -15
  39. package/.next-prod/server/app/api/chat/ollama/route.js.nft.json +1 -1
  40. package/.next-prod/server/app/api/chat/route.js +78 -4
  41. package/.next-prod/server/app/api/chat/route.js.nft.json +1 -1
  42. package/.next-prod/server/app/api/claude-stats/route.js +1 -1
  43. package/.next-prod/server/app/api/claude-stats/route.js.nft.json +1 -1
  44. package/.next-prod/server/app/api/commands/route.js +1 -1
  45. package/.next-prod/server/app/api/commands/route.js.nft.json +1 -1
  46. package/.next-prod/server/app/api/comments/route.js +1 -1
  47. package/.next-prod/server/app/api/comments/route.js.nft.json +1 -1
  48. package/.next-prod/server/app/api/db/columns/route.js +2 -2
  49. package/.next-prod/server/app/api/db/columns/route.js.nft.json +1 -1
  50. package/.next-prod/server/app/api/db/connect/route.js +1 -1
  51. package/.next-prod/server/app/api/db/connect/route.js.nft.json +1 -1
  52. package/.next-prod/server/app/api/db/disconnect/route.js +1 -1
  53. package/.next-prod/server/app/api/db/disconnect/route.js.nft.json +1 -1
  54. package/.next-prod/server/app/api/db/export/route.js +1 -1
  55. package/.next-prod/server/app/api/db/export/route.js.nft.json +1 -1
  56. package/.next-prod/server/app/api/db/query/route.js +1 -1
  57. package/.next-prod/server/app/api/db/query/route.js.nft.json +1 -1
  58. package/.next-prod/server/app/api/db/schemas/route.js +1 -1
  59. package/.next-prod/server/app/api/db/schemas/route.js.nft.json +1 -1
  60. package/.next-prod/server/app/api/dev/spans/route.js +1 -1
  61. package/.next-prod/server/app/api/dev/spans/route.js.nft.json +1 -1
  62. package/.next-prod/server/app/api/extension/version/route.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/file/route.js +1 -1
  65. package/.next-prod/server/app/api/file/route.js.nft.json +1 -1
  66. package/.next-prod/server/app/api/files/blame/route.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/clipboard/route.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/copy/route.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/delete/route.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/expanded/route.js +1 -1
  75. package/.next-prod/server/app/api/files/expanded/route.js.nft.json +1 -1
  76. package/.next-prod/server/app/api/files/index/route.js +1 -1
  77. package/.next-prod/server/app/api/files/index/route.js.nft.json +1 -1
  78. package/.next-prod/server/app/api/files/init/route.js +1 -1
  79. package/.next-prod/server/app/api/files/init/route.js.nft.json +1 -1
  80. package/.next-prod/server/app/api/files/paste/route.js +1 -1
  81. package/.next-prod/server/app/api/files/paste/route.js.nft.json +1 -1
  82. package/.next-prod/server/app/api/files/read/route.js +1 -1
  83. package/.next-prod/server/app/api/files/read/route.js.nft.json +1 -1
  84. package/.next-prod/server/app/api/files/readdir/route.js +1 -1
  85. package/.next-prod/server/app/api/files/readdir/route.js.nft.json +1 -1
  86. package/.next-prod/server/app/api/files/recent/route.js +1 -1
  87. package/.next-prod/server/app/api/files/recent/route.js.nft.json +1 -1
  88. package/.next-prod/server/app/api/files/save/route.js +1 -1
  89. package/.next-prod/server/app/api/files/save/route.js.nft.json +1 -1
  90. package/.next-prod/server/app/api/files/search/route.js +1 -1
  91. package/.next-prod/server/app/api/files/search/route.js.nft.json +1 -1
  92. package/.next-prod/server/app/api/files/stat/route.js +1 -1
  93. package/.next-prod/server/app/api/files/stat/route.js.nft.json +1 -1
  94. package/.next-prod/server/app/api/files/text/route.js +1 -1
  95. package/.next-prod/server/app/api/files/text/route.js.nft.json +1 -1
  96. package/.next-prod/server/app/api/git/branch-diff/route.js +1 -1
  97. package/.next-prod/server/app/api/git/branch-diff/route.js.nft.json +1 -1
  98. package/.next-prod/server/app/api/git/branches/route.js +1 -1
  99. package/.next-prod/server/app/api/git/branches/route.js.nft.json +1 -1
  100. package/.next-prod/server/app/api/git/commit-diff/route.js +1 -1
  101. package/.next-prod/server/app/api/git/commit-diff/route.js.nft.json +1 -1
  102. package/.next-prod/server/app/api/git/commits/route.js +1 -1
  103. package/.next-prod/server/app/api/git/commits/route.js.nft.json +1 -1
  104. package/.next-prod/server/app/api/git/diff/route.js +1 -1
  105. package/.next-prod/server/app/api/git/diff/route.js.nft.json +1 -1
  106. package/.next-prod/server/app/api/git/discard/route.js +1 -1
  107. package/.next-prod/server/app/api/git/discard/route.js.nft.json +1 -1
  108. package/.next-prod/server/app/api/git/stage/route.js +1 -1
  109. package/.next-prod/server/app/api/git/stage/route.js.nft.json +1 -1
  110. package/.next-prod/server/app/api/git/status/route.js +1 -1
  111. package/.next-prod/server/app/api/git/status/route.js.nft.json +1 -1
  112. package/.next-prod/server/app/api/git/unstage/route.js +1 -1
  113. package/.next-prod/server/app/api/git/unstage/route.js.nft.json +1 -1
  114. package/.next-prod/server/app/api/git/worktree/route.js +1 -1
  115. package/.next-prod/server/app/api/git/worktree/route.js.nft.json +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/jupyter/load/route.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/save/route.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/shutdown/route.js +1 -1
  123. package/.next-prod/server/app/api/jupyter/shutdown/route.js.nft.json +1 -1
  124. package/.next-prod/server/app/api/lsp/definition/route.js +1 -1
  125. package/.next-prod/server/app/api/lsp/definition/route.js.nft.json +1 -1
  126. package/.next-prod/server/app/api/lsp/hover/route.js +1 -1
  127. package/.next-prod/server/app/api/lsp/hover/route.js.nft.json +1 -1
  128. package/.next-prod/server/app/api/lsp/references/route.js +1 -1
  129. package/.next-prod/server/app/api/lsp/references/route.js.nft.json +1 -1
  130. package/.next-prod/server/app/api/lsp/status/route.js +1 -1
  131. package/.next-prod/server/app/api/lsp/status/route.js.nft.json +1 -1
  132. package/.next-prod/server/app/api/lsp/warmup/route.js +1 -1
  133. package/.next-prod/server/app/api/lsp/warmup/route.js.nft.json +1 -1
  134. package/.next-prod/server/app/api/mysql/columns/route.js +1 -1
  135. package/.next-prod/server/app/api/mysql/columns/route.js.nft.json +1 -1
  136. package/.next-prod/server/app/api/mysql/connect/route.js +1 -1
  137. package/.next-prod/server/app/api/mysql/connect/route.js.nft.json +1 -1
  138. package/.next-prod/server/app/api/mysql/disconnect/route.js +1 -1
  139. package/.next-prod/server/app/api/mysql/disconnect/route.js.nft.json +1 -1
  140. package/.next-prod/server/app/api/mysql/export/route.js +1 -1
  141. package/.next-prod/server/app/api/mysql/export/route.js.nft.json +1 -1
  142. package/.next-prod/server/app/api/mysql/query/route.js +1 -1
  143. package/.next-prod/server/app/api/mysql/query/route.js.nft.json +1 -1
  144. package/.next-prod/server/app/api/mysql/schemas/route.js +1 -1
  145. package/.next-prod/server/app/api/mysql/schemas/route.js.nft.json +1 -1
  146. package/.next-prod/server/app/api/neo4j/connect/route.js +1 -1
  147. package/.next-prod/server/app/api/neo4j/connect/route.js.nft.json +1 -1
  148. package/.next-prod/server/app/api/neo4j/disconnect/route.js +1 -1
  149. package/.next-prod/server/app/api/neo4j/disconnect/route.js.nft.json +1 -1
  150. package/.next-prod/server/app/api/neo4j/query/route.js +1 -1
  151. package/.next-prod/server/app/api/neo4j/query/route.js.nft.json +1 -1
  152. package/.next-prod/server/app/api/neo4j/schema/route.js +1 -1
  153. package/.next-prod/server/app/api/neo4j/schema/route.js.nft.json +1 -1
  154. package/.next-prod/server/app/api/note/route.js +1 -1
  155. package/.next-prod/server/app/api/note/route.js.nft.json +1 -1
  156. package/.next-prod/server/app/api/ollama/models/route.js +1 -1
  157. package/.next-prod/server/app/api/ollama/models/route.js.nft.json +1 -1
  158. package/.next-prod/server/app/api/ollama/start/route.js +1 -1
  159. package/.next-prod/server/app/api/ollama/start/route.js.nft.json +1 -1
  160. package/.next-prod/server/app/api/open-cursor/route.js +1 -1
  161. package/.next-prod/server/app/api/open-cursor/route.js.nft.json +1 -1
  162. package/.next-prod/server/app/api/open-vscode/route.js +1 -1
  163. package/.next-prod/server/app/api/open-vscode/route.js.nft.json +1 -1
  164. package/.next-prod/server/app/api/pick-folder/route.js +1 -1
  165. package/.next-prod/server/app/api/pick-folder/route.js.nft.json +1 -1
  166. package/.next-prod/server/app/api/pinned-sessions/route.js +1 -1
  167. package/.next-prod/server/app/api/pinned-sessions/route.js.nft.json +1 -1
  168. package/.next-prod/server/app/api/project-settings/route.js +1 -1
  169. package/.next-prod/server/app/api/project-settings/route.js.nft.json +1 -1
  170. package/.next-prod/server/app/api/project-state/route.js +1 -1
  171. package/.next-prod/server/app/api/project-state/route.js.nft.json +1 -1
  172. package/.next-prod/server/app/api/projectGraph/callees/route.js +1 -0
  173. package/.next-prod/server/app/api/projectGraph/callees/route.js.nft.json +1 -0
  174. package/.next-prod/server/app/api/projectGraph/callees/route_client-reference-manifest.js +1 -0
  175. package/.next-prod/server/app/api/projectGraph/callers/route.js +1 -0
  176. package/.next-prod/server/app/api/projectGraph/callers/route.js.nft.json +1 -0
  177. package/.next-prod/server/app/api/projectGraph/callers/route_client-reference-manifest.js +1 -0
  178. package/.next-prod/server/app/api/projectGraph/coedit/route.js +1 -0
  179. package/.next-prod/server/app/api/projectGraph/coedit/route.js.nft.json +1 -0
  180. package/.next-prod/server/app/api/projectGraph/coedit/route_client-reference-manifest.js +1 -0
  181. package/.next-prod/server/app/api/projectGraph/file/route.js +1 -1
  182. package/.next-prod/server/app/api/projectGraph/file/route.js.nft.json +1 -1
  183. package/.next-prod/server/app/api/projectGraph/file-functions/route.js +1 -1
  184. package/.next-prod/server/app/api/projectGraph/file-functions/route.js.nft.json +1 -1
  185. package/.next-prod/server/app/api/projectGraph/impact/route.js +1 -0
  186. package/.next-prod/server/app/api/projectGraph/impact/route.js.nft.json +1 -0
  187. package/.next-prod/server/app/api/projectGraph/impact/route_client-reference-manifest.js +1 -0
  188. package/.next-prod/server/app/api/projectGraph/search/route.js +1 -1
  189. package/.next-prod/server/app/api/projectGraph/search/route.js.nft.json +1 -1
  190. package/.next-prod/server/app/api/projects/route.js +1 -1
  191. package/.next-prod/server/app/api/projects/route.js.nft.json +1 -1
  192. package/.next-prod/server/app/api/redis/command/route.js +1 -1
  193. package/.next-prod/server/app/api/redis/command/route.js.nft.json +1 -1
  194. package/.next-prod/server/app/api/redis/connect/route.js +1 -1
  195. package/.next-prod/server/app/api/redis/connect/route.js.nft.json +1 -1
  196. package/.next-prod/server/app/api/redis/delete/route.js +1 -1
  197. package/.next-prod/server/app/api/redis/delete/route.js.nft.json +1 -1
  198. package/.next-prod/server/app/api/redis/disconnect/route.js +1 -1
  199. package/.next-prod/server/app/api/redis/disconnect/route.js.nft.json +1 -1
  200. package/.next-prod/server/app/api/redis/get/route.js +1 -1
  201. package/.next-prod/server/app/api/redis/get/route.js.nft.json +1 -1
  202. package/.next-prod/server/app/api/redis/keys/route.js +1 -1
  203. package/.next-prod/server/app/api/redis/keys/route.js.nft.json +1 -1
  204. package/.next-prod/server/app/api/redis/set/route.js +1 -1
  205. package/.next-prod/server/app/api/redis/set/route.js.nft.json +1 -1
  206. package/.next-prod/server/app/api/review/[id]/comments/route.js +1 -1
  207. package/.next-prod/server/app/api/review/[id]/comments/route.js.nft.json +1 -1
  208. package/.next-prod/server/app/api/review/[id]/replies/route.js +1 -1
  209. package/.next-prod/server/app/api/review/[id]/replies/route.js.nft.json +1 -1
  210. package/.next-prod/server/app/api/review/[id]/route.js +1 -1
  211. package/.next-prod/server/app/api/review/[id]/route.js.nft.json +1 -1
  212. package/.next-prod/server/app/api/review/identify/route.js +1 -1
  213. package/.next-prod/server/app/api/review/identify/route.js.nft.json +1 -1
  214. package/.next-prod/server/app/api/review/order/route.js +1 -1
  215. package/.next-prod/server/app/api/review/order/route.js.nft.json +1 -1
  216. package/.next-prod/server/app/api/review/route.js +1 -1
  217. package/.next-prod/server/app/api/review/route.js.nft.json +1 -1
  218. package/.next-prod/server/app/api/review/share-info/route.js +1 -1
  219. package/.next-prod/server/app/api/review/share-info/route.js.nft.json +1 -1
  220. package/.next-prod/server/app/api/review/users/route.js +1 -1
  221. package/.next-prod/server/app/api/review/users/route.js.nft.json +1 -1
  222. package/.next-prod/server/app/api/scheduled-tasks/route.js +1 -1
  223. package/.next-prod/server/app/api/scheduled-tasks/route.js.nft.json +1 -1
  224. package/.next-prod/server/app/api/services/config/route.js +1 -1
  225. package/.next-prod/server/app/api/services/config/route.js.nft.json +1 -1
  226. package/.next-prod/server/app/api/services/scripts/route.js +1 -1
  227. package/.next-prod/server/app/api/services/scripts/route.js.nft.json +1 -1
  228. package/.next-prod/server/app/api/session/[sessionId]/fork/route.js +1 -1
  229. package/.next-prod/server/app/api/session/[sessionId]/fork/route.js.nft.json +1 -1
  230. package/.next-prod/server/app/api/session/[sessionId]/history/route.js +1 -1
  231. package/.next-prod/server/app/api/session/[sessionId]/history/route.js.nft.json +1 -1
  232. package/.next-prod/server/app/api/session-by-path/route.js +1 -1
  233. package/.next-prod/server/app/api/session-by-path/route.js.nft.json +1 -1
  234. package/.next-prod/server/app/api/sessions/projects/[encodedPath]/route.js +1 -1
  235. package/.next-prod/server/app/api/sessions/projects/[encodedPath]/route.js.nft.json +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/route.js +1 -1
  239. package/.next-prod/server/app/api/sessions/route.js.nft.json +1 -1
  240. package/.next-prod/server/app/api/settings/route.js +1 -1
  241. package/.next-prod/server/app/api/settings/route.js.nft.json +1 -1
  242. package/.next-prod/server/app/api/skills/[id]/route.js +1 -1
  243. package/.next-prod/server/app/api/skills/[id]/route.js.nft.json +1 -1
  244. package/.next-prod/server/app/api/skills/content/route.js +1 -1
  245. package/.next-prod/server/app/api/skills/content/route.js.nft.json +1 -1
  246. package/.next-prod/server/app/api/skills/route.js +1 -1
  247. package/.next-prod/server/app/api/skills/route.js.nft.json +1 -1
  248. package/.next-prod/server/app/api/terminal/aliases/route.js +1 -1
  249. package/.next-prod/server/app/api/terminal/aliases/route.js.nft.json +1 -1
  250. package/.next-prod/server/app/api/terminal/autocomplete/route.js +1 -1
  251. package/.next-prod/server/app/api/terminal/autocomplete/route.js.nft.json +1 -1
  252. package/.next-prod/server/app/api/terminal/bubble-order/route.js +1 -1
  253. package/.next-prod/server/app/api/terminal/bubble-order/route.js.nft.json +1 -1
  254. package/.next-prod/server/app/api/terminal/env/route.js +1 -1
  255. package/.next-prod/server/app/api/terminal/env/route.js.nft.json +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/version/route.js +1 -1
  259. package/.next-prod/server/app/api/version/route.js.nft.json +1 -1
  260. package/.next-prod/server/app/favicon.ico/route.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 +2 -2
  263. package/.next-prod/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  264. package/.next-prod/server/app/manifest.webmanifest.body +1 -1
  265. package/.next-prod/server/app/page.js +2 -2
  266. package/.next-prod/server/app/page.js.nft.json +1 -1
  267. package/.next-prod/server/app/page_client-reference-manifest.js +1 -1
  268. package/.next-prod/server/app/project/page.js +2 -2
  269. package/.next-prod/server/app/project/page.js.nft.json +1 -1
  270. package/.next-prod/server/app/project/page_client-reference-manifest.js +1 -1
  271. package/.next-prod/server/app/review/[id]/page.js +2 -2
  272. package/.next-prod/server/app/review/[id]/page.js.nft.json +1 -1
  273. package/.next-prod/server/app/review/[id]/page_client-reference-manifest.js +1 -1
  274. package/.next-prod/server/app-paths-manifest.json +9 -5
  275. package/.next-prod/server/chunks/2939.js +1 -0
  276. package/.next-prod/server/chunks/5616.js +1 -1
  277. package/.next-prod/server/chunks/6955.js +1 -1
  278. package/.next-prod/server/chunks/8916.js +1 -1
  279. package/.next-prod/server/chunks/9658.js +2 -2
  280. package/.next-prod/server/middleware-build-manifest.js +1 -1
  281. package/.next-prod/server/pages/404.html +1 -1
  282. package/.next-prod/server/pages/500.html +1 -1
  283. package/.next-prod/server/server-reference-manifest.json +1 -1
  284. package/.next-prod/static/IVZ8ReZv3wH9JQhz4PDC2/_buildManifest.js +1 -0
  285. package/.next-prod/static/chunks/6345-3da1914a1a74c1fb.js +14 -0
  286. package/.next-prod/static/chunks/app/_global-error/page-994734ef0d317687.js +1 -0
  287. package/.next-prod/static/chunks/app/api/agent/test/route-994734ef0d317687.js +1 -0
  288. package/.next-prod/static/chunks/app/api/bash/route-994734ef0d317687.js +1 -0
  289. package/.next-prod/static/chunks/app/api/chat/codex/route-994734ef0d317687.js +1 -0
  290. package/.next-prod/static/chunks/app/api/chat/deepseek/route-994734ef0d317687.js +1 -0
  291. package/.next-prod/static/chunks/app/api/chat/kimi/route-994734ef0d317687.js +1 -0
  292. package/.next-prod/static/chunks/app/api/chat/ollama/route-994734ef0d317687.js +1 -0
  293. package/.next-prod/static/chunks/app/api/chat/route-994734ef0d317687.js +1 -0
  294. package/.next-prod/static/chunks/app/api/claude-stats/route-994734ef0d317687.js +1 -0
  295. package/.next-prod/static/chunks/app/api/commands/route-994734ef0d317687.js +1 -0
  296. package/.next-prod/static/chunks/app/api/comments/route-994734ef0d317687.js +1 -0
  297. package/.next-prod/static/chunks/app/api/db/columns/route-994734ef0d317687.js +1 -0
  298. package/.next-prod/static/chunks/app/api/db/connect/route-994734ef0d317687.js +1 -0
  299. package/.next-prod/static/chunks/app/api/db/disconnect/route-994734ef0d317687.js +1 -0
  300. package/.next-prod/static/chunks/app/api/db/export/route-994734ef0d317687.js +1 -0
  301. package/.next-prod/static/chunks/app/api/db/query/route-994734ef0d317687.js +1 -0
  302. package/.next-prod/static/chunks/app/api/db/schemas/route-994734ef0d317687.js +1 -0
  303. package/.next-prod/static/chunks/app/api/dev/spans/route-994734ef0d317687.js +1 -0
  304. package/.next-prod/static/chunks/app/api/extension/version/route-994734ef0d317687.js +1 -0
  305. package/.next-prod/static/chunks/app/api/file/route-994734ef0d317687.js +1 -0
  306. package/.next-prod/static/chunks/app/api/files/blame/route-994734ef0d317687.js +1 -0
  307. package/.next-prod/static/chunks/app/api/files/clipboard/route-994734ef0d317687.js +1 -0
  308. package/.next-prod/static/chunks/app/api/files/copy/route-994734ef0d317687.js +1 -0
  309. package/.next-prod/static/chunks/app/api/files/delete/route-994734ef0d317687.js +1 -0
  310. package/.next-prod/static/chunks/app/api/files/expanded/route-994734ef0d317687.js +1 -0
  311. package/.next-prod/static/chunks/app/api/files/index/route-994734ef0d317687.js +1 -0
  312. package/.next-prod/static/chunks/app/api/files/init/route-994734ef0d317687.js +1 -0
  313. package/.next-prod/static/chunks/app/api/files/paste/route-994734ef0d317687.js +1 -0
  314. package/.next-prod/static/chunks/app/api/files/read/route-994734ef0d317687.js +1 -0
  315. package/.next-prod/static/chunks/app/api/files/readdir/route-994734ef0d317687.js +1 -0
  316. package/.next-prod/static/chunks/app/api/files/recent/route-994734ef0d317687.js +1 -0
  317. package/.next-prod/static/chunks/app/api/files/save/route-994734ef0d317687.js +1 -0
  318. package/.next-prod/static/chunks/app/api/files/search/route-994734ef0d317687.js +1 -0
  319. package/.next-prod/static/chunks/app/api/files/stat/route-994734ef0d317687.js +1 -0
  320. package/.next-prod/static/chunks/app/api/files/text/route-994734ef0d317687.js +1 -0
  321. package/.next-prod/static/chunks/app/api/git/branch-diff/route-994734ef0d317687.js +1 -0
  322. package/.next-prod/static/chunks/app/api/git/branches/route-994734ef0d317687.js +1 -0
  323. package/.next-prod/static/chunks/app/api/git/commit-diff/route-994734ef0d317687.js +1 -0
  324. package/.next-prod/static/chunks/app/api/git/commits/route-994734ef0d317687.js +1 -0
  325. package/.next-prod/static/chunks/app/api/git/diff/route-994734ef0d317687.js +1 -0
  326. package/.next-prod/static/chunks/app/api/git/discard/route-994734ef0d317687.js +1 -0
  327. package/.next-prod/static/chunks/app/api/git/stage/route-994734ef0d317687.js +1 -0
  328. package/.next-prod/static/chunks/app/api/git/status/route-994734ef0d317687.js +1 -0
  329. package/.next-prod/static/chunks/app/api/git/unstage/route-994734ef0d317687.js +1 -0
  330. package/.next-prod/static/chunks/app/api/git/worktree/route-994734ef0d317687.js +1 -0
  331. package/.next-prod/static/chunks/app/api/global-state/route-994734ef0d317687.js +1 -0
  332. package/.next-prod/static/chunks/app/api/jupyter/load/route-994734ef0d317687.js +1 -0
  333. package/.next-prod/static/chunks/app/api/jupyter/save/route-994734ef0d317687.js +1 -0
  334. package/.next-prod/static/chunks/app/api/jupyter/shutdown/route-994734ef0d317687.js +1 -0
  335. package/.next-prod/static/chunks/app/api/lsp/definition/route-994734ef0d317687.js +1 -0
  336. package/.next-prod/static/chunks/app/api/lsp/hover/route-994734ef0d317687.js +1 -0
  337. package/.next-prod/static/chunks/app/api/lsp/references/route-994734ef0d317687.js +1 -0
  338. package/.next-prod/static/chunks/app/api/lsp/status/route-994734ef0d317687.js +1 -0
  339. package/.next-prod/static/chunks/app/api/lsp/warmup/route-994734ef0d317687.js +1 -0
  340. package/.next-prod/static/chunks/app/api/mysql/columns/route-994734ef0d317687.js +1 -0
  341. package/.next-prod/static/chunks/app/api/mysql/connect/route-994734ef0d317687.js +1 -0
  342. package/.next-prod/static/chunks/app/api/mysql/disconnect/route-994734ef0d317687.js +1 -0
  343. package/.next-prod/static/chunks/app/api/mysql/export/route-994734ef0d317687.js +1 -0
  344. package/.next-prod/static/chunks/app/api/mysql/query/route-994734ef0d317687.js +1 -0
  345. package/.next-prod/static/chunks/app/api/mysql/schemas/route-994734ef0d317687.js +1 -0
  346. package/.next-prod/static/chunks/app/api/neo4j/connect/route-994734ef0d317687.js +1 -0
  347. package/.next-prod/static/chunks/app/api/neo4j/disconnect/route-994734ef0d317687.js +1 -0
  348. package/.next-prod/static/chunks/app/api/neo4j/query/route-994734ef0d317687.js +1 -0
  349. package/.next-prod/static/chunks/app/api/neo4j/schema/route-994734ef0d317687.js +1 -0
  350. package/.next-prod/static/chunks/app/api/note/route-994734ef0d317687.js +1 -0
  351. package/.next-prod/static/chunks/app/api/ollama/models/route-994734ef0d317687.js +1 -0
  352. package/.next-prod/static/chunks/app/api/ollama/start/route-994734ef0d317687.js +1 -0
  353. package/.next-prod/static/chunks/app/api/open-cursor/route-994734ef0d317687.js +1 -0
  354. package/.next-prod/static/chunks/app/api/open-vscode/route-994734ef0d317687.js +1 -0
  355. package/.next-prod/static/chunks/app/api/pick-folder/route-994734ef0d317687.js +1 -0
  356. package/.next-prod/static/chunks/app/api/pinned-sessions/route-994734ef0d317687.js +1 -0
  357. package/.next-prod/static/chunks/app/api/project-settings/route-994734ef0d317687.js +1 -0
  358. package/.next-prod/static/chunks/app/api/project-state/route-994734ef0d317687.js +1 -0
  359. package/.next-prod/static/chunks/app/api/projectGraph/callees/route-994734ef0d317687.js +1 -0
  360. package/.next-prod/static/chunks/app/api/projectGraph/callers/route-994734ef0d317687.js +1 -0
  361. package/.next-prod/static/chunks/app/api/projectGraph/coedit/route-994734ef0d317687.js +1 -0
  362. package/.next-prod/static/chunks/app/api/projectGraph/file/route-994734ef0d317687.js +1 -0
  363. package/.next-prod/static/chunks/app/api/projectGraph/file-functions/route-994734ef0d317687.js +1 -0
  364. package/.next-prod/static/chunks/app/api/projectGraph/impact/route-994734ef0d317687.js +1 -0
  365. package/.next-prod/static/chunks/app/api/projectGraph/search/route-994734ef0d317687.js +1 -0
  366. package/.next-prod/static/chunks/app/api/projects/route-994734ef0d317687.js +1 -0
  367. package/.next-prod/static/chunks/app/api/redis/command/route-994734ef0d317687.js +1 -0
  368. package/.next-prod/static/chunks/app/api/redis/connect/route-994734ef0d317687.js +1 -0
  369. package/.next-prod/static/chunks/app/api/redis/delete/route-994734ef0d317687.js +1 -0
  370. package/.next-prod/static/chunks/app/api/redis/disconnect/route-994734ef0d317687.js +1 -0
  371. package/.next-prod/static/chunks/app/api/redis/get/route-994734ef0d317687.js +1 -0
  372. package/.next-prod/static/chunks/app/api/redis/keys/route-994734ef0d317687.js +1 -0
  373. package/.next-prod/static/chunks/app/api/redis/set/route-994734ef0d317687.js +1 -0
  374. package/.next-prod/static/chunks/app/api/review/[id]/comments/route-994734ef0d317687.js +1 -0
  375. package/.next-prod/static/chunks/app/api/review/[id]/replies/route-994734ef0d317687.js +1 -0
  376. package/.next-prod/static/chunks/app/api/review/[id]/route-994734ef0d317687.js +1 -0
  377. package/.next-prod/static/chunks/app/api/review/identify/route-994734ef0d317687.js +1 -0
  378. package/.next-prod/static/chunks/app/api/review/order/route-994734ef0d317687.js +1 -0
  379. package/.next-prod/static/chunks/app/api/review/route-994734ef0d317687.js +1 -0
  380. package/.next-prod/static/chunks/app/api/review/share-info/route-994734ef0d317687.js +1 -0
  381. package/.next-prod/static/chunks/app/api/review/users/route-994734ef0d317687.js +1 -0
  382. package/.next-prod/static/chunks/app/api/scheduled-tasks/route-994734ef0d317687.js +1 -0
  383. package/.next-prod/static/chunks/app/api/services/config/route-994734ef0d317687.js +1 -0
  384. package/.next-prod/static/chunks/app/api/services/scripts/route-994734ef0d317687.js +1 -0
  385. package/.next-prod/static/chunks/app/api/session/[sessionId]/fork/route-994734ef0d317687.js +1 -0
  386. package/.next-prod/static/chunks/app/api/session/[sessionId]/history/route-994734ef0d317687.js +1 -0
  387. package/.next-prod/static/chunks/app/api/session-by-path/route-994734ef0d317687.js +1 -0
  388. package/.next-prod/static/chunks/app/api/sessions/projects/[encodedPath]/route-994734ef0d317687.js +1 -0
  389. package/.next-prod/static/chunks/app/api/sessions/projects/route-994734ef0d317687.js +1 -0
  390. package/.next-prod/static/chunks/app/api/sessions/route-994734ef0d317687.js +1 -0
  391. package/.next-prod/static/chunks/app/api/settings/route-994734ef0d317687.js +1 -0
  392. package/.next-prod/static/chunks/app/api/skills/[id]/route-994734ef0d317687.js +1 -0
  393. package/.next-prod/static/chunks/app/api/skills/content/route-994734ef0d317687.js +1 -0
  394. package/.next-prod/static/chunks/app/api/skills/route-994734ef0d317687.js +1 -0
  395. package/.next-prod/static/chunks/app/api/terminal/aliases/route-994734ef0d317687.js +1 -0
  396. package/.next-prod/static/chunks/app/api/terminal/autocomplete/route-994734ef0d317687.js +1 -0
  397. package/.next-prod/static/chunks/app/api/terminal/bubble-order/route-994734ef0d317687.js +1 -0
  398. package/.next-prod/static/chunks/app/api/terminal/env/route-994734ef0d317687.js +1 -0
  399. package/.next-prod/static/chunks/app/api/terminal/history/route-994734ef0d317687.js +1 -0
  400. package/.next-prod/static/chunks/app/api/version/route-994734ef0d317687.js +1 -0
  401. package/.next-prod/static/chunks/app/manifest.webmanifest/route-994734ef0d317687.js +1 -0
  402. package/.next-prod/static/chunks/next/dist/client/components/builtin/app-error-994734ef0d317687.js +1 -0
  403. package/.next-prod/static/chunks/next/dist/client/components/builtin/forbidden-994734ef0d317687.js +1 -0
  404. package/.next-prod/static/chunks/next/dist/client/components/builtin/not-found-994734ef0d317687.js +1 -0
  405. package/.next-prod/static/chunks/next/dist/client/components/builtin/unauthorized-994734ef0d317687.js +1 -0
  406. package/.next-prod/static/css/f9a27209b85d8e5a.css +1 -0
  407. package/.next-prod/trace +12 -12
  408. package/.next-prod/trace-build +1 -1
  409. package/.next-prod/types/app/api/projectGraph/callees/route.ts +351 -0
  410. package/.next-prod/types/app/api/projectGraph/callers/route.ts +351 -0
  411. package/.next-prod/types/app/api/projectGraph/coedit/route.ts +351 -0
  412. package/.next-prod/types/app/api/projectGraph/impact/route.ts +351 -0
  413. package/.next-prod/types/routes.d.ts +5 -1
  414. package/.next-prod/types/validator.ts +36 -0
  415. package/README.md +16 -28
  416. package/README.zh.md +16 -28
  417. package/chrome-extension/manifest.json +2 -2
  418. package/dist/wsServer.mjs +2730 -4
  419. package/package.json +3 -3
  420. package/.next-prod/server/chunks/5159.js +0 -1
  421. package/.next-prod/static/LJRtmjYCuVrSA_dcelxlR/_buildManifest.js +0 -1
  422. package/.next-prod/static/chunks/6345-3c06cdc8c89677b8.js +0 -14
  423. package/.next-prod/static/chunks/app/_global-error/page-826847d169541fa9.js +0 -1
  424. package/.next-prod/static/chunks/app/api/agent/test/route-826847d169541fa9.js +0 -1
  425. package/.next-prod/static/chunks/app/api/bash/route-826847d169541fa9.js +0 -1
  426. package/.next-prod/static/chunks/app/api/chat/codex/route-826847d169541fa9.js +0 -1
  427. package/.next-prod/static/chunks/app/api/chat/deepseek/route-826847d169541fa9.js +0 -1
  428. package/.next-prod/static/chunks/app/api/chat/kimi/route-826847d169541fa9.js +0 -1
  429. package/.next-prod/static/chunks/app/api/chat/ollama/route-826847d169541fa9.js +0 -1
  430. package/.next-prod/static/chunks/app/api/chat/route-826847d169541fa9.js +0 -1
  431. package/.next-prod/static/chunks/app/api/claude-stats/route-826847d169541fa9.js +0 -1
  432. package/.next-prod/static/chunks/app/api/commands/route-826847d169541fa9.js +0 -1
  433. package/.next-prod/static/chunks/app/api/comments/route-826847d169541fa9.js +0 -1
  434. package/.next-prod/static/chunks/app/api/db/columns/route-826847d169541fa9.js +0 -1
  435. package/.next-prod/static/chunks/app/api/db/connect/route-826847d169541fa9.js +0 -1
  436. package/.next-prod/static/chunks/app/api/db/disconnect/route-826847d169541fa9.js +0 -1
  437. package/.next-prod/static/chunks/app/api/db/export/route-826847d169541fa9.js +0 -1
  438. package/.next-prod/static/chunks/app/api/db/query/route-826847d169541fa9.js +0 -1
  439. package/.next-prod/static/chunks/app/api/db/schemas/route-826847d169541fa9.js +0 -1
  440. package/.next-prod/static/chunks/app/api/dev/spans/route-826847d169541fa9.js +0 -1
  441. package/.next-prod/static/chunks/app/api/extension/version/route-826847d169541fa9.js +0 -1
  442. package/.next-prod/static/chunks/app/api/file/route-826847d169541fa9.js +0 -1
  443. package/.next-prod/static/chunks/app/api/files/blame/route-826847d169541fa9.js +0 -1
  444. package/.next-prod/static/chunks/app/api/files/clipboard/route-826847d169541fa9.js +0 -1
  445. package/.next-prod/static/chunks/app/api/files/copy/route-826847d169541fa9.js +0 -1
  446. package/.next-prod/static/chunks/app/api/files/delete/route-826847d169541fa9.js +0 -1
  447. package/.next-prod/static/chunks/app/api/files/expanded/route-826847d169541fa9.js +0 -1
  448. package/.next-prod/static/chunks/app/api/files/index/route-826847d169541fa9.js +0 -1
  449. package/.next-prod/static/chunks/app/api/files/init/route-826847d169541fa9.js +0 -1
  450. package/.next-prod/static/chunks/app/api/files/paste/route-826847d169541fa9.js +0 -1
  451. package/.next-prod/static/chunks/app/api/files/read/route-826847d169541fa9.js +0 -1
  452. package/.next-prod/static/chunks/app/api/files/readdir/route-826847d169541fa9.js +0 -1
  453. package/.next-prod/static/chunks/app/api/files/recent/route-826847d169541fa9.js +0 -1
  454. package/.next-prod/static/chunks/app/api/files/save/route-826847d169541fa9.js +0 -1
  455. package/.next-prod/static/chunks/app/api/files/search/route-826847d169541fa9.js +0 -1
  456. package/.next-prod/static/chunks/app/api/files/stat/route-826847d169541fa9.js +0 -1
  457. package/.next-prod/static/chunks/app/api/files/text/route-826847d169541fa9.js +0 -1
  458. package/.next-prod/static/chunks/app/api/git/branch-diff/route-826847d169541fa9.js +0 -1
  459. package/.next-prod/static/chunks/app/api/git/branches/route-826847d169541fa9.js +0 -1
  460. package/.next-prod/static/chunks/app/api/git/commit-diff/route-826847d169541fa9.js +0 -1
  461. package/.next-prod/static/chunks/app/api/git/commits/route-826847d169541fa9.js +0 -1
  462. package/.next-prod/static/chunks/app/api/git/diff/route-826847d169541fa9.js +0 -1
  463. package/.next-prod/static/chunks/app/api/git/discard/route-826847d169541fa9.js +0 -1
  464. package/.next-prod/static/chunks/app/api/git/stage/route-826847d169541fa9.js +0 -1
  465. package/.next-prod/static/chunks/app/api/git/status/route-826847d169541fa9.js +0 -1
  466. package/.next-prod/static/chunks/app/api/git/unstage/route-826847d169541fa9.js +0 -1
  467. package/.next-prod/static/chunks/app/api/git/worktree/route-826847d169541fa9.js +0 -1
  468. package/.next-prod/static/chunks/app/api/global-state/route-826847d169541fa9.js +0 -1
  469. package/.next-prod/static/chunks/app/api/jupyter/load/route-826847d169541fa9.js +0 -1
  470. package/.next-prod/static/chunks/app/api/jupyter/save/route-826847d169541fa9.js +0 -1
  471. package/.next-prod/static/chunks/app/api/jupyter/shutdown/route-826847d169541fa9.js +0 -1
  472. package/.next-prod/static/chunks/app/api/lsp/definition/route-826847d169541fa9.js +0 -1
  473. package/.next-prod/static/chunks/app/api/lsp/hover/route-826847d169541fa9.js +0 -1
  474. package/.next-prod/static/chunks/app/api/lsp/references/route-826847d169541fa9.js +0 -1
  475. package/.next-prod/static/chunks/app/api/lsp/status/route-826847d169541fa9.js +0 -1
  476. package/.next-prod/static/chunks/app/api/lsp/warmup/route-826847d169541fa9.js +0 -1
  477. package/.next-prod/static/chunks/app/api/mysql/columns/route-826847d169541fa9.js +0 -1
  478. package/.next-prod/static/chunks/app/api/mysql/connect/route-826847d169541fa9.js +0 -1
  479. package/.next-prod/static/chunks/app/api/mysql/disconnect/route-826847d169541fa9.js +0 -1
  480. package/.next-prod/static/chunks/app/api/mysql/export/route-826847d169541fa9.js +0 -1
  481. package/.next-prod/static/chunks/app/api/mysql/query/route-826847d169541fa9.js +0 -1
  482. package/.next-prod/static/chunks/app/api/mysql/schemas/route-826847d169541fa9.js +0 -1
  483. package/.next-prod/static/chunks/app/api/neo4j/connect/route-826847d169541fa9.js +0 -1
  484. package/.next-prod/static/chunks/app/api/neo4j/disconnect/route-826847d169541fa9.js +0 -1
  485. package/.next-prod/static/chunks/app/api/neo4j/query/route-826847d169541fa9.js +0 -1
  486. package/.next-prod/static/chunks/app/api/neo4j/schema/route-826847d169541fa9.js +0 -1
  487. package/.next-prod/static/chunks/app/api/note/route-826847d169541fa9.js +0 -1
  488. package/.next-prod/static/chunks/app/api/ollama/models/route-826847d169541fa9.js +0 -1
  489. package/.next-prod/static/chunks/app/api/ollama/start/route-826847d169541fa9.js +0 -1
  490. package/.next-prod/static/chunks/app/api/open-cursor/route-826847d169541fa9.js +0 -1
  491. package/.next-prod/static/chunks/app/api/open-vscode/route-826847d169541fa9.js +0 -1
  492. package/.next-prod/static/chunks/app/api/pick-folder/route-826847d169541fa9.js +0 -1
  493. package/.next-prod/static/chunks/app/api/pinned-sessions/route-826847d169541fa9.js +0 -1
  494. package/.next-prod/static/chunks/app/api/project-settings/route-826847d169541fa9.js +0 -1
  495. package/.next-prod/static/chunks/app/api/project-state/route-826847d169541fa9.js +0 -1
  496. package/.next-prod/static/chunks/app/api/projectGraph/file/route-826847d169541fa9.js +0 -1
  497. package/.next-prod/static/chunks/app/api/projectGraph/file-functions/route-826847d169541fa9.js +0 -1
  498. package/.next-prod/static/chunks/app/api/projectGraph/search/route-826847d169541fa9.js +0 -1
  499. package/.next-prod/static/chunks/app/api/projects/route-826847d169541fa9.js +0 -1
  500. package/.next-prod/static/chunks/app/api/redis/command/route-826847d169541fa9.js +0 -1
  501. package/.next-prod/static/chunks/app/api/redis/connect/route-826847d169541fa9.js +0 -1
  502. package/.next-prod/static/chunks/app/api/redis/delete/route-826847d169541fa9.js +0 -1
  503. package/.next-prod/static/chunks/app/api/redis/disconnect/route-826847d169541fa9.js +0 -1
  504. package/.next-prod/static/chunks/app/api/redis/get/route-826847d169541fa9.js +0 -1
  505. package/.next-prod/static/chunks/app/api/redis/keys/route-826847d169541fa9.js +0 -1
  506. package/.next-prod/static/chunks/app/api/redis/set/route-826847d169541fa9.js +0 -1
  507. package/.next-prod/static/chunks/app/api/review/[id]/comments/route-826847d169541fa9.js +0 -1
  508. package/.next-prod/static/chunks/app/api/review/[id]/replies/route-826847d169541fa9.js +0 -1
  509. package/.next-prod/static/chunks/app/api/review/[id]/route-826847d169541fa9.js +0 -1
  510. package/.next-prod/static/chunks/app/api/review/identify/route-826847d169541fa9.js +0 -1
  511. package/.next-prod/static/chunks/app/api/review/order/route-826847d169541fa9.js +0 -1
  512. package/.next-prod/static/chunks/app/api/review/route-826847d169541fa9.js +0 -1
  513. package/.next-prod/static/chunks/app/api/review/share-info/route-826847d169541fa9.js +0 -1
  514. package/.next-prod/static/chunks/app/api/review/users/route-826847d169541fa9.js +0 -1
  515. package/.next-prod/static/chunks/app/api/scheduled-tasks/route-826847d169541fa9.js +0 -1
  516. package/.next-prod/static/chunks/app/api/services/config/route-826847d169541fa9.js +0 -1
  517. package/.next-prod/static/chunks/app/api/services/scripts/route-826847d169541fa9.js +0 -1
  518. package/.next-prod/static/chunks/app/api/session/[sessionId]/fork/route-826847d169541fa9.js +0 -1
  519. package/.next-prod/static/chunks/app/api/session/[sessionId]/history/route-826847d169541fa9.js +0 -1
  520. package/.next-prod/static/chunks/app/api/session-by-path/route-826847d169541fa9.js +0 -1
  521. package/.next-prod/static/chunks/app/api/sessions/projects/[encodedPath]/route-826847d169541fa9.js +0 -1
  522. package/.next-prod/static/chunks/app/api/sessions/projects/route-826847d169541fa9.js +0 -1
  523. package/.next-prod/static/chunks/app/api/sessions/route-826847d169541fa9.js +0 -1
  524. package/.next-prod/static/chunks/app/api/settings/route-826847d169541fa9.js +0 -1
  525. package/.next-prod/static/chunks/app/api/skills/[id]/route-826847d169541fa9.js +0 -1
  526. package/.next-prod/static/chunks/app/api/skills/content/route-826847d169541fa9.js +0 -1
  527. package/.next-prod/static/chunks/app/api/skills/route-826847d169541fa9.js +0 -1
  528. package/.next-prod/static/chunks/app/api/terminal/aliases/route-826847d169541fa9.js +0 -1
  529. package/.next-prod/static/chunks/app/api/terminal/autocomplete/route-826847d169541fa9.js +0 -1
  530. package/.next-prod/static/chunks/app/api/terminal/bubble-order/route-826847d169541fa9.js +0 -1
  531. package/.next-prod/static/chunks/app/api/terminal/env/route-826847d169541fa9.js +0 -1
  532. package/.next-prod/static/chunks/app/api/terminal/history/route-826847d169541fa9.js +0 -1
  533. package/.next-prod/static/chunks/app/api/version/route-826847d169541fa9.js +0 -1
  534. package/.next-prod/static/chunks/app/manifest.webmanifest/route-826847d169541fa9.js +0 -1
  535. package/.next-prod/static/chunks/next/dist/client/components/builtin/app-error-826847d169541fa9.js +0 -1
  536. package/.next-prod/static/chunks/next/dist/client/components/builtin/forbidden-826847d169541fa9.js +0 -1
  537. package/.next-prod/static/chunks/next/dist/client/components/builtin/not-found-826847d169541fa9.js +0 -1
  538. package/.next-prod/static/chunks/next/dist/client/components/builtin/unauthorized-826847d169541fa9.js +0 -1
  539. package/.next-prod/static/css/dcde719317bea028.css +0 -1
  540. /package/.next-prod/static/{LJRtmjYCuVrSA_dcelxlR → IVZ8ReZv3wH9JQhz4PDC2}/_ssgManifest.js +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@surething/cockpit",
3
- "version": "1.0.210",
3
+ "version": "1.0.212",
4
4
  "description": "Claude Code GUI for parallel AI coding — drive Claude (default), OpenAI Codex, DeepSeek, Kimi, or local Ollama in tabs. Multi-project sessions, terminal, browser & DB bubbles, code review, slash modes. Local-first, MIT.",
5
5
  "author": "Robert",
6
6
  "license": "MIT",
@@ -8,7 +8,7 @@
8
8
  "type": "git",
9
9
  "url": "git+https://github.com/Surething-io/cockpit.git"
10
10
  },
11
- "homepage": "https://cocking.cc",
11
+ "homepage": "https://opencockpit.dev",
12
12
  "bugs": {
13
13
  "url": "https://github.com/Surething-io/cockpit/issues"
14
14
  },
@@ -42,7 +42,7 @@
42
42
  "parallel-ai",
43
43
  "multi-project-ai",
44
44
  "cockpit",
45
- "cocking",
45
+ "opencockpit",
46
46
  "cursor-alternative",
47
47
  "aider-alternative",
48
48
  "continue-alternative",
@@ -1 +0,0 @@
1
- "use strict";exports.id=5159,exports.ids=[5159],exports.modules={4253:(a,b,c)=>{c.d(b,{L8:()=>p,No:()=>h,Pe:()=>o,VA:()=>q,hC:()=>m,hH:()=>l,hn:()=>s,iF:()=>r,lU:()=>t,nw:()=>n,pZ:()=>g});var d=c(79748),e=c(33873),f=c.n(e);let g=0xa00000,h=0x3200000,i=new Set([".png",".jpg",".jpeg",".gif",".webp",".svg",".ico",".bmp",".avif"]),j=new Set([".pdf",".doc",".docx",".xls",".xlsx",".ppt",".pptx",".zip",".tar",".gz",".rar",".7z",".exe",".dll",".so",".dylib",".mp3",".mp4",".avi",".mov",".mkv",".wav",".flac",".ttf",".otf",".woff",".woff2",".eot",".db",".sqlite",".sqlite3",".pyc",".class",".o",".a"]),k={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp",".svg":"image/svg+xml",".ico":"image/x-icon",".bmp":"image/bmp",".avif":"image/avif"};function l(a){return k[a.toLowerCase()]||"application/octet-stream"}function m(a,b){if("string"!=typeof b||0===b.length)return null;let c=f().resolve(a),d=f().resolve(c,b);return d===c||d.startsWith(c+f().sep)?d:null}async function n(a){let b;if("string"!=typeof a||0===a.length)return{ok:!1,reason:"Missing cwd parameter"};if(!f().isAbsolute(a))return{ok:!1,reason:"cwd must be an absolute path"};let c=f().resolve(a);try{b=await (0,d.stat)(c)}catch{return{ok:!1,reason:"cwd does not exist"}}return b.isDirectory()?{ok:!0,abs:c}:{ok:!1,reason:"cwd is not a directory"}}function o(a,b){return`"${a.toString(36)}-${Math.floor(b).toString(36)}"`}function p(a,b){let c=a.startsWith(".")?a.toLowerCase():f().extname(a).toLowerCase();return i.has(c)?b>h?"too-large":"image":j.has(c)?"binary":b>g?"too-large":"text"}function q(a){let b=0,c=Math.min(a.length,1e3);for(let d=0;d<c;d++){let c=a.charCodeAt(d);if(0===c)return!0;c<32&&9!==c&&10!==c&&13!==c&&b++}return c>0&&b/c>.1}async function r(a){let b,c=!1;try{(await (0,d.lstat)(a)).isSymbolicLink()&&(c=!0,b=await (0,d.readlink)(a))}catch{}let e=await (0,d.stat)(a);return{size:e.size,mtimeMs:e.mtimeMs,isDirectory:e.isDirectory(),isSymlink:c,symlinkTarget:b}}function s(a,b){return{ETag:a,"Last-Modified":new Date(b).toUTCString(),"Cache-Control":"no-cache, must-revalidate"}}function t(a,b){return!!a&&a.split(",").map(a=>a.trim().replace(/^W\//,"")).includes(b)}},25344:(a,b,c)=>{c.d(b,{BE:()=>l,IS:()=>v,KP:()=>r,ZT:()=>x,_0:()=>s,iU:()=>n,jH:()=>o,zC:()=>t});var d=c(31421),e=c(73024),f=c(76760),g=c.n(f),h=c(57975),i=c(28677);let j=(0,h.promisify)(d.exec),k=new Set([".git","node_modules"]),l=8e3;function m(a){let b=a.toLowerCase(),c=b.lastIndexOf(".");if(c<0)return!1;let d=b.slice(c);for(let a of(0,i.cn)())if(a.toLowerCase()===d)return!0;return!1}async function n(a){try{await j("git rev-parse --git-dir",{cwd:a})}catch{return null}let{stdout:b}=await j("git -c core.quotePath=false ls-files --cached --others --exclude-standard",{cwd:a,maxBuffer:0x3200000}),c=[];for(let a of b.split("\n")){let b=a.trim();if(b&&m(b.slice(b.lastIndexOf("/")+1))&&(c.push(b),c.length>=l))break}return c}async function o(a,b,c){let d;if(!(c.length>=l)){try{d=await e.promises.readdir(a,{withFileTypes:!0})}catch{return}for(let e of d){if(c.length>=l)return;if(k.has(e.name)||e.name.startsWith(".git"))continue;let d=g().join(a,e.name);e.isDirectory()?await o(d,b,c):e.isFile()&&m(e.name)&&c.push(g().relative(b,d))}}}let p=[".ts",".tsx",".js",".jsx",".mjs",".cjs"],q=[".js",".jsx",".mjs",".cjs"];function r(a,b,c){let d=g().relative(b,a);if(d.startsWith(".."))return null;for(let a of q)if(d.endsWith(a)){d=d.slice(0,-a.length);break}if(c.has(d))return d;for(let a of p){let b=d+a;if(c.has(b))return b}for(let a of p){let b=g().join(d,"index"+a);if(c.has(b))return b}return null}function s(a,b){return""===b||a===b||a.startsWith(b+"/")}async function t(a,b){let c=await u(a);if(0===c.length)return new Map;let d=[];try{let{stdout:b}=await j("git -c core.quotePath=false ls-files --cached --others --exclude-standard",{cwd:a,maxBuffer:0x3200000});d=b.split("\n").map(a=>a.trim()).filter(a=>a.endsWith("/package.json")&&!a.includes("node_modules/"))}catch{return new Map}let f=d.filter(a=>{let b=a.slice(0,-13);return c.some(a=>{var c;return c=b,RegExp("^"+a.replace(/\\/g,"/").replace(/[.+^${}()|[\]]/g,"\\$&").replace(/\*\*/g,"___DOUBLESTAR___").replace(/\*/g,"[^/]*").replace(/___DOUBLESTAR___/g,".*")+"$").test(c)})}),h=new Map;for(let c of f){let d;try{d=JSON.parse(await e.promises.readFile(g().join(a,c),"utf8"))}catch{continue}if("string"!=typeof d.name)continue;let f=g().dirname(c),i=function(a,b,c){let d,e=b=>{let d=b.replace(/^\.\//,"");return v(g().posix.join(a,d),c)},f=b.exports;if("string"==typeof f)d=f;else if(f&&"object"==typeof f&&f["."]){let a=f["."];"string"==typeof a?d=a:a&&"object"==typeof a&&(d=a.types??a.import??a.default??a.require)}if("string"==typeof d){let a=e(d);if(a)return a}if("string"==typeof b.main){let a=e(b.main);if(a)return a}for(let b of["src/index.ts","src/index.tsx","index.ts","index.tsx","src/index.js","index.js"])if(c.has(g().posix.join(a,b)))return g().posix.join(a,b);return null}(f,d,b);h.set(d.name,{name:d.name,dir:f,entryFile:i})}return h}async function u(a){try{var b=await e.promises.readFile(g().join(a,"pnpm-workspace.yaml"),"utf8");let c=[],d=!1;for(let a of b.split("\n")){let b=a.replace(/#.*$/,"");if(/^packages\s*:/.test(b)){d=!0;continue}if(!d)continue;let e=b.match(/^\s*-\s*['"]?([^'"#\s]+)['"]?\s*$/);e?c.push(e[1]):/^\S/.test(b)&&(d=!1)}return c}catch{}try{let b=JSON.parse(await e.promises.readFile(g().join(a,"package.json"),"utf8")),c=b?.workspaces;if(Array.isArray(c))return c.filter(a=>"string"==typeof a);if(c&&Array.isArray(c.packages))return c.packages.filter(a=>"string"==typeof a)}catch{}return[]}function v(a,b){if(a.startsWith("..")||a.startsWith("/"))return null;for(let b of q)if(a.endsWith(b)){a=a.slice(0,-b.length);break}if(b.has(a))return a;for(let c of p){let d=a+c;if(b.has(d))return d}for(let c of p){let d=g().posix.join(a,"index"+c);if(b.has(d))return d}return null}async function w(a,b){let c,d=new Map;try{let b=(await e.promises.readFile(a,"utf8")).replace(/^\s*\/\/.*$/gm,"");c=JSON.parse(b)}catch{return d}let f=c?.compilerOptions?.baseUrl??".",h=c?.compilerOptions?.paths??{},i=g().resolve(g().dirname(a),f),j=g().relative(b,i)||".";for(let[a,b]of Object.entries(h)){if(!Array.isArray(b)||0===b.length)continue;let c=a.replace(/\/\*$/,""),e=b[0].replace(/\/\*$/,"");d.set(c,g().join(j,e))}return d}async function x(a){let b=[],c=[];try{let{stdout:b}=await j("git -c core.quotePath=false ls-files --cached --others --exclude-standard",{cwd:a,maxBuffer:0x3200000});c=b.split("\n").map(a=>a.trim()).filter(a=>/(^|\/)tsconfig[^/]*\.json$/.test(a)&&!a.includes("node_modules/"))}catch{try{await e.promises.access(g().join(a,"tsconfig.json")),c=["tsconfig.json"]}catch{}}for(let d of c){let c=await w(g().join(a,d),a);if(0===c.size)continue;let e=g().dirname(d);b.push({scope:"."===e?"":e,aliases:c,sortedAliases:y(c)})}let d=b.find(a=>""===a.scope);return d||(d={scope:"",aliases:new Map,sortedAliases:[]},b.push(d)),d.aliases.has("@")||(d.aliases.set("@","./src"),d.sortedAliases=y(d.aliases)),b.sort((a,b)=>b.scope.length-a.scope.length)}function y(a){return[...a.entries()].sort(([a],[b])=>b.length-a.length)}},27485:(a,b,c)=>{c.d(b,{_:()=>e});let d=new Set(["function","class","method"]);function e(a){return d.has(a.kind)}},28677:(a,b,c)=>{c.d(b,{Bu:()=>f,cn:()=>g,ik:()=>e});let d=new Map;function e(a){d.set(a.grammarId,a)}function f(a){let b=d.get(a);if(!b)throw Error(`[codeMap] no handler registered for grammar '${a}' — did the handler module get imported (handlers/index.ts barrel)?`);return b}function g(){let a=new Set;for(let b of d.values())for(let c of b.extensions)a.add(c.toLowerCase());return[...a]}},33265:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{E:()=>y,bQ:()=>z,cl:()=>s,s7:()=>x,u$:()=>r,xl:()=>t});var e=c(73024),f=c(76760),g=c.n(f),h=c(87956),i=c(86236),j=c(25344),k=c(27485),l=c(37765),m=a([h]);async function n(a,b,c){let d=Array(a.length),e=0;async function f(){for(;e<a.length;){let b=e++;d[b]=await c(a[b])}}return await Promise.all(Array.from({length:Math.min(b,a.length)},f)),d}async function o(a,b){let c,d,f,g=(0,h.M)(b);if(!g)return null;try{[c,d]=await Promise.all([e.promises.readFile(a,"utf8"),e.promises.stat(a).then(a=>a.mtimeMs)])}catch{return null}if(c.length>1e6)return null;let i=await (0,h.b)(g);try{f=i.parse(c)}catch(a){return console.error("[codeIndex] parse failed for",b,a),null}if(!f)return null;try{let a,e=(0,l.Bu)(g),h=e.extractSymbols(f.rootNode,c),i=(a=[],!function c(d){for(let e of d)a.push({filePath:b,qualifiedName:e.qualifiedName,name:e.name,kind:e.kind,startLine:e.startLine,endLine:e.endLine,params:e.params}),c(e.children)}(h),a),{specs:j,bindings:k}=e.extractImports(f.rootNode),m=e.extractCallSites(f.rootNode,i);return{path:b,language:g,mtime:d,symbolsTree:h,flatSymbols:i,importBindings:k,importSpecifiers:j,rawCalls:m}}finally{f.delete()}}function p(a,b){let c=null;for(let d of a)d.startLine<=b&&b<=d.endLine&&(!c||d.endLine-d.startLine<c.endLine-c.startLine)&&(c=d);return c}async function q(a){let b=Date.now(),c=await (0,j.iU)(a);c||(c=[],await (0,j.jH)(a,a,c));let d=c.length>j.BE;d&&(c=c.slice(0,j.BE));let e=new Set(c),f=await (0,j.ZT)(a),h=await (0,j.zC)(a,e),k=new Map;for(let b of i.I){let c=(0,l.Bu)(b);k.set(b,await c.buildProjectContext(a,e))}let m=(await n(c,50,b=>o(g().join(a,b),b))).filter(a=>null!==a),q=new Map;for(let a of m){let b=(0,l.Bu)(a.language),c=k.get(a.language),d=new Map,f=new Set;for(let g of a.importSpecifiers){if(d.has(g))continue;let h=b.resolveSpecifier(g,a.path,c,e);h&&h!==a.path&&(d.set(g,h),f.add(h))}let g=new Map,h=new Map;for(let b of a.flatSymbols){h.set(b.qualifiedName,b);let a=g.get(b.name);a?a.push(b):g.set(b.name,[b])}let i=new Map,j=new Map;for(let b of a.importBindings)b.isReexport?j.set(b.localName,b):i.set(b.localName,b);q.set(a.path,{path:a.path,language:a.language,mtime:a.mtime,symbolsTree:a.symbolsTree,flatSymbols:a.flatSymbols,importedFiles:f,importedBy:new Set,importBindings:a.importBindings,resolvedImports:d,intraCalls:[],outgoingCalls:[],incomingCalls:[],externalCalls:[],methodCalls:[],symbolsByName:g,symbolsByQname:h,bindingsByLocalName:i,reexportsByLocalName:j})}for(let a of q.values())for(let b of a.importedFiles){let c=q.get(b);c&&c.importedBy.add(a.path)}for(let a of m){let b=q.get(a.path),c=(0,l.Bu)(a.language),d=k.get(a.language),e=new Map,f=new Map,g=new Map,h=new Map;for(let i of a.rawCalls){let a=p(b.flatSymbols,i.line);if(a){for(let j of c.resolveCall(i,a,b,q,d))if("symbol"===j.kind)if(j.addr.filePath===b.path){let c=`${a.qualifiedName}${j.addr.qualifiedName}`,d=e.get(c);if(d)d.lines.push(i.line);else{let d={from:a.qualifiedName,to:j.addr.qualifiedName,lines:[i.line]};e.set(c,d),b.intraCalls.push(d)}}else{let c=`${a.qualifiedName}${j.addr.filePath}${j.addr.qualifiedName}`,d=f.get(c);if(d)d.lines.push(i.line);else{let d={from:a.qualifiedName,to:{filePath:j.addr.filePath,qualifiedName:j.addr.qualifiedName},lines:[i.line]};f.set(c,d),b.outgoingCalls.push(d)}}else if("external"===j.kind){let c=`${a.qualifiedName}${j.packageSpec}${j.name}`,d=g.get(c);if(d)d.lines.push(i.line);else{let d={from:a.qualifiedName,packageSpec:j.packageSpec,importedName:j.name,lines:[i.line]};g.set(c,d),b.externalCalls.push(d)}}else if("method-unresolved"===j.kind){let c=b.bindingsByLocalName.get(j.receiverName),d=c?b.resolvedImports.get(c.specifier)??"":"",e=`${a.qualifiedName}${j.receiverName}${j.methodName}`,f=h.get(e);if(f)f.lines.push(i.line);else{let c={from:a.qualifiedName,receiverName:j.receiverName,methodName:j.methodName,receiverFilePath:d,lines:[i.line]};h.set(e,c),b.methodCalls.push(c)}}}}for(let a of b.intraCalls)a.lines.sort((a,b)=>a-b);for(let a of b.outgoingCalls)a.lines.sort((a,b)=>a-b);for(let a of b.externalCalls)a.lines.sort((a,b)=>a-b);for(let a of b.methodCalls)a.lines.sort((a,b)=>a-b)}for(let a of q.values())for(let b of a.outgoingCalls){let c=q.get(b.to.filePath);c&&c.incomingCalls.push({from:{filePath:a.path,qualifiedName:b.from},to:b.to.qualifiedName,lines:b.lines})}return{cwd:a,files:q,truncated:d,fileCountCap:d?j.BE:void 0,tsconfigs:f,workspaces:h,projectContexts:k,fileSet:e,generatedAt:Date.now(),buildMs:Date.now()-b}}h=(m.then?(await m)():m)[0];let A=new Map,B=new Map;async function r(a,b={}){b.forceRefresh&&A.delete(a);let c=A.get(a);if(c)return c;let d=B.get(a);if(d)return d;let e=q(a).then(b=>(A.set(a,b),B.delete(a),b));return B.set(a,e),e}function s(a){if(!a){A.clear(),B.clear();return}A.delete(a),B.delete(a)}async function t(a,b,c){let d,f=c.files.get(b);if(!f)return!1;try{d=(await e.promises.stat(g().join(a,b))).mtimeMs}catch{return!1}if(d===f.mtime)return!1;let h=await o(g().join(a,b),b);if(!h)return!1;let i=(0,l.Bu)(h.language),j=c.projectContexts.get(h.language),k=new Map,m=new Set;for(let a of h.importSpecifiers){if(k.has(a))continue;let b=i.resolveSpecifier(a,h.path,j,c.fileSet);b&&b!==h.path&&(k.set(a,b),m.add(b))}let n=new Map,q=new Map;for(let a of h.flatSymbols){q.set(a.qualifiedName,a);let b=n.get(a.name);b?b.push(a):n.set(a.name,[a])}let r=new Map,s=new Map;for(let a of h.importBindings)a.isReexport?s.set(a.localName,a):r.set(a.localName,a);let t={path:h.path,language:h.language,mtime:h.mtime,symbolsTree:h.symbolsTree,flatSymbols:h.flatSymbols,importedFiles:m,importedBy:f.importedBy,importBindings:h.importBindings,resolvedImports:k,intraCalls:[],outgoingCalls:[],incomingCalls:f.incomingCalls,externalCalls:[],methodCalls:[],symbolsByName:n,symbolsByQname:q,bindingsByLocalName:r,reexportsByLocalName:s},u=new Map,v=new Map,w=new Map,x=new Map;for(let a of(c.files.set(h.path,t),h.rawCalls)){let b=p(t.flatSymbols,a.line);if(b){for(let d of i.resolveCall(a,b,t,c.files,j))if("symbol"===d.kind)if(d.addr.filePath===t.path){let c=`${b.qualifiedName}${d.addr.qualifiedName}`,e=u.get(c);if(e)e.lines.push(a.line);else{let e={from:b.qualifiedName,to:d.addr.qualifiedName,lines:[a.line]};u.set(c,e),t.intraCalls.push(e)}}else{let c=`${b.qualifiedName}${d.addr.filePath}${d.addr.qualifiedName}`,e=v.get(c);if(e)e.lines.push(a.line);else{let e={from:b.qualifiedName,to:{filePath:d.addr.filePath,qualifiedName:d.addr.qualifiedName},lines:[a.line]};v.set(c,e),t.outgoingCalls.push(e)}}else if("external"===d.kind){let c=`${b.qualifiedName}${d.packageSpec}${d.name}`,e=w.get(c);if(e)e.lines.push(a.line);else{let e={from:b.qualifiedName,packageSpec:d.packageSpec,importedName:d.name,lines:[a.line]};w.set(c,e),t.externalCalls.push(e)}}else if("method-unresolved"===d.kind){let c=t.bindingsByLocalName.get(d.receiverName),e=c?t.resolvedImports.get(c.specifier)??"":"",f=`${b.qualifiedName}${d.receiverName}${d.methodName}`,g=x.get(f);if(g)g.lines.push(a.line);else{let c={from:b.qualifiedName,receiverName:d.receiverName,methodName:d.methodName,receiverFilePath:e,lines:[a.line]};x.set(f,c),t.methodCalls.push(c)}}}}for(let a of t.intraCalls)a.lines.sort((a,b)=>a-b);for(let a of t.outgoingCalls)a.lines.sort((a,b)=>a-b);for(let a of t.externalCalls)a.lines.sort((a,b)=>a-b);for(let a of t.methodCalls)a.lines.sort((a,b)=>a-b);return!0}function u(a){return{filePath:a.filePath,qualifiedName:a.qualifiedName,name:a.name,kind:a.kind,startLine:a.startLine,endLine:a.endLine,params:a.params}}function v(a){let b=a.indexOf(">");return b>=0?a.slice(0,b):a}function w(a){if(a.length<2)return a;let b=[a[0]];for(let c=1;c<a.length;c++)a[c]!==a[c-1]&&b.push(a[c]);return b}function x(a,b){let c=a.files.get(b);if(!c)return null;let d=c.flatSymbols.filter(a=>!a.qualifiedName.includes(">")).map(u).sort((a,b)=>a.startLine-b.startLine),e=new Set(d.map(a=>a.qualifiedName)),f=new Map,g=[];for(let a of c.intraCalls){let b=v(a.from),c=v(a.to);if(b===c||!e.has(b)||!e.has(c))continue;let d=`${b}|${c}`,h=f.get(d);if(h)for(let b of a.lines)h.lines.push(b);else{let e={from:b,to:c,lines:a.lines.slice()};f.set(d,e),g.push(e)}}for(let a of g)a.lines.sort((a,b)=>a-b),a.lines=w(a.lines);let h=[],i=new Map;for(let b of c.outgoingCalls){let d=v(b.from);if(!e.has(d)||b.to.filePath===c.path)continue;let f=a.files.get(b.to.filePath);if(!f)continue;let g=f.symbolsByQname.get(b.to.qualifiedName);if(!g||!(0,k._)(g))continue;let j=`${g.filePath}|${g.qualifiedName}|${d}`,l=i.get(j);if(l)for(let a of b.lines)l.lines.push(a);else{let a={external:u(g),focalQname:d,lines:b.lines.slice()};i.set(j,a),h.push(a)}}let j=[],l=new Map;for(let b of c.incomingCalls){let d=v(b.to);if(!e.has(d)||b.from.filePath===c.path)continue;let f=a.files.get(b.from.filePath);if(!f)continue;let g=f.symbolsByQname.get(b.from.qualifiedName);if(!g||!(0,k._)(g))continue;let h=`${g.filePath}|${g.qualifiedName}|${d}`,i=l.get(h);if(i)for(let a of b.lines)i.lines.push(a);else{let a={external:u(g),focalQname:d,lines:b.lines.slice()};l.set(h,a),j.push(a)}}for(let a of h)a.lines.sort((a,b)=>a-b),a.lines=w(a.lines);for(let a of j)a.lines.sort((a,b)=>a-b),a.lines=w(a.lines);let m=[],n=new Map;for(let a of c.externalCalls){let b=v(a.from);if(!e.has(b))continue;let c=`${b}|${a.packageSpec}|${a.importedName}`,d=n.get(c);if(d)for(let b of a.lines)d.lines.push(b);else{let d={external:{name:a.importedName,packageSpec:a.packageSpec},focalQname:b,lines:a.lines.slice()};n.set(c,d),m.push(d)}}for(let a of m)a.lines.sort((a,b)=>a-b),a.lines=w(a.lines);let o=[],p=new Map;for(let a of c.methodCalls){let b=v(a.from);if(!e.has(b))continue;let c=`${b}|${a.receiverName}|${a.methodName}`,d=p.get(c);if(d)for(let b of a.lines)d.lines.push(b);else{let d={focalQname:b,receiverName:a.receiverName,methodName:a.methodName,receiverFilePath:a.receiverFilePath,lines:a.lines.slice()};p.set(c,d),o.push(d)}}for(let a of o)a.lines.sort((a,b)=>a-b),a.lines=w(a.lines);let q=(a,b)=>a.external.filePath.localeCompare(b.external.filePath)||a.external.qualifiedName.localeCompare(b.external.qualifiedName);return j.sort(q),h.sort(q),m.sort((a,b)=>a.external.packageSpec.localeCompare(b.external.packageSpec)||a.external.name.localeCompare(b.external.name)),o.sort((a,b)=>a.receiverName.localeCompare(b.receiverName)||a.methodName.localeCompare(b.methodName)),{filePath:c.path,language:c.language,fileCount:a.files.size,mtimeMs:c.mtime,functions:d,intraCalls:g,externalCalls:m,methodCalls:o,upstreamCalls:j,downstreamCalls:h}}function y(a,b){let c=a.files.get(b);return c?{filePath:c.path,language:c.language,symbols:c.symbolsTree}:null}function z(a,b,c){let d=b.trim().toLowerCase();if(!d)return{files:[],symbols:[]};let e=[];for(let b of a.files.values()){if(e.length>=c)break;b.path.toLowerCase().includes(d)&&e.push({type:"file",label:function(a){let b=a.lastIndexOf("/");return b>=0?a.slice(b+1):a}(b.path),hint:b.path,target:{kind:"file",filePath:b.path}})}let f=[];for(let b of a.files.values()){let a=!1;if(!function a(b,c){for(let d of b)if(c(d)||a(d.children,c))return!0;return!1}(b.symbolsTree,e=>f.length>=c?(a=!0,!0):(e.name.toLowerCase().includes(d)&&f.push({type:"symbol",label:e.name,hint:`${e.kind} \xb7 ${b.path}`,target:{kind:"symbol",filePath:b.path,line:e.startLine,symbolName:e.name,symbolKind:e.kind,qualifiedName:e.qualifiedName}}),!1)),a)break}return{files:e,symbols:f}}d()}catch(a){d(a)}})},37765:(a,b,c)=>{c.d(b,{Bu:()=>d.Bu});var d=c(28677),e=c(76760),f=c.n(e);function g(a){let b=0xdeadbeef,c=0x41c6ce57;for(let d=0;d<a.length;d++){let e=a.charCodeAt(d);b=Math.imul(b^e,0x9e3779b1),c=Math.imul(c^e,0x5f356495)}return b=Math.imul(b^b>>>16,0x85ebca6b)^Math.imul(c^c>>>13,0xc2b2ae35),(0x100000000*(2097151&(c=Math.imul(c^c>>>16,0x85ebca6b)^Math.imul(b^b>>>13,0xc2b2ae35)))+(b>>>0)>>>0).toString(16)}function h(a){return a.replace(/\s+/g," ").trim()}function i(a,b){return a?`${a}>${b}`:b}function j(a){let b=a.childForFieldName("name");if(b)return b.text;for(let b=0;b<a.namedChildCount;b++){let c=a.namedChild(b);if(c&&("identifier"===c.type||"type_identifier"===c.type||"property_identifier"===c.type))return c.text}return"<anonymous>"}function k(a,b,c,d,e=[],f){return{qualifiedName:i(d,b),name:b,kind:c,startLine:a.startPosition.row+1,endLine:a.endPosition.row+1,contentHash:g(h(a.text)),children:e,params:f}}function l(a){let b=a.childForFieldName("parameter");if(b)return[b.text];let c=a.childForFieldName("parameters");if(!c)return;let d=[];for(let a=0;a<c.namedChildCount;a++){let b=c.namedChild(a);b&&d.push(function a(b){switch(b.type){case"required_parameter":case"optional_parameter":{let c=b.childForFieldName("pattern");return c?a(c):b.text}case"assignment_pattern":{let c=b.childForFieldName("left");return c?a(c):b.text}case"default_parameter":case"typed_default_parameter":{let a=b.childForFieldName("name");return a?a.text:b.text}case"typed_parameter":for(let a=0;a<b.namedChildCount;a++){let c=b.namedChild(a);if(c?.type==="identifier")return c.text}return b.text;default:return b.text}}(b))}return d}function m(a,b){let c=a.text.split("\n"),d=c.length;if(0===d)return[];let e=new Uint8Array(d+2);for(let a of b){let b=Math.max(1,a.startLine),c=Math.min(d,a.endLine);for(let a=b;a<=c;a++)e[a]=1}let f=[],i=(a,b)=>{let d=!1;for(let e=a;e<=b;e++){let a=c[e-1];if(a&&a.trim().length>0){d=!0;break}}if(!d)return;let e=c.slice(a-1,b).join("\n");f.push({qualifiedName:`__code_${a}_${b}__`,name:"code",kind:"unknown",startLine:a,endLine:b,contentHash:g(h(e)),children:[]})},j=-1;for(let a=1;a<=d;a++)e[a]?j>=0&&(i(j,a-1),j=-1):j<0&&(j=a);return j>=0&&i(j,d),f}function n(a){let b=[],c=function(a){let b=[],c=-1,d=-1;for(let e=0;e<a.namedChildCount;e++){let f=a.namedChild(e);if(f){if("import_statement"===f.type||"export_statement"===f.type&&null!==f.childForFieldName("source")||"import_from_statement"===f.type||"future_import_statement"===f.type)b.push(f),c<0&&(c=f.startPosition.row+1),d=f.endPosition.row+1;else if(c>=0)break}}return c<0?null:{qualifiedName:"__imports__",name:"imports",kind:"unknown",startLine:c,endLine:d,contentHash:g(h(b.map(a=>a.text).join("\n"))),children:[]}}(a);c&&b.push(c);for(let c=0;c<a.namedChildCount;c++){let d=a.namedChild(c);d&&b.push(...function a(b,c,d=!1){switch(b.type){case"export_statement":case"export_default_declaration":{let d=[];for(let e=0;e<b.namedChildCount;e++){let f=b.namedChild(e);f&&d.push(...a(f,c,!0))}return d}case"function_declaration":case"generator_function_declaration":case"function_definition":return[k(b,j(b),"function",c,[],l(b))];case"class_declaration":case"abstract_class_declaration":{let a=j(b),d=i(c,a),e=function(a,b){if(!a)return[];let c=[];for(let d=0;d<a.namedChildCount;d++){let e=a.namedChild(d);if(e){if("method_definition"===e.type)c.push(k(e,j(e),"method",b,[],l(e)));else if("public_field_definition"===e.type){let a=e.childForFieldName("value");a&&("arrow_function"===a.type||"function_expression"===a.type)&&c.push(k(e,j(e),"method",b,[],l(a)))}}}return c}(b.childForFieldName("body"),d);return[k(b,a,"class",c,e)]}case"interface_declaration":return[k(b,j(b),"interface",c)];case"type_alias_declaration":return[k(b,j(b),"type",c)];case"enum_declaration":return[k(b,j(b),"enum",c)];case"lexical_declaration":case"variable_declaration":return function(a,b){let c=[];for(let d=0;d<a.namedChildCount;d++){let e=a.namedChild(d);if(!e||"variable_declarator"!==e.type)continue;let f=e.childForFieldName("name"),g=e.childForFieldName("value");if(!f)continue;let h=f.text,i=g&&("arrow_function"===g.type||"function_expression"===g.type),m=i&&g?l(g):void 0;if(c.push(k(a,h,i?"function":"const",b,[],m)),g&&"object"===g.type&&!i){let a=b?`${b}>${h}`:h;for(let b=0;b<g.namedChildCount;b++){let d=g.namedChild(b);if(d){if("pair"===d.type){let b=d.childForFieldName("key"),e=d.childForFieldName("value");if(!b||!e||"property_identifier"!==b.type&&"identifier"!==b.type||"arrow_function"!==e.type&&"function_expression"!==e.type)continue;c.push(k(d,b.text,"method",a,[],l(e)))}else if("method_definition"===d.type){let b=j(d);b&&c.push(k(d,b,"method",a,[],l(d)))}}}}}return c}(b,c);case"class_definition":{let a=j(b),d=i(c,a),e=function a(b,c){if(!b)return[];let d=[];for(let e=0;e<b.namedChildCount;e++){let f=b.namedChild(e);if(f){if("function_definition"===f.type)d.push(k(f,j(f),"method",c,[],l(f)));else if("decorated_definition"===f.type){let b=f.childForFieldName("definition");if(b?.type==="function_definition")d.push({...k(b,j(b),"method",c,[],l(b)),startLine:f.startPosition.row+1,contentHash:g(h(f.text))});else if(b?.type==="class_definition"){let e=j(b),l=i(c,e),m=a(b.childForFieldName("body"),l);d.push({...k(b,e,"class",c,m),startLine:f.startPosition.row+1,contentHash:g(h(f.text))})}}else if("class_definition"===f.type){let b=j(f),e=i(c,b),g=a(f.childForFieldName("body"),e);d.push(k(f,b,"class",c,g))}}}return d}(b.childForFieldName("body"),d);return[k(b,a,"class",c,e)]}case"decorated_definition":{let d=b.childForFieldName("definition");if(!d)return[];return a(d,c,!1).map(a=>({...a,startLine:b.startPosition.row+1,contentHash:g(h(b.text))}))}case"expression_statement":{let a=[];for(let d=0;d<b.namedChildCount;d++){let e=b.namedChild(d);if(e?.type==="assignment"){let d=function(a,b,c){let d=b.childForFieldName("left");if(!d||"identifier"!==d.type)return null;let e=d.text;return{qualifiedName:i(c,e),name:e,kind:"const",startLine:a.startPosition.row+1,endLine:a.endPosition.row+1,contentHash:g(h(a.text)),children:[]}}(b,e,c);d&&a.push(d)}}return a.push(...function(a,b){let c=null;for(let b=0;b<a.namedChildCount;b++){let d=a.namedChild(b);if(d){if("call_expression"===d.type){c=d;break}if("await_expression"===d.type){for(let a=0;a<d.namedChildCount;a++){let b=d.namedChild(a);if(b?.type==="call_expression"){c=b;break}}break}}}if(!c)return[];let d=c.childForFieldName("function"),e=c.childForFieldName("arguments");if(!d||!e)return[];let f=null,g=[];for(let a=0;a<e.namedChildCount;a++){let b=e.namedChild(a);if(b){if(null===f&&("string"===b.type||"template_string"===b.type)){let a=b.text;f=a.length>=2&&/^["'`]/.test(a)?a.slice(1,-1):a}("arrow_function"===b.type||"function_expression"===b.type)&&g.push(b)}}if(0===g.length||!f)return[];let h=function a(b){if("identifier"===b.type)return b.text;if("member_expression"===b.type){let a=b.childForFieldName("property");return a?.text??""}if("call_expression"===b.type){let c=b.childForFieldName("function");return c?a(c):""}return""}(d),i=h?`${h} ${f}`:f;return g.map((a,c)=>k(a,g.length>1?`${i} #${c+1}`:i,"function",b,[],l(a)))}(b,c)),a}default:return[]}}(d,void 0,!1))}return b.push(...m(a,b)),b}function o(a){let b=[];return!function a(c){if("call_expression"===c.type||"call"===c.type){let a=c.childForFieldName("function"),d=function a(b){if(!b)return null;if("identifier"===b.type||"shorthand_property_identifier"===b.type)return b.text;if("member_expression"===b.type){let a=b.childForFieldName("property");return a?.text??null}if("attribute"===b.type){let a=b.childForFieldName("attribute");return a?.text??null}return"call_expression"===b.type||"call"===b.type?a(b.childForFieldName("function")):null}(a);if(d){let e=function(a){if(!a||"member_expression"!==a.type&&"attribute"!==a.type)return;let b=a;for(;b;){if("identifier"===b.type)return b.text;if("this"===b.type||"super"===b.type)break;if("member_expression"===b.type||"attribute"===b.type){b=b.childForFieldName("object");continue}break}}(a);b.push({calleeName:d,line:c.startPosition.row+1,...e?{receiverName:e}:{}})}}else if("jsx_opening_element"===c.type||"jsx_self_closing_element"===c.type){let a=function a(b){return b?"identifier"===b.type?/^[A-Z]/.test(b.text)?b.text:null:"member_expression"===b.type||"jsx_member_expression"===b.type?a(b.childForFieldName("object")??b.namedChild(0)):null:null}(c.childForFieldName("name"));a&&b.push({calleeName:a,line:c.startPosition.row+1})}for(let b=0;b<c.childCount;b++){let d=c.child(b);d&&a(d)}}(a),b}function p(a){let b=[];for(let c=0;c<a.namedChildCount;c++){let d=a.namedChild(c);if(d)if("import_statement"===d.type){let a=d.childForFieldName("source");a?function(a,b,c){let d=q(b.text),e=null;for(let b=0;b<a.namedChildCount;b++){let c=a.namedChild(b);if(c?.type==="import_clause"){e=c;break}}if(e)for(let a=0;a<e.namedChildCount;a++){let b=e.namedChild(a);if(b){if("identifier"===b.type)c.push({specifier:d,importedName:"default",localName:b.text});else if("namespace_import"===b.type){let a=function(a,b){for(let c=0;c<a.namedChildCount;c++){let d=a.namedChild(c);if(d?.type===b)return d}return null}(b,"identifier");a&&c.push({specifier:d,importedName:"*",localName:a.text})}else if("named_imports"===b.type)for(let a=0;a<b.namedChildCount;a++){let e=b.namedChild(a);if(!e||"import_specifier"!==e.type)continue;let f=e.childForFieldName("name"),g=e.childForFieldName("alias");f&&c.push({specifier:d,importedName:f.text,localName:g?.text??f.text})}}}}(d,a,b):function(a,b){for(let c=0;c<a.childCount;c++){let d=a.child(c);if(d&&"name"===a.fieldNameForChild(c)){if("dotted_name"===d.type){let a=d.text,c=a.split(".")[0];b.push({specifier:a,importedName:"*",localName:c})}else if("aliased_import"===d.type){let a=d.childForFieldName("name"),c=d.childForFieldName("alias");a?.type==="dotted_name"&&c&&b.push({specifier:a.text,importedName:"*",localName:c.text})}}}}(d,b)}else"import_from_statement"===d.type&&function(a,b){let c=a.childForFieldName("module_name"),d="";if(c){if("dotted_name"===c.type)d=c.text;else if("relative_import"===c.type){let a="",b="";for(let d=0;d<c.namedChildCount;d++){let e=c.namedChild(d);e&&("import_prefix"===e.type?a=e.text:"dotted_name"===e.type&&(b=e.text))}d=a+b}}if(!d)return;let e=!1;for(let c=0;c<a.childCount;c++){let f=a.child(c);if(!f)continue;let g=a.fieldNameForChild(c);if("wildcard_import"===f.type){e=!0;continue}if("name"===g){if("dotted_name"===f.type){let a=f.text;b.push({specifier:d,importedName:a,localName:a})}else if("aliased_import"===f.type){let a=f.childForFieldName("name"),c=f.childForFieldName("alias");a?.type==="dotted_name"&&c&&b.push({specifier:d,importedName:a.text,localName:c.text})}}}e&&b.push({specifier:d,importedName:"*",localName:"*"})}(d,b)}return b}function q(a){return a.length>=2&&('"'===a[0]||"'"===a[0])&&a[a.length-1]===a[0]?a.slice(1,-1):a}function r(a){let b=[];function c(a){if(!a||"string"!==a.type)return null;for(let b=0;b<a.namedChildCount;b++){let c=a.namedChild(b);if(c&&"string_fragment"===c.type)return c.text}return""}return!function a(d){switch(d.type){case"import_statement":case"export_statement":{let a=c(d.childForFieldName("source"));a&&b.push(a);return}case"call_expression":{let a=d.childForFieldName("function");if(a){let e="import"===a.type,f="identifier"===a.type&&"require"===a.text;if(e||f){let a=d.childForFieldName("arguments");if(a&&a.namedChildCount>0){let d=c(a.namedChild(0));d&&b.push(d)}}}}}for(let b=0;b<d.namedChildCount;b++){let c=d.namedChild(b);c&&a(c)}}(a),b}let s={typescript:r,tsx:r,javascript:r,python:function(a){let b=[];return!function a(c){switch(c.type){case"import_statement":for(let a=0;a<c.childCount;a++){let d=c.child(a);if(d&&"name"===c.fieldNameForChild(a)){if("dotted_name"===d.type)b.push(d.text);else if("aliased_import"===d.type){let a=d.childForFieldName("name");a?.type==="dotted_name"&&b.push(a.text)}}}return;case"import_from_statement":{let a=function(a){let b=a.childForFieldName("module_name");if(!b)return"";if("dotted_name"===b.type)return b.text;if("relative_import"===b.type){let a="",c="";for(let d=0;d<b.namedChildCount;d++){let e=b.namedChild(d);e&&("import_prefix"===e.type?a=e.text:"dotted_name"===e.type&&(c=e.text))}return a+c}return""}(c);a&&b.push(a);return}}for(let b=0;b<c.namedChildCount;b++){let d=c.namedChild(b);d&&a(d)}}(a),b}};function t(a,b){let c=s[b];return c?c(a):[]}var u=c(25344);function v(a){return"function"===a||"class"===a||"method"===a}function w(a,b){return{grammarId:a,extensions:b,extractSymbols:(a,b)=>n(a),extractImports:b=>({specs:t(b,a),bindings:[...p(b),...function(a){let b=[];for(let c=0;c<a.namedChildCount;c++){let d=a.namedChild(c);if(!d||"export_statement"!==d.type)continue;let e=d.childForFieldName("source");if(!e)continue;let f=q(e.text),g=null;for(let a=0;a<d.namedChildCount;a++){let b=d.namedChild(a);if(b?.type==="export_clause"){g=b;break}}if(g)for(let a=0;a<g.namedChildCount;a++){let c=g.namedChild(a);if(!c||"export_specifier"!==c.type)continue;let d=c.childForFieldName("name"),e=c.childForFieldName("alias");if(!d)continue;let h=d.text,i=e?.text??h;b.push({localName:i,specifier:f,importedName:h,isReexport:!0})}}return b}(b)]}),extractCallSites:(a,b)=>o(a),async buildProjectContext(a,b){let c=new Set(b),d=await (0,u.ZT)(a),e=await (0,u.zC)(a,c),f=[...e.keys()].sort((a,b)=>b.length-a.length);return{cwd:a,tsconfigs:d,workspaces:e,sortedWsNames:f,owningScopesCache:new Map}},resolveSpecifier(a,b,c,d){let e=c.owningScopesCache.get(b);if(e||(e=c.tsconfigs.filter(a=>(0,u._0)(b,a.scope)),c.owningScopesCache.set(b,e)),a.startsWith("./")||a.startsWith("../"))return(0,u.KP)(f().resolve(c.cwd,f().dirname(b),a),c.cwd,d);if(a.startsWith("/"))return(0,u.KP)(f().resolve(c.cwd,a.slice(1)),c.cwd,d);for(let b of e){let e=b.sortedAliases.find(([b])=>a===b||a.startsWith(b+"/"));if(!e)continue;let[g,h]=e,i=a===g?"":a.slice(g.length+1),j=(0,u.KP)(f().resolve(c.cwd,h,i),c.cwd,d);if(j)return j}for(let b of c.sortedWsNames){if(a!==b&&!a.startsWith(b+"/"))continue;let e=c.workspaces.get(b);if(a===b)return e.entryFile;let g=a.slice(b.length+1);return(0,u.IS)(f().posix.join(e.dir,g),d)??(0,u.IS)(f().posix.join(e.dir,"src",g),d)}return null},resolveCall(a,b,c,d,e){if(a.receiverName){let b=c.bindingsByLocalName.get(a.receiverName);if(!b)return[];let e=c.resolvedImports.get(b.specifier);if(!e)return[];let f=d.get(e);if(!f)return[];let g=function a(b,c,d,e,f,g){if(e>5||f.has(b.path))return null;if(f.add(b.path),"*"!==c){let a=`${c}>${d}`,e=b.symbolsByQname.get(a);if(e&&v(e.kind))return e}if("*"===c){let a=b.symbolsByName.get(d);if(a){let b=null;for(let c of a)!c.qualifiedName.includes(">")&&v(c.kind)&&(!b||c.endLine-c.startLine>b.endLine-b.startLine)&&(b=c);if(b)return b}}let h=b.reexportsByLocalName.get(c);if(h){let c=b.resolvedImports.get(h.specifier);if(c){let b=g.get(c);if(b){let c=a(b,h.importedName,d,e+1,f,g);if(c)return c}}}return null}(f,b.importedName,a.calleeName,0,new Set,d);return g?[{kind:"symbol",addr:{filePath:g.filePath,qualifiedName:g.qualifiedName}}]:[{kind:"method-unresolved",receiverName:a.receiverName,methodName:a.calleeName}]}let f=c.symbolsByName.get(a.calleeName);if(f&&f.length>0){let a=[];for(let c of f)c.qualifiedName!==b.qualifiedName&&v(c.kind)&&a.push({kind:"symbol",addr:{filePath:c.filePath,qualifiedName:c.qualifiedName}});return a}let g=c.bindingsByLocalName.get(a.calleeName);if(!g)return[];let h=c.resolvedImports.get(g.specifier);if(!h)return[{kind:"external",name:g.importedName,packageSpec:g.specifier}];let i=d.get(h);if(!i)return[];let j=function a(b,c,d,e,f){if(d>5||e.has(b.path))return null;e.add(b.path);let g=b.symbolsByName.get(c);if(g){let a=null;for(let b of g)v(b.kind)&&(!a||b.endLine-b.startLine>a.endLine-a.startLine)&&(a=b);if(a)return a}let h=b.reexportsByLocalName.get(c);if(h){let c=b.resolvedImports.get(h.specifier);if(c){let b=f.get(c);if(b){let c=a(b,h.importedName,d+1,e,f);if(c)return c}}}return null}(i,g.importedName,0,new Set,d);return j?[{kind:"symbol",addr:{filePath:j.filePath,qualifiedName:j.qualifiedName}}]:[]},moduleForFile:(a,b)=>a}}let x=w("typescript",[".ts"]),y=w("tsx",[".tsx",".jsx"]),z=w("javascript",[".js",".mjs",".cjs"]);function A(a){return"function"===a||"class"===a||"method"===a}function B(a,b,c){let d=b.replace(/\./g,"/"),e=(...a)=>a.filter(a=>""!==a&&"."!==a).join("/");if(!d){let b=e(a,"__init__.py");return c.has(b)?b:null}let f=e(a,d+".py");if(c.has(f))return f;let g=e(a,d,"__init__.py");return c.has(g)?g:null}var C=c(73024);function D(a,b,c,d,e=[],f){return{qualifiedName:d?`${d}>${b}`:b,name:b,kind:c,startLine:a.startPosition.row+1,endLine:a.endPosition.row+1,contentHash:g(h(a.text)),children:e,params:f}}function E(a){let b=a.childForFieldName("parameters");if(!b)return;let c=[];for(let a=0;a<b.namedChildCount;a++){let d=b.namedChild(a);if(d){if("parameter_declaration"===d.type){let a=d.childForFieldName("name");if(!a){c.push("_");continue}if("identifier"===a.type)c.push(a.text);else if("identifier_list"===a.type)for(let b=0;b<a.namedChildCount;b++){let d=a.namedChild(b);d?.type==="identifier"&&c.push(d.text)}else c.push(a.text)}else if("variadic_parameter_declaration"===d.type){let a=d.childForFieldName("name");a?.type==="identifier"?c.push(`...${a.text}`):c.push("...")}}}return c}async function F(a){try{let b=await C.promises.readFile(f().join(a,"go.mod"),"utf8"),c=/^\s*module\s+(\S+)/m.exec(b);return c?c[1].trim():null}catch{return null}}function G(a){return"function"===a||"class"===a||"method"===a}function H(a,b,c,d,e=[],f){return{qualifiedName:d?`${d}>${b}`:b,name:b,kind:c,startLine:a.startPosition.row+1,endLine:a.endPosition.row+1,contentHash:g(h(a.text)),children:e,params:f}}function I(a){let b=a.childForFieldName("parameters");if(!b)return;let c=[];for(let a=0;a<b.namedChildCount;a++){let d=b.namedChild(a);if(d)if("self_parameter"===d.type)c.push(d.text);else if("parameter"===d.type){let a=d.childForFieldName("pattern");a?c.push(a.text):c.push("_")}else"variadic_parameter"===d.type&&c.push("...")}return c}async function J(a,b){let c=new Map,d=new Map,e=new Set;async function g(h,i){let j;if(e.has(i))return;e.add(i),c.set(h,i),d.set(i,h);try{j=await C.promises.readFile(f().join(a,i),"utf8")}catch{return}let k=function(a){let b,c=a.replace(/\/\*[\s\S]*?\*\//g,"").replace(/\/\/.*$/gm,"").replace(/"(?:\\.|[^"\\\n])*"/g,'""'),d=[],e=/\b(?:pub(?:\s*\([^)]*\))?\s+)?mod\s+(\w+)\s*;/g;for(;null!==(b=e.exec(c));)d.push(b[1]);return d}(j);if(0===k.length)return;let l=f().dirname(i),m=f().basename(i,".rs"),n="mod"===m||"lib"===m||"main"===m?[l]:[l,f().join(l,m)];for(let a of k){let c=`${h}::${a}`,d=null;for(let c of n){for(let e of[f().join(c,`${a}.rs`),f().join(c,a,"mod.rs")]){let a=e.startsWith("./")?e.slice(2):e;if(b.has(a)){d=a;break}}if(d)break}d&&await g(c,d)}}for(let a of function(a){let b=[];for(let c of a)("src/lib.rs"===c||"src/main.rs"===c||c.endsWith("/src/lib.rs")||c.endsWith("/src/main.rs")||/^src\/bin\/[^/]+\.rs$/.test(c)||/\/src\/bin\/[^/]+\.rs$/.test(c))&&b.push(c);return b}(b))if("src/lib.rs"===a||"src/main.rs"===a)await g("crate",a);else if(a.startsWith("src/bin/"))await g("crate",a);else{let b=a.split("/"),c=b.indexOf("src");if(c>0){let d=b[c-1];await g(d,a)}}return{modTree:c,fileToMod:d}}function K(a){return"function"===a||"class"===a||"method"===a}(0,d.ik)(x),(0,d.ik)(y),(0,d.ik)(z),(0,d.ik)({grammarId:"python",extensions:[".py",".pyi"],extractSymbols:(a,b)=>n(a),extractImports:a=>({specs:t(a,"python"),bindings:p(a)}),extractCallSites:(a,b)=>o(a),buildProjectContext(a,b){let c=[a],d=!1;if(b.has("src/__init__.py"))d=!0;else for(let a of b)if(a.startsWith("src/")&&a.endsWith(".py")){d=!0;break}return d&&c.push(f().join(a,"src")),{cwd:a,pythonRoots:c}},resolveSpecifier(a,b,c,d){let e=/^(\.+)/.exec(a);if(e){let c=e[1].length,g=a.slice(c),h=f().dirname(b);for(let a=1;a<c;a++)h=f().dirname(h);return B(h||".",g,d)}for(let b of c.pythonRoots){let e=B(f().relative(c.cwd,b)||".",a,d);if(e)return e}return null},resolveCall(a,b,c,d,e){if(a.receiverName){let b=c.bindingsByLocalName.get(a.receiverName);if(!b)return[];let e=c.resolvedImports.get(b.specifier);if(!e)return[];let f=d.get(e);if(!f)return[];let g=function(a,b,c){if("*"!==b){let d=`${b}>${c}`,e=a.symbolsByQname.get(d);if(e&&A(e.kind))return e}if("*"===b){let b=a.symbolsByName.get(c);if(b){let a=null;for(let c of b)!c.qualifiedName.includes(">")&&A(c.kind)&&(!a||c.endLine-c.startLine>a.endLine-a.startLine)&&(a=c);if(a)return a}}return null}(f,b.importedName,a.calleeName);return g?[{kind:"symbol",addr:{filePath:g.filePath,qualifiedName:g.qualifiedName}}]:[{kind:"method-unresolved",receiverName:a.receiverName,methodName:a.calleeName}]}let f=c.symbolsByName.get(a.calleeName);if(f&&f.length>0){let a=[];for(let c of f)c.qualifiedName!==b.qualifiedName&&A(c.kind)&&a.push({kind:"symbol",addr:{filePath:c.filePath,qualifiedName:c.qualifiedName}});return a}let g=c.bindingsByLocalName.get(a.calleeName);if(!g)return[];let h=c.resolvedImports.get(g.specifier);if(!h)return[{kind:"external",name:g.importedName,packageSpec:g.specifier}];let i=d.get(h);if(!i)return[];let j=function(a,b){let c=a.symbolsByName.get(b);if(!c)return null;let d=null;for(let a of c)A(a.kind)&&(!d||a.endLine-a.startLine>d.endLine-d.startLine)&&(d=a);return d}(i,g.importedName);return j?[{kind:"symbol",addr:{filePath:j.filePath,qualifiedName:j.qualifiedName}}]:[]},moduleForFile:(a,b)=>a}),(0,d.ik)({grammarId:"go",extensions:[".go"],extractSymbols(a,b){let c=[],d=function(a){let b=[],c=-1,d=-1;for(let e=0;e<a.namedChildCount;e++){let f=a.namedChild(e);if(f){if("import_declaration"===f.type)b.push(f),c<0&&(c=f.startPosition.row+1),d=f.endPosition.row+1;else if("package_clause"===f.type)continue;else if(c>=0)break}}return c<0?null:{qualifiedName:"__imports__",name:"imports",kind:"unknown",startLine:c,endLine:d,contentHash:g(h(b.map(a=>a.text).join("\n"))),children:[]}}(a);d&&c.push(d);let{symbols:e,pendingMethods:f}=function(a){let b=[],c=[];for(let d=0;d<a.namedChildCount;d++){let e=a.namedChild(d);if(e)switch(e.type){case"function_declaration":{let a=e.childForFieldName("name");if(!a)break;b.push(D(e,a.text,"function",void 0,[],E(e)));break}case"method_declaration":{let a=e.childForFieldName("name");if(!a)break;let d=function(a){let b=a.childForFieldName("receiver");if(!b)return null;for(let a=0;a<b.namedChildCount;a++){let c=b.namedChild(a);if(c?.type!=="parameter_declaration")continue;let d=c.childForFieldName("type");if(!d)break;return function a(b){if("type_identifier"===b.type)return b.text;if("pointer_type"===b.type){for(let c=0;c<b.namedChildCount;c++){let d=b.namedChild(c);if(d){let b=a(d);if(b)return b}}return null}if("generic_type"===b.type){let c=b.childForFieldName("type");if(c)return a(c)}return null}(d)}return null}(e),f=D(e,a.text,"method",d??void 0,[],E(e));d?c.push({receiverType:d,symbol:f}):b.push(f);break}case"type_declaration":b.push(...function(a,b){let c=[];for(let d=0;d<a.namedChildCount;d++){let e=a.namedChild(d);if(e&&("type_spec"===e.type||"type_alias"===e.type)){let a=e.childForFieldName("name"),d=e.childForFieldName("type");if(!a)continue;let f=a.text,g=d?.type==="interface_type"?"interface":"class";c.push(D(e,f,g,b))}}return c}(e,void 0));break;case"var_declaration":case"const_declaration":b.push(...function(a,b){let c=[];for(let d=0;d<a.namedChildCount;d++){let e=a.namedChild(d);if(e&&("var_spec"===e.type||"const_spec"===e.type)){let a=e.childForFieldName("name");if(!a)continue;if("identifier_list"===a.type)for(let d=0;d<a.namedChildCount;d++){let f=a.namedChild(d);f?.type==="identifier"&&c.push(D(e,f.text,"const",b))}else"identifier"===a.type&&c.push(D(e,a.text,"const",b))}}return c}(e,void 0))}}return{symbols:b,pendingMethods:c}}(a);return c.push(...function(a,b){if(0===b.length)return a;let c=new Map;for(let b of a)("class"===b.kind||"interface"===b.kind)&&c.set(b.name,b);let d=[];for(let a of b){let b=c.get(a.receiverType);b?b.children=[...b.children,a.symbol]:d.push(a.symbol)}return[...a,...d]}(e,f)),c.push(...m(a,c)),c},extractImports:a=>(function(a){let b=[],c=[];function d(a){var d;let e,f=a.childForFieldName("path");if(!f)return;let g=(d=f.text).length>=2&&('"'===d[0]||"'"===d[0]||"`"===d[0])&&d[d.length-1]===d[0]?d.slice(1,-1):d;if(!g)return;b.push(g);let h=a.childForFieldName("name");if(h)e=h.text;else{let a=g.split("/");e=a[a.length-1]||g}c.push({specifier:g,importedName:"*",localName:e})}return!function a(b){if("import_declaration"===b.type){for(let a=0;a<b.namedChildCount;a++){let c=b.namedChild(a);if(c){if("import_spec"===c.type)d(c);else if("import_spec_list"===c.type)for(let a=0;a<c.namedChildCount;a++){let b=c.namedChild(a);b?.type==="import_spec"&&d(b)}}}return}for(let c=0;c<b.namedChildCount;c++){let d=b.namedChild(c);d&&a(d)}}(a),{specs:b,bindings:c}})(a),extractCallSites:(a,b)=>{let c;return c=[],!function a(b){if("call_expression"===b.type){let a=b.childForFieldName("function"),d=function a(b){if(!b)return null;if("identifier"===b.type)return b.text;if("selector_expression"===b.type){let a=b.childForFieldName("field");return a?.text??null}return"call_expression"===b.type?a(b.childForFieldName("function")):null}(a);if(d){let e=function(a){if(!a||"selector_expression"!==a.type)return;let b=a;for(;b;){if("identifier"===b.type)return b.text;if("selector_expression"===b.type){b=b.childForFieldName("operand");continue}break}}(a);c.push({calleeName:d,line:b.startPosition.row+1,...e?{receiverName:e}:{}})}}for(let c=0;c<b.childCount;c++){let d=b.child(c);d&&a(d)}}(a),c},async buildProjectContext(a,b){let c=await F(a);return{cwd:a,modulePath:c,dirToGoFiles:function(a){let b=new Map;for(let c of a){if(!c.endsWith(".go"))continue;let a=f().dirname(c),d=b.get(a);d?d.push(c):b.set(a,[c])}return b}(b)}},resolveSpecifier(a,b,c,d){if(!c.modulePath)return null;if(a===c.modulePath){let a=c.dirToGoFiles.get(".");return a?.[0]??null}if(a.startsWith(c.modulePath+"/")){let b=a.slice(c.modulePath.length+1),d=c.dirToGoFiles.get(b);return d?.[0]??null}return null},resolveCall(a,b,c,d,e){let g=f().dirname(c.path),h=e.dirToGoFiles.get(g)??[c.path];if(a.receiverName){let b=c.bindingsByLocalName.get(a.receiverName);if(b){let g=c.resolvedImports.get(b.specifier);if(!g)return[{kind:"external",name:a.calleeName,packageSpec:b.specifier}];let h=f().dirname(g);for(let b of e.dirToGoFiles.get(h)??[]){let c,e=d.get(b);if(!e)continue;let f=e.symbolsByName.get(a.calleeName);if(f){for(let a of f)if(!a.qualifiedName.includes(">")&&G(a.kind)){c=a;break}if(c)return[{kind:"symbol",addr:{filePath:c.filePath,qualifiedName:c.qualifiedName}}]}}return[{kind:"external",name:a.calleeName,packageSpec:b.specifier}]}let g=`${a.receiverName}>${a.calleeName}`;for(let a of h){let b=d.get(a);if(!b)continue;let c=b.symbolsByQname.get(g);if(c&&G(c.kind))return[{kind:"symbol",addr:{filePath:c.filePath,qualifiedName:c.qualifiedName}}]}return[{kind:"method-unresolved",receiverName:a.receiverName,methodName:a.calleeName}]}let i=[];for(let c of h){let e=d.get(c);if(!e)continue;let f=e.symbolsByName.get(a.calleeName);if(f)for(let a of f)!(a.qualifiedName===b.qualifiedName||a.qualifiedName.includes(">"))&&G(a.kind)&&i.push({kind:"symbol",addr:{filePath:a.filePath,qualifiedName:a.qualifiedName}})}return i},moduleForFile(a,b){let c=f().dirname(a);return b?.modulePath?"."===c?b.modulePath:`${b.modulePath}/${c}`:c}}),(0,d.ik)({grammarId:"rust",extensions:[".rs"],extractSymbols(a,b){let c=[],d=function(a){let b=[],c=-1,d=-1;for(let e=0;e<a.namedChildCount;e++){let f=a.namedChild(e);if(f){if("use_declaration"===f.type||"extern_crate_declaration"===f.type)b.push(f),c<0&&(c=f.startPosition.row+1),d=f.endPosition.row+1;else if(c>=0)break}}return c<0?null:{qualifiedName:"__imports__",name:"imports",kind:"unknown",startLine:c,endLine:d,contentHash:g(h(b.map(a=>a.text).join("\n"))),children:[]}}(a);d&&c.push(d);let{symbols:e,pendingImpls:f}=function(a){let b=[],c=[];for(let d=0;d<a.namedChildCount;d++){let e=a.namedChild(d);if(e)switch(e.type){case"function_item":{let a=e.childForFieldName("name");if(!a)break;b.push(H(e,a.text,"function",void 0,[],I(e)));break}case"struct_item":case"union_item":{let a=e.childForFieldName("name");if(!a)break;b.push(H(e,a.text,"class",void 0));break}case"enum_item":{let a=e.childForFieldName("name");if(!a)break;b.push(H(e,a.text,"enum",void 0));break}case"trait_item":{let a=e.childForFieldName("name");if(!a)break;let c=function(a,b){let c=a.childForFieldName("body");if(!c)return[];let d=[];for(let a=0;a<c.namedChildCount;a++){let e=c.namedChild(a);if(e&&("function_item"===e.type||"function_signature_item"===e.type)){let a=e.childForFieldName("name");if(!a)continue;d.push(H(e,a.text,"method",b,[],I(e)))}}return d}(e,a.text);b.push(H(e,a.text,"interface",void 0,c));break}case"impl_item":{let a=function(a){let b=a.childForFieldName("type");return b?function a(b){if("type_identifier"===b.type)return b.text;if("generic_type"===b.type){let c=b.childForFieldName("type");if(c)return a(c)}if("reference_type"===b.type)for(let c=0;c<b.namedChildCount;c++){let d=b.namedChild(c);if(d){let b=a(d);if(b)return b}}if("scoped_type_identifier"===b.type){let a=b.childForFieldName("name");if(a?.type==="type_identifier")return a.text}return null}(b):null}(e);if(!a)break;let b=function(a,b){let c=a.childForFieldName("body");if(!c)return[];let d=[];for(let a=0;a<c.namedChildCount;a++){let e=c.namedChild(a);if(e){if("function_item"===e.type){let a=e.childForFieldName("name");if(!a)continue;d.push(H(e,a.text,"method",b,[],I(e)))}else if("function_signature_item"===e.type){let a=e.childForFieldName("name");if(!a)continue;d.push(H(e,a.text,"method",b,[],I(e)))}}}return d}(e,a);b.length>0&&c.push({targetType:a,methods:b});break}case"const_item":case"static_item":{let a=e.childForFieldName("name");if(!a)break;b.push(H(e,a.text,"const",void 0));break}case"type_item":{let a=e.childForFieldName("name");if(!a)break;b.push(H(e,a.text,"type",void 0));break}case"mod_item":{let a=e.childForFieldName("name"),c=e.childForFieldName("body");if(!a||!c)break;b.push(H(e,a.text,"class",void 0))}}}return{symbols:b,pendingImpls:c}}(a);return c.push(...function(a,b){if(0===b.length)return a;let c=new Map;for(let b of a)("class"===b.kind||"enum"===b.kind||"interface"===b.kind)&&c.set(b.name,b);let d=[];for(let a of b){let b=c.get(a.targetType);b?b.children=[...b.children,...a.methods]:d.push(...a.methods)}return[...a,...d]}(e,f)),c.push(...m(a,c)),c},extractImports:a=>(function(a){let b=[],c=[];function d(a){if("identifier"===a.type||"crate"===a.type||"self"===a.type||"super"===a.type)return a.text;if("scoped_identifier"===a.type){let b=a.childForFieldName("path"),c=a.childForFieldName("name"),e=b?d(b):"",f=c?.text??"";return e?`${e}::${f}`:f}return a.text}function e(a,b){return a?b?`${a}::${b}`:a:b}function f(a){let b=a.split("::");return b[b.length-1]??a}return!function a(g){if("use_declaration"===g.type)return void function(a){for(let g=0;g<a.namedChildCount;g++){let h=a.namedChild(g);h&&function a(g,h){switch(g.type){case"use_as_clause":{let a=g.childForFieldName("path"),i=g.childForFieldName("alias");if(a&&i){let g=e(h,d(a));b.push(g),c.push({specifier:g,importedName:f(g),localName:i.text})}break}case"use_list":for(let b=0;b<g.namedChildCount;b++){let c=g.namedChild(b);c&&a(c,h)}break;case"scoped_use_list":{let b=g.childForFieldName("path"),c=g.childForFieldName("list"),f=b?e(h,d(b)):h;if(c)for(let b=0;b<c.namedChildCount;b++){let d=c.namedChild(b);d&&a(d,f)}break}case"use_wildcard":{let a=g.childForFieldName("path"),f=a?e(h,d(a)):h;f&&(b.push(f),c.push({specifier:f,importedName:"*",localName:"*"}));break}case"identifier":case"self":case"super":case"crate":case"scoped_identifier":{let a=e(h,d(g));a&&(b.push(a),c.push({specifier:a,importedName:f(a),localName:f(a)}))}}}(h,"")}}(g);if("extern_crate_declaration"===g.type){let a=g.childForFieldName("name");a&&(b.push(a.text),c.push({specifier:a.text,importedName:"*",localName:a.text}));return}if("mod_item"===g.type){let a=g.childForFieldName("body"),c=g.childForFieldName("name");!a&&c&&b.push(c.text);return}for(let b=0;b<g.namedChildCount;b++){let c=g.namedChild(b);c&&a(c)}}(a),{specs:b,bindings:c}})(a),extractCallSites:(a,b)=>{let c;return c=[],!function a(b){if("call_expression"===b.type){let a=b.childForFieldName("function"),d=function(a){if(!a)return null;if("identifier"===a.type)return a.text;if("scoped_identifier"===a.type){let b=a.childForFieldName("name");return b?.text??null}if("field_expression"===a.type){let b=a.childForFieldName("field");return b?.text??null}return null}(a);if(d){let e=function(a){if(a){if("scoped_identifier"===a.type){let b=a;for(;b;){if("identifier"===b.type)return b.text;if("scoped_identifier"===b.type){b=b.childForFieldName("path");continue}break}}if("field_expression"===a.type){let b=a.childForFieldName("value");if(b?.type==="identifier")return b.text}}}(a);c.push({calleeName:d,line:b.startPosition.row+1,...e?{receiverName:e}:{}})}}else if("method_call_expression"===b.type){let a=b.childForFieldName("method"),d=b.childForFieldName("value");if(a){let e=d?.type==="identifier"?d.text:void 0;c.push({calleeName:a.text,line:b.startPosition.row+1,...e?{receiverName:e}:{}})}}for(let c=0;c<b.childCount;c++){let d=b.child(c);d&&a(d)}}(a),c},async buildProjectContext(a,b){let{modTree:c,fileToMod:d}=await J(a,b);return{cwd:a,modTree:c,fileToMod:d}},resolveSpecifier(a,b,c,d){let e=c.fileToMod.get(b);if(!e)return null;let f=function(a,b){if(a.startsWith("crate::"))return a;if("crate"===a)return"crate";if(a.startsWith("self::"))return`${b}::${a.slice(6)}`;if("self"===a)return b;if(a.startsWith("super::")){let c=b,d=a;for(;d.startsWith("super::");){let a=c.lastIndexOf("::");if(a<0)return null;c=c.slice(0,a),d=d.slice(7)}if("super"===d){let a=c.lastIndexOf("::");return a<0?null:c.slice(0,a)}return d?`${c}::${d}`:c}return null}(a,e);if(!f)return null;if(c.modTree.has(f))return c.modTree.get(f);let g=f.split("::");for(;g.length>1;){g.pop();let a=g.join("::"),b=c.modTree.get(a);if(b)return b}return null},resolveCall(a,b,c,d,e){let f;if(a.receiverName){let b=c.bindingsByLocalName.get(a.receiverName);if(b){let e=c.resolvedImports.get(b.specifier);if(!e)return[{kind:"external",name:a.calleeName,packageSpec:b.specifier}];let f=d.get(e);if(!f)return[];let g=f.symbolsByName.get(a.calleeName);if(g){for(let a of g)if(!a.qualifiedName.includes(">")&&K(a.kind))return[{kind:"symbol",addr:{filePath:a.filePath,qualifiedName:a.qualifiedName}}]}let h=`${b.importedName}>${a.calleeName}`,i=f.symbolsByQname.get(h);return i&&K(i.kind)?[{kind:"symbol",addr:{filePath:i.filePath,qualifiedName:i.qualifiedName}}]:[{kind:"method-unresolved",receiverName:a.receiverName,methodName:a.calleeName}]}let e=`${a.receiverName}>${a.calleeName}`,f=c.symbolsByQname.get(e);if(f)return[{kind:"symbol",addr:{filePath:f.filePath,qualifiedName:f.qualifiedName}}];let g=[],h=c.symbolsByName.get(a.calleeName);if(h)for(let a of h)"method"===a.kind&&g.push({kind:"symbol",addr:{filePath:a.filePath,qualifiedName:a.qualifiedName}});return g.length>0?g:[{kind:"method-unresolved",receiverName:a.receiverName,methodName:a.calleeName}]}let g=[],h=c.symbolsByName.get(a.calleeName);if(h)for(let a of h)!(a.qualifiedName===b.qualifiedName||a.qualifiedName.includes(">"))&&K(a.kind)&&g.push({kind:"symbol",addr:{filePath:a.filePath,qualifiedName:a.qualifiedName}});if(g.length>0)return g;let i=c.bindingsByLocalName.get(a.calleeName);if(!i)return[];let j=c.resolvedImports.get(i.specifier);if(!j)return[{kind:"external",name:i.importedName,packageSpec:i.specifier}];let k=d.get(j);if(!k)return[];let l=k.symbolsByName.get(i.importedName);if(l){for(let a of l)if(!a.qualifiedName.includes(">")&&K(a.kind)){f=a;break}}return f?[{kind:"symbol",addr:{filePath:f.filePath,qualifiedName:f.qualifiedName}}]:[]},moduleForFile:(a,b)=>b?.fileToMod.get(a)??f().dirname(a)})},72891:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{OZ:()=>o,RL:()=>n,k9:()=>p,ok:()=>l});var e=c(37625),f=c(52693),g=c(18412),h=c(89705),i=c(94506),j=c(770),k=a([i]);i=(k.then?(await k)():k)[0];let l=(a,b=200)=>new Response(JSON.stringify(a),{status:b,headers:{"content-type":"application/json"}}),m=a=>{let b=e.od(a);if(f.Ru(b)){let a=b.value,c=(0,j.Sh)(a);return new Response(JSON.stringify({error:(a=>{let b=a.message;if("string"==typeof b&&b.length>0)return b;let c=a.cause;if(c instanceof Error&&c.message.length>0)return c.message;switch(a._tag){case"ValidationError":return`Invalid ${a.field}: ${a.reason}`;case"NotFoundError":return`${a.resource} not found: ${a.id}`;case"PermissionError":return`Permission denied: ${a.action} on ${a.resource}`;case"DBError":return`${a.db} ${a.op} failed`;case"FSError":return`${a.op} ${a.path} failed`;case"WSError":return`${a.proto} ${a.kind} failed`;case"AgentError":return`${a.provider} ${a.kind} failed`;default:return a._tag}})(a),tag:a._tag}),{status:c,headers:{"content-type":"application/json"}})}return console.error("[handler] uncaught defect:\n"+e.j9(a)),new Response(JSON.stringify({error:"Internal Server Error",tag:"InternalError"}),{status:500,headers:{"content-type":"application/json"}})},n=a=>async b=>{let c=await i.s9.runPromiseExit(a(b));return g.YW(c,{onFailure:a=>m(a),onSuccess:a=>a})},o=a=>async(b,c)=>{let d=await c.params,e=await i.s9.runPromiseExit(a(b,d));return g.YW(e,{onFailure:a=>m(a),onSuccess:a=>a})},p=a=>h.$mh({try:()=>a.json(),catch:()=>new j.yI({field:"body",reason:"invalid JSON"})});d()}catch(a){d(a)}})},86236:(a,b,c)=>{c.d(b,{I:()=>d});let d=new Set(["typescript","tsx","javascript","python","go","rust"])},87956:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{M:()=>j,b:()=>i});var e=c(12629),f=c(76760),g=c.n(f),h=a([e]);e=(h.then?(await h)():h)[0];let k=g().join(process.cwd(),"public","tree-sitter"),l=null,m=new Map,n=new Map;async function i(a){let b,c=n.get(a);if(c)return c;let d=await (!(b=m.get(a))&&(b=(async()=>(await (!l&&(l=e.Parser.init({locateFile:a=>g().join(k,a)})),l),e.Language.load(g().join(k,`tree-sitter-${a}.wasm`))))(),m.set(a,b)),b);return(c=new e.Parser).setLanguage(d),n.set(a,c),c}function j(a){switch(a.slice(a.lastIndexOf(".")).toLowerCase()){case".ts":return"typescript";case".tsx":case".jsx":return"tsx";case".js":case".mjs":case".cjs":return"javascript";case".py":case".pyi":return"python";case".go":return"go";case".rs":return"rust";default:return null}}d()}catch(a){d(a)}})}};
@@ -1 +0,0 @@
1
- self.__BUILD_MANIFEST={__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:109,errorRate:1e-4,numBits:2090,numHashes:14,bitArray:[0,0,0,0,0,0,1,0,1,1,1,0,1,0,0,0,1,1,0,0,1,1,1,1,1,0,1,0,1,0,0,1,0,1,0,0,1,0,1,1,1,1,0,1,0,1,1,1,0,1,0,1,1,0,0,0,0,0,1,1,1,1,1,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,0,0,0,0,1,0,0,1,1,0,0,0,1,0,0,1,1,1,1,1,1,0,0,1,1,0,1,0,0,0,1,1,0,0,0,0,1,1,0,0,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,0,0,1,0,0,1,0,1,1,0,0,0,1,0,1,1,0,1,1,0,1,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,0,1,1,0,0,1,1,1,1,0,0,0,1,0,1,0,0,0,0,1,1,0,1,1,0,0,0,1,0,0,1,0,1,0,1,1,0,1,1,0,0,0,0,1,1,1,1,0,1,1,0,0,1,0,1,1,1,1,1,0,1,1,0,0,0,1,1,1,0,0,1,1,1,1,1,0,0,1,0,0,0,1,1,1,0,1,1,0,0,0,1,0,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,0,1,0,0,1,1,1,1,1,0,0,0,0,0,0,0,1,1,0,1,0,1,0,0,1,1,0,0,0,1,1,0,0,1,1,1,1,1,0,0,1,0,1,1,0,1,0,1,1,1,0,0,1,0,0,0,0,1,1,1,0,0,1,0,0,1,0,0,1,1,0,0,0,1,1,0,0,1,1,1,1,1,1,0,0,1,0,1,1,1,0,0,0,0,1,0,1,0,1,0,1,0,0,1,0,0,1,1,0,1,0,1,1,0,0,1,1,0,1,1,0,0,1,0,1,0,0,0,0,1,1,0,1,1,1,1,0,1,0,1,0,1,1,0,0,1,1,0,0,0,0,1,0,1,1,0,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,1,0,1,1,1,0,1,1,0,0,1,0,1,1,1,1,0,1,0,0,0,1,0,0,1,1,1,0,0,0,0,1,1,1,1,1,0,0,1,0,0,1,0,1,1,0,0,1,1,0,0,1,1,0,1,1,0,0,0,1,0,1,0,0,0,0,0,1,0,0,1,1,0,1,1,0,1,1,1,1,1,0,1,0,1,1,0,1,0,1,0,1,1,1,0,0,1,1,0,1,0,1,1,0,1,1,1,0,1,1,0,0,0,1,0,1,0,1,0,1,1,0,0,0,1,1,0,0,1,0,0,0,1,0,1,1,1,0,1,0,0,0,1,1,1,0,1,1,0,1,1,0,0,1,1,1,0,0,0,0,0,1,1,0,0,0,1,1,1,1,1,0,0,1,0,1,1,0,1,1,0,1,1,1,1,1,1,1,0,0,0,0,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,1,0,1,0,0,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,1,0,1,1,0,0,1,0,1,0,0,0,0,1,1,1,0,1,0,1,1,0,0,0,0,1,1,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,0,1,1,1,0,1,1,1,0,0,1,1,0,1,0,1,1,0,1,0,1,0,1,1,0,1,0,1,1,1,1,0,0,1,0,0,0,1,0,0,0,0,0,1,0,1,1,1,1,0,0,0,1,0,1,1,0,0,0,0,1,0,1,0,1,1,0,0,1,1,1,0,0,0,1,1,1,1,0,1,1,0,1,0,0,1,0,1,1,0,1,1,0,1,0,0,0,1,0,0,0,0,1,1,0,0,1,1,0,1,1,1,0,0,1,0,0,1,0,1,0,1,1,0,1,0,0,1,0,0,1,0,0,0,0,0,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,0,1,1,0,0,0,0,1,1,1,1,1,0,1,1,1,0,1,1,0,0,1,0,0,1,1,0,0,0,1,1,0,1,1,1,1,0,0,0,1,0,0,0,1,1,0,1,0,0,0,0,0,0,1,0,1,1,0,1,0,1,1,1,0,0,1,0,0,0,1,0,1,1,0,0,0,1,1,1,0,0,0,0,1,0,1,0,1,0,1,0,1,1,0,0,1,1,1,0,1,0,1,1,0,1,0,0,1,0,1,0,0,1,0,1,0,0,0,0,0,1,1,0,1,0,1,1,0,0,0,1,0,0,1,1,0,0,1,1,1,1,1,0,1,1,1,1,1,1,0,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,1,1,0,0,0,1,0,0,1,1,0,1,0,1,1,1,1,1,1,1,0,1,0,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,0,1,1,1,0,1,0,1,0,0,1,1,0,1,0,1,1,0,1,0,0,0,1,0,0,0,0,0,1,1,1,0,0,1,1,1,1,1,0,0,0,1,1,0,1,1,0,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,0,1,1,0,0,1,1,0,1,1,1,1,0,1,0,0,0,0,0,1,0,1,0,0,1,1,0,1,1,0,0,0,1,1,1,1,1,1,0,0,0,0,1,1,0,1,0,1,0,0,1,0,0,0,0,1,1,1,1,1,0,1,0,1,0,0,1,0,1,0,1,1,0,0,0,0,1,0,1,0,1,0,1,0,1,1,1,1,1,0,1,1,0,1,1,0,1,1,1,1,1,0,0,1,1,0,1,0,1,0,1,0,1,1,1,1,0,1,1,0,1,0,1,1,0,1,1,0,1,1,0,0,1,0,0,0,0,1,0,1,0,1,0,0,0,1,0,0,0,0,1,1,0,1,1,1,0,0,1,0,0,0,0,1,1,1,0,1,0,0,1,0,1,0,1,0,1,1,1,1,1,0,1,1,1,0,0,0,1,1,0,1,1,0,1,1,0,1,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,0,0,1,1,1,0,1,1,1,1,0,1,1,0,1,0,0,0,0,0,0,1,0,1,1,1,0,0,0,1,1,0,0,0,1,0,1,1,0,1,0,0,0,1,0,1,0,1,1,0,1,1,0,1,0,0,1,0,1,0,0,0,1,0,1,1,0,1,0,0,0,0,0,0,0,0,0,1,0,1,0,0,1,1,1,0,1,1,0,1,1,1,1,0,1,1,0,0,0,1,1,0,0,0,1,0,0,0,1,0,1,1,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,1,1,1,0,1,1,1,1,0,0,0,1,1,0,1,0,1,0,0,0,0,1,1,1,0,0,0,0,1,1,0,0,1,0,1,0,0,1,1,0,1,0,0,1,1,0,0,0,0,1,1,0,1,1,0,0,0,0,1,1,1,1,1,0,0,0,1,0,0,1,1,0,0,1,0,0,1,1,0,1,0,0,0,0,0,1,0,1,0,1,1,1,1,1,0,1,1,1,1,0,1,1,1,1,1,1,1,0,1,0,1,1,0,1,1,0,1,0,1,1,0,0,1,0,1,0,1,0,0,0,1,1,1,0,1,0,0,1,0,0,0,1,0,1,1,0,1,0,1,1,0,1,0,1,1,1,1,1,0,0,1,0,1,0,1,0,0,0,1,0,0,1,0,0,0,1,1,0,1,1,0,1,1,1,0,1,1,0,1,0,0,1,0,1,1,1,1,1,1,0,1,1,0,1,1,1,1,1,1,0,0,1,1,0,0,1,0,0,0,1,1,0,1,1,0,1,1,1,1,1,0,1,1,1,1,0,1,0,1,1,0,1,1,0,1,0,0,1,1,1,0,0,0,1,1,0,1,0,0,1,1,1,1,1,1,1,1,0,0,1,0,1,1,0,1,0,0,0,1,1,0,0,1,1,1,0,0,1,1,1,0,1,0,0,1,0,0,1,1,0,1,1,1,0,1,0,1,0,0,1,0,1,0,0,0,1,1,0,0,0,1,1,0,0,1,0,0,1,1,0,1,0,1,0,0,1,0,1,1,1,1,1,1,1,0,1,1,0,1,0,0,0,0,1,1,1,0,1,1,1,0,0,1,1,1,1,0,1,0,1,1,1,1,0,0,1,1,1,0,1,1,1,1,1,0,0,1,0,0,1,0,1,1,0,1,1,1,1,0,1,0,1,1,1,0,0,0,1,1,1,0,1,0,1,1,0,0,0,1,0,0,0,0,0,0,1,0,1,1,1,0,1,0,0,1,0,0,0,1,1,1,1,0,1,1,1,1,1,0,0,1,0,0,1,0,1,1,1,0,1,0,0,0,1,1,1,0,1,1,0,0,1,0,0,0,0,1,1,0,0,0,0,0,1,1,1,0,1,1,0,1,0,1,0,1,1,1,1,1,1,0,1,0,1,0,1,1,1,1,0,1,0,1,0,0,1,1,1,0,1,0,0,1,0,1,0,0,0,0,1,0,0,1,1,0,0,1,0,0,1,1,0,1,1,1,1,1,1,1,1,1,0,0,1,1,1,0,1,1,1,0]},__routerFilterDynamic:{numItems:5,errorRate:1e-4,numBits:96,numHashes:14,bitArray:[1,1,1,1,0,1,0,1,1,1,1,1,0,1,1,1,1,1,0,0,0,1,1,1,0,1,0,1,1,0,0,0,0,1,0,1,1,1,1,1,1,0,0,1,1,0,1,0,0,0,0,1,0,1,0,1,1,0,1,0,1,1,1,0,1,0,1,0,1,1,0,1,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,1,1,0,1,1,0,1,1,0]},sortedPages:["/_app"]},self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
@@ -1,14 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6345],{2111:(e,t,o)=>{o.d(t,{h:()=>s});var n=o(12115),a=o(91281),r=o(36196);a.EV(r.YA(1),1.5).pipe(a.gP(a.ji(r.YA(10))),a.y$(a.t5(10))),a.EV(r.ne(200),2).pipe(a.gP(a.ji(r.YA(5))),a.y$(a.t5(5))),a.EV(r.YA(1),2).pipe(a.et,a.gP(a.ji(r.YA(30))),a.y$(a.t5(8))),a.ji(r.YA(30)),a.ji(r.YA(1)),a.ji(r.YA(30)),r.ne(50),a.BW;let i=new Map;function s({url:e,onMessage:t,enabled:o=!0}){let a=(0,n.useRef)(t);(0,n.useEffect)(()=>{a.current=t}),(0,n.useEffect)(()=>{if(!o)return;let t=e=>a.current(e),n=function(e){let t=i.get(e);if(t)return t;let o={ws:null,listeners:new Set,retryCount:0,retryTimer:null,connect(){let t="https:"===window.location.protocol?"wss:":"ws:",n=new WebSocket(`${t}//${window.location.host}${e}`);n.onopen=()=>{o.retryCount=0},n.onmessage=e=>{try{let t=JSON.parse(e.data);if("ping"===t.type)return;o.listeners.forEach(e=>e(t))}catch{}},n.onclose=()=>{if(0===o.listeners.size)return;let e=Math.min(1e3*Math.pow(1.5,o.retryCount),1e4);o.retryCount++,o.retryTimer=setTimeout(()=>o.connect(),e)},n.onerror=()=>{},o.ws=n},destroy(){o.retryTimer&&clearTimeout(o.retryTimer),o.ws&&o.ws.close(),o.ws=null,i.delete(e)}};return i.set(e,o),o.connect(),o}(e);return n.listeners.add(t),()=>{n.listeners.delete(t),0===n.listeners.size&&n.destroy()}},[e,o])}},3238:(e,t,o)=>{o.d(t,{D:()=>i,N:()=>s});var n=o(95155),a=o(12115);let r=(0,a.createContext)(null);function i(){let e=(0,a.useContext)(r);if(!e)throw Error("useTheme must be used within a ThemeProvider");return e}function s({children:e}){let[t,o]=(0,a.useState)("system"),[i,l]=(0,a.useState)("light"),c=(0,a.useCallback)(()=>window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light",[]),d=(0,a.useCallback)(e=>{let t=document.documentElement;t.classList.remove("light","dark"),t.classList.add(e),l(e);let o=document.querySelector('meta[name="theme-color"]'),n="dark"===e?"#111113":"#f9f9fb";o&&o.setAttribute("content",n)},[]),u=(0,a.useCallback)(e=>{o(e),localStorage.setItem("theme",e),d("system"===e?c():e),document.querySelectorAll("iframe").forEach(t=>{t.contentWindow?.postMessage({type:"THEME_CHANGE",theme:e},"*")})},[c,d]);return(0,a.useEffect)(()=>{let e=localStorage.getItem("theme")||"dark";queueMicrotask(()=>{o(e),d("system"===e?c():e)})},[c,d]),(0,a.useEffect)(()=>{if("system"!==t)return;let e=window.matchMedia("(prefers-color-scheme: dark)"),o=e=>{d(e.matches?"dark":"light")};return e.addEventListener("change",o),()=>e.removeEventListener("change",o)},[t,d]),(0,a.useEffect)(()=>{let e=e=>{if(e.data?.type==="THEME_CHANGE"){let t=e.data.theme;o(t),localStorage.setItem("theme",t),d("system"===t?c():t)}};return window.addEventListener("message",e),()=>window.removeEventListener("message",e)},[c,d]),(0,n.jsx)(r.Provider,{value:{theme:t,resolvedTheme:i,setTheme:u},children:e})}},19736:(e,t,o)=>{o.d(t,{ReviewCommentsListModal:()=>d});var n=o(95155),a=o(12115),r=o(79114),i=o(64428),s=o(34075),l=o(69809);function c(e,t,o){let n=(e,o)=>t[e]||o,a=[],r=null!=o?`[${o+1}] `:"",i=e.anchor.selectedText.length>200?e.anchor.selectedText.slice(0,197)+"...":e.anchor.selectedText;for(let t of(a.push(`${r}${l.A.t("review.quoteRef",{text:i})}`),a.push(l.A.t("review.commentAuthor",{author:n(e.authorId,e.author),content:e.content})),e.replies))a.push(l.A.t("review.replyAuthor",{author:n(t.authorId,t.author),content:t.content}));return a.join("\n")}function d({isOpen:e,onClose:t,comments:o,reviewTitle:m,userNameMap:p,onCommentClick:h}){let{t:g}=(0,r.Bd)(),[f,w]=(0,a.useState)(null),[v,C]=(0,a.useState)(!1);if(!e)return null;let y=[...o].sort((e,t)=>e.anchor.startOffset-t.anchor.startOffset),b=(e,t)=>p[e]||t,x=async e=>{w(e.id);try{let t=c(e,p);await navigator.clipboard.writeText(t),(0,s.oR)(g("toast.copiedComment"))}catch{(0,s.oR)(g("toast.copyFailed"),"error")}finally{w(null)}},k=async()=>{if(0!==o.length){C(!0);try{let e=function(e,t,o){if(0===e.length)return"";let n=[...e].sort((e,t)=>e.anchor.startOffset-t.anchor.startOffset),a=[l.A.t("review.reviewSummary",{title:t}),""];return n.forEach((e,t)=>{a.push(c(e,o,t)),a.push("")}),a.push(l.A.t("review.totalNComments",{count:e.length})),a.join("\n").trim()}(o,m,p);await navigator.clipboard.writeText(e),(0,s.oR)(g("toast.copiedAllComments"))}catch{(0,s.oR)(g("toast.copyFailed"),"error")}finally{C(!1)}}},S=e=>{h?.(e),t()},N=y.filter(e=>!e.closed),T=y.filter(e=>e.closed),F=(0,n.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4",onClick:t,children:(0,n.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:e=>e.stopPropagation(),children:[(0,n.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-border bg-secondary",children:[(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)("h2",{className:"text-sm font-semibold text-foreground",children:g("review.allCommentsTitle")}),(0,n.jsxs)("span",{className:"text-xs text-muted-foreground",children:[g("review.commentsCountBrief",{count:o.length}),T.length>0&&` (${g("review.closedCount",{count:T.length})})`]}),o.length>0&&(0,n.jsx)("button",{onClick:k,disabled:v,className:"p-1 rounded hover:bg-accent text-muted-foreground disabled:opacity-50",title:g("review.copyAllComments"),children:v?(0,n.jsx)("span",{className:"inline-block w-4 h-4 border-2 border-current border-t-transparent rounded-full animate-spin"}):(0,n.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,n.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,n.jsx)("button",{onClick:t,className:"p-1 rounded hover:bg-accent text-muted-foreground",children:(0,n.jsx)("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}),(0,n.jsx)("div",{className:"flex-1 overflow-y-auto p-3",children:0===o.length?(0,n.jsxs)("div",{className:"flex flex-col items-center justify-center py-12 text-muted-foreground",children:[(0,n.jsx)("div",{className:"text-2xl mb-2",children:"\uD83D\uDCAC"}),(0,n.jsx)("span",{className:"text-sm",children:g("review.noComments")})]}):(0,n.jsxs)("div",{className:"space-y-2",children:[N.map((e,t)=>(0,n.jsx)(u,{comment:e,index:t,resolveAuthor:b,copyingId:f,onCopy:x,onClick:S},e.id)),T.length>0&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{className:"text-[11px] text-muted-foreground/60 pt-2 pb-1 px-1",children:g("review.closedComments",{count:T.length})}),T.map((e,t)=>(0,n.jsx)(u,{comment:e,index:N.length+t,resolveAuthor:b,copyingId:f,onCopy:x,onClick:S,closed:!0},e.id))]})]})})]})});return(0,n.jsx)(i.ZL,{children:F})}function u({comment:e,index:t,resolveAuthor:o,copyingId:a,onCopy:r,onClick:i,closed:s}){let c=e.anchor.selectedText.length>100?e.anchor.selectedText.slice(0,97)+"...":e.anchor.selectedText;return(0,n.jsxs)("div",{className:`rounded-lg border border-border hover:border-muted-foreground/30 transition-all cursor-pointer group ${s?"opacity-50":""}`,onClick:()=>i(e.id),children:[(0,n.jsx)("div",{className:"px-3 pt-2.5 pb-1",children:(0,n.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:c})}),(0,n.jsxs)("div",{className:"px-3 pt-1.5 pb-2 flex items-start gap-2",children:[(0,n.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,n.jsxs)("div",{className:"flex items-center gap-2 mb-0.5",children:[(0,n.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:o(e.authorId,e.author).charAt(0)}),(0,n.jsx)("span",{className:"text-xs font-medium",children:o(e.authorId,e.author)}),(0,n.jsx)("span",{className:"text-[10px] text-muted-foreground",children:new Date(e.createdAt).toLocaleString("zh-CN",{month:"numeric",day:"numeric",hour:"2-digit",minute:"2-digit"})}),s&&(0,n.jsx)("span",{className:"text-[10px] text-muted-foreground/60",children:l.A.t("review.closedLabel")})]}),(0,n.jsx)("p",{className:"text-sm text-foreground line-clamp-2 pl-6",children:e.content}),e.replies.length>0&&(0,n.jsxs)("div",{className:"pl-6 mt-1 space-y-0.5",children:[e.replies.slice(0,3).map(e=>(0,n.jsxs)("div",{className:"text-xs text-muted-foreground truncate",children:[(0,n.jsx)("span",{className:"font-medium",children:o(e.authorId,e.author)}),": ",e.content]},e.id)),e.replies.length>3&&(0,n.jsx)("div",{className:"text-[10px] text-muted-foreground/60",children:l.A.t("review.moreReplies",{count:e.replies.length-3})})]})]}),(0,n.jsx)("button",{onClick:t=>{t.stopPropagation(),r(e)},disabled:a===e.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:l.A.t("review.copyComment"),children:a===e.id?(0,n.jsx)("span",{className:"inline-block w-4 h-4 border-2 border-current border-t-transparent rounded-full animate-spin"}):(0,n.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,n.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"})})})]})]})}},34075:(e,t,o)=>{o.d(t,{dj:()=>s,lJ:()=>u,oR:()=>p,tE:()=>l});var n=o(95155),a=o(12115),r=o(69809);let i=(0,a.createContext)(null);function s(){let e=(0,a.useContext)(i);if(!e)throw Error("useToast must be used within a ToastProvider");return e}function l({children:e}){let[t,o]=(0,a.useState)([]),r=(0,a.useCallback)((e,t="success")=>{let n=`toast-${Date.now()}`;o(o=>[...o,{id:n,message:e,type:t}])},[]),s=(0,a.useCallback)(e=>{o(t=>t.filter(t=>t.id!==e))},[]);return(0,n.jsxs)(i.Provider,{value:{showToast:r},children:[e,(0,n.jsx)(c,{toasts:t,onRemove:s})]})}function c({toasts:e,onRemove:t}){return(0,n.jsx)("div",{className:"fixed bottom-4 right-4 z-[100] flex flex-col gap-2",children:e.map(e=>(0,n.jsx)(d,{toast:e,onRemove:t},e.id))})}function d({toast:e,onRemove:t}){(0,a.useEffect)(()=>{let o=setTimeout(()=>{t(e.id)},3e3);return()=>clearTimeout(o)},[e.id,t]);let o={success:"bg-green-9",error:"bg-red-9",info:"bg-brand"}[e.type],r={success:(0,n.jsx)("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5 13l4 4L19 7"})}),error:(0,n.jsx)("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})}),info:(0,n.jsx)("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})})}[e.type];return(0,n.jsxs)("div",{className:`${o} text-white px-4 py-3 rounded-lg shadow-lg flex items-center gap-3 min-w-[200px] animate-slide-in`,style:{animation:"slideIn 0.3s ease-out"},children:[r,(0,n.jsx)("span",{className:"text-sm",children:e.message}),(0,n.jsx)("button",{onClick:()=>t(e.id),className:"ml-auto p-1 hover:bg-white/20 rounded transition-colors",children:(0,n.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]})}function u(e,t){let{title:o=r.A.t("confirm.title",{defaultValue:"Confirm"}),confirmText:n=r.A.t("confirm.ok",{defaultValue:"OK"}),cancelText:a=r.A.t("confirm.cancel",{defaultValue:"Cancel"}),danger:i=!1}=t||{};return new Promise(t=>{let r=document.createElement("div");r.className="fixed inset-0 z-[200] flex items-center justify-center",r.style.animation="confirmFadeIn 0.15s ease-out";let s=e=>{r.style.animation="confirmFadeOut 0.12s ease-in",r.addEventListener("animationend",()=>{document.body.removeChild(r),t(e)},{once:!0})};r.addEventListener("mousedown",e=>{e.target===r&&s(!1)});let l=e=>{"Escape"===e.key?(e.stopPropagation(),document.removeEventListener("keydown",l,!0),s(!1)):"Enter"===e.key&&(e.stopPropagation(),document.removeEventListener("keydown",l,!0),s(!0))};document.addEventListener("keydown",l,!0),r.innerHTML=`
2
- <div class="fixed inset-0 bg-black/50"></div>
3
- <div class="relative bg-card border border-border rounded-xl shadow-2xl p-6 max-w-sm w-full mx-4" style="animation: confirmScaleIn 0.15s ease-out">
4
- <div class="text-base font-medium text-foreground mb-2">${o}</div>
5
- <div class="text-sm text-muted-foreground mb-6">${e}</div>
6
- <div class="flex justify-end gap-3">
7
- <button data-action="cancel" class="px-4 py-2 text-sm rounded-lg border border-border text-foreground hover:bg-accent transition-colors">${a}</button>
8
- <button data-action="confirm" class="px-4 py-2 text-sm rounded-lg ${i?"bg-red-9 hover:bg-red-10 text-white":"bg-brand hover:bg-brand/90 text-white"} transition-colors">${n}</button>
9
- </div>
10
- </div>
11
- `,r.querySelector('[data-action="cancel"]').addEventListener("click",()=>{document.removeEventListener("keydown",l,!0),s(!1)}),r.querySelector('[data-action="confirm"]').addEventListener("click",()=>{document.removeEventListener("keydown",l,!0),s(!0)}),document.body.appendChild(r),r.querySelector('[data-action="confirm"]')?.focus()})}let m=null;function p(e,t="success"){let o=(m||((m=document.createElement("div")).id="toast-container",m.className="fixed bottom-4 right-4 z-[100] flex flex-col-reverse items-end gap-2",document.body.appendChild(m)),m),n=document.createElement("div");n.className=`${"success"===t?"bg-green-9":"error"===t?"bg-red-9":"bg-brand"} text-white px-4 py-3 rounded-lg shadow-lg flex items-center gap-3 min-w-[200px]`,n.style.animation="slideIn 0.3s ease-out",n.innerHTML=`
12
- <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">${"success"===t?'<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" />':"error"===t?'<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" />':'<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />'}</svg>
13
- <span class="text-sm">${e}</span>
14
- `,o.appendChild(n),setTimeout(()=>{n.style.animation="slideOut 0.3s ease-in",setTimeout(()=>{o.removeChild(n)},300)},3e3)}},45048:(e,t,o)=>{o.d(t,{T:()=>k});var n=o(95155),a=o(46361),r=o(79204),i=o(98164),s=o(77815),l=o(97720),c=o(88374);o(84559),o(21227);var d=o(91334),u=o(38194),m=o(88522),p=o(12115),h=o(3238);let g=[r.A,i.A,s.jb],f=[r.A,s.jb],w=[l.A,c.A],v=[l.A];function C(e){return e.replace(/^(\|.+\|)$/gm,e=>/^\|[\s:|-]+\|$/.test(e)?e:e.replace(/`([^`]*)`/g,(e,t)=>t.includes("|")?"`"+t.replace(/\|/g,"\\|")+"`":e))}function y(e){return e.replace(/\$(\d)/g,"\\$$1")}let b=new Set(["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","label","legend","li","link","main","map","mark","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","slot","small","source","span","strong","style","sub","summary","sup","svg","table","tbody","td","template","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr","circle","clippath","defs","ellipse","g","line","linearGradient","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","text","tspan","use"]);function x(e){let t=[],o=e=>(t.push(e),`\0MASK${t.length-1}\0`);return e.replace(/```[\s\S]*?```/g,e=>o(e)).replace(/~~~[\s\S]*?~~~/g,e=>o(e)).replace(/`[^`\n]+`/g,e=>o(e)).replace(/<\/?([a-zA-Z][a-zA-Z0-9-]*)(\s[^>]*)?\/?>/g,(e,t)=>{let o=t.toLowerCase();return b.has(o)||o.includes("-")?e:e.replace(/</g,"&lt;").replace(/>/g,"&gt;")}).replace(/MASK(\d+)/g,(e,o)=>t[+o])}let k=(0,p.memo)(function({content:e,isUser:t=!1,isStreaming:o=!1,enableMath:r=!0,rehypePlugins:i}){let{resolvedTheme:s}=(0,h.D)(),l="dark"===s,c=(0,p.useMemo)(()=>({code({className:e,children:t,node:o,...a}){let r=/language-(\w+)/.exec(e||""),i=String(t);if(!r&&!e&&!i.includes("\n"))return(0,n.jsx)("code",{className:"px-1.5 py-0.5 mx-0.5 rounded bg-accent text-sm font-mono",...a,children:t});let s=String(t).replace(/\n$/,""),c=r?.[1]||"text",p=Number(a["data-source-start"])||0,h=p?p+1:0,g=0;return(0,n.jsx)(d.A,{style:l?u.A:m.A,language:c,PreTag:"div",customStyle:{margin:"0.75rem 0",borderRadius:"0.375rem",fontSize:"0.875rem"},wrapLines:!0,lineProps:()=>{let e=h+g;return g++,{"data-source-start":e,"data-source-end":e,style:{display:"block"}}},children:s})},p:({children:e,node:t,...o})=>(0,n.jsx)("p",{className:"mb-3 last:mb-0",...o,children:e}),h1:({children:e,node:t,...o})=>(0,n.jsx)("h1",{className:"text-xl font-bold mb-3 mt-4 first:mt-0",...o,children:e}),h2:({children:e,node:t,...o})=>(0,n.jsx)("h2",{className:"text-lg font-bold mb-2 mt-3 first:mt-0",...o,children:e}),h3:({children:e,node:t,...o})=>(0,n.jsx)("h3",{className:"text-base font-bold mb-2 mt-3 first:mt-0",...o,children:e}),ul:({children:e,node:t,...o})=>(0,n.jsx)("ul",{className:"list-disc list-inside mb-3 space-y-1",...o,children:e}),ol:({children:e,node:t,...o})=>(0,n.jsx)("ol",{className:"list-decimal list-inside mb-3 space-y-1",...o,children:e}),li:({children:e,node:t,...o})=>(0,n.jsx)("li",{className:"leading-relaxed",...o,children:e}),blockquote:({children:e,node:t,...o})=>(0,n.jsx)("blockquote",{className:"border-l-4 border-border pl-4 my-3 italic text-muted-foreground",...o,children:e}),a:({href:e,children:t,node:o,...a})=>(0,n.jsx)("a",{href:e,target:"_blank",rel:"noopener noreferrer",className:"text-brand hover:underline",...a,children:t}),table:({children:e,node:t,...o})=>(0,n.jsx)("div",{className:"overflow-x-auto my-3",...o,children:(0,n.jsx)("table",{className:"min-w-full border border-border",children:e})}),thead:({children:e,node:t,...o})=>(0,n.jsx)("thead",{className:"bg-accent",...o,children:e}),th:({children:e,node:t,...o})=>(0,n.jsx)("th",{className:"px-4 py-2 text-left font-semibold border-b border-border",...o,children:e}),td:({children:e,node:t,...o})=>(0,n.jsx)("td",{className:"px-4 py-2 border-b border-border",...o,children:e}),hr:({node:e,...t})=>(0,n.jsx)("hr",{className:"my-4 border-border",...t}),img:({src:e,alt:t,node:o,height:a,width:r,style:i,...s})=>{if(!(a||r||i))return(0,n.jsx)("img",{src:e,alt:t||"",className:"max-w-full h-auto rounded-lg my-3",...s});let l=e=>e?/^\d+$/.test(String(e))?`${e}px`:String(e):void 0,c={...i,height:l(a)??i?.height,width:l(r)??i?.width};return(0,n.jsx)("img",{src:e,alt:t||"",style:c,className:"inline-block align-middle",...s})},strong:({children:e,node:t,...o})=>(0,n.jsx)("strong",{className:"font-bold",...o,children:e}),em:({children:e,node:t,...o})=>(0,n.jsx)("em",{className:"italic",...o,children:e}),del:({children:e,node:t,...o})=>(0,n.jsx)("del",{className:"line-through",...o,children:e})}),[l]),b=r?g:f,k=r?w:v,S=(0,p.useMemo)(()=>{if(t||o)return x(e);let n=x(C(!function(e){if(/^\|[\s:|-]+\|$/m.test(e))return!1;if(/[┌┐└┘│─├┤┬┴┼╔╗╚╝║═╭╮╯╰▲▼◀▶△▽◁▷]/.test(e)||/\+[-=]{2,}\+/.test(e))return!0;let t=e.split("\n").filter(e=>/^\s*\||\|\s*$/.test(e));if(t.length>=3){let e=t.map(e=>(e.match(/\|/g)||[]).length);return!e.every(t=>t===e[0])||!(e[0]>=3)}return!1}(e)||/^```[\s\S]*```$/m.test(e.trim())?e:"```text\n"+e.trim()+"\n```"));return r?y(n):n},[e,t,o,r]),N=(0,p.useMemo)(()=>i?.length?[...k,...i]:k,[i,k]);if(t)return(0,n.jsx)("div",{className:"whitespace-pre-wrap break-words",children:e});if(o){let t=e.lastIndexOf("\n");if(-1===t)return(0,n.jsx)("div",{className:"whitespace-pre-wrap break-words",children:e});let o=e.slice(0,t+1),i=e.slice(t+1);return(0,n.jsxs)("div",{className:"markdown-body",children:[(0,n.jsx)(a.oz,{remarkPlugins:b,rehypePlugins:k,components:c,children:r?y(x(C(o))):x(C(o))}),i&&(0,n.jsx)("span",{className:"whitespace-pre-wrap",children:i})]})}return(0,n.jsx)("div",{className:"markdown-body",children:(0,n.jsx)(a.oz,{remarkPlugins:b,rehypePlugins:N,components:c,children:S})})})},47176:(e,t,o)=>{o.d(t,{l:()=>l});var n=o(95155),a=o(12115),r=o(79114),i=o(94287);let s=e=>`h1[data-source-start="${e}"], h2[data-source-start="${e}"], h3[data-source-start="${e}"], h4[data-source-start="${e}"], h5[data-source-start="${e}"], h6[data-source-start="${e}"]`;function l({content:e,containerRef:t,width:o="w-80"}){let{t:c}=(0,r.Bd)(),d=(0,a.useMemo)(()=>(function(e){let t=[],o=e.split("\n"),n=!1;for(let e=0;e<o.length;e++){let a=o[e];if(a.trimStart().startsWith("```")){n=!n;continue}if(n)continue;let r=/^(#{1,6})\s+(.+)$/.exec(a);r&&t.push({level:r[1].length,text:r[2].replace(/\s*#+\s*$/,""),sourceLine:e+1})}return t})(e),[e]),[u,m]=(0,a.useState)(!1),[p,h]=(0,a.useState)(null),g=(0,a.useCallback)(e=>{let o=t.current;if(!o)return;let n=o.querySelector(s(e));n&&n.scrollIntoView({behavior:"smooth",block:"start"})},[t]);return((0,a.useEffect)(()=>{let e=t.current;if(!e||0===d.length)return;let o=()=>{let t=[];for(let o of d){let n=e.querySelector(s(o.sourceLine));if(n){let a=n.getBoundingClientRect().top-e.getBoundingClientRect().top;t.push({line:o.sourceLine,top:a})}}let o=null;for(let e of t)e.top<=60&&(o=e.line);null===o&&t.length>0&&(o=t[0].line),h(o)},n=setTimeout(o,150);return e.addEventListener("scroll",o,{passive:!0}),()=>{clearTimeout(n),e.removeEventListener("scroll",o)}},[d,e,t]),0===d.length)?null:(0,n.jsxs)("div",{className:`border-r border-border flex-shrink-0 flex flex-col transition-[width] duration-200 ${u?"w-8":o}`,children:[(0,n.jsxs)("div",{className:"flex items-center justify-between px-2 py-1.5 border-b border-border flex-shrink-0",children:[!u&&(0,n.jsx)("span",{className:"text-xs font-medium text-muted-foreground",children:c("editor.toc")}),(0,n.jsx)("button",{onClick:()=>m(e=>!e),className:"p-0.5 text-muted-foreground hover:text-foreground hover:bg-accent rounded transition-colors",title:c(u?"editor.expandToc":"editor.collapseToc"),children:(0,n.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:u?(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"}):(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 19l-7-7 7-7"})})})]}),!u&&(0,n.jsx)("nav",{className:"flex-1 overflow-y-auto py-1",children:d.map((e,t)=>(0,n.jsx)(i.m,{content:e.text,delay:400,children:(0,n.jsx)("button",{onClick:()=>g(e.sourceLine),className:`block w-full text-left text-sm py-1 px-2 truncate transition-colors hover:bg-accent ${p===e.sourceLine?"text-brand font-medium bg-brand/5":"text-muted-foreground"}`,style:{paddingLeft:`${(e.level-1)*12+8}px`},children:e.text})},t))})]})}},64428:(e,t,o)=>{o.d(t,{F2:()=>m,ZL:()=>d,a9:()=>u});var n=o(95155),a=o(12115),r=o(47650);let i=()=>()=>{},s=()=>document.body,l=()=>null,c=(0,a.createContext)(null);function d({children:e}){let t=(0,a.useContext)(c),o=(0,a.useSyncExternalStore)(i,s,l),n=t??o;return n?(0,r.createPortal)(e,n):null}function u({children:e}){let[t,o]=(0,a.useState)(null);return(0,n.jsxs)("div",{className:"relative w-full h-full",style:{transform:"translateZ(0)"},children:[(0,n.jsx)(c.Provider,{value:t,children:e}),(0,n.jsx)("div",{ref:o,className:"absolute inset-0 pointer-events-none [&>*]:pointer-events-auto"})]})}function m(){return(0,a.useContext)(c)}},69809:(e,t,o)=>{o.d(t,{A:()=>i});var n=o(50931);let a=JSON.parse('{"common":{"save":"Save","cancel":"Cancel","delete":"Delete","close":"Close","copy":"Copy","edit":"Edit","file":"File","codeMap":"Code Map","confirm":"Confirm","loading":"Loading...","search":"Search","refresh":"Refresh","retry":"Retry","submit":"Submit","copied":"Copied","saved":"Saved","failed":"Failed","noMatch":"No matches","noData":"No data","done":"Done","justNow":"just now","minutesAgo":"{{count}}m ago","hoursAgo":"{{count}}h ago","daysAgo":"{{count}}d ago","monthsAgo":"{{count}}mo ago","yearsAgo":"{{count}}y ago","saveFailed":"Save failed","copyFailed":"Copy failed","deleteFailed":"Delete failed","operationFailed":"Operation failed","copiedPath":"Path copied","copyAbsPath":"Copy absolute path","loadMore":"Load more","noResult":"No results","selected":"Selected","selectAll":"Select all","hint":"Notice","confirmBtn":"OK","cancelBtn":"Cancel","preview":"Preview","readable":"Readable","previous":"Previous","next":"Next","all":"All","input":"Input","result":"Result","line":"Line","lines":"lines","running":"Running","connecting":"Connecting","connected":"Connected","connectionFailed":"Connection failed","builtin":"Built-in","global":"Global","project":"Project","current":"Current"},"toast":{"savedSuccess":"Saved","saveFailed":"Save failed","copiedName":"Copied: {{name}}","copyFailed":"Copy failed","deleteFailed":"Delete failed","operationFailed":"Operation failed","staged":"Staged","stageFailed":"Stage failed","unstaged":"Unstaged","unstageFailed":"Unstage failed","stagedNFiles":"Staged {{count}} files","unstagedNFiles":"Unstaged {{count}} files","discardFailed":"Discard failed","discardedNFiles":"Discarded changes in {{count}} files","stagedAllFiles":"All files staged","deletedFile":"File deleted","discardedChanges":"Changes discarded","pastedFile":"Pasted: {{name}}","pasteFailed":"Paste failed","noFileToPaste":"No file to paste","createdFile":"Created: {{name}}","createFailed":"Create failed","movedToTrash":"Moved to trash: {{name}}","copiedPageUrl":"Page URL copied","copiedDirPath":"Directory path copied","switchedToBranch":"Switched to {{branch}}","switchBranchFailed":"Branch switch failed","loadBranchFailed":"Failed to load branches","copiedCommand":"Copied: {{command}}","copiedMessage":"Message copied","copiedUrl":"URL copied","copiedOutput":"Output copied","copiedCmd":"Command copied","copiedComment":"Comment copied","copiedAllComments":"All comments copied","copiedFileContent":"File content copied","copiedQA":"Copied {{count}} Q&A","copiedAllQA":"All Q&A copied","readFileFailed":"Failed to read file","reviewCreated":"Review created, link copied","reviewUpdated":"Review updated, link copied","reviewCreateFailed":"Failed to create review","sharingClosed":"Sharing disabled","sharingCloseFailed":"Failed to disable sharing","linkCopied":"Link copied","addCommentFailed":"Failed to add comment","deleteCommentFailed":"Failed to delete comment","editCommentFailed":"Failed to edit comment","addReplyFailed":"Failed to add reply","deleteReplyFailed":"Failed to delete reply","editReplyFailed":"Failed to edit reply","disconnected":"Disconnected: {{id}}","pluginReloading":"Reloading extension...","worktreeCreateSuccess":"Worktree created: {{name}}","worktreeCreateFailed":"Failed to create worktree","worktreeLoadFailed":"Failed to load worktree list","worktreeDeleted":"Worktree deleted","worktreeDeleteFailed":"Failed to delete worktree","worktreeLocked":"Locked","worktreeUnlocked":"Unlocked"},"workspace":{"selectProject":"Select a project to start","searchProjectPath":"Search project path...","loadingProjects":"Loading projects...","projectNotFound":"No projects found","sessions":"{{count}} sessions","loadingSessions":"Loading sessions...","noSessions":"No sessions","loadingText":"Loading...","openProject":"Open Project","expandSidebar":"Expand sidebar","collapseSidebar":"Collapse sidebar","notes":"Notes","skills":"Skills","settings":"Settings","projectNotes":"Project Notes","closeProject":"Close project"},"sessions":{"recentSessions":"Recent Sessions","runningCount":"{{count}} running","unreadCount":"{{count}} unread","noSessions":"No sessions yet","running":"Running","done":"Done","pinnedSessions":"Pinned Sessions","noPinnedSessions":"No pinned sessions. Click the pin icon in the tab bar to add.","editTitle":"Edit title","remove":"Remove","projectSessions":"Project Sessions","browseAllSessions":"Browse all sessions","sessionList":"Session List","searchSessions":"Search sessions...","loadingSessions":"Loading sessions...","noMatchingSessions":"No matching sessions","noSessionsYet":"No sessions yet","projectList":"Project List","openFolder":"Open Folder","selectingFolder":"Selecting...","loadingHistory":"Loading history..."},"scheduledTasks":{"title":"Scheduled Tasks","aboutToTrigger":"About to trigger","secondsLater":"in {{count}}s","minutesLater":"in {{count}}m","hoursMinutesLater":"in {{h}}h {{m}}m","hoursLater":"in {{h}}h","onceType":"Once ({{minutes}}min)","everyNMinutes":"Every {{minutes}}min","completed":"Completed","paused":"Paused","activeCount":"{{running}} active","pausedCount":"{{paused}} paused","noScheduledTasks":"No scheduled tasks. Click the clock button in the chat input to create one.","lastResult":"Last","runNow":"Run now","resume":"Resume","pause":"Pause","completedCount":"Completed ({{count}})","success":"Success","failure":"Failed","createTask":"Create Scheduled Task","editTask":"Edit Scheduled Task","sendMessage":"Message","messagePlaceholder":"Enter message to send...","type":"Type","once":"Once","interval":"Interval","quickSelect":"Quick Select","customCron":"Custom Cron Expression","customMinutes":"Custom minutes","cronPlaceholder":"e.g. 0 9 * * 1-5 (weekdays at 9am)","cronFormat":"Format: min hour day month weekday (e.g. 0 9 * * 1-5)","minutesPlaceholder":"Minutes","limitTimeRange":"Limit execution time range","to":"to","saveBtn":"Save ({{modKey}}↩)","createBtn":"Create ({{modKey}}↩)","5minLater":"In 5 minutes","15minLater":"In 15 minutes","30minLater":"In 30 minutes","1hourLater":"In 1 hour","every15min":"Every 15 min","every30min":"Every 30 min","every1hour":"Every 1 hour","every2hours":"Every 2 hours","daily9am":"Daily 09:00","daily6pm":"Daily 18:00","weeklyMon9am":"Mon 09:00","monthly1st9am":"1st of month 09:00"},"cron":{"everyNMinutes":"Every {{n}} minutes","everyNHours":"Every {{n}} hours","everyMinute":"Every minute","everyHourAtMin":"Every hour at minute {{m}}","hourlyEveryMin":"{{h}}:xx every minute","daily":"Daily at {{time}}","weekdays":"Weekdays","weekends":"Weekends","dowSun":"Sun","dowMon":"Mon","dowTue":"Tue","dowWed":"Wed","dowThu":"Thu","dowFri":"Fri","dowSat":"Sat","monthPrefix":"","dayOfMonth":"","dayRange":"{{a}}th to {{b}}th","weekdayPrefix":"","weekdayRange":"{{a}} to {{b}}"},"blockViewer":{"empty":{"body":"Select a file in the left tree to see its code map.","hint":"or press ⌘K to search."},"fileMode":{"loading":"Loading…","notFound":"This file is not indexed (unsupported language or beyond the file cap)."},"search":{"tooltip":"Search (⌘K)","hint":"Start typing to search","noResults":"No matches","files":"Files","symbols":"Symbols"},"viewerToggle":{"toBlock":"Show code map","toCode":"Back to code view"},"toc":{"title":"this file","empty":"No functions detected."},"history":{"title":"history","empty":"Click an input or output pin to begin tracing.","clear":"Clear history"},"refresh":"Rebuild project graph","retry":"Retry"},"blockDiffViewer":{"loading":"Building code map…","unsupported":"Code map diff is not available for this file type.","unsupportedHint":"Switch back to the regular diff view to read it.","error":"Code map diff failed: {{message}}","noBlockChanges":"No code-map changes (formatting / whitespace only).","noBefore":"(new)","noAfter":"(removed)","kind":{"added":"added","deleted":"deleted","modified":"modified"}},"fileBrowser":{"directoryTree":"Tree","searchTab":"Search","recentTab":"Recent","changesTab":"Status","historyTab":"History","searchFiles":"Search files...","clear":"Clear","exactMatchOn":"Exact match (on)","exactMatchOff":"Exact match (off)","refreshTree":"Refresh directory tree","collapseAll":"Collapse all directories","searchFileContent":"Search file contents...","caseSensitive":"Case sensitive","wholeWord":"Whole word","regex":"Regex","fileTypes":"File types (ts,tsx)","compareMode":"Compare","compareModeOff":"Close branch comparison","compareModeOn":"Compare with selected branch","createFile":"New File","createFileIn":"New File (in {{path}}/)","fileName":"File name...","noRecentFiles":"No recent files","stagingArea":"Staged ({{count}})","changesSummary_one":"{{count}} change","changesSummary_other":"{{count}} changes","noChanges":"No changes in working tree","refreshChanges":"Refresh changes","unstageAll":"Unstage all","noStagedFiles":"No staged files","unstageNFiles":"Unstage {{count}} files","unstageFile":"Unstage","workspace":"Workspace ({{count}})","discardAll":"Discard all","stageAll":"Stage all","noUnstagedChanges":"No unstaged changes","discardNFiles":"Discard changes in {{count}} files","stageNFiles":"Stage {{count}} files","discardChanges":"Discard changes","stageFile":"Stage file","loadingDiff":"Loading diff...","noDiffFiles":"No diff files","nFilesChanged":"{{count}} files changed (vs {{branch}})","loadingCommits":"Loading commits...","noCommits":"No commits","allLoaded":"All {{count}} records loaded","locateInTree":"Locate in directory tree","unsaved":"Unsaved","saveBeforeSwitch":"Current file has unsaved changes. Save before switching?","saveAndSwitch":"Save and switch","closeEdit":"Close edit (ESC)","closeBtn":"Close","copyFileContent":"Copy file content","toggleJsonReadable":"Toggle JSON readable mode","previewMarkdown":"Preview Markdown","viewBlame":"View line-by-line change history","editFile":"Edit file","backToPreview":"Back to preview","cannotPreview":"Cannot preview this file","selectFileToPreview":"Select a file to preview","staged":"Staged","unstaged":"Unstaged","selectFileToViewDiff":"Select a file to view diff","loadingDiffContent":"Loading diff...","clickCompareToLoad":"Click \\"Compare\\" to load branch diff","selectCommitToView":"Select a commit to view details","confirmDelete":"Confirm Delete","confirmDeleteMessage":"Move <file>{{name}}</file> to trash?","nFilesNMatches":"{{files}} files, {{matches}} matches","resultsTruncated":"Results truncated","noContentSearchResults":"No results","enterKeywordToSearch":"Enter keyword to search file contents","searchMinChars":"Search requires at least 2 characters"},"codeViewer":{"fileModifiedExternally":"File was modified externally. Saving will overwrite external changes.","useDiskVersion":"Use disk version","forceOverwrite":"Force overwrite","searchPlaceholder":"Search...","caseSensitive":"Case sensitive","wholeWordMatch":"Whole word match","unsavedConfirm":"You have unsaved changes. Close anyway?","discardChanges":"Discard changes","continueEditing":"Continue editing","unsavedExitConfirm":"You have unsaved changes. Exit edit mode?","clickToViewDetails":"Click to view details","clickToViewCommit":"Click to view commit details","nComments":"{{count}} comments","searchChat":"Search chat...","prevShiftEnter":"Previous (Shift+Enter)","nextEnter":"Next (Enter)","closeEsc":"Close (Esc)"},"chat":{"startConversation":"Start a conversation","loadMoreHistory":"Load more...","scrollUpForMore":"↑ Scroll up to load more history","claudeThinking":"Claude is thinking...","jumpToStart":"Jump to start","jumpToLatest":"Jump to latest","copyMessage":"Copy message","forkSession":"Fork session from here","imageN":"Image {{index}}","imagePreview":"Image preview","toolCalls":"{{count}} tool calls","collapse":"▲ Collapse","expand":"▼ Expand","viewQuestions":"View questions","viewAllFileChanges":"View all file changes","requestFailed":"Request failed","cannotReadStream":"Cannot read response stream","errorRetry":"An error occurred, please retry","placeholder":"Type a message, Enter to send (Shift+Enter for new line, paste images, / for commands)","placeholderDisabled":"Generating... you can keep typing","imageSizeLimit":"Image size exceeds limit (max 5MB), current: {{size}}MB","stageAll":"Stage all files (git add -A)","viewGitChanges":"View Git changes","viewAllComments":"View all comments","userMessages":"User messages","projectNotes":"Project Notes","scheduledTasks":"Scheduled Tasks","context":"Context","output":"Output","copiedCommandTooltip":"Copied!","copyCommandTooltip":"Copy command: claude -r {{sessionId}}","executedCommand":"Executed `{{command}}`{{exitInfo}}, output:\\n```\\n{{output}}\\n```","executedCommandFailed":"Failed to execute `{{command}}`: {{error}}","skillExpansionPrompt":"Please read this skill file:"},"console":{"enterCommandOrUrl":"Enter a command or URL to start","loadingMore":"Loading...","loadMoreHistory":"Load more history","quickCommands":"Quick Commands","singleColumn":"Single column","dualColumn":"Dual column","envVars":"Environment Variables","launchZsh":"Launch zsh terminal","inputPlaceholder":"Enter command or URL and press Enter... (↑↓ history, Tab complete)","scopeProject":"Project","scopeGlobal":"Global","tabSwitchEscClose":"Tab to switch \xb7 Esc to close","copyOutput":"Copy output","copyCommand":"Copy command","rerun":"Re-run","deleteRecord":"Delete record","searchPlaceholder":"Search...","searchMode":"Search","filterMode":"Filter","prevShiftEnter":"Previous (Shift+Enter)","nextEnter":"Next (Enter)","loadingTerminal":"Loading terminal...","clickToInput":"Click terminal area to type","stdinPlaceholder":"stdin input...","runningText":"Running...","exitCode":"Exit code: {{code}}","totalLines":"{{count}} lines total","globalCommands":"Global Commands","projectCommands":"Project Commands","noCustomCommands":"No custom commands yet","namePlaceholder":"Name","commandPlaceholder":"Command","restoreTooltip":"Restore ({{modKey}}M / ESC)","screenshotting":"Screenshotting...","outputFileDeleted":"[Output file deleted]"},"browser":{"blankPage":"Blank page","copyUrl":"Copy URL","openInNewWindow":"Open in new window","exitMaximize":"Exit maximize ({{modKey}}M)","maximize":"Maximize ({{modKey}}M)","pageLoadFailed":"Page load failed","clickToWake":"Click to wake","sleeping":"Sleeping","loadingPage":"Loading...","loadFailed":"Load failed"},"database":{"connectionFailed":"Connection failed","connected":"Connected","connecting":"Connecting...","refreshTableList":"Refresh table list","filterTable":"T Tables","filterView":"V Views","noTables":"No tables","tabStructure":"Structure","tabData":"Data","tabSql":"SQL","filterActive":"Filter: {{count}} cols","clearAllFilters":"Clear all filters","deleteNRows":"Delete {{count}} rows","confirmDeleteRows":"Confirm delete?","copyCsvSelected":"Copy selected rows as CSV","copyCsvAll":"Export all as CSV","copyJsonSelected":"Copy selected rows as JSON","copyJsonAll":"Export all as JSON","copyCSV":"Copy CSV","CSV":"CSV","copyJSON":"Copy JSON","JSON":"JSON","selectTable":"Select a table","selectTableToView":"Select a table to view structure","selectTableForData":"Select a table to view data","columns":"Columns","colName":"Name","colType":"Type","colNullable":"Nullable","colDefault":"Default","primaryKey":"Primary Key","foreignKeys":"Foreign Keys","indexes":"Indexes","enable":"Enable","commaValues":"Comma-separated values","likePattern":"%pattern%","valuePlaceholder":"Value","apply":"Apply","clearFilter":"Clear","addRow":"+ Add Row","totalRows":"{{count}} rows","rowsAffected":"{{command}} — {{count}} rows affected ({{duration}}ms)","queryRows":"{{count}} rows ({{duration}}ms)","resultTruncated":"[Results truncated to 1000 rows]","sqlPlaceholder":"Enter SQL... ({{modKey}}Enter to execute)","executing":"Executing...","execute":"▶ Execute","deleteRowsFailed":"{{count}} rows failed to delete","inputParams":"Input Parameters","resultLabel":"Result"},"mysql":{"connectionFailed":"Connection failed","connected":"Connected","connecting":"Connecting...","refreshTableList":"Refresh table list","filterTable":"T Tables","filterView":"V Views","noTables":"No tables","tabStructure":"Structure","tabData":"Data","tabSql":"SQL","filterActive":"Filter: {{count}} cols","clearAllFilters":"Clear all filters","deleteNRows":"Delete {{count}} rows","confirmDeleteRows":"Confirm delete?","copyCsvSelected":"Copy selected rows as CSV","copyCsvAll":"Export all as CSV","copyJsonSelected":"Copy selected rows as JSON","copyJsonAll":"Export all as JSON","copyCSV":"Copy CSV","CSV":"CSV","copyJSON":"Copy JSON","JSON":"JSON","selectTable":"Select a table","selectTableToView":"Select a table to view structure","selectTableForData":"Select a table to view data","columns":"Columns","colName":"Name","colType":"Type","colNullable":"Nullable","colDefault":"Default","primaryKey":"Primary Key","foreignKeys":"Foreign Keys","indexes":"Indexes","enable":"Enable","commaValues":"Comma-separated values","likePattern":"%pattern%","valuePlaceholder":"Value","apply":"Apply","clearFilter":"Clear","addRow":"+ Add Row","totalRows":"{{count}} rows","rowsAffected":"{{command}} — {{count}} rows affected ({{duration}}ms)","queryRows":"{{count}} rows ({{duration}}ms)","resultTruncated":"[Results truncated to 1000 rows]","sqlPlaceholder":"Enter SQL... ({{modKey}}Enter to execute)","executing":"Executing...","execute":"▶ Execute","deleteRowsFailed":"{{count}} rows failed to delete"},"redis":{"neverExpires":"Never expires","expired":"Expired","loadFailed":"Load failed","deleteFailed":"Delete failed","saveFailed":"Save failed","scanPlaceholder":"SCAN pattern...","scanSearch":"Search (SCAN)","noKeys":"No keys","loadMore":"Load more...","tabData":"Data","tabInfo":"Info","tabCli":"CLI","selectKey":"Select a key","keyNotExist":"Key does not exist","unsupportedType":"Unsupported type: {{type}}","nItems":"{{total}} items","showingN":"showing {{count}}","nMembers":"{{total}} members","nEntries":"{{total}} entries","cliHint":"Enter Redis commands, e.g. PING, GET key, KEYS *","cliPlaceholder":"Enter command..."},"git":{"switchBranch":"Switch branch","searchBranch":"Search branches...","noBranches":"No branches available","noMatchingBranches":"No matching branches","localBranches":"Local Branches","remoteBranches":"Remote Branches","branchNotFound":"Branch not found","selectBranch":"Select branch...","currentBranch":"Current","notGitRepo":"Current directory is not a Git repository","cannotGetBranches":"Cannot get branch info","getBranchesFailed":"Failed to get branch info","discardAllConfirm":"Discard changes in {{count}} workspace files? This cannot be undone.","worktree":{"title":"Git Worktree","count":"{{count}} worktrees","selectBranch":"Select branch","addWorktree":"+ Add Worktree","confirmDelete":"Confirm Delete","confirmDeleteMsg":"Delete this worktree?","path":"Path:","branch":"Branch:","locked":"Locked","unlock":"Unlock","lock":"Lock","searchBranch":"Search branches...","noBranches":"No available branches"}},"comments":{"addComment":"Add Comment","lineRange":"Line {{start}}-{{end}}","inputPlaceholder":"Enter comment...","newComment":"New comment {{range}}","commentPlaceholder":"Enter comment... ({{modKey}}Enter to submit, Esc to cancel)","nComments":"{{count}} comments","allComments":"All Comments","copyAllComments":"Copy all comments","noComments":"No comments yet","clearAll":"Clear all","totalComments":"{{count}} comments total","aiReply":"AI Reply","noContent":"(no content)","linesCount":"({{count}} lines)","codeRef":"Code reference:","note":"Note: {{content}}","submitting":"Submitting...","enterSubmit":"Enter to submit \xb7 Shift+Enter for new line","askAI":"Ask AI","inputQuestion":"Enter your question...","aiGenerating":"Generating, please wait...","enterSend":"Enter to send \xb7 Shift+Enter for new line","sendToAI":"Send to AI","aiResponding":"AI is responding...","question":"Question: {{question}}"},"fileContextMenu":{"createFile":"New File","copyFile":"Copy File","copyFolder":"Copy Folder","pasteHere":"Paste Here","deleteFile":"Delete File","deleteFolder":"Delete Folder","copyRelativePath":"Copy Relative Path","copyAbsolutePath":"Copy Absolute Path","copyRelativeDirPath":"Copy Relative Dir Path","copyAbsoluteDirPath":"Copy Absolute Dir Path","copyFileName":"Copy File Name","copyFolderName":"Copy Folder Name"},"settings":{"title":"Settings","theme":"Theme","themeLight":"Light","themeDark":"Dark","themeSystem":"System","browserExtension":"Browser Extension","extensionInstalled":"Cockpit Bridge installed","extensionNotInstalled":"Cockpit Bridge not installed","extensionDescription":"After installing the Chrome extension, link navigation in iframes will be intercepted: new tab links create new bubbles, page navigation updates the current bubble.","installSteps":"Installation steps:","step1":"1. Open Chrome and navigate to","step2":"2. Enable \\"Developer mode\\" in the top-right corner","step3":"3. Click \\"Load unpacked\\"","step4mac":"4. Press <kbd>Cmd+Shift+G</kbd> → paste the path below → Enter","copyExtensionPath":"Copy extension directory path","reloadExtension":"Reload extension","about":"About","language":"Language","languageAuto":"System","switchDark":"Switch to dark","switchLight":"Switch to light"},"editor":{"placeholder":"Write something... Type / for commands","noteTitle":"{{name}} - Notes","noteUntitled":"Notes","saving":"Saving...","linkPlaceholder":"Enter URL...","confirmLink":"Confirm","removeLink":"Remove link","heading1":"Heading 1","heading2":"Heading 2","heading3":"Heading 3","bold":"Bold","italic":"Italic","strikethrough":"Strikethrough","inlineCode":"Inline code","link":"Link","bulletList":"Bullet list","orderedList":"Ordered list","taskList":"Task list","blockquote":"Blockquote","codeBlock":"Code block","table":"Table","horizontalRule":"Horizontal rule","insertRowAbove":"Insert row above","insertRowBelow":"Insert row below","insertColumnLeft":"Insert column left","insertColumnRight":"Insert column right","deleteRow":"Delete row","deleteColumn":"Delete column","deleteTable":"Delete table","deleteCodeBlock":"Delete code block","toc":"TOC","expandToc":"Expand TOC","collapseToc":"Collapse TOC"},"slashCommands":{"heading1":"Heading 1","heading1Desc":"Large heading","heading2":"Heading 2","heading2Desc":"Medium heading","heading3":"Heading 3","heading3Desc":"Small heading","bulletList":"Bullet List","bulletListDesc":"Bulleted list","orderedList":"Ordered List","orderedListDesc":"Numbered list","taskList":"Task List","taskListDesc":"Checkable task list","blockquote":"Blockquote","blockquoteDesc":"Quote block","codeBlock":"Code Block","codeBlockDesc":"Code snippet","table":"Table","tableDesc":"Insert 3\xd73 table","horizontalRule":"Divider","horizontalRuleDesc":"Horizontal divider","link":"Link","linkDesc":"Insert hyperlink"},"commands":{"qa":"Enter requirements clarification mode","commit":"Commit code changes","review":"Code review","test":"Run tests","fix":"Fix issues","explain":"Explain code","refactor":"Refactor code"},"review":{"reviewManagement":"Review Management","allReviews":"All Reviews","noOpenReviews":"No open reviews","viewComments":"View comments","nComments":"{{count}} comments","nDocs":"{{count}} docs","nReviews":"{{count}} reviews","docList":"Document List","allReviewsList":"All Reviews","expandList":"Expand list","collapseList":"Collapse list","closeReview":"Close review","reopenReview":"Reopen","deleteReview":"Delete review","noOpenDocs":"No open documents","noReviews":"No reviews","sharing":"Sharing","notShared":"Not shared","closeSharing":"Disable sharing","enableSharing":"Enable sharing","view":"View","setNickname":"Set your nickname","nicknameHint":"Other reviewers will see this name","nicknamePlaceholder":"Enter nickname","skipForNow":"Skip for now","identitySettings":"Identity Settings","reviewNickname":"Review Nickname","random":"Random","selectTextToComment":"Select text to add comment","selectTextHint":"Select text on the left to add a comment","prevComment":"Previous","nextComment":"Next","commentsCount":"{{count}} comments","commentsNavCount":"{{current}}/{{total}} comments","allCommentsTitle":"All Comments","commentsCountBrief":"{{count}}","closedCount":"{{count}} closed","copyAllComments":"Copy all comments","noComments":"No comments yet","closedComments":"Closed ({{count}})","closedLabel":"Closed","moreReplies":"+{{count}} replies","copyComment":"Copy comment","reopen":"Reopen","closeComment":"Close comment","editComment":"Edit comment","deleteComment":"Delete comment","edited":"(edited)","editReply":"Edit reply","deleteReply":"Delete reply","reply":"Reply","replyPlaceholder":"Add a reply...","selectedText":"Selected text","addCommentPlaceholder":"Add a comment...","enterSubmitHint":"Enter to submit, Shift+Enter for new line","commentBtn":"Comment","reviewNotExist":"Review does not exist or has been deleted","loadFailed":"Load failed","networkError":"Network error","reviewNotFound":"Review not found","checkLink":"Please check the link","updatedAt":"Updated {{date}}","active":"Active","closed":"Closed","viewAllComments":"View all comments","viewCommentBtn":"View Comments","copyLink":"Copy Link","reviewSummary":"Review Comments Summary — {{title}}","totalNComments":"{{count}} comments total","quoteRef":"Quote: \\"{{text}}\\"","commentAuthor":"Comment ({{author}}): {{content}}","replyAuthor":" ↳ {{author}}: {{content}}"},"markdown":{"copied":"✓ Copied","copy":"Copy"},"imagePreview":{"previewImage":"Preview image","deleteImage":"Delete image"},"tokenStats":{"title":"Claude Code Token Stats","activeHours":"Active Hours Distribution","hourSessions":"{{h}}:00 — {{count}} sessions","messages":"Messages","toolCalls":"Tool Calls","activityTrend":"Activity Trend","byModel":"By Model","tokenUsage":"Token Usage","equivalentCost":"Equivalent Cost","modelCostDetail":"Model Cost Details","model":"Model","share":"Share","total":"Total","totalSessions":"Total Sessions","totalMessages":"Total Messages","equivalentApiCost":"Equivalent API Cost","longestSession":"Longest Session","firstUse":"First Use","notFound":"~/.claude/stats-cache.json not found","day":"Day","week":"Week","month":"Month"},"toolCall":{"inputParams":"Input Parameters","resultLabel":"Result","inputParamsTitle":"View input parameters","resultTitle":"View result","input":"Input","result":"Result","foldedLines":"... ({{count}} lines)"},"fileEditor":{"unsavedConfirm":"You have unsaved changes. Close anyway?","discardChanges":"Discard changes","continueEditing":"Continue editing","externallyModified":"File was modified externally. Saving will overwrite external changes.","useDiskVersion":"Use disk version","forceOverwrite":"Force overwrite"},"quickFileOpen":{"placeholder":"Type file name to open...","noMatch":"No matching files","recent":"Recent","selectHint":"Select","openHint":"Open","closeHint":"Close"},"envManager":{"title":"Environment Variables","tabScope":"Current Tab Only","globalScope":"Global Environment Variables","varNamePlaceholder":"Variable name (e.g. NODE_ENV)","varValuePlaceholder":"Value (e.g. production)","valuePlaceholder":"Value","noVars":"No environment variables yet. Add one to get started."},"aliasManager":{"title":"Command Aliases","description":"Set shortcut aliases for common commands (global)","aliasPlaceholder":"Alias (e.g. ll)","commandPlaceholder":"Full command (e.g. ls -la)","fullCommandPlaceholder":"Full command","usage":"Usage tip:","usageDesc":"Type an alias to execute the corresponding full command","noAliases":"No command aliases yet. Add one to get started."},"diffViewer":{"fileChanges":"File Changes ({{count}})","selectFileToView":"Select a file to view changes","sideBySide":"Side by side","unified":"Unified","previewFile":"Preview file","copiedAll":"Full text copied","compact":"Compact","full":"Full","gap":{"hidden":"{{count}} lines hidden","more":"\xb7\xb7\xb7 more +{{count}} \xb7\xb7\xb7","expandUp":"Expand {{count}} lines up","expandDown":"Expand {{count}} lines down"}},"commitDetail":{"title":"Commit Details","hash":"Hash:","author":"Author:","date":"Date:","files":"Files:","nChanges":"{{count}} changes","loadingFiles":"Loading files...","noFileChanges":"No file changes","loadingDiff":"Loading diff...","selectFileToView":"Select a file to view diff"},"askQuestion":{"title":"Questions","nQuestions":"{{count}} questions","checkedN":"{{count}} checked","copyChecked":"Copy {{count}} checked Q&A","copyAll":"Copy all Q&A","checkToCopy":"Check to copy","custom":"Custom","customPlaceholder":"Enter custom answer...","notSelected":"(not selected)"},"tabBar":{"unpin":"Unpin","pin":"Pin to favorites","closeTab":"Close tab","newTab":"New tab"},"tabManagerTopBar":{"copyPageUrl":"Copy page URL","copyDirPath":"Copy directory path","refreshProject":"Refresh project","openInVSCode":"Open in VS Code","openInCursor":"Open in Cursor","aliasesGlobal":"Command Aliases (Global)","tokenStats":"Token Stats","openSurething":"Open Surething"},"hoverTooltip":{"findReferences":"Find References","search":"Search"},"todoViewer":{"title":"Task List","progress":"{{completed}} / {{total}} done"},"userMessages":{"title":"User Messages","noMessages":"No user messages"},"shortIdBadge":{"clickToDisconnect":"Click to disconnect","clickToRegister":"Click to register and copy CLI command"},"api":{"pathForbidden":"Operation not allowed on this path","deleteForbidden":"Delete not allowed on this path","notAFolder":"Target is not a folder","imageTooLarge":"Image too large to preview","cannotPreviewBinary":"Cannot preview binary file","fileTooLarge":"File too large to preview (over 10MB)","fileModifiedExternally":"File was modified externally","pickFolderPrompt":"Select project folder"},"confirm":{"title":"Notice","ok":"OK","cancel":"Cancel"},"floatingToolbar":{"addComment":"Add Comment","sendToAI":"Send to AI","search":"Search"},"searchResults":{"title":"Search Results","nMatches":"({{count}} matches)","searching":"Searching...","noResults":"No matches"},"references":{"title":"References","searching":"Searching...","notFound":"No references found"},"gitFileTree":{"noFiles":"No files"},"reviewUtils":{"adjectives":["Happy","Brave","Quiet","Bright","Gentle","Agile","Free","Clear","Flying","Relaxed","Lively","Wise","Calm","Alert","Composed","Steady","Cheerful","Warm","Bold","Poised"],"nouns":["Panda","Dolphin","Crane","Snow Leopard","Skylark","Squirrel","Flying Fish","Deer","Bluebird","Silver Fox","Owl","Dragonfly","Firefly","Sea Turtle","Butterfly","Monkey","Red-crowned Crane","Antelope","Swallow","Penguin"]}}'),r=JSON.parse('{"common":{"save":"保存","cancel":"取消","delete":"删除","close":"关闭","copy":"复制","edit":"编辑","file":"文件","codeMap":"代码地图","confirm":"确认","loading":"加载中...","search":"搜索","refresh":"刷新","retry":"重试","submit":"提交","copied":"已复制","saved":"已保存","failed":"失败","noMatch":"无匹配","noData":"无数据","done":"完成","justNow":"刚刚","minutesAgo":"{{count}}分钟前","hoursAgo":"{{count}}小时前","daysAgo":"{{count}}天前","monthsAgo":"{{count}}个月前","yearsAgo":"{{count}}年前","saveFailed":"保存失败","copyFailed":"复制失败","deleteFailed":"删除失败","operationFailed":"操作失败","copiedPath":"已复制路径","copyAbsPath":"复制绝对路径","loadMore":"加载更多","noResult":"无匹配结果","selected":"已选择","selectAll":"全选","hint":"提示","confirmBtn":"确定","cancelBtn":"取消","preview":"预览","readable":"可读","previous":"上一个","next":"下一个","all":"全部","input":"输入","result":"结果","line":"行","lines":"行","running":"运行中","connecting":"连接中","connected":"已连接","connectionFailed":"连接失败","builtin":"内置","global":"全局","project":"项目","current":"当前"},"toast":{"savedSuccess":"已保存","saveFailed":"保存失败","copiedName":"已复制: {{name}}","copyFailed":"复制失败","deleteFailed":"删除失败","operationFailed":"操作失败","staged":"已暂存","stageFailed":"暂存失败","unstaged":"已取消暂存","unstageFailed":"取消暂存失败","stagedNFiles":"已暂存 {{count}} 个文件","unstagedNFiles":"已取消暂存 {{count}} 个文件","discardFailed":"放弃变更失败","discardedNFiles":"已放弃 {{count}} 个文件的变更","stagedAllFiles":"已暂存所有文件","deletedFile":"已删除文件","discardedChanges":"已放弃变更","pastedFile":"已粘贴: {{name}}","pasteFailed":"粘贴失败","noFileToPaste":"没有可粘贴的文件","createdFile":"已创建文件: {{name}}","createFailed":"创建失败","movedToTrash":"已移动到回收站: {{name}}","copiedPageUrl":"已复制页面地址","copiedDirPath":"已复制目录路径","switchedToBranch":"已切换到 {{branch}}","switchBranchFailed":"切换分支失败","loadBranchFailed":"加载分支列表失败","copiedCommand":"已复制: {{command}}","copiedMessage":"已复制消息","copiedUrl":"已复制网址","copiedOutput":"已复制输出","copiedCmd":"已复制命令","copiedComment":"已复制评论","copiedAllComments":"已复制全部评论","copiedFileContent":"已复制文件内容","copiedQA":"已复制 {{count}} 个问答","copiedAllQA":"已复制所有问答","readFileFailed":"读取文件失败","reviewCreated":"评审已创建,链接已复制","reviewUpdated":"评审已更新,链接已复制","reviewCreateFailed":"创建评审失败","sharingClosed":"已关闭分享","sharingCloseFailed":"关闭分享失败","linkCopied":"链接已复制","addCommentFailed":"添加评论失败","deleteCommentFailed":"删除评论失败","editCommentFailed":"编辑评论失败","addReplyFailed":"添加回复失败","deleteReplyFailed":"删除回复失败","editReplyFailed":"编辑回复失败","disconnected":"已断开: {{id}}","pluginReloading":"插件重载中...","worktreeCreateSuccess":"Worktree 创建成功: {{name}}","worktreeCreateFailed":"创建 worktree 失败","worktreeLoadFailed":"加载 worktree 列表失败","worktreeDeleted":"Worktree 已删除","worktreeDeleteFailed":"删除 worktree 失败","worktreeLocked":"已锁定","worktreeUnlocked":"已解锁"},"workspace":{"selectProject":"选择一个项目开始","searchProjectPath":"搜索项目路径...","loadingProjects":"加载项目中...","projectNotFound":"未找到项目","sessions":"{{count}} 会话","loadingSessions":"加载会话...","noSessions":"无会话记录","loadingText":"加载中...","openProject":"打开项目","expandSidebar":"展开侧边栏","collapseSidebar":"折叠侧边栏","notes":"笔记","skills":"技能","settings":"设置","projectNotes":"项目笔记","closeProject":"关闭项目"},"sessions":{"recentSessions":"最近会话","runningCount":"{{count}} 运行中","unreadCount":"{{count}} 未读","noSessions":"暂无会话记录","running":"运行中","done":"完成","pinnedSessions":"常用会话","noPinnedSessions":"暂无常用会话,在 Tab 栏点击图钉可添加","editTitle":"编辑标题","remove":"移除","projectSessions":"项目会话","browseAllSessions":"浏览所有会话","sessionList":"会话列表","searchSessions":"搜索会话...","loadingSessions":"加载会话中...","noMatchingSessions":"未找到匹配的会话","noSessionsYet":"暂无会话","projectList":"项目列表","openFolder":"打开文件夹","selectingFolder":"选择中...","loadingHistory":"加载历史消息..."},"scheduledTasks":{"title":"定时任务","aboutToTrigger":"即将触发","secondsLater":"{{count}}秒后","minutesLater":"{{count}}分钟后","hoursMinutesLater":"{{h}}小时{{m}}分后","hoursLater":"{{h}}小时后","onceType":"一次性 ({{minutes}}分钟)","everyNMinutes":"每{{minutes}}分钟","completed":"已完成","paused":"已暂停","activeCount":"{{running}} 个活跃","pausedCount":"{{paused}} 个暂停","noScheduledTasks":"暂无定时任务,在聊天输入栏点击时钟按钮创建","lastResult":"上次","runNow":"立即运行","resume":"恢复","pause":"暂停","completedCount":"已完成 ({{count}})","success":"成功","failure":"失败","createTask":"创建定时任务","editTask":"编辑定时任务","sendMessage":"发送消息","messagePlaceholder":"输入要发送的消息...","type":"类型","once":"一次性","interval":"周期","quickSelect":"快捷选择","customCron":"自定义 Cron 表达式","customMinutes":"自定义分钟数","cronPlaceholder":"例: 0 9 * * 1-5 (工作日9点)","cronFormat":"格式:分 时 日 月 星期(如 0 9 * * 1-5)","minutesPlaceholder":"分钟数","limitTimeRange":"限制执行时段","to":"至","saveBtn":"保存 ({{modKey}}↩)","createBtn":"创建 ({{modKey}}↩)","5minLater":"5 分钟后","15minLater":"15 分钟后","30minLater":"30 分钟后","1hourLater":"1 小时后","every15min":"每 15 分钟","every30min":"每 30 分钟","every1hour":"每 1 小时","every2hours":"每 2 小时","daily9am":"每天 09:00","daily6pm":"每天 18:00","weeklyMon9am":"每周一 09:00","monthly1st9am":"每月 1 号 09:00"},"cron":{"everyNMinutes":"每 {{n}} 分钟","everyNHours":"每 {{n}} 小时整点","everyMinute":"每分钟","everyHourAtMin":"每小时第 {{m}} 分","hourlyEveryMin":"{{h}} 点每分钟","daily":"每天 {{time}}","weekdays":"工作日","weekends":"周末","dowSun":"日","dowMon":"一","dowTue":"二","dowWed":"三","dowThu":"四","dowFri":"五","dowSat":"六","monthPrefix":"月","dayOfMonth":"号","dayRange":"{{a}}号到{{b}}号","weekdayPrefix":"周","weekdayRange":"周{{a}}到周{{b}}"},"blockViewer":{"empty":{"body":"在左侧文件树选择一个文件,查看它的代码地图。","hint":"或按 ⌘K 搜索。"},"fileMode":{"loading":"加载中…","notFound":"该文件未索引(不支持的语言或超出文件上限)。"},"search":{"tooltip":"搜索 (⌘K)","hint":"开始输入以搜索","noResults":"未找到匹配","files":"文件","symbols":"符号"},"viewerToggle":{"toBlock":"显示代码地图","toCode":"返回代码视图"},"toc":{"title":"本文件","empty":"未检测到函数。"},"history":{"title":"历史","empty":"点击左右两侧的 pin 开始追踪调用链。","clear":"清空历史"},"refresh":"重新构建项目图","retry":"重试"},"blockDiffViewer":{"loading":"正在生成代码地图…","unsupported":"该文件类型暂不支持代码地图 diff","unsupportedHint":"切回常规 diff 视图查看。","error":"代码地图 diff 失败:{{message}}","noBlockChanges":"代码地图无变化(仅格式或空白)。","noBefore":"(新增)","noAfter":"(已删除)","kind":{"added":"新增","deleted":"删除","modified":"修改"}},"fileBrowser":{"directoryTree":"目录树","searchTab":"搜索","recentTab":"最近","changesTab":"变更","historyTab":"历史","searchFiles":"搜索文件...","clear":"清除","exactMatchOn":"全词匹配(已开启)","exactMatchOff":"全词匹配(已关闭)","refreshTree":"刷新目录树","collapseAll":"折叠所有目录","searchFileContent":"搜索文件内容...","caseSensitive":"区分大小写","wholeWord":"完整词","regex":"正则","fileTypes":"文件类型 (ts,tsx)","compareMode":"对比","compareModeOff":"关闭分支对比","compareModeOn":"与选定分支对比","createFile":"新建文件","createFileIn":"新建文件 (在 {{path}}/)","fileName":"文件名...","noRecentFiles":"暂无最近浏览的文件","stagingArea":"暂存区 ({{count}})","changesSummary_one":"{{count}} 个变更","changesSummary_other":"{{count}} 个变更","noChanges":"工作区无变更","refreshChanges":"刷新变更列表","unstageAll":"全部取消","noStagedFiles":"无暂存的文件","unstageNFiles":"取消暂存 {{count}} 个文件","unstageFile":"取消暂存","workspace":"工作区 ({{count}})","discardAll":"放弃所有","stageAll":"全部暂存","noUnstagedChanges":"无未暂存的变更","discardNFiles":"放弃 {{count}} 个文件的变更","stageNFiles":"暂存 {{count}} 个文件","discardChanges":"放弃变更","stageFile":"暂存文件","loadingDiff":"加载对比文件中...","noDiffFiles":"无差异文件","nFilesChanged":"{{count}} 个文件变更(vs {{branch}})","loadingCommits":"加载提交记录中...","noCommits":"无提交记录","allLoaded":"已加载全部 {{count}} 条记录","locateInTree":"在目录树中定位","unsaved":"未保存","saveBeforeSwitch":"当前文件有未保存的修改,是否保存后切换?","saveAndSwitch":"保存并切换","closeEdit":"关闭编辑 (ESC)","closeBtn":"关闭","copyFileContent":"复制文件内容","toggleJsonReadable":"切换 JSON 可读模式","previewMarkdown":"预览 Markdown 渲染效果","viewBlame":"查看每行代码的修改记录","editFile":"编辑文件","backToPreview":"返回预览","cannotPreview":"无法预览此文件","selectFileToPreview":"选择文件以预览","staged":"已暂存","unstaged":"未暂存","selectFileToViewDiff":"选择文件查看差异","loadingDiffContent":"加载差异中...","clickCompareToLoad":"点击「对比」加载分支差异","selectCommitToView":"选择提交查看详情","confirmDelete":"确认删除","confirmDeleteMessage":"确定要将 <file>{{name}}</file> 移动到回收站吗?","nFilesNMatches":"{{files}} 个文件,{{matches}} 处匹配","resultsTruncated":"结果已截断","noContentSearchResults":"无匹配结果","enterKeywordToSearch":"输入关键词搜索文件内容","searchMinChars":"搜索内容至少需要 2 个字符"},"codeViewer":{"fileModifiedExternally":"文件已被外部修改,保存将覆盖外部更改","useDiskVersion":"使用磁盘版本","forceOverwrite":"强制覆盖","searchPlaceholder":"搜索...","caseSensitive":"区分大小写","wholeWordMatch":"全字匹配","unsavedConfirm":"有未保存的修改,确定关闭?","discardChanges":"放弃修改","continueEditing":"继续编辑","unsavedExitConfirm":"有未保存的修改,确定退出编辑模式?","clickToViewDetails":"点击查看详情","clickToViewCommit":"点击查看 commit 详情","nComments":"{{count}} 条评论","searchChat":"搜索聊天内容...","prevShiftEnter":"上一个 (Shift+Enter)","nextEnter":"下一个 (Enter)","closeEsc":"关闭 (Esc)"},"chat":{"startConversation":"开始对话吧","loadMoreHistory":"加载更多...","scrollUpForMore":"↑ 向上滚动加载更多历史","claudeThinking":"Claude 正在思考...","jumpToStart":"跳转到开始","jumpToLatest":"跳转到最新","copyMessage":"复制消息","forkSession":"从此处分叉会话","imageN":"图片 {{index}}","imagePreview":"图片预览","toolCalls":"{{count}} 个工具调用","collapse":"▲ 收起","expand":"▼ 展开","viewQuestions":"查看提问","viewAllFileChanges":"查看所有文件变更","requestFailed":"请求失败","cannotReadStream":"无法读取响应流","errorRetry":"发生错误,请重试","placeholder":"输入消息,Enter 发送 (Shift+Enter 换行,可粘贴图片,/ 显示命令)","placeholderDisabled":"生成中... 可继续输入","imageSizeLimit":"图片大小超过限制(最大 5MB),当前大小: {{size}}MB","stageAll":"暂存所有文件 (git add -A)","viewGitChanges":"查看 Git 变更","viewAllComments":"查看所有评论","userMessages":"用户消息列表","projectNotes":"项目笔记","scheduledTasks":"定时任务","context":"上下文","output":"输出","copiedCommandTooltip":"已复制!","copyCommandTooltip":"复制命令: claude -r {{sessionId}}","executedCommand":"执行了 `{{command}}`{{exitInfo}},输出:\\n```\\n{{output}}\\n```","executedCommandFailed":"执行 `{{command}}` 失败:{{error}}","skillExpansionPrompt":"请读取这个 skill 文件:"},"console":{"enterCommandOrUrl":"输入命令或网址开始使用","loadingMore":"加载中...","loadMoreHistory":"加载更多历史","quickCommands":"快捷命令","singleColumn":"单列布局","dualColumn":"双列布局","envVars":"环境变量","launchZsh":"启动 zsh 交互终端","inputPlaceholder":"输入命令或网址并按 Enter... (↑↓ 历史, Tab 补全)","scopeProject":"项目","scopeGlobal":"全局","tabSwitchEscClose":"Tab 切换 \xb7 Esc 关闭","copyOutput":"复制输出","copyCommand":"复制命令","rerun":"重新运行","deleteRecord":"删除记录","searchPlaceholder":"搜索...","searchMode":"搜索","filterMode":"过滤","prevShiftEnter":"上一个 (Shift+Enter)","nextEnter":"下一个 (Enter)","loadingTerminal":"加载终端...","clickToInput":"点击终端区域输入","stdinPlaceholder":"stdin 输入...","runningText":"运行中...","exitCode":"退出代码: {{code}}","totalLines":"共 {{count}} 行","globalCommands":"全局命令","projectCommands":"项目命令","noCustomCommands":"暂无自定义命令","namePlaceholder":"名称","commandPlaceholder":"命令","restoreTooltip":"还原 ({{modKey}}M / ESC)","screenshotting":"截图中...","outputFileDeleted":"[输出文件已删除]"},"browser":{"blankPage":"空白页","copyUrl":"复制网址","openInNewWindow":"在新窗口打开","exitMaximize":"退出最大化 ({{modKey}}M)","maximize":"最大化 ({{modKey}}M)","pageLoadFailed":"页面加载失败","clickToWake":"点击唤醒","sleeping":"已休眠","loadingPage":"加载中...","loadFailed":"加载失败"},"database":{"connectionFailed":"连接失败","connected":"已连接","connecting":"连接中...","refreshTableList":"刷新表列表","filterTable":"T 表","filterView":"V 视图","noTables":"无表","tabStructure":"结构","tabData":"数据","tabSql":"SQL","filterActive":"筛选: {{count}}列","clearAllFilters":"清除所有筛选","deleteNRows":"删除 {{count}} 行","confirmDeleteRows":"确认删除?","copyCsvSelected":"复制选中行为 CSV","copyCsvAll":"导出全表 CSV","copyJsonSelected":"复制选中行为 JSON","copyJsonAll":"导出全表 JSON","copyCSV":"复制 CSV","CSV":"CSV","copyJSON":"复制 JSON","JSON":"JSON","selectTable":"选择左侧表格","selectTableToView":"选择表以查看结构","selectTableForData":"选择表以查看数据","columns":"列","colName":"名称","colType":"类型","colNullable":"可空","colDefault":"默认值","primaryKey":"主键","foreignKeys":"外键","indexes":"索引","enable":"启用","commaValues":"逗号分隔多值","likePattern":"%pattern%","valuePlaceholder":"值","apply":"应用","clearFilter":"清除","addRow":"+ 新增行","totalRows":"{{count}} 行","rowsAffected":"{{command}} — {{count}} 行受影响 ({{duration}}ms)","queryRows":"{{count}} 行 ({{duration}}ms)","resultTruncated":"[结果已截断至1000行]","sqlPlaceholder":"输入 SQL... ({{modKey}}Enter 执行)","executing":"执行中...","execute":"▶ 执行","deleteRowsFailed":"{{count}} 行删除失败","inputParams":"输入参数","resultLabel":"结果"},"mysql":{"connectionFailed":"连接失败","connected":"已连接","connecting":"连接中...","refreshTableList":"刷新表列表","filterTable":"T 表","filterView":"V 视图","noTables":"无表","tabStructure":"结构","tabData":"数据","tabSql":"SQL","filterActive":"筛选: {{count}}列","clearAllFilters":"清除所有筛选","deleteNRows":"删除 {{count}} 行","confirmDeleteRows":"确认删除?","copyCsvSelected":"复制选中行为 CSV","copyCsvAll":"导出全表 CSV","copyJsonSelected":"复制选中行为 JSON","copyJsonAll":"导出全表 JSON","copyCSV":"复制 CSV","CSV":"CSV","copyJSON":"复制 JSON","JSON":"JSON","selectTable":"选择左侧表格","selectTableToView":"选择表以查看结构","selectTableForData":"选择表以查看数据","columns":"列","colName":"名称","colType":"类型","colNullable":"可空","colDefault":"默认值","primaryKey":"主键","foreignKeys":"外键","indexes":"索引","enable":"启用","commaValues":"逗号分隔多值","likePattern":"%pattern%","valuePlaceholder":"值","apply":"应用","clearFilter":"清除","addRow":"+ 新增行","totalRows":"{{count}} 行","rowsAffected":"{{command}} — {{count}} 行受影响 ({{duration}}ms)","queryRows":"{{count}} 行 ({{duration}}ms)","resultTruncated":"[结果已截断至1000行]","sqlPlaceholder":"输入 SQL... ({{modKey}}Enter 执行)","executing":"执行中...","execute":"▶ 执行","deleteRowsFailed":"{{count}} 行删除失败"},"redis":{"neverExpires":"永不过期","expired":"已过期","loadFailed":"加载失败","deleteFailed":"删除失败","saveFailed":"保存失败","scanPlaceholder":"SCAN 模式...","scanSearch":"搜索 (SCAN)","noKeys":"无 key","loadMore":"加载更多...","tabData":"数据","tabInfo":"信息","tabCli":"CLI","selectKey":"选择左侧 Key","keyNotExist":"Key 不存在","unsupportedType":"不支持的类型: {{type}}","nItems":"{{total}} items","showingN":"显示 {{count}}","nMembers":"{{total}} members","nEntries":"{{total}} entries","cliHint":"输入 Redis 命令,如 PING, GET key, KEYS *","cliPlaceholder":"输入命令..."},"git":{"switchBranch":"切换分支","searchBranch":"搜索分支...","noBranches":"无可切换分支","noMatchingBranches":"无匹配分支","localBranches":"本地分支","remoteBranches":"远程分支","branchNotFound":"未找到分支","selectBranch":"选择分支...","currentBranch":"当前","notGitRepo":"当前目录不是 Git 仓库","cannotGetBranches":"无法获取分支信息","getBranchesFailed":"获取分支信息失败","discardAllConfirm":"确定要放弃工作区的 {{count}} 个文件的变更吗?此操作不可恢复。","worktree":{"title":"Git Worktree","count":"{{count}} 个 worktree","selectBranch":"选择分支","addWorktree":"+ 添加 Worktree","confirmDelete":"确认删除","confirmDeleteMsg":"确定要删除 worktree 吗?","path":"路径:","branch":"分支:","locked":"已锁定","unlock":"解锁","lock":"锁定","searchBranch":"搜索分支...","noBranches":"无可用分支"}},"comments":{"addComment":"添加评论","lineRange":"行 {{start}}-{{end}}","inputPlaceholder":"输入评论...","newComment":"新评论 {{range}}","commentPlaceholder":"输入评论... ({{modKey}}Enter 提交, Esc 取消)","nComments":"{{count}} 条评论","allComments":"所有评论","copyAllComments":"复制全部评论","noComments":"暂无评论","clearAll":"清空所有","totalComments":"共 {{count}} 条评论","aiReply":"AI 回复","noContent":"(无内容)","linesCount":"({{count}} 行)","codeRef":"代码引用:","note":"备注: {{content}}","submitting":"提交中...","enterSubmit":"Enter 提交 \xb7 Shift+Enter 换行","askAI":"提问 AI","inputQuestion":"输入你的问题...","aiGenerating":"正在生成中,请稍候...","enterSend":"Enter 发送 \xb7 Shift+Enter 换行","sendToAI":"发送到 AI","aiResponding":"AI 正在响应中...","question":"问题: {{question}}"},"fileContextMenu":{"createFile":"新建文件","copyFile":"复制文件","copyFolder":"复制文件夹","pasteHere":"粘贴到此处","deleteFile":"删除文件","deleteFolder":"删除文件夹","copyRelativePath":"复制相对路径","copyAbsolutePath":"复制绝对路径","copyRelativeDirPath":"复制相对文件夹路径","copyAbsoluteDirPath":"复制绝对文件夹路径","copyFileName":"复制文件名","copyFolderName":"复制文件夹名"},"settings":{"title":"设置","theme":"主题","themeLight":"浅色","themeDark":"深色","themeSystem":"跟随系统","browserExtension":"浏览器插件","extensionInstalled":"Cockpit Bridge 已安装","extensionNotInstalled":"Cockpit Bridge 未安装","extensionDescription":"安装 Chrome 插件后,iframe 内的链接跳转将被拦截:新标签链接创建新气泡,页面内导航更新当前气泡。","installSteps":"安装步骤:","step1":"1. 打开 Chrome 地址栏输入","step2":"2. 开启右上角「开发者模式」","step3":"3. 点击「加载已解压的扩展程序」","step4mac":"4. 按 <kbd>Cmd+Shift+G</kbd> → 粘贴下方路径 → 回车","copyExtensionPath":"复制插件目录路径","reloadExtension":"重载插件","about":"关于","language":"语言","languageAuto":"跟随系统","switchDark":"切换暗色","switchLight":"切换亮色"},"editor":{"placeholder":"写点什么... 输入 / 打开快捷命令","noteTitle":"{{name}} - 笔记","noteUntitled":"笔记","saving":"保存中...","linkPlaceholder":"输入链接地址...","confirmLink":"确认","removeLink":"移除链接","heading1":"标题 1","heading2":"标题 2","heading3":"标题 3","bold":"粗体","italic":"斜体","strikethrough":"删除线","inlineCode":"行内代码","link":"链接","bulletList":"无序列表","orderedList":"有序列表","taskList":"待办列表","blockquote":"引用","codeBlock":"代码块","table":"表格","horizontalRule":"分割线","insertRowAbove":"在上方插入行","insertRowBelow":"在下方插入行","insertColumnLeft":"在左侧插入列","insertColumnRight":"在右侧插入列","deleteRow":"删除当前行","deleteColumn":"删除当前列","deleteTable":"删除表格","deleteCodeBlock":"删除代码块","toc":"目录","expandToc":"展开目录","collapseToc":"收起目录"},"slashCommands":{"heading1":"标题 1","heading1Desc":"大标题","heading2":"标题 2","heading2Desc":"中标题","heading3":"标题 3","heading3Desc":"小标题","bulletList":"无序列表","bulletListDesc":"项目符号列表","orderedList":"有序列表","orderedListDesc":"编号列表","taskList":"待办列表","taskListDesc":"可勾选的任务列表","blockquote":"引用","blockquoteDesc":"引用块","codeBlock":"代码块","codeBlockDesc":"代码片段","table":"表格","tableDesc":"插入 3\xd73 表格","horizontalRule":"分割线","horizontalRuleDesc":"水平分割线","link":"链接","linkDesc":"插入超链接"},"commands":{"qa":"进入需求澄清讨论模式","commit":"提交代码变更","review":"代码审查","test":"运行测试","fix":"修复问题","explain":"解释代码","refactor":"重构代码"},"review":{"reviewManagement":"评审管理","allReviews":"所有评审","noOpenReviews":"暂无开放评审","viewComments":"查看评论","nComments":"{{count}} 条评论","nDocs":"{{count}} 文档","nReviews":"{{count}} 评审","docList":"文档列表","allReviewsList":"所有评审","expandList":"展开列表","collapseList":"折叠列表","closeReview":"关闭评审","reopenReview":"重新开放","deleteReview":"删除评审","noOpenDocs":"暂无开放文档","noReviews":"暂无评审","sharing":"分享中","notShared":"未分享","closeSharing":"关闭分享","enableSharing":"开启分享评审","view":"查看","setNickname":"设置你的昵称","nicknameHint":"其他评审人将看到这个名字","nicknamePlaceholder":"输入昵称","skipForNow":"下次再说","identitySettings":"身份设置","reviewNickname":"评审昵称","random":"随机","selectTextToComment":"选中左侧文本添加评论","selectTextHint":"选中左侧文本即可添加评论","prevComment":"上一条","nextComment":"下一条","commentsCount":"{{count}} 条评论","commentsNavCount":"{{current}}/{{total}} 条评论","allCommentsTitle":"全部评论","commentsCountBrief":"{{count}} 条","closedCount":"{{count}} 条已关闭","copyAllComments":"复制全部评论","noComments":"暂无评论","closedComments":"已关闭 ({{count}})","closedLabel":"已关闭","moreReplies":"+{{count}} 条回复","copyComment":"复制评论","reopen":"重开","closeComment":"关闭评论","editComment":"编辑评论","deleteComment":"删除评论","edited":"(已编辑)","editReply":"编辑回复","deleteReply":"删除回复","reply":"回复","replyPlaceholder":"添加回复...","selectedText":"选中文本","addCommentPlaceholder":"添加评论...","enterSubmitHint":"Enter 提交,Shift+Enter 换行","commentBtn":"评论","reviewNotExist":"评审不存在或已被删除","loadFailed":"加载失败","networkError":"网络错误","reviewNotFound":"评审不存在","checkLink":"请检查链接是否正确","updatedAt":"更新于 {{date}}","active":"开放中","closed":"已关闭","viewAllComments":"查看全部评论","viewCommentBtn":"查看评论","copyLink":"复制链接","reviewSummary":"评审评论汇总 — {{title}}","totalNComments":"共 {{count}} 条评论","quoteRef":"引用: \\"{{text}}\\"","commentAuthor":"评论 ({{author}}): {{content}}","replyAuthor":" ↳ {{author}}: {{content}}"},"markdown":{"copied":"✓ 已复制","copy":"复制"},"imagePreview":{"previewImage":"预览图片","deleteImage":"删除图片"},"tokenStats":{"title":"Claude Code Token 统计","activeHours":"活跃时段分布","hourSessions":"{{h}}:00 — {{count}} 次会话","messages":"消息","toolCalls":"工具调用","activityTrend":"活动趋势","byModel":"按模型","tokenUsage":"Token 用量","equivalentCost":"等效费用","modelCostDetail":"模型费用明细","model":"模型","share":"占比","total":"合计","totalSessions":"总会话","totalMessages":"总消息","equivalentApiCost":"等效 API 费用","longestSession":"最长会话","firstUse":"首次使用","notFound":"未找到 ~/.claude/stats-cache.json","day":"日","week":"周","month":"月"},"toolCall":{"inputParams":"输入参数","resultLabel":"结果","inputParamsTitle":"查看输入参数","resultTitle":"查看结果","input":"输入","result":"结果","foldedLines":"... ({{count}} 行)"},"fileEditor":{"unsavedConfirm":"有未保存的修改,确定关闭?","discardChanges":"放弃修改","continueEditing":"继续编辑","externallyModified":"文件已被外部修改,保存将覆盖外部更改","useDiskVersion":"使用磁盘版本","forceOverwrite":"强制覆盖"},"quickFileOpen":{"placeholder":"输入文件名快速打开...","noMatch":"没有匹配的文件","recent":"最近","selectHint":"选择","openHint":"打开","closeHint":"关闭"},"envManager":{"title":"环境变量管理","tabScope":"当前 Tab 专用","globalScope":"全局环境变量","varNamePlaceholder":"变量名(如 NODE_ENV)","varValuePlaceholder":"值(如 production)","valuePlaceholder":"值","noVars":"还没有环境变量,添加一个试试"},"aliasManager":{"title":"命令别名管理","description":"为常用命令设置快捷别名(全局生效)","aliasPlaceholder":"别名(如 ll)","commandPlaceholder":"完整命令(如 ls -la)","fullCommandPlaceholder":"完整命令","usage":"使用提示:","usageDesc":"输入别名即可执行对应的完整命令","noAliases":"还没有命令别名,添加一个试试"},"diffViewer":{"fileChanges":"文件变更 ({{count}} 处)","selectFileToView":"选择左侧文件查看变更","sideBySide":"并列对比","unified":"统一对比","previewFile":"预览文件","copiedAll":"已复制全文","compact":"精简","full":"全文","gap":{"hidden":"已隐藏 {{count}} 行","more":"\xb7\xb7\xb7 更多 +{{count}} \xb7\xb7\xb7","expandUp":"向上展开 {{count}} 行","expandDown":"向下展开 {{count}} 行"}},"commitDetail":{"title":"提交详情","hash":"哈希:","author":"作者:","date":"日期:","files":"文件:","nChanges":"{{count}} 个变更","loadingFiles":"加载文件中...","noFileChanges":"无文件变更","loadingDiff":"加载差异中...","selectFileToView":"选择文件查看差异"},"askQuestion":{"title":"提问","nQuestions":"{{count}} 个问题","checkedN":"已勾选 {{count}}","copyChecked":"复制勾选的 {{count}} 个问答","copyAll":"复制所有问答","checkToCopy":"勾选以复制","custom":"自定义","customPlaceholder":"输入自定义回答...","notSelected":"(未选择)"},"tabBar":{"unpin":"取消固定","pin":"固定到常用会话","closeTab":"关闭标签","newTab":"新建标签"},"tabManagerTopBar":{"copyPageUrl":"复制页面地址","copyDirPath":"复制目录路径","refreshProject":"刷新当前项目","openInVSCode":"在 VS Code 中打开","openInCursor":"在 Cursor 中打开","aliasesGlobal":"命令别名(全局)","tokenStats":"Token 统计","openSurething":"打开 Surething"},"hoverTooltip":{"findReferences":"查找引用","search":"搜索"},"todoViewer":{"title":"任务列表","progress":"{{completed}} / {{total}} 完成"},"userMessages":{"title":"用户消息列表","noMessages":"暂无用户消息"},"shortIdBadge":{"clickToDisconnect":"点击断开连接","clickToRegister":"点击注册并复制 CLI 命令"},"api":{"pathForbidden":"不允许操作此路径","deleteForbidden":"不允许删除此路径","notAFolder":"目标不是文件夹","imageTooLarge":"图片文件过大,无法预览","cannotPreviewBinary":"无法预览二进制文件","fileTooLarge":"文件过大,无法预览(超过 10MB)","fileModifiedExternally":"文件已被外部修改","pickFolderPrompt":"选择项目文件夹"},"confirm":{"title":"提示","ok":"确定","cancel":"取消"},"floatingToolbar":{"addComment":"添加评论","sendToAI":"发送 AI","search":"搜索"},"searchResults":{"title":"搜索结果","nMatches":"({{count}} 处匹配)","searching":"搜索中...","noResults":"无匹配结果"},"references":{"title":"引用","searching":"搜索中...","notFound":"未找到引用"},"gitFileTree":{"noFiles":"无文件"},"reviewUtils":{"adjectives":["快乐","勇敢","安静","明亮","温柔","灵巧","自由","清澈","飞翔","悠闲","活泼","聪慧","淡定","机敏","从容","坚定","爽朗","和煦","奔放","沉稳"],"nouns":["熊猫","海豚","白鹤","雪豹","云雀","松鼠","飞鱼","梅花鹿","青鸟","银狐","猫头鹰","蜻蜓","萤火虫","海龟","蝴蝶","金丝猴","丹顶鹤","羚羊","燕子","企鹅"]}}');n.Ay.isInitialized||n.Ay.init({resources:{en:{translation:a},zh:{translation:r}},lng:"en",fallbackLng:"en",interpolation:{escapeValue:!1}});let i=n.Ay},79968:(e,t,o)=>{o.d(t,{ShareReviewToggle:()=>c});var n=o(95155),a=o(12115),r=o(79114),i=o(34075),s=o(86957),l=o(90420);function c({content:e,sourceFile:t}){let o,d,u,m,p,{t:h}=(0,r.Bd)(),[g,f]=(0,a.useState)(null),[w,v]=(0,a.useState)(!0),[C,y]=(0,a.useState)(!1);(0,a.useEffect)(()=>{if(!t)return void v(!1);let e=!1;return s.t4.runPromiseExit((0,l.Y_)()).then(o=>{if(!e){if("Success"===o._tag){let e=(o.value.reviews??[]).find(e=>e.sourceFile===t);f(e?{id:e.id,active:e.active,updatedAt:e.updatedAt}:null)}v(!1)}}),()=>{e=!0}},[t]);let b=g?.active===!0,x=(0,a.useCallback)(async()=>{y(!0);let o=t.split("/").pop()||t,n=await s.t4.runPromiseExit((0,l.bx)({title:o,content:e,sourceFile:t}));if("Success"!==n._tag||!n.value.review){(0,i.oR)(h("toast.reviewCreateFailed"),"error"),y(!1);return}let a=n.value.review;f({id:a.id,active:!0,updatedAt:a.updatedAt||a.createdAt});let r=await s.t4.runPromiseExit((0,l._c)()),c="Success"===r._tag&&r.value.shareBase?`${r.value.shareBase}/review/${a.id}`:`${window.location.origin}/review/${a.id}`;try{await navigator.clipboard.writeText(c)}catch{}(0,i.oR)(a.existing?h("toast.reviewUpdated"):h("toast.reviewCreated"),"success"),y(!1)},[e,t,h]),k=(0,a.useCallback)(async()=>{g&&(y(!0),"Success"===(await s.t4.runPromiseExit((0,l.Gm)(g.id,{active:!1})))._tag?(f(e=>e?{...e,active:!1}:null),(0,i.oR)(h("toast.sharingClosed"),"success")):(0,i.oR)(h("toast.sharingCloseFailed"),"error"),y(!1))},[g,h]),S=(0,a.useCallback)(()=>{C||(b?k():x())},[C,b,x,k]),N=(0,a.useCallback)(()=>{g&&window.open(`${window.location.origin}/review/${g.id}`,"_blank")},[g]);return w?null:(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)("button",{onClick:S,disabled:C,className:`relative inline-flex h-4 w-7 items-center rounded-full transition-colors ${C?"opacity-50 cursor-wait":"cursor-pointer"} ${b?"bg-green-500":"bg-muted-foreground/30"}`,title:b?h("review.closeSharing"):h("review.enableSharing"),children:(0,n.jsx)("span",{className:`inline-block h-3 w-3 rounded-full bg-white transition-transform ${b?"translate-x-3.5":"translate-x-0.5"}`})}),(0,n.jsx)("span",{className:`text-[11px] ${b?"text-green-600 dark:text-green-400":"text-muted-foreground"}`,children:b?h("review.sharing"):h("review.notShared")}),g&&g.updatedAt&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("span",{className:"text-[10px] text-muted-foreground",children:(d=String((o=new Date(g.updatedAt)).getMonth()+1).padStart(2,"0"),u=String(o.getDate()).padStart(2,"0"),m=String(o.getHours()).padStart(2,"0"),p=String(o.getMinutes()).padStart(2,"0"),`${d}-${u} ${m}:${p}`)}),(0,n.jsx)("button",{onClick:N,className:"text-[11px] text-brand hover:underline",children:h("review.view")})]})]})}},82032:(e,t,o)=>{o.d(t,{ReviewDropdown:()=>h});var n=o(95155),a=o(12115),r=o(79114),i=o(2111),s=o(19736),l=o(49433),c=o(86957),d=o(90420);let u="review-last-viewed";function m(){try{return JSON.parse(localStorage.getItem(u)||"{}")}catch{return{}}}function p(e,t){if(!e.lastCommentAt)return!1;let o=t[e.id];return!o||e.lastCommentAt>o}function h({cwd:e}){let{t}=(0,r.Bd)(),[o,g]=(0,a.useState)(!1),[f,w]=(0,a.useState)([]),[v,C]=(0,a.useState)(!1),[y,b]=(0,a.useState)(null),[x,k]=(0,a.useState)({}),[S,N]=(0,a.useState)({open:!1,comments:[],title:"",userNameMap:{}}),T=(0,a.useRef)(null),F=(0,a.useRef)(null),[E,L]=(0,a.useState)(null);(0,a.useEffect)(()=>{queueMicrotask(()=>k(m()))},[]),(0,a.useEffect)(()=>{if(!o)return;let e=e=>{T.current&&!T.current.contains(e.target)&&g(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[o]);let j=(0,a.useCallback)(async()=>{C(!0);let e=await c.t4.runPromiseExit((0,d.Y_)());"Success"===e._tag&&w(e.value.reviews??[]),C(!1)},[]);(0,a.useEffect)(()=>{o&&queueMicrotask(()=>j())},[o,j]);let R=(0,a.useCallback)(e=>{let{data:t}=e;t?.some(e=>"review"===e.type)&&j()},[j]);(0,i.h)({url:`/ws/watch?cwd=${encodeURIComponent(e||"/")}`,onMessage:R,enabled:!!e}),(0,a.useEffect)(()=>{queueMicrotask(()=>j())},[j]);let A=(0,a.useMemo)(()=>f.filter(e=>e.active),[f]),P=(0,a.useMemo)(()=>A.some(e=>p(e,x)),[A,x]),M=(0,a.useCallback)(e=>{let t;(t=m())[e]=Date.now(),localStorage.setItem(u,JSON.stringify(t)),k(m()),window.open(`${window.location.origin}/review/${e}`,"_blank")},[]),D=(0,a.useCallback)(async(e,t)=>{e.stopPropagation();let[o,n]=await Promise.all([c.t4.runPromiseExit((0,d.JK)(t)),c.t4.runPromiseExit((0,d.BL)())]);if("Success"!==o._tag)return;let a=o.value.review,r={};if("Success"===n._tag)for(let[e,t]of Object.entries(n.value.users))r[e]=t.name;N({open:!0,comments:a.comments||[],title:a.title??"",userNameMap:r})},[]),I=(0,a.useCallback)((e,t)=>{F.current=t,e.dataTransfer.effectAllowed="move";let o=e.currentTarget;requestAnimationFrame(()=>o.classList.add("opacity-30"))},[]),B=(0,a.useCallback)(e=>{F.current=null,L(null),e.currentTarget instanceof HTMLElement&&e.currentTarget.classList.remove("opacity-30")},[]),O=(0,a.useCallback)((e,t)=>{e.preventDefault(),e.dataTransfer.dropEffect="move",F.current&&F.current!==t&&L(t)},[]),V=(0,a.useCallback)((e,t)=>{e.preventDefault(),L(null);let o=F.current;F.current=null,o&&o!==t&&w(e=>{let n=[...e],a=n.findIndex(e=>e.id===o),r=n.findIndex(e=>e.id===t);if(-1===a||-1===r)return e;let[i]=n.splice(a,1);n.splice(r,0,i);let s=n.map(e=>e.id);return c.t4.runFork((0,d.z1)(s).pipe(l.orElse(()=>l.void))),n})},[]);return(0,n.jsxs)("div",{ref:T,className:"relative",children:[(0,n.jsxs)("button",{onClick:()=>g(e=>!e),className:`relative p-2 rounded-lg transition-colors ${o?"text-foreground bg-accent":"text-muted-foreground hover:text-foreground hover:bg-accent"}`,title:t("review.reviewManagement"),children:[(0,n.jsx)("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"})}),P&&(0,n.jsx)("span",{className:"absolute top-1 right-1 w-2 h-2 bg-red-500 rounded-full"})]}),o&&(0,n.jsxs)("div",{className:"absolute right-0 top-full mt-1 w-64 bg-popover border border-border rounded-lg shadow-xl z-50 overflow-hidden",children:[(0,n.jsxs)("div",{className:"px-3 py-2 border-b border-border flex items-center justify-between",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("span",{className:"text-xs font-medium text-muted-foreground",children:t("review.allReviews")}),(0,n.jsx)("span",{className:"text-xs text-muted-foreground/60 ml-1.5",children:A.length})]}),(0,n.jsx)("button",{onClick:j,className:"p-0.5 text-muted-foreground hover:text-foreground rounded transition-colors",title:t("common.refresh"),children:(0,n.jsx)("svg",{className:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})})})]}),(0,n.jsx)("div",{className:"max-h-80 overflow-y-auto",children:v&&0===f.length?(0,n.jsx)("div",{className:"px-3 py-4 text-xs text-muted-foreground/50 text-center",children:t("common.loading")}):0===A.length?(0,n.jsx)("div",{className:"px-3 py-4 text-xs text-muted-foreground/50 text-center",children:t("review.noOpenReviews")}):A.map(e=>{let o,a,r,i,s,l=p(e,x);return(0,n.jsxs)("div",{draggable:!0,onDragStart:t=>I(t,e.id),onDragEnd:B,onDragOver:t=>O(t,e.id),onDrop:t=>V(t,e.id),onMouseEnter:t=>{let o=t.currentTarget.getBoundingClientRect();b({id:e.id,text:e.title,top:o.top+o.height/2,left:o.left})},onMouseLeave:()=>b(t=>t?.id===e.id?null:t),onClick:()=>M(e.id),className:`group px-3 py-2 cursor-pointer border-b transition-colors ${E===e.id?"border-b-brand border-t border-t-transparent":"border-b-border/50"} hover:bg-accent/30`,children:[(0,n.jsxs)("div",{className:"flex items-center gap-1.5 min-w-0",children:[(0,n.jsx)("span",{className:`w-1.5 h-1.5 rounded-full flex-shrink-0 ${l?"bg-red-500":"bg-green-500"}`}),(0,n.jsx)("span",{className:`text-xs truncate flex-1 ${l?"font-medium text-foreground":""}`,children:e.title}),e.commentCount>0&&(0,n.jsx)("button",{onClick:t=>D(t,e.id),className:"flex-shrink-0 p-0.5 rounded text-muted-foreground/0 group-hover:text-muted-foreground/60 hover:!text-brand hover:!bg-brand/10 transition-colors",title:t("review.viewComments"),children:(0,n.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,n.jsx)("path",{d:"M7 8h10M7 12h4m1 8l-4-4H5a2 2 0 01-2-2V6a2 2 0 012-2h14a2 2 0 012 2v8a2 2 0 01-2 2h-3l-4 4z"})})})]}),(0,n.jsxs)("div",{className:"flex items-center gap-2 text-[10px] text-muted-foreground/50 mt-0.5 pl-3",children:[(0,n.jsx)("span",{children:(a=String((o=new Date(e.updatedAt||e.createdAt)).getMonth()+1).padStart(2,"0"),r=String(o.getDate()).padStart(2,"0"),i=String(o.getHours()).padStart(2,"0"),s=String(o.getMinutes()).padStart(2,"0"),`${a}-${r} ${i}:${s}`)}),e.commentCount>0&&(0,n.jsx)("span",{children:t("review.nComments",{count:e.commentCount})})]})]},e.id)})})]}),y&&o&&(0,n.jsx)("div",{className:"fixed z-[60] px-2 py-1 text-xs bg-popover text-popover-foreground border border-border rounded shadow-md whitespace-nowrap pointer-events-none",style:{top:y.top,left:y.left-8,transform:"translate(-100%, -50%)"},children:y.text}),(0,n.jsx)(s.ReviewCommentsListModal,{isOpen:S.open,onClose:()=>N(e=>({...e,open:!1})),comments:S.comments,reviewTitle:S.title,userNameMap:S.userNameMap})]})}},82680:(e,t,o)=>{o.d(t,{m_:()=>r,uV:()=>a});var n=o(50584);class a extends n.rN("AppError"){}n.rN("DBError"),n.rN("WSError"),n.rN("FSError"),n.rN("AgentError"),n.rN("ValidationError");class r extends n.rN("NotFoundError"){}n.rN("PermissionError")},86957:(e,t,o)=>{o.d(t,{t4:()=>M});var n=o(59257),a=o(74565),r=o(49433),i=o(93404),s=o(22484),l=o(41463);let c=n.Um(s.j9,s.dl((e=>{switch((e??"").toLowerCase()){case"all":return i.u8;case"trace":return i.Cn;case"debug":return i.y;case"info":default:return i.R2;case"warning":case"warn":return i.N5;case"error":return i.$D;case"fatal":return i.Lj;case"none":return i.NV}})(l.env.COCKPIT_LOG_LEVEL)));var d=o(80905),u=o(98953);let m=globalThis,p=m.__cockpitSpanRing??={buffer:[],index:new Map},h=e=>{let t="abcdef0123456789",o="";for(let n=0;n<e;n++)o+=t.charAt(Math.floor(Math.random()*t.length));return o};class g{constructor(e,t,o,n,a,r){this.name=e,this.parent=t,this.context=o,this.startTime=a,this.kind=r,this._tag="Span",this.sampled=!0,this.attributes=new Map,this.events=[],this.traceId=d.Ru(t)?t.value.traceId:h(32),this.spanId=h(16),this.status={_tag:"Started",startTime:a},this.links=Array.from(n),function(e){if(p.buffer.push(e),p.index.set(e.spanId,p.buffer.length-1),p.buffer.length>500){p.buffer.shift(),p.index.clear();for(let e=0;e<p.buffer.length;e++)p.index.set(p.buffer[e].spanId,e)}}(function(e,t,o,n,a,r){return{traceId:t,spanId:e,parentSpanId:o,name:n,kind:a,startTimeNs:r.toString(),endTimeNs:null,durationMs:null,attributes:{},events:[],status:"started"}}(this.spanId,this.traceId,function(e){return d.Ru(e)?e.value.spanId:null}(t),e,r,a))}end(e,t){this.status={_tag:"Ended",endTime:e,exit:t,startTime:this.status.startTime},function(e,t,o){let n=p.index.get(e);if(void 0===n)return;let a=p.buffer[n];if(!a)return;let r=Number(t-BigInt(a.startTimeNs))/1e6;p.buffer[n]={...a,endTimeNs:t.toString(),durationMs:Math.round(100*r)/100,status:"Success"===o._tag?"ok":"error",errorMessage:"Failure"===o._tag?function(e){if(e instanceof Error)return e.message;if("string"==typeof e)return e;try{return JSON.stringify(e)}catch{return String(e)}}(o.cause):void 0}}(this.spanId,e,"Success"===t._tag?{_tag:"Success"}:{_tag:"Failure",cause:t.cause})}attribute(e,t){this.attributes.set(e,t),function(e,t,o){let n=p.index.get(e);if(void 0===n)return;let a=p.buffer[n];a&&(p.buffer[n]={...a,attributes:{...a.attributes,[t]:o}})}(this.spanId,e,t)}event(e,t,o){this.events.push([e,t,o??{}]),function(e,t,o,n){let a=p.index.get(e);if(void 0===a)return;let r=p.buffer[a];r&&(p.buffer[a]={...r,events:[...r.events,{name:t,timeNs:o.toString(),attributes:n}]})}(this.spanId,e,t,o)}addLinks(e){this.links.push(...e)}}let f=u.L8({span:(e,t,o,n,a,r)=>new g(e,t,o,n,a,r),context:e=>e()}),w=n.Py(u.sh,f);n.Ie;var v=o(63400),C=o(41463);let y=v.eu("dev","prod")("COCKPIT_ENV").pipe(v.IQ("prod")),b=v.Yj("COCKPIT_HOST").pipe(v.IQ("127.0.0.1")),x=v.nd("COCKPIT_PORT").pipe(v.NW(()=>v.nd("PORT")),v.IQ(3457)),k=v.uK(v.Yj("COCKPIT_OPEN_PROJECT")).pipe(v.Tj(e=>"Some"===e._tag?e.value:void 0)),S=v.zM("COCKPIT_NO_OPEN").pipe(v.IQ(!1)),N=v.Yj("COCKPIT_LOG_LEVEL").pipe(v.IQ("info")),T=v.uK(v.Yj("COCKPIT_DIR"));r.gen(function*(){let e=yield*y,t=yield*b,o=yield*x,n=yield*k,a=yield*S,i=yield*N,s=yield*T,l=yield*r.sync(()=>{if("Some"===s._tag)return s.value;let e=void 0!==C?C.env:void 0;return(e?.HOME||e?.USERPROFILE||".")+"/.cockpit"});return{env:e,host:t,port:3457===o&&"dev"===e?3456:o,cockpitDir:l,openProject:n,openBrowser:!a,logLevel:i,logFile:l+"/logs/cockpit.log"}}).pipe(r.orDie);let F=n.Ie;var E=o(38147),L=o(23363),j=o(88292);let R=n.P1(j.d,r.gen(function*(){let e=yield*E.dT();return yield*r.acquireRelease(r.sync(()=>{let t=t=>{r.runFork(E.mk(e,t))};return window.addEventListener("message",t),t}),e=>r.sync(()=>{window.removeEventListener("message",e)})),j.d.of({publish:(e,t)=>r.sync(()=>{let o={type:e.legacyType,topic:e.id,msg:t,..."object"==typeof t&&null!==t?t:{}};window.parent.postMessage(o,"*")}),subscribe:t=>L.qdp(e).pipe(L.pbD(e=>{var o;return o=e.data,!!o&&"object"==typeof o&&(o.topic===t.id||o.type===t.legacyType)}),L.TjK(e=>((e,t)=>{if(e.topic===t.id)return e.msg;let{type:o,...n}=e;return n})(e.data,t)))})})),A=n.Um(c,w,F),P=n.Um(A,R),M=a.L8(P);r.void},88292:(e,t,o)=>{o.d(t,{R:()=>a,d:()=>r});var n=o(50995);let a=(e,t)=>({id:e,legacyType:t??e.replace(/-/g,"_").toUpperCase()}),r=n.Io("@cockpit/IframeBus")},90420:(e,t,o)=>{o.d(t,{BL:()=>f,Gm:()=>p,JK:()=>u,Wr:()=>h,Y8:()=>C,Y_:()=>d,_c:()=>w,bx:()=>m,dU:()=>v,i7:()=>k,jw:()=>y,mu:()=>b,vy:()=>x,z1:()=>g});var n=o(49433),a=o(82680);let r=(e,t)=>n.tryPromise({try:async()=>{let o=await fetch(e,t);if(!o.ok)throw Error(`HTTP ${o.status}`);return await o.json()},catch:o=>new a.uV({message:`${t?.method??"GET"} ${e} failed`,cause:o})}),i=(e,t)=>r(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}),s=(e,t)=>r(e,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}),l=(e,t)=>r(e,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}),c=e=>r(e,{method:"DELETE"}),d=()=>r("/api/review"),u=e=>{let t;return t=`/api/review/${encodeURIComponent(e)}`,n.tryPromise({try:async()=>{let e=await fetch(t);if(404===e.status)throw Object.assign(Error("not found"),{__404__:!0});if(!e.ok)throw Error(`HTTP ${e.status}`);return await e.json()},catch:e=>e?.__404__?new a.m_({resource:"review",id:t}):new a.uV({message:`GET ${t} failed`,cause:e})})},m=e=>i("/api/review",e),p=(e,t)=>l(`/api/review/${encodeURIComponent(e)}`,t),h=e=>c(`/api/review/${encodeURIComponent(e)}`),g=e=>l("/api/review/order",{order:e}),f=()=>r("/api/review/users"),w=()=>r("/api/review/share-info"),v=(e,t)=>i(`/api/review/${encodeURIComponent(e)}/comments`,t),C=(e,t)=>s(`/api/review/${encodeURIComponent(e)}/comments`,t),y=(e,t)=>c(`/api/review/${encodeURIComponent(e)}/comments?commentId=${encodeURIComponent(t)}`),b=(e,t)=>i(`/api/review/${encodeURIComponent(e)}/replies`,t),x=(e,t)=>s(`/api/review/${encodeURIComponent(e)}/replies`,t),k=(e,t,o)=>c(`/api/review/${encodeURIComponent(e)}/replies?commentId=${encodeURIComponent(t)}&replyId=${encodeURIComponent(o)}`)},94287:(e,t,o)=>{o.d(t,{m:()=>r});var n=o(95155),a=o(12115);function r({content:e,children:t,className:o}){if(o)return(0,n.jsx)("div",{"data-tooltip":e,className:o,children:t});let i=a.Children.toArray(t);if(1===i.length&&(0,a.isValidElement)(i[0])){let t=i[0];return(0,a.cloneElement)(t,{"data-tooltip":e})}return(0,n.jsx)("div",{"data-tooltip":e,style:{display:"contents"},children:t})}},97251:(e,t,o)=>{o.d(t,{W:()=>r});var n=o(48250);let a=new Set(["p","h1","h2","h3","h4","h5","h6","li","blockquote","pre","table","tr","hr","div","ul","ol"]);function r(){return e=>{(0,n.YR)(e,"element",e=>{if(a.has(e.tagName)&&e.position&&(e.properties||(e.properties={}),e.properties["data-source-start"]=e.position.start.line,e.properties["data-source-end"]=e.position.end.line,"pre"===e.tagName)){let t=e.children?.find(e=>"element"===e.type&&"code"===e.tagName);t&&(t.properties||(t.properties={}),t.properties["data-source-start"]=e.position.start.line,t.properties["data-source-end"]=e.position.end.line)}})}}}}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[50,64,273,276,311,335,520,901,1097,1120,1124,1180,1289,1337,1642,1684,1689,1756,1772,1803,1809,2217,2245,2272,2316,2504,2578,2722,2769,2772,2865,2881,2922,2952,2987,3335,3339,3347,3456,3507,3645,3647,3664,3721,3878,4021,4042,4113,4403,4422,4426,4528,4647,4801,4896,5066,5177,5291,5298,5376,5402,5457,5458,5794,5849,5859,5972,6013,6016,6374,6462,6493,6602,6715,6819,6841,6988,7027,7128,7509,7533,7537,7553,7743,7754,7851,7883,7945,8141,8167,8193,8232,8237,8250,8387,8405,8407,8413,8455,8635,8683,8834,8872,8910,8997,9230,9280,9300,9336,9440,9510,9533,9659,9748,9813,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[50,64,273,276,311,335,520,901,1097,1120,1124,1180,1289,1337,1642,1684,1689,1756,1772,1803,1809,2217,2245,2272,2316,2504,2578,2722,2769,2772,2865,2881,2922,2952,2987,3335,3339,3347,3456,3507,3645,3647,3664,3721,3878,4021,4042,4113,4403,4422,4426,4528,4647,4801,4896,5066,5177,5291,5298,5376,5402,5457,5458,5794,5849,5859,5972,6013,6016,6374,6462,6493,6602,6715,6819,6841,6988,7027,7128,7509,7533,7537,7553,7743,7754,7851,7883,7945,8141,8167,8193,8232,8237,8250,8387,8405,8407,8413,8455,8635,8683,8834,8872,8910,8997,9230,9280,9300,9336,9440,9510,9533,9659,9748,9813,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[50,64,273,276,311,335,520,901,1097,1120,1124,1180,1289,1337,1642,1684,1689,1756,1772,1803,1809,2217,2245,2272,2316,2504,2578,2722,2769,2772,2865,2881,2922,2952,2987,3335,3339,3347,3456,3507,3645,3647,3664,3721,3878,4021,4042,4113,4403,4422,4426,4528,4647,4801,4896,5066,5177,5291,5298,5376,5402,5457,5458,5794,5849,5859,5972,6013,6016,6374,6462,6493,6602,6715,6819,6841,6988,7027,7128,7509,7533,7537,7553,7743,7754,7851,7883,7945,8141,8167,8193,8232,8237,8250,8387,8405,8407,8413,8455,8635,8683,8834,8872,8910,8997,9230,9280,9300,9336,9440,9510,9533,9659,9748,9813,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[50,64,273,276,311,335,520,901,1097,1120,1124,1180,1289,1337,1642,1684,1689,1756,1772,1803,1809,2217,2245,2272,2316,2504,2578,2722,2769,2772,2865,2881,2922,2952,2987,3335,3339,3347,3456,3507,3645,3647,3664,3721,3878,4021,4042,4113,4403,4422,4426,4528,4647,4801,4896,5066,5177,5291,5298,5376,5402,5457,5458,5794,5849,5859,5972,6013,6016,6374,6462,6493,6602,6715,6819,6841,6988,7027,7128,7509,7533,7537,7553,7743,7754,7851,7883,7945,8141,8167,8193,8232,8237,8250,8387,8405,8407,8413,8455,8635,8683,8834,8872,8910,8997,9230,9280,9300,9336,9440,9510,9533,9659,9748,9813,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[50,64,273,276,311,335,520,901,1097,1120,1124,1180,1289,1337,1642,1684,1689,1756,1772,1803,1809,2217,2245,2272,2316,2504,2578,2722,2769,2772,2865,2881,2922,2952,2987,3335,3339,3347,3456,3507,3645,3647,3664,3721,3878,4021,4042,4113,4403,4422,4426,4528,4647,4801,4896,5066,5177,5291,5298,5376,5402,5457,5458,5794,5849,5859,5972,6013,6016,6374,6462,6493,6602,6715,6819,6841,6988,7027,7128,7509,7533,7537,7553,7743,7754,7851,7883,7945,8141,8167,8193,8232,8237,8250,8387,8405,8407,8413,8455,8635,8683,8834,8872,8910,8997,9230,9280,9300,9336,9440,9510,9533,9659,9748,9813,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[50,64,273,276,311,335,520,901,1097,1120,1124,1180,1289,1337,1642,1684,1689,1756,1772,1803,1809,2217,2245,2272,2316,2504,2578,2722,2769,2772,2865,2881,2922,2952,2987,3335,3339,3347,3456,3507,3645,3647,3664,3721,3878,4021,4042,4113,4403,4422,4426,4528,4647,4801,4896,5066,5177,5291,5298,5376,5402,5457,5458,5794,5849,5859,5972,6013,6016,6374,6462,6493,6602,6715,6819,6841,6988,7027,7128,7509,7533,7537,7553,7743,7754,7851,7883,7945,8141,8167,8193,8232,8237,8250,8387,8405,8407,8413,8455,8635,8683,8834,8872,8910,8997,9230,9280,9300,9336,9440,9510,9533,9659,9748,9813,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[50,64,273,276,311,335,520,901,1097,1120,1124,1180,1289,1337,1642,1684,1689,1756,1772,1803,1809,2217,2245,2272,2316,2504,2578,2722,2769,2772,2865,2881,2922,2952,2987,3335,3339,3347,3456,3507,3645,3647,3664,3721,3878,4021,4042,4113,4403,4422,4426,4528,4647,4801,4896,5066,5177,5291,5298,5376,5402,5457,5458,5794,5849,5859,5972,6013,6016,6374,6462,6493,6602,6715,6819,6841,6988,7027,7128,7509,7533,7537,7553,7743,7754,7851,7883,7945,8141,8167,8193,8232,8237,8250,8387,8405,8407,8413,8455,8635,8683,8834,8872,8910,8997,9230,9280,9300,9336,9440,9510,9533,9659,9748,9813,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[50,64,273,276,311,335,520,901,1097,1120,1124,1180,1289,1337,1642,1684,1689,1756,1772,1803,1809,2217,2245,2272,2316,2504,2578,2722,2769,2772,2865,2881,2922,2952,2987,3335,3339,3347,3456,3507,3645,3647,3664,3721,3878,4021,4042,4113,4403,4422,4426,4528,4647,4801,4896,5066,5177,5291,5298,5376,5402,5457,5458,5794,5849,5859,5972,6013,6016,6374,6462,6493,6602,6715,6819,6841,6988,7027,7128,7509,7533,7537,7553,7743,7754,7851,7883,7945,8141,8167,8193,8232,8237,8250,8387,8405,8407,8413,8455,8635,8683,8834,8872,8910,8997,9230,9280,9300,9336,9440,9510,9533,9659,9748,9813,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[50,64,273,276,311,335,520,901,1097,1120,1124,1180,1289,1337,1642,1684,1689,1756,1772,1803,1809,2217,2245,2272,2316,2504,2578,2722,2769,2772,2865,2881,2922,2952,2987,3335,3339,3347,3456,3507,3645,3647,3664,3721,3878,4021,4042,4113,4403,4422,4426,4528,4647,4801,4896,5066,5177,5291,5298,5376,5402,5457,5458,5794,5849,5859,5972,6013,6016,6374,6462,6493,6602,6715,6819,6841,6988,7027,7128,7509,7533,7537,7553,7743,7754,7851,7883,7945,8141,8167,8193,8232,8237,8250,8387,8405,8407,8413,8455,8635,8683,8834,8872,8910,8997,9230,9280,9300,9336,9440,9510,9533,9659,9748,9813,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);