tower-studio 0.1.9 → 0.1.11

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 (649) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build/chunks/{0kjx__pnpm_05m.mc_._.js → 0-yb__pnpm_0dykqwq._.js} +167 -167
  3. package/.next/build/chunks/{[root-of-the-server]__13e2v6w._.js → [root-of-the-server]__01h52~y._.js} +3 -3
  4. package/.next/build/chunks/{[root-of-the-server]__0a5dngl._.js → [root-of-the-server]__097_v8t._.js} +7 -7
  5. package/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_0n5jxhz._.js +13 -0
  6. package/.next/build/chunks/[turbopack]_runtime.js +1 -1
  7. package/.next/build/postcss.js +4 -4
  8. package/.next/build-manifest.json +9 -9
  9. package/.next/cache/.previewinfo +1 -1
  10. package/.next/cache/.rscinfo +1 -1
  11. package/.next/cache/.tsbuildinfo +1 -1
  12. package/.next/diagnostics/route-bundle-stats.json +237 -237
  13. package/.next/fallback-build-manifest.json +3 -3
  14. package/.next/prerender-manifest.json +3 -3
  15. package/.next/required-server-files.js +3 -3
  16. package/.next/required-server-files.json +3 -3
  17. package/.next/server/app/_global-error/page/build-manifest.json +6 -6
  18. package/.next/server/app/_global-error/page.js +11 -11
  19. package/.next/server/app/_global-error/page.js.nft.json +1 -1
  20. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  21. package/.next/server/app/_global-error.html +1 -1
  22. package/.next/server/app/_global-error.rsc +8 -8
  23. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
  24. package/.next/server/app/_global-error.segments/_full.segment.rsc +8 -8
  25. package/.next/server/app/_global-error.segments/_head.segment.rsc +4 -4
  26. package/.next/server/app/_global-error.segments/_index.segment.rsc +3 -3
  27. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  28. package/.next/server/app/_not-found/page/build-manifest.json +6 -6
  29. package/.next/server/app/_not-found/page/next-font-manifest.json +1 -1
  30. package/.next/server/app/_not-found/page/react-loadable-manifest.json +7 -7
  31. package/.next/server/app/_not-found/page/server-reference-manifest.json +76 -76
  32. package/.next/server/app/_not-found/page.js +19 -19
  33. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  34. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  35. package/.next/server/app/_not-found.html +1 -1
  36. package/.next/server/app/_not-found.rsc +14 -14
  37. package/.next/server/app/_not-found.segments/_full.segment.rsc +14 -14
  38. package/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
  39. package/.next/server/app/_not-found.segments/_index.segment.rsc +9 -9
  40. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  41. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  42. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  43. package/.next/server/app/api/adapters/test/route.js +8 -8
  44. package/.next/server/app/api/adapters/test/route.js.nft.json +1 -1
  45. package/.next/server/app/api/browse-fs/route.js +6 -6
  46. package/.next/server/app/api/browse-fs/route.js.nft.json +1 -1
  47. package/.next/server/app/api/files/assets/[projectId]/[filename]/route.js +6 -6
  48. package/.next/server/app/api/files/assets/[projectId]/[filename]/route.js.nft.json +1 -1
  49. package/.next/server/app/api/git/route.js +6 -6
  50. package/.next/server/app/api/git/route.js.nft.json +1 -1
  51. package/.next/server/app/api/internal/assets/[projectId]/[filename]/route.js +6 -6
  52. package/.next/server/app/api/internal/assets/[projectId]/[filename]/route.js.nft.json +1 -1
  53. package/.next/server/app/api/internal/assets/reveal/route.js +6 -6
  54. package/.next/server/app/api/internal/assets/reveal/route.js.nft.json +1 -1
  55. package/.next/server/app/api/internal/assistant/chat/route.js +6 -6
  56. package/.next/server/app/api/internal/assistant/chat/route.js.nft.json +1 -1
  57. package/.next/server/app/api/internal/assistant/images/route.js +8 -8
  58. package/.next/server/app/api/internal/assistant/images/route.js.nft.json +1 -1
  59. package/.next/server/app/api/internal/assistant/route.js +6 -6
  60. package/.next/server/app/api/internal/assistant/route.js.nft.json +1 -1
  61. package/.next/server/app/api/internal/assistant/sessions/route.js +6 -6
  62. package/.next/server/app/api/internal/assistant/sessions/route.js.nft.json +1 -1
  63. package/.next/server/app/api/internal/cache/[...segments]/route.js +6 -6
  64. package/.next/server/app/api/internal/cache/[...segments]/route.js.nft.json +1 -1
  65. package/.next/server/app/api/internal/hooks/install/route.js +6 -6
  66. package/.next/server/app/api/internal/hooks/install/route.js.nft.json +1 -1
  67. package/.next/server/app/api/internal/hooks/session/route.js +6 -6
  68. package/.next/server/app/api/internal/hooks/session/route.js.nft.json +1 -1
  69. package/.next/server/app/api/internal/hooks/stop/route.js +7 -7
  70. package/.next/server/app/api/internal/hooks/stop/route.js.nft.json +1 -1
  71. package/.next/server/app/api/internal/hooks/upload/route.js +6 -6
  72. package/.next/server/app/api/internal/hooks/upload/route.js.nft.json +1 -1
  73. package/.next/server/app/api/internal/notifications/pending/route.js +6 -6
  74. package/.next/server/app/api/internal/notifications/pending/route.js.nft.json +1 -1
  75. package/.next/server/app/api/internal/terminal/[taskId]/buffer/route.js +7 -7
  76. package/.next/server/app/api/internal/terminal/[taskId]/buffer/route.js.nft.json +1 -1
  77. package/.next/server/app/api/internal/terminal/[taskId]/input/route.js +7 -7
  78. package/.next/server/app/api/internal/terminal/[taskId]/input/route.js.nft.json +1 -1
  79. package/.next/server/app/api/internal/terminal/[taskId]/start/route.js +9 -9
  80. package/.next/server/app/api/internal/terminal/[taskId]/start/route.js.nft.json +1 -1
  81. package/.next/server/app/api/tasks/[taskId]/diff/route.js +7 -7
  82. package/.next/server/app/api/tasks/[taskId]/diff/route.js.nft.json +1 -1
  83. package/.next/server/app/api/tasks/[taskId]/merge/route.js +8 -8
  84. package/.next/server/app/api/tasks/[taskId]/merge/route.js.nft.json +1 -1
  85. package/.next/server/app/apple-icon.png/route.js +6 -6
  86. package/.next/server/app/apple-icon.png/route.js.nft.json +1 -1
  87. package/.next/server/app/favicon.ico/route.js +6 -6
  88. package/.next/server/app/favicon.ico/route.js.nft.json +1 -1
  89. package/.next/server/app/icon0.svg/route.js +6 -6
  90. package/.next/server/app/icon0.svg/route.js.nft.json +1 -1
  91. package/.next/server/app/icon1.png/route.js +6 -6
  92. package/.next/server/app/icon1.png/route.js.nft.json +1 -1
  93. package/.next/server/app/index.html +1 -1
  94. package/.next/server/app/index.rsc +14 -14
  95. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  96. package/.next/server/app/index.segments/_full.segment.rsc +14 -14
  97. package/.next/server/app/index.segments/_head.segment.rsc +4 -4
  98. package/.next/server/app/index.segments/_index.segment.rsc +9 -9
  99. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  100. package/.next/server/app/manifest.json/route.js +6 -6
  101. package/.next/server/app/manifest.json/route.js.nft.json +1 -1
  102. package/.next/server/app/missions/page/build-manifest.json +6 -6
  103. package/.next/server/app/missions/page/next-font-manifest.json +1 -1
  104. package/.next/server/app/missions/page/react-loadable-manifest.json +7 -7
  105. package/.next/server/app/missions/page/server-reference-manifest.json +144 -144
  106. package/.next/server/app/missions/page.js +21 -21
  107. package/.next/server/app/missions/page.js.nft.json +1 -1
  108. package/.next/server/app/missions/page_client-reference-manifest.js +1 -1
  109. package/.next/server/app/onboarding/page/build-manifest.json +6 -6
  110. package/.next/server/app/onboarding/page/next-font-manifest.json +1 -1
  111. package/.next/server/app/onboarding/page/react-loadable-manifest.json +7 -7
  112. package/.next/server/app/onboarding/page/server-reference-manifest.json +76 -76
  113. package/.next/server/app/onboarding/page.js +20 -20
  114. package/.next/server/app/onboarding/page.js.nft.json +1 -1
  115. package/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  116. package/.next/server/app/onboarding.html +1 -1
  117. package/.next/server/app/onboarding.rsc +16 -16
  118. package/.next/server/app/onboarding.segments/_full.segment.rsc +16 -16
  119. package/.next/server/app/onboarding.segments/_head.segment.rsc +4 -4
  120. package/.next/server/app/onboarding.segments/_index.segment.rsc +9 -9
  121. package/.next/server/app/onboarding.segments/_tree.segment.rsc +2 -2
  122. package/.next/server/app/onboarding.segments/onboarding/__PAGE__.segment.rsc +4 -4
  123. package/.next/server/app/onboarding.segments/onboarding.segment.rsc +3 -3
  124. package/.next/server/app/page/build-manifest.json +6 -6
  125. package/.next/server/app/page/next-font-manifest.json +1 -1
  126. package/.next/server/app/page/react-loadable-manifest.json +7 -7
  127. package/.next/server/app/page/server-reference-manifest.json +76 -76
  128. package/.next/server/app/page.js +20 -20
  129. package/.next/server/app/page.js.nft.json +1 -1
  130. package/.next/server/app/page_client-reference-manifest.js +1 -1
  131. package/.next/server/app/settings/page/build-manifest.json +6 -6
  132. package/.next/server/app/settings/page/next-font-manifest.json +1 -1
  133. package/.next/server/app/settings/page/react-loadable-manifest.json +7 -7
  134. package/.next/server/app/settings/page/server-reference-manifest.json +112 -112
  135. package/.next/server/app/settings/page.js +20 -20
  136. package/.next/server/app/settings/page.js.nft.json +1 -1
  137. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  138. package/.next/server/app/settings.html +1 -1
  139. package/.next/server/app/settings.rsc +16 -16
  140. package/.next/server/app/settings.segments/_full.segment.rsc +16 -16
  141. package/.next/server/app/settings.segments/_head.segment.rsc +4 -4
  142. package/.next/server/app/settings.segments/_index.segment.rsc +9 -9
  143. package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  144. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +4 -4
  145. package/.next/server/app/settings.segments/settings.segment.rsc +3 -3
  146. package/.next/server/app/workspaces/[workspaceId]/archive/page/build-manifest.json +6 -6
  147. package/.next/server/app/workspaces/[workspaceId]/archive/page/next-font-manifest.json +1 -1
  148. package/.next/server/app/workspaces/[workspaceId]/archive/page/react-loadable-manifest.json +7 -7
  149. package/.next/server/app/workspaces/[workspaceId]/archive/page/server-reference-manifest.json +186 -186
  150. package/.next/server/app/workspaces/[workspaceId]/archive/page.js +20 -20
  151. package/.next/server/app/workspaces/[workspaceId]/archive/page.js.nft.json +1 -1
  152. package/.next/server/app/workspaces/[workspaceId]/archive/page_client-reference-manifest.js +1 -1
  153. package/.next/server/app/workspaces/[workspaceId]/assets/page/build-manifest.json +6 -6
  154. package/.next/server/app/workspaces/[workspaceId]/assets/page/next-font-manifest.json +1 -1
  155. package/.next/server/app/workspaces/[workspaceId]/assets/page/react-loadable-manifest.json +7 -7
  156. package/.next/server/app/workspaces/[workspaceId]/assets/page/server-reference-manifest.json +172 -172
  157. package/.next/server/app/workspaces/[workspaceId]/assets/page.js +20 -20
  158. package/.next/server/app/workspaces/[workspaceId]/assets/page.js.nft.json +1 -1
  159. package/.next/server/app/workspaces/[workspaceId]/assets/page_client-reference-manifest.js +1 -1
  160. package/.next/server/app/workspaces/[workspaceId]/notes/page/build-manifest.json +6 -6
  161. package/.next/server/app/workspaces/[workspaceId]/notes/page/next-font-manifest.json +1 -1
  162. package/.next/server/app/workspaces/[workspaceId]/notes/page/react-loadable-manifest.json +7 -7
  163. package/.next/server/app/workspaces/[workspaceId]/notes/page/server-reference-manifest.json +146 -146
  164. package/.next/server/app/workspaces/[workspaceId]/notes/page.js +20 -20
  165. package/.next/server/app/workspaces/[workspaceId]/notes/page.js.nft.json +1 -1
  166. package/.next/server/app/workspaces/[workspaceId]/notes/page_client-reference-manifest.js +1 -1
  167. package/.next/server/app/workspaces/[workspaceId]/page/build-manifest.json +6 -6
  168. package/.next/server/app/workspaces/[workspaceId]/page/next-font-manifest.json +1 -1
  169. package/.next/server/app/workspaces/[workspaceId]/page/react-loadable-manifest.json +7 -7
  170. package/.next/server/app/workspaces/[workspaceId]/page/server-reference-manifest.json +188 -188
  171. package/.next/server/app/workspaces/[workspaceId]/page.js +21 -21
  172. package/.next/server/app/workspaces/[workspaceId]/page.js.nft.json +1 -1
  173. package/.next/server/app/workspaces/[workspaceId]/page_client-reference-manifest.js +1 -1
  174. package/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page/build-manifest.json +6 -6
  175. package/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page/next-font-manifest.json +1 -1
  176. package/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page/react-loadable-manifest.json +7 -7
  177. package/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page/server-reference-manifest.json +76 -76
  178. package/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page.js +20 -20
  179. package/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page.js.nft.json +1 -1
  180. package/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page_client-reference-manifest.js +1 -1
  181. package/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page/build-manifest.json +6 -6
  182. package/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page/next-font-manifest.json +1 -1
  183. package/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page/react-loadable-manifest.json +10 -10
  184. package/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page/server-reference-manifest.json +192 -192
  185. package/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page.js +22 -22
  186. package/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page.js.nft.json +1 -1
  187. package/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page_client-reference-manifest.js +1 -1
  188. package/.next/server/app/workspaces/page/build-manifest.json +6 -6
  189. package/.next/server/app/workspaces/page/next-font-manifest.json +1 -1
  190. package/.next/server/app/workspaces/page/react-loadable-manifest.json +7 -7
  191. package/.next/server/app/workspaces/page/server-reference-manifest.json +112 -112
  192. package/.next/server/app/workspaces/page.js +20 -20
  193. package/.next/server/app/workspaces/page.js.nft.json +1 -1
  194. package/.next/server/app/workspaces/page_client-reference-manifest.js +1 -1
  195. package/.next/server/chunks/04uy__next-internal_server_app_api_internal_assets_reveal_route_actions_0znebp..js +3 -0
  196. package/.next/server/chunks/04uy__next-internal_server_app_api_internal_assistant_chat_route_actions_00gjtz_.js +3 -0
  197. package/.next/server/chunks/04uy__next-internal_server_app_api_internal_assistant_images_route_actions_0.n5t~i.js +3 -0
  198. package/.next/server/chunks/04uy__next-internal_server_app_api_internal_assistant_sessions_route_actions_0-fm7rx.js +3 -0
  199. package/.next/server/chunks/04uy__next-internal_server_app_api_internal_hooks_install_route_actions_0l972g~.js +3 -0
  200. package/.next/server/chunks/04uy__next-internal_server_app_api_internal_hooks_session_route_actions_0.suzi1.js +3 -0
  201. package/.next/server/chunks/0afp_server_app_api_files_assets_[projectId]_[filename]_route_actions_0-awt9r.js +3 -0
  202. package/.next/server/chunks/0afp_server_app_api_internal_assets_[projectId]_[filename]_route_actions_0t6ek0w.js +3 -0
  203. package/.next/server/chunks/0afp_server_app_api_internal_notifications_pending_route_actions_0f-e1l..js +3 -0
  204. package/.next/server/chunks/0afp_server_app_api_internal_terminal_[taskId]_buffer_route_actions_0m0i0r_.js +3 -0
  205. package/.next/server/chunks/0afp_server_app_api_internal_terminal_[taskId]_input_route_actions_0w_hflw.js +3 -0
  206. package/.next/server/chunks/0afp_server_app_api_internal_terminal_[taskId]_start_route_actions_0tci.x0.js +3 -0
  207. package/.next/server/chunks/{03j-_@anthropic-ai_claude-agent-sdk_sdk_mjs_04597t~._.js → 0b0n_@anthropic-ai_claude-agent-sdk_sdk_mjs_0wzx_-c._.js} +2 -2
  208. package/.next/server/chunks/0l2w_next-internal_server_app_api_internal_cache_[___segments]_route_actions_0s95wfk.js +3 -0
  209. package/.next/server/chunks/0u0h_tower__next-internal_server_app_api_internal_hooks_upload_route_actions_10hulej.js +3 -0
  210. package/.next/server/chunks/0u0h_tower__next-internal_server_app_api_tasks_[taskId]_merge_route_actions_02facil.js +3 -0
  211. package/.next/server/chunks/{10ge_next_dist_08.3req._.js → 0uz~_next_dist_0auh~z2._.js} +3 -3
  212. package/.next/server/chunks/{10ge_next_dist_esm_build_templates_app-route_0liabcf.js → 0uz~_next_dist_esm_build_templates_app-route_0.k256s.js} +2 -2
  213. package/.next/server/chunks/0uz~_next_dist_esm_build_templates_app-route_05yec2y.js +4 -0
  214. package/.next/server/chunks/0uz~_next_dist_esm_build_templates_app-route_06vryvz.js +3 -0
  215. package/.next/server/chunks/0uz~_next_dist_esm_build_templates_app-route_0q64.kc.js +3 -0
  216. package/.next/server/chunks/{10ge_next_dist_esm_build_templates_app-route_0jwpolf.js → 0uz~_next_dist_esm_build_templates_app-route_0s-fzhv.js} +2 -2
  217. package/.next/server/chunks/0uz~_next_dist_esm_build_templates_app-route_12y4scn.js +3 -0
  218. package/.next/server/chunks/0y0r_f_tower__next-internal_server_app_api_adapters_test_route_actions_0i51gzp.js +3 -0
  219. package/.next/server/chunks/0y0r_f_tower__next-internal_server_app_api_internal_assistant_route_actions_0n4kn0g.js +3 -0
  220. package/.next/server/chunks/0y0r_f_tower__next-internal_server_app_api_internal_hooks_stop_route_actions_0tddg8n.js +3 -0
  221. package/.next/server/chunks/0y0r_f_tower__next-internal_server_app_api_tasks_[taskId]_diff_route_actions_0ric8cc.js +3 -0
  222. package/.next/server/chunks/121__zod_v4_classic_external_0~18d66.js +39 -0
  223. package/.next/server/chunks/[root-of-the-server]__0.9.bkp._.js +3 -0
  224. package/.next/server/chunks/[root-of-the-server]__003.cao._.js +3 -0
  225. package/.next/server/chunks/{[root-of-the-server]__11v.yk_._.js → [root-of-the-server]__02~bq0q._.js} +3 -3
  226. package/.next/server/chunks/[root-of-the-server]__05i_6jl._.js +3 -0
  227. package/.next/server/chunks/[root-of-the-server]__05mc_xk._.js +3 -0
  228. package/.next/server/chunks/[root-of-the-server]__06zd8x0._.js +3 -0
  229. package/.next/server/chunks/[root-of-the-server]__07_t6ha._.js +3 -0
  230. package/.next/server/chunks/{[root-of-the-server]__05pxb~w._.js → [root-of-the-server]__081dmfv._.js} +3 -3
  231. package/.next/server/chunks/[root-of-the-server]__0axwx7g._.js +20 -0
  232. package/.next/server/chunks/[root-of-the-server]__0bvqbq0._.js +3 -0
  233. package/.next/server/chunks/{[root-of-the-server]__12._zd-._.js → [root-of-the-server]__0hw3ulq._.js} +2 -2
  234. package/.next/server/chunks/{[root-of-the-server]__0sjsc63._.js → [root-of-the-server]__0i4isjs._.js} +3 -3
  235. package/.next/server/chunks/[root-of-the-server]__0il.3bc._.js +3 -0
  236. package/.next/server/chunks/{[root-of-the-server]__07-am_7._.js → [root-of-the-server]__0k6_.b8._.js} +2 -2
  237. package/.next/server/chunks/[root-of-the-server]__0lg6mol._.js +3 -0
  238. package/.next/server/chunks/[root-of-the-server]__0m31xle._.js +3 -0
  239. package/.next/server/chunks/[root-of-the-server]__0p-9erj._.js +3 -0
  240. package/.next/server/chunks/[root-of-the-server]__0p5iuez._.js +11 -0
  241. package/.next/server/chunks/[root-of-the-server]__0pe2bmo._.js +3 -0
  242. package/.next/server/chunks/[root-of-the-server]__0sgxys4._.js +3 -0
  243. package/.next/server/chunks/[root-of-the-server]__0t2ql2.._.js +3 -0
  244. package/.next/server/chunks/{[root-of-the-server]__0rpqx55._.js → [root-of-the-server]__0u4~z7h._.js} +2 -2
  245. package/.next/server/chunks/[root-of-the-server]__0uvjyz~._.js +3 -0
  246. package/.next/server/chunks/{[root-of-the-server]__0dqta7g._.js → [root-of-the-server]__0v.lagk._.js} +2 -2
  247. package/.next/server/chunks/[root-of-the-server]__0v6dx13._.js +3 -0
  248. package/.next/server/chunks/[root-of-the-server]__0ypx5xw._.js +3 -0
  249. package/.next/server/chunks/{[root-of-the-server]__0j3gbp7._.js → [root-of-the-server]__0ze75mm._.js} +2 -2
  250. package/.next/server/chunks/[root-of-the-server]__0~33o~m._.js +4 -0
  251. package/.next/server/chunks/[root-of-the-server]__0~_gk3k._.js +3 -0
  252. package/.next/server/chunks/[turbopack]_runtime.js +1 -1
  253. package/.next/server/chunks/project_f_tower_06227jx._.js +10 -0
  254. package/.next/server/chunks/{tower_03g~ktv._.js → project_f_tower_0ihrsvd._.js} +3 -3
  255. package/.next/server/chunks/project_f_tower_0n1s3ym._.js +3 -0
  256. package/.next/server/chunks/project_f_tower__next-internal_server_app_api_browse-fs_route_actions_0f1ms64.js +3 -0
  257. package/.next/server/chunks/project_f_tower__next-internal_server_app_api_git_route_actions_104q-kq.js +3 -0
  258. package/.next/server/chunks/project_f_tower__next-internal_server_app_apple-icon_png_route_actions_0bb5t_v.js +3 -0
  259. package/.next/server/chunks/project_f_tower__next-internal_server_app_favicon_ico_route_actions_0124g8-.js +3 -0
  260. package/.next/server/chunks/project_f_tower__next-internal_server_app_icon0_svg_route_actions_0kttj.d.js +3 -0
  261. package/.next/server/chunks/project_f_tower__next-internal_server_app_icon1_png_route_actions_12vfwry.js +3 -0
  262. package/.next/server/chunks/project_f_tower__next-internal_server_app_manifest_json_route_actions_0.~axx_.js +3 -0
  263. package/.next/server/chunks/project_f_tower_src_0er83xg._.js +3 -0
  264. package/.next/server/chunks/project_f_tower_src_11e.cv5._.js +3 -0
  265. package/.next/server/chunks/project_f_tower_src_lib_0p_b~77._.js +3 -0
  266. package/.next/server/chunks/{tower_src_lib_0uok6j3._.js → project_f_tower_src_lib_10p8sue._.js} +2 -2
  267. package/.next/server/chunks/project_f_tower_src_lib_constants_ts_020catz._.js +3 -0
  268. package/.next/server/chunks/ssr/0-yb__pnpm_072uqh4._.js +14 -0
  269. package/.next/server/chunks/ssr/0-yb__pnpm_0gui5y9._.js +3 -0
  270. package/.next/server/chunks/ssr/0-yb__pnpm_0qi3qqn._.js +3 -0
  271. package/.next/server/chunks/ssr/04uy_src_app_workspaces_[workspaceId]_tasks_[taskId]_task-page-client_tsx_01.s1p0._.js +3 -0
  272. package/.next/server/chunks/ssr/{03j-_@anthropic-ai_claude-agent-sdk_sdk_mjs_0kr2_y.._.js → 0b0n_@anthropic-ai_claude-agent-sdk_sdk_mjs_123v~_z._.js} +2 -2
  273. package/.next/server/chunks/ssr/0j~t_@monaco-editor_react_dist_index_mjs_0m1qx-m._.js +3 -0
  274. package/.next/server/chunks/ssr/0j~t_@monaco-editor_react_dist_index_mjs_0ni7by_._.js +3 -0
  275. package/.next/server/chunks/ssr/0rvf_@dnd-kit_core_dist_core_esm_0qazy~h.js +3 -0
  276. package/.next/server/chunks/ssr/0uz~_next_0smzj1m._.js +18 -0
  277. package/.next/server/chunks/ssr/0uz~_next_dist_058ju5m._.js +3 -0
  278. package/.next/server/chunks/ssr/0uz~_next_dist_0ot5z96._.js +19 -0
  279. package/.next/server/chunks/ssr/{10ge_next_dist_0pw4my6._.js → 0uz~_next_dist_0tnc.0z._.js} +2 -2
  280. package/.next/server/chunks/ssr/0uz~_next_dist_0viyn-6._.js +6 -0
  281. package/.next/server/chunks/ssr/{10ge_next_dist_0wjbiu9._.js → 0uz~_next_dist_0xqqv-_._.js} +2 -2
  282. package/.next/server/chunks/ssr/0uz~_next_dist_11y31c8._.js +3 -0
  283. package/.next/server/chunks/ssr/{10ge_next_dist_client_components_0--gzcy._.js → 0uz~_next_dist_client_components_0m_m~4r._.js} +2 -2
  284. package/.next/server/chunks/ssr/{10ge_next_dist_client_components_0eil7-a._.js → 0uz~_next_dist_client_components_0neff21._.js} +3 -3
  285. package/.next/server/chunks/ssr/0uz~_next_dist_client_components_builtin_forbidden_0kvxu2~.js +3 -0
  286. package/.next/server/chunks/ssr/0uz~_next_dist_client_components_builtin_global-error_0377e9o.js +3 -0
  287. package/.next/server/chunks/ssr/0uz~_next_dist_client_components_builtin_unauthorized_0wz-f2j.js +3 -0
  288. package/.next/server/chunks/ssr/{10ge_next_dist_compiled_0g45ze2._.js → 0uz~_next_dist_compiled_0m~qqw~._.js} +2 -2
  289. package/.next/server/chunks/ssr/0uz~_next_dist_esm_build_templates_app-page_01q4vlm.js +4 -0
  290. package/.next/server/chunks/ssr/{10ge_next_dist_esm_build_templates_app-page_0fjd2ua.js → 0uz~_next_dist_esm_build_templates_app-page_0553tiz.js} +3 -3
  291. package/.next/server/chunks/ssr/0uz~_next_dist_esm_build_templates_app-page_0as2amp.js +4 -0
  292. package/.next/server/chunks/ssr/0uz~_next_dist_esm_build_templates_app-page_0crer~s.js +4 -0
  293. package/.next/server/chunks/ssr/0uz~_next_dist_esm_build_templates_app-page_0cu4e.5.js +4 -0
  294. package/.next/server/chunks/ssr/0uz~_next_dist_esm_build_templates_app-page_0gn6gc1.js +4 -0
  295. package/.next/server/chunks/ssr/0uz~_next_dist_esm_build_templates_app-page_0h.vao6.js +4 -0
  296. package/.next/server/chunks/ssr/{10ge_next_dist_esm_build_templates_app-page_11pz1fw.js → 0uz~_next_dist_esm_build_templates_app-page_0k4fbs6.js} +3 -3
  297. package/.next/server/chunks/ssr/0uz~_next_dist_esm_build_templates_app-page_0n2032y.js +4 -0
  298. package/.next/server/chunks/ssr/{10ge_next_dist_esm_build_templates_app-page_080g02v.js → 0uz~_next_dist_esm_build_templates_app-page_0y10ld_.js} +3 -3
  299. package/.next/server/chunks/ssr/{10ge_next_dist_esm_build_templates_app-page_0zgisbd.js → 0uz~_next_dist_esm_build_templates_app-page_0ysuakv.js} +3 -3
  300. package/.next/server/chunks/ssr/0uz~_next_dist_esm_build_templates_app-page_136sj3a.js +4 -0
  301. package/.next/server/chunks/ssr/0uz~_next_dist_esm_build_templates_app-page_13jghu9.js +4 -0
  302. package/.next/server/chunks/ssr/0xjs_lucide-react_dist_esm_icons_0l6be37._.js +3 -0
  303. package/.next/server/chunks/ssr/{tower_src_app_workspaces_[workspaceId]_assets_assets-page-client_tsx_0zfgzhi._.js → 0y0r_f_tower_src_app_workspaces_[workspaceId]_assets_assets-page-client_tsx_0n4g3bn._.js} +2 -2
  304. package/.next/server/chunks/ssr/[root-of-the-server]__0.hh.2a._.js +3 -0
  305. package/.next/server/chunks/ssr/[root-of-the-server]__0.r38oo._.js +3 -0
  306. package/.next/server/chunks/ssr/{[root-of-the-server]__05452ke._.js → [root-of-the-server]__00.lowc._.js} +3 -3
  307. package/.next/server/chunks/ssr/{[root-of-the-server]__0d5p5d.._.js → [root-of-the-server]__007tg36._.js} +3 -3
  308. package/.next/server/chunks/ssr/[root-of-the-server]__012ko5_._.js +3 -0
  309. package/.next/server/chunks/ssr/{[root-of-the-server]__0i6glcp._.js → [root-of-the-server]__025.0xa._.js} +3 -3
  310. package/.next/server/chunks/ssr/{[root-of-the-server]__0gsj3~.._.js → [root-of-the-server]__04u4kb4._.js} +3 -3
  311. package/.next/server/chunks/ssr/[root-of-the-server]__055w_hn._.js +3 -0
  312. package/.next/server/chunks/ssr/{[root-of-the-server]__0adx8p4._.js → [root-of-the-server]__05a17ca._.js} +3 -3
  313. package/.next/server/chunks/ssr/[root-of-the-server]__06japut._.js +3 -0
  314. package/.next/server/chunks/ssr/[root-of-the-server]__06qzctf._.js +3 -0
  315. package/.next/server/chunks/ssr/[root-of-the-server]__09mr4e7._.js +3 -0
  316. package/.next/server/chunks/ssr/[root-of-the-server]__0c1i04u._.js +3 -0
  317. package/.next/server/chunks/ssr/[root-of-the-server]__0db_p8v._.js +3 -0
  318. package/.next/server/chunks/ssr/[root-of-the-server]__0ffdrwp._.js +3 -0
  319. package/.next/server/chunks/ssr/[root-of-the-server]__0fkkh9j._.js +3 -0
  320. package/.next/server/chunks/ssr/[root-of-the-server]__0fu82np._.js +3 -0
  321. package/.next/server/chunks/ssr/[root-of-the-server]__0fwuc5u._.js +3 -0
  322. package/.next/server/chunks/ssr/{[root-of-the-server]__06sm5cw._.js → [root-of-the-server]__0hiekzn._.js} +2 -2
  323. package/.next/server/chunks/ssr/[root-of-the-server]__0i4rk9v._.js +47 -0
  324. package/.next/server/chunks/ssr/[root-of-the-server]__0m28~~t._.js +3 -0
  325. package/.next/server/chunks/ssr/[root-of-the-server]__0mf.3xq._.js +3 -0
  326. package/.next/server/chunks/ssr/[root-of-the-server]__0nmyvwk._.js +3 -0
  327. package/.next/server/chunks/ssr/[root-of-the-server]__0np-y3i._.js +3 -0
  328. package/.next/server/chunks/ssr/{[root-of-the-server]__0jux8~h._.js → [root-of-the-server]__0p_hwna._.js} +3 -3
  329. package/.next/server/chunks/ssr/[root-of-the-server]__0qwr~nq._.js +3 -0
  330. package/.next/server/chunks/ssr/[root-of-the-server]__0r6gkos._.js +30 -0
  331. package/.next/server/chunks/ssr/{[root-of-the-server]__1223b0_._.js → [root-of-the-server]__0u26l~e._.js} +3 -3
  332. package/.next/server/chunks/ssr/{[root-of-the-server]__04xn50b._.js → [root-of-the-server]__0uca1bc._.js} +3 -3
  333. package/.next/server/chunks/ssr/[root-of-the-server]__0v7fjw6._.js +3 -0
  334. package/.next/server/chunks/ssr/[root-of-the-server]__0v94jfv._.js +3 -0
  335. package/.next/server/chunks/ssr/[root-of-the-server]__0vn5cvq._.js +3 -0
  336. package/.next/server/chunks/ssr/{[root-of-the-server]__13-by9r._.js → [root-of-the-server]__0w.hk6m._.js} +3 -3
  337. package/.next/server/chunks/ssr/[root-of-the-server]__0w7gbe7._.js +3 -0
  338. package/.next/server/chunks/ssr/[root-of-the-server]__0w8l-4s._.js +3 -0
  339. package/.next/server/chunks/ssr/[root-of-the-server]__0wkjslq._.js +3 -0
  340. package/.next/server/chunks/ssr/[root-of-the-server]__0wsvmkr._.js +3 -0
  341. package/.next/server/chunks/ssr/[root-of-the-server]__0xe-o3g._.js +30 -0
  342. package/.next/server/chunks/ssr/[root-of-the-server]__0xe9b6_._.js +3 -0
  343. package/.next/server/chunks/ssr/[root-of-the-server]__0zemnbk._.js +3 -0
  344. package/.next/server/chunks/ssr/[root-of-the-server]__0zugnux._.js +3 -0
  345. package/.next/server/chunks/ssr/[root-of-the-server]__105vrk3._.js +3 -0
  346. package/.next/server/chunks/ssr/[root-of-the-server]__112new_._.js +3 -0
  347. package/.next/server/chunks/ssr/[root-of-the-server]__11j4k9o._.js +3 -0
  348. package/.next/server/chunks/ssr/[root-of-the-server]__13cjs8r._.js +3 -0
  349. package/.next/server/chunks/ssr/[root-of-the-server]__13eo85g._.js +3 -0
  350. package/.next/server/chunks/ssr/[root-of-the-server]__13x5mmo._.js +30 -0
  351. package/.next/server/chunks/ssr/[turbopack]_runtime.js +1 -1
  352. package/.next/server/chunks/ssr/project_f_tower_0-0bopv._.js +30 -0
  353. package/.next/server/chunks/ssr/project_f_tower_0.txwd8._.js +3 -0
  354. package/.next/server/chunks/ssr/{tower_0d.car1._.js → project_f_tower_02411e5._.js} +3 -3
  355. package/.next/server/chunks/ssr/project_f_tower_02x5vbj._.js +3 -0
  356. package/.next/server/chunks/ssr/project_f_tower_03k0qr1._.js +3 -0
  357. package/.next/server/chunks/ssr/{tower_0egtw-7._.js → project_f_tower_04g3~44._.js} +3 -3
  358. package/.next/server/chunks/ssr/project_f_tower_0cjk_8x._.js +30 -0
  359. package/.next/server/chunks/ssr/project_f_tower_0d-6.rs._.js +39 -0
  360. package/.next/server/chunks/ssr/project_f_tower_0ea6ill._.js +3 -0
  361. package/.next/server/chunks/ssr/project_f_tower_0f0-wva._.js +3 -0
  362. package/.next/server/chunks/ssr/project_f_tower_0ghw~2t._.js +3 -0
  363. package/.next/server/chunks/ssr/{tower_0c8unc1._.js → project_f_tower_0h79vn0._.js} +2 -2
  364. package/.next/server/chunks/ssr/project_f_tower_0hgtev9._.js +7 -0
  365. package/.next/server/chunks/ssr/project_f_tower_0ivvjwd._.js +3 -0
  366. package/.next/server/chunks/ssr/project_f_tower_0jdkold._.js +3 -0
  367. package/.next/server/chunks/ssr/project_f_tower_0jy~1uf._.js +3 -0
  368. package/.next/server/chunks/ssr/{tower_0tuq2iz._.js → project_f_tower_0knz136._.js} +3 -3
  369. package/.next/server/chunks/ssr/project_f_tower_0l6ssf8._.js +3 -0
  370. package/.next/server/chunks/ssr/project_f_tower_0n6q9zh._.js +3 -0
  371. package/.next/server/chunks/ssr/project_f_tower_0ntkd-l._.js +6 -0
  372. package/.next/server/chunks/ssr/project_f_tower_0o5.y1e._.js +3 -0
  373. package/.next/server/chunks/ssr/project_f_tower_0p39h1r._.js +3 -0
  374. package/.next/server/chunks/ssr/project_f_tower_0sj3voe._.js +3 -0
  375. package/.next/server/chunks/ssr/project_f_tower_0u6dr5n._.js +3 -0
  376. package/.next/server/chunks/ssr/project_f_tower_0xkqjno._.js +3 -0
  377. package/.next/server/chunks/ssr/project_f_tower_0ym-aea._.js +3 -0
  378. package/.next/server/chunks/ssr/project_f_tower_10lk3gb._.js +30 -0
  379. package/.next/server/chunks/ssr/{tower_0h3r32m._.js → project_f_tower_10~x~zx._.js} +3 -3
  380. package/.next/server/chunks/ssr/project_f_tower__next-internal_server_app__global-error_page_actions_0r22s5i.js +3 -0
  381. package/.next/server/chunks/ssr/project_f_tower_src_0yr8rna._.js +3 -0
  382. package/.next/server/chunks/ssr/project_f_tower_src_actions_agent-actions_ts_0.s4~m-._.js +4 -0
  383. package/.next/server/chunks/ssr/project_f_tower_src_actions_file-actions_ts_02i742t._.js +3 -0
  384. package/.next/server/chunks/ssr/{tower_src_app_missions_missions-client_tsx_0a9vjyr._.js → project_f_tower_src_app_missions_missions-client_tsx_0ums4qx._.js} +2 -2
  385. package/.next/server/chunks/ssr/project_f_tower_src_app_onboarding_page_tsx_0_9_yoq._.js +3 -0
  386. package/.next/server/chunks/ssr/project_f_tower_src_app_settings_page_tsx_0oo06~d._.js +3 -0
  387. package/.next/server/chunks/ssr/project_f_tower_src_app_workspaces_[workspaceId]_board-page-client_tsx_0jmj1xz._.js +7 -0
  388. package/.next/server/chunks/ssr/project_f_tower_src_components_ui_select_tsx_07scqtg._.js +3 -0
  389. package/.next/server/chunks/ssr/project_f_tower_src_lib_0-pi47a._.js +3 -0
  390. package/.next/server/chunks/ssr/project_f_tower_src_lib_0._5zby._.js +3 -0
  391. package/.next/server/chunks/ssr/project_f_tower_src_lib_0kwu.w7._.js +3 -0
  392. package/.next/server/chunks/ssr/project_f_tower_src_lib_0q3t9-e._.js +3 -0
  393. package/.next/server/chunks/ssr/project_f_tower_src_lib_11g-ixh._.js +3 -0
  394. package/.next/server/chunks/ssr/project_f_tower_src_lib_constants_ts_0.qkxto._.js +3 -0
  395. package/.next/server/edge/chunks/0s6b_next_dist_esm_build_templates_edge-wrapper_0gir.8i.js +3 -0
  396. package/.next/server/edge/chunks/project_f_tower_0zwq2~l._.js +3 -0
  397. package/.next/server/instrumentation/middleware-manifest.json +2 -2
  398. package/.next/server/instrumentation.js +3 -3
  399. package/.next/server/instrumentation.js.nft.json +1 -1
  400. package/.next/server/middleware-build-manifest.js +9 -9
  401. package/.next/server/next-font-manifest.js +1 -1
  402. package/.next/server/next-font-manifest.json +12 -12
  403. package/.next/server/pages/404.html +1 -1
  404. package/.next/server/pages/500.html +1 -1
  405. package/.next/server/server-reference-manifest.js +1 -1
  406. package/.next/server/server-reference-manifest.json +987 -987
  407. package/.next/static/chunks/0-49z0i7n9z_u.js +31 -0
  408. package/.next/static/chunks/0.vq_m53d7t~7.js +1 -0
  409. package/.next/static/chunks/006_yes1e~uq-.js +1 -0
  410. package/.next/static/chunks/03~7u57dwxswo.js +1 -0
  411. package/.next/static/chunks/048wsx4_3dx7m.js +1 -0
  412. package/.next/static/chunks/{0drgc-oztq6o-.css → 04pjsuj.mivbh.css} +1 -1
  413. package/.next/static/chunks/04rm7wn4pu3v9.js +1 -0
  414. package/.next/static/chunks/054pu3m7e37gx.js +1 -0
  415. package/.next/static/chunks/05fge.5j9lnpa.js +1 -0
  416. package/.next/static/chunks/{03e.4ymu.j5wl.js → 05r51bf1-_-x4.js} +1 -1
  417. package/.next/static/chunks/{0465wja5wuj_t.js → 06hfc~t6~gtz9.js} +1 -1
  418. package/.next/static/chunks/{0_dgukndtuspa.js → 06xnbktd_jmb4.js} +2 -2
  419. package/.next/static/chunks/07_bc0h5~tysp.js +1 -0
  420. package/.next/static/chunks/09mkfd6kg8s2..js +1 -0
  421. package/.next/static/chunks/0afji0z13kos5.js +5 -0
  422. package/.next/static/chunks/0ayhcszr5.75h.js +1 -0
  423. package/.next/static/chunks/0azbwlqgcxx~9.js +1 -0
  424. package/.next/static/chunks/0c5h4.yuzpzs5.js +12 -0
  425. package/.next/static/chunks/0dlrmobwx~tvz.js +1 -0
  426. package/.next/static/chunks/0g-rx4evmd.pa.js +1 -0
  427. package/.next/static/chunks/0i5zk6woum~cm.js +1 -0
  428. package/.next/static/chunks/0kyb0fcxzykkx.js +1 -0
  429. package/.next/static/chunks/0odp5708u_28m.js +1 -0
  430. package/.next/static/chunks/0q6i_n.rkxpn0.js +1 -0
  431. package/.next/static/chunks/0qnz9q6uieuv8.js +1 -0
  432. package/.next/static/chunks/0qrp0pov94ecf.js +1 -0
  433. package/.next/static/chunks/0sa5eiyws1~n0.js +1 -0
  434. package/.next/static/chunks/0sdq_svi-w4cf.js +1 -0
  435. package/.next/static/chunks/0smj3ii_egywx.js +1 -0
  436. package/.next/static/chunks/0u6p4i4aoeb4m.js +1 -0
  437. package/.next/static/chunks/0upxmdjt9neoj.js +5 -0
  438. package/.next/static/chunks/0xvn7yrj70a9v.js +1 -0
  439. package/.next/static/chunks/0yjtd51nb081_.js +4 -0
  440. package/.next/static/chunks/10_azh3_hkhxj.js +1 -0
  441. package/.next/static/chunks/10xx474hrm.03.js +1 -0
  442. package/.next/static/chunks/116on53madp~2.js +2 -0
  443. package/.next/static/chunks/16ow8w3exqm6p.js +1 -0
  444. package/.next/static/chunks/{turbopack-0wjmrsi.z32s0.js → turbopack-12rg1oczocj42.js} +1 -1
  445. package/.next/trace +2 -2
  446. package/.next/trace-build +1 -1
  447. package/bin/tower.mjs +46 -8
  448. package/package.json +10 -4
  449. package/scripts/generate-prisma-client.js +43 -0
  450. package/scripts/link-prisma.js +144 -0
  451. package/scripts/post-tool-hook.js +188 -0
  452. package/scripts/session-start-hook.js +79 -0
  453. package/scripts/stop-hook.js +78 -0
  454. package/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_0y_r.ay._.js +0 -13
  455. package/.next/server/chunks/0cve_next-internal_server_app_api_internal_cache_[___segments]_route_actions_09n1sa3.js +0 -3
  456. package/.next/server/chunks/0tp-_server_app_api_files_assets_[projectId]_[filename]_route_actions_02i2urs.js +0 -3
  457. package/.next/server/chunks/0tp-_server_app_api_internal_assets_[projectId]_[filename]_route_actions_0kjz576.js +0 -3
  458. package/.next/server/chunks/0tp-_server_app_api_internal_notifications_pending_route_actions_08bx38r.js +0 -3
  459. package/.next/server/chunks/0tp-_server_app_api_internal_terminal_[taskId]_buffer_route_actions_0bpyf5x.js +0 -3
  460. package/.next/server/chunks/0tp-_server_app_api_internal_terminal_[taskId]_input_route_actions_0alu32r.js +0 -3
  461. package/.next/server/chunks/0tp-_server_app_api_internal_terminal_[taskId]_start_route_actions_0swqog2.js +0 -3
  462. package/.next/server/chunks/0w1v_zod_v4_classic_external_0m-7hz_.js +0 -39
  463. package/.next/server/chunks/0~.g__next-internal_server_app_api_internal_assistant_chat_route_actions_0x-qbrh.js +0 -3
  464. package/.next/server/chunks/0~.g__next-internal_server_app_api_internal_assistant_images_route_actions_0vws40t.js +0 -3
  465. package/.next/server/chunks/0~.g__next-internal_server_app_api_internal_assistant_sessions_route_actions_0p09rcp.js +0 -3
  466. package/.next/server/chunks/10ge_next_dist_esm_build_templates_app-route_00gmiw_.js +0 -3
  467. package/.next/server/chunks/10ge_next_dist_esm_build_templates_app-route_0z9_0_i.js +0 -3
  468. package/.next/server/chunks/10ge_next_dist_esm_build_templates_app-route_13w3ubu.js +0 -3
  469. package/.next/server/chunks/10ge_next_dist_esm_build_templates_app-route_13~vb_i.js +0 -4
  470. package/.next/server/chunks/[root-of-the-server]__02p-gd5._.js +0 -3
  471. package/.next/server/chunks/[root-of-the-server]__0319djr._.js +0 -3
  472. package/.next/server/chunks/[root-of-the-server]__043lk8~._.js +0 -4
  473. package/.next/server/chunks/[root-of-the-server]__053y9tf._.js +0 -3
  474. package/.next/server/chunks/[root-of-the-server]__09gjz6h._.js +0 -3
  475. package/.next/server/chunks/[root-of-the-server]__0_irb2s._.js +0 -3
  476. package/.next/server/chunks/[root-of-the-server]__0c4edwt._.js +0 -3
  477. package/.next/server/chunks/[root-of-the-server]__0c7y1r0._.js +0 -3
  478. package/.next/server/chunks/[root-of-the-server]__0dj34zn._.js +0 -3
  479. package/.next/server/chunks/[root-of-the-server]__0ko_rm_._.js +0 -3
  480. package/.next/server/chunks/[root-of-the-server]__0miy2g.._.js +0 -3
  481. package/.next/server/chunks/[root-of-the-server]__0mt-eeb._.js +0 -3
  482. package/.next/server/chunks/[root-of-the-server]__0n-6-hc._.js +0 -3
  483. package/.next/server/chunks/[root-of-the-server]__0nur_ir._.js +0 -3
  484. package/.next/server/chunks/[root-of-the-server]__0pz60q-._.js +0 -20
  485. package/.next/server/chunks/[root-of-the-server]__0q~5ya5._.js +0 -3
  486. package/.next/server/chunks/[root-of-the-server]__0th.w7w._.js +0 -3
  487. package/.next/server/chunks/[root-of-the-server]__0u..agy._.js +0 -11
  488. package/.next/server/chunks/[root-of-the-server]__0umzekq._.js +0 -3
  489. package/.next/server/chunks/[root-of-the-server]__0wu61w.._.js +0 -3
  490. package/.next/server/chunks/[root-of-the-server]__130shf~._.js +0 -3
  491. package/.next/server/chunks/ssr/040e_@monaco-editor_react_dist_index_mjs_0t4i-ho._.js +0 -3
  492. package/.next/server/chunks/ssr/040e_@monaco-editor_react_dist_index_mjs_0z6t1fr._.js +0 -3
  493. package/.next/server/chunks/ssr/0kjx__pnpm_0g9g8h6._.js +0 -3
  494. package/.next/server/chunks/ssr/0kjx__pnpm_0l.5ii.._.js +0 -3
  495. package/.next/server/chunks/ssr/0kjx__pnpm_0wrn.h9._.js +0 -14
  496. package/.next/server/chunks/ssr/0rik_@dnd-kit_core_dist_core_esm_11giptg.js +0 -3
  497. package/.next/server/chunks/ssr/0~.g_src_app_workspaces_[workspaceId]_tasks_[taskId]_task-page-client_tsx_0bbseig._.js +0 -3
  498. package/.next/server/chunks/ssr/10ge_next_00.-vj.._.js +0 -18
  499. package/.next/server/chunks/ssr/10ge_next_dist_01n~t8z._.js +0 -6
  500. package/.next/server/chunks/ssr/10ge_next_dist_06_-w96._.js +0 -19
  501. package/.next/server/chunks/ssr/10ge_next_dist_0~ti7jc._.js +0 -3
  502. package/.next/server/chunks/ssr/10ge_next_dist_10.ihny._.js +0 -3
  503. package/.next/server/chunks/ssr/10ge_next_dist_client_components_builtin_forbidden_0nzsnb2.js +0 -3
  504. package/.next/server/chunks/ssr/10ge_next_dist_client_components_builtin_global-error_125sopd.js +0 -3
  505. package/.next/server/chunks/ssr/10ge_next_dist_client_components_builtin_unauthorized_0z93cpe.js +0 -3
  506. package/.next/server/chunks/ssr/10ge_next_dist_esm_build_templates_app-page_08khzah.js +0 -4
  507. package/.next/server/chunks/ssr/10ge_next_dist_esm_build_templates_app-page_09~o5q0.js +0 -4
  508. package/.next/server/chunks/ssr/10ge_next_dist_esm_build_templates_app-page_0_rj_f4.js +0 -4
  509. package/.next/server/chunks/ssr/10ge_next_dist_esm_build_templates_app-page_0c-wmj1.js +0 -4
  510. package/.next/server/chunks/ssr/10ge_next_dist_esm_build_templates_app-page_0hpuyf0.js +0 -4
  511. package/.next/server/chunks/ssr/10ge_next_dist_esm_build_templates_app-page_0knnyic.js +0 -4
  512. package/.next/server/chunks/ssr/10ge_next_dist_esm_build_templates_app-page_0oi86k6.js +0 -4
  513. package/.next/server/chunks/ssr/10ge_next_dist_esm_build_templates_app-page_0rmwdra.js +0 -4
  514. package/.next/server/chunks/ssr/10ge_next_dist_esm_build_templates_app-page_12reczc.js +0 -4
  515. package/.next/server/chunks/ssr/119e_lucide-react_dist_esm_icons_0636jyq._.js +0 -3
  516. package/.next/server/chunks/ssr/[root-of-the-server]__0-0j_z3._.js +0 -3
  517. package/.next/server/chunks/ssr/[root-of-the-server]__0.8y0n9._.js +0 -3
  518. package/.next/server/chunks/ssr/[root-of-the-server]__0.uoh7q._.js +0 -3
  519. package/.next/server/chunks/ssr/[root-of-the-server]__01ws4-7._.js +0 -3
  520. package/.next/server/chunks/ssr/[root-of-the-server]__024-5kd._.js +0 -3
  521. package/.next/server/chunks/ssr/[root-of-the-server]__02ipahf._.js +0 -3
  522. package/.next/server/chunks/ssr/[root-of-the-server]__03.14vw._.js +0 -3
  523. package/.next/server/chunks/ssr/[root-of-the-server]__06o5v8i._.js +0 -30
  524. package/.next/server/chunks/ssr/[root-of-the-server]__09m32ch._.js +0 -3
  525. package/.next/server/chunks/ssr/[root-of-the-server]__0_0kxz4._.js +0 -3
  526. package/.next/server/chunks/ssr/[root-of-the-server]__0bk3s4l._.js +0 -3
  527. package/.next/server/chunks/ssr/[root-of-the-server]__0d7u1lw._.js +0 -3
  528. package/.next/server/chunks/ssr/[root-of-the-server]__0fg8.hp._.js +0 -3
  529. package/.next/server/chunks/ssr/[root-of-the-server]__0i1tzvg._.js +0 -3
  530. package/.next/server/chunks/ssr/[root-of-the-server]__0i52qt7._.js +0 -3
  531. package/.next/server/chunks/ssr/[root-of-the-server]__0ibsor_._.js +0 -3
  532. package/.next/server/chunks/ssr/[root-of-the-server]__0j5~a_o._.js +0 -3
  533. package/.next/server/chunks/ssr/[root-of-the-server]__0jgbj6l._.js +0 -3
  534. package/.next/server/chunks/ssr/[root-of-the-server]__0l~dc3x._.js +0 -3
  535. package/.next/server/chunks/ssr/[root-of-the-server]__0n32nv5._.js +0 -30
  536. package/.next/server/chunks/ssr/[root-of-the-server]__0n8qufu._.js +0 -3
  537. package/.next/server/chunks/ssr/[root-of-the-server]__0ndt9h3._.js +0 -3
  538. package/.next/server/chunks/ssr/[root-of-the-server]__0p~u4y6._.js +0 -3
  539. package/.next/server/chunks/ssr/[root-of-the-server]__0q.du4s._.js +0 -3
  540. package/.next/server/chunks/ssr/[root-of-the-server]__0rs7pkn._.js +0 -3
  541. package/.next/server/chunks/ssr/[root-of-the-server]__0sysz2q._.js +0 -47
  542. package/.next/server/chunks/ssr/[root-of-the-server]__0t25~v8._.js +0 -3
  543. package/.next/server/chunks/ssr/[root-of-the-server]__0ti70do._.js +0 -3
  544. package/.next/server/chunks/ssr/[root-of-the-server]__0uevudp._.js +0 -30
  545. package/.next/server/chunks/ssr/[root-of-the-server]__0wwqzmm._.js +0 -3
  546. package/.next/server/chunks/ssr/[root-of-the-server]__0xt3-qb._.js +0 -3
  547. package/.next/server/chunks/ssr/[root-of-the-server]__0y-lkvf._.js +0 -3
  548. package/.next/server/chunks/ssr/[root-of-the-server]__0yuwh~5._.js +0 -3
  549. package/.next/server/chunks/ssr/[root-of-the-server]__0zvf.ro._.js +0 -3
  550. package/.next/server/chunks/ssr/[root-of-the-server]__11m7m-q._.js +0 -3
  551. package/.next/server/chunks/ssr/[root-of-the-server]__12f810l._.js +0 -3
  552. package/.next/server/chunks/ssr/[root-of-the-server]__13-egel._.js +0 -3
  553. package/.next/server/chunks/ssr/tower_0-nwtka._.js +0 -3
  554. package/.next/server/chunks/ssr/tower_0-omr_b._.js +0 -30
  555. package/.next/server/chunks/ssr/tower_0.csoof._.js +0 -3
  556. package/.next/server/chunks/ssr/tower_005_jvc._.js +0 -3
  557. package/.next/server/chunks/ssr/tower_01szasw._.js +0 -3
  558. package/.next/server/chunks/ssr/tower_035l~qv._.js +0 -3
  559. package/.next/server/chunks/ssr/tower_03jazku._.js +0 -3
  560. package/.next/server/chunks/ssr/tower_0cmuq4n._.js +0 -3
  561. package/.next/server/chunks/ssr/tower_0ih8lcc._.js +0 -3
  562. package/.next/server/chunks/ssr/tower_0kl_bfy._.js +0 -7
  563. package/.next/server/chunks/ssr/tower_0mz4ut.._.js +0 -3
  564. package/.next/server/chunks/ssr/tower_0nuj.0p._.js +0 -39
  565. package/.next/server/chunks/ssr/tower_0pcqezm._.js +0 -3
  566. package/.next/server/chunks/ssr/tower_0r7uuim._.js +0 -30
  567. package/.next/server/chunks/ssr/tower_0sojjnu._.js +0 -3
  568. package/.next/server/chunks/ssr/tower_0tc~.xl._.js +0 -30
  569. package/.next/server/chunks/ssr/tower_0tjo~2z._.js +0 -3
  570. package/.next/server/chunks/ssr/tower_0wvk~r.._.js +0 -3
  571. package/.next/server/chunks/ssr/tower_10p15te._.js +0 -3
  572. package/.next/server/chunks/ssr/tower_10t13p4._.js +0 -6
  573. package/.next/server/chunks/ssr/tower_117pzh8._.js +0 -3
  574. package/.next/server/chunks/ssr/tower_11q5_.m._.js +0 -3
  575. package/.next/server/chunks/ssr/tower_138qlx5._.js +0 -3
  576. package/.next/server/chunks/ssr/tower__next-internal_server_app__global-error_page_actions_13t5~qk.js +0 -3
  577. package/.next/server/chunks/ssr/tower_src_0lq.aoc._.js +0 -3
  578. package/.next/server/chunks/ssr/tower_src_actions_agent-actions_ts_0j.e1tn._.js +0 -4
  579. package/.next/server/chunks/ssr/tower_src_actions_file-actions_ts_0424lna._.js +0 -3
  580. package/.next/server/chunks/ssr/tower_src_app_onboarding_page_tsx_0_3krz1._.js +0 -3
  581. package/.next/server/chunks/ssr/tower_src_app_settings_page_tsx_0vo5e-o._.js +0 -3
  582. package/.next/server/chunks/ssr/tower_src_app_workspaces_[workspaceId]_board-page-client_tsx_0kjp1u0._.js +0 -7
  583. package/.next/server/chunks/ssr/tower_src_components_ui_select_tsx_10ajx~2._.js +0 -3
  584. package/.next/server/chunks/ssr/tower_src_lib_01420_4._.js +0 -3
  585. package/.next/server/chunks/ssr/tower_src_lib_0i-zjpa._.js +0 -3
  586. package/.next/server/chunks/ssr/tower_src_lib_0ja~kdb._.js +0 -3
  587. package/.next/server/chunks/ssr/tower_src_lib_0obw2r8._.js +0 -3
  588. package/.next/server/chunks/ssr/tower_src_lib_0rgfsuf._.js +0 -3
  589. package/.next/server/chunks/ssr/tower_src_lib_constants_ts_0o218_c._.js +0 -3
  590. package/.next/server/chunks/tower_05du07.._.js +0 -10
  591. package/.next/server/chunks/tower_0a-x6m.._.js +0 -3
  592. package/.next/server/chunks/tower__next-internal_server_app_api_adapters_test_route_actions_13jw~9b.js +0 -3
  593. package/.next/server/chunks/tower__next-internal_server_app_api_browse-fs_route_actions_0k5p2xy.js +0 -3
  594. package/.next/server/chunks/tower__next-internal_server_app_api_git_route_actions_0rvpodb.js +0 -3
  595. package/.next/server/chunks/tower__next-internal_server_app_api_internal_assets_reveal_route_actions_0idwm6j.js +0 -3
  596. package/.next/server/chunks/tower__next-internal_server_app_api_internal_assistant_route_actions_0rdz1d..js +0 -3
  597. package/.next/server/chunks/tower__next-internal_server_app_api_internal_hooks_install_route_actions_06dxleu.js +0 -3
  598. package/.next/server/chunks/tower__next-internal_server_app_api_internal_hooks_session_route_actions_0wlv4lf.js +0 -3
  599. package/.next/server/chunks/tower__next-internal_server_app_api_internal_hooks_stop_route_actions_101_oub.js +0 -3
  600. package/.next/server/chunks/tower__next-internal_server_app_api_internal_hooks_upload_route_actions_0439qz_.js +0 -3
  601. package/.next/server/chunks/tower__next-internal_server_app_api_tasks_[taskId]_diff_route_actions_0nthc84.js +0 -3
  602. package/.next/server/chunks/tower__next-internal_server_app_api_tasks_[taskId]_merge_route_actions_0g.x0nb.js +0 -3
  603. package/.next/server/chunks/tower__next-internal_server_app_apple-icon_png_route_actions_0bni-sb.js +0 -3
  604. package/.next/server/chunks/tower__next-internal_server_app_favicon_ico_route_actions_0kw~xj2.js +0 -3
  605. package/.next/server/chunks/tower__next-internal_server_app_icon0_svg_route_actions_0nww9-e.js +0 -3
  606. package/.next/server/chunks/tower__next-internal_server_app_icon1_png_route_actions_09h.ywu.js +0 -3
  607. package/.next/server/chunks/tower__next-internal_server_app_manifest_json_route_actions_080ob~r.js +0 -3
  608. package/.next/server/chunks/tower_src_0..vg-t._.js +0 -3
  609. package/.next/server/chunks/tower_src_05rqj.1._.js +0 -3
  610. package/.next/server/chunks/tower_src_lib_0w8qt4s._.js +0 -3
  611. package/.next/server/chunks/tower_src_lib_constants_ts_0cxd4.p._.js +0 -3
  612. package/.next/server/edge/chunks/0y9m_next_dist_esm_build_templates_edge-wrapper_0cx_eo..js +0 -3
  613. package/.next/server/edge/chunks/tower_0wvfs38._.js +0 -3
  614. package/.next/static/chunks/00z-g3x93ngvn.js +0 -1
  615. package/.next/static/chunks/01499ombtjk9..js +0 -1
  616. package/.next/static/chunks/04zt_ewq9gd.f.js +0 -5
  617. package/.next/static/chunks/05-b9qqm3av9~.js +0 -1
  618. package/.next/static/chunks/05~v02mkan5z..js +0 -1
  619. package/.next/static/chunks/07ll8eylriw_..js +0 -5
  620. package/.next/static/chunks/08kdkf9zhbx5h.js +0 -1
  621. package/.next/static/chunks/0abtpeymj-58i.js +0 -1
  622. package/.next/static/chunks/0eaa2lmymh2fx.js +0 -1
  623. package/.next/static/chunks/0focg9l2pd5qe.js +0 -1
  624. package/.next/static/chunks/0j9qriqni_r1..js +0 -2
  625. package/.next/static/chunks/0jod832.e8dvp.js +0 -1
  626. package/.next/static/chunks/0k.u8sxy~e469.js +0 -4
  627. package/.next/static/chunks/0lvd52mjiit6s.js +0 -1
  628. package/.next/static/chunks/0mq0uqbbbb1~2.js +0 -1
  629. package/.next/static/chunks/0o0v~cegree8o.js +0 -1
  630. package/.next/static/chunks/0omj~p3uxkic-.js +0 -1
  631. package/.next/static/chunks/0t-gr6j-c65qb.js +0 -1
  632. package/.next/static/chunks/0tcl81ybuob5i.js +0 -1
  633. package/.next/static/chunks/0uqimvsni_op~.js +0 -1
  634. package/.next/static/chunks/0uukquowg_doj.js +0 -1
  635. package/.next/static/chunks/0v593lcts~8.5.js +0 -1
  636. package/.next/static/chunks/0wt3kws~_yr8z.js +0 -1
  637. package/.next/static/chunks/0yz33_rbgu2sz.js +0 -1
  638. package/.next/static/chunks/0z2bzovqhl2f5.js +0 -1
  639. package/.next/static/chunks/0z7bwntvfhxzi.js +0 -12
  640. package/.next/static/chunks/0~2w0fbj7o3fv.js +0 -1
  641. package/.next/static/chunks/10n23t.1hpb-1.js +0 -1
  642. package/.next/static/chunks/12p4plfwlovc5.js +0 -1
  643. package/.next/static/chunks/13juk.piouzom.js +0 -1
  644. package/.next/static/chunks/14xzmrt5ly6gq.js +0 -31
  645. package/.next/static/chunks/151wr~6x8aclx.js +0 -1
  646. package/.next/static/chunks/16w-ap~msrwpj.js +0 -1
  647. /package/.next/static/{uSvLXzMcHlsrWUxtSBOMM → qVmkMYUuxwdsiFTnn1wfK}/_buildManifest.js +0 -0
  648. /package/.next/static/{uSvLXzMcHlsrWUxtSBOMM → qVmkMYUuxwdsiFTnn1wfK}/_clientMiddlewareManifest.js +0 -0
  649. /package/.next/static/{uSvLXzMcHlsrWUxtSBOMM → qVmkMYUuxwdsiFTnn1wfK}/_ssgManifest.js +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,5 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,499356,(e,t,r)=>{var s;"u">typeof __nccwpck_require__&&(__nccwpck_require__.ab="/ROOT/tower/node_modules/.pnpm/next@16.2.1_@babel+core@7.29.0_@playwright+test@1.58.2_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/compiled/os-browserify/"),(s={}).endianness=function(){return"LE"},s.hostname=function(){return"u">typeof location?location.hostname:""},s.loadavg=function(){return[]},s.uptime=function(){return 0},s.freemem=function(){return Number.MAX_VALUE},s.totalmem=function(){return Number.MAX_VALUE},s.cpus=function(){return[]},s.type=function(){return"Browser"},s.release=function(){return"u">typeof navigator?navigator.appVersion:""},s.networkInterfaces=s.getNetworkInterfaces=function(){return{}},s.arch=function(){return"javascript"},s.platform=function(){return"browser"},s.tmpdir=s.tmpDir=function(){return"/tmp"},s.EOL="\n",s.homedir=function(){return"/"},t.exports=s},325200,(e,t,r)=>{!function(){"use strict";var e={114:function(e){function t(e){if("string"!=typeof e)throw TypeError("Path must be a string. Received "+JSON.stringify(e))}function r(e,t){for(var r,s="",a=0,n=-1,o=0,i=0;i<=e.length;++i){if(i<e.length)r=e.charCodeAt(i);else if(47===r)break;else r=47;if(47===r){if(n===i-1||1===o);else if(n!==i-1&&2===o){if(s.length<2||2!==a||46!==s.charCodeAt(s.length-1)||46!==s.charCodeAt(s.length-2)){if(s.length>2){var l=s.lastIndexOf("/");if(l!==s.length-1){-1===l?(s="",a=0):a=(s=s.slice(0,l)).length-1-s.lastIndexOf("/"),n=i,o=0;continue}}else if(2===s.length||1===s.length){s="",a=0,n=i,o=0;continue}}t&&(s.length>0?s+="/..":s="..",a=2)}else s.length>0?s+="/"+e.slice(n+1,i):s=e.slice(n+1,i),a=i-n-1;n=i,o=0}else 46===r&&-1!==o?++o:o=-1}return s}var s={resolve:function(){for(var e,s,a="",n=!1,o=arguments.length-1;o>=-1&&!n;o--)o>=0?s=arguments[o]:(void 0===e&&(e=""),s=e),t(s),0!==s.length&&(a=s+"/"+a,n=47===s.charCodeAt(0));if(a=r(a,!n),n)if(a.length>0)return"/"+a;else return"/";return a.length>0?a:"."},normalize:function(e){if(t(e),0===e.length)return".";var s=47===e.charCodeAt(0),a=47===e.charCodeAt(e.length-1);return(0!==(e=r(e,!s)).length||s||(e="."),e.length>0&&a&&(e+="/"),s)?"/"+e:e},isAbsolute:function(e){return t(e),e.length>0&&47===e.charCodeAt(0)},join:function(){if(0==arguments.length)return".";for(var e,r=0;r<arguments.length;++r){var a=arguments[r];t(a),a.length>0&&(void 0===e?e=a:e+="/"+a)}return void 0===e?".":s.normalize(e)},relative:function(e,r){if(t(e),t(r),e===r||(e=s.resolve(e))===(r=s.resolve(r)))return"";for(var a=1;a<e.length&&47===e.charCodeAt(a);++a);for(var n=e.length,o=n-a,i=1;i<r.length&&47===r.charCodeAt(i);++i);for(var l=r.length-i,c=o<l?o:l,d=-1,u=0;u<=c;++u){if(u===c){if(l>c){if(47===r.charCodeAt(i+u))return r.slice(i+u+1);else if(0===u)return r.slice(i+u)}else o>c&&(47===e.charCodeAt(a+u)?d=u:0===u&&(d=0));break}var m=e.charCodeAt(a+u);if(m!==r.charCodeAt(i+u))break;47===m&&(d=u)}var x="";for(u=a+d+1;u<=n;++u)(u===n||47===e.charCodeAt(u))&&(0===x.length?x+="..":x+="/..");return x.length>0?x+r.slice(i+d):(i+=d,47===r.charCodeAt(i)&&++i,r.slice(i))},_makeLong:function(e){return e},dirname:function(e){if(t(e),0===e.length)return".";for(var r=e.charCodeAt(0),s=47===r,a=-1,n=!0,o=e.length-1;o>=1;--o)if(47===(r=e.charCodeAt(o))){if(!n){a=o;break}}else n=!1;return -1===a?s?"/":".":s&&1===a?"//":e.slice(0,a)},basename:function(e,r){if(void 0!==r&&"string"!=typeof r)throw TypeError('"ext" argument must be a string');t(e);var s,a=0,n=-1,o=!0;if(void 0!==r&&r.length>0&&r.length<=e.length){if(r.length===e.length&&r===e)return"";var i=r.length-1,l=-1;for(s=e.length-1;s>=0;--s){var c=e.charCodeAt(s);if(47===c){if(!o){a=s+1;break}}else -1===l&&(o=!1,l=s+1),i>=0&&(c===r.charCodeAt(i)?-1==--i&&(n=s):(i=-1,n=l))}return a===n?n=l:-1===n&&(n=e.length),e.slice(a,n)}for(s=e.length-1;s>=0;--s)if(47===e.charCodeAt(s)){if(!o){a=s+1;break}}else -1===n&&(o=!1,n=s+1);return -1===n?"":e.slice(a,n)},extname:function(e){t(e);for(var r=-1,s=0,a=-1,n=!0,o=0,i=e.length-1;i>=0;--i){var l=e.charCodeAt(i);if(47===l){if(!n){s=i+1;break}continue}-1===a&&(n=!1,a=i+1),46===l?-1===r?r=i:1!==o&&(o=1):-1!==r&&(o=-1)}return -1===r||-1===a||0===o||1===o&&r===a-1&&r===s+1?"":e.slice(r,a)},format:function(e){var t,r;if(null===e||"object"!=typeof e)throw TypeError('The "pathObject" argument must be of type Object. Received type '+typeof e);return t=e.dir||e.root,r=e.base||(e.name||"")+(e.ext||""),t?t===e.root?t+r:t+"/"+r:r},parse:function(e){t(e);var r,s={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return s;var a=e.charCodeAt(0),n=47===a;n?(s.root="/",r=1):r=0;for(var o=-1,i=0,l=-1,c=!0,d=e.length-1,u=0;d>=r;--d){if(47===(a=e.charCodeAt(d))){if(!c){i=d+1;break}continue}-1===l&&(c=!1,l=d+1),46===a?-1===o?o=d:1!==u&&(u=1):-1!==o&&(u=-1)}return -1===o||-1===l||0===u||1===u&&o===l-1&&o===i+1?-1!==l&&(0===i&&n?s.base=s.name=e.slice(1,l):s.base=s.name=e.slice(i,l)):(0===i&&n?(s.name=e.slice(1,o),s.base=e.slice(1,l)):(s.name=e.slice(i,o),s.base=e.slice(i,l)),s.ext=e.slice(o,l)),i>0?s.dir=e.slice(0,i-1):n&&(s.dir="/"),s},sep:"/",delimiter:":",win32:null,posix:null};s.posix=s,e.exports=s}},r={};function s(t){var a=r[t];if(void 0!==a)return a.exports;var n=r[t]={exports:{}},o=!0;try{e[t](n,n.exports,s),o=!1}finally{o&&delete r[t]}return n.exports}s.ab="/ROOT/tower/node_modules/.pnpm/next@16.2.1_@babel+core@7.29.0_@playwright+test@1.58.2_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/compiled/path-browserify/",t.exports=s(114)}()},627580,e=>{"use strict";let t=(0,e.i(258114).default)("info",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]]);e.s(["default",0,t])},632612,e=>{"use strict";var t=e.i(430989),r=e.i(641338),s=e.i(347880),a=e.i(226549),n=e.i(306308),o=e.i(304275),i=e.i(894362),l=e.i(584451),c=e.i(935792),d=e.i(258114);let u=(0,d.default)("chevrons-left",[["path",{d:"m11 17-5-5 5-5",key:"13zhaf"}],["path",{d:"m18 17-5-5 5-5",key:"h8a8et"}]]),m=(0,d.default)("tag",[["path",{d:"M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z",key:"vktsd0"}],["circle",{cx:"7.5",cy:"7.5",r:".5",fill:"currentColor",key:"kqv944"}]]);var x=e.i(652459),h=e.i(819614);let p=(0,d.default)("gauge",[["path",{d:"m12 14 4-4",key:"9kzdfg"}],["path",{d:"M3.34 19a10 10 0 1 1 17.32 0",key:"19p75a"}]]);var f=e.i(690287),g=e.i(24887),j=e.i(331548),b=e.i(814329),v=e.i(744838),w=e.i(745943),N=e.i(755683);let y=(0,N.createServerReference)("4052835964708c3d2b5d85b98110624ed61a4f2439",N.callServer,void 0,N.findSourceMapURL,"createWorkspace"),k=(0,N.createServerReference)("60449d4cf48fc16063e8c051c5e42076795b2fdcaf",N.callServer,void 0,N.findSourceMapURL,"updateWorkspace"),C=(0,N.createServerReference)("4081d55346a0f46271878f3fcde1aef5f3c91f6346",N.callServer,void 0,N.findSourceMapURL,"deleteWorkspace"),S=(0,N.createServerReference)("406d77475c2babb800fcb8428625e0d51a3e2735f2",N.callServer,void 0,N.findSourceMapURL,"getLabelsForWorkspace"),T=(0,N.createServerReference)("40d766282a86cab7bf3dc801c30d35c206032d4955",N.callServer,void 0,N.findSourceMapURL,"createLabel"),D=(0,N.createServerReference)("40cb1f872088018d4b1347bb3fca95fe0366ca425a",N.callServer,void 0,N.findSourceMapURL,"deleteLabel");var P=e.i(349369),R=e.i(151201);let M=["📋","🚀","🎯","💡","🔧","📦","🎨","📊","🔬","🌟","📝","🏗️"];function A({workspaces:e}){let d,j=(0,s.useRouter)(),w=(0,s.usePathname)(),{t:N}=(0,P.useI18n)(),[S,T]=(0,r.useState)(!1);(0,r.useEffect)(()=>{"true"===localStorage.getItem("sidebar-collapsed")&&T(!0)},[]);let[D,z]=(0,r.useState)(!1),[L,O]=(0,r.useState)(!1),[I,B]=(0,r.useState)(!1),[F,_]=(0,r.useState)(null),[U,W]=(0,r.useState)(""),[H,K]=(0,r.useState)(M[0]),[V,q]=(0,r.useState)(null),X=w.split("/workspaces/")[1]?.split("/")[0],G=(0,r.useCallback)(()=>{T(e=>{let t=!e;return localStorage.setItem("sidebar-collapsed",String(t)),t})},[]),J=(0,r.useCallback)(async()=>{if(!U.trim())return;let e=await y({name:U.trim(),description:H});W(""),K(M[0]),z(!1),j.refresh(),j.push(`/workspaces/${e.id}`)},[U,H,j]),Y=(0,r.useCallback)(async()=>{U.trim()&&V&&(await k(V,{name:U.trim(),description:H}),W(""),O(!1),q(null),j.refresh())},[U,H,V,j]),Z=(0,r.useCallback)(e=>{q(e.id),W(e.name),K(e.description&&M.includes(e.description)?e.description:M[0]),O(!0)},[]),Q=(0,r.useCallback)(async(t,r)=>{if(e.length<=1)return void R.toast.error(N("sidebar.lastWorkspaceError"));if(confirm(N("sidebar.deleteConfirm",{name:r})))try{await C(t),j.refresh(),X===t&&j.push("/workspaces")}catch{R.toast.error(N("sidebar.lastWorkspaceError"))}},[X,j,N,e.length]),ee=(0,r.useCallback)(e=>{_(e),B(!0)},[]),et=e=>e.description&&M.includes(e.description)?e.description:e.name.charAt(0).toUpperCase();if(S){let r;return(0,t.jsxs)("aside",{className:"flex h-screen w-14 flex-col items-center border-r border-border bg-sidebar py-3",children:[(0,t.jsxs)(b.Tooltip,{children:[(0,t.jsx)(b.TooltipTrigger,{render:(0,t.jsx)("button",{onClick:G,className:"mb-4 flex h-9 w-9 items-center justify-center rounded-lg bg-primary/10 ring-1 ring-primary/20 transition-transform hover:scale-105"}),children:(0,t.jsx)("img",{src:"/logo.png",alt:"Tower",className:"h-6 w-6 rounded"})}),(0,t.jsx)(b.TooltipContent,{side:"right",sideOffset:8,children:N("sidebar.expand")})]}),(0,t.jsx)(g.ScrollArea,{className:"flex-1 min-h-0",children:(0,t.jsxs)("div",{className:"flex flex-col items-center gap-1 px-0.5 pt-1",children:[e.map(e=>{let r=X===e.id,s=et(e);return(0,t.jsxs)(b.Tooltip,{children:[(0,t.jsx)(b.TooltipTrigger,{render:(0,t.jsx)("button",{onClick:()=>{r||j.push(`/workspaces/${e.id}`)},className:`flex h-9 w-9 items-center justify-center rounded-lg transition-all ${r?"ring-1 ring-primary/20 text-foreground cursor-default":"text-muted-foreground hover:text-foreground cursor-pointer"}`}),children:(0,t.jsx)("span",{className:"flex h-7 w-7 items-center justify-center rounded-md bg-muted text-sm",children:M.includes(s)?s:(0,t.jsx)("span",{className:"text-xs font-semibold",children:s})})}),(0,t.jsx)(b.TooltipContent,{side:"right",sideOffset:8,children:e.name})]},e.id)}),(0,t.jsxs)(b.Tooltip,{children:[(0,t.jsx)(b.TooltipTrigger,{render:(0,t.jsx)("button",{"data-tour":"create-workspace",onClick:()=>z(!0),className:"flex h-9 w-9 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:bg-accent hover:text-foreground"}),children:(0,t.jsx)(o.Plus,{className:"h-4 w-4"})}),(0,t.jsx)(b.TooltipContent,{side:"right",sideOffset:8,children:N("sidebar.newWorkspace")})]})]})}),(0,t.jsxs)("div",{className:"mt-2 flex flex-col items-center gap-1",children:[(r=X||e[0]?.id)?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(b.Tooltip,{children:[(0,t.jsx)(b.TooltipTrigger,{render:(0,t.jsx)("button",{onClick:()=>j.push(`/workspaces/${r}/notes`),className:`rounded-lg p-2 transition-colors ${w.includes("/notes")?"text-foreground bg-accent":"text-muted-foreground hover:bg-accent hover:text-foreground"}`}),children:(0,t.jsx)(x.FileText,{className:"h-4 w-4"})}),(0,t.jsx)(b.TooltipContent,{side:"right",sideOffset:8,children:N("sidebar.notes")})]}),(0,t.jsxs)(b.Tooltip,{children:[(0,t.jsx)(b.TooltipTrigger,{render:(0,t.jsx)("button",{onClick:()=>j.push(`/workspaces/${r}/assets`),className:`rounded-lg p-2 transition-colors ${w.includes("/assets")?"text-foreground bg-accent":"text-muted-foreground hover:bg-accent hover:text-foreground"}`}),children:(0,t.jsx)(h.FolderOpen,{className:"h-4 w-4"})}),(0,t.jsx)(b.TooltipContent,{side:"right",sideOffset:8,children:N("sidebar.assets")})]}),(0,t.jsxs)(b.Tooltip,{children:[(0,t.jsx)(b.TooltipTrigger,{render:(0,t.jsx)("button",{onClick:()=>j.push(`/workspaces/${r}/archive`),className:`rounded-lg p-2 transition-colors ${w.includes("/archive")?"text-foreground bg-accent":"text-muted-foreground hover:bg-accent hover:text-foreground"}`}),children:(0,t.jsx)(n.Archive,{className:"h-4 w-4"})}),(0,t.jsx)(b.TooltipContent,{side:"right",sideOffset:8,children:N("sidebar.archive")})]})]}):null,(0,t.jsxs)(b.Tooltip,{children:[(0,t.jsx)(b.TooltipTrigger,{render:(0,t.jsx)("button",{onClick:()=>j.push("/missions"),className:`rounded-lg p-2 transition-colors ${"/missions"===w?"text-foreground bg-accent":"text-muted-foreground hover:bg-accent hover:text-foreground"}`}),children:(0,t.jsx)(p,{className:"h-4 w-4"})}),(0,t.jsx)(b.TooltipContent,{side:"right",sideOffset:8,children:N("missions.navLabel")})]})]}),(0,t.jsx)($,{open:D,onOpenChange:z,title:N("workspace.create"),name:U,onNameChange:W,icon:H,onIconChange:K,onSubmit:J,submitLabel:N("common.create"),nameLabel:N("workspace.name"),iconLabel:N("workspace.icon"),namePlaceholder:N("workspace.namePlaceholder"),cancelLabel:N("common.cancel")})]})}return(0,t.jsxs)("aside",{className:"noise relative flex h-screen w-56 flex-col border-r border-border bg-sidebar",children:[(0,t.jsxs)("div",{className:"relative z-10 flex items-center gap-3 px-4 py-4",children:[(0,t.jsx)("img",{src:"/logo.png",alt:"Tower",className:"h-9 w-9 rounded-lg"}),(0,t.jsxs)("div",{className:"flex-1",children:[(0,t.jsx)("div",{className:"text-sm font-semibold tracking-tight text-foreground",children:"Tower"}),(0,t.jsx)("div",{className:"text-[10px] font-medium uppercase tracking-widest text-muted-foreground",children:"Studio"})]}),(0,t.jsx)(v.Button,{variant:"ghost",size:"icon-xs",onClick:G,className:"text-muted-foreground",title:N("sidebar.collapse"),children:(0,t.jsx)(u,{className:"h-4 w-4"})})]}),(0,t.jsxs)("div",{className:"relative z-10 flex items-center justify-between px-4 py-2",children:[(0,t.jsx)("span",{className:"text-[11px] font-semibold uppercase tracking-wider text-muted-foreground",children:N("sidebar.workspace")}),(0,t.jsx)(v.Button,{variant:"ghost",size:"icon-sm",className:"text-muted-foreground","data-tour":"create-workspace",onClick:()=>{W(""),K(M[0]),z(!0)},title:N("sidebar.newWorkspace"),children:(0,t.jsx)(o.Plus,{className:"h-3.5 w-3.5"})})]}),(0,t.jsx)(g.ScrollArea,{className:"relative z-10 mt-2 flex-1 min-h-0",children:(0,t.jsx)("div",{className:"px-2 py-1",children:e.map(r=>{var s;let a,n,o,d=X===r.id,u=et(r);return(0,t.jsxs)("div",{className:`group relative flex items-center rounded-lg transition-all ${d?"bg-accent ring-1 ring-primary/15":"hover:bg-accent/60"}`,children:[(0,t.jsxs)("button",{onClick:()=>{d||j.push(`/workspaces/${r.id}`)},className:`flex flex-1 items-center gap-2.5 px-3 py-2.5 text-left ${d?"cursor-default":"cursor-pointer"}`,children:[(0,t.jsx)("span",{className:"flex h-7 w-7 items-center justify-center rounded-md bg-muted text-sm",children:M.includes(u)?u:(0,t.jsx)("span",{className:"text-xs font-semibold text-muted-foreground",children:u})}),(0,t.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,t.jsx)("div",{className:`truncate text-sm font-medium ${d?"text-foreground":"text-secondary-foreground"}`,children:r.name}),(0,t.jsx)("div",{className:"text-[11px] text-muted-foreground",children:(s=r.updatedAt,n=Math.floor((a=Date.now()-new Date(s).getTime())/6e4),o=Math.floor(a/36e5),n<60?`${n}m ago`:o<24?`${o}h ago`:`${Math.floor(o/24)}d ago`)})]})]}),(0,t.jsxs)(f.DropdownMenu,{children:[(0,t.jsx)(f.DropdownMenuTrigger,{render:(0,t.jsx)("button",{className:"mr-2 rounded-md p-1 text-muted-foreground opacity-0 transition-all hover:bg-background hover:text-foreground group-hover:opacity-100",onClick:e=>e.stopPropagation()}),children:(0,t.jsx)(c.MoreHorizontal,{className:"h-3.5 w-3.5"})}),(0,t.jsxs)(f.DropdownMenuContent,{align:"start",side:"right",children:[(0,t.jsxs)(f.DropdownMenuItem,{onClick:()=>Z(r),children:[(0,t.jsx)(i.Pencil,{className:"mr-2 h-3.5 w-3.5"}),N("sidebar.rename")]}),(0,t.jsxs)(f.DropdownMenuItem,{onClick:()=>ee(r.id),children:[(0,t.jsx)(m,{className:"mr-2 h-3.5 w-3.5"}),N("sidebar.manageLabels")]}),(0,t.jsxs)(f.DropdownMenuItem,{className:e.length<=1?"text-muted-foreground opacity-50":"text-rose-400",disabled:e.length<=1,onClick:()=>Q(r.id,r.name),children:[(0,t.jsx)(l.Trash2,{className:"mr-2 h-3.5 w-3.5"}),N("sidebar.delete")]})]})]})]},r.id)})})}),(0,t.jsxs)(a.default,{href:"/missions",className:`relative z-10 flex items-center gap-2 border-t border-border px-4 py-3 text-[11px] cursor-pointer transition-colors ${"/missions"===w?"text-foreground":"text-muted-foreground hover:text-foreground"}`,children:[(0,t.jsx)(p,{className:"h-3.5 w-3.5"}),(0,t.jsx)("span",{children:N("missions.navLabel")})]}),(d=X||e[0]?.id)?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(a.default,{href:`/workspaces/${d}/notes`,className:"relative z-10 flex items-center gap-2 border-t border-border px-4 py-3 text-[11px] text-muted-foreground cursor-pointer hover:text-foreground transition-colors",children:[(0,t.jsx)(x.FileText,{className:"h-3.5 w-3.5"}),(0,t.jsx)("span",{children:N("sidebar.notes")})]}),(0,t.jsxs)(a.default,{href:`/workspaces/${d}/assets`,className:"relative z-10 flex items-center gap-2 px-4 py-3 text-[11px] text-muted-foreground cursor-pointer hover:text-foreground transition-colors",children:[(0,t.jsx)(h.FolderOpen,{className:"h-3.5 w-3.5"}),(0,t.jsx)("span",{children:N("sidebar.assets")})]}),(0,t.jsxs)(a.default,{href:`/workspaces/${d}/archive`,className:"relative z-10 flex items-center gap-2 px-4 py-3 text-[11px] text-muted-foreground cursor-pointer hover:text-foreground transition-colors",children:[(0,t.jsx)(n.Archive,{className:"h-3.5 w-3.5"}),(0,t.jsx)("span",{children:N("sidebar.archive")})]})]}):null,(0,t.jsx)($,{open:D,onOpenChange:z,title:N("workspace.create"),name:U,onNameChange:W,icon:H,onIconChange:K,onSubmit:J,submitLabel:N("common.create"),nameLabel:N("workspace.name"),iconLabel:N("workspace.icon"),namePlaceholder:N("workspace.namePlaceholder"),cancelLabel:N("common.cancel")}),(0,t.jsx)($,{open:L,onOpenChange:e=>{O(e),e||q(null)},title:N("workspace.edit"),name:U,onNameChange:W,icon:H,onIconChange:K,onSubmit:Y,submitLabel:N("common.save"),nameLabel:N("workspace.name"),iconLabel:N("workspace.icon"),namePlaceholder:N("workspace.namePlaceholder"),cancelLabel:N("common.cancel")}),F&&(0,t.jsx)(E,{open:I,onOpenChange:e=>{B(e),e||_(null)},workspaceId:F})]})}function $({open:e,onOpenChange:r,title:s,name:a,onNameChange:n,icon:o,onIconChange:i,onSubmit:l,submitLabel:c,nameLabel:d,iconLabel:u,namePlaceholder:m,cancelLabel:x}){return(0,t.jsx)(j.Dialog,{open:e,onOpenChange:r,disablePointerDismissal:!0,children:(0,t.jsxs)(j.DialogContent,{className:"sm:max-w-sm",children:[(0,t.jsx)(j.DialogHeader,{children:(0,t.jsx)(j.DialogTitle,{children:s})}),(0,t.jsxs)("div",{className:"space-y-4 py-2",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:d}),(0,t.jsx)(w.Input,{placeholder:m,value:a,onChange:e=>n(e.target.value),onKeyDown:e=>"Enter"===e.key&&e.preventDefault(),className:"mt-1.5"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:u}),(0,t.jsx)("div",{className:"mt-1.5 grid grid-cols-6 gap-1.5",children:M.map(e=>(0,t.jsx)("button",{onClick:()=>i(e),className:`flex h-10 w-10 items-center justify-center rounded-lg text-lg transition-all ${o===e?"bg-primary/15 ring-2 ring-primary/30 scale-110":"bg-muted hover:bg-accent"}`,children:e},e))})]})]}),(0,t.jsxs)(j.DialogFooter,{children:[(0,t.jsx)(v.Button,{variant:"outline",onClick:()=>r(!1),children:x}),(0,t.jsx)(v.Button,{onClick:l,disabled:!a.trim(),className:"bg-primary/10 text-primary ring-1 ring-primary/20 hover:bg-primary/15",children:c})]})]})})}let z=["#3b82f6","#ef4444","#f59e0b","#10b981","#8b5cf6","#ec4899","#06b6d4","#f97316"];function E({open:e,onOpenChange:s,workspaceId:a}){let{t:n}=(0,P.useI18n)(),[o,i]=(0,r.useState)([]),[l,c]=(0,r.useState)(""),[d,u]=(0,r.useState)(z[0]);(0,r.useEffect)(()=>{e&&S(a).then(i)},[e,a]);let m=async()=>{l.trim()&&(await T({name:l.trim(),color:d,workspaceId:a}),i(await S(a)),c(""))},x=async e=>{await D(e),i(t=>t.filter(t=>t.id!==e))};return(0,t.jsx)(j.Dialog,{open:e,onOpenChange:s,disablePointerDismissal:!0,children:(0,t.jsxs)(j.DialogContent,{className:"sm:max-w-sm",children:[(0,t.jsx)(j.DialogHeader,{children:(0,t.jsx)(j.DialogTitle,{children:n("label.manage")})}),(0,t.jsxs)("div",{className:"space-y-3 py-2",children:[o.map(e=>(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"h-3 w-3 rounded-full",style:{backgroundColor:e.color}}),(0,t.jsx)("span",{className:"flex-1 text-sm text-foreground",children:e.name}),e.isBuiltin?(0,t.jsx)("span",{className:"text-[10px] text-muted-foreground",children:n("label.builtin")}):(0,t.jsx)("button",{onClick:()=>x(e.id),className:"text-xs text-rose-400 hover:text-rose-300",children:n("common.delete")})]},e.id)),(0,t.jsxs)("div",{className:"border-t border-border pt-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(w.Input,{placeholder:n("label.name"),value:l,onChange:e=>c(e.target.value),onKeyDown:e=>"Enter"===e.key&&e.preventDefault(),className:"flex-1 h-8"}),(0,t.jsx)(v.Button,{size:"sm",onClick:m,disabled:!l.trim(),className:"bg-primary/10 text-primary ring-1 ring-primary/20 hover:bg-primary/15",children:n("label.add")})]}),(0,t.jsx)("div",{className:"mt-2 flex gap-1.5",children:z.map(e=>(0,t.jsx)("button",{onClick:()=>u(e),className:`h-5 w-5 rounded-full transition-all ${d===e?"ring-2 ring-offset-2 ring-offset-background ring-foreground/30 scale-110":""}`,style:{backgroundColor:e}},e))})]})]})]})})}var L=e.i(387104),O=e.i(811163),I=e.i(277547);let B=(0,d.default)("command",[["path",{d:"M15 6v12a3 3 0 1 0 3-3H6a3 3 0 1 0 3 3V6a3 3 0 1 0-3 3h12a3 3 0 1 0-3-3",key:"11bfej"}]]);var F=e.i(514183),_=e.i(38431),U=e.i(924171),W=e.i(114954);e.s([],384466),e.i(384466),e.i(905022);var H=e.i(703995),K=e.i(855604);let V=r.createContext(void 0);function q(){let e=r.useContext(V);if(void 0===e)throw Error((0,K.default)(13));return e}let X={imageLoadingStatus:()=>null},G=r.forwardRef(function(e,s){let{className:a,render:n,...o}=e,[i,l]=r.useState("idle"),c=r.useMemo(()=>({imageLoadingStatus:i,setImageLoadingStatus:l}),[i,l]),d=(0,H.useRenderElement)("span",e,{state:{imageLoadingStatus:i},ref:s,props:o,stateAttributesMapping:X});return(0,t.jsx)(V.Provider,{value:c,children:d})});var J=e.i(288782),Y=e.i(239917),Z=e.i(762879),Q=e.i(963195),ee=e.i(680765),et=e.i(534262);let er={...X,...Q.transitionStatusMapping},es=r.forwardRef(function(e,t){let{className:s,render:a,onLoadingStatusChange:n,referrerPolicy:o,crossOrigin:i,...l}=e,c=q(),d=function(e,{referrerPolicy:t,crossOrigin:s}){let[a,n]=r.useState("idle");return(0,Y.useIsoLayoutEffect)(()=>{if(!e)return n("error"),et.NOOP;let r=!0,a=new window.Image,o=e=>()=>{r&&n(e)};return n("loading"),a.onload=o("loaded"),a.onerror=o("error"),t&&(a.referrerPolicy=t),a.crossOrigin=s??null,a.src=e,()=>{r=!1}},[e,s,t]),a}(e.src,{referrerPolicy:o,crossOrigin:i}),u="loaded"===d,{mounted:m,transitionStatus:x,setMounted:h}=(0,ee.useTransitionStatus)(u),p=r.useRef(null),f=(0,J.useStableCallback)(e=>{n?.(e),c.setImageLoadingStatus(e)});(0,Y.useIsoLayoutEffect)(()=>{"idle"!==d&&f(d)},[d,f]),(0,Z.useOpenChangeComplete)({open:u,ref:p,onComplete(){u||h(!1)}});let g=(0,H.useRenderElement)("img",e,{state:{imageLoadingStatus:d,transitionStatus:x},ref:[t,p],props:l,stateAttributesMapping:er,enabled:m});return m?g:null});var ea=e.i(109792);let en=r.forwardRef(function(e,t){let{className:s,render:a,delay:n,...o}=e,{imageLoadingStatus:i}=q(),[l,c]=r.useState(void 0===n),d=(0,ea.useTimeout)();return r.useEffect(()=>(void 0!==n&&d.start(n,()=>c(!0)),d.clear),[d,n]),(0,H.useRenderElement)("span",e,{state:{imageLoadingStatus:i},ref:t,props:o,stateAttributesMapping:X,enabled:"loaded"!==i&&l})});e.s(["Fallback",0,en,"Image",0,es,"Root",0,G],612115);var eo=e.i(612115),eo=eo,ei=e.i(47816);function el({className:e,size:r="default",...s}){return(0,t.jsx)(eo.Root,{"data-slot":"avatar","data-size":r,className:(0,ei.cn)("group/avatar relative flex size-8 shrink-0 rounded-full select-none after:absolute after:inset-0 after:rounded-full after:border after:border-border after:mix-blend-darken data-[size=lg]:size-10 data-[size=sm]:size-6 dark:after:mix-blend-lighten",e),...s})}function ec({className:e,...r}){return(0,t.jsx)(eo.Fallback,{"data-slot":"avatar-fallback",className:(0,ei.cn)("flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs",e),...r})}let ed=(0,d.default)("folder-kanban",[["path",{d:"M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.93a2 2 0 0 1-1.66-.9l-.82-1.2A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13c0 1.1.9 2 2 2Z",key:"1fr9dc"}],["path",{d:"M8 10v4",key:"tgpxqk"}],["path",{d:"M12 10v2",key:"hh53o1"}],["path",{d:"M16 10v6",key:"1d6xys"}]]);var eu=e.i(259104);let em=(0,d.default)("sticky-note",[["path",{d:"M21 9a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 15 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2z",key:"1dfntj"}],["path",{d:"M15 3v5a1 1 0 0 0 1 1h5",key:"6s6qgf"}]]),ex=(0,d.default)("package-2",[["path",{d:"M12 3v6",key:"1holv5"}],["path",{d:"M16.76 3a2 2 0 0 1 1.8 1.1l2.23 4.479a2 2 0 0 1 .21.891V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V9.472a2 2 0 0 1 .211-.894L5.45 4.1A2 2 0 0 1 7.24 3z",key:"187q7i"}],["path",{d:"M3.054 9.013h17.893",key:"grwhos"}]]);var eh=e.i(621994);let ep=(0,N.createServerReference)("601e95e0f8db1209731d6d794c1d7142a382eba10b",N.callServer,void 0,N.findSourceMapURL,"globalSearch");var ef=e.i(640658);let eg=[{id:"all",key:"search.all",icon:O.Search},{id:"task",key:"search.task",icon:x.FileText},{id:"project",key:"search.project",icon:ed},{id:"repository",key:"search.repository",icon:eu.GitBranch},{id:"note",key:"search.note",icon:em},{id:"asset",key:"search.asset",icon:ex}],ej=["task","project","repository","note","asset"],eb={task:"search.task",project:"search.project",repository:"search.repository",note:"search.note",asset:"search.asset"};function ev({result:e,onSelect:r}){let s=eg.find(t=>t.id===e.type)?.icon??x.FileText;return(0,t.jsxs)("button",{onClick:()=>r(e),className:"flex w-full items-center gap-3 border-b border-border/30 px-4 py-3 text-left transition-colors hover:bg-accent last:border-b-0",children:[(0,t.jsx)("div",{className:"rounded-md bg-muted p-1.5",children:(0,t.jsx)(s,{className:"h-3.5 w-3.5 text-muted-foreground"})}),(0,t.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,t.jsx)("div",{className:"text-sm font-medium text-foreground truncate",children:e.title}),(0,t.jsx)("div",{className:"text-xs text-muted-foreground truncate",children:e.subtitle}),e.snippet&&(0,t.jsx)("div",{className:"text-xs text-muted-foreground/70 truncate mt-0.5",children:e.snippet})]})]})}function ew({open:e,onOpenChange:a}){let n,{t:o}=(0,P.useI18n)(),i=(0,s.useRouter)(),[l,c]=(0,r.useState)(""),[d,u]=(0,r.useState)("all"),[m,x]=(0,r.useState)([]),[h,p]=(0,r.useState)(!1),[f,b]=(0,r.useState)(250),w=(0,r.useRef)(null),N=(0,r.useRef)(null);(0,r.useEffect)(()=>{e&&((0,ef.getConfigValue)("search.debounceMs",250).then(b),setTimeout(()=>w.current?.focus(),100),c(""),x([]))},[e]),(0,r.useEffect)(()=>{if(N.current&&clearTimeout(N.current),!l.trim()){x([]),p(!1);return}p(!0);let e=!1;return N.current=setTimeout(async()=>{let t=await ep(l,d);e||(x(t),p(!1))},f),()=>{N.current&&clearTimeout(N.current),e=!0}},[l,d,f]);let y=(0,r.useCallback)(e=>{i.push(e.navigateTo),a(!1)},[i,a]);return(0,t.jsx)(j.Dialog,{open:e,onOpenChange:a,children:(0,t.jsxs)(j.DialogContent,{className:"sm:max-w-lg p-0 gap-0 overflow-hidden !top-[10vh] !-translate-y-0",showCloseButton:!1,children:[(0,t.jsxs)("div",{className:"flex items-center border-b border-border px-4",children:[(0,t.jsx)(O.Search,{className:"h-4 w-4 text-muted-foreground"}),(0,t.jsx)("input",{ref:w,value:l,onChange:e=>c(e.target.value),placeholder:o("search.placeholder"),className:"flex-1 bg-transparent px-3 py-3.5 text-sm text-foreground placeholder-muted-foreground outline-none"}),l&&(0,t.jsx)(v.Button,{variant:"ghost",size:"icon",onClick:()=>{c(""),x([])},className:"text-muted-foreground",children:(0,t.jsx)(eh.X,{className:"h-3.5 w-3.5"})})]}),(0,t.jsx)("div",{className:"flex items-center gap-1 border-b border-border px-4 py-2",children:eg.map(e=>{let r=e.icon;return(0,t.jsxs)("button",{onClick:()=>u(e.id),className:`flex items-center gap-1.5 rounded-md px-2.5 py-1 text-xs font-medium transition-all ${d===e.id?"bg-primary/10 text-primary ring-1 ring-primary/20":"text-muted-foreground hover:bg-accent hover:text-foreground"}`,children:[(0,t.jsx)(r,{className:"h-3 w-3"}),o(e.key)]},e.id)})}),(0,t.jsxs)(g.ScrollArea,{className:"max-h-80",children:[!l.trim()&&(0,t.jsx)("div",{className:"flex items-center justify-center py-12 text-sm text-muted-foreground",children:o("search.typeToSearch")}),l.trim()&&0===m.length&&!h&&(0,t.jsx)("div",{className:"flex items-center justify-center py-12 text-sm text-muted-foreground",children:o("search.noResults")}),"all"===d&&m.length>0&&(n=m.reduce((e,t)=>((e[t.type]??=[]).push(t),e),{}),ej.filter(e=>n[e]?.length).map(e=>(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"px-4 py-1.5 text-[10px] font-semibold uppercase tracking-wider text-muted-foreground bg-muted/50",children:o(eb[e])}),n[e].map(e=>(0,t.jsx)(ev,{result:e,onSelect:y},`${e.type}-${e.id}`))]},e))),"all"!==d&&m.map(e=>(0,t.jsx)(ev,{result:e,onSelect:y},`${e.type}-${e.id}`))]})]})})}var eN=e.i(599104),ey=e.i(924609),ek=e.i(698300),eC=e.i(993453),eS=e.i(510291),eT=e.i(696668),eD=e.i(779574);function eP(e){return e.replace(/\.git\/?$/,"")}e.i(499356),e.i(325200);let eR=(0,N.createServerReference)("4033da9efec93a76fc0620d306c619b298322208ee",N.callServer,void 0,N.findSourceMapURL,"resolveGitLocalPath");var eM=e.i(419574);function eA({open:e,onOpenChange:s,onCreateProject:a}){let{t:n,locale:o}=(0,P.useI18n)(),[i,l]=(0,r.useState)(""),[c,d]=(0,r.useState)(""),[u,m]=(0,r.useState)(""),[x,h]=(0,r.useState)(""),[p,f]=(0,r.useState)(""),[g,N]=(0,r.useState)(!1),[y,k]=(0,r.useState)("FRONTEND"),[C,S]=(0,r.useState)("idle"),[T,D]=(0,r.useState)(""),[M,A]=(0,r.useState)(!1),$=()=>{l(""),d(""),m(""),h(""),f(""),N(!1),k("FRONTEND"),S("idle"),D(""),A(!1)},z=async()=>{if(p.trim()&&!M&&"success"===C){A(!0);try{let e=await (0,eM.analyzeProjectDirectory)(p.trim(),o);m(e)}catch{R.toast.error(n("project.analyzeError"))}finally{A(!1)}}},E=async e=>{h(e),S("idle"),D("");let t=function(e){let t,r=e.match(/^git@([^:]+):(.+)$/);if(r)return{host:r[1],pathSegments:eP(r[2]).split("/").filter(Boolean)};try{t=new URL(e)}catch{return null}return{host:t.hostname,pathSegments:eP(decodeURIComponent(t.pathname)).split("/").filter(Boolean)}}(e);t&&t.pathSegments.length>0&&l(t.pathSegments[t.pathSegments.length-1]),g||f(await eR(e))},L=async()=>{if(x.trim()&&p.trim()){S("cloning"),D("");try{let e=function(e){let t=e.trim();if(!t)return"";if(t.startsWith("git@")||t.startsWith("ssh://")||t.endsWith(".git"))return t;try{let e=new URL(t),r=e.hostname,s=decodeURIComponent(e.pathname).split("/").filter(Boolean);if("code.iflytek.com"===r){let e=[...s];"osc"===e[0]&&"_source"===e[1]&&(e=e.slice(2));let a=e.indexOf("-");if(a>0&&(e=e.slice(0,a)),0===e.length)return t;return`https://${r}/${e.join("/")}.git`}return`${e.origin}${e.pathname.replace(/\/$/,"")}.git`}catch{return t}}(x.trim()),t=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"clone",url:e,path:p.trim()})}),r=await t.json();if(!t.ok){S("error"),D(r.error||"Clone failed");return}S("success")}catch{S("error"),D("Network error")}}},O=async()=>{i.trim()&&(await a?.({name:i.trim(),alias:c.trim()||void 0,description:u.trim()||void 0,gitUrl:x.trim()||void 0,localPath:p.trim()||void 0,projectType:y}),$(),s(!1))};return(0,t.jsx)(t.Fragment,{children:(0,t.jsx)(j.Dialog,{open:e,onOpenChange:e=>{s(e),e||$()},disablePointerDismissal:!0,children:(0,t.jsxs)(j.DialogContent,{style:{maxWidth:"32rem"},children:[(0,t.jsx)(j.DialogHeader,{children:(0,t.jsx)(j.DialogTitle,{children:n("topbar.newProject")})}),(0,t.jsxs)("div",{className:"space-y-4 py-2",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:n("project.gitUrl")}),(0,t.jsx)("p",{className:"text-[10px] text-muted-foreground mt-0.5",children:n("project.gitUrlHint")}),(0,t.jsx)(w.Input,{placeholder:n("project.gitPlaceholder"),value:x,onChange:e=>E(e.target.value),className:"mt-1.5 font-mono text-xs"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:n("project.localPath")}),(0,t.jsx)("p",{className:"text-[10px] text-muted-foreground mt-0.5",children:n("project.localPathHint")}),(0,t.jsx)(w.Input,{placeholder:n("project.localPathPlaceholder"),value:p,onChange:e=>{f(e.target.value),N(!0)},className:"mt-1.5 font-mono text-xs w-full"}),p.trim().startsWith("~")&&(0,t.jsxs)("p",{className:"mt-1 flex items-center gap-1 text-[11px] text-amber-400",children:[(0,t.jsx)(eC.AlertCircle,{className:"h-3 w-3"}),n("project.tildeWarning")]}),x.trim()&&p.trim()&&(0,t.jsxs)("div",{className:"mt-2 flex items-center gap-2",children:[(0,t.jsxs)(v.Button,{type:"button",disabled:"cloning"===C||"success"===C,onClick:L,className:"gap-1.5 text-xs bg-emerald-500/15 text-emerald-300 ring-1 ring-emerald-500/25 hover:bg-emerald-500/25 disabled:opacity-50",children:["cloning"===C?(0,t.jsx)(ey.Loader2,{className:"h-3 w-3 animate-spin"}):"success"===C?(0,t.jsx)(ek.Check,{className:"h-3 w-3"}):(0,t.jsx)(eu.GitBranch,{className:"h-3 w-3"}),"cloning"===C?n("git.cloning"):"success"===C?n("git.cloned"):n("git.clone")]}),"error"===C&&(0,t.jsxs)("span",{className:"flex items-center gap-1 text-[11px] text-rose-400",children:[(0,t.jsx)(eC.AlertCircle,{className:"h-3 w-3"}),T]}),"success"===C&&(0,t.jsx)("span",{className:"text-[11px] text-emerald-400",children:n("git.cloneSuccess")})]})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:n("project.name")}),(0,t.jsx)(w.Input,{placeholder:n("project.namePlaceholder"),value:i,onChange:e=>l(e.target.value),className:"mt-1.5"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:n("project.type.label")}),(0,t.jsx)("div",{className:"mt-1.5",children:(0,t.jsx)(eT.SegmentedControl,{options:[{value:"FRONTEND",label:n("project.type.frontend")},{value:"BACKEND",label:n("project.type.backend")}],value:y,onChange:k})})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:n("project.alias")}),(0,t.jsx)(w.Input,{placeholder:n("project.aliasPlaceholder"),value:c,onChange:e=>d(e.target.value),className:"mt-1.5"})]}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mt-0.5",children:[(0,t.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:n("project.description")}),(0,t.jsxs)(b.Tooltip,{children:[(0,t.jsxs)(b.TooltipTrigger,{render:(0,t.jsx)(v.Button,{type:"button",variant:"ghost",onClick:z,className:`h-6 gap-1 px-2 text-[11px] text-muted-foreground hover:text-foreground ${!p.trim()||M?"opacity-50":""}`}),children:[M?(0,t.jsx)(ey.Loader2,{className:"h-3 w-3 animate-spin"}):(0,t.jsx)(eS.Sparkles,{className:"h-3 w-3"}),M?n("project.analyzing"):n("project.genDesc")]}),(0,t.jsx)(b.TooltipContent,{children:p.trim()?"success"!==C?n("project.genDescNotCloned"):n("project.genDescReady"):n("project.genDescNoPath")})]})]}),(0,t.jsx)(eD.Textarea,{placeholder:n("project.descPlaceholder"),value:u,onChange:e=>m(e.target.value),rows:3,className:"mt-1.5 w-full rounded-md border border-border bg-background px-3 py-2 text-sm text-foreground placeholder-muted-foreground outline-none transition-colors focus:border-ring focus:ring-1 focus:ring-ring resize-none max-h-[200px] overflow-y-auto"})]})]}),(0,t.jsxs)(j.DialogFooter,{children:[(0,t.jsx)(v.Button,{variant:"outline",onClick:()=>{s(!1),$()},children:n("common.cancel")}),(0,t.jsx)(v.Button,{onClick:O,disabled:!i.trim()||M,className:"bg-primary/10 text-primary ring-1 ring-primary/25 hover:bg-primary/20",children:n("common.create")})]})]})})})}var e$=e.i(627580),e$=e$,ez=e.i(378399),eE=e.i(108523);let eL=(0,N.createServerReference)("60574fdac6089bf8fc377ba388554ac09dd4e6dcc4",N.callServer,void 0,N.findSourceMapURL,"migrateProjectPath"),eO=(0,N.createServerReference)("40d3abd28d0a5bb431895dd4ac52143ab15cfccb6b",N.callServer,void 0,N.findSourceMapURL,"checkMigrationSafety");function eI({open:e,onOpenChange:s,onCreateProject:a}){let{t:n,locale:o}=(0,P.useI18n)(),[i,l]=(0,r.useState)(""),[c,d]=(0,r.useState)(""),[u,m]=(0,r.useState)(""),[x,p]=(0,r.useState)(""),[f,g]=(0,r.useState)(""),[N,y]=(0,r.useState)(!1),[k,C]=(0,r.useState)("FRONTEND"),[S,T]=(0,r.useState)(!1),[D,M]=(0,r.useState)(!1),[A,$]=(0,r.useState)(""),[z,E]=(0,r.useState)(!1),[L,O]=(0,r.useState)(""),[I,B]=(0,r.useState)(""),[F,_]=(0,r.useState)(!1),[U,W]=(0,r.useState)(!1),H=()=>{l(""),d(""),m(""),p(""),g(""),C("FRONTEND"),T(!1),M(!1),$(""),E(!1),O(""),B(""),_(!1),W(!1)},K=async e=>{g(e),T(!1),M(!1),$(""),O(""),B(""),_(!1),l(e.split("/").filter(Boolean).pop()??"");try{let t=await fetch(`/api/git?path=${encodeURIComponent(e)}`);if(t.ok){let e=await t.json();if(e.isGit&&e.remoteUrl){p(e.remoteUrl),T(!0);let t=e.remoteUrl.match(/\/([^/]+?)(?:\.git)?$/);t&&l(t[1])}}}catch{}},V=(0,r.useCallback)(async e=>{if(M(e),O(""),B(""),_(!1),!e)return void $("");if(x)try{let e=await eR(x);e&&($(e),e===f&&_(!0))}catch{}if(f)try{let e=await fetch(`/api/git?path=${encodeURIComponent(f)}&checkWorktrees=true`);e.ok&&(await e.json()).hasWorktrees&&B(n("project.worktreeWarning"))}catch{}},[x,f]),q=async()=>{if(f&&!U){W(!0);try{let e=await (0,eM.analyzeProjectDirectory)(f.trim(),o);m(e)}catch{R.toast.error(n("project.analyzeError"))}finally{W(!1)}}},X=async()=>{if(!i.trim())return;let e={name:i.trim(),alias:c.trim()||void 0,description:u.trim()||void 0,gitUrl:x.trim()||void 0,localPath:f.trim()||void 0,projectType:k},t=await a?.(e);if(D&&A&&A!==f&&t&&"id"in t){E(!0),O("");let e=await eO(t.id);if(!e.safe){O(e.reason),E(!1);return}let r=await eL(t.id,A);if(E(!1),!r.success)return void O(r.error??n("project.migrateError"));R.toast.success(n("project.migrateSuccess"))}H(),s(!1)},G=!i.trim()||!f.trim()||z||U||D&&!!I;return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(j.Dialog,{open:e,onOpenChange:e=>{s(e),e||H()},disablePointerDismissal:!0,children:(0,t.jsxs)(j.DialogContent,{style:{maxWidth:"32rem"},children:[(0,t.jsx)(j.DialogHeader,{children:(0,t.jsx)(j.DialogTitle,{children:n("topbar.importProject")})}),(0,t.jsxs)("div",{className:"space-y-4 py-2",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:n("project.localPath")}),(0,t.jsx)("p",{className:"text-[10px] text-muted-foreground mt-0.5",children:n("project.importHint")}),(0,t.jsxs)("div",{className:"mt-1.5 flex gap-2",children:[(0,t.jsx)(w.Input,{value:f,readOnly:!0,placeholder:n("project.localPathPlaceholder"),className:"flex-1 font-mono text-xs bg-muted/30"}),(0,t.jsxs)(v.Button,{type:"button",variant:"outline",onClick:()=>y(!0),className:"shrink-0 gap-1.5",children:[(0,t.jsx)(h.FolderOpen,{className:"h-3.5 w-3.5"}),n("folder.browse")]})]}),S&&(0,t.jsx)("p",{className:"mt-1.5 text-[11px] text-emerald-400",children:n("project.autoDetected")})]}),x&&(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:n("project.gitUrl")}),(0,t.jsx)(w.Input,{value:x,onChange:e=>p(e.target.value),className:"mt-1.5 font-mono text-xs"})]}),S&&f&&(0,t.jsxs)("div",{className:"rounded-md border border-border p-3 space-y-2",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("span",{className:"text-xs font-medium",children:n("project.migrate")}),(0,t.jsx)("p",{className:"text-[10px] text-muted-foreground mt-0.5",children:n("project.migrateHint")})]}),(0,t.jsx)(eE.Switch,{checked:D,onCheckedChange:e=>V(e)})]}),D&&(0,t.jsxs)("div",{className:"space-y-2 pt-1",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"text-[10px] font-medium text-muted-foreground",children:n("project.targetPath")}),(0,t.jsx)(w.Input,{value:A,onChange:e=>{$(e.target.value),_(e.target.value===f)},placeholder:"/path/to/canonical/location",className:"mt-1 font-mono text-xs"})]}),F&&(0,t.jsxs)("p",{className:"flex items-center gap-1 text-[11px] text-sky-400",children:[(0,t.jsx)(e$.default,{className:"h-3 w-3"}),n("project.samePathInfo")]}),I&&(0,t.jsxs)("p",{className:"flex items-center gap-1 text-[11px] text-amber-400",children:[(0,t.jsx)(eC.AlertCircle,{className:"h-3 w-3"}),I]}),L&&(0,t.jsxs)("p",{className:"flex items-center gap-1 text-[11px] text-rose-400",children:[(0,t.jsx)(eC.AlertCircle,{className:"h-3 w-3"}),L]})]})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:n("project.name")}),(0,t.jsx)(w.Input,{placeholder:n("project.namePlaceholder"),value:i,onChange:e=>l(e.target.value),className:"mt-1.5"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:n("project.type.label")}),(0,t.jsx)("div",{className:"mt-1.5",children:(0,t.jsx)(eT.SegmentedControl,{options:[{value:"FRONTEND",label:n("project.type.frontend")},{value:"BACKEND",label:n("project.type.backend")}],value:k,onChange:C})})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:n("project.alias")}),(0,t.jsx)(w.Input,{placeholder:n("project.aliasPlaceholder"),value:c,onChange:e=>d(e.target.value),className:"mt-1.5"})]}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mt-0.5",children:[(0,t.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:n("project.description")}),(0,t.jsxs)(b.Tooltip,{children:[(0,t.jsxs)(b.TooltipTrigger,{render:(0,t.jsx)(v.Button,{type:"button",variant:"ghost",onClick:q,className:`h-6 gap-1 px-2 text-[11px] text-muted-foreground hover:text-foreground ${!f||U?"opacity-50":""}`}),children:[U?(0,t.jsx)(ey.Loader2,{className:"h-3 w-3 animate-spin"}):(0,t.jsx)(eS.Sparkles,{className:"h-3 w-3"}),U?n("project.analyzing"):n("project.genDesc")]}),(0,t.jsx)(b.TooltipContent,{children:f?n("project.genDescReady"):n("project.genDescNoPath")})]})]}),(0,t.jsx)(eD.Textarea,{placeholder:n("project.descPlaceholder"),value:u,onChange:e=>m(e.target.value),rows:3,className:"mt-1.5 w-full rounded-md border border-border bg-background px-3 py-2 text-sm text-foreground placeholder-muted-foreground outline-none transition-colors focus:border-ring focus:ring-1 focus:ring-ring resize-none max-h-[200px] overflow-y-auto"})]})]}),(0,t.jsxs)(j.DialogFooter,{children:[(0,t.jsx)(v.Button,{variant:"outline",onClick:()=>{s(!1),H()},children:n("common.cancel")}),(0,t.jsx)(v.Button,{onClick:X,disabled:G,className:"bg-primary/10 text-primary ring-1 ring-primary/25 hover:bg-primary/20",children:z?n("project.migrating"):n("common.create")})]})]})}),(0,t.jsx)(ez.FolderBrowserDialog,{open:N,onOpenChange:y,onSelect:e=>K(e)})]})}function eB({onCreateProject:e,username:a}){let{t:n,locale:i,setLocale:l}=(0,P.useI18n)(),{isOpen:c,toggleAssistant:d}=(0,eN.useAssistant)(),{resolvedTheme:u,toggleTheme:m,triggerRef:x}=function(){let{resolvedTheme:e,setTheme:t}=(0,L.useTheme)(),s=(0,r.useRef)(null),a=(0,r.useCallback)(r=>{let s="dark"===e?"light":"dark";if("u">typeof document&&"startViewTransition"in document&&!window.matchMedia("(prefers-reduced-motion: reduce)").matches){let e=r?.clientX??window.innerWidth/2,a=r?.clientY??0,n=Math.hypot(Math.max(e,window.innerWidth-e),Math.max(a,window.innerHeight-a));document.startViewTransition(()=>{t(s)}).ready.then(()=>{document.documentElement.animate({clipPath:[`circle(0px at ${e}px ${a}px)`,`circle(${n}px at ${e}px ${a}px)`]},{duration:400,easing:"ease-in-out",pseudoElement:"::view-transition-new(root)"})})}else t(s)},[e,t]);return{resolvedTheme:e,toggleTheme:a,triggerRef:s}}(),p=(0,s.useRouter)(),[g,j]=(0,r.useState)(!1),[w,N]=(0,r.useState)(!1),[y,k]=(0,r.useState)(!1);return(0,r.useEffect)(()=>{let e=e=>{(e.metaKey||e.ctrlKey)&&"k"===e.key&&(e.preventDefault(),j(!0))};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[]),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("header",{className:"flex h-12 items-center justify-between border-b border-border bg-background/80 px-5 backdrop-blur-sm",children:[(0,t.jsx)("div",{className:"w-40"}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsxs)(v.Button,{variant:"outline",onClick:()=>j(!0),className:"h-8 w-[400px] justify-start gap-2 bg-muted/50 text-muted-foreground hover:bg-muted",children:[(0,t.jsx)(O.Search,{className:"h-3.5 w-3.5"}),(0,t.jsx)("span",{className:"flex-1 text-left",suppressHydrationWarning:!0,children:n("topbar.searchPlaceholder")}),(0,t.jsxs)("kbd",{className:"mr-1 flex items-center gap-0.5 rounded border border-border bg-background px-1.5 py-0.5 text-[10px] font-mono",children:[(0,t.jsx)(B,{className:"h-2.5 w-2.5"}),"K"]})]}),(0,t.jsxs)(b.Tooltip,{children:[(0,t.jsx)(b.TooltipTrigger,{delay:500,render:(0,t.jsx)("button",{"data-tour":"open-assistant",onClick:d,"aria-label":n("assistant.iconLabel"),className:["cursor-pointer rounded-lg p-2 text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",c?"bg-accent text-foreground":""].join(" ")}),children:(0,t.jsx)(_.Bot,{className:"h-4 w-4"})}),(0,t.jsx)(b.TooltipContent,{children:n("assistant.iconLabel")})]})]}),(0,t.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,t.jsxs)(b.Tooltip,{children:[(0,t.jsxs)(b.TooltipTrigger,{render:(0,t.jsx)(v.Button,{variant:"ghost",onClick:()=>l("zh"===i?"en":"zh"),className:"text-muted-foreground"}),children:[(0,t.jsx)(F.Globe,{className:"h-3.5 w-3.5"}),(0,t.jsx)("span",{className:"text-[11px] font-semibold",children:"zh"===i?"EN":"中"})]}),(0,t.jsx)(b.TooltipContent,{children:n("settings.language")})]}),(0,t.jsxs)(b.Tooltip,{children:[(0,t.jsx)(b.TooltipTrigger,{render:(0,t.jsx)(v.Button,{ref:x,variant:"ghost",size:"icon",onClick:m,className:"text-muted-foreground"}),children:"dark"===u?(0,t.jsx)(U.Sun,{className:"h-4 w-4"}):(0,t.jsx)(W.Moon,{className:"h-4 w-4"})}),(0,t.jsx)(b.TooltipContent,{children:n("settings.theme")})]}),(0,t.jsx)("div",{className:"h-4 w-px bg-border"}),(0,t.jsxs)(v.Button,{variant:"outline",className:"gap-1.5 ring-1 ring-border hover:bg-accent",onClick:()=>k(!0),children:[(0,t.jsx)(h.FolderOpen,{className:"h-3.5 w-3.5"}),n("topbar.importProject")]}),(0,t.jsxs)(v.Button,{"data-tour":"create-project",className:"gap-1.5 bg-primary/10 text-primary ring-1 ring-primary/25 hover:bg-primary/20",onClick:()=>N(!0),children:[(0,t.jsx)(o.Plus,{className:"h-3.5 w-3.5"}),n("topbar.newProject")]}),(0,t.jsxs)(f.DropdownMenu,{children:[(0,t.jsx)(f.DropdownMenuTrigger,{render:(0,t.jsxs)("button",{className:"ml-0.5 flex cursor-pointer items-center gap-1.5 rounded-lg px-2.5 py-1 transition-colors hover:bg-accent",children:[a&&(0,t.jsx)("span",{className:"max-w-[80px] truncate text-xs text-muted-foreground",children:a}),(0,t.jsx)(el,{className:"h-7 w-7 ring-1 ring-border",children:(0,t.jsx)(ec,{className:"bg-emerald-500/20 text-emerald-400 text-[10px] font-semibold",children:a?a.trim().split(/\s+/).filter(e=>e.length>0).slice(0,2).map(e=>e[0].toUpperCase()).join(""):"U"})})]})}),(0,t.jsx)(f.DropdownMenuContent,{align:"end",sideOffset:8,className:"w-40",children:(0,t.jsxs)(f.DropdownMenuItem,{onClick:()=>p.push("/settings"),children:[(0,t.jsx)(I.Settings,{className:"mr-2 h-3.5 w-3.5"}),n("settings.title")]})})]})]})]}),(0,t.jsx)(ew,{open:g,onOpenChange:j}),(0,t.jsx)(eA,{open:w,onOpenChange:N,onCreateProject:e}),(0,t.jsx)(eI,{open:y,onOpenChange:k,onCreateProject:e})]})}var eF=e.i(709545),e_=r,eU=e.i(232478);class eW extends e_.Component{constructor(e){super(e),this.state={hasError:!1,error:null}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}componentDidCatch(e,t){console.error("[ErrorBoundary]",e,t)}render(){return this.state.hasError?this.props.fallback?this.props.fallback:(0,t.jsxs)("div",{className:"flex flex-col items-center justify-center gap-3 p-8 text-center",children:[(0,t.jsx)(eC.AlertCircle,{className:"h-8 w-8 text-destructive"}),(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"text-sm font-medium text-foreground",children:"Something went wrong"}),(0,t.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:this.state.error?.message??"An unexpected error occurred"})]}),(0,t.jsxs)(v.Button,{variant:"outline",onClick:()=>this.setState({hasError:!1,error:null}),children:[(0,t.jsx)(eU.RefreshCw,{className:"mr-2 h-3.5 w-3.5"}),"Retry"]})]}):this.props.children}}var eH=e.i(859123),eK=e.i(673898),eV=e.i(260949);let eq=(0,eK.default)(()=>e.A(402824).then(e=>({default:e.AssistantChat})),{loadableGenerated:{modules:[143824]},ssr:!1});function eX({mode:e}){let{isOpen:r,closeAssistant:s,sessions:a,activeSessionId:n,createNewSession:i,switchSession:c,removeSession:d}=(0,eN.useAssistant)(),{t:u}=(0,P.useI18n)(),m=a.find(e=>e.id===n),x=m?.title??u("assistant.newSession");return(0,t.jsxs)("div",{className:"sidebar"===e?"min-w-[320px] max-w-[480px] w-[30vw] shrink-0 border-r border-border flex flex-col bg-sidebar overflow-hidden":"flex flex-col h-full overflow-hidden",children:[(0,t.jsxs)("div",{className:"header-sm flex items-center px-4 gap-2 bg-sidebar",children:[(0,t.jsx)(_.Bot,{className:"h-4 w-4 text-muted-foreground shrink-0"}),(0,t.jsx)("span",{className:"text-sm font-semibold text-foreground shrink-0",children:u("assistant.title")}),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"flex-1"}),(0,t.jsxs)(f.DropdownMenu,{children:[(0,t.jsxs)(f.DropdownMenuTrigger,{className:"flex items-center gap-1 h-8 px-2 rounded-md text-xs text-muted-foreground transition-colors hover:bg-accent hover:text-foreground max-w-[120px] truncate","aria-label":u("assistant.sessionList"),children:[(0,t.jsx)("span",{className:"truncate",children:x}),(0,t.jsx)(eV.ChevronDown,{className:"h-3 w-3 shrink-0"})]}),(0,t.jsxs)(f.DropdownMenuContent,{side:"bottom",align:"end",sideOffset:4,children:[0===a.length?(0,t.jsx)("div",{className:"px-2 py-4 text-xs text-muted-foreground text-center",children:u("assistant.noSessions")}):a.map(e=>(0,t.jsxs)(f.DropdownMenuItem,{className:"flex items-center justify-between gap-2 pr-1",onClick:()=>c(e.id),children:[(0,t.jsxs)("div",{className:"flex flex-col gap-0.5 min-w-0",children:[(0,t.jsx)("span",{className:"text-xs truncate max-w-[140px]",children:e.title}),(0,t.jsx)("span",{className:"text-[10px] text-muted-foreground",children:function(e){let t=Math.floor((Date.now()-new Date(e).getTime())/1e3);if(t<60)return`${t}s ago`;let r=Math.floor(t/60);if(r<60)return`${r}m ago`;let s=Math.floor(r/60);if(s<24)return`${s}h ago`;let a=Math.floor(s/24);return`${a}d ago`}(e.updatedAt)})]}),(0,t.jsx)(v.Button,{variant:"ghost",className:"h-6 w-6 p-0 shrink-0 opacity-50 hover:opacity-100 hover:text-destructive",onClick:t=>{t.stopPropagation(),d(e.id)},"aria-label":u("assistant.deleteSession"),children:(0,t.jsx)(l.Trash2,{className:"h-3 w-3"})})]},e.id)),a.length>0&&(0,t.jsx)(f.DropdownMenuSeparator,{}),(0,t.jsxs)(f.DropdownMenuItem,{onClick:i,children:[(0,t.jsx)(o.Plus,{className:"h-3 w-3 mr-1"}),(0,t.jsx)("span",{className:"text-xs",children:u("assistant.newSession")})]})]})]}),(0,t.jsx)(v.Button,{variant:"ghost",size:"icon",className:"text-muted-foreground",onClick:i,"aria-label":u("assistant.newSession"),children:(0,t.jsx)(o.Plus,{className:"h-4 w-4"})})]}),(0,t.jsx)(v.Button,{variant:"ghost",size:"icon",className:"text-muted-foreground",onClick:s,"aria-label":u("assistant.closeLabel"),children:(0,t.jsx)(eh.X,{className:"h-4 w-4"})})]}),(0,t.jsx)("div",{className:"flex-1 overflow-hidden",children:r?(0,t.jsx)(eq,{}):null})]})}var eG=e.i(315883);function eJ({onDismiss:e}){let{t:s}=(0,P.useI18n)(),[a,n]=(0,r.useState)(!1);(0,r.useEffect)(()=>{"Notification"in window&&"default"===window.Notification.permission&&n(!0)},[]);let o=async()=>{"default"!==await window.Notification.requestPermission()&&(n(!1),e?.())};return a?(0,t.jsxs)("div",{className:"fixed top-3 left-1/2 -translate-x-1/2 z-[9999] w-auto max-w-lg bg-card border rounded-lg shadow-lg px-4 py-2.5 flex items-center gap-3 animate-in fade-in slide-in-from-top-4 duration-500",children:[(0,t.jsx)(eG.Bell,{className:"h-4 w-4 shrink-0 text-primary"}),(0,t.jsx)("span",{className:"flex-1 text-sm",children:s("notification.permissionPrompt")}),(0,t.jsx)(v.Button,{size:"default",onClick:o,children:s("notification.allow")}),(0,t.jsx)(v.Button,{variant:"ghost",size:"default",onClick:()=>{n(!1),e?.()},children:s("notification.dismiss")})]}):null}var eY=e.i(115537),eZ=e.i(330019);let eQ=[{target:"create-workspace",titleKey:"tour.step1.title",descKey:"tour.step1.desc",placement:"right"},{target:"create-project",titleKey:"tour.step2.title",descKey:"tour.step2.desc",placement:"bottom",waitForTarget:!0},{target:"open-assistant",titleKey:"tour.step3.title",descKey:"tour.step3.desc",placement:"bottom"}];function e0({onComplete:e}){let{t:s}=(0,P.useI18n)(),[a,n]=(0,r.useState)(0),[o,i]=(0,r.useState)(null),[l,c]=(0,r.useState)(!1),d=(0,r.useRef)(null),u=eQ[a],m=(0,r.useCallback)(async()=>{await (0,eZ.setConfigValue)("onboarding.tourCompleted",!0),e()},[e]),x=(0,r.useCallback)(()=>u?document.querySelector(`[data-tour="${u.target}"]`):null,[u]),h=(0,r.useCallback)(()=>{let e=x();e?(i(e.getBoundingClientRect()),c(!0)):c(!1)},[x]);(0,r.useEffect)(()=>{h();let e=null;!l&&u?.waitForTarget&&(d.current=new MutationObserver(()=>{let t=x();t&&(i(t.getBoundingClientRect()),c(!0),d.current?.disconnect(),e&&clearTimeout(e))}),d.current.observe(document.body,{childList:!0,subtree:!0}),e=setTimeout(()=>{!x()&&(n(e=>{let t=e+1;return t<eQ.length?t:e}),a>=eQ.length-1&&m())},5e3));let t=()=>h();return window.addEventListener("resize",t),window.addEventListener("scroll",t,!0),()=>{d.current?.disconnect(),e&&clearTimeout(e),window.removeEventListener("resize",t),window.removeEventListener("scroll",t,!0)}},[a,u,x,h,l,m]),(0,r.useEffect)(()=>{let e=setInterval(h,1e3);return()=>clearInterval(e)},[h]);let p=(0,r.useCallback)(()=>{a<eQ.length-1?(n(e=>e+1),c(!1)):m()},[a]);return u?(0,t.jsx)(t.Fragment,{children:l&&o&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"fixed inset-0 z-[10000]",style:{background:`radial-gradient(
2
- ellipse at ${o.left+o.width/2}px ${o.top+o.height/2}px,
3
- transparent ${Math.max(o.width,o.height)}px,
4
- rgba(0,0,0,0.6) ${Math.max(o.width,o.height)+30}px
5
- )`},onClick:p}),(0,t.jsx)("div",{className:"pointer-events-none fixed z-[10001] rounded-lg ring-2 ring-amber-400 ring-offset-2 ring-offset-background",style:{left:o.left-4,top:o.top-4,width:o.width+8,height:o.height+8}}),(0,t.jsxs)("div",{className:"fixed z-[10002] w-72 rounded-xl border border-border bg-card p-4 shadow-2xl",style:(()=>{if(!o)return{display:"none"};let e={position:"fixed",zIndex:10001};switch(u.placement){case"right":e.left=o.right+12,e.top=o.top+o.height/2,e.transform="translateY(-50%)";break;case"bottom":e.left=o.left+o.width/2,e.top=o.bottom+12,e.transform="translateX(-50%)";break;case"left":e.right=window.innerWidth-o.left+12,e.top=o.top+o.height/2,e.transform="translateY(-50%)";break;case"top":e.left=o.left+o.width/2,e.bottom=window.innerHeight-o.top+12,e.transform="translateX(-50%)"}return e})(),children:[(0,t.jsxs)("div",{className:"flex items-start justify-between gap-2",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h3",{className:"text-sm font-semibold text-foreground",children:s(u.titleKey)}),(0,t.jsx)("p",{className:"mt-1 text-xs text-muted-foreground leading-relaxed",children:s(u.descKey)})]}),(0,t.jsx)("button",{onClick:m,className:"shrink-0 rounded-md p-1 text-muted-foreground hover:bg-accent hover:text-foreground",children:(0,t.jsx)(eh.X,{className:"h-3.5 w-3.5"})})]}),(0,t.jsxs)("div",{className:"mt-3 flex items-center justify-between",children:[(0,t.jsx)("div",{className:"flex gap-1",children:eQ.map((e,r)=>(0,t.jsx)("div",{className:`h-1.5 w-1.5 rounded-full ${r===a?"bg-amber-400":r<a?"bg-amber-400/40":"bg-muted"}`},r))}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(v.Button,{variant:"ghost",className:"h-7 px-2 text-xs text-muted-foreground",onClick:m,children:s("tour.skip")}),(0,t.jsx)(v.Button,{className:"h-7 px-3 text-xs bg-amber-500/15 text-amber-300 ring-1 ring-amber-500/25 hover:bg-amber-500/25",onClick:p,children:s(a<eQ.length-1?"tour.next":"tour.done")})]})]})]})]})}):null}function e1({workspaces:e,isFirstRun:a,username:n,children:o,handleCreateProject:i}){let l=(0,s.usePathname)(),c=(0,s.useRouter)(),{isOpen:d,displayMode:u,closeAssistant:m}=(0,eN.useAssistant)();(0,r.useEffect)(()=>{a&&!l.startsWith("/onboarding")&&c.replace("/onboarding")},[a,l,c]);let[x,h]=(0,r.useState)(!1),[p,f]=(0,r.useState)(!1);(0,r.useEffect)(()=>{a||l.startsWith("/onboarding")||(0,ef.getConfigValue)("onboarding.tourCompleted",!1).then(e=>{e?f(!0):h(!0)})},[a,l]);let g=()=>{h(!1),f(!0)},[b,v]=(0,r.useState)(!0);(0,r.useEffect)(()=>{(0,ef.getConfigValue)("notification.enabled",!0).then(v)},[]);let w=l.startsWith("/onboarding");if(!function(e){let t=(0,s.useRouter)(),a=(0,r.useRef)(t),n=(0,r.useRef)(e),{t:o}=(0,P.useI18n)(),i=(0,r.useRef)(o);a.current=t,n.current=e,i.current=o,(0,r.useEffect)(()=>{if(!e)return;let t=null,r=null;async function s(){let e=await (0,eY.getActualWsPort)();(t=new WebSocket(`ws://localhost:${e}/terminal?taskId=__notifications__`)).onmessage=e=>{if(n.current)try{let t=JSON.parse(e.data);if("type"in t&&"stop"===t.type)R.toast.success(t.taskTitle,{description:i.current("notification.taskCompleted"),duration:8e3});else if("Notification"in window&&"granted"===window.Notification.permission){let e=new window.Notification("Tower",{body:t.taskTitle,icon:"/web-app-manifest-192x192.png"});e.onclick=()=>{window.focus(),a.current.push(`/workspaces/${t.workspaceId}/tasks/${t.taskId}`),e.close()}}else R.toast.info(t.taskTitle,{description:"COMPLETED"===t.status?i.current("notification.taskCompleted"):i.current("notification.taskFailed")})}catch{}},t.onclose=()=>{r=setTimeout(s,5e3)},t.onerror=()=>{t?.close()}}return s(),()=>{r&&clearTimeout(r),t?.close()}},[e])}(b&&!w),w)return(0,t.jsx)(t.Fragment,{children:o});let N=/\/workspaces\/[^/]+\/tasks\/[^/]+/.test(l),y=/\/workspaces\/[^/]+\/(notes|assets|archive)/.test(l),k=d&&"sidebar"===u?(0,t.jsx)(eX,{mode:"sidebar"}):null,C="dialog"===u?(0,t.jsx)(j.Dialog,{open:d,onOpenChange:e=>{e||m()},children:(0,t.jsx)(j.DialogContent,{showCloseButton:!1,style:{width:"90vw",minWidth:"360px",maxWidth:"600px",height:"70vh",minHeight:"480px",maxHeight:"800px",padding:0},children:(0,t.jsx)(eX,{mode:"dialog"})})}):null;return N||y?(0,t.jsxs)(t.Fragment,{children:[p&&(0,t.jsx)(eJ,{onDismiss:()=>f(!1)}),(0,t.jsx)("div",{className:"flex h-screen overflow-hidden",children:(0,t.jsxs)("div",{className:"flex flex-1 flex-col overflow-hidden",children:[(0,t.jsx)(eB,{onCreateProject:i,username:n}),(0,t.jsxs)("div",{className:"flex flex-1 overflow-hidden",children:[k,(0,t.jsx)("main",{className:"flex-1 overflow-hidden bg-background",children:(0,t.jsx)(eW,{children:o})})]})]})}),C,x&&(0,t.jsx)(e0,{onComplete:g})]}):(0,t.jsxs)(t.Fragment,{children:[p&&(0,t.jsx)(eJ,{onDismiss:()=>f(!1)}),(0,t.jsxs)("div",{className:"flex h-screen overflow-hidden",children:[(0,t.jsx)(A,{workspaces:e}),(0,t.jsxs)("div",{className:"flex flex-1 flex-col overflow-hidden",children:[(0,t.jsx)(eB,{onCreateProject:i,username:n}),(0,t.jsxs)("div",{className:"flex flex-1 overflow-hidden",children:[k,(0,t.jsx)("main",{className:"flex-1 overflow-auto bg-background",children:(0,t.jsx)(eW,{children:o})})]})]})]}),C,x&&(0,t.jsx)(e0,{onComplete:g})]})}e.s(["LayoutClient",0,function({workspaces:e,isFirstRun:r,username:a,children:n}){let o=(0,s.useRouter)(),i=(0,s.usePathname)(),l=i.split("/workspaces/")[1]?.split("/")[0],c=async t=>{let r=l||(e.length>0?e[0].id:null);if(!r){let e=await y({name:"Default Workspace"}),r=await (0,eH.createProject)({...t,workspaceId:e.id});return o.refresh(),o.push(`/workspaces/${e.id}`),{id:r.id}}let s=await (0,eH.createProject)({...t,workspaceId:r});return o.refresh(),o.push(`/workspaces/${r}`),{id:s.id}};return(0,t.jsx)(eN.AssistantProvider,{children:(0,t.jsx)(eF.TerminalPortalProvider,{children:(0,t.jsx)(e1,{workspaces:e,isFirstRun:r,username:a,handleCreateProject:c,children:n})})})}],632612)},574117,e=>{"use strict";var t=e.i(430989),r=e.i(387104);e.s(["ThemeProvider",0,function({children:e,...s}){return(0,t.jsx)(r.ThemeProvider,{...s,children:e})}])},764878,e=>{"use strict";var t=e.i(430989),r=e.i(387104),s=e.i(151201),a=e.i(93850),a=a,n=e.i(627580),n=n,o=e.i(860875),o=o;let i=(0,e.i(258114).default)("octagon-x",[["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"M2.586 16.726A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2h6.624a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586z",key:"2d38gg"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);var l=e.i(946665),l=l;e.s(["Toaster",0,({...e})=>{let{theme:c="system"}=(0,r.useTheme)();return(0,t.jsx)(s.Toaster,{theme:c,className:"toaster group",icons:{success:(0,t.jsx)(a.default,{className:"size-4"}),info:(0,t.jsx)(n.default,{className:"size-4"}),warning:(0,t.jsx)(o.default,{className:"size-4"}),error:(0,t.jsx)(i,{className:"size-4"}),loading:(0,t.jsx)(l.default,{className:"size-4 animate-spin"})},style:{"--normal-bg":"var(--popover)","--normal-text":"var(--popover-foreground)","--normal-border":"var(--border)","--border-radius":"var(--radius)"},toastOptions:{classNames:{toast:"cn-toast"}},...e})}],764878)}]);
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,251449,302320,e=>{"use strict";function t(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function r(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function n(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?r(Object(n),!0).forEach(function(t){var r,a;r=t,a=n[t],(r=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t);if("object"!=typeof n)return n;throw TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(r))in e?Object.defineProperty(e,r,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[r]=a}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):r(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function s(e){return function t(){for(var r=this,n=arguments.length,a=Array(n),i=0;i<n;i++)a[i]=arguments[i];return a.length>=e.length?e.apply(this,a):function(){for(var e=arguments.length,n=Array(e),i=0;i<e;i++)n[i]=arguments[i];return t.apply(r,[].concat(a,n))}}}function o(e){return({}).toString.call(e).includes("Object")}function c(e){return"function"==typeof e}var l,u,d=s(function(e,t){throw Error(e[t]||e.default)})({initialIsRequired:"initial state is required",initialType:"initial state should be an object",initialContent:"initial state shouldn't be an empty object",handlerType:"handler should be an object or a function",handlersType:"all handlers should be a functions",selectorType:"selector should be a function",changeType:"provided value of changes should be an object",changeField:'it seams you want to change a field in the state which is not specified in the "initial" state',default:"an unknown error accured in `state-local` package"}),f=function(e,t){return o(t)||d("changeType"),Object.keys(t).some(function(t){return!Object.prototype.hasOwnProperty.call(e,t)})&&d("changeField"),t},m=function(e){c(e)||d("selectorType")},h=function(e){c(e)||o(e)||d("handlerType"),o(e)&&Object.values(e).some(function(e){return!c(e)})&&d("handlersType")},x=function(e){e||d("initialIsRequired"),o(e)||d("initialType"),Object.keys(e).length||d("initialContent")};function g(e,t){return c(t)?t(e.current):t}function p(e,t){return e.current=i(i({},e.current),t),t}function v(e,t,r){return c(t)?t(e.current):Object.keys(r).forEach(function(r){var n;return null==(n=t[r])?void 0:n.call(t,e.current[r])}),r}var b={configIsRequired:"the configuration object is required",configType:"the configuration object should be an object",default:"an unknown error accured in `@monaco-editor/loader` package",deprecation:"Deprecation warning!\n You are using deprecated way of configuration.\n\n Instead of using\n monaco.config({ urls: { monacoBase: '...' } })\n use\n monaco.config({ paths: { vs: '...' } })\n\n For more please check the link https://github.com/suren-atoyan/monaco-loader#config\n "},y=(l=function(e,t){throw Error(e[t]||e.default)},function e(){for(var t=this,r=arguments.length,n=Array(r),a=0;a<r;a++)n[a]=arguments[a];return n.length>=l.length?l.apply(this,n):function(){for(var r=arguments.length,a=Array(r),i=0;i<r;i++)a[i]=arguments[i];return e.apply(t,[].concat(n,a))}})(b),j=function(e){return(e||y("configIsRequired"),({}).toString.call(e).includes("Object")||y("configType"),e.urls)?(console.warn(b.deprecation),{paths:{vs:e.urls.monacoBase}}):e},w=function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return function(e){return t.reduceRight(function(e,t){return t(e)},e)}},N={type:"cancelation",msg:"operation is manually canceled"};function k(e){var t=!1,r=new Promise(function(r,n){e.then(function(e){return t?n(N):r(e)}),e.catch(n)});return r.cancel=function(){return t=!0},r}var S=["monaco"],M=function(e){if(Array.isArray(e))return e}(u=({create:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};x(e),h(t);var r={current:e},n=s(v)(r,t),a=s(p)(r),i=s(f)(e),o=s(g)(r);return[function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(e){return e};return m(e),e(r.current)},function(e){(function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return function(e){return t.reduceRight(function(e,t){return t(e)},e)}})(n,a,i,o)(e)}]}}).create({config:{paths:{vs:"https://cdn.jsdelivr.net/npm/monaco-editor@0.55.1/min/vs"}},isInitialized:!1,resolve:null,reject:null,monaco:null}))||function(e){var t=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var r,n,a,i,s=[],o=!0,c=!1;try{a=(t=t.call(e)).next,!1;for(;!(o=(r=a.call(t)).done)&&(s.push(r.value),2!==s.length);o=!0);}catch(e){c=!0,n=e}finally{try{if(!o&&null!=t.return&&(i=t.return(),Object(i)!==i))return}finally{if(c)throw n}}return s}}(u)||function(e){if(e){if("string"==typeof e)return t(e,2);var r=({}).toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?t(e,2):void 0}}(u)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),C=M[0],O=M[1];function R(e){return document.body.appendChild(e)}function E(e){var t,r,n=C(function(e){return{config:e.config,reject:e.reject}}),a=(t="".concat(n.config.paths.vs,"/loader.js"),r=document.createElement("script"),t&&(r.src=t),r);return a.onload=function(){return e()},a.onerror=n.reject,a}function P(){var e=C(function(e){return{config:e.config,resolve:e.resolve,reject:e.reject}}),t=window.require;t.config(e.config),t(["vs/editor/editor.main"],function(t){var r=t.m||t;L(r),e.resolve(r)},function(t){e.reject(t)})}function L(e){C().monaco||O({monaco:e})}var T=new Promise(function(e,t){return O({resolve:e,reject:t})}),D={config:function(e){var t=j(e),r=t.monaco,a=function(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r={};for(var n in e)if(({}).hasOwnProperty.call(e,n)){if(-1!==t.indexOf(n))continue;r[n]=e[n]}return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],-1===t.indexOf(r)&&({}).propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}(t,S);O(function(e){return{config:function e(t,r){return Object.keys(r).forEach(function(n){r[n]instanceof Object&&t[n]&&Object.assign(r[n],e(t[n],r[n]))}),n(n({},t),r)}(e.config,a),monaco:r}})},init:function(){var e=C(function(e){return{monaco:e.monaco,isInitialized:e.isInitialized,resolve:e.resolve}});if(!e.isInitialized){if(O({isInitialized:!0}),e.monaco)return e.resolve(e.monaco),k(T);if(window.monaco&&window.monaco.editor)return L(window.monaco),e.resolve(window.monaco),k(T);w(R,E)(P)}return k(T)},__getMonacoInstance:function(){return C(function(e){return e.monaco})}};e.s(["default",0,D],302320);var A=e.i(641338),I={display:"flex",position:"relative",textAlign:"initial"},U={width:"100%"},z={display:"none"},F={display:"flex",height:"100%",width:"100%",justifyContent:"center",alignItems:"center"},B=function({children:e}){return A.default.createElement("div",{style:F},e)},$=(0,A.memo)(function({width:e,height:t,isEditorReady:r,loading:n,_ref:a,className:i,wrapperProps:s}){return A.default.createElement("section",{style:{...I,width:e,height:t},...s},!r&&A.default.createElement(B,null,n),A.default.createElement("div",{ref:a,style:{...U,...!r&&z},className:i}))}),V=function(e){(0,A.useEffect)(e,[])},q=function(e,t,r=!0){let n=(0,A.useRef)(!0);(0,A.useEffect)(n.current||!r?()=>{n.current=!1}:e,t)};function G(){}function W(e,t,r,n){var a,i,s,o,c,l;return a=e,i=n,a.editor.getModel(_(a,i))||(s=e,o=t,c=r,l=n,s.editor.createModel(o,c,l?_(s,l):void 0))}function _(e,t){return e.Uri.parse(t)}var H=(0,A.memo)(function({original:e,modified:t,language:r,originalLanguage:n,modifiedLanguage:a,originalModelPath:i,modifiedModelPath:s,keepCurrentOriginalModel:o=!1,keepCurrentModifiedModel:c=!1,theme:l="light",loading:u="Loading...",options:d={},height:f="100%",width:m="100%",className:h,wrapperProps:x={},beforeMount:g=G,onMount:p=G}){let[v,b]=(0,A.useState)(!1),[y,j]=(0,A.useState)(!0),w=(0,A.useRef)(null),N=(0,A.useRef)(null),k=(0,A.useRef)(null),S=(0,A.useRef)(p),M=(0,A.useRef)(g),C=(0,A.useRef)(!1);V(()=>{let e=D.init();return e.then(e=>(N.current=e)&&j(!1)).catch(e=>e?.type!=="cancelation"&&console.error("Monaco initialization: error:",e)),()=>{let t;return w.current?(t=w.current?.getModel(),void(o||t?.original?.dispose(),c||t?.modified?.dispose(),w.current?.dispose())):e.cancel()}}),q(()=>{if(w.current&&N.current){let t=w.current.getOriginalEditor(),a=W(N.current,e||"",n||r||"text",i||"");a!==t.getModel()&&t.setModel(a)}},[i],v),q(()=>{if(w.current&&N.current){let e=w.current.getModifiedEditor(),n=W(N.current,t||"",a||r||"text",s||"");n!==e.getModel()&&e.setModel(n)}},[s],v),q(()=>{let e=w.current.getModifiedEditor();e.getOption(N.current.editor.EditorOption.readOnly)?e.setValue(t||""):t!==e.getValue()&&(e.executeEdits("",[{range:e.getModel().getFullModelRange(),text:t||"",forceMoveMarkers:!0}]),e.pushUndoStop())},[t],v),q(()=>{w.current?.getModel()?.original.setValue(e||"")},[e],v),q(()=>{let{original:e,modified:t}=w.current.getModel();N.current.editor.setModelLanguage(e,n||r||"text"),N.current.editor.setModelLanguage(t,a||r||"text")},[r,n,a],v),q(()=>{N.current?.editor.setTheme(l)},[l],v),q(()=>{w.current?.updateOptions(d)},[d],v);let O=(0,A.useCallback)(()=>{if(!N.current)return;M.current(N.current);let o=W(N.current,e||"",n||r||"text",i||""),c=W(N.current,t||"",a||r||"text",s||"");w.current?.setModel({original:o,modified:c})},[r,t,a,e,n,i,s]),R=(0,A.useCallback)(()=>{!C.current&&k.current&&(w.current=N.current.editor.createDiffEditor(k.current,{automaticLayout:!0,...d}),O(),N.current?.editor.setTheme(l),b(!0),C.current=!0)},[d,l,O]);return(0,A.useEffect)(()=>{v&&S.current(w.current,N.current)},[v]),(0,A.useEffect)(()=>{y||v||R()},[y,v,R]),A.default.createElement($,{width:m,height:f,isEditorReady:v,loading:u,_ref:k,className:h,wrapperProps:x})}),J=function(e){let t=(0,A.useRef)();return(0,A.useEffect)(()=>{t.current=e},[e]),t.current},K=new Map,X=(0,A.memo)(function({defaultValue:e,defaultLanguage:t,defaultPath:r,value:n,language:a,path:i,theme:s="light",line:o,loading:c="Loading...",options:l={},overrideServices:u={},saveViewState:d=!0,keepCurrentModel:f=!1,width:m="100%",height:h="100%",className:x,wrapperProps:g={},beforeMount:p=G,onMount:v=G,onChange:b,onValidate:y=G}){let[j,w]=(0,A.useState)(!1),[N,k]=(0,A.useState)(!0),S=(0,A.useRef)(null),M=(0,A.useRef)(null),C=(0,A.useRef)(null),O=(0,A.useRef)(v),R=(0,A.useRef)(p),E=(0,A.useRef)(void 0),P=(0,A.useRef)(n),L=J(i),T=(0,A.useRef)(!1),I=(0,A.useRef)(!1);V(()=>{let e=D.init();return e.then(e=>(S.current=e)&&k(!1)).catch(e=>e?.type!=="cancelation"&&console.error("Monaco initialization: error:",e)),()=>M.current?void(E.current?.dispose(),f?d&&K.set(i,M.current.saveViewState()):M.current.getModel()?.dispose(),M.current.dispose(),M.current=null,T.current=!1,w(!1)):e.cancel()}),q(()=>{let s=W(S.current,e||n||"",t||a||"",i||r||"");s!==M.current?.getModel()&&(d&&K.set(L,M.current?.saveViewState()),M.current?.setModel(s),d&&M.current?.restoreViewState(K.get(i)))},[i],j),q(()=>{M.current?.updateOptions(l)},[l],j),q(()=>{M.current&&void 0!==n&&(M.current.getOption(S.current.editor.EditorOption.readOnly)?M.current.setValue(n):n!==M.current.getValue()&&(I.current=!0,M.current.executeEdits("",[{range:M.current.getModel().getFullModelRange(),text:n,forceMoveMarkers:!0}]),M.current.pushUndoStop(),I.current=!1))},[n],j),q(()=>{let e=M.current?.getModel();j&&e&&a&&S.current?.editor.setModelLanguage(e,a)},[a,j],j),q(()=>{void 0!==o&&M.current?.revealLine(o)},[o],j),q(()=>{S.current?.editor.setTheme(s)},[s],j);let U=(0,A.useCallback)(()=>{if(!(!C.current||!S.current)&&!T.current){R.current(S.current);let c=i||r,f=W(S.current,n||e||"",t||a||"",c||"");M.current=S.current?.editor.create(C.current,{model:f,automaticLayout:!0,...l},u),d&&M.current.restoreViewState(K.get(c)),S.current.editor.setTheme(s),void 0!==o&&M.current.revealLine(o),w(!0),T.current=!0}},[e,t,r,n,a,i,l,u,d,s,o]);return(0,A.useEffect)(()=>{j&&O.current(M.current,S.current)},[j]),(0,A.useEffect)(()=>{N||j||U()},[N,j,U]),P.current=n,(0,A.useEffect)(()=>{j&&b&&(E.current?.dispose(),E.current=M.current?.onDidChangeModelContent(e=>{I.current||b(M.current.getValue(),e)}))},[j,b]),(0,A.useEffect)(()=>{if(j){let e=S.current.editor.onDidChangeMarkers(e=>{let t=M.current.getModel()?.uri;if(t&&e.find(e=>e.path===t.path)){let e=S.current.editor.getModelMarkers({resource:t});y?.(e)}});return()=>{e?.dispose()}}return()=>{}},[j,y]),A.default.createElement($,{width:m,height:h,isEditorReady:j,loading:c,_ref:C,className:x,wrapperProps:g})});e.s(["DiffEditor",0,H,"Editor",0,X,"default",0,X,"useMonaco",0,function(){let[e,t]=(0,A.useState)(D.__getMonacoInstance());return V(()=>{let r;return e||(r=D.init()).then(e=>{t(e)}),()=>r?.cancel()}),e}],251449)},583315,e=>{"use strict";let t=(0,e.i(258114).default)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);e.s(["ArrowLeft",0,t],583315)},113205,e=>{"use strict";var t=e.i(430989),r=e.i(47816);e.s(["EmptyState",0,function({icon:e,title:n,description:a,action:i,className:s}){return(0,t.jsxs)("div",{className:(0,r.cn)("flex h-48 flex-col items-center justify-center gap-2 text-center",s),children:[e&&(0,t.jsx)(e,{className:"h-10 w-10 text-muted-foreground/40"}),(0,t.jsx)("p",{className:"text-sm font-medium text-muted-foreground",children:n}),a&&(0,t.jsx)("p",{className:"text-xs text-muted-foreground/60",children:a}),i&&(0,t.jsx)("div",{className:"mt-2",children:i})]})}])},2139,e=>{"use strict";let t=(0,e.i(258114).default)("circle-play",[["path",{d:"M9 9.003a1 1 0 0 1 1.517-.859l4.997 2.997a1 1 0 0 1 0 1.718l-4.997 2.997A1 1 0 0 1 9 14.996z",key:"kmsa83"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);e.s(["PlayCircle",0,t],2139)},653157,e=>{"use strict";let t=(0,e.i(258114).default)("eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);e.s(["Eye",0,t],653157)},111470,e=>{"use strict";var t=e.i(755683);let r=(0,t.createServerReference)("784ae1b90278fff4ac2f4d261a8f5298a3e7986b0a",t.callServer,void 0,t.findSourceMapURL,"startPtyExecution");e.s(["startPtyExecution",0,r])},681021,e=>{"use strict";var t=e.i(755683);let r=(0,t.createServerReference)("40d3c7de8b64ddb900e3f7ac46ac802673feb23198",t.callServer,void 0,t.findSourceMapURL,"stopPtyExecution");e.s(["stopPtyExecution",0,r])},481786,545315,e=>{"use strict";var t=e.i(755683);let r=(0,t.createServerReference)("607d47f7159f261048faf87ff026b8508d0239fdaa",t.callServer,void 0,t.findSourceMapURL,"resumePtyExecution");e.s(["resumePtyExecution",0,r],481786);let n=(0,e.i(258114).default)("rotate-ccw",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]]);e.s(["RotateCcw",0,n],545315)},256974,e=>{"use strict";var t=e.i(755683);let r=(0,t.createServerReference)("40501732ea446df50236c8eec161d0fa22375ef8db",t.callServer,void 0,t.findSourceMapURL,"openInTerminal");e.s(["openInTerminal",0,r])},849722,814121,327310,730984,846845,808246,240371,531723,436797,e=>{"use strict";var t=e.i(755683);let r=(0,t.createServerReference)("60203f8464f71f835fa0c7aea24f89c04d846c417a",t.callServer,void 0,t.findSourceMapURL,"listDirectory");e.s(["listDirectory",0,r],849722);let n=(0,t.createServerReference)("707293b7cd639d2a181551963b9e1b387cdcd20e64",t.callServer,void 0,t.findSourceMapURL,"getGitStatus");e.s(["getGitStatus",0,n],814121);let a=(0,t.createServerReference)("605d925686c6ab0560bb67dda69f4d70364e784cee",t.callServer,void 0,t.findSourceMapURL,"createFile");e.s(["createFile",0,a],327310);let i=(0,t.createServerReference)("60e4e7f53ae75eb6a626fdbbc4b371479b29fb9eb0",t.callServer,void 0,t.findSourceMapURL,"createDirectory");e.s(["createDirectory",0,i],730984);let s=(0,t.createServerReference)("70736c9ece34db9daa3639e21560c13dd43cf54836",t.callServer,void 0,t.findSourceMapURL,"renameEntry");e.s(["renameEntry",0,s],846845);let o=(0,t.createServerReference)("6085a3e2548ea2306c0a5fb125ea4da31854c43fc5",t.callServer,void 0,t.findSourceMapURL,"deleteEntry");e.s(["deleteEntry",0,o],808246);let c=(0,t.createServerReference)("40a296174ea48d9e38b684ac931876314af079eac8",t.callServer,void 0,t.findSourceMapURL,"listAllFiles");e.s(["listAllFiles",0,c],240371);let l=(0,t.createServerReference)("602bc85ea12826c838ddf574df8bb1cdc0fbc18c75",t.callServer,void 0,t.findSourceMapURL,"readFileContent");e.s(["readFileContent",0,l],531723);let u=(0,t.createServerReference)("70df9fa87c19ee1edbfba54ca7fad255c4021ca114",t.callServer,void 0,t.findSourceMapURL,"writeFileContent");e.s(["writeFileContent",0,u],436797)},174145,e=>{"use strict";var t=e.i(228202),r=e.i(703995),n=e.i(555138),a=e.i(47816);let i=(0,n.cva)("group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",secondary:"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",destructive:"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",outline:"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",ghost:"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",link:"text-primary underline-offset-4 hover:underline"}},defaultVariants:{variant:"default"}});e.s(["Badge",0,function({className:e,variant:n="default",render:s,...o}){var c;return c={defaultTagName:"span",props:(0,t.mergeProps)({className:(0,a.cn)(i({variant:n}),e)},o),render:s,state:{slot:"badge",variant:n}},(0,r.useRenderElement)(c.defaultTagName??"div",c,c)}],174145)},170528,581511,e=>{"use strict";var t=e.i(93850);e.s(["CheckCircle2",()=>t.default],170528);let r=(0,e.i(258114).default)("circle-x",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);e.s(["XCircle",0,r],581511)},678978,e=>{"use strict";let t=(0,e.i(258114).default)("terminal",[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]]);e.s(["Terminal",0,t],678978)},398965,e=>{"use strict";var t=e.i(755683);let r=(0,t.createServerReference)("408ea8569fbeb88bb94d6cfaa372c2c69cf2e78140",t.callServer,void 0,t.findSourceMapURL,"getPrompts");e.s(["getPrompts",0,r])},597736,e=>{"use strict";var t=e.i(794097);e.s(["ChevronRight",()=>t.default])},986633,e=>{"use strict";let t=(0,e.i(258114).default)("square",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]]);e.s(["Square",0,t],986633)},928951,e=>{"use strict";let t=(0,e.i(258114).default)("git-compare",[["circle",{cx:"18",cy:"18",r:"3",key:"1xkwt0"}],["circle",{cx:"6",cy:"6",r:"3",key:"1lh9wr"}],["path",{d:"M13 6h3a2 2 0 0 1 2 2v7",key:"1yeb86"}],["path",{d:"M11 18H8a2 2 0 0 1-2-2V9",key:"19pyzm"}]]);e.s(["GitCompare",0,t],928951)},421051,e=>{"use strict";var t=e.i(860875);e.s(["AlertTriangle",()=>t.default])},246762,960732,e=>{"use strict";var t=e.i(430989),r=e.i(641338),n=e.i(597736),a=e.i(260949),i=e.i(421051),s=e.i(928951),o=e.i(258114);let c=(0,o.default)("git-commit-horizontal",[["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}],["line",{x1:"3",x2:"9",y1:"12",y2:"12",key:"1dyftd"}],["line",{x1:"15",x2:"21",y1:"12",y2:"12",key:"oup4p8"}]]);var l=e.i(744838),u=e.i(113205),d=e.i(174145),f=e.i(331548),m=e.i(779574),h=e.i(349369);e.s(["TaskDiffView",0,function({files:e,totalAdded:o,totalRemoved:x,hasConflicts:g,conflictFiles:p,onCommit:v,hasUncommitted:b}){let{t:y}=(0,h.useI18n)(),[j,w]=(0,r.useState)(new Set),[N,k]=(0,r.useState)(!1),[S,M]=(0,r.useState)(""),[C,O]=(0,r.useState)(!1);return(0,t.jsxs)("div",{className:"flex flex-col h-full",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between border-b border-border px-4 py-3 flex-shrink-0",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3 text-sm text-muted-foreground",children:[(0,t.jsxs)("span",{className:"font-medium text-foreground",children:[e.length," files changed"]}),(0,t.jsxs)("span",{className:"text-green-400 font-mono text-xs",children:["+",o]}),(0,t.jsxs)("span",{className:"text-red-400 font-mono text-xs",children:["-",x]})]}),(0,t.jsx)("div",{className:"flex items-center gap-2",children:b&&v&&(0,t.jsxs)(l.Button,{variant:"outline",onClick:()=>k(!0),className:"gap-2",children:[(0,t.jsx)(c,{className:"h-4 w-4"}),y("diff.commit")]})})]}),g&&(0,t.jsxs)("div",{className:"flex flex-col gap-2 border-b border-border bg-amber-500/5 px-4 py-3 flex-shrink-0",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 text-amber-400",children:[(0,t.jsx)(i.AlertTriangle,{className:"h-4 w-4 flex-shrink-0"}),(0,t.jsxs)("span",{className:"text-sm font-medium",children:["Merge blocked: ",p.length," conflicting file",1!==p.length?"s":""]})]}),(0,t.jsx)("ul",{className:"ml-6 space-y-1",children:p.map(e=>(0,t.jsx)("li",{className:"text-xs font-mono text-amber-300/80",children:e},e))})]}),(0,t.jsx)("div",{className:"flex-1 overflow-auto",children:0===e.length?(0,t.jsx)(u.EmptyState,{icon:s.GitCompare,title:y("diff.noChanges"),className:"h-full"}):(0,t.jsx)("div",{className:"divide-y divide-border",children:e.map(e=>{let r=j.has(e.filename);return(0,t.jsxs)("div",{children:[(0,t.jsxs)(l.Button,{variant:"ghost",type:"button",onClick:()=>{var t;return t=e.filename,void w(e=>{let r=new Set(e);return r.has(t)?r.delete(t):r.add(t),r})},className:"flex w-full items-center gap-2 px-4 py-2.5 text-left hover:bg-accent/50 transition-colors rounded-none h-auto",children:[r?(0,t.jsx)(a.ChevronDown,{className:"h-3.5 w-3.5 flex-shrink-0 text-muted-foreground"}):(0,t.jsx)(n.ChevronRight,{className:"h-3.5 w-3.5 flex-shrink-0 text-muted-foreground"}),(0,t.jsx)("span",{className:"flex-1 truncate text-sm font-mono text-foreground",children:e.filename}),e.isBinary?(0,t.jsx)(d.Badge,{variant:"secondary",className:"text-[10px] bg-muted text-muted-foreground border border-border",children:"Binary"}):(0,t.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,t.jsxs)("span",{className:"text-xs font-mono text-green-400",children:["+",e.added]}),(0,t.jsxs)("span",{className:"text-xs font-mono text-red-400",children:["-",e.removed]})]})]}),r&&e.patch&&(0,t.jsx)("div",{className:"border-t border-border bg-background",children:(0,t.jsx)("pre",{className:"overflow-x-auto p-0 text-xs font-mono leading-5",children:e.patch.split("\n").map((e,r)=>{let n=e.startsWith("+")&&!e.startsWith("+++")?"px-4 block bg-green-500/10 text-green-400":e.startsWith("-")&&!e.startsWith("---")?"px-4 block bg-red-500/10 text-red-400":e.startsWith("@@")?"px-4 block bg-blue-500/10 text-blue-300":"px-4 block text-muted-foreground";return(0,t.jsx)("span",{className:n,children:e||" "},r)})})})]},e.filename)})})}),(0,t.jsx)(f.Dialog,{open:N,onOpenChange:k,children:(0,t.jsxs)(f.DialogContent,{className:"max-w-md",children:[(0,t.jsx)(f.DialogHeader,{children:(0,t.jsx)(f.DialogTitle,{children:y("diff.commitChanges")})}),(0,t.jsx)("div",{className:"flex flex-col gap-3",children:(0,t.jsx)(m.Textarea,{value:S,onChange:e=>M(e.target.value),placeholder:y("diff.commitMessagePlaceholder"),rows:5,className:"w-full rounded-md border border-border bg-background px-3 py-2 text-sm text-foreground placeholder-muted-foreground outline-none resize-y min-h-[80px]"})}),(0,t.jsxs)(f.DialogFooter,{children:[(0,t.jsx)(l.Button,{variant:"ghost",onClick:()=>k(!1),children:y("common.cancel")}),(0,t.jsx)(l.Button,{onClick:async()=>{if(S.trim()&&v){O(!0);try{await v(S.trim()),M(""),k(!1)}finally{O(!1)}}},disabled:!S.trim()||C,children:C?"...":y("diff.commit")})]})]})})]})}],246762);var x=e.i(347880);let g=(0,o.default)("git-merge",[["circle",{cx:"18",cy:"18",r:"3",key:"1xkwt0"}],["circle",{cx:"6",cy:"6",r:"3",key:"1lh9wr"}],["path",{d:"M6 21V9a9 9 0 0 0 9 9",key:"7kw0sc"}]]);var p=e.i(924609);e.s(["TaskMergeConfirmDialog",0,function({open:e,onOpenChange:n,taskId:a,taskTitle:i,baseBranch:s,fileCount:o,commitCount:c,commitLog:u=[],onMergeComplete:d}){let m=(0,x.useRouter)(),[h,v]=(0,r.useState)(!1),[b,y]=(0,r.useState)(null),j=async()=>{v(!0),y(null);try{let e=await fetch(`/api/tasks/${a}/merge`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({})});if(e.ok){n(!1),d(),m.refresh();return}let t=await e.json().catch(()=>({error:"Merge failed"}));409===e.status?y(`Merge conflicts detected: ${Array.isArray(t.conflictFiles)?t.conflictFiles.join(", "):"unknown files"}`):y(t.error??"Merge failed")}catch{y("Network error — merge failed")}finally{v(!1)}};return(0,t.jsx)(f.Dialog,{open:e,onOpenChange:n,children:(0,t.jsxs)(f.DialogContent,{showCloseButton:!0,className:"sm:max-w-md",children:[(0,t.jsx)(f.DialogHeader,{children:(0,t.jsxs)(f.DialogTitle,{className:"flex items-center gap-2",children:[(0,t.jsx)(g,{className:"h-4 w-4 text-emerald-400"}),"Confirm Merge"]})}),(0,t.jsxs)("div",{className:"space-y-3 py-2",children:[(0,t.jsxs)("div",{className:"rounded-lg border border-border bg-muted/30 p-3 space-y-2.5",children:[(0,t.jsxs)("div",{className:"flex items-start justify-between gap-4",children:[(0,t.jsx)("span",{className:"text-xs text-muted-foreground whitespace-nowrap",children:"Target branch"}),(0,t.jsx)("code",{className:"text-xs font-mono bg-muted px-2 py-0.5 rounded text-foreground",children:s})]}),(0,t.jsxs)("div",{className:"flex items-start justify-between gap-4",children:[(0,t.jsx)("span",{className:"text-xs text-muted-foreground whitespace-nowrap",children:"Changed files"}),(0,t.jsx)("span",{className:"text-xs font-medium text-foreground",children:o})]}),(0,t.jsxs)("div",{className:"flex items-start justify-between gap-4",children:[(0,t.jsx)("span",{className:"text-xs text-muted-foreground whitespace-nowrap",children:"Commits"}),(0,t.jsx)("span",{className:"text-xs font-medium text-foreground",children:c})]})]}),u.length>0&&(0,t.jsxs)("div",{children:[(0,t.jsx)("span",{className:"text-xs text-muted-foreground mb-1 block",children:"Commits"}),(0,t.jsx)("div",{className:"rounded-md border border-border bg-muted/30 p-2 space-y-1 max-h-32 overflow-y-auto",children:u.map((e,r)=>(0,t.jsx)("div",{className:"text-xs font-mono text-foreground/80",children:e},r))})]}),b&&(0,t.jsx)("div",{className:"rounded-lg border border-red-500/20 bg-red-500/10 px-3 py-2",children:(0,t.jsx)("p",{className:"text-xs text-red-400",children:b})})]}),(0,t.jsxs)(f.DialogFooter,{children:[(0,t.jsx)(l.Button,{variant:"outline",onClick:()=>n(!1),disabled:h,children:"Cancel"}),(0,t.jsx)(l.Button,{onClick:j,disabled:h,className:"gap-2",children:h?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(p.Loader2,{className:"h-4 w-4 animate-spin"}),"Merging..."]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(g,{className:"h-4 w-4"}),"Confirm Merge"]})})]})]})})}],960732)},121505,e=>{"use strict";let t=(0,e.i(258114).default)("arrow-up-from-line",[["path",{d:"m18 9-6-6-6 6",key:"kcunyi"}],["path",{d:"M12 3v14",key:"7cf3v8"}],["path",{d:"M5 21h14",key:"11awu3"}]]);e.s(["ArrowUpFromLine",0,t],121505)},775899,e=>{"use strict";var t=e.i(430989),r=e.i(641338),n=e.i(259104),a=e.i(260949),i=e.i(811163),s=e.i(698300),o=e.i(924609),c=e.i(331548),l=e.i(744838),u=e.i(745943),d=e.i(779574),f=e.i(349369);e.s(["CreateBranchDialog",0,function({open:e,onOpenChange:m,branches:h,currentBranch:x,localPath:g,onCreated:p,onError:v}){let{t:b}=(0,f.useI18n)(),[y,j]=(0,r.useState)(""),[w,N]=(0,r.useState)(x),[k,S]=(0,r.useState)(""),[M,C]=(0,r.useState)(!1),[O,R]=(0,r.useState)(""),[E,P]=(0,r.useState)(!1);(0,r.useEffect)(()=>{e&&(j(""),N(x),S(""),R(""))},[e,x]);let L=[...new Set(h)].filter(e=>e.toLowerCase().includes(O.toLowerCase())),T=async()=>{if(y.trim()){C(!0);try{let e=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"create-branch",path:g,branch:y.trim(),baseBranch:w})});if(e.ok)m(!1),p();else{let t=await e.json();v(t.error||"Unknown error")}}catch{v("Network error")}finally{C(!1)}}};return(0,t.jsx)(c.Dialog,{open:e,onOpenChange:m,children:(0,t.jsxs)(c.DialogContent,{className:"sm:max-w-sm",children:[(0,t.jsx)(c.DialogHeader,{children:(0,t.jsx)(c.DialogTitle,{children:b("git.createBranch")})}),(0,t.jsxs)("div",{className:"space-y-3 py-2",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:b("git.branchName")}),(0,t.jsx)(u.Input,{value:y,onChange:e=>j(e.target.value),placeholder:b("git.branchNamePlaceholder"),className:"mt-1.5 font-mono text-xs",onKeyDown:e=>"Enter"===e.key&&T()})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:b("git.baseBranch")}),(0,t.jsxs)("div",{className:"relative mt-1.5",children:[(0,t.jsxs)("button",{onClick:()=>P(!E),className:"flex w-full items-center justify-between rounded-lg border border-border bg-muted/50 px-3 py-2 text-left transition-colors hover:bg-accent",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(n.GitBranch,{className:"h-3 w-3 text-emerald-400"}),(0,t.jsx)("span",{className:"font-mono text-xs text-foreground",children:w})]}),(0,t.jsx)(a.ChevronDown,{className:`h-3 w-3 text-muted-foreground transition-transform ${E?"rotate-180":""}`})]}),E&&(0,t.jsxs)("div",{className:"absolute left-0 right-0 top-full z-20 mt-1 rounded-lg border border-border bg-popover shadow-xl",children:[(0,t.jsx)("div",{className:"border-b border-border p-1.5",children:(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)(i.Search,{className:"absolute left-2 top-1/2 -translate-y-1/2 h-3 w-3 text-muted-foreground"}),(0,t.jsx)("input",{value:O,onChange:e=>R(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,t.jsx)("div",{className:"max-h-40 overflow-auto py-1",children:L.map(e=>(0,t.jsxs)("button",{onClick:()=>{N(e),P(!1)},className:`flex w-full items-center gap-2 px-3 py-1.5 text-left transition-colors ${e===w?"bg-emerald-500/10 text-emerald-400":"text-secondary-foreground hover:bg-accent"}`,children:[(0,t.jsx)(n.GitBranch,{className:"h-3 w-3 shrink-0"}),(0,t.jsx)("span",{className:"truncate font-mono text-xs",children:e}),e===w&&(0,t.jsx)(s.Check,{className:"h-3 w-3 ml-auto shrink-0"})]},e))})]})]})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:b("git.branchDesc")}),(0,t.jsx)(d.Textarea,{value:k,onChange:e=>S(e.target.value),placeholder:b("git.branchDescPlaceholder"),rows:2,className:"mt-1.5 w-full rounded-md border border-border bg-background px-3 py-2 text-sm text-foreground placeholder-muted-foreground outline-none transition-colors focus:border-ring focus:ring-1 focus:ring-ring resize-none"})]})]}),(0,t.jsxs)(c.DialogFooter,{children:[(0,t.jsx)(l.Button,{variant:"outline",onClick:()=>m(!1),children:b("common.cancel")}),(0,t.jsxs)(l.Button,{onClick:T,disabled:!y.trim()||M,className:"bg-primary/10 text-primary ring-1 ring-primary/20 hover:bg-primary/15",children:[M?(0,t.jsx)(o.Loader2,{className:"h-3 w-3 animate-spin mr-1"}):null,b("common.create")]})]})]})})}])},426175,e=>{"use strict";async function t(e,r,n={}){let a=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:r,path:e,...n})});if(!a.ok)throw Error((await a.json()).error||`${r} failed`);return a.json()}e.s(["gitAction",0,t])},136591,e=>{"use strict";var t=e.i(755683);let r=(0,t.createServerReference)("600fac665056812ea5f79dbd12710695302158346f",t.callServer,void 0,t.findSourceMapURL,"updateProject");e.s(["updateProject",0,r])},442960,e=>{"use strict";var t=e.i(755683);let r=(0,t.createServerReference)("40f21730f368b920d8bd0817480ffbbc2b201c3e95",t.callServer,void 0,t.findSourceMapURL,"continueLatestPtyExecution");e.s(["continueLatestPtyExecution",0,r])},604324,e=>{"use strict";var t=e.i(755683);let r=(0,t.createServerReference)("4047135f0933191c5ee458162e6e6d92a29ed59f4b",t.callServer,void 0,t.findSourceMapURL,"getTaskExecutions");e.s(["getTaskExecutions",0,r])},34179,814986,14532,43108,e=>{"use strict";var t=e.i(755683);let r=(0,t.createServerReference)("60af9bb4c12c5ad908eb74c7d14f1d1f25baea4eab",t.callServer,void 0,t.findSourceMapURL,"updateTaskStatus");e.s(["updateTaskStatus",0,r],34179);let n=(0,t.createServerReference)("406a216a33797e8e8d95bd4b55e31a9e670f7acfe8",t.callServer,void 0,t.findSourceMapURL,"checkWorktreeClean");e.s(["checkWorktreeClean",0,n],814986);let a=(0,t.createServerReference)("60b2324a08134cea27b48821a7151f989d0f6a9fb0",t.callServer,void 0,t.findSourceMapURL,"commitWorktreeChanges");e.s(["commitWorktreeChanges",0,a],14532);let i=(0,e.i(258114).default)("clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 6v6l4 2",key:"mmk7yg"}]]);e.s(["Clock",0,i],43108)},586211,e=>{"use strict";let t=(0,e.i(258114).default)("lightbulb",[["path",{d:"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5",key:"1gvzjb"}],["path",{d:"M9 18h6",key:"x1upvd"}],["path",{d:"M10 22h4",key:"ceow96"}]]);e.s(["Lightbulb",0,t],586211)},711958,e=>{"use strict";var t=e.i(430989),r=e.i(641338),n=e.i(260949),a=e.i(569021),i=e.i(170528),s=e.i(581511),o=e.i(924609),c=e.i(43108),l=e.i(2139),u=e.i(545315),d=e.i(586211);let f=(0,e.i(258114).default)("history",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M12 7v5l4 2",key:"1fdv2h"}]]);var m=e.i(744838),h=e.i(113205),x=e.i(349369);function g({status:e}){switch(e){case"COMPLETED":return(0,t.jsx)(i.CheckCircle2,{className:"h-4 w-4 text-emerald-400"});case"FAILED":return(0,t.jsx)(s.XCircle,{className:"h-4 w-4 text-red-400"});case"RUNNING":return(0,t.jsx)(o.Loader2,{className:"h-4 w-4 text-blue-400 animate-spin"});default:return(0,t.jsx)(c.Clock,{className:"h-4 w-4 text-neutral-500"})}}e.s(["ExecutionTimeline",0,function({executions:e,onResume:i,onContinueLatest:s}){let{t:o,locale:c}=(0,x.useI18n)(),[p,v]=(0,r.useState)(null),[b,y]=(0,r.useState)(null);return 0===e.length?(0,t.jsx)(h.EmptyState,{icon:f,title:o("execution.noHistory")}):(0,t.jsxs)("div",{className:"space-y-2 p-3",children:[(0,t.jsx)("p",{className:"px-1 text-[11px] font-semibold uppercase tracking-wider text-muted-foreground",children:o("execution.history")}),e.map(r=>{let f=function(e){if(!e)return null;try{return JSON.parse(e)}catch{return null}}(r.gitStats??null),h=function(e,t){if(!e||!t)return"";let r=new Date(t).getTime()-new Date(e).getTime();if(r<0)return"";let n=Math.floor(r/1e3);if(n<60)return`${n}s`;let a=Math.floor(n/60);if(a<60)return`${a}m ${n%60}s`;let i=Math.floor(a/60);return`${i}h ${a%60}m`}(r.startedAt??null,r.endedAt??null),x=p===r.id;return(0,t.jsxs)("div",{className:"rounded-lg border border-border bg-background/50 overflow-hidden",children:[(0,t.jsxs)("div",{className:"p-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 text-xs",children:[(0,t.jsx)(g,{status:r.status}),(0,t.jsx)("span",{className:`font-medium ${function(e){switch(e){case"COMPLETED":return"text-emerald-400";case"FAILED":return"text-red-400";case"RUNNING":return"text-blue-400";default:return"text-neutral-400"}}(r.status)}`,children:function(e,t){switch(e){case"COMPLETED":return t("execution.success");case"FAILED":return t("execution.failed");case"RUNNING":return t("execution.running");default:return e}}(r.status,o)}),(0,t.jsx)("span",{className:"text-muted-foreground",children:function(e,t="zh"){if(!e)return"";let r=new Date(e),n=Math.floor((new Date().getTime()-r.getTime())/864e5),a="zh"===t?"zh-CN":"en-US",i=r.toLocaleTimeString(a,{hour:"2-digit",minute:"2-digit"});return 0===n?i:1===n?"zh"===t?`昨天 ${i}`:`Yesterday ${i}`:n<7?"zh"===t?`${n}天前 ${i}`:`${n}d ago ${i}`:r.toLocaleDateString(a,{month:"2-digit",day:"2-digit"})+" "+i}(r.startedAt??null,c)}),h&&(0,t.jsxs)("span",{className:"text-muted-foreground/60",children:["(",h,")"]})]}),(0,t.jsx)("p",{className:"mt-1.5 text-sm text-foreground/80 line-clamp-2",children:r.summary||o("execution.noSummary")}),f&&(f.commits||f.filesChanged)&&(0,t.jsxs)("div",{className:"mt-1.5 flex items-center gap-2 text-[11px] text-muted-foreground font-mono",children:[f.commits?(0,t.jsxs)("span",{children:[f.commits," ",o("execution.commits")]}):null,f.filesChanged?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{children:"·"}),(0,t.jsxs)("span",{children:[f.filesChanged," ",o("execution.files")]})]}):null,f.insertions||f.deletions?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{children:"·"}),f.insertions?(0,t.jsxs)("span",{className:"text-emerald-500",children:["+",f.insertions]}):null,f.deletions?(0,t.jsxs)("span",{className:"text-red-400",children:["-",f.deletions]}):null]}):null]}),r.insightNote&&(0,t.jsxs)("div",{className:"mt-2",children:[(0,t.jsxs)("button",{onClick:()=>y(b===r.id?null:r.id),className:"flex items-center gap-1.5 text-xs text-primary/90 hover:text-primary transition-colors",children:[(0,t.jsx)(d.Lightbulb,{className:"h-3.5 w-3.5"}),(0,t.jsxs)("span",{className:"font-medium",children:[o("execution.insight"),":"]}),(0,t.jsx)("span",{className:"text-foreground/70 truncate max-w-[200px]",children:r.insightNote.title}),b===r.id?(0,t.jsx)(a.ChevronUp,{className:"h-3 w-3"}):(0,t.jsx)(n.ChevronDown,{className:"h-3 w-3"})]}),b===r.id&&(0,t.jsx)("div",{className:"mt-2 rounded-md bg-primary/[0.06] border border-primary/10 p-3 text-xs text-foreground/80 whitespace-pre-wrap",children:r.insightNote.content})]}),(0,t.jsxs)("div",{className:"mt-2.5 flex items-center gap-2",children:[r.sessionId&&i?(0,t.jsxs)(m.Button,{size:"sm",onClick:()=>i(r.sessionId),className:"bg-primary/10 text-primary ring-1 ring-primary/20 hover:bg-primary/15",children:[(0,t.jsx)(l.PlayCircle,{className:"h-3.5 w-3.5"}),o("execution.resume")]}):!r.sessionId&&"FAILED"===r.status&&r.id===e[0]?.id&&s?(0,t.jsxs)(m.Button,{size:"sm",onClick:s,className:"bg-blue-500/15 text-blue-300 ring-1 ring-blue-500/20 hover:bg-blue-500/25",children:[(0,t.jsx)(u.RotateCcw,{className:"h-3.5 w-3.5"}),o("execution.tryRecover")]}):null,(0,t.jsxs)(m.Button,{variant:"ghost",size:"sm",onClick:()=>v(x?null:r.id),className:"bg-muted text-muted-foreground",children:[x?(0,t.jsx)(a.ChevronUp,{className:"h-3.5 w-3.5"}):(0,t.jsx)(n.ChevronDown,{className:"h-3.5 w-3.5"}),x?o("execution.collapse"):o("execution.details")]})]})]}),x&&(0,t.jsxs)("div",{className:"border-t border-border px-3 pb-3 space-y-3",children:[r.gitLog&&(0,t.jsxs)("div",{className:"mt-3",children:[(0,t.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-wider text-muted-foreground mb-1.5",children:o("execution.gitLog")}),(0,t.jsx)("pre",{className:"rounded-md bg-muted/50 p-2.5 text-xs font-mono text-foreground/70 overflow-x-auto whitespace-pre-wrap",children:r.gitLog.split("\n").slice(0,3).join("\n")})]}),r.terminalLog&&(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-wider text-muted-foreground mb-1.5",children:o("execution.terminalOutput")}),(0,t.jsx)("pre",{className:"rounded-md bg-[#0f1419] p-2.5 text-xs font-mono text-neutral-300 overflow-x-auto max-h-48 overflow-y-auto whitespace-pre-wrap",children:r.terminalLog})]}),"FAILED"===r.status&&null!=r.exitCode&&(0,t.jsxs)("p",{className:"text-xs text-red-400/70",children:["Exit code: ",r.exitCode]})]})]},r.id)})]})}],711958)},555273,e=>{e.v(t=>Promise.all(["static/chunks/0yz33_rbgu2sz.js"].map(t=>e.l(t))).then(()=>t(425393)))},286723,e=>{e.v(t=>Promise.all(["static/chunks/0tcl81ybuob5i.js"].map(t=>e.l(t))).then(()=>t(466255)))},885431,e=>{e.v(t=>Promise.all(["static/chunks/16w-ap~msrwpj.js"].map(t=>e.l(t))).then(()=>t(649318)))}]);