tower-studio 0.1.1 → 0.1.3

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 (873) hide show
  1. package/components.json +25 -0
  2. package/next.config.ts +1 -1
  3. package/package.json +10 -11
  4. package/postcss.config.mjs +7 -0
  5. package/prisma/dev.db +0 -0
  6. package/prisma/prisma/dev.db +0 -0
  7. package/prisma/seed.ts +50 -0
  8. package/scripts/init-tower.ts +10 -0
  9. package/scripts/post-tool-hook.js +188 -0
  10. package/scripts/session-start-hook.js +79 -0
  11. package/scripts/stop-hook.js +78 -0
  12. package/skills/tower/SKILL.md +375 -0
  13. package/src/actions/__tests__/agent-actions-username.test.ts +30 -0
  14. package/src/actions/__tests__/asset-actions.test.ts +251 -0
  15. package/src/actions/__tests__/assistant-actions.test.ts +20 -0
  16. package/src/actions/__tests__/cli-profile-actions.test.ts +243 -0
  17. package/src/actions/__tests__/label-actions.test.ts +187 -0
  18. package/src/actions/__tests__/note-actions.test.ts +237 -0
  19. package/src/actions/__tests__/onboarding-actions.test.ts +265 -0
  20. package/src/actions/__tests__/project-actions.test.ts +179 -0
  21. package/src/actions/__tests__/prompt-actions.test.ts +213 -0
  22. package/src/actions/__tests__/report-actions.test.ts +246 -0
  23. package/src/actions/__tests__/search-code-actions.test.ts +308 -0
  24. package/src/actions/__tests__/task-actions-overview.test.ts +58 -0
  25. package/src/actions/__tests__/task-actions-pin.test.ts +79 -0
  26. package/src/actions/__tests__/workspace-actions.test.ts +256 -0
  27. package/src/actions/agent-actions.ts +741 -0
  28. package/src/actions/agent-config-actions.ts +44 -0
  29. package/src/actions/ai-config-actions.ts +51 -0
  30. package/src/actions/asset-actions.ts +131 -0
  31. package/src/actions/assistant-actions.ts +107 -0
  32. package/src/actions/cli-profile-actions.ts +98 -0
  33. package/src/actions/config-actions.ts +84 -0
  34. package/src/actions/file-actions.ts +262 -0
  35. package/src/actions/git-actions.ts +90 -0
  36. package/src/actions/label-actions.ts +67 -0
  37. package/src/actions/note-actions.ts +87 -0
  38. package/src/actions/onboarding-actions.ts +103 -0
  39. package/src/actions/preview-actions.ts +76 -0
  40. package/src/actions/project-actions.ts +222 -0
  41. package/src/actions/prompt-actions.ts +73 -0
  42. package/src/actions/report-actions.ts +141 -0
  43. package/src/actions/search-actions.ts +21 -0
  44. package/src/actions/search-code-actions.ts +185 -0
  45. package/src/actions/task-actions.ts +350 -0
  46. package/src/actions/workspace-actions.ts +224 -0
  47. package/src/app/api/adapters/test/route.ts +52 -0
  48. package/src/app/api/browse-fs/route.ts +90 -0
  49. package/src/app/api/files/assets/[projectId]/[filename]/route.ts +38 -0
  50. package/src/app/api/git/route.ts +367 -0
  51. package/src/app/api/internal/assets/[projectId]/[filename]/route.ts +51 -0
  52. package/src/app/api/internal/assets/reveal/route.ts +71 -0
  53. package/src/app/api/internal/assistant/chat/route.ts +217 -0
  54. package/src/app/api/internal/assistant/images/route.ts +51 -0
  55. package/src/app/api/internal/assistant/route.ts +50 -0
  56. package/src/app/api/internal/assistant/sessions/route.ts +44 -0
  57. package/src/app/api/internal/cache/[...segments]/route.ts +59 -0
  58. package/src/app/api/internal/hooks/install/route.ts +41 -0
  59. package/src/app/api/internal/hooks/session/route.ts +60 -0
  60. package/src/app/api/internal/hooks/stop/route.ts +61 -0
  61. package/src/app/api/internal/hooks/upload/route.ts +173 -0
  62. package/src/app/api/internal/notifications/pending/route.ts +20 -0
  63. package/src/app/api/internal/terminal/[taskId]/buffer/route.ts +48 -0
  64. package/src/app/api/internal/terminal/[taskId]/input/route.ts +64 -0
  65. package/src/app/api/internal/terminal/[taskId]/start/route.ts +37 -0
  66. package/src/app/api/tasks/[taskId]/diff/route.ts +224 -0
  67. package/src/app/api/tasks/[taskId]/merge/route.ts +159 -0
  68. package/src/app/globals.css +247 -0
  69. package/src/app/layout.tsx +63 -0
  70. package/src/app/missions/missions-client.tsx +338 -0
  71. package/src/app/missions/page.tsx +10 -0
  72. package/src/app/onboarding/page.tsx +619 -0
  73. package/src/app/page.tsx +5 -0
  74. package/src/app/settings/page.tsx +7 -0
  75. package/src/app/workspaces/[workspaceId]/archive/archive-page-client.tsx +258 -0
  76. package/src/app/workspaces/[workspaceId]/archive/page.tsx +36 -0
  77. package/src/app/workspaces/[workspaceId]/assets/assets-page-client.tsx +232 -0
  78. package/src/app/workspaces/[workspaceId]/assets/page.tsx +36 -0
  79. package/src/app/workspaces/[workspaceId]/board-page-client.tsx +257 -0
  80. package/src/app/workspaces/[workspaceId]/notes/notes-page-client.tsx +337 -0
  81. package/src/app/workspaces/[workspaceId]/notes/page.tsx +39 -0
  82. package/src/app/workspaces/[workspaceId]/page.tsx +81 -0
  83. package/src/app/workspaces/[workspaceId]/projects/[projectId]/page.tsx +30 -0
  84. package/src/app/workspaces/[workspaceId]/tasks/[taskId]/page.tsx +97 -0
  85. package/src/app/workspaces/[workspaceId]/tasks/[taskId]/task-page-client.tsx +601 -0
  86. package/src/app/workspaces/page.tsx +13 -0
  87. package/src/components/assets/asset-item.tsx +128 -0
  88. package/src/components/assets/asset-list.tsx +31 -0
  89. package/src/components/assets/asset-upload.tsx +216 -0
  90. package/src/components/assets/image-lightbox.tsx +72 -0
  91. package/src/components/assets/text-preview-dialog.tsx +135 -0
  92. package/src/components/assistant/assistant-chat-bubble.tsx +308 -0
  93. package/src/components/assistant/assistant-chat.tsx +215 -0
  94. package/src/components/assistant/assistant-panel.tsx +149 -0
  95. package/src/components/assistant/assistant-provider.tsx +512 -0
  96. package/src/components/assistant/image-preview-modal.tsx +60 -0
  97. package/src/components/assistant/image-thumbnail-strip.tsx +94 -0
  98. package/src/components/board/board-column.tsx +115 -0
  99. package/src/components/board/board-filters.tsx +42 -0
  100. package/src/components/board/board-stats.tsx +52 -0
  101. package/src/components/board/column-tasks-dialog.tsx +100 -0
  102. package/src/components/board/create-task-dialog.tsx +362 -0
  103. package/src/components/board/kanban-board.tsx +169 -0
  104. package/src/components/board/project-tabs.tsx +93 -0
  105. package/src/components/board/task-card-context-menu.tsx +121 -0
  106. package/src/components/board/task-card.tsx +135 -0
  107. package/src/components/layout/__tests__/top-bar-username.test.tsx +24 -0
  108. package/src/components/layout/app-sidebar.tsx +662 -0
  109. package/src/components/layout/folder-browser-dialog.tsx +273 -0
  110. package/src/components/layout/layout-client.tsx +198 -0
  111. package/src/components/layout/search-dialog.tsx +196 -0
  112. package/src/components/layout/sub-page-nav.tsx +54 -0
  113. package/src/components/layout/top-bar.tsx +265 -0
  114. package/src/components/missions/grid-layout-presets.ts +19 -0
  115. package/src/components/missions/grid-preset-picker.tsx +209 -0
  116. package/src/components/missions/merge-missions.ts +30 -0
  117. package/src/components/missions/mission-card.tsx +203 -0
  118. package/src/components/missions/task-picker-dialog.tsx +415 -0
  119. package/src/components/notes/category-filter.tsx +44 -0
  120. package/src/components/notes/note-card.tsx +67 -0
  121. package/src/components/notes/note-editor.tsx +28 -0
  122. package/src/components/notes/note-list.tsx +30 -0
  123. package/src/components/notifications/notification-permission-banner.tsx +49 -0
  124. package/src/components/notifications/use-notification-listener.ts +114 -0
  125. package/src/components/onboarding/__tests__/onboarding-wizard.test.tsx +185 -0
  126. package/src/components/onboarding/guided-tour.tsx +255 -0
  127. package/src/components/onboarding/onboarding-wizard.tsx +84 -0
  128. package/src/components/onboarding/wizard-step-cli.tsx +53 -0
  129. package/src/components/onboarding/wizard-step-username.tsx +59 -0
  130. package/src/components/project/create-project-dialog.tsx +310 -0
  131. package/src/components/project/import-project-dialog.tsx +414 -0
  132. package/src/components/providers/theme-provider.tsx +8 -0
  133. package/src/components/repository/create-branch-dialog.tsx +165 -0
  134. package/src/components/repository/git-changes-panel.tsx +294 -0
  135. package/src/components/repository/git-log-panel.tsx +83 -0
  136. package/src/components/repository/git-stash-panel.tsx +158 -0
  137. package/src/components/repository/repo-sidebar.tsx +855 -0
  138. package/src/components/settings/cli-adapter-tester.tsx +144 -0
  139. package/src/components/settings/settings-page.tsx +2111 -0
  140. package/src/components/task/code-editor.tsx +376 -0
  141. package/src/components/task/code-search.tsx +219 -0
  142. package/src/components/task/diff-editor.tsx +97 -0
  143. package/src/components/task/editor-git-panel.tsx +792 -0
  144. package/src/components/task/editor-tabs.tsx +68 -0
  145. package/src/components/task/execution-timeline.tsx +258 -0
  146. package/src/components/task/file-tree-context-menu.tsx +113 -0
  147. package/src/components/task/file-tree-node.tsx +269 -0
  148. package/src/components/task/file-tree.tsx +575 -0
  149. package/src/components/task/preview-panel.tsx +281 -0
  150. package/src/components/task/task-detail-panel.tsx +455 -0
  151. package/src/components/task/task-diff-view.tsx +207 -0
  152. package/src/components/task/task-file-changes.tsx +19 -0
  153. package/src/components/task/task-merge-confirm-dialog.tsx +152 -0
  154. package/src/components/task/task-metadata.tsx +74 -0
  155. package/src/components/task/task-notes-panel.tsx +219 -0
  156. package/src/components/task/task-overview-drawer.tsx +172 -0
  157. package/src/components/task/task-terminal.tsx +294 -0
  158. package/src/components/task/terminal-portal.tsx +156 -0
  159. package/src/components/task/types.ts +6 -0
  160. package/src/components/ui/avatar.tsx +109 -0
  161. package/src/components/ui/badge.tsx +52 -0
  162. package/src/components/ui/button.tsx +58 -0
  163. package/src/components/ui/card.tsx +103 -0
  164. package/src/components/ui/command.tsx +196 -0
  165. package/src/components/ui/dialog.tsx +160 -0
  166. package/src/components/ui/dropdown-menu.tsx +268 -0
  167. package/src/components/ui/empty-state.tsx +26 -0
  168. package/src/components/ui/error-boundary.tsx +58 -0
  169. package/src/components/ui/input-group.tsx +158 -0
  170. package/src/components/ui/input.tsx +20 -0
  171. package/src/components/ui/label.tsx +20 -0
  172. package/src/components/ui/popover.tsx +90 -0
  173. package/src/components/ui/scroll-area.tsx +55 -0
  174. package/src/components/ui/segmented-control.tsx +42 -0
  175. package/src/components/ui/select.tsx +207 -0
  176. package/src/components/ui/separator.tsx +25 -0
  177. package/src/components/ui/sheet.tsx +138 -0
  178. package/src/components/ui/sonner.tsx +49 -0
  179. package/src/components/ui/switch.tsx +32 -0
  180. package/src/components/ui/tabs.tsx +82 -0
  181. package/src/components/ui/textarea.tsx +18 -0
  182. package/src/components/ui/toast.tsx +86 -0
  183. package/src/components/ui/tooltip.tsx +66 -0
  184. package/src/hooks/__tests__/sse-event-reducer.test.ts +263 -0
  185. package/src/hooks/__tests__/use-assistant-chat.test.ts +34 -0
  186. package/src/hooks/__tests__/use-image-upload.test.ts +443 -0
  187. package/src/hooks/sse-event-reducer.ts +144 -0
  188. package/src/hooks/use-assistant-chat.ts +190 -0
  189. package/src/hooks/use-image-upload.ts +140 -0
  190. package/src/instrumentation.ts +18 -0
  191. package/src/lib/__tests__/assistant-message-converter.test.ts +162 -0
  192. package/src/lib/__tests__/assistant-sessions.test.ts +253 -0
  193. package/src/lib/__tests__/build-multimodal-prompt.test.ts +173 -0
  194. package/src/lib/__tests__/config-reader.test.ts +75 -0
  195. package/src/lib/__tests__/diff-parser.test.ts +212 -0
  196. package/src/lib/__tests__/execution-summary.test.ts +237 -0
  197. package/src/lib/__tests__/file-serve.test.ts +178 -0
  198. package/src/lib/__tests__/file-utils.test.ts +177 -0
  199. package/src/lib/__tests__/internal-api-guard.test.ts +151 -0
  200. package/src/lib/__tests__/logger.test.ts +181 -0
  201. package/src/lib/__tests__/platform.test.ts +566 -0
  202. package/src/lib/__tests__/reveal-route-security.test.ts +65 -0
  203. package/src/lib/__tests__/schemas.test.ts +377 -0
  204. package/src/lib/__tests__/terminal-link-provider.test.ts +160 -0
  205. package/src/lib/__tests__/upload-route-security.test.ts +120 -0
  206. package/src/lib/ai/__tests__/capability-resolver.test.ts +71 -0
  207. package/src/lib/ai/__tests__/claude-cli-adapter.test.ts +103 -0
  208. package/src/lib/ai/__tests__/provider-registry.test.ts +74 -0
  209. package/src/lib/ai/adapters/cli/claude-cli-adapter.ts +166 -0
  210. package/src/lib/ai/capability-resolver.ts +81 -0
  211. package/src/lib/ai/provider-registry.ts +54 -0
  212. package/src/lib/ai/providers/claude.ts +19 -0
  213. package/src/lib/ai/providers/index.ts +12 -0
  214. package/src/lib/ai/types.ts +151 -0
  215. package/src/lib/assistant-constants.ts +2 -0
  216. package/src/lib/assistant-message-converter.ts +131 -0
  217. package/src/lib/assistant-sessions.ts +75 -0
  218. package/src/lib/build-multimodal-prompt.ts +53 -0
  219. package/src/lib/claude-session.ts +156 -0
  220. package/src/lib/cli-test.ts +476 -0
  221. package/src/lib/config-defaults.ts +121 -0
  222. package/src/lib/config-reader.ts +16 -0
  223. package/src/lib/constants.ts +26 -0
  224. package/src/lib/db.ts +28 -0
  225. package/src/lib/diff-parser.ts +132 -0
  226. package/src/lib/execution-summary.ts +287 -0
  227. package/src/lib/file-serve-client.ts +13 -0
  228. package/src/lib/file-serve.ts +32 -0
  229. package/src/lib/file-utils.ts +108 -0
  230. package/src/lib/fs-security.ts +22 -0
  231. package/src/lib/fts.ts +83 -0
  232. package/src/lib/git-api.ts +19 -0
  233. package/src/lib/git-url.ts +244 -0
  234. package/src/lib/i18n/en.ts +754 -0
  235. package/src/lib/i18n/types.ts +4 -0
  236. package/src/lib/i18n/zh.ts +769 -0
  237. package/src/lib/i18n.tsx +64 -0
  238. package/src/lib/init-tower.ts +129 -0
  239. package/src/lib/instrumentation-tasks.ts +116 -0
  240. package/src/lib/internal-api-guard.ts +63 -0
  241. package/src/lib/logger.ts +46 -0
  242. package/src/lib/mime-magic.ts +67 -0
  243. package/src/lib/platform.ts +518 -0
  244. package/src/lib/preview-process.ts +40 -0
  245. package/src/lib/pty/__tests__/ws-server-assistant.test.ts +7 -0
  246. package/src/lib/pty/pty-session.ts +157 -0
  247. package/src/lib/pty/session-store.ts +67 -0
  248. package/src/lib/pty/ws-server.ts +335 -0
  249. package/src/lib/schemas.ts +67 -0
  250. package/src/lib/search.ts +225 -0
  251. package/src/lib/terminal-link-provider.ts +90 -0
  252. package/src/lib/tower-dir.ts +69 -0
  253. package/src/lib/utils.ts +20 -0
  254. package/src/lib/worktree.ts +184 -0
  255. package/src/stores/board-store.ts +46 -0
  256. package/src/stores/task-execution-store.ts +41 -0
  257. package/src/types/index.ts +36 -0
  258. package/.next/BUILD_ID +0 -1
  259. package/.next/app-path-routes-manifest.json +0 -41
  260. package/.next/build/chunks/0kjx__pnpm_05m.mc_._.js +0 -6681
  261. package/.next/build/chunks/[root-of-the-server]__0a5dngl._.js +0 -206
  262. package/.next/build/chunks/[root-of-the-server]__13e2v6w._.js +0 -500
  263. package/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_0y_r.ay._.js +0 -13
  264. package/.next/build/chunks/[turbopack]_runtime.js +0 -890
  265. package/.next/build/package.json +0 -1
  266. package/.next/build/postcss.js +0 -6
  267. package/.next/build-manifest.json +0 -22
  268. package/.next/cache/.previewinfo +0 -1
  269. package/.next/cache/.rscinfo +0 -1
  270. package/.next/cache/.tsbuildinfo +0 -1
  271. package/.next/diagnostics/build-diagnostics.json +0 -6
  272. package/.next/diagnostics/framework.json +0 -1
  273. package/.next/diagnostics/route-bundle-stats.json +0 -299
  274. package/.next/export-marker.json +0 -6
  275. package/.next/fallback-build-manifest.json +0 -13
  276. package/.next/images-manifest.json +0 -68
  277. package/.next/next-minimal-server.js.nft.json +0 -1
  278. package/.next/next-server.js.nft.json +0 -1
  279. package/.next/package.json +0 -1
  280. package/.next/prerender-manifest.json +0 -278
  281. package/.next/required-server-files.js +0 -338
  282. package/.next/required-server-files.json +0 -338
  283. package/.next/routes-manifest.json +0 -312
  284. package/.next/server/app/_global-error/page/app-paths-manifest.json +0 -3
  285. package/.next/server/app/_global-error/page/build-manifest.json +0 -18
  286. package/.next/server/app/_global-error/page/next-font-manifest.json +0 -6
  287. package/.next/server/app/_global-error/page/react-loadable-manifest.json +0 -1
  288. package/.next/server/app/_global-error/page/server-reference-manifest.json +0 -4
  289. package/.next/server/app/_global-error/page.js +0 -12
  290. package/.next/server/app/_global-error/page.js.nft.json +0 -1
  291. package/.next/server/app/_global-error/page_client-reference-manifest.js +0 -3
  292. package/.next/server/app/_global-error.html +0 -1
  293. package/.next/server/app/_global-error.meta +0 -15
  294. package/.next/server/app/_global-error.rsc +0 -15
  295. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +0 -5
  296. package/.next/server/app/_global-error.segments/_full.segment.rsc +0 -15
  297. package/.next/server/app/_global-error.segments/_head.segment.rsc +0 -6
  298. package/.next/server/app/_global-error.segments/_index.segment.rsc +0 -5
  299. package/.next/server/app/_global-error.segments/_tree.segment.rsc +0 -1
  300. package/.next/server/app/_not-found/page/app-paths-manifest.json +0 -3
  301. package/.next/server/app/_not-found/page/build-manifest.json +0 -18
  302. package/.next/server/app/_not-found/page/next-font-manifest.json +0 -11
  303. package/.next/server/app/_not-found/page/react-loadable-manifest.json +0 -16
  304. package/.next/server/app/_not-found/page/server-reference-manifest.json +0 -233
  305. package/.next/server/app/_not-found/page.js +0 -20
  306. package/.next/server/app/_not-found/page.js.nft.json +0 -1
  307. package/.next/server/app/_not-found/page_client-reference-manifest.js +0 -3
  308. package/.next/server/app/_not-found.html +0 -1
  309. package/.next/server/app/_not-found.meta +0 -16
  310. package/.next/server/app/_not-found.rsc +0 -24
  311. package/.next/server/app/_not-found.segments/_full.segment.rsc +0 -24
  312. package/.next/server/app/_not-found.segments/_head.segment.rsc +0 -6
  313. package/.next/server/app/_not-found.segments/_index.segment.rsc +0 -12
  314. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +0 -5
  315. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +0 -5
  316. package/.next/server/app/_not-found.segments/_tree.segment.rsc +0 -4
  317. package/.next/server/app/api/adapters/test/route/app-paths-manifest.json +0 -3
  318. package/.next/server/app/api/adapters/test/route/build-manifest.json +0 -9
  319. package/.next/server/app/api/adapters/test/route/server-reference-manifest.json +0 -4
  320. package/.next/server/app/api/adapters/test/route.js +0 -9
  321. package/.next/server/app/api/adapters/test/route.js.nft.json +0 -1
  322. package/.next/server/app/api/adapters/test/route_client-reference-manifest.js +0 -3
  323. package/.next/server/app/api/browse-fs/route/app-paths-manifest.json +0 -3
  324. package/.next/server/app/api/browse-fs/route/build-manifest.json +0 -9
  325. package/.next/server/app/api/browse-fs/route/server-reference-manifest.json +0 -4
  326. package/.next/server/app/api/browse-fs/route.js +0 -7
  327. package/.next/server/app/api/browse-fs/route.js.nft.json +0 -1
  328. package/.next/server/app/api/browse-fs/route_client-reference-manifest.js +0 -3
  329. package/.next/server/app/api/files/assets/[projectId]/[filename]/route/app-paths-manifest.json +0 -3
  330. package/.next/server/app/api/files/assets/[projectId]/[filename]/route/build-manifest.json +0 -9
  331. package/.next/server/app/api/files/assets/[projectId]/[filename]/route/server-reference-manifest.json +0 -4
  332. package/.next/server/app/api/files/assets/[projectId]/[filename]/route.js +0 -7
  333. package/.next/server/app/api/files/assets/[projectId]/[filename]/route.js.nft.json +0 -1
  334. package/.next/server/app/api/files/assets/[projectId]/[filename]/route_client-reference-manifest.js +0 -3
  335. package/.next/server/app/api/git/route/app-paths-manifest.json +0 -3
  336. package/.next/server/app/api/git/route/build-manifest.json +0 -9
  337. package/.next/server/app/api/git/route/server-reference-manifest.json +0 -4
  338. package/.next/server/app/api/git/route.js +0 -8
  339. package/.next/server/app/api/git/route.js.nft.json +0 -1
  340. package/.next/server/app/api/git/route_client-reference-manifest.js +0 -3
  341. package/.next/server/app/api/internal/assets/[projectId]/[filename]/route/app-paths-manifest.json +0 -3
  342. package/.next/server/app/api/internal/assets/[projectId]/[filename]/route/build-manifest.json +0 -9
  343. package/.next/server/app/api/internal/assets/[projectId]/[filename]/route/server-reference-manifest.json +0 -4
  344. package/.next/server/app/api/internal/assets/[projectId]/[filename]/route.js +0 -7
  345. package/.next/server/app/api/internal/assets/[projectId]/[filename]/route.js.nft.json +0 -1
  346. package/.next/server/app/api/internal/assets/[projectId]/[filename]/route_client-reference-manifest.js +0 -3
  347. package/.next/server/app/api/internal/assets/reveal/route/app-paths-manifest.json +0 -3
  348. package/.next/server/app/api/internal/assets/reveal/route/build-manifest.json +0 -9
  349. package/.next/server/app/api/internal/assets/reveal/route/server-reference-manifest.json +0 -4
  350. package/.next/server/app/api/internal/assets/reveal/route.js +0 -7
  351. package/.next/server/app/api/internal/assets/reveal/route.js.nft.json +0 -1
  352. package/.next/server/app/api/internal/assets/reveal/route_client-reference-manifest.js +0 -3
  353. package/.next/server/app/api/internal/assistant/chat/route/app-paths-manifest.json +0 -3
  354. package/.next/server/app/api/internal/assistant/chat/route/build-manifest.json +0 -9
  355. package/.next/server/app/api/internal/assistant/chat/route/server-reference-manifest.json +0 -4
  356. package/.next/server/app/api/internal/assistant/chat/route.js +0 -7
  357. package/.next/server/app/api/internal/assistant/chat/route.js.nft.json +0 -1
  358. package/.next/server/app/api/internal/assistant/chat/route_client-reference-manifest.js +0 -3
  359. package/.next/server/app/api/internal/assistant/images/route/app-paths-manifest.json +0 -3
  360. package/.next/server/app/api/internal/assistant/images/route/build-manifest.json +0 -9
  361. package/.next/server/app/api/internal/assistant/images/route/server-reference-manifest.json +0 -4
  362. package/.next/server/app/api/internal/assistant/images/route.js +0 -9
  363. package/.next/server/app/api/internal/assistant/images/route.js.nft.json +0 -1
  364. package/.next/server/app/api/internal/assistant/images/route_client-reference-manifest.js +0 -3
  365. package/.next/server/app/api/internal/assistant/route/app-paths-manifest.json +0 -3
  366. package/.next/server/app/api/internal/assistant/route/build-manifest.json +0 -9
  367. package/.next/server/app/api/internal/assistant/route/server-reference-manifest.json +0 -4
  368. package/.next/server/app/api/internal/assistant/route.js +0 -7
  369. package/.next/server/app/api/internal/assistant/route.js.nft.json +0 -1
  370. package/.next/server/app/api/internal/assistant/route_client-reference-manifest.js +0 -3
  371. package/.next/server/app/api/internal/assistant/sessions/route/app-paths-manifest.json +0 -3
  372. package/.next/server/app/api/internal/assistant/sessions/route/build-manifest.json +0 -9
  373. package/.next/server/app/api/internal/assistant/sessions/route/server-reference-manifest.json +0 -4
  374. package/.next/server/app/api/internal/assistant/sessions/route.js +0 -7
  375. package/.next/server/app/api/internal/assistant/sessions/route.js.nft.json +0 -1
  376. package/.next/server/app/api/internal/assistant/sessions/route_client-reference-manifest.js +0 -3
  377. package/.next/server/app/api/internal/cache/[...segments]/route/app-paths-manifest.json +0 -3
  378. package/.next/server/app/api/internal/cache/[...segments]/route/build-manifest.json +0 -9
  379. package/.next/server/app/api/internal/cache/[...segments]/route/server-reference-manifest.json +0 -4
  380. package/.next/server/app/api/internal/cache/[...segments]/route.js +0 -7
  381. package/.next/server/app/api/internal/cache/[...segments]/route.js.nft.json +0 -1
  382. package/.next/server/app/api/internal/cache/[...segments]/route_client-reference-manifest.js +0 -3
  383. package/.next/server/app/api/internal/hooks/install/route/app-paths-manifest.json +0 -3
  384. package/.next/server/app/api/internal/hooks/install/route/build-manifest.json +0 -9
  385. package/.next/server/app/api/internal/hooks/install/route/server-reference-manifest.json +0 -4
  386. package/.next/server/app/api/internal/hooks/install/route.js +0 -7
  387. package/.next/server/app/api/internal/hooks/install/route.js.nft.json +0 -1
  388. package/.next/server/app/api/internal/hooks/install/route_client-reference-manifest.js +0 -3
  389. package/.next/server/app/api/internal/hooks/session/route/app-paths-manifest.json +0 -3
  390. package/.next/server/app/api/internal/hooks/session/route/build-manifest.json +0 -9
  391. package/.next/server/app/api/internal/hooks/session/route/server-reference-manifest.json +0 -4
  392. package/.next/server/app/api/internal/hooks/session/route.js +0 -7
  393. package/.next/server/app/api/internal/hooks/session/route.js.nft.json +0 -1
  394. package/.next/server/app/api/internal/hooks/session/route_client-reference-manifest.js +0 -3
  395. package/.next/server/app/api/internal/hooks/stop/route/app-paths-manifest.json +0 -3
  396. package/.next/server/app/api/internal/hooks/stop/route/build-manifest.json +0 -9
  397. package/.next/server/app/api/internal/hooks/stop/route/server-reference-manifest.json +0 -4
  398. package/.next/server/app/api/internal/hooks/stop/route.js +0 -8
  399. package/.next/server/app/api/internal/hooks/stop/route.js.nft.json +0 -1
  400. package/.next/server/app/api/internal/hooks/stop/route_client-reference-manifest.js +0 -3
  401. package/.next/server/app/api/internal/hooks/upload/route/app-paths-manifest.json +0 -3
  402. package/.next/server/app/api/internal/hooks/upload/route/build-manifest.json +0 -9
  403. package/.next/server/app/api/internal/hooks/upload/route/server-reference-manifest.json +0 -4
  404. package/.next/server/app/api/internal/hooks/upload/route.js +0 -7
  405. package/.next/server/app/api/internal/hooks/upload/route.js.nft.json +0 -1
  406. package/.next/server/app/api/internal/hooks/upload/route_client-reference-manifest.js +0 -3
  407. package/.next/server/app/api/internal/notifications/pending/route/app-paths-manifest.json +0 -3
  408. package/.next/server/app/api/internal/notifications/pending/route/build-manifest.json +0 -9
  409. package/.next/server/app/api/internal/notifications/pending/route/server-reference-manifest.json +0 -4
  410. package/.next/server/app/api/internal/notifications/pending/route.js +0 -7
  411. package/.next/server/app/api/internal/notifications/pending/route.js.nft.json +0 -1
  412. package/.next/server/app/api/internal/notifications/pending/route_client-reference-manifest.js +0 -3
  413. package/.next/server/app/api/internal/terminal/[taskId]/buffer/route/app-paths-manifest.json +0 -3
  414. package/.next/server/app/api/internal/terminal/[taskId]/buffer/route/build-manifest.json +0 -9
  415. package/.next/server/app/api/internal/terminal/[taskId]/buffer/route/server-reference-manifest.json +0 -4
  416. package/.next/server/app/api/internal/terminal/[taskId]/buffer/route.js +0 -8
  417. package/.next/server/app/api/internal/terminal/[taskId]/buffer/route.js.nft.json +0 -1
  418. package/.next/server/app/api/internal/terminal/[taskId]/buffer/route_client-reference-manifest.js +0 -3
  419. package/.next/server/app/api/internal/terminal/[taskId]/input/route/app-paths-manifest.json +0 -3
  420. package/.next/server/app/api/internal/terminal/[taskId]/input/route/build-manifest.json +0 -9
  421. package/.next/server/app/api/internal/terminal/[taskId]/input/route/server-reference-manifest.json +0 -4
  422. package/.next/server/app/api/internal/terminal/[taskId]/input/route.js +0 -8
  423. package/.next/server/app/api/internal/terminal/[taskId]/input/route.js.nft.json +0 -1
  424. package/.next/server/app/api/internal/terminal/[taskId]/input/route_client-reference-manifest.js +0 -3
  425. package/.next/server/app/api/internal/terminal/[taskId]/start/route/app-paths-manifest.json +0 -3
  426. package/.next/server/app/api/internal/terminal/[taskId]/start/route/build-manifest.json +0 -9
  427. package/.next/server/app/api/internal/terminal/[taskId]/start/route/server-reference-manifest.json +0 -4
  428. package/.next/server/app/api/internal/terminal/[taskId]/start/route.js +0 -10
  429. package/.next/server/app/api/internal/terminal/[taskId]/start/route.js.nft.json +0 -1
  430. package/.next/server/app/api/internal/terminal/[taskId]/start/route_client-reference-manifest.js +0 -3
  431. package/.next/server/app/api/tasks/[taskId]/diff/route/app-paths-manifest.json +0 -3
  432. package/.next/server/app/api/tasks/[taskId]/diff/route/build-manifest.json +0 -9
  433. package/.next/server/app/api/tasks/[taskId]/diff/route/server-reference-manifest.json +0 -4
  434. package/.next/server/app/api/tasks/[taskId]/diff/route.js +0 -8
  435. package/.next/server/app/api/tasks/[taskId]/diff/route.js.nft.json +0 -1
  436. package/.next/server/app/api/tasks/[taskId]/diff/route_client-reference-manifest.js +0 -3
  437. package/.next/server/app/api/tasks/[taskId]/merge/route/app-paths-manifest.json +0 -3
  438. package/.next/server/app/api/tasks/[taskId]/merge/route/build-manifest.json +0 -9
  439. package/.next/server/app/api/tasks/[taskId]/merge/route/server-reference-manifest.json +0 -4
  440. package/.next/server/app/api/tasks/[taskId]/merge/route.js +0 -9
  441. package/.next/server/app/api/tasks/[taskId]/merge/route.js.nft.json +0 -1
  442. package/.next/server/app/api/tasks/[taskId]/merge/route_client-reference-manifest.js +0 -3
  443. package/.next/server/app/apple-icon.png/route/app-paths-manifest.json +0 -3
  444. package/.next/server/app/apple-icon.png/route/build-manifest.json +0 -9
  445. package/.next/server/app/apple-icon.png/route.js +0 -8
  446. package/.next/server/app/apple-icon.png/route.js.nft.json +0 -1
  447. package/.next/server/app/apple-icon.png.meta +0 -1
  448. package/.next/server/app/favicon.ico/route/app-paths-manifest.json +0 -3
  449. package/.next/server/app/favicon.ico/route/build-manifest.json +0 -9
  450. package/.next/server/app/favicon.ico/route.js +0 -8
  451. package/.next/server/app/favicon.ico/route.js.nft.json +0 -1
  452. package/.next/server/app/favicon.ico.meta +0 -1
  453. package/.next/server/app/icon0.svg/route/app-paths-manifest.json +0 -3
  454. package/.next/server/app/icon0.svg/route/build-manifest.json +0 -9
  455. package/.next/server/app/icon0.svg/route.js +0 -8
  456. package/.next/server/app/icon0.svg/route.js.nft.json +0 -1
  457. package/.next/server/app/icon0.svg.meta +0 -1
  458. package/.next/server/app/icon1.png/route/app-paths-manifest.json +0 -3
  459. package/.next/server/app/icon1.png/route/build-manifest.json +0 -9
  460. package/.next/server/app/icon1.png/route.js +0 -8
  461. package/.next/server/app/icon1.png/route.js.nft.json +0 -1
  462. package/.next/server/app/icon1.png.meta +0 -1
  463. package/.next/server/app/index.html +0 -1
  464. package/.next/server/app/index.meta +0 -16
  465. package/.next/server/app/index.rsc +0 -25
  466. package/.next/server/app/index.segments/__PAGE__.segment.rsc +0 -6
  467. package/.next/server/app/index.segments/_full.segment.rsc +0 -25
  468. package/.next/server/app/index.segments/_head.segment.rsc +0 -6
  469. package/.next/server/app/index.segments/_index.segment.rsc +0 -12
  470. package/.next/server/app/index.segments/_tree.segment.rsc +0 -6
  471. package/.next/server/app/manifest.json/route/app-paths-manifest.json +0 -3
  472. package/.next/server/app/manifest.json/route/build-manifest.json +0 -9
  473. package/.next/server/app/manifest.json/route.js +0 -7
  474. package/.next/server/app/manifest.json/route.js.nft.json +0 -1
  475. package/.next/server/app/manifest.json.meta +0 -1
  476. package/.next/server/app/missions/page/app-paths-manifest.json +0 -3
  477. package/.next/server/app/missions/page/build-manifest.json +0 -18
  478. package/.next/server/app/missions/page/next-font-manifest.json +0 -11
  479. package/.next/server/app/missions/page/react-loadable-manifest.json +0 -16
  480. package/.next/server/app/missions/page/server-reference-manifest.json +0 -401
  481. package/.next/server/app/missions/page.js +0 -22
  482. package/.next/server/app/missions/page.js.nft.json +0 -1
  483. package/.next/server/app/missions/page_client-reference-manifest.js +0 -3
  484. package/.next/server/app/onboarding/page/app-paths-manifest.json +0 -3
  485. package/.next/server/app/onboarding/page/build-manifest.json +0 -18
  486. package/.next/server/app/onboarding/page/next-font-manifest.json +0 -11
  487. package/.next/server/app/onboarding/page/react-loadable-manifest.json +0 -16
  488. package/.next/server/app/onboarding/page/server-reference-manifest.json +0 -233
  489. package/.next/server/app/onboarding/page.js +0 -21
  490. package/.next/server/app/onboarding/page.js.nft.json +0 -1
  491. package/.next/server/app/onboarding/page_client-reference-manifest.js +0 -3
  492. package/.next/server/app/onboarding.html +0 -1
  493. package/.next/server/app/onboarding.meta +0 -15
  494. package/.next/server/app/onboarding.rsc +0 -30
  495. package/.next/server/app/onboarding.segments/_full.segment.rsc +0 -30
  496. package/.next/server/app/onboarding.segments/_head.segment.rsc +0 -6
  497. package/.next/server/app/onboarding.segments/_index.segment.rsc +0 -12
  498. package/.next/server/app/onboarding.segments/_tree.segment.rsc +0 -6
  499. package/.next/server/app/onboarding.segments/onboarding/__PAGE__.segment.rsc +0 -9
  500. package/.next/server/app/onboarding.segments/onboarding.segment.rsc +0 -5
  501. package/.next/server/app/page/app-paths-manifest.json +0 -3
  502. package/.next/server/app/page/build-manifest.json +0 -18
  503. package/.next/server/app/page/next-font-manifest.json +0 -11
  504. package/.next/server/app/page/react-loadable-manifest.json +0 -16
  505. package/.next/server/app/page/server-reference-manifest.json +0 -233
  506. package/.next/server/app/page.js +0 -21
  507. package/.next/server/app/page.js.nft.json +0 -1
  508. package/.next/server/app/page_client-reference-manifest.js +0 -3
  509. package/.next/server/app/settings/page/app-paths-manifest.json +0 -3
  510. package/.next/server/app/settings/page/build-manifest.json +0 -18
  511. package/.next/server/app/settings/page/next-font-manifest.json +0 -11
  512. package/.next/server/app/settings/page/react-loadable-manifest.json +0 -16
  513. package/.next/server/app/settings/page/server-reference-manifest.json +0 -341
  514. package/.next/server/app/settings/page.js +0 -21
  515. package/.next/server/app/settings/page.js.nft.json +0 -1
  516. package/.next/server/app/settings/page_client-reference-manifest.js +0 -3
  517. package/.next/server/app/settings.html +0 -1
  518. package/.next/server/app/settings.meta +0 -15
  519. package/.next/server/app/settings.rsc +0 -30
  520. package/.next/server/app/settings.segments/_full.segment.rsc +0 -30
  521. package/.next/server/app/settings.segments/_head.segment.rsc +0 -6
  522. package/.next/server/app/settings.segments/_index.segment.rsc +0 -12
  523. package/.next/server/app/settings.segments/_tree.segment.rsc +0 -6
  524. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +0 -9
  525. package/.next/server/app/settings.segments/settings.segment.rsc +0 -5
  526. package/.next/server/app/workspaces/[workspaceId]/archive/page/app-paths-manifest.json +0 -3
  527. package/.next/server/app/workspaces/[workspaceId]/archive/page/build-manifest.json +0 -18
  528. package/.next/server/app/workspaces/[workspaceId]/archive/page/next-font-manifest.json +0 -11
  529. package/.next/server/app/workspaces/[workspaceId]/archive/page/react-loadable-manifest.json +0 -16
  530. package/.next/server/app/workspaces/[workspaceId]/archive/page/server-reference-manifest.json +0 -497
  531. package/.next/server/app/workspaces/[workspaceId]/archive/page.js +0 -21
  532. package/.next/server/app/workspaces/[workspaceId]/archive/page.js.nft.json +0 -1
  533. package/.next/server/app/workspaces/[workspaceId]/archive/page_client-reference-manifest.js +0 -3
  534. package/.next/server/app/workspaces/[workspaceId]/assets/page/app-paths-manifest.json +0 -3
  535. package/.next/server/app/workspaces/[workspaceId]/assets/page/build-manifest.json +0 -18
  536. package/.next/server/app/workspaces/[workspaceId]/assets/page/next-font-manifest.json +0 -11
  537. package/.next/server/app/workspaces/[workspaceId]/assets/page/react-loadable-manifest.json +0 -16
  538. package/.next/server/app/workspaces/[workspaceId]/assets/page/server-reference-manifest.json +0 -461
  539. package/.next/server/app/workspaces/[workspaceId]/assets/page.js +0 -21
  540. package/.next/server/app/workspaces/[workspaceId]/assets/page.js.nft.json +0 -1
  541. package/.next/server/app/workspaces/[workspaceId]/assets/page_client-reference-manifest.js +0 -3
  542. package/.next/server/app/workspaces/[workspaceId]/notes/page/app-paths-manifest.json +0 -3
  543. package/.next/server/app/workspaces/[workspaceId]/notes/page/build-manifest.json +0 -18
  544. package/.next/server/app/workspaces/[workspaceId]/notes/page/next-font-manifest.json +0 -11
  545. package/.next/server/app/workspaces/[workspaceId]/notes/page/react-loadable-manifest.json +0 -16
  546. package/.next/server/app/workspaces/[workspaceId]/notes/page/server-reference-manifest.json +0 -401
  547. package/.next/server/app/workspaces/[workspaceId]/notes/page.js +0 -21
  548. package/.next/server/app/workspaces/[workspaceId]/notes/page.js.nft.json +0 -1
  549. package/.next/server/app/workspaces/[workspaceId]/notes/page_client-reference-manifest.js +0 -3
  550. package/.next/server/app/workspaces/[workspaceId]/page/app-paths-manifest.json +0 -3
  551. package/.next/server/app/workspaces/[workspaceId]/page/build-manifest.json +0 -18
  552. package/.next/server/app/workspaces/[workspaceId]/page/next-font-manifest.json +0 -11
  553. package/.next/server/app/workspaces/[workspaceId]/page/react-loadable-manifest.json +0 -16
  554. package/.next/server/app/workspaces/[workspaceId]/page/server-reference-manifest.json +0 -569
  555. package/.next/server/app/workspaces/[workspaceId]/page.js +0 -22
  556. package/.next/server/app/workspaces/[workspaceId]/page.js.nft.json +0 -1
  557. package/.next/server/app/workspaces/[workspaceId]/page_client-reference-manifest.js +0 -3
  558. package/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page/app-paths-manifest.json +0 -3
  559. package/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page/build-manifest.json +0 -18
  560. package/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page/next-font-manifest.json +0 -11
  561. package/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page/react-loadable-manifest.json +0 -16
  562. package/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page/server-reference-manifest.json +0 -233
  563. package/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page.js +0 -21
  564. package/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page.js.nft.json +0 -1
  565. package/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page_client-reference-manifest.js +0 -3
  566. package/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page/app-paths-manifest.json +0 -3
  567. package/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page/build-manifest.json +0 -18
  568. package/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page/next-font-manifest.json +0 -11
  569. package/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page/react-loadable-manifest.json +0 -22
  570. package/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page/server-reference-manifest.json +0 -581
  571. package/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page.js +0 -23
  572. package/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page.js.nft.json +0 -1
  573. package/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page_client-reference-manifest.js +0 -3
  574. package/.next/server/app/workspaces/page/app-paths-manifest.json +0 -3
  575. package/.next/server/app/workspaces/page/build-manifest.json +0 -18
  576. package/.next/server/app/workspaces/page/next-font-manifest.json +0 -11
  577. package/.next/server/app/workspaces/page/react-loadable-manifest.json +0 -16
  578. package/.next/server/app/workspaces/page/server-reference-manifest.json +0 -329
  579. package/.next/server/app/workspaces/page.js +0 -21
  580. package/.next/server/app/workspaces/page.js.nft.json +0 -1
  581. package/.next/server/app/workspaces/page_client-reference-manifest.js +0 -3
  582. package/.next/server/app-paths-manifest.json +0 -41
  583. package/.next/server/chunks/03j-_@anthropic-ai_claude-agent-sdk_sdk_mjs_04597t~._.js +0 -85
  584. package/.next/server/chunks/0cve_next-internal_server_app_api_internal_cache_[___segments]_route_actions_09n1sa3.js +0 -3
  585. package/.next/server/chunks/0tp-_server_app_api_files_assets_[projectId]_[filename]_route_actions_02i2urs.js +0 -3
  586. package/.next/server/chunks/0tp-_server_app_api_internal_assets_[projectId]_[filename]_route_actions_0kjz576.js +0 -3
  587. package/.next/server/chunks/0tp-_server_app_api_internal_notifications_pending_route_actions_08bx38r.js +0 -3
  588. package/.next/server/chunks/0tp-_server_app_api_internal_terminal_[taskId]_buffer_route_actions_0bpyf5x.js +0 -3
  589. package/.next/server/chunks/0tp-_server_app_api_internal_terminal_[taskId]_input_route_actions_0alu32r.js +0 -3
  590. package/.next/server/chunks/0tp-_server_app_api_internal_terminal_[taskId]_start_route_actions_0swqog2.js +0 -3
  591. package/.next/server/chunks/0w1v_zod_v4_classic_external_0m-7hz_.js +0 -39
  592. package/.next/server/chunks/0~.g__next-internal_server_app_api_internal_assistant_chat_route_actions_0x-qbrh.js +0 -3
  593. package/.next/server/chunks/0~.g__next-internal_server_app_api_internal_assistant_images_route_actions_0vws40t.js +0 -3
  594. package/.next/server/chunks/0~.g__next-internal_server_app_api_internal_assistant_sessions_route_actions_0p09rcp.js +0 -3
  595. package/.next/server/chunks/10ge_next_dist_08.3req._.js +0 -13
  596. package/.next/server/chunks/10ge_next_dist_esm_build_templates_app-route_00gmiw_.js +0 -3
  597. package/.next/server/chunks/10ge_next_dist_esm_build_templates_app-route_0jwpolf.js +0 -3
  598. package/.next/server/chunks/10ge_next_dist_esm_build_templates_app-route_0liabcf.js +0 -3
  599. package/.next/server/chunks/10ge_next_dist_esm_build_templates_app-route_0z9_0_i.js +0 -3
  600. package/.next/server/chunks/10ge_next_dist_esm_build_templates_app-route_13w3ubu.js +0 -3
  601. package/.next/server/chunks/10ge_next_dist_esm_build_templates_app-route_13~vb_i.js +0 -4
  602. package/.next/server/chunks/[externals]__02xkqim._.js +0 -3
  603. package/.next/server/chunks/[externals]__09oeovy._.js +0 -3
  604. package/.next/server/chunks/[externals]__0~rg.xo._.js +0 -3
  605. package/.next/server/chunks/[externals]__11rejr-._.js +0 -3
  606. package/.next/server/chunks/[externals]_child_process_0pwkpv9._.js +0 -3
  607. package/.next/server/chunks/[externals]_next_dist_0g2nsos._.js +0 -3
  608. package/.next/server/chunks/[externals]_util_0wtvqkc._.js +0 -3
  609. package/.next/server/chunks/[root-of-the-server]__02p-gd5._.js +0 -3
  610. package/.next/server/chunks/[root-of-the-server]__0319djr._.js +0 -3
  611. package/.next/server/chunks/[root-of-the-server]__043lk8~._.js +0 -4
  612. package/.next/server/chunks/[root-of-the-server]__053y9tf._.js +0 -3
  613. package/.next/server/chunks/[root-of-the-server]__05pxb~w._.js +0 -20
  614. package/.next/server/chunks/[root-of-the-server]__07-am_7._.js +0 -20
  615. package/.next/server/chunks/[root-of-the-server]__09gjz6h._.js +0 -3
  616. package/.next/server/chunks/[root-of-the-server]__0_irb2s._.js +0 -3
  617. package/.next/server/chunks/[root-of-the-server]__0c4edwt._.js +0 -3
  618. package/.next/server/chunks/[root-of-the-server]__0c7y1r0._.js +0 -3
  619. package/.next/server/chunks/[root-of-the-server]__0dj34zn._.js +0 -3
  620. package/.next/server/chunks/[root-of-the-server]__0dqta7g._.js +0 -3
  621. package/.next/server/chunks/[root-of-the-server]__0j3gbp7._.js +0 -3
  622. package/.next/server/chunks/[root-of-the-server]__0ko_rm_._.js +0 -3
  623. package/.next/server/chunks/[root-of-the-server]__0miy2g.._.js +0 -3
  624. package/.next/server/chunks/[root-of-the-server]__0mt-eeb._.js +0 -3
  625. package/.next/server/chunks/[root-of-the-server]__0n-6-hc._.js +0 -3
  626. package/.next/server/chunks/[root-of-the-server]__0nur_ir._.js +0 -3
  627. package/.next/server/chunks/[root-of-the-server]__0pz60q-._.js +0 -20
  628. package/.next/server/chunks/[root-of-the-server]__0q~5ya5._.js +0 -3
  629. package/.next/server/chunks/[root-of-the-server]__0rpqx55._.js +0 -3
  630. package/.next/server/chunks/[root-of-the-server]__0sjsc63._.js +0 -4
  631. package/.next/server/chunks/[root-of-the-server]__0th.w7w._.js +0 -3
  632. package/.next/server/chunks/[root-of-the-server]__0u..agy._.js +0 -11
  633. package/.next/server/chunks/[root-of-the-server]__0umzekq._.js +0 -3
  634. package/.next/server/chunks/[root-of-the-server]__0wu61w.._.js +0 -3
  635. package/.next/server/chunks/[root-of-the-server]__11v.yk_._.js +0 -4
  636. package/.next/server/chunks/[root-of-the-server]__12._zd-._.js +0 -3
  637. package/.next/server/chunks/[root-of-the-server]__130shf~._.js +0 -3
  638. package/.next/server/chunks/[turbopack]_runtime.js +0 -903
  639. package/.next/server/chunks/ssr/03j-_@anthropic-ai_claude-agent-sdk_sdk_mjs_0kr2_y.._.js +0 -84
  640. package/.next/server/chunks/ssr/040e_@monaco-editor_react_dist_index_mjs_0t4i-ho._.js +0 -3
  641. package/.next/server/chunks/ssr/040e_@monaco-editor_react_dist_index_mjs_0z6t1fr._.js +0 -3
  642. package/.next/server/chunks/ssr/0kjx__pnpm_0g9g8h6._.js +0 -3
  643. package/.next/server/chunks/ssr/0kjx__pnpm_0l.5ii.._.js +0 -3
  644. package/.next/server/chunks/ssr/0kjx__pnpm_0wrn.h9._.js +0 -14
  645. package/.next/server/chunks/ssr/0rik_@dnd-kit_core_dist_core_esm_11giptg.js +0 -3
  646. package/.next/server/chunks/ssr/0~.g_src_app_workspaces_[workspaceId]_tasks_[taskId]_task-page-client_tsx_0bbseig._.js +0 -3
  647. package/.next/server/chunks/ssr/10ge_next_00.-vj.._.js +0 -18
  648. package/.next/server/chunks/ssr/10ge_next_dist_01n~t8z._.js +0 -6
  649. package/.next/server/chunks/ssr/10ge_next_dist_06_-w96._.js +0 -19
  650. package/.next/server/chunks/ssr/10ge_next_dist_0pw4my6._.js +0 -6
  651. package/.next/server/chunks/ssr/10ge_next_dist_0wjbiu9._.js +0 -3
  652. package/.next/server/chunks/ssr/10ge_next_dist_0~ti7jc._.js +0 -3
  653. package/.next/server/chunks/ssr/10ge_next_dist_10.ihny._.js +0 -3
  654. package/.next/server/chunks/ssr/10ge_next_dist_client_components_0--gzcy._.js +0 -3
  655. package/.next/server/chunks/ssr/10ge_next_dist_client_components_0eil7-a._.js +0 -33
  656. package/.next/server/chunks/ssr/10ge_next_dist_client_components_builtin_forbidden_0nzsnb2.js +0 -3
  657. package/.next/server/chunks/ssr/10ge_next_dist_client_components_builtin_global-error_125sopd.js +0 -3
  658. package/.next/server/chunks/ssr/10ge_next_dist_client_components_builtin_unauthorized_0z93cpe.js +0 -3
  659. package/.next/server/chunks/ssr/10ge_next_dist_compiled_0g45ze2._.js +0 -3
  660. package/.next/server/chunks/ssr/10ge_next_dist_esm_build_templates_app-page_080g02v.js +0 -4
  661. package/.next/server/chunks/ssr/10ge_next_dist_esm_build_templates_app-page_08khzah.js +0 -4
  662. package/.next/server/chunks/ssr/10ge_next_dist_esm_build_templates_app-page_09~o5q0.js +0 -4
  663. package/.next/server/chunks/ssr/10ge_next_dist_esm_build_templates_app-page_0_rj_f4.js +0 -4
  664. package/.next/server/chunks/ssr/10ge_next_dist_esm_build_templates_app-page_0c-wmj1.js +0 -4
  665. package/.next/server/chunks/ssr/10ge_next_dist_esm_build_templates_app-page_0fjd2ua.js +0 -4
  666. package/.next/server/chunks/ssr/10ge_next_dist_esm_build_templates_app-page_0hpuyf0.js +0 -4
  667. package/.next/server/chunks/ssr/10ge_next_dist_esm_build_templates_app-page_0knnyic.js +0 -4
  668. package/.next/server/chunks/ssr/10ge_next_dist_esm_build_templates_app-page_0oi86k6.js +0 -4
  669. package/.next/server/chunks/ssr/10ge_next_dist_esm_build_templates_app-page_0rmwdra.js +0 -4
  670. package/.next/server/chunks/ssr/10ge_next_dist_esm_build_templates_app-page_0zgisbd.js +0 -4
  671. package/.next/server/chunks/ssr/10ge_next_dist_esm_build_templates_app-page_11pz1fw.js +0 -4
  672. package/.next/server/chunks/ssr/10ge_next_dist_esm_build_templates_app-page_12reczc.js +0 -4
  673. package/.next/server/chunks/ssr/119e_lucide-react_dist_esm_icons_0636jyq._.js +0 -3
  674. package/.next/server/chunks/ssr/[externals]__0of4r_r._.js +0 -3
  675. package/.next/server/chunks/ssr/[externals]__0z1ffhu._.js +0 -3
  676. package/.next/server/chunks/ssr/[externals]_child_process_0pwkpv9._.js +0 -3
  677. package/.next/server/chunks/ssr/[root-of-the-server]__0-0j_z3._.js +0 -3
  678. package/.next/server/chunks/ssr/[root-of-the-server]__0.8y0n9._.js +0 -3
  679. package/.next/server/chunks/ssr/[root-of-the-server]__0.uoh7q._.js +0 -3
  680. package/.next/server/chunks/ssr/[root-of-the-server]__01ws4-7._.js +0 -3
  681. package/.next/server/chunks/ssr/[root-of-the-server]__024-5kd._.js +0 -3
  682. package/.next/server/chunks/ssr/[root-of-the-server]__02ipahf._.js +0 -3
  683. package/.next/server/chunks/ssr/[root-of-the-server]__03.14vw._.js +0 -3
  684. package/.next/server/chunks/ssr/[root-of-the-server]__03swpls._.js +0 -3
  685. package/.next/server/chunks/ssr/[root-of-the-server]__04xn50b._.js +0 -30
  686. package/.next/server/chunks/ssr/[root-of-the-server]__05452ke._.js +0 -30
  687. package/.next/server/chunks/ssr/[root-of-the-server]__06o5v8i._.js +0 -30
  688. package/.next/server/chunks/ssr/[root-of-the-server]__06sm5cw._.js +0 -3
  689. package/.next/server/chunks/ssr/[root-of-the-server]__09m32ch._.js +0 -3
  690. package/.next/server/chunks/ssr/[root-of-the-server]__0_0kxz4._.js +0 -3
  691. package/.next/server/chunks/ssr/[root-of-the-server]__0adx8p4._.js +0 -30
  692. package/.next/server/chunks/ssr/[root-of-the-server]__0bk3s4l._.js +0 -3
  693. package/.next/server/chunks/ssr/[root-of-the-server]__0d5p5d.._.js +0 -30
  694. package/.next/server/chunks/ssr/[root-of-the-server]__0d7u1lw._.js +0 -3
  695. package/.next/server/chunks/ssr/[root-of-the-server]__0fg8.hp._.js +0 -3
  696. package/.next/server/chunks/ssr/[root-of-the-server]__0gsj3~.._.js +0 -30
  697. package/.next/server/chunks/ssr/[root-of-the-server]__0i6glcp._.js +0 -30
  698. package/.next/server/chunks/ssr/[root-of-the-server]__0ibsor_._.js +0 -3
  699. package/.next/server/chunks/ssr/[root-of-the-server]__0j5~a_o._.js +0 -3
  700. package/.next/server/chunks/ssr/[root-of-the-server]__0jgbj6l._.js +0 -3
  701. package/.next/server/chunks/ssr/[root-of-the-server]__0jux8~h._.js +0 -33
  702. package/.next/server/chunks/ssr/[root-of-the-server]__0l~dc3x._.js +0 -3
  703. package/.next/server/chunks/ssr/[root-of-the-server]__0n32nv5._.js +0 -30
  704. package/.next/server/chunks/ssr/[root-of-the-server]__0n8qufu._.js +0 -3
  705. package/.next/server/chunks/ssr/[root-of-the-server]__0ndt9h3._.js +0 -3
  706. package/.next/server/chunks/ssr/[root-of-the-server]__0p~u4y6._.js +0 -3
  707. package/.next/server/chunks/ssr/[root-of-the-server]__0q.du4s._.js +0 -3
  708. package/.next/server/chunks/ssr/[root-of-the-server]__0rs7pkn._.js +0 -3
  709. package/.next/server/chunks/ssr/[root-of-the-server]__0sysz2q._.js +0 -47
  710. package/.next/server/chunks/ssr/[root-of-the-server]__0t25~v8._.js +0 -3
  711. package/.next/server/chunks/ssr/[root-of-the-server]__0ti70do._.js +0 -3
  712. package/.next/server/chunks/ssr/[root-of-the-server]__0uevudp._.js +0 -30
  713. package/.next/server/chunks/ssr/[root-of-the-server]__0v0dk_o._.js +0 -3
  714. package/.next/server/chunks/ssr/[root-of-the-server]__0vpgotk._.js +0 -3
  715. package/.next/server/chunks/ssr/[root-of-the-server]__0wwqzmm._.js +0 -3
  716. package/.next/server/chunks/ssr/[root-of-the-server]__0xt3-qb._.js +0 -3
  717. package/.next/server/chunks/ssr/[root-of-the-server]__0y-lkvf._.js +0 -3
  718. package/.next/server/chunks/ssr/[root-of-the-server]__0zvf.ro._.js +0 -3
  719. package/.next/server/chunks/ssr/[root-of-the-server]__11m7m-q._.js +0 -3
  720. package/.next/server/chunks/ssr/[root-of-the-server]__1223b0_._.js +0 -30
  721. package/.next/server/chunks/ssr/[root-of-the-server]__12f810l._.js +0 -3
  722. package/.next/server/chunks/ssr/[root-of-the-server]__13-by9r._.js +0 -33
  723. package/.next/server/chunks/ssr/[root-of-the-server]__13-egel._.js +0 -3
  724. package/.next/server/chunks/ssr/[turbopack]_runtime.js +0 -903
  725. package/.next/server/chunks/ssr/tower_0-nwtka._.js +0 -3
  726. package/.next/server/chunks/ssr/tower_0-omr_b._.js +0 -30
  727. package/.next/server/chunks/ssr/tower_01szasw._.js +0 -3
  728. package/.next/server/chunks/ssr/tower_035l~qv._.js +0 -3
  729. package/.next/server/chunks/ssr/tower_03jazku._.js +0 -3
  730. package/.next/server/chunks/ssr/tower_0_i~57x._.js +0 -3
  731. package/.next/server/chunks/ssr/tower_0agzi_m._.js +0 -3
  732. package/.next/server/chunks/ssr/tower_0d.car1._.js +0 -30
  733. package/.next/server/chunks/ssr/tower_0egtw-7._.js +0 -30
  734. package/.next/server/chunks/ssr/tower_0h3r32m._.js +0 -30
  735. package/.next/server/chunks/ssr/tower_0kl_bfy._.js +0 -7
  736. package/.next/server/chunks/ssr/tower_0le1h0h._.js +0 -3
  737. package/.next/server/chunks/ssr/tower_0mz4ut.._.js +0 -3
  738. package/.next/server/chunks/ssr/tower_0nuj.0p._.js +0 -39
  739. package/.next/server/chunks/ssr/tower_0pcqezm._.js +0 -3
  740. package/.next/server/chunks/ssr/tower_0r7uuim._.js +0 -30
  741. package/.next/server/chunks/ssr/tower_0rdk81e._.js +0 -3
  742. package/.next/server/chunks/ssr/tower_0sojjnu._.js +0 -3
  743. package/.next/server/chunks/ssr/tower_0tc~.xl._.js +0 -30
  744. package/.next/server/chunks/ssr/tower_0tuq2iz._.js +0 -30
  745. package/.next/server/chunks/ssr/tower_0wvk~r.._.js +0 -3
  746. package/.next/server/chunks/ssr/tower_0xg_zeq._.js +0 -3
  747. package/.next/server/chunks/ssr/tower_0~oir9k._.js +0 -3
  748. package/.next/server/chunks/ssr/tower_10p15te._.js +0 -3
  749. package/.next/server/chunks/ssr/tower_10t13p4._.js +0 -6
  750. package/.next/server/chunks/ssr/tower_117pzh8._.js +0 -3
  751. package/.next/server/chunks/ssr/tower_11q5_.m._.js +0 -3
  752. package/.next/server/chunks/ssr/tower_138qlx5._.js +0 -3
  753. package/.next/server/chunks/ssr/tower__next-internal_server_app__global-error_page_actions_13t5~qk.js +0 -3
  754. package/.next/server/chunks/ssr/tower_src_0puzd-6._.js +0 -3
  755. package/.next/server/chunks/ssr/tower_src_actions_agent-actions_ts_0j.e1tn._.js +0 -4
  756. package/.next/server/chunks/ssr/tower_src_actions_file-actions_ts_0424lna._.js +0 -3
  757. package/.next/server/chunks/ssr/tower_src_app_missions_missions-client_tsx_0a9vjyr._.js +0 -3
  758. package/.next/server/chunks/ssr/tower_src_app_onboarding_page_tsx_0_3krz1._.js +0 -3
  759. package/.next/server/chunks/ssr/tower_src_app_settings_page_tsx_0vo5e-o._.js +0 -3
  760. package/.next/server/chunks/ssr/tower_src_app_workspaces_[workspaceId]_assets_assets-page-client_tsx_0zfgzhi._.js +0 -3
  761. package/.next/server/chunks/ssr/tower_src_app_workspaces_[workspaceId]_board-page-client_tsx_0kjp1u0._.js +0 -7
  762. package/.next/server/chunks/ssr/tower_src_components_ui_select_tsx_10ajx~2._.js +0 -3
  763. package/.next/server/chunks/ssr/tower_src_lib_01420_4._.js +0 -3
  764. package/.next/server/chunks/ssr/tower_src_lib_0i-zjpa._.js +0 -3
  765. package/.next/server/chunks/ssr/tower_src_lib_0ja~kdb._.js +0 -3
  766. package/.next/server/chunks/ssr/tower_src_lib_0obw2r8._.js +0 -3
  767. package/.next/server/chunks/ssr/tower_src_lib_0rgfsuf._.js +0 -3
  768. package/.next/server/chunks/ssr/tower_src_lib_constants_ts_0o218_c._.js +0 -3
  769. package/.next/server/chunks/tower_03g~ktv._.js +0 -7
  770. package/.next/server/chunks/tower_05du07.._.js +0 -10
  771. package/.next/server/chunks/tower_0a-x6m.._.js +0 -3
  772. package/.next/server/chunks/tower__next-internal_server_app_api_adapters_test_route_actions_13jw~9b.js +0 -3
  773. package/.next/server/chunks/tower__next-internal_server_app_api_browse-fs_route_actions_0k5p2xy.js +0 -3
  774. package/.next/server/chunks/tower__next-internal_server_app_api_git_route_actions_0rvpodb.js +0 -3
  775. package/.next/server/chunks/tower__next-internal_server_app_api_internal_assets_reveal_route_actions_0idwm6j.js +0 -3
  776. package/.next/server/chunks/tower__next-internal_server_app_api_internal_assistant_route_actions_0rdz1d..js +0 -3
  777. package/.next/server/chunks/tower__next-internal_server_app_api_internal_hooks_install_route_actions_06dxleu.js +0 -3
  778. package/.next/server/chunks/tower__next-internal_server_app_api_internal_hooks_session_route_actions_0wlv4lf.js +0 -3
  779. package/.next/server/chunks/tower__next-internal_server_app_api_internal_hooks_stop_route_actions_101_oub.js +0 -3
  780. package/.next/server/chunks/tower__next-internal_server_app_api_internal_hooks_upload_route_actions_0439qz_.js +0 -3
  781. package/.next/server/chunks/tower__next-internal_server_app_api_tasks_[taskId]_diff_route_actions_0nthc84.js +0 -3
  782. package/.next/server/chunks/tower__next-internal_server_app_api_tasks_[taskId]_merge_route_actions_0g.x0nb.js +0 -3
  783. package/.next/server/chunks/tower__next-internal_server_app_apple-icon_png_route_actions_0bni-sb.js +0 -3
  784. package/.next/server/chunks/tower__next-internal_server_app_favicon_ico_route_actions_0kw~xj2.js +0 -3
  785. package/.next/server/chunks/tower__next-internal_server_app_icon0_svg_route_actions_0nww9-e.js +0 -3
  786. package/.next/server/chunks/tower__next-internal_server_app_icon1_png_route_actions_09h.ywu.js +0 -3
  787. package/.next/server/chunks/tower__next-internal_server_app_manifest_json_route_actions_080ob~r.js +0 -3
  788. package/.next/server/chunks/tower_src_0..vg-t._.js +0 -3
  789. package/.next/server/chunks/tower_src_05rqj.1._.js +0 -3
  790. package/.next/server/chunks/tower_src_lib_0uok6j3._.js +0 -3
  791. package/.next/server/chunks/tower_src_lib_0w8qt4s._.js +0 -3
  792. package/.next/server/chunks/tower_src_lib_constants_ts_0cxd4.p._.js +0 -3
  793. package/.next/server/edge/chunks/0y9m_next_dist_esm_build_templates_edge-wrapper_0cx_eo..js +0 -3
  794. package/.next/server/edge/chunks/tower_0wvfs38._.js +0 -3
  795. package/.next/server/functions-config-manifest.json +0 -22
  796. package/.next/server/instrumentation/middleware-manifest.json +0 -12
  797. package/.next/server/instrumentation.js +0 -4
  798. package/.next/server/instrumentation.js.nft.json +0 -1
  799. package/.next/server/interception-route-rewrite-manifest.js +0 -1
  800. package/.next/server/middleware-build-manifest.js +0 -22
  801. package/.next/server/middleware-manifest.json +0 -6
  802. package/.next/server/next-font-manifest.js +0 -1
  803. package/.next/server/next-font-manifest.json +0 -55
  804. package/.next/server/pages/404.html +0 -1
  805. package/.next/server/pages/500.html +0 -1
  806. package/.next/server/pages-manifest.json +0 -4
  807. package/.next/server/prefetch-hints.json +0 -1
  808. package/.next/server/server-reference-manifest.js +0 -1
  809. package/.next/server/server-reference-manifest.json +0 -2778
  810. package/.next/static/chunks/0.uav~g39w7rr.js +0 -1
  811. package/.next/static/chunks/00z-g3x93ngvn.js +0 -1
  812. package/.next/static/chunks/02f8le_y~6gnd.js +0 -1
  813. package/.next/static/chunks/03e.4ymu.j5wl.js +0 -1
  814. package/.next/static/chunks/03~yq9q893hmn.js +0 -1
  815. package/.next/static/chunks/05-b9qqm3av9~.js +0 -1
  816. package/.next/static/chunks/05~v02mkan5z..js +0 -1
  817. package/.next/static/chunks/06-mw~zl.diaf.js +0 -1
  818. package/.next/static/chunks/06fsp5nfga486.js +0 -1
  819. package/.next/static/chunks/07~c.vc82_c1-.js +0 -1
  820. package/.next/static/chunks/0abtpeymj-58i.js +0 -1
  821. package/.next/static/chunks/0amhu3hs4zxxw.js +0 -1
  822. package/.next/static/chunks/0drgc-oztq6o-.css +0 -1
  823. package/.next/static/chunks/0eaa2lmymh2fx.js +0 -1
  824. package/.next/static/chunks/0j9qriqni_r1..js +0 -2
  825. package/.next/static/chunks/0k.u8sxy~e469.js +0 -4
  826. package/.next/static/chunks/0k_9.73yz~q10.js +0 -1
  827. package/.next/static/chunks/0ltsz~s~e4wzu.js +0 -1
  828. package/.next/static/chunks/0lvd52mjiit6s.js +0 -1
  829. package/.next/static/chunks/0mf7~j7tvqr46.js +0 -1
  830. package/.next/static/chunks/0mq0uqbbbb1~2.js +0 -1
  831. package/.next/static/chunks/0neevhl_o1ozu.css +0 -2
  832. package/.next/static/chunks/0omj~p3uxkic-.js +0 -1
  833. package/.next/static/chunks/0qe.8bmmwuucu.js +0 -5
  834. package/.next/static/chunks/0qpq1~6v-eql7.js +0 -1
  835. package/.next/static/chunks/0t-gr6j-c65qb.js +0 -1
  836. package/.next/static/chunks/0tcl81ybuob5i.js +0 -1
  837. package/.next/static/chunks/0uqimvsni_op~.js +0 -1
  838. package/.next/static/chunks/0uxf0jd91e-0r.js +0 -1
  839. package/.next/static/chunks/0vn2y~4w7u3ui.js +0 -83
  840. package/.next/static/chunks/0wt3kws~_yr8z.js +0 -1
  841. package/.next/static/chunks/0z2bzovqhl2f5.js +0 -1
  842. package/.next/static/chunks/0z7bwntvfhxzi.js +0 -12
  843. package/.next/static/chunks/10n23t.1hpb-1.js +0 -1
  844. package/.next/static/chunks/14xzmrt5ly6gq.js +0 -31
  845. package/.next/static/chunks/151wr~6x8aclx.js +0 -1
  846. package/.next/static/chunks/15gjy.xhhriy8.js +0 -5
  847. package/.next/static/chunks/16ft9mdv3zwse.js +0 -1
  848. package/.next/static/chunks/16w-ap~msrwpj.js +0 -1
  849. package/.next/static/chunks/17oc2l.ekcs8b.css +0 -1
  850. package/.next/static/chunks/turbopack-0wjmrsi.z32s0.js +0 -1
  851. package/.next/static/dwsGxWRLV_FPRJyEkai5s/_buildManifest.js +0 -11
  852. package/.next/static/dwsGxWRLV_FPRJyEkai5s/_clientMiddlewareManifest.js +0 -1
  853. package/.next/static/dwsGxWRLV_FPRJyEkai5s/_ssgManifest.js +0 -1
  854. package/.next/static/media/4fa387ec64143e14-s.0q3udbd2bu5yp.woff2 +0 -0
  855. package/.next/static/media/7178b3e590c64307-s.11.cyxs5p-0z~.woff2 +0 -0
  856. package/.next/static/media/797e433ab948586e-s.p.0.q-h669a_dqa.woff2 +0 -0
  857. package/.next/static/media/8a480f0b521d4e75-s.06d3mdzz5bre_.woff2 +0 -0
  858. package/.next/static/media/apple-icon.16aocl-s-v2qz.png +0 -0
  859. package/.next/static/media/bbc41e54d2fcbd21-s.0gw~uztddq1df.woff2 +0 -0
  860. package/.next/static/media/caa3a2e1cccd8315-s.p.16t1db8_9y2o~.woff2 +0 -0
  861. package/.next/static/media/favicon.0y2d6j9cou~8p.ico +0 -0
  862. package/.next/static/media/icon0.0a6mkq6meyird.svg +0 -1
  863. package/.next/static/media/icon1.04ux133882seb.png +0 -0
  864. package/.next/trace +0 -2
  865. package/.next/trace-build +0 -1
  866. package/.next/turbopack +0 -0
  867. package/.next/types/routes.d.ts +0 -103
  868. package/.next/types/validator.ts +0 -349
  869. /package/{.next/server/app/apple-icon.png.body → src/app/apple-icon.png} +0 -0
  870. /package/{.next/server/app/favicon.ico.body → src/app/favicon.ico} +0 -0
  871. /package/{.next/server/app/icon0.svg.body → src/app/icon0.svg} +0 -0
  872. /package/{.next/server/app/icon1.png.body → src/app/icon1.png} +0 -0
  873. /package/{.next/server/app/manifest.json.body → src/app/manifest.json} +0 -0
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,349369,e=>{"use strict";var t=e.i(430989),s=e.i(641338);let i={zh:{"sidebar.workspace":"工作空间","sidebar.newWorkspace":"新建工作空间","sidebar.collapse":"折叠侧边栏","sidebar.expand":"展开侧边栏","sidebar.rename":"重命名","sidebar.delete":"删除","sidebar.archive":"归档","sidebar.manageLabels":"管理标签","sidebar.deleteConfirm":"确认删除工作空间「{name}」?所有项目和任务将被删除。","sidebar.lastWorkspaceError":"至少需要保留一个工作空间","sidebar.settings":"配置","workspace.create":"新建工作空间","workspace.edit":"编辑工作空间","workspace.name":"名称","workspace.namePlaceholder":"输入工作空间名称","workspace.icon":"图标","common.cancel":"取消","common.create":"创建","common.save":"保存","common.delete":"删除","common.add":"添加","common.edit":"编辑","common.search":"搜索","topbar.newProject":"新建项目","topbar.importProject":"导入项目","topbar.searchPlaceholder":"搜索任务、项目、仓库、笔记、资源...","project.name":"项目名称","project.alias":"项目别名","project.description":"项目描述","project.gitUrl":"Git 仓库地址","project.gitUrlHint":"可选,输入后自动推断本地路径","project.namePlaceholder":"输入项目名称","project.aliasPlaceholder":"可选,如:前端重构","project.descPlaceholder":"可选,项目简介","project.gitPlaceholder":"https://github.com/user/repo 或 git@github.com:user/repo.git","project.localPath":"本地路径","project.localPathPlaceholder":"/Users/you/projects/my-app","project.localPathHint":"项目在本地磁盘的文件夹路径,输入 Git 地址后自动填充","project.tildeWarning":"请输入绝对路径,不支持 ~ 别名","project.importHint":"选择本地已有项目文件夹","project.autoDetected":"已自动检测 Git 远程","project.edit":"编辑项目","git.clone":"克隆到本地","git.cloning":"正在克隆...","git.cloned":"已克隆","git.cloneSuccess":"仓库克隆成功","board.kanban":"任务看板","board.overview":"概览","board.running":"执行中","board.tip":"提示","board.newTask":"新建任务","board.allFilter":"全部","board.searchPlaceholder":"搜索任务...","board.inProgressFilter":"执行中","board.inReviewFilter":"待评审","board.contextMenu.changeStatus":"更改状态","board.contextMenu.launch":"启动任务","board.contextMenu.goToDetail":"查看详情","board.pin":"置顶","board.unpin":"取消置顶","board.viewAll":"查看全部","board.noTasks":"暂无任务","task.create":"新建任务","task.edit":"编辑任务","task.title":"任务标题","task.titlePlaceholder":"输入任务标题","task.description":"描述","task.descPlaceholder":"输入任务描述 (支持 Markdown)","task.priority":"优先级","task.labels":"标签","task.priorityLow":"低","task.priorityMedium":"中","task.priorityHigh":"高","task.priorityCritical":"紧急","task.baseBranch":"基础分支","task.branchLoading":"加载分支...","task.branchNone":"未找到分支","task.branchSearch":"搜索分支...","task.branchDirect":"不使用分支隔离(直接在主仓库工作)","task.worktreeLabel":"分支隔离","task.worktreeYes":"启用","task.worktreeNo":"不启用","task.subPath":"子路径","task.subPathPlaceholder":"例如: web、packages/api","task.subPathHint":"Mono-repo 子目录,任务将在此目录下执行","taskDetail.title":"任务对话","taskDetail.back":"返回任务列表","taskDetail.hasConversation":"已有会话","taskDetail.updatedAt":"更新于","taskDetail.directMode":"直接模式","taskDetail.send":"发送","taskDetail.sending":"处理中...","taskDetail.inputPlaceholder":"输入指令...","taskDetail.emptyState":"开始对话,让 AI 代理执行任务","taskDetail.emptyHint":"输入指令后按 Enter 发送","taskDetail.sendFailed":"发送失败,请重试","taskDetail.executionFailed":"执行失败","taskDetail.executionFailedRetry":"执行失败,请重试","taskDetail.panelDescription":"聚焦当前任务的执行对话","taskDetail.filesChanged":"个文件已更改","search.placeholder":"搜索任务、项目、仓库、笔记、资源...","search.task":"任务","search.project":"项目","search.repository":"仓库","search.all":"全部","search.note":"笔记","search.asset":"资源","search.noResults":"没有找到结果","search.typeToSearch":"输入关键词开始搜索","search.results":"搜索结果","sidebar.right.projectInfo":"项目信息","sidebar.right.repo":"仓库","sidebar.right.addRepo":"添加仓库","sidebar.right.noRepo":"暂无已关联仓库","sidebar.right.addRepoHint":"点击下方添加仓库","sidebar.right.browseRepo":"浏览磁盘上的仓库","sidebar.right.createRepo":"在磁盘上创建新仓库","sidebar.right.recent":"最近","sidebar.right.other":"其他","sidebar.right.browseWip":"浏览磁盘仓库功能开发中","sidebar.right.createWip":"创建仓库功能开发中","sidebar.right.linkWip":"关联仓库功能开发中","sidebar.right.normalType":"普通项目","sidebar.right.gitType":"Git 项目","sidebar.right.edit":"编辑项目","sidebar.right.name":"项目名称","sidebar.right.aliasLabel":"别名","sidebar.right.descLabel":"描述","sidebar.right.save":"保存","sidebar.right.cancel":"取消","sidebar.right.namePlaceholder":"输入项目名称","sidebar.right.aliasPlaceholder":"可选别名","sidebar.right.descPlaceholder":"项目描述","label.manage":"管理标签","label.name":"标签名称","label.color":"颜色","label.builtin":"内置","label.add":"添加标签","label.noLabels":"暂无标签","settings.title":"配置","settings.language":"语言","settings.languageDesc":"切换界面语言","settings.general":"通用","settings.generalDesc":"主题与语言偏好","settings.theme":"主题","settings.themeDesc":"选择界面主题","settings.themeLight":"浅色","settings.themeDark":"深色","settings.themeSystem":"跟随系统","settings.prompts":"提示词","settings.promptsDesc":"管理 AI 提示词模板","settings.prompts.title":"提示词管理","settings.prompts.newPrompt":"新建提示词","settings.prompts.editPrompt":"编辑提示词","settings.prompts.promptName":"名称","settings.prompts.promptNamePlaceholder":"输入提示词名称","settings.prompts.promptDescription":"描述","settings.prompts.promptDescriptionPlaceholder":"可选,简要描述用途","settings.prompts.promptContent":"内容","settings.prompts.promptContentPlaceholder":"输入提示词内容...","settings.prompts.deleteConfirmTitle":"确认删除","settings.prompts.deleteConfirmMessage":"删除后无法恢复。","settings.prompts.setDefault":"设为默认","settings.prompts.default":"默认","settings.prompts.empty":"暂无提示词","settings.prompts.emptyHint":"点击上方按钮创建第一个提示词","settings.prompts.save":"保存","settings.prompts.cancel":"取消","settings.prompts.delete":"删除","settings.aiTools.title":"AI 工具","settings.aiTools.cliVerification":"CLI 验证","settings.aiTools.cliVerificationDesc":"验证 AI 工具命令行是否已正确安装","settings.aiTools.testConnection":"测试连接","settings.aiTools.testing":"测试中...","settings.aiTools.testPassed":"检测通过","settings.aiTools.testFailed":"部分检测未通过","settings.config":"参数配置","settings.configDesc":"系统运行参数","settings.config.empty":"暂无可配置参数 — 后续版本将添加","settings.config.git.title":"Git 路径映射规则","settings.config.git.desc":"定义 Git URL 到本地路径的映射规则,创建项目时自动填充 localPath","settings.config.git.host":"主机","settings.config.git.hostPlaceholder":"github.com","settings.config.git.ownerMatch":"Owner 匹配","settings.config.git.ownerMatchPlaceholder":"* (匹配所有)","settings.config.git.localPathTemplate":"本地基础路径","settings.config.git.localPathTemplatePlaceholder":"/Users/you/project","settings.config.git.priority":"优先级","settings.config.git.priorityHint":"数值越小优先级越高","settings.config.git.addRule":"添加规则","settings.config.git.noRules":"暂无映射规则 — 点击「添加规则」创建","settings.config.git.deleteConfirm":"确定删除此规则?","settings.config.git.deleteConfirmMessage":"此操作不可撤销。","settings.config.git.save":"保存","settings.config.git.cancel":"取消","settings.config.git.edit":"编辑","settings.config.git.delete":"删除","settings.config.git.actions":"操作","settings.config.git.templateHint":"支持 {owner} 和 {repo} 变量","settings.config.git.validationRequired":"主机和本地路径模板不能为空","settings.config.system.title":"系统参数","settings.config.system.desc":"上传限制与并发控制","settings.config.system.maxUpload":"最大上传文件大小","settings.config.system.maxUploadHint":"单个文件允许的最大上传大小","settings.config.system.maxConcurrent":"最大并发执行数","settings.config.system.maxConcurrentHint":"同时运行的 AI 任务上限","settings.config.system.saved":"系统参数已保存","settings.config.gitParams.title":"Git 参数","settings.config.gitParams.desc":"Git 操作超时","settings.config.gitParams.timeout":"Git 操作超时","settings.config.gitParams.timeoutHint":"clone/status 等操作的超时时间","settings.config.gitParams.saved":"Git 参数已保存","settings.config.search.title":"搜索参数","settings.config.search.desc":"搜索结果数量、防抖延迟与摘要长度","settings.config.search.resultLimit":"搜索结果数量","settings.config.search.resultLimitHint":"每类搜索返回的最大结果数","settings.config.search.allModeCap":"全部模式单类上限","settings.config.search.allModeCapHint":"「全部」搜索时每个类别显示的最大结果数","settings.config.search.debounceMs":"搜索防抖延迟","settings.config.search.debounceMsHint":"输入停止后等待多久执行搜索","settings.config.search.snippetLength":"摘要长度","settings.config.search.snippetLengthHint":"搜索结果预览文本的最大字符数","settings.config.search.saved":"搜索参数已保存","workspace.selectHint":"选择一个工作空间","workspace.selectDesc":"从左侧选择一个工作空间开始","workspace.createError":"创建工作区失败,请重试","board.noProject":"该工作空间没有项目,请点击顶部「新建项目」创建","board.tipText":"复用现有拖拽、详情和任务创建链路","board.tipDesc":"先把工作台入口对齐原型,再逐步补 Settings、Skills、Plugins。","folder.selectFolder":"选择文件夹","folder.selectGitRepo":"选择 Git 仓库","folder.hint":"点击文件夹名称进行导航 · 使用操作按钮进行选择","folder.manualInput":"手动输入路径:","folder.goTo":"前往","folder.searchDir":"搜索当前目录:","folder.selectCurrent":"选择当前","folder.selectPath":"选择路径","folder.empty":"此目录下没有文件夹","folder.browse":"浏览","git.section":"Git","git.currentBranch":"当前分支","git.switchBranch":"切换分支","git.localBranches":"本地分支","git.remoteBranches":"远程分支","git.modified":"已修改","git.staged":"已暂存","git.untracked":"未跟踪","git.notInitialized":"该项目尚未初始化 Git 仓库","git.initRepo":"初始化 Git 仓库","git.initSuccess":"Git 仓库初始化成功","git.initFailed":"初始化失败","git.switchSuccess":"已切换到分支","git.switchFailed":"切换分支失败","git.noLocalPath":"请先设置项目本地路径","git.loading":"加载中...","git.createBranch":"创建分支","git.branchName":"分支名称","git.branchNamePlaceholder":"feature/my-feature","git.baseBranch":"基于分支","git.branchDesc":"分支描述","git.branchDescPlaceholder":"可选,描述这个分支的用途","git.createSuccess":"分支创建成功","git.createFailed":"创建分支失败","git.fetchSuccess":"远程分支已更新","git.fetchFailed":"拉取远程分支失败","git.changes":"变更","git.stagedChanges":"已暂存","git.unstagedChanges":"未暂存","git.stageAll":"全部暂存","git.unstageAll":"全部取消","git.commit":"提交","git.commitSuccess":"提交成功","git.commitMsgPlaceholder":"提交信息 (⌘+Enter 提交)","git.pull":"拉取","git.pullSuccess":"拉取成功","git.push":"推送","git.pushSuccess":"推送成功","git.commitLog":"提交历史","git.stash":"暂存区","git.stashMsgPlaceholder":"暂存描述(可选)","git.stashSaved":"已暂存变更","git.stashApply":"恢复","git.stashApplied":"已恢复暂存","git.stashDrop":"删除","git.stashDropped":"已删除暂存","git.noChanges":"工作区干净,没有变更","git.sync":"同步","git.pullFrom":"拉取自","git.pushTo":"推送到","git.fetchAll":"获取所有远程","git.stashSave":"暂存变更","git.stashPopLatest":"恢复最近暂存","git.discardAll":"放弃所有更改","git.discardSuccess":"已放弃所有更改","git.tabLabel":"Git","git.openStudio":"打开工作台","git.openStudioFailed":"打开工作台失败","archive.title":"归档任务","archive.backToBoard":"返回看板","archive.noTasks":"暂无归档任务","archive.noTasksDesc":"已完成或已取消超过今日的任务将出现在此处","archive.completedAt":"完成于","archive.cancelledAt":"取消于","archive.createdAt":"创建于","archive.lastExecution":"最近执行","archive.status.done":"已完成","archive.status.cancelled":"已取消","archive.tasksCount":"条归档","sidebar.notes":"笔记","sidebar.assets":"资源","notes.title":"笔记","notes.newNote":"新建笔记","notes.allCategories":"全部分类","notes.category.account":"账号","notes.category.env":"环境","notes.category.requirements":"需求","notes.category.memo":"备忘","notes.edit":"编辑","notes.delete":"删除","notes.save":"保存","notes.cancel":"取消","notes.titlePlaceholder":"笔记标题","notes.contentPlaceholder":"笔记内容(支持 Markdown)","notes.categoryLabel":"分类","notes.empty":"暂无笔记","notes.emptyHint":"点击「新建笔记」创建第一条笔记","notes.deleteConfirm":"确认删除笔记「{title}」?","notes.noProject":"当前工作空间没有项目","notes.noProjectHint":"请先创建一个项目","notes.backToBoard":"返回看板","notes.loading":"加载中...","notes.workspace":"工作区","notes.project":"项目","assets.title":"资源","assets.upload":"上传文件","assets.empty":"暂无资源","assets.emptyHint":"上传文件作为项目资源","assets.filename":"文件名","assets.size":"大小","assets.uploadedAt":"上传时间","assets.preview":"预览","assets.download":"下载","assets.delete":"删除","assets.deleteConfirm":"确认删除资源「{filename}」?","assets.noProject":"当前工作空间没有项目","assets.noProjectHint":"请先创建一个项目","assets.uploading":"上传中...","assets.backToBoard":"返回看板","assets.loading":"加载中...","assets.uploadTitle":"上传资源","assets.workspace":"工作区","assets.project":"项目","assets.file":"文件","assets.selectFile":"点击选择文件...","assets.description":"描述","assets.descriptionPlaceholder":"输入资源描述(可搜索)","assets.revealInFinder":"在文件夹中显示","assets.previewNotSupported":"不支持预览此文件类型","assets.loadingPreview":"加载中...","assets.previewError":"加载预览失败","assets.fileTooLarge":"文件过大,无法预览(超过 1MB)","taskPage.title":"任务详情","taskPage.back":"返回","taskPage.backToBoard":"返回看板","taskPage.conversation":"对话","taskPage.changes":"变更","taskPage.notes":"备注","taskPage.addNote":"添加备注","taskPage.noteTitle":"标题","taskPage.noteContent":"内容","taskPage.uploadFile":"上传附件","taskPage.attachments":"附件","taskPage.noNotes":"暂无备注","taskPage.noAttachments":"暂无附件","taskPage.deleteNote":"删除","taskPage.deleteAttachment":"删除","taskPage.noteSaved":"备注已保存","taskPage.viewDetails":"查看详情","taskPage.noChanges":"暂无变更","taskPage.branchDeleted":"任务分支已删除,无法查看变更","taskPage.startExecution":"启动执行以查看变更","taskPage.loadingDiff":"加载变更中...","taskPage.noDiff":"暂无变更(需要项目配置本地路径和基础分支)","taskPage.tabFiles":"文件","taskPage.tabPreview":"预览","taskPage.tabSearch":"搜索","taskPage.tabFileTree":"文件树","taskPage.completeTask":"完成任务","taskPage.uncommittedChanges":"工作区有 {count} 个未提交的文件,请先点击 Commit 按钮提交后再完成任务","taskPage.noChangesToComplete":"没有任何改动,无法完成任务","taskPage.taskCompleted":"任务已完成","taskPage.loadDiffFailed":"加载变更失败","taskPage.fileTree.newFile":"新建文件","taskPage.fileTree.newFolder":"新建文件夹","taskPage.fileTree.rename":"重命名","taskPage.fileTree.delete":"删除","taskPage.fileTree.revealInFinder":"在文件夹中显示","taskPage.fileTree.emptyHeading":"文件树暂不可用","taskPage.fileTree.emptyBody":"启动任务执行后将在此显示 worktree 目录结构","taskPage.fileTree.emptyDir":"目录为空","taskPage.fileTree.loadError":"无法加载文件列表,请重试","taskPage.fileTree.renamePlaceholder":"输入新名称","taskPage.fileTree.newFilePlaceholder":"文件名","taskPage.fileTree.newFolderPlaceholder":"文件夹名","taskPage.fileTree.deleteConfirmHeading":"确认删除","taskPage.fileTree.deleteConfirmBody":"删除「{name}」?此操作不可撤销。","taskPage.fileTree.deleteConfirmBodyFolder":"「{name}」及其所有内容将被删除。","taskPage.fileTree.deleteConfirmAction":"删除","taskPage.fileTree.searchPlaceholder":"搜索文件…","taskPage.fileTree.searchNoResults":"无匹配文件","editor.selectFile":"选择文件以打开","editor.selectFileHint":"在左侧文件树中点击任意文件","editor.saveSuccess":"保存成功","editor.saveError":"保存失败,请重试","editor.closeTab":"关闭标签页","editor.noWorktree":"暂无工作区,请先执行任务","diff.filesChanged":"{count} 个文件更改","diff.additions":"+{count}","diff.deletions":"-{count}","diff.binary":"二进制文件","diff.truncated":"差异过大已截断","diff.conflictWarning":"合并被阻止:检测到冲突","diff.conflictFiles":"{count} 个冲突文件","diff.commitChanges":"提交更改","diff.commitMessagePlaceholder":"第一行为标题,空行后为详细描述\n\n例如:\nfeat: 添加用户认证\n\n实现 JWT token 验证和刷新机制","diff.commit":"提交","diff.noChanges":"未检测到更改","diff.commitSuccess":"已提交 ({hash})","merge.button":"合并","merge.confirmTitle":"确认 Squash 合并","merge.targetBranch":"目标分支","merge.changedFiles":"变更文件数","merge.commitsToSquash":"待压缩提交数","merge.commitMessage":"提交信息","merge.confirm":"确认合并","merge.cancel":"取消","merge.merging":"合并中...","merge.success":"合并成功","merge.conflictError":"无法合并:检测到冲突","merge.failed":"合并失败","project.type.label":"项目类型","project.type.frontend":"前端","project.type.backend":"后端","project.previewCommand":"预览启动命令","project.previewCommandPlaceholder":"例:pnpm dev","project.previewCommandDesc":"启动本地开发服务器的命令","preview.run":"运行","preview.stop":"停止","preview.openTerminal":"在终端中打开","preview.refresh":"刷新预览","preview.addressPlaceholder":"输入本地 URL,按 Enter 加载","preview.noWorktree":"预览面板不可用","preview.noWorktreeDesc":"启动任务执行后可在此预览前端页面","preview.statusStopped":"已停止","preview.statusStarting":"启动中...","preview.statusRunning":"运行中","preview.statusError":"启动失败","preview.errorDesc":"启动预览服务器时出错,请检查启动命令","preview.terminalError":"无法打开终端,请检查设置中的终端配置","preview.port":"端口","settings.shell.label":"默认 Shell","settings.shell.desc":"用于 PTY 终端和 AI CLI 测试的 Shell,使用系统已安装的 Shell 及其配置(别名、插件等)","settings.shell.winHint":"Claude Code 在 Windows 上需要 Git Bash 环境,建议选择 Git Bash","settings.terminal.label":"终端应用","settings.terminal.desc":'用于"在终端中打开"的 GUI 终端应用',"settings.terminal.placeholder":"Terminal","settings.terminal.idleTimeout":"空闲超时(秒)","settings.terminal.idleTimeoutDesc":"终端无输出多久后触发空闲检测(最低 180 秒)","settings.cliProfile.title":"CLI 配置","settings.cliProfile.desc":"配置 AI 命令行工具的执行参数","settings.cliProfile.navDesc":"CLI 执行参数配置","settings.cliProfile.command":"命令","settings.cliProfile.commandHint":"CLI 可执行文件名称或路径","settings.cliProfile.commandPlaceholder":"claude","settings.cliProfile.baseArgs":"基础参数","settings.cliProfile.baseArgsHint":"每次执行时附加的命令行参数,一行一个","settings.cliProfile.baseArgsPlaceholder":"--dangerously-skip-permissions","settings.cliProfile.envVars":"环境变量","settings.cliProfile.envVarsHint":"注入到 CLI 进程的环境变量,格式:KEY=VALUE,一行一个","settings.cliProfile.envVarsPlaceholder":"MY_VAR=value","settings.cliProfile.saved":"CLI 配置已保存","settings.cliProfile.saveError":"保存失败","settings.cliProfile.invalidJson":"参数格式无效","settings.cliProfile.noProfile":"未找到默认 CLI 配置,请运行 seed","terminal.connecting":"正在连接...","terminal.connected":"已连接","terminal.disconnected":"已断开","terminal.reconnecting":"正在重连...","terminal.noWorktree":"无工作区","terminal.noWorktreeDesc":"请先运行任务以启动终端","terminal.execute":"执行","terminal.executing":"执行中...","terminal.noPrompt":"请输入执行提示词","terminal.stopExecution":"停止执行","terminal.stopHint":"停止前建议在终端中让 AI 生成 commit","terminal.promptPlaceholder":"输入任务提示词...","terminal.launch":"启动终端","terminal.readyToLaunch":"点击启动终端开始执行任务","execution.success":"成功","execution.failed":"失败","execution.running":"运行中","execution.viewDetails":"查看详情","execution.noSummary":"暂无摘要","execution.commits":"次提交","execution.files":"个文件","execution.terminalOutput":"终端输出","execution.history":"执行历史","execution.gitLog":"Git 提交记录","execution.loading":"加载中...","execution.noHistory":"暂无执行记录","execution.resume":"恢复会话","execution.tryRecover":"尝试继续","execution.details":"详情","execution.collapse":"收起","execution.insight":"归纳","missions.navLabel":"任务控制台","missions.pageTitle":"任务控制台","missions.launchTask":"启动任务","missions.emptyTitle":"无运行中的任务","missions.emptyDesc":"点击「启动任务」开始执行","missions.gridPreset":"布局","missions.stopTask":"停止任务","missions.openFullView":"查看详情","missions.runningTime":"运行","missions.statusCompleted":"已完成","missions.statusStopped":"已停止","missions.statusRunning":"运行中","missions.dragHandle":"拖拽排序","missions.openInTerminal":"在终端打开","missions.launcher.title":"启动任务","missions.launcher.workspace":"工作空间","missions.launcher.project":"项目","missions.launcher.task":"任务","missions.launcher.selectWorkspace":"选择工作空间","missions.launcher.selectProject":"选择项目","missions.launcher.selectTask":"选择任务","missions.launcher.launch":"启动","missions.launcher.cancel":"取消","missions.launcher.noTasks":"暂无可执行任务","missions.error.launchFailed":"启动任务失败","missions.error.stopFailed":"停止任务失败","missions.filterAll":"全部工作区","missions.alreadyMonitored":"已在监控","missions.showMoreTasks":"选择其他任务...","missions.pickerTitle":"选择要启动的任务","missions.pickerFooter":"点击 Launch 启动执行","missions.noAvailableTasks":"暂无可用任务","missions.continueSession":"继续上次会话","missions.continueLabel":"继续","missions.launchNew":"启动新终端","missions.launchNewLabel":"新建","missions.fullPickerTitle":"选择任务","missions.fullPickerHint":"选择工作区和项目查看任务","missions.gridCustom":"自定义","missions.gridCols":"列","missions.gridRows":"行","settings.config.missions.title":"任务控制台布局","settings.config.missions.desc":"自定义网格布局的列数和行数范围","settings.config.missions.minCols":"最小列数","settings.config.missions.maxCols":"最大列数","settings.config.missions.minRows":"最小行数","settings.config.missions.maxRows":"最大行数","settings.config.hooks.title":"Hooks 配置","settings.config.hooks.desc":"管理 Claude Code 的 PostToolUse 钩子","settings.config.hooks.autoUploadTypes":"自动上传文件类型","settings.config.hooks.autoUploadTypesHint":"逗号分隔的文件扩展名","settings.config.hooks.install":"安装 Hook","settings.config.hooks.uninstall":"卸载 Hook","settings.config.hooks.installed":"Hook 已安装","settings.config.hooks.notInstalled":"Hook 未安装","settings.config.hooks.installHint":"安装后,Claude Code 写入匹配类型的文件时会自动上传为任务资产","assistant.title":"Tower 助手","assistant.iconLabel":"助手","assistant.starting":"启动中...","assistant.errorTitle":"会话启动失败","assistant.errorBody":"启动失败,请重试","assistant.loading":"加载中...","assistant.emptyTitle":"我能帮你做什么?","assistant.emptyBody":"输入消息以开始","assistant.copy":"复制","assistant.suggestion.createProject":"创建一个新项目","assistant.suggestion.createTask":"创建一个任务","assistant.suggestion.checkProgress":"查看任务进度","assistant.suggestion.dailySummary":"查看今日工作总结","assistant.inputPlaceholder":"输入消息,Enter 发送,Shift+Enter 换行","assistant.sendLabel":"发送消息","assistant.cancelLabel":"取消发送","assistant.thinking":"思考中","assistant.toolLabel":"工具","assistant.parseError":"解析错误","assistant.parseErrorBody":"无法解析助手输出内容","assistant.closeLabel":"关闭助手","assistant.expandTool":"展开工具调用详情","assistant.previewImage":"预览图片","assistant.removeImage":"移除图片","assistant.brokenImage":"图片不可用","assistant.imageCount":"张图片","assistant.uploadFailed":"上传失败","assistant.uploadFailedRemoveHint":"上传失败 — 点击 x 移除","assistant.closePreview":"关闭预览","assistant.inputPlaceholderWithImages":"输入消息或粘贴图片...","settings.assistant.title":"助手","settings.assistant.desc":"配置助手行为","settings.assistant.communicationMode":"通信模式","settings.assistant.communicationModeDesc":"选择与助手交互的方式","settings.assistant.modeTerminal":"终端模式","settings.assistant.modeChat":"聊天模式","assistant.newSession":"新会话","assistant.sessionList":"会话列表","assistant.deleteSession":"删除","assistant.noSessions":"暂无历史会话","project.migrate":"迁移到规范路径","project.migrateHint":"将项目文件夹移动到 Git 路径规则推导的位置","project.targetPath":"目标路径","project.migrating":"迁移中...","project.migrateSuccess":"项目已迁移到规范路径","project.migrateError":"迁移失败","project.samePathInfo":"路径已是规范路径","project.migrateSafetyWarning":"迁移前请确保没有运行中的任务","project.worktreeWarning":"该项目有活跃的 Git Worktree,迁移将被阻止","project.genDesc":"生成描述","project.analyzing":"分析中...","project.analyzeError":"分析失败,请重试","project.genDescDisabledTooltip":"请先选择路径","project.genDescNoPath":"请先输入地址","project.genDescNotCloned":"请先 clone 项目","project.genDescReady":"基于本地代码生成项目描述","project.deleteTitle":"删除项目","project.deleteWarning":"确定要删除「{name}」吗?","project.deleteIrreversible":"此操作无法撤销,所有任务和数据将被永久删除。","project.deleteConfirmLabel":"请输入「确认删除」以确认","project.deleteConfirmPlaceholder":"确认删除","project.deleteConfirmText":"确认删除","project.deleteButton":"删除项目","project.deleteSuccess":"项目已删除","project.deleteFailed":"删除失败,请重试","taskDrawer.title":"任务概览","taskDrawer.description":"描述","taskDrawer.labels":"标签","taskDrawer.createdAt":"创建时间","taskDrawer.resources":"关联资源","taskDrawer.lastExecution":"最近执行","taskDrawer.noDescription":"暂无描述","taskDrawer.noExecution":"暂无执行记录","codeSearch.patternPlaceholder":"搜索代码(支持正则)","codeSearch.globPlaceholder":"文件过滤,如 *.ts","codeSearch.noPath":"请先配置项目本地路径","codeSearch.searching":"搜索中...","codeSearch.noResults":"无匹配结果","codeSearch.truncated":"仅显示前 200 条结果","codeSearch.hint":"输入关键词后按 Enter 搜索","codeSearch.rgNotInstalled":"未找到 ripgrep (rg),请安装: brew install ripgrep","settings.notifications.title":"通知","settings.notifications.desc":"任务完成提醒","settings.notifications.navDesc":"桌面通知和 Toast 提醒","settings.notifications.enable":"任务完成通知","settings.notifications.enableDesc":"任务执行完成时显示桌面通知或 Toast 提醒","notification.permissionPrompt":"允许 Tower 在任务完成时发送桌面通知","notification.allow":"允许","notification.dismiss":"忽略","notification.taskCompleted":"任务已完成","notification.taskFailed":"任务失败","onboarding.title":"欢迎使用 Tower","onboarding.step1.title":"设置用户名","onboarding.step1.desc":"请输入您的用户名,AI 助手将使用此名称称呼您","onboarding.step1.usernamePlaceholder":"输入用户名","onboarding.step1.usernameLabel":"用户名","onboarding.step1.next":"下一步","onboarding.step2.title":"AI 连接测试","onboarding.step2.desc":"测试与 AI 适配器的连接,确保任务可以正常调度执行","onboarding.cliRequired":"需要安装并配置 Claude CLI 才能继续,请参考文档完成安装","onboarding.complete":"完成设置","onboarding.skip":"跳过","onboarding.back":"上一步","onboarding.step3.title":"配置 Git 路径规则","onboarding.step3.desc":"配置 Git 仓库地址与本地路径的映射规则,创建 Git 项目时将自动生成本地路径","onboarding.step3.addFirst":"添加第一条规则","onboarding.step3.noRules":"还没有配置规则,创建 Git 项目时需要手动填写本地路径","onboarding.step3.hostLabel":"Git 主机","onboarding.step3.hostPlaceholder":"例如 github.com","onboarding.step3.ownerLabel":"Owner 匹配","onboarding.step3.ownerPlaceholder":"* 匹配所有,或填具体用户名","onboarding.step3.pathLabel":"本地基础路径","onboarding.step3.pathPlaceholder":"例如 /Users/you/project","onboarding.step3.pathHint":"支持变量:{path}=完整路径,{owner}=第一段,{repo}=仓库名。不含变量时自动追加仓库名","onboarding.step3.pathHintRepo":"仓库名会自动追加到路径末尾","onboarding.step3.pathHintFull":"开启后保留完整子组路径(适合 GitLab 多级分组)","onboarding.step3.added":"已添加 {count} 条规则","onboarding.step3.exampleTitle":"配置示例","onboarding.step3.exampleCase1":"规则:主机 github.com,路径 ~/project → 结果 ~/project/my-app","onboarding.step3.exampleCase2":"规则:主机 gitlab.com,路径 ~/company/{path} → 结果 ~/company/team/group/my-app","onboarding.step3.exampleDesc":"创建项目输入 Git 地址时,系统自动匹配规则填充本地路径。使用 {path} 可保留完整子组路径","onboarding.step3.previewLabel":"测试预览","onboarding.step3.previewPlaceholder":"粘贴一个 Git 地址试试效果","onboarding.step3.previewNoMatch":"无法解析此地址","onboarding.stepIndicator":"步骤 {current}/{total}","onboarding.welcomeCta":"创建您的第一个工作区开始使用","onboarding.createWorkspace":"创建工作区","onboarding.defaultWorkspaceName":"我的工作区","tour.step1.title":"创建工作区","tour.step1.desc":"工作区是最顶层的组织单元。点击这里创建您的第一个工作区。","tour.step2.title":"创建项目","tour.step2.desc":"项目属于工作区。点击这里创建或导入一个项目,关联您的代码仓库。","tour.step3.title":"打开 AI 助手","tour.step3.desc":"AI 助手可以帮您管理任务和项目。点击这里随时与助手对话。","tour.skip":"跳过引导","tour.next":"下一步","tour.done":"完成","aiConfig.title":"AI 能力配置","aiConfig.description":"为每个 AI 功能场景独立配置 Provider 和模型","aiConfig.terminal":"终端执行","aiConfig.summary":"会话总结","aiConfig.dreaming":"知识沉淀","aiConfig.analysis":"项目分析","aiConfig.assistant":"助手聊天","aiConfig.provider":"Provider","aiConfig.mode":"模式","aiConfig.model":"模型","aiConfig.cli":"CLI(订阅)","aiConfig.api":"API(按量)","aiConfig.default":"默认","aiConfig.notConfigured":"未配置","aiConfig.cliNotFound":"CLI 未安装","aiConfig.apiKeyMissing":"API Key 未配置","aiConfig.saved":"已保存"},en:{"sidebar.workspace":"Workspaces","sidebar.newWorkspace":"New Workspace","sidebar.collapse":"Collapse Sidebar","sidebar.expand":"Expand Sidebar","sidebar.rename":"Rename","sidebar.delete":"Delete","sidebar.archive":"Archive","sidebar.manageLabels":"Manage Labels","sidebar.deleteConfirm":'Delete workspace "{name}"? All projects and tasks will be deleted.',"sidebar.lastWorkspaceError":"At least one workspace must be kept","sidebar.settings":"Settings","workspace.create":"New Workspace","workspace.edit":"Edit Workspace","workspace.name":"Name","workspace.namePlaceholder":"Enter workspace name","workspace.icon":"Icon","common.cancel":"Cancel","common.create":"Create","common.save":"Save","common.delete":"Delete","common.add":"Add","common.edit":"Edit","common.search":"Search","topbar.newProject":"New Project","topbar.importProject":"Import Project","topbar.searchPlaceholder":"Search tasks, projects, repos, notes, assets...","project.name":"Project Name","project.alias":"Alias","project.description":"Description","project.gitUrl":"Git Repository URL","project.gitUrlHint":"Optional, local path will be auto-inferred","project.namePlaceholder":"Enter project name","project.aliasPlaceholder":"Optional, e.g. Frontend Refactor","project.descPlaceholder":"Optional, project description","project.gitPlaceholder":"https://github.com/user/repo or git@github.com:user/repo.git","project.localPath":"Local Path","project.localPathPlaceholder":"/Users/you/projects/my-app","project.localPathHint":"Local folder path, auto-filled from Git URL","project.tildeWarning":"Use absolute path — ~ alias is not supported","project.importHint":"Select an existing local project folder","project.autoDetected":"Git remote auto-detected","project.edit":"Edit Project","git.clone":"Clone","git.cloning":"Cloning...","git.cloned":"Cloned","git.cloneSuccess":"Repository cloned successfully","board.kanban":"Task Board","board.overview":"Overview","board.running":"Running","board.tip":"Tips","board.newTask":"New Task","board.allFilter":"All","board.searchPlaceholder":"Search tasks...","board.inProgressFilter":"In Progress","board.inReviewFilter":"In Review","board.contextMenu.changeStatus":"Change Status","board.contextMenu.launch":"Launch Task","board.contextMenu.goToDetail":"Go to Detail","board.pin":"Pin to Top","board.unpin":"Unpin","board.viewAll":"View All","board.noTasks":"No tasks","task.create":"New Task","task.edit":"Edit Task","task.title":"Task Title","task.titlePlaceholder":"Enter task title","task.description":"Description","task.descPlaceholder":"Enter description (Markdown supported)","task.priority":"Priority","task.labels":"Labels","task.priorityLow":"Low","task.priorityMedium":"Med","task.priorityHigh":"High","task.priorityCritical":"Urgent","task.baseBranch":"Base Branch","task.branchLoading":"Loading branches...","task.branchNone":"No branches found","task.branchSearch":"Search branches...","task.branchDirect":"No branch isolation (work directly in main repo)","task.worktreeLabel":"Branch Isolation","task.worktreeYes":"On","task.worktreeNo":"Off","task.subPath":"Sub Path","task.subPathPlaceholder":"e.g., web, packages/api","task.subPathHint":"Mono-repo subdirectory, task executes in this directory","taskDetail.title":"Task Chat","taskDetail.back":"Back to list","taskDetail.hasConversation":"Has chat","taskDetail.updatedAt":"Updated","taskDetail.directMode":"Direct Mode","taskDetail.send":"Send","taskDetail.sending":"Sending...","taskDetail.inputPlaceholder":"Enter command...","taskDetail.emptyState":"Start a conversation to execute the task","taskDetail.emptyHint":"Press Enter to send","taskDetail.sendFailed":"Send failed, please retry","taskDetail.executionFailed":"Execution failed","taskDetail.executionFailedRetry":"Execution failed, please retry","taskDetail.panelDescription":"Task execution conversation","taskDetail.filesChanged":"files changed","search.placeholder":"Search tasks, projects, repos, notes, assets...","search.task":"Tasks","search.project":"Projects","search.repository":"Repos","search.all":"All","search.note":"Notes","search.asset":"Assets","search.noResults":"No results found","search.typeToSearch":"Type to start searching","search.results":"Search Results","sidebar.right.projectInfo":"Project Info","sidebar.right.repo":"Repository","sidebar.right.addRepo":"Add Repository","sidebar.right.noRepo":"No linked repositories","sidebar.right.addRepoHint":"Add a repository below","sidebar.right.browseRepo":"Browse local repos","sidebar.right.createRepo":"Create new repo","sidebar.right.recent":"Recent","sidebar.right.other":"Other","sidebar.right.browseWip":"Browse repos - coming soon","sidebar.right.createWip":"Create repo - coming soon","sidebar.right.linkWip":"Link repo - coming soon","sidebar.right.normalType":"Normal","sidebar.right.gitType":"Git Project","sidebar.right.edit":"Edit Project","sidebar.right.name":"Project Name","sidebar.right.aliasLabel":"Alias","sidebar.right.descLabel":"Description","sidebar.right.save":"Save","sidebar.right.cancel":"Cancel","sidebar.right.namePlaceholder":"Enter project name","sidebar.right.aliasPlaceholder":"Optional alias","sidebar.right.descPlaceholder":"Project description","label.manage":"Manage Labels","label.name":"Label name","label.color":"Color","label.builtin":"Built-in","label.add":"Add Label","label.noLabels":"No labels","settings.title":"Settings","settings.language":"Language","settings.languageDesc":"Switch interface language","settings.general":"General","settings.generalDesc":"Appearance and language preferences","settings.theme":"Theme","settings.themeDesc":"Choose interface theme","settings.themeLight":"Light","settings.themeDark":"Dark","settings.themeSystem":"System","settings.prompts":"Prompts","settings.promptsDesc":"Manage AI prompt templates","settings.prompts.title":"Prompt Management","settings.prompts.newPrompt":"New Prompt","settings.prompts.editPrompt":"Edit Prompt","settings.prompts.promptName":"Name","settings.prompts.promptNamePlaceholder":"Enter prompt name","settings.prompts.promptDescription":"Description","settings.prompts.promptDescriptionPlaceholder":"Optional, brief description","settings.prompts.promptContent":"Content","settings.prompts.promptContentPlaceholder":"Enter prompt content...","settings.prompts.deleteConfirmTitle":"Confirm Delete","settings.prompts.deleteConfirmMessage":"This cannot be undone.","settings.prompts.setDefault":"Set as Default","settings.prompts.default":"Default","settings.prompts.empty":"No prompts yet","settings.prompts.emptyHint":"Click the button above to create your first prompt","settings.prompts.save":"Save","settings.prompts.cancel":"Cancel","settings.prompts.delete":"Delete","settings.aiTools.title":"AI Tools","settings.aiTools.cliVerification":"CLI Verification","settings.aiTools.cliVerificationDesc":"Verify AI CLI tools are correctly installed","settings.aiTools.testConnection":"Test Connection","settings.aiTools.testing":"Testing...","settings.aiTools.testPassed":"All checks passed","settings.aiTools.testFailed":"Some checks failed","settings.config":"Config","settings.configDesc":"System configuration parameters","settings.config.empty":"No configurable parameters yet — coming in next phases","settings.config.git.title":"Git Path Mapping Rules","settings.config.git.desc":"Define Git URL to local path mapping rules for auto-populating localPath on project creation","settings.config.git.host":"Host","settings.config.git.hostPlaceholder":"github.com","settings.config.git.ownerMatch":"Owner Match","settings.config.git.ownerMatchPlaceholder":"* (match all)","settings.config.git.localPathTemplate":"Local Base Path","settings.config.git.localPathTemplatePlaceholder":"/Users/you/project","settings.config.git.priority":"Priority","settings.config.git.priorityHint":"Lower number = higher priority","settings.config.git.addRule":"Add Rule","settings.config.git.noRules":"No mapping rules yet — click Add Rule to create one","settings.config.git.deleteConfirm":"Delete this rule?","settings.config.git.deleteConfirmMessage":"This cannot be undone.","settings.config.git.save":"Save","settings.config.git.cancel":"Cancel","settings.config.git.edit":"Edit","settings.config.git.delete":"Delete","settings.config.git.actions":"Actions","settings.config.git.templateHint":"Supports {owner} and {repo} variables","settings.config.git.validationRequired":"Host and local path template are required","settings.config.system.title":"System Parameters","settings.config.system.desc":"Upload limits and concurrency control","settings.config.system.maxUpload":"Max Upload File Size","settings.config.system.maxUploadHint":"Maximum allowed size for a single file upload","settings.config.system.maxConcurrent":"Max Concurrent Executions","settings.config.system.maxConcurrentHint":"Maximum number of AI tasks running simultaneously","settings.config.system.saved":"System parameters saved","settings.config.gitParams.title":"Git Parameters","settings.config.gitParams.desc":"Git operation timeout","settings.config.gitParams.timeout":"Git Operation Timeout","settings.config.gitParams.timeoutHint":"Timeout for clone/status and other operations","settings.config.gitParams.saved":"Git parameters saved","settings.config.search.title":"Search Parameters","settings.config.search.desc":"Search result count, debounce delay, and snippet length","settings.config.search.resultLimit":"Search Result Limit","settings.config.search.resultLimitHint":"Maximum results returned per search category","settings.config.search.allModeCap":"All-Mode Per-Type Cap","settings.config.search.allModeCapHint":"Maximum results per category in All search mode","settings.config.search.debounceMs":"Search Debounce Delay","settings.config.search.debounceMsHint":"Wait time after typing stops before executing search","settings.config.search.snippetLength":"Snippet Length","settings.config.search.snippetLengthHint":"Maximum characters for search result preview text","settings.config.search.saved":"Search parameters saved","workspace.selectHint":"Select a workspace","workspace.selectDesc":"Choose a workspace from the sidebar","workspace.createError":"Failed to create workspace, please try again","board.noProject":'No projects yet. Click "New Project" to create one.',"board.tipText":"Reuse existing drag, detail, and task creation pipeline","board.tipDesc":"Align workspace entry with prototype first, then add Settings, Skills, Plugins.","folder.selectFolder":"Select Folder","folder.selectGitRepo":"Select Git Repository","folder.hint":"Click folder name to navigate · Use buttons to select","folder.manualInput":"Enter path manually:","folder.goTo":"Go","folder.searchDir":"Search current directory:","folder.selectCurrent":"Select Current","folder.selectPath":"Select Path","folder.empty":"No folders in this directory","folder.browse":"Browse","git.section":"Git","git.currentBranch":"Current Branch","git.switchBranch":"Switch Branch","git.localBranches":"Local","git.remoteBranches":"Remote","git.modified":"Modified","git.staged":"Staged","git.untracked":"Untracked","git.notInitialized":"Git is not initialized for this project","git.initRepo":"Initialize Git Repository","git.initSuccess":"Git repository initialized","git.initFailed":"Initialization failed","git.switchSuccess":"Switched to branch","git.switchFailed":"Branch switch failed","git.noLocalPath":"Set project local path first","git.loading":"Loading...","git.createBranch":"Create Branch","git.branchName":"Branch Name","git.branchNamePlaceholder":"feature/my-feature","git.baseBranch":"Base Branch","git.branchDesc":"Description","git.branchDescPlaceholder":"Optional, describe this branch","git.createSuccess":"Branch created successfully","git.createFailed":"Failed to create branch","git.fetchSuccess":"Remote branches updated","git.fetchFailed":"Failed to fetch remote branches","git.changes":"Changes","git.stagedChanges":"Staged","git.unstagedChanges":"Unstaged","git.stageAll":"Stage All","git.unstageAll":"Unstage All","git.commit":"Commit","git.commitSuccess":"Committed successfully","git.commitMsgPlaceholder":"Commit message (⌘+Enter to commit)","git.pull":"Pull","git.pullSuccess":"Pulled successfully","git.push":"Push","git.pushSuccess":"Pushed successfully","git.commitLog":"Commit Log","git.stash":"Stash","git.stashMsgPlaceholder":"Stash message (optional)","git.stashSaved":"Changes stashed","git.stashApply":"Apply","git.stashApplied":"Stash applied","git.stashDrop":"Drop","git.stashDropped":"Stash dropped","git.noChanges":"Working tree clean","git.sync":"Sync","git.pullFrom":"Pull from","git.pushTo":"Push to","git.fetchAll":"Fetch All Remotes","git.stashSave":"Stash Changes","git.stashPopLatest":"Pop Latest Stash","git.discardAll":"Discard All Changes","git.discardSuccess":"All changes discarded","git.tabLabel":"Git","git.openStudio":"Open Studio","git.openStudioFailed":"Failed to open studio","archive.title":"Archived Tasks","archive.backToBoard":"Back to Board","archive.noTasks":"No archived tasks","archive.noTasksDesc":"Completed or cancelled tasks older than today will appear here","archive.completedAt":"Completed","archive.cancelledAt":"Cancelled","archive.createdAt":"Created","archive.lastExecution":"Last execution","archive.status.done":"Done","archive.status.cancelled":"Cancelled","archive.tasksCount":"archived","sidebar.notes":"Notes","sidebar.assets":"Assets","notes.title":"Notes","notes.newNote":"New Note","notes.allCategories":"All","notes.category.account":"Account","notes.category.env":"Environment","notes.category.requirements":"Requirements","notes.category.memo":"Memo","notes.edit":"Edit","notes.delete":"Delete","notes.save":"Save","notes.cancel":"Cancel","notes.titlePlaceholder":"Note title","notes.contentPlaceholder":"Note content (Markdown supported)","notes.categoryLabel":"Category","notes.empty":"No notes yet","notes.emptyHint":'Click "New Note" to create your first note',"notes.deleteConfirm":'Delete note "{title}"?',"notes.noProject":"No projects in this workspace","notes.noProjectHint":"Create a project first","notes.backToBoard":"Back to Board","notes.loading":"Loading...","notes.workspace":"Workspace","notes.project":"Project","assets.title":"Assets","assets.upload":"Upload File","assets.empty":"No assets yet","assets.emptyHint":"Upload files as project assets","assets.filename":"Filename","assets.size":"Size","assets.uploadedAt":"Uploaded At","assets.preview":"Preview","assets.download":"Download","assets.delete":"Delete","assets.deleteConfirm":'Delete asset "{filename}"?',"assets.noProject":"No projects in this workspace","assets.noProjectHint":"Create a project first","assets.uploading":"Uploading...","assets.backToBoard":"Back to Board","assets.loading":"Loading...","assets.uploadTitle":"Upload Asset","assets.workspace":"Workspace","assets.project":"Project","assets.file":"File","assets.selectFile":"Click to select file...","assets.description":"Description","assets.descriptionPlaceholder":"Enter asset description (searchable)","assets.revealInFinder":"Reveal in Finder","assets.previewNotSupported":"Preview not supported for this file type","assets.loadingPreview":"Loading...","assets.previewError":"Failed to load preview","assets.fileTooLarge":"File too large to preview (over 1MB)","taskPage.title":"Task Details","taskPage.back":"Back","taskPage.backToBoard":"Back to Board","taskPage.conversation":"Conversation","taskPage.changes":"Changes","taskPage.notes":"Notes","taskPage.addNote":"Add Note","taskPage.noteTitle":"Title","taskPage.noteContent":"Content","taskPage.uploadFile":"Upload File","taskPage.attachments":"Attachments","taskPage.noNotes":"No notes yet","taskPage.noAttachments":"No attachments yet","taskPage.deleteNote":"Delete","taskPage.deleteAttachment":"Delete","taskPage.noteSaved":"Note saved","taskPage.viewDetails":"View Details","taskPage.noChanges":"No changes to display","taskPage.branchDeleted":"Task branch has been deleted, cannot view changes","taskPage.startExecution":"Start an execution to see changes","taskPage.loadingDiff":"Loading changes...","taskPage.noDiff":"No changes (project needs local path and base branch configured)","taskPage.tabFiles":"Files","taskPage.tabPreview":"Preview","taskPage.tabSearch":"Search","taskPage.tabFileTree":"Files","taskPage.completeTask":"Complete Task","taskPage.taskCompleted":"Task completed","taskPage.uncommittedChanges":"Worktree has {count} uncommitted file(s). Please click Commit button first","taskPage.noChangesToComplete":"No changes to complete — nothing was committed","taskPage.loadDiffFailed":"Failed to load changes","taskPage.fileTree.newFile":"New File","taskPage.fileTree.newFolder":"New Folder","taskPage.fileTree.rename":"Rename","taskPage.fileTree.delete":"Delete","taskPage.fileTree.revealInFinder":"Reveal in Finder","taskPage.fileTree.emptyHeading":"File tree unavailable","taskPage.fileTree.emptyBody":"Start task execution to view the worktree directory","taskPage.fileTree.emptyDir":"Empty directory","taskPage.fileTree.loadError":"Failed to load files. Try again.","taskPage.fileTree.renamePlaceholder":"Enter new name","taskPage.fileTree.newFilePlaceholder":"File name","taskPage.fileTree.newFolderPlaceholder":"Folder name","taskPage.fileTree.deleteConfirmHeading":"Confirm delete","taskPage.fileTree.deleteConfirmBody":'Delete "{name}"? This cannot be undone.',"taskPage.fileTree.deleteConfirmBodyFolder":'"{name}" and all its contents will be deleted.',"taskPage.fileTree.deleteConfirmAction":"Delete","taskPage.fileTree.searchPlaceholder":"Search files…","taskPage.fileTree.searchNoResults":"No matching files","editor.selectFile":"Select a file to open","editor.selectFileHint":"Click any file in the file tree on the left","editor.saveSuccess":"File saved","editor.saveError":"Save failed, please try again","editor.closeTab":"Close tab","editor.noWorktree":"No worktree — run the task first","diff.filesChanged":"{count} files changed","diff.additions":"+{count}","diff.deletions":"-{count}","diff.binary":"Binary","diff.truncated":"Diff truncated (too large)","diff.conflictWarning":"Merge blocked: conflicts detected","diff.conflictFiles":"{count} conflicting files","diff.commitChanges":"Commit Changes","diff.commitMessagePlaceholder":"First line is the title, blank line then description\n\ne.g.:\nfeat: add user authentication\n\nImplement JWT token verification and refresh","diff.commit":"Commit","diff.noChanges":"No changes detected","diff.commitSuccess":"Committed ({hash})","merge.button":"Merge","merge.confirmTitle":"Confirm Squash Merge","merge.targetBranch":"Target branch","merge.changedFiles":"Changed files","merge.commitsToSquash":"Commits to squash","merge.commitMessage":"Commit message","merge.confirm":"Confirm Merge","merge.cancel":"Cancel","merge.merging":"Merging...","merge.success":"Merge completed successfully","merge.conflictError":"Cannot merge: conflicts detected","merge.failed":"Merge failed","project.type.label":"Project Type","project.type.frontend":"Frontend","project.type.backend":"Backend","project.previewCommand":"Preview Start Command","project.previewCommandPlaceholder":"e.g. pnpm dev","project.previewCommandDesc":"Command to start your local dev server","preview.run":"Run","preview.stop":"Stop","preview.openTerminal":"Open in Terminal","preview.refresh":"Refresh Preview","preview.addressPlaceholder":"Enter local URL, press Enter to load","preview.noWorktree":"Preview Unavailable","preview.noWorktreeDesc":"Run a task to preview your frontend here","preview.statusStopped":"Stopped","preview.statusStarting":"Starting...","preview.statusRunning":"Running","preview.statusError":"Failed","preview.errorDesc":"Failed to start preview server. Check your start command.","preview.terminalError":"Cannot open terminal. Check terminal settings.","preview.port":"Port","settings.shell.label":"Default Shell","settings.shell.desc":"Shell for PTY terminal and AI CLI testing — uses your system shell with its aliases, plugins, etc.","settings.shell.winHint":"Claude Code requires Git Bash on Windows — select Git Bash as default","settings.terminal.label":"Terminal App","settings.terminal.desc":'GUI terminal app for "Open in Terminal"',"settings.terminal.placeholder":"Terminal","settings.terminal.idleTimeout":"Idle Timeout (seconds)","settings.terminal.idleTimeoutDesc":"How long before idle detection triggers after no terminal output (minimum 180s)","settings.cliProfile.title":"CLI Profile","settings.cliProfile.desc":"Configure AI CLI tool execution parameters","settings.cliProfile.navDesc":"CLI execution parameters","settings.cliProfile.command":"Command","settings.cliProfile.commandHint":"CLI executable name or path","settings.cliProfile.commandPlaceholder":"claude","settings.cliProfile.baseArgs":"Base Arguments","settings.cliProfile.baseArgsHint":"Arguments appended to every execution, one per line","settings.cliProfile.baseArgsPlaceholder":"--dangerously-skip-permissions","settings.cliProfile.envVars":"Environment Variables","settings.cliProfile.envVarsHint":"Environment variables injected into CLI process, format: KEY=VALUE, one per line","settings.cliProfile.envVarsPlaceholder":"MY_VAR=value","settings.cliProfile.saved":"CLI profile saved","settings.cliProfile.saveError":"Save failed","settings.cliProfile.invalidJson":"Invalid parameter format","settings.cliProfile.noProfile":"No default CLI profile found — run seed","terminal.connecting":"Connecting...","terminal.connected":"Connected","terminal.disconnected":"Disconnected","terminal.reconnecting":"Reconnecting...","terminal.noWorktree":"No Worktree","terminal.noWorktreeDesc":"Run the task first to start the terminal","terminal.execute":"Execute","terminal.executing":"Executing...","terminal.noPrompt":"Enter a prompt to execute","terminal.stopExecution":"Stop","terminal.stopHint":"Consider asking AI to commit before stopping","terminal.promptPlaceholder":"Enter task prompt...","terminal.launch":"Launch Terminal","terminal.readyToLaunch":"Click to launch terminal and start task execution","execution.success":"Success","execution.failed":"Failed","execution.running":"Running","execution.viewDetails":"Details","execution.noSummary":"No summary","execution.commits":"commits","execution.files":"files","execution.terminalOutput":"Terminal Output","execution.history":"Execution History","execution.gitLog":"Git Log","execution.loading":"Loading...","execution.noHistory":"No execution history","execution.resume":"Resume","execution.tryRecover":"Try Continue","execution.details":"Details","execution.collapse":"Collapse","execution.insight":"Insight","missions.navLabel":"Missions","missions.pageTitle":"Mission Control","missions.launchTask":"Launch Task","missions.emptyTitle":"No running tasks","missions.emptyDesc":'Click "Launch Task" to start an execution',"missions.gridPreset":"Layout","missions.stopTask":"Stop Task","missions.openFullView":"Open full view","missions.runningTime":"Running","missions.statusCompleted":"Completed","missions.statusStopped":"Stopped","missions.statusRunning":"Running","missions.dragHandle":"Drag to reorder","missions.openInTerminal":"Open in Terminal","missions.launcher.title":"Launch Task","missions.launcher.workspace":"Workspace","missions.launcher.project":"Project","missions.launcher.task":"Task","missions.launcher.selectWorkspace":"Select workspace","missions.launcher.selectProject":"Select project","missions.launcher.selectTask":"Select task","missions.launcher.launch":"Launch","missions.launcher.cancel":"Cancel","missions.launcher.noTasks":"No executable tasks","missions.error.launchFailed":"Failed to launch task","missions.error.stopFailed":"Failed to stop task","missions.filterAll":"All Workspaces","missions.alreadyMonitored":"Already monitored","missions.showMoreTasks":"Show more tasks...","missions.pickerTitle":"Select a task to launch","missions.pickerFooter":"Click Launch to start execution","missions.noAvailableTasks":"No available tasks","missions.continueSession":"Continue last session","missions.continueLabel":"Continue","missions.launchNew":"Start new terminal","missions.launchNewLabel":"New","missions.fullPickerTitle":"Select Task","missions.fullPickerHint":"Select a workspace and project to see tasks","missions.gridCustom":"Custom","missions.gridCols":"Cols","missions.gridRows":"Rows","settings.config.missions.title":"Mission Control Layout","settings.config.missions.desc":"Configure min/max range for custom grid columns and rows","settings.config.missions.minCols":"Min Columns","settings.config.missions.maxCols":"Max Columns","settings.config.missions.minRows":"Min Rows","settings.config.missions.maxRows":"Max Rows","settings.config.hooks.title":"Hook Configuration","settings.config.hooks.desc":"Manage Claude Code PostToolUse hooks","settings.config.hooks.autoUploadTypes":"Auto-upload File Types","settings.config.hooks.autoUploadTypesHint":"Comma-separated file extensions","settings.config.hooks.install":"Install Hook","settings.config.hooks.uninstall":"Uninstall Hook","settings.config.hooks.installed":"Hook installed","settings.config.hooks.notInstalled":"Hook not installed","settings.config.hooks.installHint":"Once installed, files matching the configured types written by Claude Code will be auto-uploaded as task assets","assistant.title":"Tower Assistant","assistant.iconLabel":"Assistant","assistant.starting":"Starting...","assistant.errorTitle":"Session failed","assistant.errorBody":"Failed to start. Try again.","assistant.loading":"Loading...","assistant.emptyTitle":"What can I help you with?","assistant.emptyBody":"Type a message to start","assistant.copy":"Copy","assistant.suggestion.createProject":"Create a new project","assistant.suggestion.createTask":"Create a task","assistant.suggestion.checkProgress":"Check task progress","assistant.suggestion.dailySummary":"View today's work summary","assistant.inputPlaceholder":"Type a message, Enter to send, Shift+Enter for new line","assistant.sendLabel":"Send message","assistant.cancelLabel":"Cancel","assistant.thinking":"Thinking","assistant.toolLabel":"Tool","assistant.parseError":"Parse error","assistant.parseErrorBody":"Could not parse assistant output","assistant.closeLabel":"Close assistant","assistant.expandTool":"Expand tool call details","assistant.previewImage":"Preview image","assistant.removeImage":"Remove image","assistant.brokenImage":"Image unavailable","assistant.imageCount":"image(s)","assistant.uploadFailed":"Upload failed","assistant.uploadFailedRemoveHint":"Upload failed — click x to remove","assistant.closePreview":"Close preview","assistant.inputPlaceholderWithImages":"Type a message or paste an image...","settings.assistant.title":"Assistant","settings.assistant.desc":"Configure assistant behavior","settings.assistant.communicationMode":"Communication Mode","settings.assistant.communicationModeDesc":"Choose how to interact with the assistant","settings.assistant.modeTerminal":"Terminal","settings.assistant.modeChat":"Chat","assistant.newSession":"New Session","assistant.sessionList":"Sessions","assistant.deleteSession":"Delete","assistant.noSessions":"No previous sessions","project.migrate":"Migrate to canonical path","project.migrateHint":"Move project folder to the location derived from Git path rules","project.targetPath":"Target Path","project.migrating":"Migrating...","project.migrateSuccess":"Project migrated to canonical path","project.migrateError":"Migration failed","project.samePathInfo":"Path is already canonical","project.migrateSafetyWarning":"Ensure no tasks are running before migration","project.worktreeWarning":"This project has active Git worktrees — migration will be blocked","project.genDesc":"Generate Description","project.analyzing":"Analyzing...","project.analyzeError":"Analysis failed, please retry","project.genDescDisabledTooltip":"Please select a path first","project.genDescNoPath":"Please enter an address first","project.genDescNotCloned":"Please clone the project first","project.genDescReady":"Generate description from local code","project.deleteTitle":"Delete Project","project.deleteWarning":'Are you sure you want to delete "{name}"?',"project.deleteIrreversible":"This action cannot be undone. All tasks and data will be permanently deleted.","project.deleteConfirmLabel":'Type "confirm delete" to confirm',"project.deleteConfirmPlaceholder":"confirm delete","project.deleteConfirmText":"confirm delete","project.deleteButton":"Delete Project","project.deleteSuccess":"Project deleted","project.deleteFailed":"Delete failed, please retry","taskDrawer.title":"Task Overview","taskDrawer.description":"Description","taskDrawer.labels":"Labels","taskDrawer.createdAt":"Created","taskDrawer.resources":"Resources","taskDrawer.lastExecution":"Last Execution","taskDrawer.noDescription":"No description","taskDrawer.noExecution":"No execution history","codeSearch.patternPlaceholder":"Search code (regex supported)","codeSearch.globPlaceholder":"File filter, e.g. *.ts","codeSearch.noPath":"Please configure local path first","codeSearch.searching":"Searching...","codeSearch.noResults":"No matches found","codeSearch.truncated":"Showing first 200 results","codeSearch.hint":"Type a keyword and press Enter to search","codeSearch.rgNotInstalled":"ripgrep (rg) not found, please install: brew install ripgrep","settings.notifications.title":"Notifications","settings.notifications.desc":"Task completion alerts","settings.notifications.navDesc":"Desktop and toast alerts","settings.notifications.enable":"Task Completion Notifications","settings.notifications.enableDesc":"Show a desktop notification or toast when a task finishes executing","notification.permissionPrompt":"Allow Tower to send desktop notifications when tasks complete","notification.allow":"Allow","notification.dismiss":"Dismiss","notification.taskCompleted":"Task completed","notification.taskFailed":"Task failed","onboarding.title":"Welcome to Tower","onboarding.step1.title":"Set Your Username","onboarding.step1.desc":"Enter your username — the AI assistant will address you by this name","onboarding.step1.usernamePlaceholder":"Enter username","onboarding.step1.usernameLabel":"Username","onboarding.step1.next":"Next","onboarding.step2.title":"AI Connection Test","onboarding.step2.desc":"Test connectivity with AI adapters to ensure tasks can be dispatched and executed","onboarding.cliRequired":"Claude CLI must be installed and configured to continue. Please refer to the documentation.","onboarding.complete":"Complete Setup","onboarding.skip":"Skip","onboarding.back":"Back","onboarding.step3.title":"Configure Git Path Rules","onboarding.step3.desc":"Set up mapping rules between Git repository URLs and local paths — local paths will be auto-generated when creating Git projects","onboarding.step3.addFirst":"Add First Rule","onboarding.step3.noRules":"No rules configured yet — you'll need to enter local paths manually when creating Git projects","onboarding.step3.hostLabel":"Git Host","onboarding.step3.hostPlaceholder":"e.g. github.com","onboarding.step3.ownerLabel":"Owner Match","onboarding.step3.ownerPlaceholder":"* for all, or specific username","onboarding.step3.pathLabel":"Local Base Path","onboarding.step3.pathPlaceholder":"e.g. /Users/you/project","onboarding.step3.pathHint":"Variables: {path}=full path, {owner}=first segment, {repo}=repo name. Without variables, repo name is auto-appended","onboarding.step3.pathHintRepo":"Repository name is auto-appended to the path","onboarding.step3.pathHintFull":"Preserves full subgroup path (for GitLab nested groups)","onboarding.step3.added":"{count} rule(s) added","onboarding.step3.exampleTitle":"Example","onboarding.step3.exampleCase1":"Rule: host github.com, path ~/project → result ~/project/my-app","onboarding.step3.exampleCase2":"Rule: host gitlab.com, path ~/company/{path} → result ~/company/team/group/my-app","onboarding.step3.exampleDesc":"When creating a project with a Git URL, the local path is auto-filled. Use {path} to preserve full subgroup structure.","onboarding.step3.previewLabel":"Test Preview","onboarding.step3.previewPlaceholder":"Paste a Git URL to preview the result","onboarding.step3.previewNoMatch":"Cannot parse this URL","onboarding.stepIndicator":"Step {current}/{total}","onboarding.welcomeCta":"Create your first workspace to get started","onboarding.createWorkspace":"Create Workspace","onboarding.defaultWorkspaceName":"My Workspace","tour.step1.title":"Create Workspace","tour.step1.desc":"Workspaces are the top-level organizer. Click here to create your first workspace.","tour.step2.title":"Create Project","tour.step2.desc":"Projects belong to workspaces. Click here to create or import a project linked to your code repository.","tour.step3.title":"Open AI Assistant","tour.step3.desc":"The AI assistant helps you manage tasks and projects. Click here to start a conversation anytime.","tour.skip":"Skip tour","tour.next":"Next","tour.done":"Done","aiConfig.title":"AI Capability Config","aiConfig.description":"Configure provider and model for each AI feature independently","aiConfig.terminal":"Terminal Execution","aiConfig.summary":"Session Summary","aiConfig.dreaming":"Knowledge Distillation","aiConfig.analysis":"Project Analysis","aiConfig.assistant":"Assistant Chat","aiConfig.provider":"Provider","aiConfig.mode":"Mode","aiConfig.model":"Model","aiConfig.cli":"CLI (Subscription)","aiConfig.api":"API (Pay-per-use)","aiConfig.default":"Default","aiConfig.notConfigured":"Not configured","aiConfig.cliNotFound":"CLI not installed","aiConfig.apiKeyMissing":"API key not configured","aiConfig.saved":"Saved"}},a=(0,s.createContext)(null);e.s(["I18nProvider",0,function({children:e}){let[o,n]=(0,s.useState)("zh");(0,s.useEffect)(()=>{let e=localStorage.getItem("locale");e&&e!==o&&n(e)},[]);let r=(0,s.useCallback)(e=>{n(e),localStorage.setItem("locale",e)},[]),l=(0,s.useCallback)((e,t)=>{let s=i[o][e]??e;if(t)for(let[e,i]of Object.entries(t))s=s.replace(`{${e}}`,i);return s},[o]);return(0,t.jsx)(a.Provider,{value:{locale:o,setLocale:r,t:l},children:e})},"useI18n",0,function(){let e=(0,s.useContext)(a);if(!e)throw Error("useI18n must be used within I18nProvider");return e}],349369)}]);
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,470511,e=>{"use strict";let t;var r,n,a,s=e.i(430989),i=e.i(641338),l=e.i(347880),o=e.i(583315),u=e.i(259104),c=e.i(924609),d=e.i(258114);let h=(0,d.default)("folder-tree",[["path",{d:"M20 10a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1h-2.5a1 1 0 0 1-.8-.4l-.9-1.2A1 1 0 0 0 15 3h-2a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1Z",key:"hod4my"}],["path",{d:"M20 21a1 1 0 0 0 1-1v-3a1 1 0 0 0-1-1h-2.9a1 1 0 0 1-.88-.55l-.42-.85a1 1 0 0 0-.92-.6H13a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1Z",key:"w4yl2u"}],["path",{d:"M3 5a2 2 0 0 0 2 2h3",key:"f2jnh7"}],["path",{d:"M3 3v13a2 2 0 0 0 2 2h3",key:"k8epm1"}]]);var f=e.i(928951),m=e.i(653157),p=e.i(678978),x=e.i(986633),g=e.i(170528),b=e.i(811163);let v=(0,d.default)("git-pull-request-arrow",[["circle",{cx:"5",cy:"6",r:"3",key:"1qnov2"}],["path",{d:"M5 9v12",key:"ih889a"}],["circle",{cx:"19",cy:"18",r:"3",key:"1qljk2"}],["path",{d:"m15 9-3-3 3-3",key:"1lwv8l"}],["path",{d:"M12 6h5a2 2 0 0 1 2 2v7",key:"1yj91y"}]]);var y=e.i(814329),w=e.i(226549);let j=(0,i.createContext)(null);j.displayName="PanelGroupContext";let k="data-panel-group-direction",C="data-panel-group-id",N="data-resize-handle",S="data-panel-resize-handle-id",E=i.useLayoutEffect,A=i["useId".toString()],D="function"==typeof A?A:()=>null,M=0;function I(e=null){let t=D(),r=(0,i.useRef)(e||t||null);return null===r.current&&(r.current=""+M++),null!=e?e:r.current}function P({children:e,className:t="",collapsedSize:r,collapsible:n,defaultSize:a,forwardedRef:s,id:l,maxSize:o,minSize:u,onCollapse:c,onExpand:d,onResize:h,order:f,style:m,tagName:p="div",...x}){let g=(0,i.useContext)(j);if(null===g)throw Error("Panel components must be rendered within a PanelGroup container");let{collapsePanel:b,expandPanel:v,getPanelSize:y,getPanelStyle:w,groupId:k,isPanelCollapsed:N,reevaluatePanelConstraints:S,registerPanel:A,resizePanel:D,unregisterPanel:M}=g,R=I(l),B=(0,i.useRef)({callbacks:{onCollapse:c,onExpand:d,onResize:h},constraints:{collapsedSize:r,collapsible:n,defaultSize:a,maxSize:o,minSize:u},id:R,idIsFromProps:void 0!==l,order:f});(0,i.useRef)({didLogMissingDefaultSizeWarning:!1}),E(()=>{let{callbacks:e,constraints:t}=B.current,s={...t};B.current.id=R,B.current.idIsFromProps=void 0!==l,B.current.order=f,e.onCollapse=c,e.onExpand=d,e.onResize=h,t.collapsedSize=r,t.collapsible=n,t.defaultSize=a,t.maxSize=o,t.minSize=u,(s.collapsedSize!==t.collapsedSize||s.collapsible!==t.collapsible||s.maxSize!==t.maxSize||s.minSize!==t.minSize)&&S(B.current,s)}),E(()=>{let e=B.current;return A(e),()=>{M(e)}},[f,R,A,M]),(0,i.useImperativeHandle)(s,()=>({collapse:()=>{b(B.current)},expand:e=>{v(B.current,e)},getId:()=>R,getSize:()=>y(B.current),isCollapsed:()=>N(B.current),isExpanded:()=>!N(B.current),resize:e=>{D(B.current,e)}}),[b,v,y,N,R,D]);let F=w(B.current,a);return(0,i.createElement)(p,{...x,children:e,className:t,id:R,style:{...F,...m},[C]:k,"data-panel":"","data-panel-collapsible":n||void 0,"data-panel-id":R,"data-panel-size":parseFloat(""+F.flexGrow).toFixed(1)})}let R=(0,i.forwardRef)((e,t)=>(0,i.createElement)(P,{...e,forwardedRef:t}));P.displayName="Panel",R.displayName="forwardRef(Panel)";let B=null,F=-1,L=null;function z(e,r){var n,a,s;let i=function(e,t){if(t){let e=(t&U)!=0,r=(t&Y)!=0,n=(t&q)!=0,a=(t&J)!=0;if(e)if(n)return"se-resize";else if(a)return"ne-resize";else return"e-resize";if(r)if(n)return"sw-resize";else if(a)return"nw-resize";else return"w-resize";if(n)return"s-resize";else if(a)return"n-resize"}switch(e){case"horizontal":return"ew-resize";case"intersection":return"move";case"vertical":return"ns-resize"}}(e,r);B!==i&&(B=i,null===L&&(L=document.createElement("style"),t&&L.setAttribute("nonce",t),document.head.appendChild(L)),F>=0&&(null==(s=L.sheet)||s.removeRule(F)),F=null!=(n=null==(a=L.sheet)?void 0:a.insertRule(`*{cursor: ${i} !important;}`))?n:-1)}function $(e){return"keydown"===e.type}function T(e){return e.type.startsWith("pointer")}function _(e){return e.type.startsWith("mouse")}function O(e){if(T(e)){if(e.isPrimary)return{x:e.clientX,y:e.clientY}}else if(_(e))return{x:e.clientX,y:e.clientY};return{x:1/0,y:1/0}}let W=/\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\b/;function H(e){let t=e.length;for(;t--;){let r=e[t];if(eh(r,"Missing node"),function(e){var t;let r,n=getComputedStyle(e);return"fixed"===n.position||!!("auto"!==n.zIndex&&("static"!==n.position||"flex"===(r=getComputedStyle(null!=(t=V(e))?t:e).display)||"inline-flex"===r)||1>+n.opacity||"transform"in n&&"none"!==n.transform||"webkitTransform"in n&&"none"!==n.webkitTransform||"mixBlendMode"in n&&"normal"!==n.mixBlendMode||"filter"in n&&"none"!==n.filter||"webkitFilter"in n&&"none"!==n.webkitFilter||"isolation"in n&&"isolate"===n.isolation||W.test(n.willChange))||"touch"===n.webkitOverflowScrolling}(r))return r}return null}function G(e){return e&&Number(getComputedStyle(e).zIndex)||0}function K(e){let t=[];for(;e;)t.push(e),e=V(e);return t}function V(e){let{parentNode:t}=e;return t&&t instanceof ShadowRoot?t.host:t}let U=1,Y=2,q=4,J=8,X="coarse"===function(){if("function"==typeof matchMedia)return matchMedia("(pointer:coarse)").matches?"coarse":"fine"}(),Q=[],Z=!1,ee=new Map,et=new Map,er=new Set;function en(e){let{target:t}=e,{x:r,y:n}=O(e);Z=!0,el({target:t,x:r,y:n}),ec(),Q.length>0&&(ed("down",e),e.preventDefault(),ei(t)||e.stopImmediatePropagation())}function ea(e){let{x:t,y:r}=O(e);if(Z&&0===e.buttons&&(Z=!1,ed("up",e)),!Z){let{target:n}=e;el({target:n,x:t,y:r})}ed("move",e),eo(),Q.length>0&&e.preventDefault()}function es(e){let{target:t}=e,{x:r,y:n}=O(e);et.clear(),Z=!1,Q.length>0&&(e.preventDefault(),ei(t)||e.stopImmediatePropagation()),ed("up",e),el({target:t,x:r,y:n}),eo(),ec()}function ei(e){let t=e;for(;t;){if(t.hasAttribute(N))return!0;t=t.parentElement}return!1}function el({target:e,x:t,y:r}){Q.splice(0);let n=null;(e instanceof HTMLElement||e instanceof SVGElement)&&(n=e),er.forEach(e=>{let{element:a,hitAreaMargins:s}=e,i=a.getBoundingClientRect(),{bottom:l,left:o,right:u,top:c}=i,d=X?s.coarse:s.fine;if(t>=o-d&&t<=u+d&&r>=c-d&&r<=l+d){if(null!==n&&document.contains(n)&&a!==n&&!a.contains(n)&&!n.contains(a)&&function(e,t){let r;if(e===t)throw Error("Cannot compare node with itself");let n={a:K(e),b:K(t)};for(;n.a.at(-1)===n.b.at(-1);)e=n.a.pop(),t=n.b.pop(),r=e;eh(r,"Stacking order can only be calculated for elements with a common ancestor");let a={a:G(H(n.a)),b:G(H(n.b))};if(a.a===a.b){let e=r.childNodes,t={a:n.a.at(-1),b:n.b.at(-1)},a=e.length;for(;a--;){let r=e[a];if(r===t.a)return 1;if(r===t.b)return -1}}return Math.sign(a.a-a.b)}(n,a)>0){let e=n,t=!1;for(;e;){var h;if(e.contains(a))break;if(h=e.getBoundingClientRect(),h.x<i.x+i.width&&h.x+h.width>i.x&&h.y<i.y+i.height&&h.y+h.height>i.y){t=!0;break}e=e.parentElement}if(t)return}Q.push(e)}})}function eo(){let e=!1,t=!1;Q.forEach(r=>{let{direction:n}=r;"horizontal"===n?e=!0:t=!0});let r=0;et.forEach(e=>{r|=e}),e&&t?z("intersection",r):e?z("horizontal",r):t?z("vertical",r):null!==L&&(document.head.removeChild(L),B=null,L=null,F=-1)}let eu=new AbortController;function ec(){eu.abort();let e={capture:!0,signal:(eu=new AbortController).signal};er.size&&(Z?(Q.length>0&&ee.forEach((t,r)=>{let{body:n}=r;t>0&&(n.addEventListener("contextmenu",es,e),n.addEventListener("pointerleave",ea,e),n.addEventListener("pointermove",ea,e))}),window.addEventListener("pointerup",es,e),window.addEventListener("pointercancel",es,e)):ee.forEach((t,r)=>{let{body:n}=r;t>0&&(n.addEventListener("pointerdown",en,e),n.addEventListener("pointermove",ea,e))}))}function ed(e,t){er.forEach(r=>{let{setResizeHandlerState:n}=r;n(e,Q.includes(r),t)})}function eh(e,t){if(!e)throw console.error(t),Error(t)}function ef(e,t,r=10){return e.toFixed(r)===t.toFixed(r)?0:e>t?1:-1}function em(e,t,r=10){return 0===ef(e,t,r)}function ep(e,t,r){return 0===ef(e,t,r)}function ex({panelConstraints:e,panelIndex:t,size:r}){let n=e[t];eh(null!=n,`Panel constraints not found for index ${t}`);let{collapsedSize:a=0,collapsible:s,maxSize:i=100,minSize:l=0}=n;return 0>ef(r,l)&&(r=s&&0>ef(r,(a+l)/2)?a:l),r=parseFloat((r=Math.min(i,r)).toFixed(10))}function eg({delta:e,initialLayout:t,panelConstraints:r,pivotIndices:n,prevLayout:a,trigger:s}){if(ep(e,0))return t;let i=[...t],[l,o]=n;eh(null!=l,"Invalid first pivot index"),eh(null!=o,"Invalid second pivot index");let u=0;if("keyboard"===s){{let n=e<0?o:l,a=r[n];eh(a,`Panel constraints not found for index ${n}`);let{collapsedSize:s=0,collapsible:i,minSize:u=0}=a;if(i){let r=t[n];if(eh(null!=r,`Previous layout not found for panel index ${n}`),ep(r,s)){let t=u-r;ef(t,Math.abs(e))>0&&(e=e<0?0-t:t)}}}{let n=e<0?l:o,a=r[n];eh(a,`No panel constraints found for index ${n}`);let{collapsedSize:s=0,collapsible:i,minSize:u=0}=a;if(i){let r=t[n];if(eh(null!=r,`Previous layout not found for panel index ${n}`),ep(r,u)){let t=r-s;ef(t,Math.abs(e))>0&&(e=e<0?0-t:t)}}}}{let n=e<0?1:-1,a=e<0?o:l,s=0;for(;;){let e=t[a];if(eh(null!=e,`Previous layout not found for panel index ${a}`),s+=ex({panelConstraints:r,panelIndex:a,size:100})-e,(a+=n)<0||a>=r.length)break}let i=Math.min(Math.abs(e),Math.abs(s));e=e<0?0-i:i}{let n=e<0?l:o;for(;n>=0&&n<r.length;){let a=Math.abs(e)-Math.abs(u),s=t[n];eh(null!=s,`Previous layout not found for panel index ${n}`);let l=ex({panelConstraints:r,panelIndex:n,size:s-a});if(!ep(s,l)&&(u+=s-l,i[n]=l,u.toPrecision(3).localeCompare(Math.abs(e).toPrecision(3),void 0,{numeric:!0})>=0))break;e<0?n--:n++}}if(function(e,t){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r++)if(!ep(e[r],t[r],void 0))return!1;return!0}(a,i))return a;{let n=e<0?o:l,a=t[n];eh(null!=a,`Previous layout not found for panel index ${n}`);let s=a+u,c=ex({panelConstraints:r,panelIndex:n,size:s});if(i[n]=c,!ep(c,s)){let t=s-c,n=e<0?o:l;for(;n>=0&&n<r.length;){let a=i[n];eh(null!=a,`Previous layout not found for panel index ${n}`);let s=ex({panelConstraints:r,panelIndex:n,size:a+t});if(ep(a,s)||(t-=s-a,i[n]=s),ep(t,0))break;e>0?n--:n++}}}return ep(i.reduce((e,t)=>t+e,0),100)?i:a}function eb(e,t=document){return Array.from(t.querySelectorAll(`[${S}][data-panel-group-id="${e}"]`))}function ev(e,t,r=document){let n=eb(e,r).findIndex(e=>e.getAttribute(S)===t);return null!=n?n:null}function ey(e,t,r){let n=ev(e,t,r);return null!=n?[n,n+1]:[-1,-1]}function ew(e,t=document){var r;if(t instanceof HTMLElement&&(null==t||null==(r=t.dataset)?void 0:r.panelGroupId)==e)return t;let n=t.querySelector(`[data-panel-group][data-panel-group-id="${e}"]`);return n||null}function ej(e,t=document){let r=t.querySelector(`[${S}="${e}"]`);return r||null}function ek(e,t){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r++)if(e[r]!==t[r])return!1;return!0}function eC(e,t){let{x:r,y:n}=O(t);return"horizontal"===e?r:n}function eN(e,t,r){t.forEach((t,n)=>{let a=e[n];eh(a,`Panel data not found for index ${n}`);let{callbacks:s,constraints:i,id:l}=a,{collapsedSize:o=0,collapsible:u}=i,c=r[l];if(null==c||t!==c){r[l]=t;let{onCollapse:e,onExpand:n,onResize:a}=s;a&&a(t,c),u&&(e||n)&&(n&&(null==c||em(c,o))&&!em(t,o)&&n(),e&&(null==c||!em(c,o))&&em(t,o)&&e())}})}function eS(e,t){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r++)if(e[r]!=t[r])return!1;return!0}function eE(e){try{if("u">typeof localStorage)e.getItem=e=>localStorage.getItem(e),e.setItem=(e,t)=>{localStorage.setItem(e,t)};else throw Error("localStorage not supported in this environment")}catch(t){console.error(t),e.getItem=()=>null,e.setItem=()=>{}}}function eA(e){return`react-resizable-panels:${e}`}function eD(e){return e.map(e=>{let{constraints:t,id:r,idIsFromProps:n,order:a}=e;return n?r:a?`${a}:${JSON.stringify(t)}`:JSON.stringify(t)}).sort((e,t)=>e.localeCompare(t)).join(",")}function eM(e,t){try{let r=eA(e),n=t.getItem(r);if(n){let e=JSON.parse(n);if("object"==typeof e&&null!=e)return e}}catch(e){}return null}function eI(e,t,r,n,a){var s;let i=eA(e),l=eD(t),o=null!=(s=eM(e,a))?s:{};o[l]={expandToSizes:Object.fromEntries(r.entries()),layout:n};try{a.setItem(i,JSON.stringify(o))}catch(e){console.error(e)}}function eP({layout:e,panelConstraints:t}){let r=[...e],n=r.reduce((e,t)=>e+t,0);if(r.length!==t.length)throw Error(`Invalid ${t.length} panel layout: ${r.map(e=>`${e}%`).join(", ")}`);if(!ep(n,100)&&r.length>0)for(let e=0;e<t.length;e++){let t=r[e];eh(null!=t,`No layout data found for index ${e}`);let a=100/n*t;r[e]=a}let a=0;for(let e=0;e<t.length;e++){let n=r[e];eh(null!=n,`No layout data found for index ${e}`);let s=ex({panelConstraints:t,panelIndex:e,size:n});n!=s&&(a+=n-s,r[e]=s)}if(!ep(a,0))for(let e=0;e<t.length;e++){let n=r[e];eh(null!=n,`No layout data found for index ${e}`);let s=ex({panelConstraints:t,panelIndex:e,size:n+a});if(n!==s&&(a-=s-n,r[e]=s,ep(a,0)))break}return r}let eR={getItem:e=>(eE(eR),eR.getItem(e)),setItem:(e,t)=>{eE(eR),eR.setItem(e,t)}},eB={};function eF({autoSaveId:e=null,children:t,className:r="",direction:n,forwardedRef:a,id:s=null,onLayout:l=null,keyboardResizeBy:o=null,storage:u=eR,style:c,tagName:d="div",...h}){let f=I(s),m=(0,i.useRef)(null),[p,x]=(0,i.useState)(null),[g,b]=(0,i.useState)([]),v=function(){let[e,t]=(0,i.useState)(0);return(0,i.useCallback)(()=>t(e=>e+1),[])}(),y=(0,i.useRef)({}),w=(0,i.useRef)(new Map),N=(0,i.useRef)(0),A=(0,i.useRef)({autoSaveId:e,direction:n,dragState:p,id:f,keyboardResizeBy:o,onLayout:l,storage:u}),D=(0,i.useRef)({layout:g,panelDataArray:[],panelDataArrayChanged:!1});(0,i.useRef)({didLogIdAndOrderWarning:!1,didLogPanelConstraintsWarning:!1,prevPanelIds:[]}),(0,i.useImperativeHandle)(a,()=>({getId:()=>A.current.id,getLayout:()=>{let{layout:e}=D.current;return e},setLayout:e=>{let{onLayout:t}=A.current,{layout:r,panelDataArray:n}=D.current,a=eP({layout:e,panelConstraints:n.map(e=>e.constraints)});ek(r,a)||(b(a),D.current.layout=a,t&&t(a),eN(n,a,y.current))}}),[]),E(()=>{A.current.autoSaveId=e,A.current.direction=n,A.current.dragState=p,A.current.id=f,A.current.onLayout=l,A.current.storage=u}),function({committedValuesRef:e,eagerValuesRef:t,groupId:r,layout:n,panelDataArray:a,panelGroupElement:s,setLayout:l}){(0,i.useRef)({didWarnAboutMissingResizeHandle:!1}),E(()=>{if(!s)return;let e=eb(r,s);for(let t=0;t<a.length-1;t++){let{valueMax:r,valueMin:s,valueNow:i}=function({layout:e,panelsArray:t,pivotIndices:r}){let n=0,a=100,s=0,i=0,l=r[0];return eh(null!=l,"No pivot index found"),t.forEach((e,t)=>{let{constraints:r}=e,{maxSize:o=100,minSize:u=0}=r;t===l?(n=u,a=o):(s+=u,i+=o)}),{valueMax:Math.min(a,100-s),valueMin:Math.max(n,100-i),valueNow:e[l]}}({layout:n,panelsArray:a,pivotIndices:[t,t+1]}),l=e[t];if(null==l);else{let e=a[t];eh(e,`No panel data found for index "${t}"`),l.setAttribute("aria-controls",e.id),l.setAttribute("aria-valuemax",""+Math.round(r)),l.setAttribute("aria-valuemin",""+Math.round(s)),l.setAttribute("aria-valuenow",null!=i?""+Math.round(i):"")}}return()=>{e.forEach((e,t)=>{e.removeAttribute("aria-controls"),e.removeAttribute("aria-valuemax"),e.removeAttribute("aria-valuemin"),e.removeAttribute("aria-valuenow")})}},[r,n,a,s]),(0,i.useEffect)(()=>{if(!s)return;let e=t.current;eh(e,"Eager values not found");let{panelDataArray:a}=e;eh(null!=ew(r,s),`No group found for id "${r}"`);let i=eb(r,s);eh(i,`No resize handles found for group id "${r}"`);let o=i.map(e=>{let t=e.getAttribute(S);eh(t,"Resize handle element has no handle id attribute");let[i,o]=function(e,t,r,n=document){var a,s,i,l;let o=ej(t,n),u=eb(e,n),c=o?u.indexOf(o):-1;return[null!=(a=null==(s=r[c])?void 0:s.id)?a:null,null!=(i=null==(l=r[c+1])?void 0:l.id)?i:null]}(r,t,a,s);if(null==i||null==o)return()=>{};let u=e=>{if(!e.defaultPrevented&&"Enter"===e.key){e.preventDefault();let o=a.findIndex(e=>e.id===i);if(o>=0){let e=a[o];eh(e,`No panel data found for index ${o}`);let i=n[o],{collapsedSize:u=0,collapsible:c,minSize:d=0}=e.constraints;if(null!=i&&c){let e=eg({delta:ep(i,u)?d-u:u-i,initialLayout:n,panelConstraints:a.map(e=>e.constraints),pivotIndices:ey(r,t,s),prevLayout:n,trigger:"keyboard"});n!==e&&l(e)}}}};return e.addEventListener("keydown",u),()=>{e.removeEventListener("keydown",u)}});return()=>{o.forEach(e=>e())}},[s,e,t,r,n,a,l])}({committedValuesRef:A,eagerValuesRef:D,groupId:f,layout:g,panelDataArray:D.current.panelDataArray,setLayout:b,panelGroupElement:m.current}),(0,i.useEffect)(()=>{let{panelDataArray:t}=D.current;if(e){if(0===g.length||g.length!==t.length)return;let r=eB[e];null==r&&(r=function(e,t=10){let r=null;return(...n)=>{null!==r&&clearTimeout(r),r=setTimeout(()=>{e(...n)},t)}}(eI,100),eB[e]=r),r(e,[...t],new Map(w.current),g,u)}},[e,g,u]),(0,i.useEffect)(()=>{});let M=(0,i.useCallback)(e=>{let{onLayout:t}=A.current,{layout:r,panelDataArray:n}=D.current;if(e.constraints.collapsible){let a=n.map(e=>e.constraints),{collapsedSize:s=0,panelSize:i,pivotIndices:l}=e$(n,e,r);if(eh(null!=i,`Panel size not found for panel "${e.id}"`),!em(i,s)){w.current.set(e.id,i);let o=eg({delta:ez(n,e)===n.length-1?i-s:s-i,initialLayout:r,panelConstraints:a,pivotIndices:l,prevLayout:r,trigger:"imperative-api"});eS(r,o)||(b(o),D.current.layout=o,t&&t(o),eN(n,o,y.current))}}},[]),P=(0,i.useCallback)((e,t)=>{let{onLayout:r}=A.current,{layout:n,panelDataArray:a}=D.current;if(e.constraints.collapsible){let s=a.map(e=>e.constraints),{collapsedSize:i=0,panelSize:l=0,minSize:o=0,pivotIndices:u}=e$(a,e,n),c=null!=t?t:o;if(em(l,i)){let t=w.current.get(e.id),i=null!=t&&t>=c?t:c,o=eg({delta:ez(a,e)===a.length-1?l-i:i-l,initialLayout:n,panelConstraints:s,pivotIndices:u,prevLayout:n,trigger:"imperative-api"});eS(n,o)||(b(o),D.current.layout=o,r&&r(o),eN(a,o,y.current))}}},[]),R=(0,i.useCallback)(e=>{let{layout:t,panelDataArray:r}=D.current,{panelSize:n}=e$(r,e,t);return eh(null!=n,`Panel size not found for panel "${e.id}"`),n},[]),B=(0,i.useCallback)((e,t)=>{let{panelDataArray:r}=D.current,n=ez(r,e);return function({defaultSize:e,dragState:t,layout:r,panelData:n,panelIndex:a,precision:s=3}){let i=r[a];return{flexBasis:0,flexGrow:null==i?void 0!=e?e.toPrecision(s):"1":1===n.length?"1":i.toPrecision(s),flexShrink:1,overflow:"hidden",pointerEvents:null!==t?"none":void 0}}({defaultSize:t,dragState:p,layout:g,panelData:r,panelIndex:n})},[p,g]),F=(0,i.useCallback)(e=>{let{layout:t,panelDataArray:r}=D.current,{collapsedSize:n=0,collapsible:a,panelSize:s}=e$(r,e,t);return eh(null!=s,`Panel size not found for panel "${e.id}"`),!0===a&&em(s,n)},[]),L=(0,i.useCallback)(e=>{let{layout:t,panelDataArray:r}=D.current,{collapsedSize:n=0,collapsible:a,panelSize:s}=e$(r,e,t);return eh(null!=s,`Panel size not found for panel "${e.id}"`),!a||ef(s,n)>0},[]),z=(0,i.useCallback)(e=>{let{panelDataArray:t}=D.current;t.push(e),t.sort((e,t)=>{let r=e.order,n=t.order;return null==r&&null==n?0:null==r?-1:null==n?1:r-n}),D.current.panelDataArrayChanged=!0,v()},[v]);E(()=>{if(D.current.panelDataArrayChanged){D.current.panelDataArrayChanged=!1;let{autoSaveId:r,onLayout:n,storage:a}=A.current,{layout:s,panelDataArray:i}=D.current,l=null;if(r){var e,t;let n=null!=(t=(null!=(e=eM(r,a))?e:{})[eD(i)])?t:null;n&&(w.current=new Map(Object.entries(n.expandToSizes)),l=n.layout)}null==l&&(l=function({panelDataArray:e}){let t=Array(e.length),r=e.map(e=>e.constraints),n=0,a=100;for(let s=0;s<e.length;s++){let e=r[s];eh(e,`Panel constraints not found for index ${s}`);let{defaultSize:i}=e;null!=i&&(n++,t[s]=i,a-=i)}for(let s=0;s<e.length;s++){let i=r[s];eh(i,`Panel constraints not found for index ${s}`);let{defaultSize:l}=i;if(null!=l)continue;let o=a/(e.length-n);n++,t[s]=o,a-=o}return t}({panelDataArray:i}));let o=eP({layout:l,panelConstraints:i.map(e=>e.constraints)});ek(s,o)||(b(o),D.current.layout=o,n&&n(o),eN(i,o,y.current))}}),E(()=>{let e=D.current;return()=>{e.layout=[]}},[]);let O=(0,i.useCallback)(e=>{let t=!1,r=m.current;return r&&"rtl"===window.getComputedStyle(r,null).getPropertyValue("direction")&&(t=!0),function(r){var n,a;r.preventDefault();let s=m.current;if(!s)return()=>null;let{direction:i,dragState:l,id:o,keyboardResizeBy:u,onLayout:c}=A.current,{layout:d,panelDataArray:h}=D.current,{initialLayout:f}=null!=l?l:{},p=ey(o,e,s),x=function(e,t,r,n,a,s){if($(e)){let t="horizontal"===r,n=0;n=e.shiftKey?100:null!=a?a:10;let s=0;switch(e.key){case"ArrowDown":s=t?0:n;break;case"ArrowLeft":s=t?-n:0;break;case"ArrowRight":s=t?n:0;break;case"ArrowUp":s=t?0:-n;break;case"End":s=100;break;case"Home":s=-100}return s}return null==n?0:function(e,t,r,n,a){let s="horizontal"===r,i=ej(t,a);eh(i,`No resize handle element found for id "${t}"`);let l=i.getAttribute(C);eh(l,"Resize handle element has no group id attribute");let{initialCursorPosition:o}=n,u=eC(r,e),c=ew(l,a);eh(c,`No group element found for id "${l}"`);let d=c.getBoundingClientRect();return(u-o)/(s?d.width:d.height)*100}(e,t,r,n,s)}(r,e,i,l,u,s),g="horizontal"===i;g&&t&&(x=-x);let v=eg({delta:x,initialLayout:null!=f?f:d,panelConstraints:h.map(e=>e.constraints),pivotIndices:p,prevLayout:d,trigger:$(r)?"keyboard":"mouse-or-touch"}),w=!eS(d,v);(T(r)||_(r))&&N.current!=x&&((N.current=x,w||0===x)?et.set(e,0):g?(n=x<0?U:Y,et.set(e,n)):(a=x<0?q:J,et.set(e,a))),w&&(b(v),D.current.layout=v,c&&c(v),eN(h,v,y.current))}},[]),W=(0,i.useCallback)((e,t)=>{let{onLayout:r}=A.current,{layout:n,panelDataArray:a}=D.current,s=a.map(e=>e.constraints),{panelSize:i,pivotIndices:l}=e$(a,e,n);eh(null!=i,`Panel size not found for panel "${e.id}"`);let o=eg({delta:ez(a,e)===a.length-1?i-t:t-i,initialLayout:n,panelConstraints:s,pivotIndices:l,prevLayout:n,trigger:"imperative-api"});eS(n,o)||(b(o),D.current.layout=o,r&&r(o),eN(a,o,y.current))},[]),H=(0,i.useCallback)((e,t)=>{let{layout:r,panelDataArray:n}=D.current,{collapsedSize:a=0,collapsible:s}=t,{collapsedSize:i=0,collapsible:l,maxSize:o=100,minSize:u=0}=e.constraints,{panelSize:c}=e$(n,e,r);null!=c&&(s&&l&&em(c,a)?em(a,i)||W(e,i):c<u?W(e,u):c>o&&W(e,o))},[W]),G=(0,i.useCallback)((e,t)=>{let{direction:r}=A.current,{layout:n}=D.current;if(!m.current)return;let a=ej(e,m.current);eh(a,`Drag handle element not found for id "${e}"`);let s=eC(r,t);x({dragHandleId:e,dragHandleRect:a.getBoundingClientRect(),initialCursorPosition:s,initialLayout:n})},[]),K=(0,i.useCallback)(()=>{x(null)},[]),V=(0,i.useCallback)(e=>{let{panelDataArray:t}=D.current,r=ez(t,e);r>=0&&(t.splice(r,1),delete y.current[e.id],D.current.panelDataArrayChanged=!0,v())},[v]),X=(0,i.useMemo)(()=>({collapsePanel:M,direction:n,dragState:p,expandPanel:P,getPanelSize:R,getPanelStyle:B,groupId:f,isPanelCollapsed:F,isPanelExpanded:L,reevaluatePanelConstraints:H,registerPanel:z,registerResizeHandle:O,resizePanel:W,startDragging:G,stopDragging:K,unregisterPanel:V,panelGroupElement:m.current}),[M,p,n,P,R,B,f,F,L,H,z,O,W,G,K,V]);return(0,i.createElement)(j.Provider,{value:X},(0,i.createElement)(d,{...h,children:t,className:r,id:s,ref:m,style:{display:"flex",flexDirection:"horizontal"===n?"row":"column",height:"100%",overflow:"hidden",width:"100%",...c},"data-panel-group":"",[k]:n,[C]:f}))}let eL=(0,i.forwardRef)((e,t)=>(0,i.createElement)(eF,{...e,forwardedRef:t}));function ez(e,t){return e.findIndex(e=>e===t||e.id===t.id)}function e$(e,t,r){let n=ez(e,t),a=n===e.length-1,s=r[n];return{...t.constraints,panelSize:s,pivotIndices:a?[n-1,n]:[n,n+1]}}function eT({children:e=null,className:t="",disabled:r=!1,hitAreaMargins:n,id:a,onBlur:s,onClick:l,onDragging:o,onFocus:u,onPointerDown:c,onPointerUp:d,style:h={},tabIndex:f=0,tagName:m="div",...p}){var x,g;let b=(0,i.useRef)(null),v=(0,i.useRef)({onClick:l,onDragging:o,onPointerDown:c,onPointerUp:d});(0,i.useEffect)(()=>{v.current.onClick=l,v.current.onDragging=o,v.current.onPointerDown=c,v.current.onPointerUp=d});let y=(0,i.useContext)(j);if(null===y)throw Error("PanelResizeHandle components must be rendered within a PanelGroup container");let{direction:w,groupId:A,registerResizeHandle:D,startDragging:M,stopDragging:P,panelGroupElement:R}=y,B=I(a),[F,L]=(0,i.useState)("inactive"),[z,$]=(0,i.useState)(!1),[T,_]=(0,i.useState)(null),O=(0,i.useRef)({state:F});E(()=>{O.current.state=F}),(0,i.useEffect)(()=>{if(r)_(null);else{let e=D(B);_(()=>e)}},[r,B,D]);let W=null!=(x=null==n?void 0:n.coarse)?x:15,H=null!=(g=null==n?void 0:n.fine)?g:5;return(0,i.useEffect)(()=>{if(r||null==T)return;let e=b.current;eh(e,"Element ref not attached");let t=!1;return function(e,t,r,n,a){var s;let{ownerDocument:i}=t,l={direction:r,element:t,hitAreaMargins:n,setResizeHandlerState:a},o=null!=(s=ee.get(i))?s:0;return ee.set(i,o+1),er.add(l),ec(),function(){var t;et.delete(e),er.delete(l);let r=null!=(t=ee.get(i))?t:1;if(ee.set(i,r-1),ec(),1===r&&ee.delete(i),Q.includes(l)){let e=Q.indexOf(l);e>=0&&Q.splice(e,1),eo(),a("up",!0,null)}}}(B,e,w,{coarse:W,fine:H},(e,r,n)=>{if(!r)return void L("inactive");switch(e){case"down":{L("drag"),t=!1,eh(n,'Expected event to be defined for "down" action'),M(B,n);let{onDragging:e,onPointerDown:r}=v.current;null==e||e(!0),null==r||r();break}case"move":{let{state:e}=O.current;t=!0,"drag"!==e&&L("hover"),eh(n,'Expected event to be defined for "move" action'),T(n);break}case"up":{L("hover"),P();let{onClick:e,onDragging:r,onPointerUp:n}=v.current;null==r||r(!1),null==n||n(),t||null==e||e()}}})},[W,w,r,H,D,B,T,M,P]),!function({disabled:e,handleId:t,resizeHandler:r,panelGroupElement:n}){(0,i.useEffect)(()=>{if(e||null==r||null==n)return;let a=ej(t,n);if(null==a)return;let s=e=>{if(!e.defaultPrevented)switch(e.key){case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"ArrowUp":case"End":case"Home":e.preventDefault(),r(e);break;case"F6":{e.preventDefault();let r=a.getAttribute(C);eh(r,`No group element found for id "${r}"`);let s=eb(r,n),i=ev(r,t,n);eh(null!==i,`No resize element found for id "${t}"`);let l=e.shiftKey?i>0?i-1:s.length-1:i+1<s.length?i+1:0;s[l].focus()}}};return a.addEventListener("keydown",s),()=>{a.removeEventListener("keydown",s)}},[n,e,t,r])}({disabled:r,handleId:B,resizeHandler:T,panelGroupElement:R}),(0,i.createElement)(m,{...p,children:e,className:t,id:a,onBlur:()=>{$(!1),null==s||s()},onFocus:()=>{$(!0),null==u||u()},ref:b,role:"separator",style:{touchAction:"none",userSelect:"none",...h},tabIndex:f,[k]:w,[C]:A,[N]:"","data-resize-handle-active":"drag"===F?"pointer":z?"keyboard":void 0,"data-panel-resize-handle-enabled":!r,[S]:B,"data-resize-handle-state":F})}eF.displayName="PanelGroup",eL.displayName="forwardRef(PanelGroup)",eT.displayName="PanelResizeHandle",e.s([],547991),e.i(547991),e.i(905022);var e_=e.i(712194),eO=e.i(239917),eW=e.i(288782),eH=e.i(703995),eG=e.i(256035),eK=e.i(379672),eV=e.i(855604);let eU=i.createContext(void 0);function eY(){let e=i.useContext(eU);if(void 0===e)throw Error((0,eV.default)(64));return e}let eq=((r={}).activationDirection="data-activation-direction",r.orientation="data-orientation",r),eJ={tabActivationDirection:e=>({[eq.activationDirection]:e})},eX=i.forwardRef(function(e,t){let{className:r,defaultValue:n=0,onValueChange:a,orientation:l="horizontal",render:o,value:u,...c}=e,d=(0,eK.useDirection)(),h=Object.hasOwn(e,"defaultValue"),f=i.useRef([]),[m,p]=i.useState(()=>new Map),[x,g]=(0,e_.useControlled)({controlled:u,default:n,name:"Tabs",state:"value"}),b=void 0!==u,[v,y]=i.useState(()=>new Map),[w,j]=i.useState("none"),k=(0,eW.useStableCallback)((e,t)=>{a?.(e,t),t.isCanceled||(g(e),j(t.activationDirection))}),C=(0,eW.useStableCallback)((e,t)=>{p(r=>{if(r.get(e)===t)return r;let n=new Map(r);return n.set(e,t),n})}),N=(0,eW.useStableCallback)((e,t)=>{p(r=>{if(!r.has(e)||r.get(e)!==t)return r;let n=new Map(r);return n.delete(e),n})}),S=i.useCallback(e=>m.get(e),[m]),E=i.useCallback(e=>{for(let t of v.values())if(e===t?.value)return t?.id},[v]),A=i.useCallback(e=>{if(void 0===e)return null;for(let[t,r]of v.entries())if(null!=r&&e===(r.value??r.index))return t;return null},[v]),D=i.useMemo(()=>({direction:d,getTabElementBySelectedValue:A,getTabIdByPanelValue:E,getTabPanelIdByValue:S,onValueChange:k,orientation:l,registerMountedTabPanel:C,setTabMap:y,unregisterMountedTabPanel:N,tabActivationDirection:w,value:x}),[d,A,E,S,k,l,C,y,N,w,x]),M=i.useMemo(()=>{for(let e of v.values())if(null!=e&&e.value===x)return e},[v,x]),I=i.useMemo(()=>{for(let e of v.values())if(null!=e&&!e.disabled)return e.value},[v]);(0,eO.useIsoLayoutEffect)(()=>{if(b||0===v.size)return;let e=M?.disabled,t=null==M&&null!==x;if(h&&e&&x===n||!e&&!t)return;let r=I??null;x!==r&&(g(r),j("none"))},[n,I,h,b,M,j,g,v,x]);let P=(0,eH.useRenderElement)("div",e,{state:{orientation:l,tabActivationDirection:w},ref:t,props:c,stateAttributesMapping:eJ});return(0,s.jsx)(eU.Provider,{value:D,children:(0,s.jsx)(eG.CompositeList,{elementsRef:f,children:P})})});var eQ=e.i(313987),eZ=e.i(718226),e0=e.i(419851);let e1="data-composite-item-active";var e2=e.i(367950);let e3=i.createContext(void 0);function e5(){let e=i.useContext(e3);if(void 0===e)throw Error((0,eV.default)(65));return e}var e4=e.i(229305),e8=e.i(842923),e7=e.i(24620);let e6=i.forwardRef(function(e,t){let{className:r,disabled:n=!1,render:a,value:s,id:l,nativeButton:o=!0,...u}=e,{value:c,getTabPanelIdByValue:d,orientation:h}=eY(),{activateOnFocus:f,highlightedTabIndex:m,onTabActivation:p,registerTabResizeObserverElement:x,setHighlightedTabIndex:g,tabsListElement:b}=e5(),v=(0,eZ.useBaseUiId)(l),y=i.useMemo(()=>({disabled:n,id:v,value:s}),[n,v,s]),{compositeProps:w,compositeRef:j,index:k}=(0,e2.useCompositeItem)({metadata:y}),C=s===c,N=i.useRef(!1),S=i.useRef(null);i.useEffect(()=>{let e=S.current;if(e)return x(e)},[x]),(0,eO.useIsoLayoutEffect)(()=>{if(N.current){N.current=!1;return}if(C&&k>-1&&m!==k){if(null!=b){let e=(0,e7.activeElement)((0,eQ.ownerDocument)(b));if(e&&(0,e7.contains)(b,e))return}n||g(k)}},[C,k,m,g,n,b]);let{getButtonProps:E,buttonRef:A}=(0,e0.useButton)({disabled:n,native:o,focusableWhenDisabled:!0}),D=d(s),M=i.useRef(!1),I=i.useRef(!1);return(0,eH.useRenderElement)("button",e,{state:{disabled:n,active:C,orientation:h},ref:[t,A,j,S],props:[w,{role:"tab","aria-controls":D,"aria-selected":C,id:v,onClick:function(e){C||n||p(s,(0,e4.createChangeEventDetails)(e8.REASONS.none,e.nativeEvent,void 0,{activationDirection:"none"}))},onFocus:function(e){C||(k>-1&&!n&&g(k),!n&&f&&(!M.current||M.current&&I.current)&&p(s,(0,e4.createChangeEventDetails)(e8.REASONS.none,e.nativeEvent,void 0,{activationDirection:"none"})))},onPointerDown:function(e){C||n||(M.current=!0,e.button&&0!==e.button||(I.current=!0,(0,eQ.ownerDocument)(e.currentTarget).addEventListener("pointerup",function(){M.current=!1,I.current=!1},{once:!0})))},[e1]:C?"":void 0,onKeyDownCapture(){N.current=!0}},u,E]})});var e9=e.i(484397),te=e.i(34e4);let tt=((n={}).activeTabLeft="--active-tab-left",n.activeTabRight="--active-tab-right",n.activeTabTop="--active-tab-top",n.activeTabBottom="--active-tab-bottom",n.activeTabWidth="--active-tab-width",n.activeTabHeight="--active-tab-height",n);var tr=e.i(514400);let tn={...eJ,activeTabPosition:()=>null,activeTabSize:()=>null},ta=i.forwardRef(function(e,t){let{className:r,render:n,renderBeforeHydration:a=!1,...l}=e,{nonce:o}=(0,tr.useCSPContext)(),{getTabElementBySelectedValue:u,orientation:c,tabActivationDirection:d,value:h}=eY(),{tabsListElement:f,registerIndicatorUpdateListener:m}=e5(),[p,x]=i.useState(!1);(0,e9.useOnMount)(()=>x(!0));let g=function(){let[,e]=i.useState({});return i.useCallback(()=>{e({})},[])}();i.useEffect(()=>m(g),[m,g]);let b=0,v=0,y=0,w=0,j=0,k=0,C=!1;if(null!=h&&null!=f){let e=u(h);if(C=!0,null!=e){let{width:t,height:r}=(0,te.getCssDimensions)(e),{width:n,height:a}=(0,te.getCssDimensions)(f),s=e.getBoundingClientRect(),i=f.getBoundingClientRect(),l=n>0?i.width/n:1,o=a>0?i.height/a:1;if(Math.abs(l)>Number.EPSILON&&Math.abs(o)>Number.EPSILON){let e=s.left-i.left,t=s.top-i.top;b=e/l+f.scrollLeft-f.clientLeft,y=t/o+f.scrollTop-f.clientTop}else b=e.offsetLeft,y=e.offsetTop;j=t,k=r,v=f.scrollWidth-b-j,w=f.scrollHeight-y-k}}let N=i.useMemo(()=>C?{left:b,right:v,top:y,bottom:w}:null,[b,v,y,w,C]),S=i.useMemo(()=>C?{width:j,height:k}:null,[j,k,C]),E=i.useMemo(()=>{if(C)return{[tt.activeTabLeft]:`${b}px`,[tt.activeTabRight]:`${v}px`,[tt.activeTabTop]:`${y}px`,[tt.activeTabBottom]:`${w}px`,[tt.activeTabWidth]:`${j}px`,[tt.activeTabHeight]:`${k}px`}},[b,v,y,w,j,k,C]),A=C&&j>0&&k>0,D=(0,eH.useRenderElement)("span",e,{state:{orientation:c,activeTabPosition:N,activeTabSize:S,tabActivationDirection:d},ref:t,props:[{role:"presentation",style:E,hidden:!A},l,{suppressHydrationWarning:!0}],stateAttributesMapping:tn});return null==h?null:(0,s.jsxs)(i.Fragment,{children:[D,!p&&a&&(0,s.jsx)("script",{nonce:o,dangerouslySetInnerHTML:{__html:'!function(){const t=document.currentScript.previousElementSibling;if(!t)return;const e=t.closest(\'[role="tablist"]\');if(!e)return;const i=e.querySelector("[data-active]");if(!i)return;if(0===i.offsetWidth||0===e.offsetWidth)return;let o=0,n=0,h=0,l=0,r=0,f=0;function s(t){const e=getComputedStyle(t);let i=parseFloat(e.width)||0,o=parseFloat(e.height)||0;return(Math.round(i)!==t.offsetWidth||Math.round(o)!==t.offsetHeight)&&(i=t.offsetWidth,o=t.offsetHeight),{width:i,height:o}}if(null!=i&&null!=e){const{width:t,height:c}=s(i),{width:u,height:d}=s(e),a=i.getBoundingClientRect(),g=e.getBoundingClientRect(),p=u>0?g.width/u:1,b=d>0?g.height/d:1;if(Math.abs(p)>Number.EPSILON&&Math.abs(b)>Number.EPSILON){const t=a.left-g.left,i=a.top-g.top;o=t/p+e.scrollLeft-e.clientLeft,h=i/b+e.scrollTop-e.clientTop}else o=i.offsetLeft,h=i.offsetTop;r=t,f=c,n=e.scrollWidth-o-r,l=e.scrollHeight-h-f}function c(e,i){t.style.setProperty(`--active-tab-${e}`,`${i}px`)}c("left",o),c("right",n),c("top",h),c("bottom",l),c("width",r),c("height",f),r>0&&f>0&&t.removeAttribute("hidden")}();'},suppressHydrationWarning:!0})]})});var ts=e.i(593328),ti=e.i(963195),tl=e.i(762879),to=e.i(680765),tu=e.i(729824);let tc=((a={}).index="data-index",a.activationDirection="data-activation-direction",a.orientation="data-orientation",a.hidden="data-hidden",a[a.startingStyle=ti.TransitionStatusDataAttributes.startingStyle]="startingStyle",a[a.endingStyle=ti.TransitionStatusDataAttributes.endingStyle]="endingStyle",a),td={...eJ,...ti.transitionStatusMapping},th=i.forwardRef(function(e,t){let{className:r,value:n,render:a,keepMounted:s=!1,...l}=e,{value:o,getTabIdByPanelValue:u,orientation:c,tabActivationDirection:d,registerMountedTabPanel:h,unregisterMountedTabPanel:f}=eY(),m=(0,eZ.useBaseUiId)(),p=i.useMemo(()=>({id:m,value:n}),[m,n]),{ref:x,index:g}=(0,tu.useCompositeListItem)({metadata:p}),b=n===o,{mounted:v,transitionStatus:y,setMounted:w}=(0,to.useTransitionStatus)(b),j=!v,k=u(n),C=i.useRef(null),N=(0,eH.useRenderElement)("div",e,{state:{hidden:j,orientation:c,tabActivationDirection:d,transitionStatus:y},ref:[t,x,C],props:[{"aria-labelledby":k,hidden:j,id:m,role:"tabpanel",tabIndex:b?0:-1,inert:(0,ts.inertValue)(!b),[tc.index]:g},l],stateAttributesMapping:td});return((0,tl.useOpenChangeComplete)({open:b,ref:C,onComplete(){b||w(!1)}}),(0,eO.useIsoLayoutEffect)(()=>{if((!j||s)&&null!=m)return h(n,m),()=>{f(n,m)}},[j,s,n,m,h,f]),s||v)?N:null});var tf=e.i(205856),tm=e.i(773753),tp=e.i(159639);let tx=[];var tg=e.i(59742),tb=e.i(534262);function tv(e){let{render:t,className:r,refs:n=tb.EMPTY_ARRAY,props:a=tb.EMPTY_ARRAY,state:l=tb.EMPTY_OBJECT,stateAttributesMapping:o,highlightedIndex:u,onHighlightedIndexChange:c,orientation:d,dense:h,itemSizes:f,loopFocus:m,cols:p,enableHomeAndEndKeys:x,onMapChange:g,stopEventPropagation:b=!0,rootRef:v,disabledIndices:y,modifierKeys:w,highlightItemOnHover:j=!1,tag:k="div",...C}=e,{props:N,highlightedIndex:S,onHighlightedIndexChange:E,elementsRef:A,onMapChange:D,relayKeyboardEvent:M}=function(e){let{itemSizes:t,cols:r=1,loopFocus:n=!0,dense:a=!1,orientation:s="both",direction:l,highlightedIndex:o,onHighlightedIndexChange:u,rootRef:c,enableHomeAndEndKeys:d=!1,stopEventPropagation:h=!1,disabledIndices:f,modifierKeys:m=tx}=e,[p,x]=i.useState(0),g=r>1,b=i.useRef(null),v=(0,tf.useMergedRefs)(b,c),y=i.useRef([]),w=i.useRef(!1),j=o??p,k=(0,eW.useStableCallback)((e,t=!1)=>{if((u??x)(e),t){let t=y.current[e];(0,tm.scrollIntoViewIfNeeded)(b.current,t,l,s)}}),C=(0,eW.useStableCallback)(e=>{if(0===e.size||w.current)return;w.current=!0;let t=Array.from(e.keys()),r=t.find(e=>e?.hasAttribute(e1))??null,n=r?t.indexOf(r):-1;-1!==n&&k(n),(0,tm.scrollIntoViewIfNeeded)(b.current,r,l,s)}),N=i.useMemo(()=>({"aria-orientation":"both"===s?void 0:s,ref:v,onFocus(e){b.current&&(0,tm.isNativeInput)(e.target)&&e.target.setSelectionRange(0,e.target.value.length??0)},onKeyDown(e){var i;let o=d?tm.ALL_KEYS:tm.ARROW_KEYS;if(!o.has(e.key)||function(e,t){for(let r of tm.MODIFIER_KEYS.values())if(!t.includes(r)&&e.getModifierState(r))return!0;return!1}(e,m)||!b.current)return;let u="rtl"===l,c=u?tm.ARROW_LEFT:tm.ARROW_RIGHT,p={horizontal:c,vertical:tm.ARROW_DOWN,both:c}[s],x=u?tm.ARROW_RIGHT:tm.ARROW_LEFT,v={horizontal:x,vertical:tm.ARROW_UP,both:x}[s];if((0,tm.isNativeInput)(e.target)&&!(null==(i=e.target)||i.hasAttribute("disabled")||"true"===i.getAttribute("aria-disabled"))){let t=e.target.selectionStart,r=e.target.selectionEnd,n=e.target.value??"";if(null==t||e.shiftKey||t!==r||e.key!==v&&t<n.length||e.key!==p&&t>0)return}let w=j,C=(0,tp.getMinListIndex)(y,f),N=(0,tp.getMaxListIndex)(y,f);if(g){let i=t||Array.from({length:y.current.length},()=>({width:1,height:1})),l=(0,tp.createGridCellMap)(i,r,a),o=l.findIndex(e=>null!=e&&!(0,tp.isListIndexDisabled)(y,e,f)),c=l.reduce((e,t,r)=>null==t||(0,tp.isListIndexDisabled)(y,t,f)?e:r,-1);w=l[(0,tp.getGridNavigatedIndex)({current:l.map(e=>e?y.current[e]:null)},{event:e,orientation:s,loopFocus:n,cols:r,disabledIndices:(0,tp.getGridCellIndices)([...f||y.current.map((e,t)=>(0,tp.isListIndexDisabled)(y,t)?t:void 0),void 0],l),minIndex:o,maxIndex:c,prevIndex:(0,tp.getGridCellIndexOfCorner)(j>N?C:j,i,l,r,e.key===tm.ARROW_DOWN?"bl":e.key===tm.ARROW_RIGHT?"tr":"tl"),rtl:u})]}let S={horizontal:[c],vertical:[tm.ARROW_DOWN],both:[c,tm.ARROW_DOWN]}[s],E={horizontal:[x],vertical:[tm.ARROW_UP],both:[x,tm.ARROW_UP]}[s],A=g?o:({horizontal:d?tm.HORIZONTAL_KEYS_WITH_EXTRA_KEYS:tm.HORIZONTAL_KEYS,vertical:d?tm.VERTICAL_KEYS_WITH_EXTRA_KEYS:tm.VERTICAL_KEYS,both:o})[s];d&&(e.key===tm.HOME?w=C:e.key===tm.END&&(w=N)),w===j&&(S.includes(e.key)||E.includes(e.key))&&(w=n&&w===N&&S.includes(e.key)?C:n&&w===C&&E.includes(e.key)?N:(0,tp.findNonDisabledListIndex)(y,{startingIndex:w,decrement:E.includes(e.key),disabledIndices:f})),w===j||(0,tp.isIndexOutOfListBounds)(y,w)||(h&&e.stopPropagation(),A.has(e.key)&&e.preventDefault(),k(w,!0),queueMicrotask(()=>{y.current[w]?.focus()}))}}),[r,a,l,f,y,d,j,g,t,n,v,m,k,s,h]);return i.useMemo(()=>({props:N,highlightedIndex:j,onHighlightedIndexChange:k,elementsRef:y,disabledIndices:f,onMapChange:C,relayKeyboardEvent:N.onKeyDown}),[N,j,k,y,f,C])}({itemSizes:f,cols:p,loopFocus:m,dense:h,orientation:d,highlightedIndex:u,onHighlightedIndexChange:c,rootRef:v,stopEventPropagation:b,enableHomeAndEndKeys:x,direction:(0,eK.useDirection)(),disabledIndices:y,modifierKeys:w}),I=(0,eH.useRenderElement)(k,e,{state:l,ref:n,props:[N,...a,C],stateAttributesMapping:o}),P=i.useMemo(()=>({highlightedIndex:S,onHighlightedIndexChange:E,highlightItemOnHover:j,relayKeyboardEvent:M}),[S,E,j,M]);return(0,s.jsx)(tg.CompositeRootContext.Provider,{value:P,children:(0,s.jsx)(eG.CompositeList,{elementsRef:A,onMapChange:e=>{g?.(e),D(e)},children:I})})}let ty=i.forwardRef(function(e,t){let{activateOnFocus:r=!1,className:n,loopFocus:a=!0,render:l,...o}=e,{getTabElementBySelectedValue:u,onValueChange:c,orientation:d,value:h,setTabMap:f,tabActivationDirection:m}=eY(),[p,x]=i.useState(0),[g,b]=i.useState(null),v=i.useRef(new Set),y=i.useRef(new Set),w=i.useRef(null),j=(0,eW.useStableCallback)(()=>{v.current.forEach(e=>{e()})});i.useEffect(()=>{if("u"<typeof ResizeObserver)return;let e=new ResizeObserver(()=>{v.current.size&&j()});return w.current=e,g&&e.observe(g),y.current.forEach(t=>{e.observe(t)}),()=>{e.disconnect(),w.current=null}},[g,j]);let k=(0,eW.useStableCallback)(e=>(v.current.add(e),()=>{v.current.delete(e)})),C=(0,eW.useStableCallback)(e=>(y.current.add(e),w.current?.observe(e),()=>{y.current.delete(e),w.current?.unobserve(e)})),N=function(e,t,r,n){let[a,s]=i.useState(null);return(0,eO.useIsoLayoutEffect)(()=>{if(null==e||null==r)return void s(null);let a=n(e);if(null==a)return void s(null);let{left:i,top:l}=tw(a,r);s("horizontal"===t?i:l)},[t,n,r,e]),i.useCallback(i=>{if(i===e)return"none";if(null==i)return s(null),"none";if(null!=i&&null!=r){let e=n(i);if(null!=e){let{left:n,top:i}=tw(e,r);if(null==a)return s("horizontal"===t?n:i),"none";if("horizontal"===t){if(n<a)return s(n),"left";if(n>a)return s(n),"right"}else if(i<a)return s(i),"up";else if(i>a)return s(i),"down"}}return"none"},[n,t,a,r,e])}(h,d,g,u),S=(0,eW.useStableCallback)((e,t)=>{e!==h&&(t.activationDirection=N(e),c(e,t))}),E=i.useMemo(()=>({activateOnFocus:r,highlightedTabIndex:p,registerIndicatorUpdateListener:k,registerTabResizeObserverElement:C,onTabActivation:S,setHighlightedTabIndex:x,tabsListElement:g}),[r,p,k,C,S,x,g]);return(0,s.jsx)(e3.Provider,{value:E,children:(0,s.jsx)(tv,{render:l,className:n,state:{orientation:d,tabActivationDirection:m},refs:[t,b],props:[{"aria-orientation":"vertical"===d?"vertical":void 0,role:"tablist"},o],stateAttributesMapping:eJ,highlightedIndex:p,enableHomeAndEndKeys:!0,loopFocus:a,orientation:d,onHighlightedIndexChange:x,onMapChange:f,disabledIndices:tb.EMPTY_ARRAY})})});function tw(e,t){let{left:r,top:n}=e.getBoundingClientRect(),{left:a,top:s}=t.getBoundingClientRect();return{left:r-a,top:n-s}}e.s(["Indicator",0,ta,"List",0,ty,"Panel",0,th,"Root",0,eX,"Tab",0,e6],139417);var tj=e.i(139417),tj=tj,tk=e.i(555138),tC=e.i(47816);function tN({className:e,orientation:t="horizontal",...r}){return(0,s.jsx)(tj.Root,{"data-slot":"tabs","data-orientation":t,className:(0,tC.cn)("group/tabs flex gap-2 data-horizontal:flex-col",e),...r})}let tS=(0,tk.cva)("group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground group-data-horizontal/tabs:h-8 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col data-[variant=line]:rounded-none",{variants:{variant:{default:"bg-muted",line:"gap-1 bg-transparent"}},defaultVariants:{variant:"default"}});function tE({className:e,variant:t="default",...r}){return(0,s.jsx)(tj.List,{"data-slot":"tabs-list","data-variant":t,className:(0,tC.cn)(tS({variant:t}),e),...r})}function tA({className:e,...t}){return(0,s.jsx)(tj.Tab,{"data-slot":"tabs-trigger",className:(0,tC.cn)("relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4","group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent","data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground","after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100",e),...t})}function tD({className:e,...t}){return(0,s.jsx)(tj.Panel,{"data-slot":"tabs-content",className:(0,tC.cn)("flex-1 text-sm outline-none",e),...t})}var tM=e.i(246762),tI=e.i(960732),tP=e.i(993453),tR=e.i(683020),tB=e.i(621994);let tF=(0,d.default)("file",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}]]);function tL(e){return Array.isArray?Array.isArray(e):"[object Array]"===tH(e)}function tz(e){return null==e?"":function(e){if("string"==typeof e)return e;if("bigint"==typeof e)return e.toString();let t=e+"";return"0"==t&&1/e==-1/0?"-0":t}(e)}function t$(e){return"string"==typeof e}function tT(e){return"number"==typeof e}function t_(e){return"object"==typeof e}function tO(e){return null!=e}function tW(e){return!e.trim().length}function tH(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":Object.prototype.toString.call(e)}let tG=Object.prototype.hasOwnProperty;class tK{constructor(e){this._keys=[],this._keyMap={};let t=0;e.forEach(e=>{let r=tV(e);this._keys.push(r),this._keyMap[r.id]=r,t+=r.weight}),this._keys.forEach(e=>{e.weight/=t})}get(e){return this._keyMap[e]}keys(){return this._keys}toJSON(){return JSON.stringify(this._keys)}}function tV(e){let t=null,r=null,n=null,a=1,s=null;if(t$(e)||tL(e))n=e,t=tU(e),r=tY(e);else{if(!tG.call(e,"name"))throw Error("Missing name property in key");let i=e.name;if(n=i,tG.call(e,"weight")&&(a=e.weight)<=0)throw Error(`Property 'weight' in key '${i}' must be a positive integer`);t=tU(i),r=tY(i),s=e.getFn}return{path:t,id:r,weight:a,src:n,getFn:s}}function tU(e){return tL(e)?e:e.split(".")}function tY(e){return tL(e)?e.join("."):e}let tq=Object.freeze({isCaseSensitive:!1,ignoreDiacritics:!1,includeScore:!1,keys:[],shouldSort:!0,sortFn:(e,t)=>e.score===t.score?e.idx<t.idx?-1:1:e.score<t.score?-1:1,includeMatches:!1,findAllMatches:!1,minMatchCharLength:1,location:0,threshold:.6,distance:100,useExtendedSearch:!1,useTokenSearch:!1,getFn:function(e,t){let r=[],n=!1,a=(e,t,s,i)=>{if(tO(e))if(t[s]){var l,o;let u=e[t[s]];if(!tO(u))return;if(s===t.length-1&&(t$(u)||tT(u)||!0===(l=u)||!1===l||t_(o=l)&&null!==o&&"[object Boolean]"==tH(l)||"bigint"==typeof u))r.push(void 0!==i?{v:tz(u),i:i}:tz(u));else if(tL(u)){n=!0;for(let e=0,r=u.length;e<r;e+=1)a(u[e],t,s+1,e)}else t.length&&a(u,t,s+1,i)}else r.push(void 0!==i?{v:e,i:i}:e)};return a(e,t$(t)?t.split("."):t,0),n?r:r[0]},ignoreLocation:!1,ignoreFieldNorm:!1,fieldNormWeight:1}),tJ=/[^ ]+/g;class tX{constructor({getFn:e=tq.getFn,fieldNormWeight:t=tq.fieldNormWeight}={}){this.norm=function(e=1,t=3){let r=new Map,n=Math.pow(10,t);return{get(t){let a=t.match(tJ).length;if(r.has(a))return r.get(a);let s=parseFloat(Math.round(1/Math.pow(a,.5*e)*n)/n);return r.set(a,s),s},clear(){r.clear()}}}(t,3),this.getFn=e,this.isCreated=!1,this.docs=[],this.keys=[],this._keysMap={},this.setIndexRecords()}setSources(e=[]){this.docs=e}setIndexRecords(e=[]){this.records=e}setKeys(e=[]){this.keys=e,this._keysMap={},e.forEach((e,t)=>{this._keysMap[e.id]=t})}create(){!this.isCreated&&this.docs.length&&(this.isCreated=!0,t$(this.docs[0])?this.docs.forEach((e,t)=>{this._addString(e,t)}):this.docs.forEach((e,t)=>{this._addObject(e,t)}),this.norm.clear())}add(e){let t=this.size();t$(e)?this._addString(e,t):this._addObject(e,t)}removeAt(e){this.records.splice(e,1);for(let t=e,r=this.size();t<r;t+=1)this.records[t].i-=1}removeAll(e){for(let t=e.length-1;t>=0;t-=1)this.records.splice(e[t],1);for(let e=0,t=this.records.length;e<t;e+=1)this.records[e].i=e}getValueForItemAtKeyId(e,t){return e[this._keysMap[t]]}size(){return this.records.length}_addString(e,t){if(!tO(e)||tW(e))return;let r={v:e,i:t,n:this.norm.get(e)};this.records.push(r)}_addObject(e,t){let r={i:t,$:{}};this.keys.forEach((t,n)=>{let a=t.getFn?t.getFn(e):this.getFn(e,t.path);if(tO(a)){if(tL(a)){let e=[];for(let t=0,r=a.length;t<r;t+=1){let r=a[t];if(tO(r)){if(t$(r)){if(!tW(r)){let n={v:r,i:t,n:this.norm.get(r)};e.push(n)}}else if(tO(r.v)){let t=t$(r.v)?r.v:tz(r.v);if(!tW(t)){let n={v:t,i:r.i,n:this.norm.get(t)};e.push(n)}}}}r.$[n]=e}else if(t$(a)&&!tW(a)){let e={v:a,n:this.norm.get(a)};r.$[n]=e}}}),this.records.push(r)}toJSON(){return{keys:this.keys.map(({getFn:e,...t})=>t),records:this.records}}}function tQ(e,t,{getFn:r=tq.getFn,fieldNormWeight:n=tq.fieldNormWeight}={}){let a=new tX({getFn:r,fieldNormWeight:n});return a.setKeys(e.map(tV)),a.setSources(t),a.create(),a}function tZ(e){if(e.length<=1)return e;e.sort((e,t)=>e[0]-t[0]||e[1]-t[1]);let t=[e[0]];for(let r=1,n=e.length;r<n;r+=1){let n=t[t.length-1],a=e[r];a[0]<=n[1]+1?n[1]=Math.max(n[1],a[1]):t.push(a)}return t}let t0={ł:"l",Ł:"L",đ:"d",Đ:"D",ø:"o",Ø:"O",ħ:"h",Ħ:"H",ŧ:"t",Ŧ:"T",ı:"i",ß:"ss"},t1=RegExp("["+Object.keys(t0).join("")+"]","g"),t2=String.prototype.normalize?e=>e.normalize("NFD").replace(/[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D3-\u08E1\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u09FE\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0AFA-\u0AFF\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C04\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D00-\u0D03\u0D3B\u0D3C\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u1885\u1886\u18A9\u1920-\u192B\u1930-\u193B\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF7-\u1CF9\u1DC0-\u1DF9\u1DFB-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C5\uA8E0-\uA8F1\uA8FF\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F]/g,"").replace(t1,e=>t0[e]):e=>e;class t3{constructor(e,{location:t=tq.location,threshold:r=tq.threshold,distance:n=tq.distance,includeMatches:a=tq.includeMatches,findAllMatches:s=tq.findAllMatches,minMatchCharLength:i=tq.minMatchCharLength,isCaseSensitive:l=tq.isCaseSensitive,ignoreDiacritics:o=tq.ignoreDiacritics,ignoreLocation:u=tq.ignoreLocation}={}){if(this.options={location:t,threshold:r,distance:n,includeMatches:a,findAllMatches:s,minMatchCharLength:i,isCaseSensitive:l,ignoreDiacritics:o,ignoreLocation:u},e=l?e:e.toLowerCase(),e=o?t2(e):e,this.pattern=e,this.chunks=[],!this.pattern.length)return;const c=(e,t)=>{this.chunks.push({pattern:e,alphabet:function(e){let t={};for(let r=0,n=e.length;r<n;r+=1){let a=e.charAt(r);t[a]=(t[a]||0)|1<<n-r-1}return t}(e),startIndex:t})},d=this.pattern.length;if(d>32){let e=0;const t=d%32,r=d-t;for(;e<r;)c(this.pattern.substr(e,32),e),e+=32;if(t){const e=d-32;c(this.pattern.substr(e),e)}}else c(this.pattern,0)}searchIn(e){let{isCaseSensitive:t,ignoreDiacritics:r,includeMatches:n}=this.options;if(e=t?e:e.toLowerCase(),e=r?t2(e):e,this.pattern===e){let t={isMatch:!0,score:0};return n&&(t.indices=[[0,e.length-1]]),t}let{location:a,distance:s,threshold:i,findAllMatches:l,minMatchCharLength:o,ignoreLocation:u}=this.options,c=[],d=0,h=!1;this.chunks.forEach(({pattern:t,alphabet:r,startIndex:f})=>{let{isMatch:m,score:p,indices:x}=function(e,t,r,{location:n=tq.location,distance:a=tq.distance,threshold:s=tq.threshold,findAllMatches:i=tq.findAllMatches,minMatchCharLength:l=tq.minMatchCharLength,includeMatches:o=tq.includeMatches,ignoreLocation:u=tq.ignoreLocation}={}){let c;if(t.length>32)throw Error("Pattern length exceeds max of 32.");let d=t.length,h=e.length,f=Math.max(0,Math.min(n,h)),m=s,p=f,x=(e,t)=>{let r=e/d;if(u)return r;let n=Math.abs(f-t);return a?r+n/a:n?1:r},g=l>1||o,b=g?Array(h):[];for(;(c=e.indexOf(t,p))>-1;)if(m=Math.min(x(0,c),m),p=c+d,g){let e=0;for(;e<d;)b[c+e]=1,e+=1}p=-1;let v=[],y=1,w=d+h,j=1<<d-1;for(let t=0;t<d;t+=1){let n=0,a=w;for(;n<a;)x(t,f+a)<=m?n=a:w=a,a=Math.floor((w-n)/2+n);w=a;let s=Math.max(1,f-a+1),l=i?h:Math.min(f+a,h)+d,o=Array(l+2);o[l+1]=(1<<t)-1;for(let n=l;n>=s;n-=1){let a=n-1,i=r[e[a]];if(g&&(b[a]=+!!i),o[n]=(o[n+1]<<1|1)&i,t&&(o[n]|=(v[n+1]|v[n])<<1|1|v[n+1]),o[n]&j&&(y=x(t,a))<=m){if(m=y,(p=a)<=f)break;s=Math.max(1,2*f-p)}}if(x(t+1,f)>m)break;v=o}let k={isMatch:p>=0,score:Math.max(.001,y)};if(g){let e=function(e=[],t=tq.minMatchCharLength){let r=[],n=-1,a=-1,s=0;for(let i=e.length;s<i;s+=1){let i=e[s];i&&-1===n?n=s:i||-1===n||((a=s-1)-n+1>=t&&r.push([n,a]),n=-1)}return e[s-1]&&s-n>=t&&r.push([n,s-1]),r}(b,l);e.length?o&&(k.indices=e):k.isMatch=!1}return k}(e,t,r,{location:a+f,distance:s,threshold:i,findAllMatches:l,minMatchCharLength:o,includeMatches:n,ignoreLocation:u});m&&(h=!0),d+=p,m&&x&&c.push(...x)});let f={isMatch:h,score:h?d/this.chunks.length:1};return h&&n&&(f.indices=tZ(c)),f}}class t5{constructor(e){this.pattern=e}static isMultiMatch(e){return t4(e,this.multiRegex)}static isSingleMatch(e){return t4(e,this.singleRegex)}search(e){return{isMatch:!1,score:1}}}function t4(e,t){let r=e.match(t);return r?r[1]:null}class t8 extends t5{constructor(e,{location:t=tq.location,threshold:r=tq.threshold,distance:n=tq.distance,includeMatches:a=tq.includeMatches,findAllMatches:s=tq.findAllMatches,minMatchCharLength:i=tq.minMatchCharLength,isCaseSensitive:l=tq.isCaseSensitive,ignoreDiacritics:o=tq.ignoreDiacritics,ignoreLocation:u=tq.ignoreLocation}={}){super(e),this._bitapSearch=new t3(e,{location:t,threshold:r,distance:n,includeMatches:a,findAllMatches:s,minMatchCharLength:i,isCaseSensitive:l,ignoreDiacritics:o,ignoreLocation:u})}static get type(){return"fuzzy"}static get multiRegex(){return/^"(.*)"$/}static get singleRegex(){return/^(.*)$/}search(e){return this._bitapSearch.searchIn(e)}}class t7 extends t5{constructor(e){super(e)}static get type(){return"include"}static get multiRegex(){return/^'"(.*)"$/}static get singleRegex(){return/^'(.*)$/}search(e){let t,r=0,n=[],a=this.pattern.length;for(;(t=e.indexOf(this.pattern,r))>-1;)r=t+a,n.push([t,r-1]);let s=!!n.length;return{isMatch:s,score:+!s,indices:n}}}let t6=[class extends t5{constructor(e){super(e)}static get type(){return"exact"}static get multiRegex(){return/^="(.*)"$/}static get singleRegex(){return/^=(.*)$/}search(e){let t=e===this.pattern;return{isMatch:t,score:+!t,indices:[0,this.pattern.length-1]}}},t7,class extends t5{constructor(e){super(e)}static get type(){return"prefix-exact"}static get multiRegex(){return/^\^"(.*)"$/}static get singleRegex(){return/^\^(.*)$/}search(e){let t=e.startsWith(this.pattern);return{isMatch:t,score:+!t,indices:[0,this.pattern.length-1]}}},class extends t5{constructor(e){super(e)}static get type(){return"inverse-prefix-exact"}static get multiRegex(){return/^!\^"(.*)"$/}static get singleRegex(){return/^!\^(.*)$/}search(e){let t=!e.startsWith(this.pattern);return{isMatch:t,score:+!t,indices:[0,e.length-1]}}},class extends t5{constructor(e){super(e)}static get type(){return"inverse-suffix-exact"}static get multiRegex(){return/^!"(.*)"\$$/}static get singleRegex(){return/^!(.*)\$$/}search(e){let t=!e.endsWith(this.pattern);return{isMatch:t,score:+!t,indices:[0,e.length-1]}}},class extends t5{constructor(e){super(e)}static get type(){return"suffix-exact"}static get multiRegex(){return/^"(.*)"\$$/}static get singleRegex(){return/^(.*)\$$/}search(e){let t=e.endsWith(this.pattern);return{isMatch:t,score:+!t,indices:[e.length-this.pattern.length,e.length-1]}}},class extends t5{constructor(e){super(e)}static get type(){return"inverse-exact"}static get multiRegex(){return/^!"(.*)"$/}static get singleRegex(){return/^!(.*)$/}search(e){let t=-1===e.indexOf(this.pattern);return{isMatch:t,score:+!t,indices:[0,e.length-1]}}},t8],t9=t6.length,re=new Set([t8.type,t7.type]),rt=[];function rr(...e){rt.push(...e)}function rn(e,t){for(let r=0,n=rt.length;r<n;r+=1){let n=rt[r];if(n.condition(e,t))return new n(e,t)}return new t3(e,t)}let ra="$and",rs="$path",ri=e=>!!(e[ra]||e.$or),rl=e=>({[ra]:Object.keys(e).map(t=>({[t]:e[t]}))});function ro(e,t,{auto:r=!0}={}){let n=e=>{if(t$(e)){let n={keyId:null,pattern:e};return r&&(n.searcher=rn(e,t)),n}let a=Object.keys(e),s=!!e[rs];if(!s&&a.length>1&&!ri(e))return n(rl(e));if(!tL(e)&&t_(e)&&!ri(e)){let n=s?e[rs]:a[0],i=s?e.$val:e[n];if(!t$(i))throw Error(`Invalid value for key ${n}`);let l={keyId:tY(n),pattern:i};return r&&(l.searcher=rn(i,t)),l}let i={children:[],operator:a[0]};return a.forEach(t=>{let r=e[t];tL(r)&&r.forEach(e=>{i.children.push(n(e))})}),i};return ri(e)||(e=rl(e)),n(e)}function ru(e,{ignoreFieldNorm:t=tq.ignoreFieldNorm}){let r=1;return e.forEach(({key:e,norm:n,score:a})=>{let s=e?e.weight:null;r*=Math.pow(0===a&&s?Number.EPSILON:a,(s||1)*(t?1:n))}),r}class rc{constructor(e){this.limit=e,this.heap=[]}get size(){return this.heap.length}shouldInsert(e){return this.size<this.limit||e<this.heap[0].score}insert(e){this.size<this.limit?(this.heap.push(e),this._bubbleUp(this.size-1)):e.score<this.heap[0].score&&(this.heap[0]=e,this._sinkDown(0))}extractSorted(e){return this.heap.sort(e)}_bubbleUp(e){let t=this.heap;for(;e>0;){let r=e-1>>1;if(t[e].score<=t[r].score)break;let n=t[e];t[e]=t[r],t[r]=n,e=r}}_sinkDown(e){let t=this.heap,r=t.length,n=e;do{let a=2*(e=n)+1,s=2*e+2;if(a<r&&t[a].score>t[n].score&&(n=a),s<r&&t[s].score>t[n].score&&(n=s),n!==e){let r=t[e];t[e]=t[n],t[n]=r}}while(n!==e)}}function rd(e,t){let r=e.matches;t.matches=[],tO(r)&&r.forEach(e=>{if(!tO(e.indices)||!e.indices.length)return;let{indices:r,value:n}=e,a={indices:r,value:n};e.key&&(a.key=e.key.src),e.idx>-1&&(a.refIndex=e.idx),t.matches.push(a)})}function rh(e,t){t.score=e.score}let rf=/\b\w+\b/g;function rm({isCaseSensitive:e=!1,ignoreDiacritics:t=!1}={}){return{tokenize:r=>(e||(r=r.toLowerCase()),t&&(r=t2(r)),r.match(rf)||[])}}function rp(e,t){for(let[r,n]of e.terms){let a=n.filter(e=>e.docIdx!==t),s=n.length-a.length;s>0&&(e.fieldCount-=s,e.df.set(r,(e.df.get(r)||0)-s),0===a.length?(e.terms.delete(r),e.df.delete(r)):e.terms.set(r,a))}}class rx{constructor(e,t,r){this.options={...tq,...t},this.options.useExtendedSearch,this.options.useTokenSearch,this._keyStore=new tK(this.options.keys),this._docs=e,this._myIndex=null,this._invertedIndex=null,this.setCollection(e,r),this._lastQuery=null,this._lastSearcher=null}_getSearcher(e){if(this._lastQuery===e)return this._lastSearcher;let t=rn(e,this._invertedIndex?{...this.options,_invertedIndex:this._invertedIndex}:this.options);return this._lastQuery=e,this._lastSearcher=t,t}setCollection(e,t){if(this._docs=e,t&&!(t instanceof tX))throw Error("Incorrect 'index' type");if(this._myIndex=t||tQ(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight}),this.options.useTokenSearch){let e=rm({isCaseSensitive:this.options.isCaseSensitive,ignoreDiacritics:this.options.ignoreDiacritics});this._invertedIndex=function(e,t,r){let n=new Map,a=new Map,s=0;function i(e,t,i,l){let o=r.tokenize(e);if(!o.length)return;s++;let u=new Map;for(let e of o)u.set(e,(u.get(e)||0)+1);for(let[e,r]of u){let s={docIdx:t,keyIdx:i,subIdx:l,tf:r},o=n.get(e);o||(o=[],n.set(e,o)),o.push(s),a.set(e,(a.get(e)||0)+1)}}for(let r of e){let{i:e,v:n,$:a}=r;if(void 0!==n){i(n,e,-1,-1);continue}if(a)for(let r=0;r<t;r++){let t=a[r];if(t)if(Array.isArray(t))for(let n of t)i(n.v,e,r,n.i??-1);else i(t.v,e,r,-1)}}return{terms:n,fieldCount:s,df:a}}(this._myIndex.records,this._myIndex.keys.length,e)}}add(e){if(tO(e)&&(this._docs.push(e),this._myIndex.add(e),this._invertedIndex)){let e=this._myIndex.records[this._myIndex.records.length-1],t=rm({isCaseSensitive:this.options.isCaseSensitive,ignoreDiacritics:this.options.ignoreDiacritics});!function(e,t,r,n){let{i:a,v:s,$:i}=t;function l(t,r,s){let i=n.tokenize(t);if(!i.length)return;e.fieldCount++;let l=new Map;for(let e of i)l.set(e,(l.get(e)||0)+1);for(let[t,n]of l){let i={docIdx:a,keyIdx:r,subIdx:s,tf:n},l=e.terms.get(t);l||(l=[],e.terms.set(t,l)),l.push(i),e.df.set(t,(e.df.get(t)||0)+1)}}if(void 0!==s)return l(s,-1,-1);if(i)for(let e=0;e<r;e++){let t=i[e];if(t)if(Array.isArray(t))for(let r of t)l(r.v,e,r.i??-1);else l(t.v,e,-1)}}(this._invertedIndex,e,this._myIndex.keys.length,t)}}remove(e=()=>!1){let t=[],r=[];for(let n=0,a=this._docs.length;n<a;n+=1)e(this._docs[n],n)&&(t.push(this._docs[n]),r.push(n));if(r.length){if(this._invertedIndex)for(let e of r)rp(this._invertedIndex,e);for(let e=r.length-1;e>=0;e-=1)this._docs.splice(r[e],1);this._myIndex.removeAll(r)}return t}removeAt(e){this._invertedIndex&&rp(this._invertedIndex,e);let t=this._docs.splice(e,1)[0];return this._myIndex.removeAt(e),t}getIndex(){return this._myIndex}search(e,t){let r,{limit:n=-1}=t||{},{includeMatches:a,includeScore:s,shouldSort:i,sortFn:l,ignoreFieldNorm:o}=this.options;if(t$(e)&&!e.trim()){let e=this._docs.map((e,t)=>({item:e,refIndex:t}));return tT(n)&&n>-1&&(e=e.slice(0,n)),e}if(tT(n)&&n>0&&t$(e)){let t=new rc(n);t$(this._docs[0])?this._searchStringList(e,{heap:t,ignoreFieldNorm:o}):this._searchObjectList(e,{heap:t,ignoreFieldNorm:o}),r=t.extractSorted(l)}else!function(e,{ignoreFieldNorm:t=tq.ignoreFieldNorm}){e.forEach(e=>{e.score=ru(e.matches,{ignoreFieldNorm:t})})}(r=t$(e)?t$(this._docs[0])?this._searchStringList(e):this._searchObjectList(e):this._searchLogical(e),{ignoreFieldNorm:o}),i&&r.sort(l),tT(n)&&n>-1&&(r=r.slice(0,n));return function(e,t,{includeMatches:r=tq.includeMatches,includeScore:n=tq.includeScore}={}){let a=[];return r&&a.push(rd),n&&a.push(rh),e.map(e=>{let{idx:r}=e,n={item:t[r],refIndex:r};return a.length&&a.forEach(t=>{t(e,n)}),n})}(r,this._docs,{includeMatches:a,includeScore:s})}_searchStringList(e,{heap:t,ignoreFieldNorm:r}={}){let n=this._getSearcher(e),{records:a}=this._myIndex,s=t?null:[];return a.forEach(({v:e,i:a,n:i})=>{if(!tO(e))return;let{isMatch:l,score:o,indices:u}=n.searchIn(e);if(l){let n={item:e,idx:a,matches:[{score:o,value:e,norm:i,indices:u}]};t?(n.score=ru(n.matches,{ignoreFieldNorm:r}),t.shouldInsert(n.score)&&t.insert(n)):s.push(n)}}),s}_searchLogical(e){let t=ro(e,this.options),r=(e,t,n)=>{if(!("children"in e)){let r,{keyId:a,searcher:s}=e;return(null===a?(r=[],this._myIndex.keys.forEach((e,n)=>{r.push(...this._findMatches({key:e,value:t[n],searcher:s}))})):r=this._findMatches({key:this._keyStore.get(a),value:this._myIndex.getValueForItemAtKeyId(t,a),searcher:s}),r&&r.length)?[{idx:n,item:t,matches:r}]:[]}let{children:a,operator:s}=e,i=[];for(let e=0,l=a.length;e<l;e+=1){let l=r(a[e],t,n);if(l.length)i.push(...l);else if(s===ra)return[]}return i},n=this._myIndex.records,a=new Map,s=[];return n.forEach(({$:e,i:n})=>{if(tO(e)){let i=r(t,e,n);i.length&&(a.has(n)||(a.set(n,{idx:n,item:e,matches:[]}),s.push(a.get(n))),i.forEach(({matches:e})=>{a.get(n).matches.push(...e)}))}}),s}_searchObjectList(e,{heap:t,ignoreFieldNorm:r}={}){let n=this._getSearcher(e),{keys:a,records:s}=this._myIndex,i=t?null:[];return s.forEach(({$:e,i:s})=>{if(!tO(e))return;let l=[],o=!1,u=!1;if(a.forEach((t,r)=>{let a=this._findMatches({key:t,value:e[r],searcher:n});a.length?(l.push(...a),a[0].hasInverse&&(u=!0)):o=!0}),(!u||!o)&&l.length){let n={idx:s,item:e,matches:l};t?(n.score=ru(n.matches,{ignoreFieldNorm:r}),t.shouldInsert(n.score)&&t.insert(n)):i.push(n)}}),i}_findMatches({key:e,value:t,searcher:r}){if(!tO(t))return[];let n=[];if(tL(t))t.forEach(({v:t,i:a,n:s})=>{if(!tO(t))return;let{isMatch:i,score:l,indices:o,hasInverse:u}=r.searchIn(t);i&&n.push({score:l,key:e,value:t,idx:a,norm:s,indices:o,hasInverse:u})});else{let{v:a,n:s}=t,{isMatch:i,score:l,indices:o,hasInverse:u}=r.searchIn(a);i&&n.push({score:l,key:e,value:a,norm:s,indices:o,hasInverse:u})}return n}}rx.version="7.3.0",rx.createIndex=tQ,rx.parseIndex=function(e,{getFn:t=tq.getFn,fieldNormWeight:r=tq.fieldNormWeight}={}){let{keys:n,records:a}=e,s=new tX({getFn:t,fieldNormWeight:r});return s.setKeys(n),s.setIndexRecords(a),s},rx.config=tq,rx.match=function(e,t,r){return rn(e,{...tq,...r}).searchIn(t)},rx.parseQuery=ro,rr(class{constructor(e,{isCaseSensitive:t=tq.isCaseSensitive,ignoreDiacritics:r=tq.ignoreDiacritics,includeMatches:n=tq.includeMatches,minMatchCharLength:a=tq.minMatchCharLength,ignoreLocation:s=tq.ignoreLocation,findAllMatches:i=tq.findAllMatches,location:l=tq.location,threshold:o=tq.threshold,distance:u=tq.distance}={}){this.query=null,this.options={isCaseSensitive:t,ignoreDiacritics:r,includeMatches:n,minMatchCharLength:a,findAllMatches:i,ignoreLocation:s,location:l,threshold:o,distance:u},e=t?e:e.toLowerCase(),e=r?t2(e):e,this.pattern=e,this.query=function(e,t={}){return e.replace(/\\\|/g,"\0").split("|").map(e=>{let r=(function(e){let t=[],r=e.length,n=0;for(;n<r;){for(;n<r&&" "===e[n];)n++;if(n>=r)break;let a=n;for(;a<r&&" "!==e[a]&&'"'!==e[a];)a++;if(a<r&&'"'===e[a]){for(a++;a<r;){if('"'===e[a]){let t=a+1;if(t>=r||" "===e[t]){a++;break}if("$"===e[t]&&(t+1>=r||" "===e[t+1])){a+=2;break}}a++}t.push(e.substring(n,a)),n=a}else{for(;a<r&&" "!==e[a];)a++;t.push(e.substring(n,a)),n=a}}return t})(e.replace(/\u0000/g,"|").trim()).filter(e=>e&&!!e.trim()),n=[];for(let e=0,a=r.length;e<a;e+=1){let a=r[e],s=!1,i=-1;for(;!s&&++i<t9;){let e=t6[i],r=e.isMultiMatch(a);r&&(n.push(new e(r,t)),s=!0)}if(!s)for(i=-1;++i<t9;){let e=t6[i],r=e.isSingleMatch(a);if(r){n.push(new e(r,t));break}}}return n})}(this.pattern,this.options)}static condition(e,t){return t.useExtendedSearch}searchIn(e){let t=this.query;if(!t)return{isMatch:!1,score:1};let{includeMatches:r,isCaseSensitive:n,ignoreDiacritics:a}=this.options;e=n?e:e.toLowerCase(),e=a?t2(e):e;let s=0,i=[],l=0,o=!1;for(let n=0,a=t.length;n<a;n+=1){let a=t[n];i.length=0,s=0,o=!1;for(let t=0,n=a.length;t<n;t+=1){let n=a[t],{isMatch:u,indices:c,score:d}=n.search(e);if(u){s+=1,l+=d;let e=n.constructor.type;e.startsWith("inverse")&&(o=!0),r&&(re.has(e)?i.push(...c):i.push(c))}else{l=0,s=0,i.length=0,o=!1;break}}if(s){let e={isMatch:!0,score:l/s};return o&&(e.hasInverse=!0),r&&(e.indices=tZ(i)),e}}return{isMatch:!1,score:1}}}),rr(class{static condition(e,t){return t.useTokenSearch}constructor(e,t){this.options=t,this.analyzer=rm({isCaseSensitive:t.isCaseSensitive,ignoreDiacritics:t.ignoreDiacritics});const r=this.analyzer.tokenize(e),{df:n,fieldCount:a}=t._invertedIndex;for(const e of(this.termSearchers=[],this.idfWeights=[],r)){this.termSearchers.push(new t3(e,{location:t.location,threshold:t.threshold,distance:t.distance,includeMatches:t.includeMatches,findAllMatches:t.findAllMatches,minMatchCharLength:t.minMatchCharLength,isCaseSensitive:t.isCaseSensitive,ignoreDiacritics:t.ignoreDiacritics,ignoreLocation:!0}));const r=n.get(e)||0,s=Math.log(1+(a-r+.5)/(r+.5));this.idfWeights.push(s)}}searchIn(e){if(!this.termSearchers.length)return{isMatch:!1,score:1};let t=[],r=0,n=0,a=0;for(let s=0;s<this.termSearchers.length;s++){let i=this.termSearchers[s].searchIn(e),l=this.idfWeights[s];n+=l,i.isMatch&&(a++,r+=l*(1-i.score),i.indices&&t.push(...i.indices))}if(0===a)return{isMatch:!1,score:1};let s={isMatch:!0,score:Math.max(.001,n>0?1-r/n:0)};return this.options.includeMatches&&t.length&&(s.indices=tZ(t)),s}}),rx.use=function(...e){e.forEach(e=>rr(e))};var rg=e.i(113205),rb=e.i(24887),rv=e.i(331548),ry=e.i(744838),rw=e.i(349369),rj=e.i(661660),rk=e.i(216735),rC=e.i(238017),rN=e.i(391678),rS=e.i(515293),rE=e.i(870634),rA=e.i(908301),rD=e.i(597736),rM=e.i(260949);let rI=(0,d.default)("file-code",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 12.5 8 15l2 2.5",key:"1tg20x"}],["path",{d:"m14 12.5 2 2.5-2 2.5",key:"yinavb"}]]),rP=(0,d.default)("file-braces",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 12a1 1 0 0 0-1 1v1a1 1 0 0 1-1 1 1 1 0 0 1 1 1v1a1 1 0 0 0 1 1",key:"1oajmo"}],["path",{d:"M14 18a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-1a1 1 0 0 0-1-1",key:"mpwhp6"}]]);var rR=e.i(652459),rB=e.i(819614);function rF({entry:e,worktreePath:t,depth:r,gitStatusMap:n,expandedPaths:a,childrenMap:l,selectedPath:o,onFileSelect:u,onToggleExpand:c,onContextMenu:d,renamingPath:h,onRenameSubmit:f,onRenameCancel:m,creatingIn:p,onCreateSubmit:x,onCreateCancel:g}){let{t:b}=(0,rw.useI18n)(),v=a.has(e.relativePath),y=o===e.relativePath,w=h===e.relativePath,j=n[e.relativePath],k=l.get(e.relativePath)??[],C=e.isDirectory&&p?.parentPath===e.relativePath&&v,N=(0,i.useRef)(null),S=(0,i.useRef)(null);(0,i.useEffect)(()=>{w&&N.current&&(N.current.focus(),N.current.select())},[w]),(0,i.useEffect)(()=>{C&&S.current&&S.current.focus()},[C]);let E=["flex items-center gap-1 py-0.5 px-1 cursor-pointer hover:bg-accent hover:text-accent-foreground rounded-sm min-h-[28px]",y?"bg-secondary text-secondary-foreground font-medium":""].filter(Boolean).join(" "),A={paddingLeft:`calc(${r} * 8px + 4px)`};return(0,s.jsxs)("div",{children:[(0,s.jsxs)("div",{className:E,style:A,onClick:()=>{if(e.isDirectory)c(e.relativePath);else{let r=t.endsWith("/")?t.slice(0,-1):t,n=e.relativePath.startsWith("/")?e.relativePath.slice(1):e.relativePath;u(`${r}/${n}`)}},onContextMenu:t=>{t.preventDefault(),d(e,t.clientX,t.clientY)},role:"treeitem","aria-expanded":e.isDirectory?v:void 0,children:[e.isDirectory?(0,s.jsx)("span",{className:"flex-shrink-0",children:v?(0,s.jsx)(rM.ChevronDown,{className:"h-3 w-3 transition-transform duration-150"}):(0,s.jsx)(rD.ChevronRight,{className:"h-3 w-3 transition-transform duration-150"})}):(0,s.jsx)("span",{className:"h-3 w-3 flex-shrink-0"}),function(e,t,r){if(t)return r?(0,s.jsx)(rB.FolderOpen,{className:"h-3.5 w-3.5 flex-shrink-0 text-amber-400"}):(0,s.jsx)(tR.Folder,{className:"h-3.5 w-3.5 flex-shrink-0 text-amber-400"});let n=e.includes(".")?e.split(".").pop()?.toLowerCase():"";return"ts"===n||"tsx"===n?(0,s.jsx)(rI,{className:"h-3.5 w-3.5 flex-shrink-0 text-blue-400"}):"json"===n?(0,s.jsx)(rP,{className:"h-3.5 w-3.5 flex-shrink-0 text-yellow-400"}):"md"===n||"mdx"===n?(0,s.jsx)(rR.FileText,{className:"h-3.5 w-3.5 flex-shrink-0 text-muted-foreground"}):"css"===n||"scss"===n||"sass"===n?(0,s.jsx)(tF,{className:"h-3.5 w-3.5 flex-shrink-0 text-pink-400"}):(0,s.jsx)(tF,{className:"h-3.5 w-3.5 flex-shrink-0 text-muted-foreground"})}(e.name,e.isDirectory,v),w?(0,s.jsx)("input",{ref:N,type:"text",defaultValue:e.name,className:"ring-1 ring-primary rounded-sm px-1 text-[13px] w-full bg-background",placeholder:b("taskPage.fileTree.renamePlaceholder"),onKeyDown:t=>{if("Enter"===t.key){let r=t.currentTarget.value.trim();r&&r!==e.name?f(e,r):m()}else"Escape"===t.key&&m()},onBlur:m,onClick:e=>e.stopPropagation()}):(0,s.jsx)("span",{className:"text-[13px] truncate flex-1",children:e.name}),j&&!w&&(0,s.jsx)("span",{className:`ml-auto text-[11px] font-normal ${"M"===j?"text-amber-500 dark:text-amber-400":"A"===j?"text-emerald-500 dark:text-emerald-400":"text-red-500 dark:text-red-400"}`,children:j})]}),e.isDirectory&&v&&(0,s.jsxs)("div",{children:[k.map(e=>(0,s.jsx)(rF,{entry:e,worktreePath:t,depth:r+1,gitStatusMap:n,expandedPaths:a,childrenMap:l,selectedPath:o,onFileSelect:u,onToggleExpand:c,onContextMenu:d,renamingPath:h,onRenameSubmit:f,onRenameCancel:m,creatingIn:p,onCreateSubmit:x,onCreateCancel:g},e.relativePath)),C&&(0,s.jsxs)("div",{className:"flex items-center gap-1 py-0.5 px-1 min-h-[28px]",style:{paddingLeft:`calc(${r+1} * 8px + 4px)`},children:[(0,s.jsx)("span",{className:"h-3 w-3 flex-shrink-0"}),p?.type==="folder"?(0,s.jsx)(tR.Folder,{className:"h-3.5 w-3.5 flex-shrink-0 text-amber-400"}):(0,s.jsx)(tF,{className:"h-3.5 w-3.5 flex-shrink-0 text-muted-foreground"}),(0,s.jsx)("input",{ref:S,type:"text",className:"ring-1 ring-primary rounded-sm px-1 text-[13px] w-full bg-background",placeholder:b(p?.type==="folder"?"taskPage.fileTree.newFolderPlaceholder":"taskPage.fileTree.newFilePlaceholder"),onKeyDown:e=>{if("Enter"===e.key){let t=e.currentTarget.value.trim();t&&p?x(p.parentPath,t,p.type):g()}else"Escape"===e.key&&g()},onBlur:g})]})]})]})}var rL=e.i(905234);function rz({entry:e,x:t,y:r,onClose:n,onNewFile:a,onNewFolder:l,onRename:o,onDelete:u,onRevealInFinder:c}){let{t:d}=(0,rw.useI18n)(),h=(0,i.useRef)(null);(0,i.useEffect)(()=>{let e=e=>{h.current&&!h.current.contains(e.target)&&n()},t=e=>{"Escape"===e.key&&n()};return document.addEventListener("mousedown",e),document.addEventListener("keydown",t),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("keydown",t)}},[n]);let f=".git"===e.name||".git"===e.relativePath,m="flex items-center px-3 py-1.5 text-xs cursor-pointer hover:bg-accent rounded-sm w-full text-left",p=(0,s.jsxs)("div",{ref:h,style:{position:"fixed",top:r,left:t,zIndex:9999},className:"bg-popover border border-border rounded-md shadow-md py-1 min-w-[160px]",children:[(0,s.jsx)("button",{type:"button",className:m,onClick:()=>{a(e),n()},children:d("taskPage.fileTree.newFile")}),(0,s.jsx)("button",{type:"button",className:m,onClick:()=>{l(e),n()},children:d("taskPage.fileTree.newFolder")}),(0,s.jsx)("hr",{className:"my-1 border-border"}),(0,s.jsx)("button",{type:"button",className:m,onClick:()=>{o(e),n()},children:d("taskPage.fileTree.rename")}),c&&(0,s.jsx)("button",{type:"button",className:m,onClick:()=>{c(e),n()},children:d("taskPage.fileTree.revealInFinder")}),!f&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("hr",{className:"my-1 border-border"}),(0,s.jsx)("button",{type:"button",className:`${m} text-destructive hover:bg-destructive/10`,onClick:()=>{u(e),n()},children:d("taskPage.fileTree.delete")})]})]});return"u"<typeof document?null:(0,rL.createPortal)(p,document.body)}function r$({worktreePath:t,baseBranch:r,worktreeBranch:n,executionStatus:a,onFileSelect:l}){let{t:o}=(0,rw.useI18n)(),[u,c]=(0,i.useState)([]),[d,f]=(0,i.useState)(new Set),[m,p]=(0,i.useState)(new Map),[x,g]=(0,i.useState)({}),[v,y]=(0,i.useState)(null),[w,j]=(0,i.useState)(null),[k,C]=(0,i.useState)(null),[N,S]=(0,i.useState)(null),[E,A]=(0,i.useState)(null),[D,M]=(0,i.useState)(!1),[I,P]=(0,i.useState)(!1),[R,B]=(0,i.useState)(""),[F,L]=(0,i.useState)([]),[z,$]=(0,i.useState)(!1),[T,_]=(0,i.useState)(0),O=(0,i.useRef)(null),W=(0,i.useRef)(null),H=(0,i.useRef)(d);H.current=d;let G=(0,i.useCallback)(async()=>{if(t)try{let e=await (0,rj.listDirectory)(t,".");c(e),P(!1)}catch{P(!0)}},[t]),K=(0,i.useCallback)(async e=>{if(t)try{let r=await (0,rj.listDirectory)(t,e);p(t=>{let n=new Map(t);return n.set(e,r),n})}catch{}},[t]),V=(0,i.useCallback)(async()=>{if(t)try{let e=await (0,rj.listDirectory)(t,".");for(let r of(c(e),H.current)){let e=await (0,rj.listDirectory)(t,r).catch(()=>null);e&&p(t=>{let n=new Map(t);return n.set(r,e),n})}}catch{}},[t]);(0,i.useEffect)(()=>{t&&(M(!0),P(!1),c([]),p(new Map),f(new Set),y(null),G().finally(()=>M(!1)),(0,rk.getGitStatus)(t,r,n).then(g).catch(()=>g({})))},[t,r,n,G]),(0,i.useEffect)(()=>{if("RUNNING"!==a)return;let e=setInterval(V,2e3);return()=>clearInterval(e)},[a,V]);let U=(0,i.useCallback)(e=>{f(t=>{let r=new Set(t);return r.has(e)?r.delete(e):(r.add(e),m.has(e)||K(e)),r})},[m,K]),Y=(0,i.useCallback)(e=>{let r=(t??"").endsWith("/")?t??"":`${t??""}/`;y(e.startsWith(r)?e.slice(r.length):e),l(e)},[t,l]),q=(0,i.useCallback)((e,t,r)=>{S({entry:e,x:t,y:r})},[]),J=(0,i.useCallback)(e=>{C({parentPath:e.isDirectory?e.relativePath:e.relativePath.includes("/")?e.relativePath.slice(0,e.relativePath.lastIndexOf("/")):".",type:"file"}),e.isDirectory&&(f(t=>{let r=new Set(t);return r.add(e.relativePath),r}),m.has(e.relativePath)||K(e.relativePath))},[m,K]),X=(0,i.useCallback)(e=>{C({parentPath:e.isDirectory?e.relativePath:e.relativePath.includes("/")?e.relativePath.slice(0,e.relativePath.lastIndexOf("/")):".",type:"folder"}),e.isDirectory&&(f(t=>{let r=new Set(t);return r.add(e.relativePath),r}),m.has(e.relativePath)||K(e.relativePath))},[m,K]),Q=(0,i.useCallback)(e=>{j(e.relativePath)},[]),Z=(0,i.useCallback)(e=>{A(e)},[]),ee=(0,i.useCallback)(async(e,r)=>{if(!t)return;j(null);let n=e.relativePath.includes("/")?e.relativePath.slice(0,e.relativePath.lastIndexOf("/")):".",a="."===n?r:`${n}/${r}`;try{await (0,rS.renameEntry)(t,e.relativePath,a),await V()}catch{}},[t,V]),et=(0,i.useCallback)(()=>{j(null)},[]),er=(0,i.useCallback)(async(e,r,n)=>{if(!t)return;C(null);let a="."===e?r:`${e}/${r}`;try{"file"===n?await (0,rC.createFile)(t,a):await (0,rN.createDirectory)(t,a),await V()}catch{}},[t,V]),en=(0,i.useCallback)(()=>{C(null)},[]),ea=async()=>{if(t&&E){A(null);try{await (0,rE.deleteEntry)(t,E.relativePath),await V()}catch{}}},es=(0,i.useCallback)(async()=>{if(t&&!z)try{let e=await (0,rA.listAllFiles)(t);L(e),$(!0)}catch{}},[t,z]);(0,i.useEffect)(()=>{L([]),$(!1),B("")},[t]);let ei=(0,i.useMemo)(()=>new rx(F,{threshold:.4,distance:200,includeMatches:!0}),[F]),el=(0,i.useMemo)(()=>R.trim()?ei.search(R.trim(),{limit:30}):[],[ei,R]),eo=(0,i.useCallback)(e=>{if("Escape"===e.key){B(""),O.current?.blur();return}if(el.length){if("ArrowDown"===e.key)e.preventDefault(),_(e=>Math.min(e+1,el.length-1));else if("ArrowUp"===e.key)e.preventDefault(),_(e=>Math.max(e-1,0));else if("Enter"===e.key){e.preventDefault();let r=el[T];r&&(Y(`${t}/${r.item}`),B(""))}}},[el,T,t,Y]);if((0,i.useEffect)(()=>{let e=W.current;if(!e)return;let t=e.querySelector("[data-highlighted='true']");t&&t.scrollIntoView({block:"nearest"})},[T]),!t)return(0,s.jsx)(rg.EmptyState,{icon:h,title:o("taskPage.fileTree.emptyHeading"),description:o("taskPage.fileTree.emptyBody"),className:"h-full"});if(I)return(0,s.jsxs)("div",{className:"flex h-full flex-col items-center justify-center gap-3 p-6 text-center",children:[(0,s.jsx)(tP.AlertCircle,{className:"h-8 w-8 text-destructive"}),(0,s.jsx)("p",{className:"text-sm text-muted-foreground",children:o("taskPage.fileTree.loadError")}),(0,s.jsx)("button",{type:"button",className:"text-xs text-primary underline cursor-pointer",onClick:()=>{P(!1),M(!0),G().finally(()=>M(!1))},children:"Retry"})]});if(!D&&0===u.length)return(0,s.jsx)(rg.EmptyState,{icon:tR.Folder,title:o("taskPage.fileTree.emptyDir"),className:"h-full"});let eu=R.trim().length>0;return(0,s.jsxs)("div",{className:"h-full flex flex-col",children:[(0,s.jsx)("div",{className:"flex-shrink-0 px-2 py-1.5 border-b border-border",children:(0,s.jsxs)("div",{className:"relative",children:[(0,s.jsx)(b.Search,{className:"absolute left-2 top-1/2 -translate-y-1/2 h-3.5 w-3.5 text-muted-foreground"}),(0,s.jsx)("input",{ref:O,type:"text",value:R,placeholder:o("taskPage.fileTree.searchPlaceholder"),className:"w-full h-7 pl-7 pr-7 text-xs bg-muted/50 border border-border rounded-md outline-none focus:border-primary/50 focus:bg-background transition-colors placeholder:text-muted-foreground/60",onChange:e=>{B(e.target.value),_(0),z||es()},onKeyDown:eo}),eu&&(0,s.jsx)("button",{type:"button",className:"absolute right-1.5 top-1/2 -translate-y-1/2 p-0.5 rounded hover:bg-muted-foreground/20 text-muted-foreground",onClick:()=>B(""),children:(0,s.jsx)(tB.X,{className:"h-3 w-3"})})]})}),D&&(0,s.jsx)("div",{className:"h-0.5 w-full bg-primary/30 animate-pulse flex-shrink-0"}),eu?(0,s.jsx)(rb.ScrollArea,{className:"flex-1",children:(0,s.jsx)("div",{ref:W,className:"py-1",children:0===el.length?(0,s.jsx)("p",{className:"px-3 py-4 text-xs text-muted-foreground text-center",children:o("taskPage.fileTree.searchNoResults")}):el.map((e,r)=>{let n=e.item,a=n.split("/").pop()??n,i=n.includes("/")?n.slice(0,n.lastIndexOf("/")):"",l=new Set;if(e.matches)for(let t of e.matches)for(let[e,r]of t.indices)for(let t=e;t<=r;t++)l.add(t);let o=n.length-a.length,u=(e,t)=>{let r=[],n=0;for(;n<e.length;){let a=l.has(n+t),i=n+1;for(;i<e.length&&l.has(i+t)===a;)i++;let o=e.slice(n,i);r.push(a?(0,s.jsx)("span",{className:"text-primary font-semibold",children:o},n):(0,s.jsx)("span",{children:o},n)),n=i}return r};return(0,s.jsxs)("button",{type:"button","data-highlighted":r===T,className:`w-full flex items-center gap-2 px-3 py-1 text-left text-xs hover:bg-accent cursor-pointer ${r===T?"bg-accent":""}`,onClick:()=>{Y(`${t}/${n}`),B("")},onMouseEnter:()=>_(r),children:[(0,s.jsx)(tF,{className:"h-3.5 w-3.5 flex-shrink-0 text-muted-foreground"}),(0,s.jsxs)("span",{className:"truncate",children:[(0,s.jsx)("span",{className:"text-foreground",children:u(a,o)}),i&&(0,s.jsx)("span",{className:"ml-1.5 text-muted-foreground",children:u(i,0)})]})]},n)})})}):(0,s.jsx)(rb.ScrollArea,{className:"flex-1",children:(0,s.jsx)("div",{className:"py-1",children:u.map(e=>(0,s.jsx)(rF,{entry:e,worktreePath:t,depth:0,gitStatusMap:x,expandedPaths:d,childrenMap:m,selectedPath:v,onFileSelect:Y,onToggleExpand:U,onContextMenu:q,renamingPath:w,onRenameSubmit:ee,onRenameCancel:et,creatingIn:k,onCreateSubmit:er,onCreateCancel:en},e.relativePath))})}),N&&(0,s.jsx)(rz,{entry:N.entry,x:N.x,y:N.y,onClose:()=>S(null),onNewFile:J,onNewFolder:X,onRename:Q,onDelete:Z,onRevealInFinder:t?r=>{e.A(555273).then(({revealInFinder:e})=>{e(t,r.relativePath).catch(()=>{})})}:void 0}),(0,s.jsx)(rv.Dialog,{open:null!==E,onOpenChange:e=>{e||A(null)},children:(0,s.jsxs)(rv.DialogContent,{children:[(0,s.jsx)(rv.DialogHeader,{children:(0,s.jsx)(rv.DialogTitle,{children:o("taskPage.fileTree.deleteConfirmHeading")})}),(0,s.jsx)("p",{className:"text-sm text-muted-foreground",children:E?.isDirectory?o("taskPage.fileTree.deleteConfirmBodyFolder",{name:E.name}):o("taskPage.fileTree.deleteConfirmBody",{name:E?.name??""})}),(0,s.jsxs)(rv.DialogFooter,{children:[(0,s.jsx)(ry.Button,{variant:"outline",onClick:()=>A(null),children:o("common.cancel")}),(0,s.jsx)(ry.Button,{variant:"destructive",onClick:ea,children:o("taskPage.fileTree.deleteConfirmAction")})]})]})})]})}var rT=e.i(673898);e.i(251449);var r_=e.i(302320),r_=r_,rO=e.i(387104),rW=e.i(151201),rH=e.i(248317),rG=e.i(75368);function rK({tabs:e,activeTabPath:t,onTabClick:r,onTabClose:n}){let{t:a}=(0,rw.useI18n)();return 0===e.length?null:(0,s.jsx)("div",{className:"header-xs flex items-stretch overflow-x-auto bg-card flex-shrink-0",children:e.map(e=>{let i=e.path===t;return(0,s.jsxs)("div",{role:"tab","aria-selected":i,onClick:()=>r(e.path),className:["flex items-center gap-1.5 px-3 text-sm whitespace-nowrap cursor-pointer select-none border-b-2",i?"border-primary text-foreground font-medium":"border-transparent text-muted-foreground hover:text-foreground"].join(" "),children:[e.isDiff&&(0,s.jsx)("span",{className:"text-amber-400 text-[10px] font-mono font-bold",children:"M"}),e.isDirty&&(0,s.jsx)("span",{className:"text-primary text-xs",children:"●"}),(0,s.jsx)("span",{children:e.filename}),(0,s.jsx)("button",{type:"button","aria-label":a("editor.closeTab"),onClick:t=>{t.stopPropagation(),n(e.path)},className:"text-muted-foreground hover:text-foreground ml-0.5 flex items-center",children:(0,s.jsx)(tB.X,{className:"w-3 h-3"})})]},e.path)})})}var r_=r_;r_.default.config({paths:{vs:"/vs"}});let rV=(0,rT.default)(()=>e.A(286723).then(e=>({default:e.DiffEditor})),{loadableGenerated:{modules:[466255]},ssr:!1}),rU={ts:"typescript",tsx:"typescript",js:"javascript",jsx:"javascript",json:"json",md:"markdown",css:"css",html:"html",py:"python",sh:"shell",yaml:"yaml",yml:"yaml",vue:"html",svelte:"html",prisma:"prisma",txt:"plaintext"};function rY({originalContent:t,modifiedContent:r,filePath:n,language:a,onModifiedChange:l,readOnly:o=!1}){let{resolvedTheme:u}=(0,rO.useTheme)(),c="dark"===u?"vs-dark":"light",d=a??rU[n.split(".").pop()??""]??"plaintext",h=(0,i.useRef)(null);return(0,i.useEffect)(()=>{e.A(885431).then(({loader:e})=>{e.init().then(e=>{e.editor.setTheme(c)})})},[c]),(0,s.jsx)(rV,{height:"100%",theme:c,original:t,modified:r,language:d,onMount:e=>{if(h.current=e,l){let t=e.getModifiedEditor();t.onDidChangeModelContent(()=>{l(t.getValue())})}},options:{readOnly:o,originalEditable:!1,automaticLayout:!0,minimap:{enabled:!1},fontSize:13,fontFamily:'"JetBrains Mono", "Geist Mono", monospace',scrollBeyondLastLine:!1,renderSideBySide:!0},loading:(0,s.jsx)("div",{className:"flex h-full items-center justify-center bg-muted/20",children:(0,s.jsx)("span",{className:"text-sm text-muted-foreground",children:"Loading diff editor..."})})})}r_.default.config({paths:{vs:"/vs"}});let rq=(0,rT.default)(()=>e.A(286723).then(e=>({default:e.default})),{loadableGenerated:{modules:[466255]},ssr:!1}),rJ={ts:"typescript",tsx:"typescript",js:"javascript",jsx:"javascript",json:"json",md:"markdown",css:"css",html:"html",py:"python",sh:"shell",yaml:"yaml",yml:"yaml",vue:"html",svelte:"html",prisma:"prisma",txt:"plaintext"};function rX({worktreePath:t,selectedFilePath:r,onFilePathChange:n,onSave:a,selectedLine:l,diffFileRequest:o}){let{t:u}=(0,rw.useI18n)(),{resolvedTheme:c}=(0,rO.useTheme)(),d="dark"===c?"vs-dark":"light",[h,f]=(0,i.useState)([]),[m,p]=(0,i.useState)(null),x=(0,i.useRef)(null),g=(0,i.useRef)(null),b=(0,i.useRef)(new Map),v=(0,i.useRef)(null),y=(0,i.useRef)(void 0),w=(0,i.useRef)(null);function j(e){"success"===e?rW.toast.success(u("editor.saveSuccess")):rW.toast.error(u("editor.saveError"))}(0,i.useEffect)(()=>{v.current=h.find(e=>e.path===m)??null},[h,m]),(0,i.useEffect)(()=>{y.current=a},[a]),(0,i.useEffect)(()=>{e.A(885431).then(({loader:e})=>{e.init().then(e=>{e.editor.setTheme(d)})})},[d]),(0,i.useEffect)(()=>{if(!r)return;if(w.current=r,h.find(e=>e.path===r)){p(r),n?.(r);return}let e=r.startsWith(t+"/")?r.slice(t.length+1):r,a=e.split("/").pop()??e;(0,rH.readFileContent)(t,e).then(t=>{if(w.current!==r)return;let s={path:r,relativePath:e,filename:a,content:t,isDirty:!1};f(e=>e.some(e=>e.path===r)?e:[...e,s]),p(r),n?.(r)}).catch(()=>{})},[r,t]),(0,i.useEffect)(()=>{if(!o)return;let{relativePath:e,originalContent:r}=o,n="diff:"+(t+"/")+e,a=e.split("/").pop()??e;h.find(e=>e.path===n)?p(n):(0,rH.readFileContent)(t,e).then(t=>{let s={path:n,relativePath:e,filename:a,content:t,isDirty:!1,isDiff:!0,originalContent:r};f(e=>e.some(e=>e.path===n)?e:[...e,s]),p(n)}).catch(()=>{})},[o,t]),(0,i.useEffect)(()=>{if(!l||!x.current)return;let e=x.current,t=setTimeout(()=>{e.revealLineInCenter(l),e.setPosition({lineNumber:l,column:1})},50);return()=>clearTimeout(t)},[l,m]),(0,i.useEffect)(()=>{let e=x.current,t=g.current;if(!e||!t||!m)return;let r=h.find(e=>e.path===m);if(!r)return;let n=t.Uri.parse("file://"+r.path),a=b.current.get(r.path);if(!a){let e=rJ[r.filename.split(".").pop()??""]??"plaintext";a=t.editor.createModel(r.content,e,n),b.current.set(r.path,a)}e.setModel(a)},[m,h]);let k=h.find(e=>e.path===m);return(0,s.jsxs)("div",{className:"flex flex-col h-full overflow-hidden relative",children:[(0,s.jsx)(rK,{tabs:h,activeTabPath:m,onTabClick:function(e){p(e),n?.(e)},onTabClose:function(e){let t=b.current.get(e);t?.dispose&&t.dispose(),b.current.delete(e),f(t=>{let r=t.filter(t=>t.path!==e);if(m===e){let e=r.length>0?r[r.length-1].path:null;p(e),n?.(e)}return r})}}),0===h.length?(0,s.jsxs)("div",{className:"flex h-full flex-col items-center justify-center text-center",children:[(0,s.jsx)("p",{className:"text-sm text-muted-foreground",children:u("editor.selectFile")}),(0,s.jsx)("p",{className:"text-xs text-muted-foreground mt-1",children:u("editor.selectFileHint")})]}):k?.isDiff?(0,s.jsx)("div",{className:"flex-1 min-h-0",children:(0,s.jsx)(rY,{originalContent:k.originalContent??"",modifiedContent:k.content,filePath:k.relativePath,onModifiedChange:e=>{f(t=>t.map(t=>t.path===m?{...t,content:e,isDirty:!0}:t))}})}):(0,s.jsx)("div",{className:"flex-1 min-h-0",children:(0,s.jsx)(rq,{height:"100%",theme:d,value:k?.content??"",onMount:function(e,r){x.current=e,g.current=r,e.addAction({id:"save-file",label:"Save File",keybindings:[r.KeyMod.CtrlCmd|r.KeyCode.KeyS],run:async()=>{let e=v.current;if(e&&e.isDirty)try{await (0,rG.writeFileContent)(t,e.relativePath,e.content),f(t=>t.map(t=>t.path===e.path?{...t,isDirty:!1}:t)),j("success"),y.current?.()}catch{j("error")}}})},onChange:e=>{void 0!==e&&f(t=>t.map(t=>t.path===m?{...t,content:e,isDirty:!0}:t))},options:{automaticLayout:!0,minimap:{enabled:!1},fontSize:13,fontFamily:'"JetBrains Mono", "Geist Mono", monospace',lineNumbers:"on",wordWrap:"off",scrollBeyondLastLine:!1,tabSize:2},loading:(0,s.jsx)("div",{className:"flex h-full items-center justify-center bg-muted/20",children:(0,s.jsx)("span",{className:"text-sm text-muted-foreground",children:"Loading editor..."})})})})]})}let rQ=(0,d.default)("funnel",[["path",{d:"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z",key:"sc7q7i"}]]);var rZ=e.i(755683);let r0=(0,rZ.createServerReference)("7834fe9125f5717163058eb8a77983eb722805bdc4",rZ.callServer,void 0,rZ.findSourceMapURL,"searchCode");function r1({localPath:e,onResultSelect:t}){let{t:r}=(0,rw.useI18n)(),[n,a]=(0,i.useState)(""),[l,o]=(0,i.useState)(""),[u,d]=(0,i.useState)([]),[h,f]=(0,i.useState)(!1),[m,p]=(0,i.useState)(null),[x,g]=(0,i.useState)(!1),[v,y]=(0,i.useState)(!1),w=(0,i.useRef)(0),j=(0,i.useCallback)(async()=>{if(!e||!n.trim())return;let t=++w.current;g(!0),p(null),y(!0);try{let a=await r0(e,n.trim(),l.trim()||void 0);if(t!==w.current)return;a.error?(a.error.toLowerCase().includes("ripgrep")||a.error.toLowerCase().includes("rg")?(rW.toast.error(r("codeSearch.rgNotInstalled")),p(r("codeSearch.rgNotInstalled"))):p(a.error),d([]),f(!1)):(d(a.matches),f(a.truncated))}catch(e){if(t!==w.current)return;p(String(e)),d([]),f(!1)}finally{t===w.current&&g(!1)}},[e,n,l,r]),k=(0,i.useCallback)(e=>{"Enter"===e.key&&(e.preventDefault(),j())},[j]);return e?(0,s.jsxs)("div",{className:"h-full flex flex-col overflow-hidden",children:[(0,s.jsxs)("div",{className:"flex-shrink-0 px-2 py-1.5 space-y-1 border-b border-border",children:[(0,s.jsxs)("div",{className:"relative",children:[(0,s.jsx)(b.Search,{className:"absolute left-2 top-1/2 -translate-y-1/2 h-3.5 w-3.5 text-muted-foreground"}),(0,s.jsx)("input",{type:"text",value:n,placeholder:r("codeSearch.patternPlaceholder"),className:"w-full h-7 pl-7 pr-2 text-xs bg-muted/50 border border-border rounded-md outline-none focus:border-primary/50 focus:bg-background transition-colors placeholder:text-muted-foreground/60",onChange:e=>a(e.target.value),onKeyDown:k})]}),(0,s.jsxs)("div",{className:"relative",children:[(0,s.jsx)(rQ,{className:"absolute left-2 top-1/2 -translate-y-1/2 h-3.5 w-3.5 text-muted-foreground"}),(0,s.jsx)("input",{type:"text",value:l,placeholder:r("codeSearch.globPlaceholder"),className:"w-full h-7 pl-7 pr-2 text-xs bg-muted/50 border border-border rounded-md outline-none focus:border-primary/50 focus:bg-background transition-colors placeholder:text-muted-foreground/60",onChange:e=>o(e.target.value)})]})]}),(0,s.jsx)("div",{className:"flex-1 min-h-0 flex flex-col",children:x?(0,s.jsxs)("div",{className:"flex flex-col items-center justify-center h-full gap-2",children:[(0,s.jsx)(c.Loader2,{className:"h-5 w-5 animate-spin text-muted-foreground"}),(0,s.jsx)("p",{className:"text-xs text-muted-foreground",children:r("codeSearch.searching")})]}):m?(0,s.jsx)("div",{className:"px-3 py-4 text-xs text-destructive",children:m}):v?0===u.length?(0,s.jsx)("div",{className:"flex h-full items-center justify-center",children:(0,s.jsx)("p",{className:"text-xs text-muted-foreground",children:r("codeSearch.noResults")})}):(0,s.jsxs)(rb.ScrollArea,{className:"flex-1",children:[(0,s.jsx)("div",{className:"py-1",children:u.map((r,n)=>(0,s.jsxs)("button",{type:"button",className:"w-full flex flex-col gap-0.5 px-2 py-1.5 text-left hover:bg-accent/50 cursor-pointer border-b border-border/30 last:border-b-0","aria-label":`Open ${r.filePath} at line ${r.lineNumber}`,onClick:()=>{t(e.endsWith("/")?e+r.filePath:e+"/"+r.filePath,r.lineNumber)},children:[(0,s.jsxs)("div",{className:"flex items-center gap-1.5 min-w-0",children:[(0,s.jsx)("span",{className:"text-xs text-muted-foreground truncate flex-1",children:r.filePath}),(0,s.jsxs)("span",{className:"text-xs text-primary/80 flex-shrink-0 tabular-nums",children:[":",r.lineNumber]})]}),(0,s.jsx)("div",{className:"text-xs text-foreground/80 font-mono truncate",children:function(e,t){if(!t.length)return[(0,s.jsx)("span",{children:e},"0")];let r=[],n=0;for(let{start:a,end:i}of t)n<a&&r.push((0,s.jsx)("span",{children:e.slice(n,a)},`plain-${n}`)),r.push((0,s.jsx)("span",{className:"bg-yellow-400/30 text-yellow-200 rounded-[2px] px-[1px]",children:e.slice(a,i)},`match-${a}`)),n=i;return n<e.length&&r.push((0,s.jsx)("span",{children:e.slice(n)},`plain-${n}`)),r}(r.lineText,r.submatches)})]},`${r.filePath}:${r.lineNumber}:${n}`))}),h&&(0,s.jsx)("div",{className:"px-3 py-2 text-xs text-muted-foreground text-center border-t border-border/30",children:r("codeSearch.truncated")})]}):(0,s.jsx)("div",{className:"flex h-full items-center justify-center",children:(0,s.jsx)("p",{className:"text-xs text-muted-foreground text-center px-4",children:r("codeSearch.hint")})})})]}):(0,s.jsxs)("div",{className:"flex h-full flex-col items-center justify-center gap-2 p-4 text-center",children:[(0,s.jsx)(b.Search,{className:"h-8 w-8 text-muted-foreground"}),(0,s.jsx)("p",{className:"text-sm text-muted-foreground",children:r("codeSearch.noPath")})]})}let r2=(0,d.default)("file-plus",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M9 15h6",key:"cctwl0"}],["path",{d:"M12 18v-6",key:"17g6i2"}]]),r3=(0,d.default)("file-minus",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M9 15h6",key:"cctwl0"}]]),r5=(0,d.default)("file-question-mark",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M12 17h.01",key:"p32p05"}],["path",{d:"M9.1 9a3 3 0 0 1 5.82 1c0 2-3 3-3 3",key:"mhlwft"}]]),r4=(0,d.default)("file-pen",[["path",{d:"M12.659 22H18a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v9.34",key:"o6klzx"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10.378 12.622a1 1 0 0 1 3 3.003L8.36 20.637a2 2 0 0 1-.854.506l-2.867.837a.5.5 0 0 1-.62-.62l.836-2.869a2 2 0 0 1 .506-.853z",key:"zhnas1"}]]),r8=(0,d.default)("arrow-down",[["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"m19 12-7 7-7-7",key:"1idqje"}]]),r7=(0,d.default)("arrow-up",[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]]);var r6=e.i(698300);let r9=(0,d.default)("minus",[["path",{d:"M5 12h14",key:"1ays0h"}]]);var ne=e.i(304275),nt=e.i(935792),nr=e.i(232478),nn=e.i(306308),na=e.i(121505);let ns=(0,d.default)("undo-2",[["path",{d:"M9 14 4 9l5-5",key:"102s5s"}],["path",{d:"M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11",key:"f3b9sd"}]]);var ni=e.i(514183),nl=e.i(690287),no=e.i(775899),nu=e.i(426175);let nc={modified:r4,added:r2,deleted:r3,untracked:r5,renamed:r4},nd={modified:"text-amber-400",added:"text-emerald-400",deleted:"text-rose-400",untracked:"text-muted-foreground",renamed:"text-sky-400"},nh={modified:"M",added:"A",deleted:"D",untracked:"U",renamed:"R"};function nf(e){let t={name:"",path:"",isDir:!0,children:[]};for(let r of e){let e=r.file.split("/"),n=t;for(let t=0;t<e.length;t++){let a=e[t],s=t===e.length-1,i=e.slice(0,t+1).join("/");if(s)n.children.push({name:a,path:i,isDir:!1,children:[],file:r});else{let e=n.children.find(e=>e.isDir&&e.name===a);e||(e={name:a,path:i,isDir:!0,children:[]},n.children.push(e)),n=e}}}return(function e(t){if(t.isDir&&(t.children=t.children.map(e),1===t.children.length&&t.children[0].isDir&&""!==t.name)){let e=t.children[0];return{...e,name:`${t.name}/${e.name}`}}return t})(t).children.sort((e,t)=>e.isDir!==t.isDir?e.isDir?-1:1:e.name.localeCompare(t.name))}function nm({localPath:e,onFileSelect:t}){let{t:r}=(0,rw.useI18n)(),[n,a]=(0,i.useState)(null),[l,o]=(0,i.useState)(!0),[d,h]=(0,i.useState)(""),[f,m]=(0,i.useState)(!1),[p,x]=(0,i.useState)(!1),[g,v]=(0,i.useState)(!1),[y,w]=(0,i.useState)(!1),[j,k]=(0,i.useState)(!1),[C,N]=(0,i.useState)(""),S=(0,i.useRef)(null);(0,i.useEffect)(()=>{if(j)return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e);function e(e){S.current&&!S.current.contains(e.target)&&k(!1)}},[j]);let[E,A]=(0,i.useState)(!1),D=(0,i.useCallback)(async()=>{try{let t=await fetch(`/api/git?path=${encodeURIComponent(e)}`);if(t.ok){let e=await t.json();a({changedFiles:e.changedFiles??[],ahead:e.ahead??0,behind:e.behind??0,remoteUrl:e.remoteUrl??"",currentBranch:e.currentBranch??"",branches:e.branches??[],remoteBranches:e.remoteBranches??[]})}}catch{}finally{o(!1)}},[e]);(0,i.useEffect)(()=>{D();let e=setInterval(D,5e3);return()=>clearInterval(e)},[D]);let M=async t=>{try{await (0,nu.gitAction)(e,"stage",{files:t}),await D()}catch(e){rW.toast.error(e instanceof Error?e.message:String(e))}},I=async t=>{try{await (0,nu.gitAction)(e,"unstage",{files:t}),await D()}catch(e){rW.toast.error(e instanceof Error?e.message:String(e))}},P=async()=>{if(d.trim()){m(!0);try{await (0,nu.gitAction)(e,"commit",{message:d}),h(""),rW.toast.success(r("git.commitSuccess")),await D()}catch(e){rW.toast.error(e instanceof Error?e.message:String(e))}finally{m(!1)}}},R=async t=>{x(!0);try{await (0,nu.gitAction)(e,"pull",t?{branch:t}:{}),rW.toast.success(r("git.pullSuccess")),await D()}catch(e){rW.toast.error(e instanceof Error?e.message:String(e))}finally{x(!1)}},B=async t=>{v(!0);try{await (0,nu.gitAction)(e,"push",t?{branch:t}:{}),rW.toast.success(r("git.pushSuccess")),await D()}catch(e){rW.toast.error(e instanceof Error?e.message:String(e))}finally{v(!1)}},F=async()=>{w(!0);try{await (0,nu.gitAction)(e,"fetch"),rW.toast.success(r("git.fetchSuccess")),await D()}catch(e){rW.toast.error(e instanceof Error?e.message:String(e))}finally{w(!1)}},L=async t=>{try{await (0,nu.gitAction)(e,"checkout",{branch:t}),k(!1),rW.toast.success(`${r("git.switchSuccess")} ${t}`),await D()}catch(e){rW.toast.error(e instanceof Error?e.message:String(e))}},z=async()=>{try{await (0,nu.gitAction)(e,"stash-save",{message:d||void 0}),h(""),rW.toast.success(r("git.stashSaved")),await D()}catch(e){rW.toast.error(e instanceof Error?e.message:String(e))}},$=async()=>{try{await (0,nu.gitAction)(e,"stash-pop",{index:0}),rW.toast.success(r("git.stashApplied")),await D()}catch(e){rW.toast.error(e instanceof Error?e.message:String(e))}},T=async()=>{try{await (0,nu.gitAction)(e,"discard-all"),rW.toast.success(r("git.discardSuccess")),await D()}catch(e){rW.toast.error(e instanceof Error?e.message:String(e))}},_=async r=>{if("deleted"!==r.status)try{let n=await (0,nu.gitAction)(e,"show",{file:r.file});t?.(r.file,n.content??"")}catch{t?.(r.file,"")}},O=n?.changedFiles.filter(e=>e.staged)??[],W=n?.changedFiles.filter(e=>!e.staged)??[],H=(0,i.useMemo)(()=>nf(O),[O]),G=(0,i.useMemo)(()=>nf(W),[W]);if(l)return(0,s.jsx)("div",{className:"flex h-full items-center justify-center",children:(0,s.jsx)(c.Loader2,{className:"h-4 w-4 animate-spin text-muted-foreground"})});if(!n)return null;function K(e){let t=[];for(let r of e)r.isDir?t.push(...K(r.children)):r.file&&t.push(r.file.file);return t}let V=[...n?.branches??[],...(n?.remoteBranches??[]).filter(e=>!n?.branches?.includes(e))],U=C?V.filter(e=>e.toLowerCase().includes(C.toLowerCase())):V;return(0,s.jsxs)("div",{className:"flex flex-col h-full overflow-hidden",children:[(0,s.jsx)("div",{className:"shrink-0 px-2 pt-2 pb-1",children:(0,s.jsxs)("div",{className:"relative",ref:S,children:[(0,s.jsxs)("button",{onClick:()=>{k(!j),N("")},className:"flex w-full items-center justify-between rounded-md border border-border bg-muted/50 px-2 py-1.5 text-left transition-colors hover:bg-accent",children:[(0,s.jsxs)("div",{className:"flex items-center gap-1.5 min-w-0",children:[(0,s.jsx)(u.GitBranch,{className:"h-3 w-3 shrink-0 text-emerald-400"}),(0,s.jsx)("span",{className:"truncate font-mono text-xs text-foreground",children:n?.currentBranch||"—"})]}),(0,s.jsx)(rM.ChevronDown,{className:`h-3 w-3 shrink-0 text-muted-foreground transition-transform ${j?"rotate-180":""}`})]}),j&&(0,s.jsxs)("div",{className:"absolute left-0 right-0 top-full z-30 mt-1 rounded-lg border border-border bg-popover shadow-xl",children:[(0,s.jsx)("div",{className:"border-b border-border p-1.5",children:(0,s.jsxs)("div",{className:"relative",children:[(0,s.jsx)(b.Search,{className:"absolute left-2 top-1/2 -translate-y-1/2 h-3 w-3 text-muted-foreground"}),(0,s.jsx)("input",{value:C,onChange:e=>N(e.target.value),placeholder:"Filter...",autoFocus:!0,className:"h-7 w-full rounded-md bg-muted/50 pl-7 pr-2 text-xs text-foreground placeholder-muted-foreground outline-none focus:ring-1 focus:ring-ring"})]})}),(0,s.jsxs)("div",{className:"max-h-48 overflow-auto py-1",children:[(n?.branches??[]).filter(e=>e.toLowerCase().includes(C.toLowerCase())).length>0&&(0,s.jsx)("p",{className:"px-3 pt-1 pb-0.5 text-[10px] font-semibold uppercase tracking-wider text-muted-foreground",children:r("git.localBranches")}),(n?.branches??[]).filter(e=>e.toLowerCase().includes(C.toLowerCase())).map(e=>{let t=e===n?.currentBranch;return(0,s.jsxs)("button",{onClick:()=>{t?k(!1):L(e)},className:`flex w-full items-center gap-2 px-3 py-1 text-left transition-colors ${t?"bg-emerald-500/10 text-emerald-400":"text-secondary-foreground hover:bg-accent"}`,children:[(0,s.jsx)(u.GitBranch,{className:"h-3 w-3 shrink-0"}),(0,s.jsx)("span",{className:"truncate font-mono text-xs",children:e}),t&&(0,s.jsx)(r6.Check,{className:"h-3 w-3 ml-auto shrink-0"})]},`local-${e}`)}),(n?.remoteBranches??[]).filter(e=>!n?.branches?.includes(e)).filter(e=>e.toLowerCase().includes(C.toLowerCase())).length>0&&(0,s.jsx)("p",{className:"px-3 pt-2 pb-0.5 text-[10px] font-semibold uppercase tracking-wider text-muted-foreground",children:r("git.remoteBranches")}),(n?.remoteBranches??[]).filter(e=>!n?.branches?.includes(e)).filter(e=>e.toLowerCase().includes(C.toLowerCase())).map(e=>(0,s.jsxs)("button",{onClick:()=>L(e),className:"flex w-full items-center gap-2 px-3 py-1 text-left text-secondary-foreground transition-colors hover:bg-accent",children:[(0,s.jsx)(ni.Globe,{className:"h-3 w-3 shrink-0 text-sky-400"}),(0,s.jsx)("span",{className:"truncate font-mono text-xs",children:e})]},`remote-${e}`)),0===U.length&&(0,s.jsx)("p",{className:"px-3 py-2 text-xs text-muted-foreground",children:"No branches found"})]}),(0,s.jsxs)("div",{className:"border-t border-border p-1.5 flex gap-1",children:[(0,s.jsxs)(ry.Button,{variant:"ghost",className:"flex-1 h-6 gap-1 text-[10px] text-muted-foreground",onClick:()=>{k(!1),k(!1),A(!0)},children:[(0,s.jsx)(ne.Plus,{className:"h-3 w-3"}),r("git.createBranch")]}),(0,s.jsxs)(ry.Button,{variant:"ghost",className:"h-6 gap-1 text-[10px] text-muted-foreground",onClick:F,disabled:y,children:[(0,s.jsx)(nr.RefreshCw,{className:`h-3 w-3 ${y?"animate-spin":""}`}),"Fetch"]})]})]})]})}),(0,s.jsxs)("div",{className:"shrink-0 px-2 pb-2 space-y-1.5 border-b border-border",children:[(0,s.jsx)("textarea",{value:d,onChange:e=>h(e.target.value),placeholder:r("git.commitMsgPlaceholder"),rows:3,className:"w-full rounded-md border border-border bg-background px-2 py-1.5 text-xs text-foreground placeholder-muted-foreground outline-none transition-colors focus:border-ring focus:ring-1 focus:ring-ring resize-none",onKeyDown:e=>{(e.metaKey||e.ctrlKey)&&"Enter"===e.key&&P()}}),(0,s.jsxs)("div",{className:"flex items-center gap-1",children:[(0,s.jsxs)(ry.Button,{variant:"default",className:"flex-1 h-7 gap-1.5 text-xs",onClick:P,disabled:f||!d.trim()||0===O.length,children:[f?(0,s.jsx)(c.Loader2,{className:"h-3 w-3 animate-spin"}):(0,s.jsx)(r6.Check,{className:"h-3 w-3"}),r("git.commit")]}),(0,s.jsxs)(nl.DropdownMenu,{children:[(0,s.jsx)(nl.DropdownMenuTrigger,{render:(0,s.jsx)(ry.Button,{variant:"outline",size:"icon-xs",className:"h-7 w-7 shrink-0"}),children:(0,s.jsx)(nt.MoreHorizontal,{className:"h-3.5 w-3.5"})}),(0,s.jsxs)(nl.DropdownMenuContent,{align:"end",side:"bottom",className:"w-52",children:[(0,s.jsxs)(nl.DropdownMenuGroup,{children:[(0,s.jsx)(nl.DropdownMenuLabel,{children:r("git.commit")}),(0,s.jsxs)(nl.DropdownMenuItem,{onClick:P,disabled:!d.trim()||0===O.length,children:[(0,s.jsx)(r6.Check,{className:"h-3.5 w-3.5 mr-2"}),r("git.commit")]})]}),(0,s.jsx)(nl.DropdownMenuSeparator,{}),(0,s.jsxs)(nl.DropdownMenuGroup,{children:[(0,s.jsx)(nl.DropdownMenuLabel,{children:r("git.changes")}),(0,s.jsxs)(nl.DropdownMenuItem,{onClick:()=>M(K(G)),disabled:0===W.length,children:[(0,s.jsx)(ne.Plus,{className:"h-3.5 w-3.5 mr-2"}),r("git.stageAll")]}),(0,s.jsxs)(nl.DropdownMenuItem,{onClick:()=>I(K(H)),disabled:0===O.length,children:[(0,s.jsx)(r9,{className:"h-3.5 w-3.5 mr-2"}),r("git.unstageAll")]}),(0,s.jsxs)(nl.DropdownMenuItem,{onClick:T,disabled:0===W.length,children:[(0,s.jsx)(ns,{className:"h-3.5 w-3.5 mr-2"}),r("git.discardAll")]})]}),(0,s.jsx)(nl.DropdownMenuSeparator,{}),(0,s.jsxs)(nl.DropdownMenuGroup,{children:[(0,s.jsx)(nl.DropdownMenuLabel,{children:r("git.sync")}),(0,s.jsxs)(nl.DropdownMenuItem,{onClick:()=>R(),disabled:p,children:[(0,s.jsx)(r8,{className:"h-3.5 w-3.5 mr-2"}),r("git.pull")]}),(0,s.jsxs)(nl.DropdownMenuItem,{onClick:()=>B(),disabled:g,children:[(0,s.jsx)(r7,{className:"h-3.5 w-3.5 mr-2"}),r("git.push")]}),(0,s.jsxs)(nl.DropdownMenuSub,{children:[(0,s.jsxs)(nl.DropdownMenuSubTrigger,{disabled:p,children:[(0,s.jsx)(r8,{className:"h-3.5 w-3.5 mr-2"}),r("git.pullFrom"),"..."]}),(0,s.jsxs)(nl.DropdownMenuSubContent,{className:"max-h-60 overflow-y-auto",children:[(0,s.jsxs)(nl.DropdownMenuItem,{onClick:()=>R(),children:[(0,s.jsx)(u.GitBranch,{className:"h-3 w-3 mr-2 text-emerald-400"}),n.currentBranch,n.behind>0&&(0,s.jsxs)("span",{className:"ml-auto text-[10px] text-muted-foreground",children:["↓",n.behind]})]}),n.remoteBranches.filter(e=>e!==n.currentBranch).map(e=>(0,s.jsxs)(nl.DropdownMenuItem,{onClick:()=>R(e),children:[(0,s.jsx)(u.GitBranch,{className:"h-3 w-3 mr-2 text-sky-400"}),e]},e))]})]}),(0,s.jsxs)(nl.DropdownMenuSub,{children:[(0,s.jsxs)(nl.DropdownMenuSubTrigger,{disabled:g,children:[(0,s.jsx)(r7,{className:"h-3.5 w-3.5 mr-2"}),r("git.pushTo"),"..."]}),(0,s.jsxs)(nl.DropdownMenuSubContent,{className:"max-h-60 overflow-y-auto",children:[(0,s.jsxs)(nl.DropdownMenuItem,{onClick:()=>B(),children:[(0,s.jsx)(u.GitBranch,{className:"h-3 w-3 mr-2 text-emerald-400"}),n.currentBranch,n.ahead>0&&(0,s.jsxs)("span",{className:"ml-auto text-[10px] text-muted-foreground",children:["↑",n.ahead]})]}),n.remoteBranches.filter(e=>e!==n.currentBranch).map(e=>(0,s.jsxs)(nl.DropdownMenuItem,{onClick:()=>B(e),children:[(0,s.jsx)(u.GitBranch,{className:"h-3 w-3 mr-2 text-sky-400"}),e]},e))]})]}),(0,s.jsxs)(nl.DropdownMenuItem,{onClick:F,disabled:y,children:[(0,s.jsx)(nr.RefreshCw,{className:`h-3.5 w-3.5 mr-2 ${y?"animate-spin":""}`}),r("git.fetchAll")]})]}),(0,s.jsx)(nl.DropdownMenuSeparator,{}),(0,s.jsxs)(nl.DropdownMenuGroup,{children:[(0,s.jsx)(nl.DropdownMenuLabel,{children:r("git.stash")}),(0,s.jsxs)(nl.DropdownMenuItem,{onClick:z,disabled:0===n.changedFiles.length,children:[(0,s.jsx)(nn.Archive,{className:"h-3.5 w-3.5 mr-2"}),r("git.stashSave")]}),(0,s.jsxs)(nl.DropdownMenuItem,{onClick:$,children:[(0,s.jsx)(na.ArrowUpFromLine,{className:"h-3.5 w-3.5 mr-2"}),r("git.stashPopLatest")]})]}),(0,s.jsx)(nl.DropdownMenuSeparator,{}),(0,s.jsxs)(nl.DropdownMenuItem,{disabled:!0,className:"text-muted-foreground",children:[(0,s.jsx)(u.GitBranch,{className:"h-3.5 w-3.5 mr-2"}),n.currentBranch]})]})]})]})]}),(0,s.jsxs)(rb.ScrollArea,{className:"flex-1 min-h-0",children:[(0,s.jsx)(np,{label:r("git.stagedChanges"),count:O.length,labelColor:"text-emerald-400",tree:H,batchAction:()=>I(K(H)),batchLabel:r("git.unstageAll"),batchIcon:(0,s.jsx)(r9,{className:"h-3 w-3"}),onFileClick:_,onFileAction:e=>I([e]),fileActionIcon:"−"}),(0,s.jsx)(np,{label:r("git.unstagedChanges"),count:W.length,labelColor:"text-muted-foreground",tree:G,batchAction:()=>M(K(G)),batchLabel:r("git.stageAll"),batchIcon:(0,s.jsx)(ne.Plus,{className:"h-3 w-3"}),onFileClick:_,onFileAction:e=>M([e]),fileActionIcon:"+"}),0===n.changedFiles.length&&(0,s.jsxs)("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[(0,s.jsx)(r6.Check,{className:"h-5 w-5 text-emerald-400 mb-2"}),(0,s.jsx)("p",{className:"text-xs text-muted-foreground",children:r("git.noChanges")})]})]}),(0,s.jsx)(no.CreateBranchDialog,{open:E,onOpenChange:A,branches:[...n?.branches??[],...n?.remoteBranches??[]],currentBranch:n?.currentBranch??"",localPath:e,onCreated:async()=>{rW.toast.success(r("git.createSuccess")),await D()},onError:e=>rW.toast.error(`${r("git.createFailed")}: ${e}`)})]})}function np({label:e,count:t,labelColor:r,tree:n,batchAction:a,batchLabel:l,batchIcon:o,onFileClick:u,onFileAction:c,fileActionIcon:d}){let[h,f]=(0,i.useState)(!0);return 0===t?null:(0,s.jsxs)("div",{className:"border-b border-border",children:[(0,s.jsxs)("div",{className:"group flex items-center justify-between px-2 py-1.5 hover:bg-accent/50 transition-colors",children:[(0,s.jsxs)("button",{onClick:()=>f(!h),className:"flex items-center gap-1 flex-1 min-w-0",children:[h?(0,s.jsx)(rM.ChevronDown,{className:"h-3 w-3 shrink-0 text-muted-foreground"}):(0,s.jsx)(rD.ChevronRight,{className:"h-3 w-3 shrink-0 text-muted-foreground"}),(0,s.jsxs)("span",{className:`text-[10px] font-semibold uppercase tracking-wider ${r}`,children:[e," (",t,")"]})]}),(0,s.jsx)(ry.Button,{variant:"ghost",size:"icon-xs",onClick:a,className:"text-muted-foreground opacity-0 group-hover:opacity-100 transition-opacity","aria-label":l,children:o})]}),h&&(0,s.jsx)("div",{className:"pb-1",children:n.map(e=>(0,s.jsx)(nx,{node:e,depth:0,onFileClick:u,onFileAction:c,fileActionIcon:d},e.path))})]})}function nx({node:e,depth:t,onFileClick:r,onFileAction:n,fileActionIcon:a}){let[l,o]=(0,i.useState)(!0),u=8+12*t;if(e.isDir)return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("button",{onClick:()=>o(!l),className:"flex w-full items-center gap-1 py-0.5 hover:bg-accent/50 transition-colors text-left",style:{paddingLeft:u},children:[l?(0,s.jsx)(rM.ChevronDown,{className:"h-3 w-3 shrink-0 text-muted-foreground"}):(0,s.jsx)(rD.ChevronRight,{className:"h-3 w-3 shrink-0 text-muted-foreground"}),(0,s.jsx)(tR.Folder,{className:"h-3 w-3 shrink-0 text-amber-400/70"}),(0,s.jsx)("span",{className:"text-xs text-muted-foreground truncate",children:e.name})]}),l&&e.children.sort((e,t)=>e.isDir!==t.isDir?e.isDir?-1:1:e.name.localeCompare(t.name)).map(e=>(0,s.jsx)(nx,{node:e,depth:t+1,onFileClick:r,onFileAction:n,fileActionIcon:a},e.path))]});let c=e.file,d=nc[c.status]||tF,h=nd[c.status]||"text-muted-foreground",f=nh[c.status]||"?";return(0,s.jsxs)("div",{className:"group flex items-center gap-1 py-0.5 hover:bg-accent/50 transition-colors cursor-pointer",style:{paddingLeft:u+16},onClick:()=>r(c),children:[(0,s.jsx)(d,{className:`h-3 w-3 shrink-0 ${h}`}),(0,s.jsx)("span",{className:"text-xs text-foreground truncate flex-1",children:e.name}),(0,s.jsx)("span",{className:`text-[10px] font-mono font-bold shrink-0 mr-1 ${h}`,children:f}),(0,s.jsx)("button",{onClick:e=>{e.stopPropagation(),n(c.file)},className:"shrink-0 rounded px-1 text-xs font-mono text-muted-foreground opacity-0 group-hover:opacity-100 hover:bg-background hover:text-foreground transition-all mr-1",children:a})]})}var ng=e.i(702431);let nb=(0,rZ.createServerReference)("709966785dbfd0bb3723e0f4ff0e372732c1099b18",rZ.callServer,void 0,rZ.findSourceMapURL,"startPreview"),nv=(0,rZ.createServerReference)("407e016d2bf03345328153639e8a4fcaef2ec1bf9d",rZ.callServer,void 0,rZ.findSourceMapURL,"stopPreview");var ny=e.i(689795),nw=e.i(352125);let nj=["pnpm","npm","yarn"];function nk(e){if(!e)return{pm:"pnpm",script:"dev"};let t=e.trim().split(/\s+/),r=nj.includes(t[0])?t[0]:"pnpm",n=t.slice(1);return{pm:r,script:"run"===n[0]?n[1]??"dev":n[0]??"dev"}}function nC({status:e}){return"running"===e?(0,s.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-emerald-400 inline-block"}):"error"===e?(0,s.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-red-400 inline-block"}):"starting"===e?(0,s.jsx)(c.Loader2,{className:"h-3 w-3 animate-spin inline-block"}):(0,s.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-muted-foreground/50 inline-block"})}function nN({taskId:e,worktreePath:t,previewCommand:r,previewPort:n,refreshKey:a,projectId:l,previewUrl:o,onPreviewUrlChange:u}){let{t:d}=(0,rw.useI18n)(),[h,f]=(0,i.useState)("stopped"),[x,g]=(0,i.useState)(""),[b,v]=(0,i.useState)(o??""),[y,w]=(0,i.useState)(o??""),[j,k]=(0,i.useState)(0),C=nk(r),[N,S]=(0,i.useState)(C.pm),[E,A]=(0,i.useState)(C.script),[D,M]=(0,i.useState)(n??5173);(0,i.useEffect)(()=>{let e=nk(r);S(e.pm),A(e.script)},[r]),(0,i.useEffect)(()=>{null!=n&&M(n)},[n]),(0,i.useEffect)(()=>{o&&(v(o),w(o))},[o]);let I=(0,i.useRef)(e);I.current=e,(0,i.useEffect)(()=>()=>{nv(I.current).catch(()=>{})},[]);let P=(()=>{switch(h){case"running":return d("preview.statusRunning");case"starting":return d("preview.statusStarting");case"error":return d("preview.statusError");default:return d("preview.statusStopped")}})(),R=`${N} ${E}`;async function B(){await (0,nw.updateProject)(l,{previewCommand:R,previewPort:D})}async function F(){if(t&&E){f("starting"),g("");try{await B();let r=await nb(e,R,t);if(r.started){if(f("running"),!b){let e=`http://localhost:${D}`;v(e),w(e),u?.(e)}}else f("error"),g(r.error??"")}catch(e){f("error"),g(String(e))}}}async function L(){await nv(e),f("stopped")}async function z(){if(t)try{await (0,ny.openInTerminal)(t)}catch{f("error"),g(d("preview.terminalError"))}}return t?(0,s.jsxs)("div",{className:"flex h-full flex-col",children:[(0,s.jsxs)("div",{className:"flex h-11 shrink-0 items-center gap-2 border-b border-border bg-card px-3",children:[(0,s.jsxs)("span",{className:`inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-xs ${function(e){switch(e){case"running":return"text-emerald-400 bg-emerald-500/10 border border-emerald-500/20";case"error":return"text-red-400 bg-red-500/10 border border-red-500/20";default:return"text-muted-foreground bg-muted border border-transparent"}}(h)}`,children:[(0,s.jsx)(nC,{status:h}),P]}),"running"===h?(0,s.jsx)(ry.Button,{variant:"destructive",onClick:L,children:d("preview.stop")}):(0,s.jsxs)(ry.Button,{variant:"default",disabled:"starting"===h||!E||!t,onClick:F,children:["starting"===h&&(0,s.jsx)(c.Loader2,{className:"mr-1 h-3 w-3 animate-spin"}),d("preview.run")]}),(0,s.jsx)("div",{className:"flex-1"}),(0,s.jsx)(ry.Button,{variant:"ghost",size:"icon",className:"h-8 w-8",title:d("preview.refresh"),onClick:()=>{y&&k(e=>e+1)},children:(0,s.jsx)(nr.RefreshCw,{className:"h-4 w-4"})}),(0,s.jsx)(ry.Button,{variant:"ghost",size:"icon",className:"h-8 w-8",title:d("preview.openTerminal"),disabled:!t,onClick:z,children:(0,s.jsx)(p.Terminal,{className:"h-4 w-4"})})]}),"error"===h&&x&&(0,s.jsxs)("div",{className:"border-b border-border bg-red-500/10 px-3 py-1 text-xs text-red-400",children:[d("preview.errorDesc"),": ",x]}),(0,s.jsxs)("div",{className:"flex shrink-0 items-center gap-2 border-b border-border bg-card px-3 py-1.5",children:[(0,s.jsxs)(ng.Select,{value:N,onValueChange:e=>{e&&(S(e),setTimeout(B,0))},children:[(0,s.jsx)(ng.SelectTrigger,{className:"h-7 w-auto min-w-[80px] text-xs",children:(0,s.jsx)("span",{children:N})}),(0,s.jsx)(ng.SelectContent,{children:nj.map(e=>(0,s.jsx)(ng.SelectItem,{value:e,children:e},e))})]}),(0,s.jsx)("span",{className:"text-xs text-muted-foreground",children:"run"}),(0,s.jsx)("input",{type:"text",value:E,onChange:e=>A(e.target.value),onBlur:B,placeholder:"dev",className:"h-7 w-24 rounded border border-border bg-background px-2 text-xs font-mono focus:outline-none focus:ring-1 focus:ring-primary"}),(0,s.jsx)("span",{className:"text-xs text-muted-foreground",children:d("preview.port")}),(0,s.jsx)("input",{type:"number",value:D,onChange:e=>M(parseInt(e.target.value,10)||0),onBlur:B,placeholder:"5173",className:"h-7 w-20 rounded border border-border bg-background px-2 text-xs font-mono focus:outline-none focus:ring-1 focus:ring-primary"})]}),(0,s.jsx)("div",{className:"flex shrink-0 items-center border-b border-border bg-background px-3 py-1",children:(0,s.jsx)("input",{type:"text",value:b,onChange:e=>v(e.target.value),onKeyDown:function(e){"Enter"===e.key&&(w(b),u?.(b))},placeholder:d("preview.addressPlaceholder"),className:"h-8 w-full rounded border border-border bg-background px-2 text-xs font-mono focus:outline-none focus:ring-1 focus:ring-primary"})}),(0,s.jsx)("div",{className:"flex-1 overflow-hidden",children:(0,s.jsx)("iframe",{src:y||void 0,className:"h-full w-full border-0",allow:"clipboard-read; clipboard-write",referrerPolicy:"no-referrer-when-downgrade",title:"Preview"},`${a}-${j}`)})]}):(0,s.jsxs)("div",{className:"flex h-full flex-col items-center justify-center gap-3 p-8 text-center",children:[(0,s.jsx)(m.Eye,{className:"h-10 w-10 text-muted-foreground/40"}),(0,s.jsx)("h3",{className:"text-sm font-medium text-foreground",children:d("preview.noWorktree")}),(0,s.jsx)("p",{className:"text-xs text-muted-foreground",children:d("preview.noWorktreeDesc")})]})}var nS=e.i(174145),nE=e.i(232093),nA=e.i(806952),nD=e.i(302629),nM=e.i(829107),nI=e.i(660289),nP=e.i(348045),nR=e.i(727594),nB=e.i(930432),nF=e.i(751049),nL=e.i(711958),nz=e.i(709545);let n$={TODO:"待处理",IN_PROGRESS:"执行中",IN_REVIEW:"待评审",DONE:"已完成",CANCELLED:"已取消"},nT={TODO:"bg-muted text-muted-foreground",IN_PROGRESS:"bg-blue-500/10 text-blue-400 border border-blue-500/20",IN_REVIEW:"bg-amber-500/10 text-amber-400 border border-amber-500/20",DONE:"bg-emerald-500/10 text-emerald-400 border border-emerald-500/20",CANCELLED:"bg-muted text-muted-foreground"};e.s(["TaskPageClient",0,function({task:e,workspaceId:t,workspaceName:r,latestExecution:n,executions:a=[]}){let d,j,k=(0,l.useRouter)(),{t:C}=(0,rw.useI18n)(),{removePortal:N}=(0,nz.useTerminalPortal)(),[S,E]=(0,i.useState)(e.status),[A,D]=(0,i.useState)(null),[M,I]=(0,i.useState)(!1),[P,B]=(0,i.useState)(null),[F,L]=(0,i.useState)(null),[z,$]=(0,i.useState)(null),[T,_]=(0,i.useState)(null),[O,W]=(0,i.useState)(0),[H,G]=(0,i.useState)(""),[K,V]=(0,i.useState)(!1),[U,Y]=(0,i.useState)([]),[q,J]=(0,i.useState)(null),[X,Q]=(0,i.useState)(n?.status==="RUNNING"?n?.worktreePath??null:null),Z=e.project?.localPath?e.subPath?`${e.project.localPath}/${e.subPath}`:e.project.localPath:null,ee=n?.worktreePath??Z;(0,i.useEffect)(()=>{let e=!1;return(0,nF.getPrompts)().then(t=>{if(e)return;Y(t.map(e=>({id:e.id,name:e.name,isDefault:e.isDefault})));let r=t.find(e=>e.isDefault);r&&J(r.id)}),()=>{e=!0}},[]),(0,i.useEffect)(()=>{let t=!1;return(0,nI.getTaskExecutions)(e.id).then(r=>{if(t)return;let n=r[0];if(n?.status==="RUNNING"){let t=n.worktreePath||e.project?.localPath||null;t&&Q(t)}}),()=>{t=!0}},[e.id,e.project?.localPath]),(0,i.useEffect)(()=>{if("TODO"===S||"CANCELLED"===S)return;let t=!1;return I(!0),fetch(`/api/tasks/${e.id}/diff`).then(e=>{if(!e.ok)throw Error(`HTTP ${e.status}`);return e.json()}).then(e=>{if(!t){if(!e.files&&!e.branchDeleted)return void D(null);D(e)}}).catch(()=>{t||(D(null),rW.toast.error(C("taskPage.loadDiffFailed")))}).finally(()=>{t||I(!1)}),()=>{t=!0}},[e.id,S]);let et=(0,i.useCallback)(async()=>{if(!K){V(!0);try{let{worktreePath:t}=await (0,nE.startPtyExecution)(e.id,"",q);Q(t)}catch(e){V(!1),rW.toast.error(e instanceof Error?e.message:String(e))}}},[e.id,K,q]),er=(0,i.useCallback)(t=>{V(!1),Q(null),N(e.id),0===t&&E("IN_REVIEW"),k.refresh()},[k,N,e.id]),en=(0,i.useCallback)(async()=>{await (0,nA.stopPtyExecution)(e.id),V(!1),Q(null),E("IN_REVIEW"),k.refresh()},[e.id,k]),ea=(0,i.useCallback)(async t=>{V(!0),N(e.id),Q(null);try{let{worktreePath:r}=await (0,nD.resumePtyExecution)(e.id,t);Q(r),E("IN_PROGRESS")}catch{V(!1)}},[e.id,N]),es=(0,i.useCallback)(async()=>{V(!0),N(e.id),Q(null);try{let{worktreePath:t}=await (0,nM.continueLatestPtyExecution)(e.id);Q(t),E("IN_PROGRESS")}catch(e){V(!1),rW.toast.error(e instanceof Error?e.message:String(e))}},[e.id]),ei=(0,i.useCallback)(()=>{E("DONE"),eo(!1),rW.toast.success(C("taskPage.taskCompleted")),fetch(`/api/tasks/${e.id}/diff`).then(e=>{if(e.ok)return e.json()}).then(e=>{e?.files&&D(e)}).catch(()=>{rW.toast.error(C("taskPage.loadDiffFailed"))}),k.refresh()},[k,C,e.id]),[el,eo]=(0,i.useState)(!1),[eu,ec]=(0,i.useState)([]),ed=(0,i.useCallback)(async()=>{try{let t=await (0,nR.checkWorktreeClean)(e.id);if(t.hasWorktree&&!t.clean)return void rW.toast.error(C("taskPage.uncommittedChanges",{count:String(t.files.length)}));if(t.hasWorktree&&t.clean&&!t.hasCommits)return void rW.toast.error(C("taskPage.noChangesToComplete"));if(t.hasWorktree&&t.hasCommits){ec(t.commitLog),eo(!0);return}await (0,nP.updateTaskStatus)(e.id,"DONE"),E("DONE"),k.refresh(),rW.toast.success(C("taskPage.taskCompleted"))}catch(e){rW.toast.error(e instanceof Error?e.message:String(e))}},[e.id,k,C,n]),eh=(0,i.useCallback)(async t=>{try{let{hash:r}=await (0,nB.commitWorktreeChanges)(e.id,t);rW.toast.success(C("diff.commitSuccess",{hash:r})),k.refresh();let n=await fetch(`/api/tasks/${e.id}/diff`);if(n.ok){let e=await n.json();D(e?.files?e:null)}}catch(e){rW.toast.error(e instanceof Error?e.message:"Commit failed")}},[e.id,k,C]);return(0,s.jsxs)(eL,{direction:"horizontal",className:"h-screen bg-background",children:[(0,s.jsxs)(R,{defaultSize:35,minSize:20,className:"flex flex-col border-r border-border bg-sidebar",children:[(0,s.jsxs)("div",{className:"header-lg px-4 py-3",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsxs)(w.default,{href:`/workspaces/${t}?projectId=${e.projectId}&taskId=${e.id}`,className:"flex shrink-0 items-center justify-center rounded-md border border-border bg-muted px-1.5 py-1 text-xs text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",children:[(0,s.jsx)(o.ArrowLeft,{className:"mr-1 h-3 w-3"}),C("taskPage.back")]}),(0,s.jsxs)("div",{className:"flex min-w-0 items-center gap-1 text-sm text-muted-foreground",children:[(0,s.jsx)("span",{className:"shrink-0",children:r}),e.project&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("span",{className:"shrink-0",children:"/"}),(0,s.jsx)("span",{className:"shrink-0",children:e.project.name})]}),(0,s.jsx)("span",{className:"shrink-0",children:"/"}),(0,s.jsx)("span",{className:"truncate font-semibold text-foreground",children:e.title})]})]}),(0,s.jsxs)("div",{className:"mt-2 flex items-center gap-2",children:[(0,s.jsx)("span",{className:`inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-medium ${nT[S]??"bg-muted text-muted-foreground"}`,children:n$[S]??S}),(e.baseBranch||n?.worktreeBranch)&&(0,s.jsxs)(nS.Badge,{variant:"secondary",className:"gap-1 border border-border bg-muted font-mono text-[10px] text-muted-foreground",children:[(0,s.jsx)(u.GitBranch,{className:"h-2.5 w-2.5"}),e.baseBranch??n?.worktreeBranch]})]}),(0,s.jsx)("div",{className:"border-t border-transparent",children:"IN_REVIEW"===S&&(0,s.jsx)("div",{className:"mt-2",children:(0,s.jsxs)(ry.Button,{size:"sm",onClick:ed,className:"bg-emerald-500/15 text-emerald-400 ring-1 ring-emerald-500/20 hover:bg-emerald-500/25",children:[(0,s.jsx)(g.CheckCircle2,{className:"h-3.5 w-3.5"}),C("taskPage.completeTask")]})})})]}),(0,s.jsx)("div",{className:"flex-1 min-h-0 overflow-hidden",children:X?(0,s.jsxs)("div",{className:"flex h-full flex-col overflow-hidden",children:[(0,s.jsxs)("div",{className:"header-xs shrink-0 flex items-center justify-between border-b-neutral-800 px-3 py-1.5 bg-[#0a0a0a]",children:[(0,s.jsxs)("span",{className:"flex items-center gap-1.5 text-xs text-emerald-400",children:[(0,s.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-emerald-400 animate-pulse"}),C("execution.running")]}),(0,s.jsxs)(y.Tooltip,{children:[(0,s.jsxs)(y.TooltipTrigger,{onClick:en,className:"flex items-center gap-1.5 rounded-md bg-red-500/15 px-3 py-1 text-xs font-medium text-red-400 hover:bg-red-500/25 transition-colors",children:[(0,s.jsx)(x.Square,{className:"h-3 w-3"}),C("terminal.stopExecution")]}),(0,s.jsx)(y.TooltipContent,{side:"bottom",children:C("terminal.stopHint")})]})]}),(0,s.jsx)("div",{className:"flex-1 min-h-0",children:(0,s.jsx)(nz.TerminalOutlet,{taskId:e.id,worktreePath:X,onSessionEnd:er,onFileOpen:e=>{B(e),_("files")}})})]}):"DONE"===S||"CANCELLED"===S?(0,s.jsx)("div",{className:"flex h-full flex-col overflow-hidden bg-[#0a0a0a]",children:(0,s.jsx)("div",{className:"flex-1 min-h-0 overflow-y-auto",children:(0,s.jsx)(nL.ExecutionTimeline,{executions:a})})}):(0,s.jsxs)("div",{className:"flex h-full flex-col overflow-hidden bg-[#0a0a0a]",children:[(0,s.jsxs)("div",{className:"header-xs shrink-0 flex items-center gap-3 border-b-neutral-800 px-4 py-1.5",children:[U.length>0&&(0,s.jsxs)(ng.Select,{defaultValue:q??"none",onValueChange:e=>J("none"===e?null:e),children:[(0,s.jsx)(ng.SelectTrigger,{size:"sm",className:"min-w-[140px]",children:(0,s.jsx)("span",{className:"text-left truncate",children:q?U.find(e=>e.id===q)?.name??C("terminal.noPrompt"):C("terminal.noPrompt")})}),(0,s.jsxs)(ng.SelectContent,{className:"min-w-[200px]",children:[(0,s.jsx)(ng.SelectItem,{value:"none",children:C("terminal.noPrompt")}),U.map(e=>(0,s.jsxs)(ng.SelectItem,{value:e.id,children:[e.name,e.isDefault?" ★":""]},e.id))]})]},`prompt-${U.length}`),(0,s.jsxs)(ry.Button,{onClick:et,disabled:K,size:"sm",className:"gap-2 px-4",children:[K?(0,s.jsx)(c.Loader2,{className:"h-3.5 w-3.5 animate-spin"}):(0,s.jsx)(p.Terminal,{className:"h-3.5 w-3.5"}),K?C("terminal.executing"):C("terminal.launch")]})]}),(0,s.jsx)("div",{className:"flex-1 min-h-0 overflow-y-auto",children:(0,s.jsx)(nL.ExecutionTimeline,{executions:a,onResume:ea,onContinueLatest:es})})]})})]}),(0,s.jsx)(eT,{className:"relative w-px bg-border transition-colors hover:bg-primary/20 active:bg-primary/40 cursor-col-resize"}),(0,s.jsx)(R,{defaultSize:65,minSize:20,className:"flex flex-col",children:(j=(d="DONE"===S&&!!e.baseBranch)?"changes":"files",(0,s.jsxs)(tN,{value:T??j,onValueChange:_,className:"flex h-full flex-col gap-0",children:[(0,s.jsx)("div",{className:"header-lg flex shrink-0 items-center px-3 py-3",children:(0,s.jsxs)(tE,{className:"h-auto border border-border",children:[!d&&(0,s.jsxs)(tA,{value:"files",className:"data-active:bg-background data-active:text-foreground data-active:shadow-sm dark:data-active:bg-background dark:data-active:border-transparent",children:[(0,s.jsx)(h,{className:"h-3.5 w-3.5"}),C("taskPage.tabFiles")]}),(0,s.jsxs)(tA,{value:"changes",className:"data-active:bg-background data-active:text-foreground data-active:shadow-sm dark:data-active:bg-background dark:data-active:border-transparent",children:[(0,s.jsx)(f.GitCompare,{className:"h-3.5 w-3.5"}),C("taskPage.changes")]}),!d&&e.project?.projectType!=="BACKEND"&&(0,s.jsxs)(tA,{value:"preview",className:"data-active:bg-background data-active:text-foreground data-active:shadow-sm dark:data-active:bg-background dark:data-active:border-transparent",children:[(0,s.jsx)(m.Eye,{className:"h-3.5 w-3.5"}),C("taskPage.tabPreview")]})]})}),(0,s.jsx)(tD,{value:"files",className:"flex-1 min-h-0 overflow-hidden",children:(0,s.jsxs)("div",{className:"flex h-full flex-row overflow-hidden",children:[(0,s.jsx)("div",{className:"w-60 flex-none border-r border-border overflow-hidden flex flex-col",children:(0,s.jsxs)(tN,{defaultValue:"filetree",className:"flex h-full flex-col gap-0",children:[(0,s.jsx)("div",{className:"header-xs flex shrink-0 px-2 py-1.5",children:(0,s.jsxs)(tE,{className:"h-auto border border-border w-full",children:[(0,s.jsxs)(tA,{value:"filetree",className:"flex-1 text-xs gap-1 data-active:bg-background data-active:text-foreground data-active:shadow-sm dark:data-active:bg-background dark:data-active:border-transparent",children:[(0,s.jsx)(h,{className:"h-3 w-3"}),C("taskPage.tabFileTree")]}),(0,s.jsxs)(tA,{value:"search",className:"flex-1 text-xs gap-1 data-active:bg-background data-active:text-foreground data-active:shadow-sm dark:data-active:bg-background dark:data-active:border-transparent",children:[(0,s.jsx)(b.Search,{className:"h-3 w-3"}),C("taskPage.tabSearch")]}),(0,s.jsxs)(tA,{value:"git",className:"flex-1 text-xs gap-1 data-active:bg-background data-active:text-foreground data-active:shadow-sm dark:data-active:bg-background dark:data-active:border-transparent",children:[(0,s.jsx)(v,{className:"h-3 w-3"}),C("git.tabLabel")]})]})}),(0,s.jsx)(tD,{value:"filetree",className:"flex-1 min-h-0 overflow-hidden mt-0",children:(0,s.jsx)(r$,{worktreePath:ee??null,baseBranch:e.baseBranch??null,worktreeBranch:n?.worktreeBranch??null,executionStatus:n?.status??"COMPLETED",onFileSelect:e=>{B(e),L(null)}})}),(0,s.jsx)(tD,{value:"search",className:"flex-1 min-h-0 overflow-hidden mt-0",children:(0,s.jsx)(r1,{localPath:ee??e.project?.localPath??null,onResultSelect:(e,t)=>{B(e),L(t),_("files")}})}),(0,s.jsx)(tD,{value:"git",className:"flex-1 min-h-0 overflow-hidden mt-0",children:(0,s.jsx)(nm,{localPath:ee??e.project?.localPath??"",onFileSelect:(e,t)=>{$({relativePath:e,originalContent:t})}})})]})}),(0,s.jsx)("div",{className:"flex-1 min-w-0 overflow-hidden",children:ee?(0,s.jsx)(rX,{worktreePath:ee,selectedFilePath:P,selectedLine:F,onFilePathChange:B,onSave:()=>W(e=>e+1),diffFileRequest:z}):(0,s.jsx)("div",{className:"flex h-full items-center justify-center",children:(0,s.jsx)("p",{className:"text-sm text-muted-foreground",children:C("editor.noWorktree")})})})]})}),(0,s.jsx)(tD,{value:"changes",className:"flex-1 min-h-0 overflow-auto",children:M?(0,s.jsxs)("div",{className:"flex h-full flex-col items-center justify-center gap-2",children:[(0,s.jsx)(c.Loader2,{className:"size-5 animate-spin text-muted-foreground"}),(0,s.jsx)("span",{className:"text-xs text-muted-foreground",children:C("taskPage.loadingDiff")})]}):A?.branchDeleted?(0,s.jsx)("div",{className:"flex h-full items-center justify-center",children:(0,s.jsx)("p",{className:"text-sm text-muted-foreground",children:C("taskPage.branchDeleted")})}):A?(0,s.jsx)(tM.TaskDiffView,{files:A.files,totalAdded:A.totalAdded,totalRemoved:A.totalRemoved,hasConflicts:A.hasConflicts,conflictFiles:A.conflictFiles,onCommit:eh,hasUncommitted:A.hasUncommitted}):(0,s.jsx)("div",{className:"flex h-full items-center justify-center",children:(0,s.jsx)("p",{className:"text-sm text-muted-foreground",children:"TODO"===S?C("taskPage.startExecution"):C("taskPage.noDiff")})})}),(0,s.jsx)(tD,{value:"preview",className:"flex-1 min-h-0 overflow-hidden",children:(0,s.jsx)(nN,{taskId:e.id,worktreePath:n?.worktreePath??null,previewCommand:e.project?.previewCommand??null,previewPort:e.project?.previewPort??null,refreshKey:O,projectId:e.projectId,previewUrl:H,onPreviewUrlChange:G})})]},j))}),(0,s.jsx)(tI.TaskMergeConfirmDialog,{open:el,onOpenChange:eo,taskId:e.id,taskTitle:e.title,baseBranch:e.baseBranch??"main",fileCount:A?.files?.length??0,commitCount:A?.commitCount??0,commitLog:eu,onMergeComplete:ei})]})}],470511)}]);