tower-studio 0.2.18 → 0.2.20

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 (366) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/build-manifest.json +3 -3
  3. package/.next/standalone/.next/prerender-manifest.json +3 -100
  4. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  5. package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
  6. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  7. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  8. package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  9. package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  10. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  11. package/.next/standalone/.next/server/app/_not-found/page/next-font-manifest.json +1 -1
  12. package/.next/standalone/.next/server/app/_not-found/page/react-loadable-manifest.json +1 -1
  13. package/.next/standalone/.next/server/app/_not-found/page/server-reference-manifest.json +40 -28
  14. package/.next/standalone/.next/server/app/_not-found/page.js +5 -4
  15. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  16. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  17. package/.next/standalone/.next/server/app/api/adapters/test/route.js.nft.json +1 -1
  18. package/.next/standalone/.next/server/app/api/browse-fs/route.js.nft.json +1 -1
  19. package/.next/standalone/.next/server/app/api/files/assets/[projectId]/[filename]/route.js.nft.json +1 -1
  20. package/.next/standalone/.next/server/app/api/git/route.js.nft.json +1 -1
  21. package/.next/standalone/.next/server/app/api/internal/assets/[projectId]/[filename]/route.js.nft.json +1 -1
  22. package/.next/standalone/.next/server/app/api/internal/assets/reveal/route.js.nft.json +1 -1
  23. package/.next/standalone/.next/server/app/api/internal/assistant/attachments/route.js.nft.json +1 -1
  24. package/.next/standalone/.next/server/app/api/internal/assistant/chat/route.js.nft.json +1 -1
  25. package/.next/standalone/.next/server/app/api/internal/assistant/route.js.nft.json +1 -1
  26. package/.next/standalone/.next/server/app/api/internal/assistant/sessions/route.js.nft.json +1 -1
  27. package/.next/standalone/.next/server/app/api/internal/backup/import/route.js.nft.json +1 -1
  28. package/.next/standalone/.next/server/app/api/internal/cache/[...segments]/route.js.nft.json +1 -1
  29. package/.next/standalone/.next/server/app/api/internal/hooks/install/route.js.nft.json +1 -1
  30. package/.next/standalone/.next/server/app/api/internal/hooks/stop/route.js.nft.json +1 -1
  31. package/.next/standalone/.next/server/app/api/internal/hooks/upload/route.js.nft.json +1 -1
  32. package/.next/standalone/.next/server/app/api/internal/monaco/[...path]/route.js.nft.json +1 -1
  33. package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/buffer/route.js.nft.json +1 -1
  34. package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/input/route.js.nft.json +1 -1
  35. package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/start/route.js.nft.json +1 -1
  36. package/.next/standalone/.next/server/app/api/tasks/[taskId]/diff/route.js.nft.json +1 -1
  37. package/.next/standalone/.next/server/app/api/tasks/[taskId]/merge/route.js.nft.json +1 -1
  38. package/.next/standalone/.next/server/app/missions/page/next-font-manifest.json +1 -1
  39. package/.next/standalone/.next/server/app/missions/page/react-loadable-manifest.json +1 -1
  40. package/.next/standalone/.next/server/app/missions/page/server-reference-manifest.json +87 -63
  41. package/.next/standalone/.next/server/app/missions/page.js +8 -6
  42. package/.next/standalone/.next/server/app/missions/page.js.nft.json +1 -1
  43. package/.next/standalone/.next/server/app/missions/page_client-reference-manifest.js +1 -1
  44. package/.next/standalone/.next/server/app/onboarding/page/next-font-manifest.json +1 -1
  45. package/.next/standalone/.next/server/app/onboarding/page/react-loadable-manifest.json +1 -1
  46. package/.next/standalone/.next/server/app/onboarding/page/server-reference-manifest.json +40 -28
  47. package/.next/standalone/.next/server/app/onboarding/page.js +5 -4
  48. package/.next/standalone/.next/server/app/onboarding/page.js.nft.json +1 -1
  49. package/.next/standalone/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  50. package/.next/standalone/.next/server/app/page/next-font-manifest.json +1 -1
  51. package/.next/standalone/.next/server/app/page/react-loadable-manifest.json +1 -1
  52. package/.next/standalone/.next/server/app/page/server-reference-manifest.json +40 -28
  53. package/.next/standalone/.next/server/app/page.js +5 -4
  54. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  55. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  56. package/.next/standalone/.next/server/app/settings/page/next-font-manifest.json +1 -1
  57. package/.next/standalone/.next/server/app/settings/page/react-loadable-manifest.json +1 -1
  58. package/.next/standalone/.next/server/app/settings/page/server-reference-manifest.json +56 -44
  59. package/.next/standalone/.next/server/app/settings/page.js +5 -4
  60. package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
  61. package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  62. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/archive/page/next-font-manifest.json +1 -1
  63. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/archive/page/react-loadable-manifest.json +1 -1
  64. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/archive/page/server-reference-manifest.json +99 -87
  65. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/archive/page.js +7 -5
  66. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/archive/page.js.nft.json +1 -1
  67. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/archive/page_client-reference-manifest.js +1 -1
  68. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/assets/page/next-font-manifest.json +1 -1
  69. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/assets/page/react-loadable-manifest.json +1 -1
  70. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/assets/page/server-reference-manifest.json +89 -77
  71. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/assets/page.js +7 -5
  72. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/assets/page.js.nft.json +1 -1
  73. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/assets/page_client-reference-manifest.js +1 -1
  74. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/notes/page/next-font-manifest.json +1 -1
  75. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/notes/page/react-loadable-manifest.json +1 -1
  76. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/notes/page/server-reference-manifest.json +74 -62
  77. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/notes/page.js +5 -4
  78. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/notes/page.js.nft.json +1 -1
  79. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/notes/page_client-reference-manifest.js +1 -1
  80. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/page/next-font-manifest.json +1 -1
  81. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/page/react-loadable-manifest.json +1 -1
  82. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/page/server-reference-manifest.json +87 -63
  83. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/page.js +8 -6
  84. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/page.js.nft.json +1 -1
  85. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/page_client-reference-manifest.js +1 -1
  86. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page/next-font-manifest.json +1 -1
  87. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page/react-loadable-manifest.json +1 -1
  88. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page/server-reference-manifest.json +40 -28
  89. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page.js +6 -5
  90. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page.js.nft.json +1 -1
  91. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page_client-reference-manifest.js +1 -1
  92. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/versions/page/next-font-manifest.json +1 -1
  93. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/versions/page/react-loadable-manifest.json +1 -1
  94. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/versions/page/server-reference-manifest.json +79 -67
  95. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/versions/page.js +7 -5
  96. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/versions/page.js.nft.json +1 -1
  97. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/versions/page_client-reference-manifest.js +1 -1
  98. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page/next-font-manifest.json +1 -1
  99. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page/react-loadable-manifest.json +2 -2
  100. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page/server-reference-manifest.json +108 -84
  101. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page.js +8 -6
  102. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page.js.nft.json +1 -1
  103. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page_client-reference-manifest.js +1 -1
  104. package/.next/standalone/.next/server/app/workspaces/page/next-font-manifest.json +1 -1
  105. package/.next/standalone/.next/server/app/workspaces/page/react-loadable-manifest.json +1 -1
  106. package/.next/standalone/.next/server/app/workspaces/page/server-reference-manifest.json +56 -44
  107. package/.next/standalone/.next/server/app/workspaces/page.js +5 -4
  108. package/.next/standalone/.next/server/app/workspaces/page.js.nft.json +1 -1
  109. package/.next/standalone/.next/server/app/workspaces/page_client-reference-manifest.js +1 -1
  110. package/.next/standalone/.next/server/chunks/0se9_next_dist_esm_build_templates_app-route_0hrprmi.js +2 -2
  111. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0-0gs-6._.js +1 -1
  112. package/.next/standalone/.next/server/chunks/[root-of-the-server]__03j20vp._.js +2 -2
  113. package/.next/standalone/.next/server/chunks/[root-of-the-server]__05se6yk._.js +1 -1
  114. package/.next/standalone/.next/server/chunks/[root-of-the-server]__06m1r8x._.js +1 -1
  115. package/.next/standalone/.next/server/chunks/[root-of-the-server]__09p152b._.js +1 -1
  116. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0_6swdz._.js +2 -2
  117. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0b-ib~7._.js +1 -1
  118. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0gmwjkc._.js +1 -1
  119. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0o3ggen._.js +5 -4
  120. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0wuzc5o._.js +1 -1
  121. package/.next/standalone/.next/server/chunks/[root-of-the-server]__12c9noi._.js +1 -1
  122. package/.next/standalone/.next/server/chunks/src_0bkvm8c._.js +1 -1
  123. package/.next/standalone/.next/server/chunks/src_lib_0aowbzy._.js +1 -1
  124. package/.next/standalone/.next/server/chunks/ssr/0iu._[workspaceId]_projects_[projectId]_versions_version-timeline-client_tsx_07o_kyi._.js +1 -1
  125. package/.next/standalone/.next/server/chunks/ssr/[externals]_@vscode_ripgrep_0m7itqb._.js +3 -0
  126. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0.hrt0s._.js +3 -0
  127. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0b~c--d._.js → [root-of-the-server]__01evhhc._.js} +1 -1
  128. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__02-6df-._.js +47 -0
  129. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0p4-t7d._.js → [root-of-the-server]__0261~vp._.js} +1 -1
  130. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__08mkpqd._.js +3 -0
  131. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__01vzmbg._.js → [root-of-the-server]__09rts_e._.js} +1 -1
  132. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0b.ej5q._.js +1 -1
  133. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0e_-mj-._.js +47 -0
  134. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0p_3kgh._.js → [root-of-the-server]__0eea3ta._.js} +1 -1
  135. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0eql-bn._.js → [root-of-the-server]__0f72pl_._.js} +2 -2
  136. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0fzkdjl._.js +47 -0
  137. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0jymb~t._.js +3 -0
  138. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0_0box3._.js → [root-of-the-server]__0la1659._.js} +1 -1
  139. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0jvh8f3._.js → [root-of-the-server]__0m1tg3c._.js} +1 -1
  140. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0ntdmyn._.js +3 -0
  141. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0t46zla._.js → [root-of-the-server]__0oqhxfb._.js} +1 -1
  142. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0pu-v0l._.js +47 -0
  143. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0lxcgi4._.js → [root-of-the-server]__0qy0o3-._.js} +1 -1
  144. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0sc_a_d._.js +30 -0
  145. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__06lecy.._.js → [root-of-the-server]__0sdd0qu._.js} +1 -1
  146. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__10t-oa1._.js → [root-of-the-server]__0th0_fo._.js} +4 -4
  147. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0edxb4j._.js → [root-of-the-server]__0ty1ao1._.js} +2 -2
  148. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0um1ugs._.js +47 -0
  149. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0wt83kv._.js +1 -1
  150. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0y.2qv_._.js → [root-of-the-server]__0z7je5_._.js} +3 -3
  151. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0zq.n2w._.js +30 -0
  152. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__11zjs~k._.js +1 -1
  153. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0zhkbm~._.js → [root-of-the-server]__12ktvsa._.js} +1 -1
  154. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0fvk61p._.js → [root-of-the-server]__13374-3._.js} +1 -1
  155. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__134_xv.._.js +3 -0
  156. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__13vgkq5._.js +47 -0
  157. package/.next/standalone/.next/server/chunks/ssr/{_0-m6pij._.js → _0-ez10.._.js} +1 -1
  158. package/.next/standalone/.next/server/chunks/ssr/_0-zk1xq._.js +3 -0
  159. package/.next/standalone/.next/server/chunks/ssr/{_0r2el9k._.js → _0574rlr._.js} +1 -1
  160. package/.next/standalone/.next/server/chunks/ssr/_06-jig2._.js +3 -0
  161. package/.next/standalone/.next/server/chunks/ssr/_07~q7qs._.js +3 -0
  162. package/.next/standalone/.next/server/chunks/ssr/{_0wk5s-y._.js → _08z-g~5._.js} +4 -4
  163. package/.next/standalone/.next/server/chunks/ssr/_09b8zgw._.js +4 -0
  164. package/.next/standalone/.next/server/chunks/ssr/_0_2c7e0._.js +3 -0
  165. package/.next/standalone/.next/server/chunks/ssr/{_05qfznq._.js → _0_vjay8._.js} +4 -4
  166. package/.next/standalone/.next/server/chunks/ssr/_0cj9a7y._.js +2 -2
  167. package/.next/standalone/.next/server/chunks/ssr/_0es22_y._.js +3 -0
  168. package/.next/standalone/.next/server/chunks/ssr/_0fhds8v._.js +3 -0
  169. package/.next/standalone/.next/server/chunks/ssr/_0jg.s-g._.js +1 -1
  170. package/.next/standalone/.next/server/chunks/ssr/{_0~dc49z._.js → _0kef0v6._.js} +1 -1
  171. package/.next/standalone/.next/server/chunks/ssr/_0ln8vj0._.js +7 -0
  172. package/.next/standalone/.next/server/chunks/ssr/_0mqxe~e._.js +3 -0
  173. package/.next/standalone/.next/server/chunks/ssr/{_0gy-1oc._.js → _0nbufo.._.js} +1 -1
  174. package/.next/standalone/.next/server/chunks/ssr/_0ng0eku._.js +1 -1
  175. package/.next/standalone/.next/server/chunks/ssr/_0nzwk2y._.js +7 -0
  176. package/.next/standalone/.next/server/chunks/ssr/{_0f2quba._.js → _0qkxdkn._.js} +1 -1
  177. package/.next/standalone/.next/server/chunks/ssr/{_00vtpb1._.js → _0r6gweb._.js} +4 -4
  178. package/.next/standalone/.next/server/chunks/ssr/_0rdyrfd._.js +1 -1
  179. package/.next/standalone/.next/server/chunks/ssr/{_0mg_44.._.js → _0rqf5w7._.js} +1 -1
  180. package/.next/standalone/.next/server/chunks/ssr/{_0lgx4c3._.js → _0rt8jf_._.js} +4 -4
  181. package/.next/standalone/.next/server/chunks/ssr/{_0s58zbp._.js → _0sbxdnc._.js} +1 -1
  182. package/.next/standalone/.next/server/chunks/ssr/_0tua.9p._.js +3 -0
  183. package/.next/standalone/.next/server/chunks/ssr/_0ueyys5._.js +1 -1
  184. package/.next/standalone/.next/server/chunks/ssr/_0unw1fq._.js +2 -2
  185. package/.next/standalone/.next/server/chunks/ssr/{_0y3bnq6._.js → _0uuzh5m._.js} +4 -4
  186. package/.next/standalone/.next/server/chunks/ssr/_0z-mopi._.js +3 -0
  187. package/.next/standalone/.next/server/chunks/ssr/{_0m2o_3.._.js → _0~aon4t._.js} +4 -4
  188. package/.next/standalone/.next/server/chunks/ssr/_10sx3n7._.js +7 -0
  189. package/.next/standalone/.next/server/chunks/ssr/_12e_1hd._.js +3 -0
  190. package/.next/standalone/.next/server/chunks/ssr/_13esy08._.js +3 -0
  191. package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_0hhlpw6._.js +3 -0
  192. package/.next/standalone/.next/server/chunks/ssr/src_075s.rk._.js +3 -0
  193. package/.next/standalone/.next/server/chunks/ssr/src_0djxlqx._.js +3 -0
  194. package/.next/standalone/.next/server/chunks/ssr/src_0eufeyj._.js +1 -1
  195. package/.next/standalone/.next/server/chunks/ssr/src_actions_agent-actions_ts_0~wc.sy._.js +1 -1
  196. package/.next/standalone/.next/server/chunks/ssr/src_actions_file-actions_ts_0gcvqwm._.js +1 -1
  197. package/.next/standalone/.next/server/chunks/ssr/src_app_missions_missions-client_tsx_11429lj._.js +1 -1
  198. package/.next/standalone/.next/server/chunks/ssr/src_app_onboarding_page_tsx_0xf7hpz._.js +1 -1
  199. package/.next/standalone/.next/server/chunks/ssr/src_app_settings_page_tsx_0h9v7dr._.js +1 -1
  200. package/.next/standalone/.next/server/chunks/ssr/src_app_workspaces_[workspaceId]_assets_assets-page-client_tsx_0wyzpam._.js +1 -1
  201. package/.next/standalone/.next/server/chunks/ssr/src_app_workspaces_[workspaceId]_board-page-client_tsx_0gips66._.js +1 -1
  202. package/.next/standalone/.next/server/chunks/ssr/src_app_workspaces_[workspaceId]_tasks_[taskId]_task-page-client_tsx_02t7blt._.js +1 -1
  203. package/.next/standalone/.next/server/chunks/ssr/{src_lib_0.e1lk4._.js → src_lib_00tdjs9._.js} +1 -1
  204. package/.next/standalone/.next/server/chunks/ssr/{src_lib_08rw1cx._.js → src_lib_0153vha._.js} +1 -1
  205. package/.next/standalone/.next/server/chunks/ssr/{src_lib_0a3sg-k._.js → src_lib_07bxr4y._.js} +1 -1
  206. package/.next/standalone/.next/server/chunks/ssr/{src_lib_0hddinr._.js → src_lib_0dnn~ft._.js} +1 -1
  207. package/.next/standalone/.next/server/chunks/ssr/src_lib_0e.v07~._.js +3 -0
  208. package/.next/standalone/.next/server/chunks/ssr/src_lib_0haj7_-._.js +3 -0
  209. package/.next/standalone/.next/server/chunks/ssr/src_lib_0vp4mgz._.js +3 -0
  210. package/.next/standalone/.next/server/chunks/ssr/src_lib_0wd-1.k._.js +3 -0
  211. package/.next/standalone/.next/server/chunks/ssr/src_lib_0yvdojq._.js +3 -0
  212. package/.next/standalone/.next/server/chunks/ssr/src_lib_0zfjhu1._.js +3 -0
  213. package/.next/standalone/.next/server/chunks/ssr/src_lib_0~cwhiw._.js +3 -0
  214. package/.next/standalone/.next/server/chunks/ssr/src_lib_127qa83._.js +3 -0
  215. package/.next/standalone/.next/server/chunks/ssr/src_lib_12h5txa._.js +3 -0
  216. package/.next/standalone/.next/server/chunks/ssr/src_lib_worktree_ts_06cucy3._.js +1 -1
  217. package/.next/standalone/.next/server/functions-config-manifest.json +10 -1
  218. package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
  219. package/.next/standalone/.next/server/next-font-manifest.js +1 -1
  220. package/.next/standalone/.next/server/next-font-manifest.json +13 -13
  221. package/.next/standalone/.next/server/pages/500.html +1 -1
  222. package/.next/standalone/.next/server/pages-manifest.json +0 -1
  223. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  224. package/.next/standalone/.next/server/server-reference-manifest.json +343 -235
  225. package/.next/standalone/.next/static/chunks/0-93a_ovah-e0.js +5 -0
  226. package/.next/standalone/.next/static/chunks/0.rw..0v.8a1-.js +5 -0
  227. package/.next/standalone/.next/static/chunks/{08x.ru6r_rz3k.js → 05qdpgnpb_7mk.js} +1 -1
  228. package/.next/standalone/.next/static/chunks/{123doanyjnwwq.css → 066jf0nk75nic.css} +1 -1
  229. package/.next/standalone/.next/static/chunks/{0_we-0tskn.or.js → 08q54xdtb58sp.js} +1 -1
  230. package/.next/standalone/.next/static/chunks/08rokhw7bg_zn.js +1 -0
  231. package/.next/standalone/.next/static/chunks/0bxz4rml4iaob.js +1 -0
  232. package/.next/standalone/.next/static/chunks/0gh2r0ji~m34y.js +1 -0
  233. package/.next/standalone/.next/static/chunks/0j157xr-bax~d.js +1 -0
  234. package/.next/standalone/.next/static/chunks/0m2o51rtidmxh.js +1 -0
  235. package/.next/standalone/.next/static/chunks/0m90vde-l0h1a.js +2 -0
  236. package/.next/standalone/.next/static/chunks/0mqdumoz_frlg.js +2 -0
  237. package/.next/standalone/.next/static/chunks/0odb2p6e7-8n8.js +1 -0
  238. package/.next/standalone/.next/static/chunks/0okjtk-a.5lz0.css +1 -0
  239. package/.next/standalone/.next/static/chunks/0t0.k0pugrmxt.js +1 -0
  240. package/.next/standalone/.next/static/chunks/0vykez3mijj6f.js +1 -0
  241. package/.next/standalone/.next/static/chunks/{15ugy0vmnfdus.js → 0wzn4nbo56gf3.js} +1 -1
  242. package/.next/standalone/.next/static/chunks/0xrhj92idqx72.js +5 -0
  243. package/.next/standalone/.next/static/chunks/0yj4qfp~pk5na.js +1 -0
  244. package/.next/standalone/.next/static/chunks/0yje2relcvr6r.js +1 -0
  245. package/.next/standalone/.next/static/chunks/0zk-aoc.g8t8h.js +1 -0
  246. package/.next/standalone/.next/static/chunks/0~7zlta-boej_.js +1 -0
  247. package/.next/standalone/.next/static/chunks/{1634ulzz-40pw.js → 1157qwl1lq-uv.js} +1 -1
  248. package/.next/standalone/.next/static/chunks/116ssnh5k8ad9.js +1 -0
  249. package/.next/standalone/.next/static/chunks/11~-fm76bj3r4.js +1 -0
  250. package/.next/standalone/.next/static/chunks/13wlh1lxhudv~.js +1 -0
  251. package/.next/standalone/.next/static/chunks/15nh9t21_9u6i.js +1 -0
  252. package/.next/standalone/.next/static/chunks/163o-5kdc6me5.js +1 -0
  253. package/.next/standalone/.next/static/chunks/16pnb9m-vqs75.js +5 -0
  254. package/.next/standalone/.next/static/chunks/18aqm8uawnpl3.js +1 -0
  255. package/.next/standalone/.next/static/media/4fa387ec64143e14-s.0wkzw~je483f-.woff2 +0 -0
  256. package/.next/standalone/.next/static/media/5ce348bf30bf5439-s.0zgw-jeven.3w.woff2 +0 -0
  257. package/.next/standalone/.next/static/media/6306c77e7c8268e4-s.0rhz0arwfsn~5.woff2 +0 -0
  258. package/.next/standalone/.next/static/media/797e433ab948586e-s.p.08e28id.o-okb.woff2 +0 -0
  259. package/.next/standalone/.next/static/media/7d817b4c03b0c5f1-s.0l76wvqk9d84w.woff2 +0 -0
  260. package/.next/standalone/.next/static/media/bbc41e54d2fcbd21-s.0k4k9394f2q-k.woff2 +0 -0
  261. package/.next/standalone/package.json +2 -1
  262. package/dist/mcp-server.cjs +97 -28
  263. package/package.json +2 -1
  264. package/prisma/schema.prisma +1 -0
  265. package/scripts/fix-native-permissions.js +7 -0
  266. package/skills/tower/SKILL.md +12 -5
  267. package/.next/standalone/.next/server/app/_not-found.html +0 -1
  268. package/.next/standalone/.next/server/app/_not-found.meta +0 -16
  269. package/.next/standalone/.next/server/app/_not-found.rsc +0 -25
  270. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +0 -25
  271. package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +0 -6
  272. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +0 -13
  273. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +0 -5
  274. package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +0 -5
  275. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +0 -4
  276. package/.next/standalone/.next/server/app/index.html +0 -1
  277. package/.next/standalone/.next/server/app/index.meta +0 -16
  278. package/.next/standalone/.next/server/app/index.rsc +0 -26
  279. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +0 -6
  280. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +0 -26
  281. package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +0 -6
  282. package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +0 -13
  283. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +0 -6
  284. package/.next/standalone/.next/server/app/onboarding.html +0 -1
  285. package/.next/standalone/.next/server/app/onboarding.meta +0 -15
  286. package/.next/standalone/.next/server/app/onboarding.rsc +0 -31
  287. package/.next/standalone/.next/server/app/onboarding.segments/_full.segment.rsc +0 -31
  288. package/.next/standalone/.next/server/app/onboarding.segments/_head.segment.rsc +0 -6
  289. package/.next/standalone/.next/server/app/onboarding.segments/_index.segment.rsc +0 -13
  290. package/.next/standalone/.next/server/app/onboarding.segments/_tree.segment.rsc +0 -6
  291. package/.next/standalone/.next/server/app/onboarding.segments/onboarding/__PAGE__.segment.rsc +0 -9
  292. package/.next/standalone/.next/server/app/onboarding.segments/onboarding.segment.rsc +0 -5
  293. package/.next/standalone/.next/server/app/settings.html +0 -1
  294. package/.next/standalone/.next/server/app/settings.meta +0 -15
  295. package/.next/standalone/.next/server/app/settings.rsc +0 -31
  296. package/.next/standalone/.next/server/app/settings.segments/_full.segment.rsc +0 -31
  297. package/.next/standalone/.next/server/app/settings.segments/_head.segment.rsc +0 -6
  298. package/.next/standalone/.next/server/app/settings.segments/_index.segment.rsc +0 -13
  299. package/.next/standalone/.next/server/app/settings.segments/_tree.segment.rsc +0 -6
  300. package/.next/standalone/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +0 -9
  301. package/.next/standalone/.next/server/app/settings.segments/settings.segment.rsc +0 -5
  302. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__06.muv_._.js +0 -3
  303. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__083ia54._.js +0 -3
  304. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0ad6qqx._.js +0 -3
  305. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0cylhkc._.js +0 -3
  306. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0hv-2bi._.js +0 -3
  307. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0hvqdy.._.js +0 -47
  308. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0jg4u05._.js +0 -3
  309. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0k.hmw2._.js +0 -3
  310. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0ugi0gk._.js +0 -3
  311. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0z50.82._.js +0 -30
  312. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__11_h9vs._.js +0 -3
  313. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__12so59v._.js +0 -30
  314. package/.next/standalone/.next/server/chunks/ssr/_0.3p35c._.js +0 -3
  315. package/.next/standalone/.next/server/chunks/ssr/_059-b~p._.js +0 -3
  316. package/.next/standalone/.next/server/chunks/ssr/_0_z.pz4._.js +0 -3
  317. package/.next/standalone/.next/server/chunks/ssr/_0acdkk1._.js +0 -4
  318. package/.next/standalone/.next/server/chunks/ssr/_0i8t39l._.js +0 -3
  319. package/.next/standalone/.next/server/chunks/ssr/_0j7t3m6._.js +0 -7
  320. package/.next/standalone/.next/server/chunks/ssr/_0lwcwkm._.js +0 -3
  321. package/.next/standalone/.next/server/chunks/ssr/_0rb.w9u._.js +0 -7
  322. package/.next/standalone/.next/server/chunks/ssr/_0tr1l6m._.js +0 -3
  323. package/.next/standalone/.next/server/chunks/ssr/_0uj61lm._.js +0 -3
  324. package/.next/standalone/.next/server/chunks/ssr/_0yt~8-p._.js +0 -7
  325. package/.next/standalone/.next/server/chunks/ssr/_112.xs5._.js +0 -3
  326. package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_0lqfvhm._.js +0 -3
  327. package/.next/standalone/.next/server/chunks/ssr/src_lib_0hysyqq._.js +0 -3
  328. package/.next/standalone/.next/server/chunks/ssr/src_lib_0mre0hs._.js +0 -3
  329. package/.next/standalone/.next/server/chunks/ssr/src_lib_0nokg1l._.js +0 -3
  330. package/.next/standalone/.next/server/chunks/ssr/src_lib_0occbql._.js +0 -3
  331. package/.next/standalone/.next/server/chunks/ssr/src_lib_0q1is-3._.js +0 -3
  332. package/.next/standalone/.next/server/chunks/ssr/src_lib_0s.1_50._.js +0 -3
  333. package/.next/standalone/.next/server/chunks/ssr/src_lib_0uof9w0._.js +0 -3
  334. package/.next/standalone/.next/server/chunks/ssr/src_lib_0y99vkm._.js +0 -3
  335. package/.next/standalone/.next/server/chunks/ssr/src_lib_119inue._.js +0 -3
  336. package/.next/standalone/.next/server/pages/404.html +0 -1
  337. package/.next/standalone/.next/static/chunks/0-7jzlr9x_qsk.js +0 -5
  338. package/.next/standalone/.next/static/chunks/0.rmtqo0qf0kf.js +0 -1
  339. package/.next/standalone/.next/static/chunks/00nc85hwc2xj-.js +0 -1
  340. package/.next/standalone/.next/static/chunks/02rmsyvjctps8.js +0 -1
  341. package/.next/standalone/.next/static/chunks/03pleaq9wzi71.js +0 -1
  342. package/.next/standalone/.next/static/chunks/053~sxv8~uet5.js +0 -1
  343. package/.next/standalone/.next/static/chunks/0_._lea4kj-kf.js +0 -1
  344. package/.next/standalone/.next/static/chunks/0gs_-avkejs0n.js +0 -1
  345. package/.next/standalone/.next/static/chunks/0k65.io~ia9.a.js +0 -2
  346. package/.next/standalone/.next/static/chunks/0m-4oc7p23~5d.js +0 -5
  347. package/.next/standalone/.next/static/chunks/0o11wn9vopcqg.js +0 -1
  348. package/.next/standalone/.next/static/chunks/0qc~i8~pr2lr_.js +0 -2
  349. package/.next/standalone/.next/static/chunks/0v_-pz~6z5kwy.js +0 -1
  350. package/.next/standalone/.next/static/chunks/0y42pxoc9pqth.js +0 -1
  351. package/.next/standalone/.next/static/chunks/0y4t-yk9428ag.js +0 -1
  352. package/.next/standalone/.next/static/chunks/0z.p-s6d729o-.js +0 -1
  353. package/.next/standalone/.next/static/chunks/0~8mebeyo5uub.css +0 -1
  354. package/.next/standalone/.next/static/chunks/10_jn899omgp~.js +0 -1
  355. package/.next/standalone/.next/static/chunks/142u31.7x80ux.js +0 -5
  356. package/.next/standalone/.next/static/chunks/14ffa1fe.zktf.js +0 -5
  357. package/.next/standalone/.next/static/chunks/187ga_8mny0dq.js +0 -1
  358. package/.next/standalone/.next/static/media/4fa387ec64143e14-s.0.qu-9752pffj.woff2 +0 -0
  359. package/.next/standalone/.next/static/media/5ce348bf30bf5439-s.0ee55_hj9qcer.woff2 +0 -0
  360. package/.next/standalone/.next/static/media/6306c77e7c8268e4-s.0mao5jbfbduzp.woff2 +0 -0
  361. package/.next/standalone/.next/static/media/797e433ab948586e-s.p.09zddjkbdep5a.woff2 +0 -0
  362. package/.next/standalone/.next/static/media/7d817b4c03b0c5f1-s.0uzt.a6d44yda.woff2 +0 -0
  363. package/.next/standalone/.next/static/media/bbc41e54d2fcbd21-s.0mvwgmnhv29no.woff2 +0 -0
  364. /package/.next/standalone/.next/static/{dUfkElN2NF1kYx7TqxHtX → QK0JGDY3UZSvD1SQgyL-w}/_buildManifest.js +0 -0
  365. /package/.next/standalone/.next/static/{dUfkElN2NF1kYx7TqxHtX → QK0JGDY3UZSvD1SQgyL-w}/_clientMiddlewareManifest.js +0 -0
  366. /package/.next/standalone/.next/static/{dUfkElN2NF1kYx7TqxHtX → QK0JGDY3UZSvD1SQgyL-w}/_ssgManifest.js +0 -0
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,783426,e=>{"use strict";var t=e.i(289721),s=e.i(965652),a=e.i(538059),r=e.i(340966),n=e.i(572989);let l=(0,n.default)("zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]);var i=e.i(486077),o=e.i(533499);function c({totalTasks:e,runningTasks:s}){let{t:a}=(0,o.useI18n)();return(0,t.jsxs)("div",{className:"grid grid-cols-3 gap-3 px-6 py-4",children:[(0,t.jsx)("div",{className:"rounded-xl border border-border bg-card p-4",children:(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("div",{className:"rounded-lg bg-sky-500/10 p-2 ring-1 ring-sky-500/20",children:(0,t.jsx)(r.ClipboardList,{className:"h-4 w-4 text-sky-400"})}),(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"text-[11px] font-medium uppercase tracking-wider text-muted-foreground",children:a("board.overview")}),(0,t.jsx)("p",{className:"text-2xl font-bold font-mono tracking-tight text-foreground",children:e})]})]})}),(0,t.jsx)("div",{className:"rounded-xl border border-border bg-card p-4",children:(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("div",{className:"rounded-lg bg-primary/10 p-2 ring-1 ring-primary/20",children:(0,t.jsx)(l,{className:"h-4 w-4 text-primary"})}),(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"text-[11px] font-medium uppercase tracking-wider text-muted-foreground",children:a("board.running")}),(0,t.jsx)("p",{className:"text-2xl font-bold font-mono tracking-tight text-foreground",children:s})]})]})}),(0,t.jsx)("div",{className:"rounded-xl border border-border bg-card p-4",children:(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("div",{className:"rounded-lg bg-emerald-500/10 p-2 ring-1 ring-emerald-500/20",children:(0,t.jsx)(i.Lightbulb,{className:"h-4 w-4 text-emerald-400"})}),(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"text-[11px] font-medium uppercase tracking-wider text-muted-foreground",children:a("board.tip")}),(0,t.jsx)("p",{className:"text-xs font-medium text-foreground/80",children:a("board.tipText")})]})]})})]})}var d=e.i(210702),m=e.i(232545),x=e.i(738690),u=e.i(226145),h=e.i(519455),p=e.i(793479),g=e.i(918385);function f({searchQuery:e,onSearchChange:s,versions:a=[],versionFilter:r="all",onVersionFilterChange:n,versionsHref:l,onCreateTask:i}){let c,{t:j}=(0,o.useI18n)(),b="all"===r?j("board.allVersions"):"backlog"===r?j("board.backlogFilter"):(c=a.find(e=>e.id===r))?`${c.number} ${c.name}`:j("board.allVersions");return(0,t.jsxs)("div",{className:"flex items-center gap-2 px-6 py-2",children:[n&&(0,t.jsxs)(g.Select,{value:r,onValueChange:e=>n(e||"all"),children:[(0,t.jsxs)(g.SelectTrigger,{className:"h-8 w-44 shrink-0 gap-1.5 text-xs text-muted-foreground",children:[(0,t.jsx)(u.GitBranch,{className:"h-3.5 w-3.5 shrink-0"}),(0,t.jsx)("span",{className:"truncate",children:b})]}),(0,t.jsxs)(g.SelectContent,{children:[(0,t.jsx)(g.SelectItem,{value:"all",children:j("board.allVersions")}),(0,t.jsx)(g.SelectItem,{value:"backlog",children:j("board.backlogFilter")}),a.map(e=>(0,t.jsxs)(g.SelectItem,{value:e.id,children:[(0,t.jsx)("span",{className:"font-mono",children:e.number})," ",e.name]},e.id))]})]}),(0,t.jsxs)("div",{className:"relative flex-1 max-w-xs",children:[(0,t.jsx)(x.Search,{className:"absolute left-2.5 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-muted-foreground"}),(0,t.jsx)(p.Input,{type:"text",value:e,onChange:e=>s(e.target.value),placeholder:j("board.searchPlaceholder"),className:"pl-8 pr-3 text-xs"})]}),(0,t.jsxs)("div",{className:"ml-auto flex items-center gap-2",children:[l&&(0,t.jsx)(d.default,{href:l,children:(0,t.jsxs)(h.Button,{variant:"outline",className:"h-8 gap-1.5 text-xs text-muted-foreground",children:[(0,t.jsx)(u.GitBranch,{className:"h-3.5 w-3.5"}),j("version.timeline")]})}),(0,t.jsxs)(h.Button,{"data-tour":"create-task",variant:"outline",className:"gap-1.5 border-border text-xs text-muted-foreground hover:border-primary/30 hover:text-primary",onClick:i,children:[(0,t.jsx)(m.Plus,{className:"h-3.5 w-3.5"}),j("board.newTask")]})]})]})}var j=e.i(585012),b=e.i(597746),N=e.i(685149);function v({x:e,y:r,taskId:n,currentStatus:l,hasExecutions:i,workspaceId:c,onClose:d,onStatusChange:m,onLaunch:x}){let{t:u}=(0,o.useI18n)(),h=(0,a.useRouter)(),p=(0,s.useRef)(null);(0,s.useEffect)(()=>{let e=e=>{p.current&&!p.current.contains(e.target)&&d()},t=e=>{"Escape"===e.key&&d()};return document.addEventListener("mousedown",e),document.addEventListener("keydown",t),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("keydown",t)}},[d]);let g="flex items-center px-3 py-1.5 text-xs cursor-pointer hover:bg-accent rounded-sm w-full text-left",f=(0,t.jsxs)("div",{ref:p,style:{position:"fixed",top:r,left:e,zIndex:9999},className:"bg-popover border border-border rounded-md shadow-md py-1 min-w-[180px]",children:[(0,t.jsx)("div",{className:"px-3 py-1 text-[10px] text-muted-foreground uppercase tracking-wider",children:u("board.contextMenu.changeStatus")}),N.BOARD_COLUMNS.map(e=>(0,t.jsxs)("button",{type:"button",className:g,onClick:()=>{m(n,e.id),d()},children:[l===e.id?(0,t.jsx)(b.Check,{className:"h-3 w-3 mr-2 flex-shrink-0"}):(0,t.jsx)("span",{className:"w-5 flex-shrink-0"}),e.label]},e.id)),(0,t.jsx)("hr",{className:"my-1 border-border"}),(0,t.jsx)("button",{type:"button",className:`${g} ${i?"opacity-50 cursor-not-allowed":""}`,disabled:i,onClick:()=>{i||(x(n),d())},children:u("board.contextMenu.launch")}),"DONE"!==l&&"CANCELLED"!==l&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("hr",{className:"my-1 border-border"}),(0,t.jsx)("button",{type:"button",className:g,onClick:()=>{h.push(`/workspaces/${c}/tasks/${n}`),d()},children:u("board.contextMenu.goToDetail")})]})]});return"u"<typeof document?null:(0,j.createPortal)(f,document.body)}var k=e.i(720247),y=e.i(775712);let w=(0,n.default)("layout-grid",[["rect",{width:"7",height:"7",x:"3",y:"3",rx:"1",key:"1g98yp"}],["rect",{width:"7",height:"7",x:"14",y:"3",rx:"1",key:"6d4xhi"}],["rect",{width:"7",height:"7",x:"14",y:"14",rx:"1",key:"nxv5o0"}],["rect",{width:"7",height:"7",x:"3",y:"14",rx:"1",key:"1bb6yr"}]]);var C=e.i(67013),S=e.i(49007),P=e.i(464249),T=e.i(998626);let E=(0,n.default)("pin",[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z",key:"1nkz8b"}]]);var D=e.i(487486),I=e.i(755146);function L({task:e,onClick:s,onEdit:a,onDelete:r,onTogglePin:n,onContextMenu:l}){let{t:i}=(0,o.useI18n)(),{attributes:c,listeners:d,setNodeRef:m,transform:x,transition:u,isDragging:p}=(0,y.useSortable)({id:e.id,data:{type:"task",task:e}}),g={transform:C.CSS.Transform.toString(x),transition:u,opacity:p?.4:1},f=N.PRIORITY_CONFIG[e.priority];return(0,t.jsxs)("div",{ref:m,style:g,...c,...d,className:"group cursor-grab rounded-lg border border-border bg-card p-3 transition-all hover:border-primary/20 hover:bg-accent/50 active:cursor-grabbing",onClick:s,onContextMenu:t=>{t.preventDefault(),t.stopPropagation(),l?.(e,t.clientX,t.clientY)},"data-testid":"task-card",children:[(0,t.jsxs)("div",{className:"flex items-start justify-between",children:[(0,t.jsx)("h4",{className:"text-sm font-medium text-foreground",children:e.title}),(0,t.jsxs)("div",{className:"flex items-center gap-0.5 shrink-0",children:[(0,t.jsx)(h.Button,{variant:"ghost",size:"icon-xs",className:`transition-all ${e.pinned?"text-primary opacity-100":"text-muted-foreground opacity-0 group-hover:opacity-100"}`,onClick:t=>{t.stopPropagation(),n?.(e.id)},"aria-label":i(e.pinned?"board.unpin":"board.pin"),children:(0,t.jsx)(E,{className:`h-3.5 w-3.5 ${e.pinned?"-rotate-45":""}`})}),(0,t.jsxs)(I.DropdownMenu,{children:[(0,t.jsx)(I.DropdownMenuTrigger,{render:(0,t.jsx)("button",{className:"rounded-md p-0.5 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)(S.MoreHorizontal,{className:"h-4 w-4"})}),(0,t.jsxs)(I.DropdownMenuContent,{align:"end",children:[(0,t.jsxs)(I.DropdownMenuItem,{onClick:t=>{t.stopPropagation(),a?.(e)},children:[(0,t.jsx)(P.Pencil,{className:"mr-2 h-3.5 w-3.5"}),i("common.edit")]}),(0,t.jsxs)(I.DropdownMenuItem,{className:"text-rose-400",onClick:t=>{t.stopPropagation(),r?.(e.id)},children:[(0,t.jsx)(T.Trash2,{className:"mr-2 h-3.5 w-3.5"}),i("common.delete")]})]})]})]})]}),e.description&&(0,t.jsx)("p",{className:"mt-1.5 line-clamp-3 text-xs leading-relaxed text-muted-foreground",children:e.description}),(0,t.jsx)("div",{className:"mt-2.5",children:(0,t.jsx)(D.Badge,{variant:"secondary",className:`text-[10px] font-semibold ${f.color}`,children:f.label})}),e.labels&&e.labels.length>0&&(0,t.jsx)("div",{className:"mt-1.5 flex flex-wrap gap-1",children:e.labels.map(e=>(0,t.jsx)("span",{className:"rounded-full px-1.5 py-0.5 text-[10px] font-medium",style:{backgroundColor:e.label.color+"20",color:e.label.color},children:e.label.name},e.label.id))})]})}var B=e.i(776639),R=e.i(759684);function F({open:e,onOpenChange:s,columnLabel:a,columnColor:r,tasks:n,onTaskClick:l}){let{t:i}=(0,o.useI18n)();return(0,t.jsx)(B.Dialog,{open:e,onOpenChange:s,children:(0,t.jsxs)(B.DialogContent,{className:"sm:max-w-6xl max-h-[80vh]",children:[(0,t.jsx)(B.DialogHeader,{children:(0,t.jsxs)(B.DialogTitle,{className:"flex items-center gap-2",children:[(0,t.jsx)("div",{className:`h-2.5 w-2.5 rounded-full ${r}`}),(0,t.jsx)("span",{children:a}),(0,t.jsx)("span",{className:"rounded-md bg-muted px-1.5 py-0.5 text-xs font-mono font-medium text-muted-foreground",children:n.length})]})}),(0,t.jsx)(R.ScrollArea,{className:"max-h-[680px]",children:(0,t.jsxs)("div",{className:"grid grid-cols-4 gap-3 pr-3",children:[n.map(e=>{let a=N.PRIORITY_CONFIG[e.priority];return(0,t.jsxs)("div",{className:"cursor-pointer rounded-lg border border-border bg-card p-3 transition-all hover:border-primary/20 hover:bg-accent/50",onClick:()=>{l?.(e),s(!1)},children:[(0,t.jsx)("h4",{className:"text-sm font-medium text-foreground line-clamp-2",children:e.title}),e.description&&(0,t.jsx)("p",{className:"mt-1.5 line-clamp-2 text-xs leading-relaxed text-muted-foreground",children:e.description}),(0,t.jsxs)("div",{className:"mt-2 flex items-center gap-1.5 flex-wrap",children:[(0,t.jsx)(D.Badge,{variant:"secondary",className:`text-[10px] font-semibold ${a.color}`,children:a.label}),e.labels?.map(e=>(0,t.jsx)("span",{className:"rounded-full px-1.5 py-0.5 text-[10px] font-medium",style:{backgroundColor:e.label.color+"20",color:e.label.color},children:e.label.name},e.label.id))]})]},e.id)}),0===n.length&&(0,t.jsx)("div",{className:"col-span-4 py-8 text-center text-sm text-muted-foreground",children:i("board.noTasks")})]})})]})})}function O({id:e,label:a,color:r,tasks:n,onTaskClick:l,onEditTask:i,onAddTask:c,onDeleteTask:d,onTogglePin:x,onContextMenu:u}){let{setNodeRef:p,isOver:g}=(0,k.useDroppable)({id:e}),[f,j]=(0,s.useState)(!1),{t:b}=(0,o.useI18n)();return(0,t.jsxs)("div",{className:`flex w-0 min-w-[220px] flex-1 flex-col min-h-0 border-r border-border/50 last:border-r-0 transition-colors ${g?"bg-primary/[0.06]":""}`,children:[(0,t.jsxs)("div",{className:"flex items-center justify-between px-3 py-2.5 border-b border-border/30",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("div",{className:`h-2 w-2 rounded-full ${r}`}),(0,t.jsx)("span",{className:"text-xs font-semibold tracking-wide text-secondary-foreground",children:a}),(0,t.jsx)("span",{className:"rounded-md bg-muted px-1.5 py-0.5 text-[10px] font-mono font-medium text-muted-foreground",children:n.length})]}),(0,t.jsxs)("div",{className:"flex items-center gap-0.5",children:[(0,t.jsx)(h.Button,{variant:"ghost",size:"icon-xs",onClick:()=>j(!0),className:"text-muted-foreground","aria-label":b("board.viewAll"),children:(0,t.jsx)(w,{className:"h-3.5 w-3.5"})}),(0,t.jsx)(h.Button,{variant:"ghost",size:"icon-xs",onClick:c,className:"text-muted-foreground","aria-label":"add",children:(0,t.jsx)(m.Plus,{className:"h-3.5 w-3.5"})})]})]}),(0,t.jsx)(F,{open:f,onOpenChange:j,columnLabel:a,columnColor:r,tasks:n,onTaskClick:l}),(0,t.jsx)(R.ScrollArea,{className:"flex-1 min-h-0",children:(0,t.jsx)("div",{ref:p,className:"flex flex-col gap-2 p-2",children:(0,t.jsx)(y.SortableContext,{items:n.map(e=>e.id),strategy:y.verticalListSortingStrategy,children:n.map(e=>(0,t.jsx)(L,{task:e,onClick:()=>l?.(e),onEdit:i,onDelete:d,onTogglePin:x,onContextMenu:u},e.id))})})})]})}function $({initialTasks:e,onTaskMove:a,onTaskClick:r,onEditTask:n,onAddTask:l,onDeleteTask:i,onTogglePin:o,onContextMenuStatusChange:c,onContextMenuLaunch:d,workspaceId:m}){let[x,u]=(0,s.useState)(e),[h,p]=(0,s.useState)(null),[g,f]=(0,s.useState)(null);(0,s.useEffect)(()=>{u(e)},[e]);let j=(0,k.useSensors)((0,k.useSensor)(k.PointerSensor,{activationConstraint:{distance:8}})),b=(0,s.useCallback)((e,t,s)=>{f({task:e,x:t,y:s})},[]),y=(0,s.useCallback)(e=>{let t=x.find(t=>t.id===e.active.id);t&&p(t)},[x]),w=(0,s.useCallback)(e=>{let t,{active:s,over:r}=e;if(p(null),!r)return;let n=s.id,l=r.id;if(N.BOARD_COLUMNS.some(e=>e.id===l))t=l;else{let e=x.find(e=>e.id===l);t=e?.status}t&&(u(e=>e.map(e=>e.id===n?{...e,status:t}:e)),a?.(n,t))},[x,a]);return(0,t.jsxs)(k.DndContext,{id:"kanban-board",sensors:j,collisionDetection:k.closestCorners,onDragStart:y,onDragEnd:w,children:[(0,t.jsx)("div",{className:"mx-2 flex h-full overflow-x-auto rounded-xl border border-border bg-card/50",children:N.BOARD_COLUMNS.map(e=>(0,t.jsx)(O,{id:e.id,label:e.label,color:e.color,tasks:x.filter(t=>t.status===e.id),onTaskClick:r,onEditTask:n,onAddTask:()=>l?.(e.id),onDeleteTask:i,onTogglePin:o,onContextMenu:b},e.id))}),(0,t.jsx)(k.DragOverlay,{children:h?(0,t.jsx)("div",{className:"rotate-3 scale-105",children:(0,t.jsx)(L,{task:h})}):null}),g&&(0,t.jsx)(v,{x:g.x,y:g.y,taskId:g.task.id,currentStatus:g.task.status,hasExecutions:(g.task._count?.executions??0)>0,workspaceId:m??"",onClose:()=>f(null),onStatusChange:(e,t)=>{c?.(e,t),f(null)},onLaunch:e=>{d?.(e),f(null)}})]})}var A=e.i(744798),M=e.i(232280),z=e.i(368490),U=e.i(242941),G=e.i(645378),W=e.i(453889);let _=(0,n.default)("git-commit-vertical",[["path",{d:"M12 3v6",key:"1holv5"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}],["path",{d:"M12 15v6",key:"a9ows0"}]]);var V=e.i(938499),H=e.i(400355),K=e.i(233274),J=e.i(194358),Y=e.i(736061),q=e.i(460707),X=e.i(567860),Q=e.i(624687),Z=e.i(514798);let ee=(0,Z.createServerReference)("60b872dfb3f2ccf6c78b0aa637c5ce1e35de4d89a0",Z.callServer,void 0,Z.findSourceMapURL,"updateProject");var et=e.i(198925);let es=(0,Z.createServerReference)("4056f09d41a4ad3141eea2d2f98dbb6d5c1e076221",Z.callServer,void 0,Z.findSourceMapURL,"deleteProject"),ea=(0,Z.createServerReference)("40cb90f43d42e2224910ee4d9d6efd15fce014e82a",Z.callServer,void 0,Z.findSourceMapURL,"getRecentLocalProjects"),er=(0,Z.createServerReference)("40475d77e4f50c3febca2b1b076b96b8741d82bc1b",Z.callServer,void 0,Z.findSourceMapURL,"getOrCreateTowerTaskId");var en=e.i(132422),el=e.i(77890),ei=e.i(797094),eo=e.i(262812),ec=e.i(360112),ed=e.i(224277),em=e.i(905455),ex=e.i(711554),eu=e.i(875840);function eh({commits:e}){let{t:a}=(0,o.useI18n)(),[r,n]=(0,s.useState)(!1);return 0===e.length?null:(0,t.jsxs)("div",{children:[(0,t.jsxs)("button",{onClick:()=>n(!r),className:"flex w-full items-center justify-between py-1",children:[(0,t.jsx)("p",{className:"text-[10px] font-semibold uppercase tracking-wider text-muted-foreground",children:a("git.commitLog")}),r?(0,t.jsx)(M.ChevronDown,{className:"h-3 w-3 text-muted-foreground"}):(0,t.jsx)(z.ChevronRight,{className:"h-3 w-3 text-muted-foreground"})]}),r&&(0,t.jsx)("div",{className:"mt-1.5 space-y-0.5 max-h-64 overflow-y-auto",children:e.map(e=>(0,t.jsxs)("div",{className:"group flex items-start gap-2 rounded-md px-2 py-1.5 hover:bg-accent transition-colors",children:[(0,t.jsx)(_,{className:"h-3 w-3 shrink-0 text-muted-foreground mt-0.5"}),(0,t.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,t.jsx)("p",{className:"text-xs text-foreground line-clamp-1",children:e.message}),(0,t.jsxs)("div",{className:"flex items-center gap-2 mt-0.5",children:[(0,t.jsxs)("button",{onClick:()=>{navigator.clipboard.writeText(e.shortHash),ec.toast.success(`Copied ${e.shortHash}`)},className:"flex items-center gap-0.5 font-mono text-[10px] text-primary/70 hover:text-primary transition-colors",children:[e.shortHash,(0,t.jsx)(eu.Copy,{className:"h-2.5 w-2.5 opacity-0 group-hover:opacity-100 transition-opacity"})]}),(0,t.jsx)("span",{className:"text-[10px] text-muted-foreground",children:e.author}),(0,t.jsx)("span",{className:"text-[10px] text-muted-foreground",children:function(e){let t=Math.floor((Date.now()-new Date(e).getTime())/6e4);if(t<1)return"just now";if(t<60)return`${t}m`;let s=Math.floor(t/60);if(s<24)return`${s}h`;let a=Math.floor(s/24);return a<30?`${a}d`:`${Math.floor(a/30)}mo`}(e.date)})]})]})]},e.hash))})]})}var ep=e.i(487278),eg=e.i(375306),ef=e.i(244354);function ej({localPath:e,stashes:a,hasChanges:r,onRefresh:n}){let{t:l}=(0,o.useI18n)(),[i,c]=(0,s.useState)(!1),[d,m]=(0,s.useState)(!1),[x,u]=(0,s.useState)(""),[g,f]=(0,s.useState)(null),j=async()=>{m(!0);try{await (0,ef.gitAction)(e,"stash-save",{message:x}),u(""),ec.toast.success(l("git.stashSaved")),await n()}catch(e){ec.toast.error(e instanceof Error?e.message:String(e))}finally{m(!1)}},b=async t=>{f(t);try{await (0,ef.gitAction)(e,"stash-pop",{index:t}),ec.toast.success(l("git.stashApplied")),await n()}catch(e){ec.toast.error(e instanceof Error?e.message:String(e))}finally{f(null)}},N=async t=>{f(t);try{await (0,ef.gitAction)(e,"stash-drop",{index:t}),ec.toast.success(l("git.stashDropped")),await n()}catch(e){ec.toast.error(e instanceof Error?e.message:String(e))}finally{f(null)}};return r||0!==a.length?(0,t.jsxs)("div",{children:[(0,t.jsxs)("button",{onClick:()=>c(!i),className:"flex w-full items-center justify-between py-1",children:[(0,t.jsxs)("p",{className:"text-[10px] font-semibold uppercase tracking-wider text-muted-foreground",children:[l("git.stash")," ",a.length>0&&`(${a.length})`]}),i?(0,t.jsx)(M.ChevronDown,{className:"h-3 w-3 text-muted-foreground"}):(0,t.jsx)(z.ChevronRight,{className:"h-3 w-3 text-muted-foreground"})]}),i&&(0,t.jsxs)("div",{className:"mt-1.5 space-y-2",children:[r&&(0,t.jsxs)("div",{className:"flex gap-1.5",children:[(0,t.jsx)(p.Input,{value:x,onChange:e=>u(e.target.value),placeholder:l("git.stashMsgPlaceholder"),className:"h-7 text-xs flex-1",onKeyDown:e=>"Enter"===e.key&&j()}),(0,t.jsx)(h.Button,{variant:"outline",size:"icon-sm",onClick:j,disabled:d,className:"shrink-0",children:d?(0,t.jsx)(H.Loader2,{className:"h-3 w-3 animate-spin"}):(0,t.jsx)(ep.Archive,{className:"h-3 w-3"})})]}),a.length>0&&(0,t.jsx)("div",{className:"space-y-0.5",children:a.map(e=>(0,t.jsxs)("div",{className:"group flex items-center gap-2 rounded-md px-2 py-1.5 hover:bg-accent transition-colors",children:[(0,t.jsx)(ep.Archive,{className:"h-3 w-3 shrink-0 text-muted-foreground"}),(0,t.jsx)("span",{className:"flex-1 min-w-0 truncate text-xs text-foreground",children:e.message||`stash@{${e.index}}`}),(0,t.jsxs)("div",{className:"flex items-center gap-0.5 opacity-0 group-hover:opacity-100 transition-opacity",children:[(0,t.jsx)(h.Button,{variant:"ghost",size:"icon-xs",onClick:()=>b(e.index),disabled:g===e.index,className:"text-muted-foreground","aria-label":l("git.stashApply"),children:g===e.index?(0,t.jsx)(H.Loader2,{className:"h-3 w-3 animate-spin"}):(0,t.jsx)(eg.ArrowUpFromLine,{className:"h-3 w-3"})}),(0,t.jsx)(h.Button,{variant:"ghost",size:"icon-xs",onClick:()=>N(e.index),disabled:g===e.index,className:"text-rose-400","aria-label":l("git.stashDrop"),children:(0,t.jsx)(T.Trash2,{className:"h-3 w-3"})})]})]},e.index))})]})]}):null}function eb({project:e,workspaceId:r}){let{t:n,locale:l}=(0,o.useI18n)(),i=(0,a.useRouter)(),[c,d]=(0,s.useState)(!0),[m,x]=(0,s.useState)(!0),[g,f]=(0,s.useState)(!1),[j,b]=(0,s.useState)(!1),[N,v]=(0,s.useState)(""),[k,y]=(0,s.useState)(!1),[w,C]=(0,s.useState)(!1),[S,E]=(0,s.useState)(!1),[D,I]=(0,s.useState)(e.name),[L,R]=(0,s.useState)(e.alias??""),[F,O]=(0,s.useState)(e.description??""),[$,A]=(0,s.useState)(e.localPath??""),[J,Z]=(0,s.useState)(e.projectType??"FRONTEND"),[eu,ep]=(0,s.useState)([]);(0,s.useEffect)(()=>{ea(100).then(ep)},[]);let[eg,ef]=(0,s.useState)(!1),[ev,ek]=(0,s.useState)(""),[ey,ew]=(0,s.useState)(""),[eC,eS]=(0,s.useState)(""),[eP,eT]=(0,s.useState)(""),[eE,eD]=(0,s.useState)("FRONTEND"),[eI,eL]=(0,s.useState)(!1),[eB,eR]=(0,s.useState)(!1),[eF,eO]=(0,s.useState)(null),[e$,eA]=(0,s.useState)(!1),[eM,ez]=(0,s.useState)(!1),[eU,eG]=(0,s.useState)(!1),eW=e=>{ec.toast.info(e)},e_=(0,s.useCallback)(async()=>{if(e.localPath){eA(!0);try{let t=await fetch(`/api/git?path=${encodeURIComponent(e.localPath)}`);t.ok&&eO(await t.json())}catch{}finally{eA(!1)}}},[e.localPath]);(0,s.useEffect)(()=>{e_()},[e_]);let eV=async()=>{if(e.localPath){ez(!0);try{(await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"init",path:e.localPath})})).ok?(eW(n("git.initSuccess")),await e_()):eW(n("git.initFailed"))}catch{eW(n("git.initFailed"))}finally{ez(!1)}}},eH=async t=>{if(e.localPath)try{let s=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"checkout",path:e.localPath,branch:t})});if(s.ok)eW(`${n("git.switchSuccess")} ${t}`),await e_();else{let e=await s.json();eW(`${n("git.switchFailed")}: ${e.error}`)}}catch{eW(n("git.switchFailed"))}},eK=(e,t)=>{i.push(`/workspaces/${e}?projectId=${t}`,{scroll:!1}),i.refresh()},eJ=async()=>{if(ey.trim()){eL(!0);try{let e=await (0,et.createProject)({name:ey.trim(),alias:eC.trim()||void 0,description:eP.trim()||void 0,localPath:ev,projectType:eE,workspaceId:r});ef(!1),eK(r,e.id)}catch(e){ec.toast.error(e instanceof Error?e.message:String(e))}finally{eL(!1)}}},eY=async()=>{if($&&!eB){eR(!0);try{let e=await (0,eo.analyzeProjectDirectory)($.trim(),l);O(e)}catch{ec.toast.error(n("project.analyzeError"))}finally{eR(!1)}}},eq=async()=>{try{await ee(e.id,{name:D.trim(),alias:L.trim()||void 0,description:F.trim()||void 0,localPath:$.trim()||void 0,projectType:J}),i.refresh(),f(!1)}catch(e){ec.toast.error(e instanceof Error?e.message:String(e))}};return(0,t.jsxs)("aside",{className:"relative w-72 flex-shrink-0 overflow-y-auto border-l border-border bg-sidebar",children:[(0,t.jsxs)("div",{className:"border-b border-border p-4",children:[(0,t.jsxs)("div",{className:"flex items-start justify-between",children:[(0,t.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,t.jsx)("h2",{className:"text-base font-semibold text-foreground",children:e.name}),e.alias&&(0,t.jsx)("p",{className:"mt-0.5 text-xs text-muted-foreground",children:e.alias})]}),(0,t.jsxs)("div",{className:"flex items-center gap-0.5",children:[(0,t.jsx)(h.Button,{variant:"ghost",size:"icon-sm",onClick:()=>{I(e.name),R(e.alias??""),O(e.description??""),A(e.localPath??""),f(!0)},className:"text-muted-foreground",children:(0,t.jsx)(P.Pencil,{className:"h-3.5 w-3.5"})}),(0,t.jsx)(h.Button,{variant:"ghost",size:"icon-sm",onClick:()=>{v(""),b(!0)},className:"text-muted-foreground hover:text-rose-400",children:(0,t.jsx)(T.Trash2,{className:"h-3.5 w-3.5"})})]})]}),e.description&&(0,t.jsx)("p",{className:"mt-2 text-sm text-secondary-foreground leading-relaxed line-clamp-4",children:e.description}),(0,t.jsx)("div",{className:"mt-3 flex flex-wrap items-center gap-2",children:(0,t.jsx)("span",{className:`inline-flex items-center gap-1 rounded-md px-2 py-0.5 text-[11px] font-medium ${"GIT"===e.type?"bg-sky-500/15 text-sky-300 ring-1 ring-sky-500/20":"bg-muted text-muted-foreground ring-1 ring-border"}`,children:"GIT"===e.type?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(u.GitBranch,{className:"h-3 w-3"}),n("sidebar.right.gitType")]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(G.FileText,{className:"h-3 w-3"}),n("sidebar.right.normalType")]})})}),e.localPath&&(0,t.jsxs)("div",{className:"mt-3 flex items-start gap-2 rounded-md bg-muted/50 px-2.5 py-2 text-xs",children:[(0,t.jsx)(W.FolderOpen,{className:"mt-0.5 h-3 w-3 shrink-0 text-muted-foreground"}),(0,t.jsx)("span",{className:"break-all font-mono text-secondary-foreground",children:e.localPath})]}),e.gitUrl&&(0,t.jsxs)("div",{className:"mt-2 flex items-start gap-2 rounded-md bg-muted/50 px-2.5 py-2 text-xs",children:[(0,t.jsx)(U.Globe,{className:"mt-0.5 h-3 w-3 shrink-0 text-muted-foreground"}),(0,t.jsx)("span",{className:"break-all text-secondary-foreground",children:e.gitUrl})]}),e.localPath&&(0,t.jsxs)("div",{className:"mt-3 space-y-1.5",children:[(0,t.jsxs)("div",{className:"flex flex-col",children:[(0,t.jsxs)(h.Button,{variant:"ghost",className:"w-full h-8 justify-start gap-2 px-2 text-xs text-muted-foreground",onClick:async()=>{try{await (0,en.openInFileManager)(e.localPath)}catch(e){console.error("openInFileManager failed:",e),ec.toast.error(n("git.openInFileManagerFailed"))}},children:[(0,t.jsx)(Y.FolderSearch,{className:"h-3.5 w-3.5 shrink-0"}),n("git.openInFileManager")]}),(0,t.jsxs)(h.Button,{variant:"ghost",className:"w-full h-8 justify-start gap-2 px-2 text-xs text-muted-foreground",onClick:async()=>{try{await (0,el.openInEditor)(e.localPath)}catch(e){console.error("openInEditor failed:",e),ec.toast.error(n("git.openInEditorFailed"))}},children:[(0,t.jsx)(q.Code,{className:"h-3.5 w-3.5 shrink-0"}),n("git.openInEditor")]}),(0,t.jsxs)(h.Button,{variant:"ghost",className:"w-full h-8 justify-start gap-2 px-2 text-xs text-muted-foreground",onClick:async()=>{try{await (0,ei.openInTerminal)(e.localPath)}catch(e){console.error("openInTerminal failed:",e),ec.toast.error(n("git.openInTerminalFailed"))}},children:[(0,t.jsx)(X.Terminal,{className:"h-3.5 w-3.5 shrink-0"}),n("git.openInTerminal")]})]}),(0,t.jsxs)(h.Button,{variant:"outline",className:"w-full h-9 gap-1.5 text-xs",disabled:w,onClick:async()=>{C(!0);try{let t=await er(e.id);i.push(`/workspaces/${r}/tasks/${t}`)}catch{ec.toast.error(n("git.openStudioFailed"))}finally{C(!1)}},children:[w?(0,t.jsx)(H.Loader2,{className:"h-3.5 w-3.5 animate-spin"}):(0,t.jsx)(W.FolderOpen,{className:"h-3.5 w-3.5"}),n("git.openStudio")]})]})]}),(0,t.jsxs)("div",{className:"border-b border-border p-4",children:[(0,t.jsxs)(h.Button,{variant:"ghost",onClick:()=>d(!c),className:"flex w-full cursor-pointer justify-between px-2 py-2",children:[(0,t.jsx)("span",{className:"text-[11px] font-semibold uppercase tracking-wider text-muted-foreground",children:n("git.section")}),c?(0,t.jsx)(M.ChevronDown,{className:"h-3.5 w-3.5 text-muted-foreground"}):(0,t.jsx)(z.ChevronRight,{className:"h-3.5 w-3.5 text-muted-foreground"})]}),c&&(0,t.jsx)("div",{className:"mt-3",children:e.localPath?e$?(0,t.jsxs)("div",{className:"flex items-center justify-center py-4 text-muted-foreground",children:[(0,t.jsx)(H.Loader2,{className:"h-4 w-4 animate-spin"}),(0,t.jsx)("span",{className:"ml-2 text-xs",children:n("git.loading")})]}):eF&&!eF.isGit?(0,t.jsxs)("div",{className:"rounded-lg border border-border bg-muted/50 p-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 text-muted-foreground",children:[(0,t.jsx)(V.AlertCircle,{className:"h-3.5 w-3.5"}),(0,t.jsx)("p",{className:"text-xs",children:n("git.notInitialized")})]}),(0,t.jsxs)(h.Button,{className:"mt-3 h-7 w-full gap-1.5 bg-primary/10 text-xs text-primary ring-1 ring-primary/20 hover:bg-primary/15",onClick:eV,disabled:eM,children:[eM?(0,t.jsx)(H.Loader2,{className:"h-3 w-3 animate-spin"}):(0,t.jsx)(_,{className:"h-3 w-3"}),n("git.initRepo")]})]}):eF?.isGit?(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsx)(eN,{localBranches:eF.branches??[],remoteBranches:(eF.remoteBranches??[]).filter(e=>!eF.branches?.includes(e)),currentBranch:eF.currentBranch??"",onSwitch:eH,onFetch:async()=>{e.localPath&&(await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"fetch",path:e.localPath})}),await e_())},onCreateBranch:()=>eG(!0)}),(0,t.jsx)(eh,{commits:eF.commits??[]}),(0,t.jsx)(ej,{localPath:e.localPath,stashes:eF.stashes??[],hasChanges:(eF.changedFiles??[]).length>0,onRefresh:e_})]}):null:(0,t.jsx)("div",{className:"rounded-lg border border-border bg-muted/50 p-3",children:(0,t.jsxs)("div",{className:"flex items-center gap-2 text-muted-foreground",children:[(0,t.jsx)(V.AlertCircle,{className:"h-3.5 w-3.5"}),(0,t.jsx)("p",{className:"text-xs",children:n("git.noLocalPath")})]})})})]}),(0,t.jsxs)("div",{className:"p-4",children:[(0,t.jsxs)(h.Button,{variant:"ghost",onClick:()=>x(!m),className:"flex w-full cursor-pointer justify-between px-2 py-2",children:[(0,t.jsx)("span",{className:"text-[11px] font-semibold uppercase tracking-wider text-muted-foreground",children:n("sidebar.right.browseRepo")}),m?(0,t.jsx)(M.ChevronDown,{className:"h-3.5 w-3.5 text-muted-foreground"}):(0,t.jsx)(z.ChevronRight,{className:"h-3.5 w-3.5 text-muted-foreground"})]}),m&&(0,t.jsxs)("div",{className:"mt-3 space-y-3",children:[(0,t.jsxs)(h.Button,{variant:"outline",className:"w-full h-8 gap-1.5 text-xs",onClick:()=>E(!0),children:[(0,t.jsx)(W.FolderOpen,{className:"h-3.5 w-3.5"}),n("sidebar.right.browseRepo")]}),eu.length>0&&(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"text-[10px] font-semibold uppercase tracking-wider text-muted-foreground mb-1.5 px-1",children:n("sidebar.right.recent")}),(0,t.jsx)("div",{className:"space-y-0.5",children:eu.map(s=>(0,t.jsxs)("button",{onClick:()=>{s.id!==e.id&&eK(s.workspaceId,s.id)},className:`flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left transition-colors ${s.id===e.id?"bg-primary/10 text-primary cursor-default":"hover:bg-accent cursor-pointer"}`,children:["GIT"===s.type?(0,t.jsx)(u.GitBranch,{className:"h-3 w-3 shrink-0 text-emerald-400"}):(0,t.jsx)(W.FolderOpen,{className:"h-3 w-3 shrink-0 text-primary/70"}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("p",{className:"truncate text-xs font-medium text-foreground",children:s.name}),s.localPath&&(0,t.jsx)("p",{className:"truncate text-[10px] font-mono text-muted-foreground",children:s.localPath})]})]},s.id))})]})]})]}),(0,t.jsx)(B.Dialog,{open:g,onOpenChange:f,children:(0,t.jsxs)(B.DialogContent,{style:{maxWidth:"32rem"},children:[(0,t.jsx)(B.DialogHeader,{children:(0,t.jsx)(B.DialogTitle,{children:n("project.edit")})}),(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:n("project.name")}),(0,t.jsx)(p.Input,{value:D,onChange:e=>I(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)(em.SegmentedControl,{options:[{value:"FRONTEND",label:n("project.type.frontend")},{value:"BACKEND",label:n("project.type.backend")}],value:J,onChange:Z})})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:n("project.alias")}),(0,t.jsx)(p.Input,{value:L,onChange:e=>R(e.target.value),className:"mt-1.5"})]}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:n("project.description")}),(0,t.jsxs)(h.Button,{type:"button",variant:"ghost",onClick:eY,className:`h-6 gap-1 px-2 text-[11px] text-muted-foreground hover:text-foreground ${!$||eB?"opacity-50":""}`,children:[eB?(0,t.jsx)(H.Loader2,{className:"h-3 w-3 animate-spin"}):(0,t.jsx)(K.Sparkles,{className:"h-3 w-3"}),eB?n("project.analyzing"):n("project.genDesc")]})]}),(0,t.jsx)(Q.Textarea,{value:F,onChange:e=>O(e.target.value),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 max-h-[200px] overflow-y-auto"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:n("project.localPath")}),(0,t.jsxs)("div",{className:"mt-1.5 flex gap-2",children:[(0,t.jsx)(p.Input,{value:$,onChange:e=>A(e.target.value),placeholder:n("project.localPathPlaceholder"),className:"flex-1 font-mono text-xs"}),(0,t.jsx)(h.Button,{variant:"outline",onClick:()=>E(!0),className:"h-8 shrink-0",children:n("folder.browse")})]})]})]}),(0,t.jsxs)(B.DialogFooter,{children:[(0,t.jsx)(h.Button,{variant:"outline",onClick:()=>f(!1),children:n("common.cancel")}),(0,t.jsx)(h.Button,{onClick:eq,disabled:!D.trim()||eB,className:"bg-primary/10 text-primary ring-1 ring-primary/20 hover:bg-primary/15",children:n("common.save")})]})]})}),(0,t.jsx)(ed.FolderBrowserDialog,{open:S,onOpenChange:E,onSelect:e=>{g?A(e):(e=>{let t=eu.find(t=>t.localPath===e);if(t)return eK(t.workspaceId,t.id);let s=e.split("/").filter(Boolean).pop()??"";ek(e),ew(s),eS(""),eT(""),ef(!0)})(e)}}),(0,t.jsx)(B.Dialog,{open:eg,onOpenChange:ef,children:(0,t.jsxs)(B.DialogContent,{className:"sm:max-w-md",children:[(0,t.jsx)(B.DialogHeader,{children:(0,t.jsx)(B.DialogTitle,{children:n("topbar.newProject")})}),(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:n("project.localPath")}),(0,t.jsx)("div",{className:"mt-1.5 rounded-md border border-border bg-muted/50 px-3 py-2 font-mono text-xs text-muted-foreground",children:ev})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:n("project.name")}),(0,t.jsx)(p.Input,{value:ey,onChange:e=>ew(e.target.value),placeholder:n("project.namePlaceholder"),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)(em.SegmentedControl,{options:[{value:"FRONTEND",label:n("project.type.frontend")},{value:"BACKEND",label:n("project.type.backend")}],value:eE,onChange:eD})})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:n("project.alias")}),(0,t.jsx)(p.Input,{value:eC,onChange:e=>eS(e.target.value),placeholder:n("project.aliasPlaceholder"),className:"mt-1.5"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:n("project.description")}),(0,t.jsx)(Q.Textarea,{value:eP,onChange:e=>eT(e.target.value),placeholder:n("project.descPlaceholder"),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)(B.DialogFooter,{children:[(0,t.jsx)(h.Button,{variant:"outline",onClick:()=>ef(!1),children:n("common.cancel")}),(0,t.jsxs)(h.Button,{onClick:eJ,disabled:!ey.trim()||eI,className:"bg-primary/10 text-primary ring-1 ring-primary/20 hover:bg-primary/15",children:[eI?(0,t.jsx)(H.Loader2,{className:"h-3 w-3 animate-spin mr-1"}):null,n("common.create")]})]})]})}),eF?.isGit&&(0,t.jsx)(ex.CreateBranchDialog,{open:eU,onOpenChange:eG,branches:eF.branches??[],currentBranch:eF.currentBranch??"",localPath:e.localPath,onCreated:async()=>{await e_(),eW(n("git.createSuccess"))},onError:e=>eW(`${n("git.createFailed")}: ${e}`)}),(0,t.jsx)(B.Dialog,{open:j,onOpenChange:e=>{b(e),e||v("")},children:(0,t.jsxs)(B.DialogContent,{className:"sm:max-w-md",children:[(0,t.jsx)(B.DialogHeader,{children:(0,t.jsx)(B.DialogTitle,{className:"text-rose-400",children:n("project.deleteTitle")})}),(0,t.jsxs)("div",{className:"space-y-3 py-2",children:[(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:n("project.deleteWarning",{name:e.name})}),(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:n("project.deleteIrreversible")}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:n("project.deleteConfirmLabel")}),(0,t.jsx)(p.Input,{value:N,onChange:e=>v(e.target.value),placeholder:n("project.deleteConfirmPlaceholder"),className:"mt-1.5",autoFocus:!0})]})]}),(0,t.jsxs)(B.DialogFooter,{children:[(0,t.jsx)(h.Button,{variant:"outline",onClick:()=>b(!1),children:n("common.cancel")}),(0,t.jsxs)(h.Button,{variant:"destructive",disabled:N!==n("project.deleteConfirmText")||k,onClick:async()=>{y(!0);try{await es(e.id),ec.toast.success(n("project.deleteSuccess")),i.push(`/workspaces/${r}`)}catch{ec.toast.error(n("project.deleteFailed"))}finally{y(!1),b(!1)}},children:[k&&(0,t.jsx)(H.Loader2,{className:"h-3 w-3 animate-spin mr-1"}),n("project.deleteButton")]})]})]})})]})}function eN({localBranches:e,remoteBranches:a,currentBranch:r,onSwitch:n,onFetch:l,onCreateBranch:i}){let{t:c}=(0,o.useI18n)(),[d,p]=(0,s.useState)(!1),[g,f]=(0,s.useState)(""),[j,N]=(0,s.useState)(!1),v=(0,s.useRef)(null);(0,s.useEffect)(()=>{if(d)return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e);function e(e){v.current&&!v.current.contains(e.target)&&p(!1)}},[d]);let k=g.toLowerCase(),y=e.filter(e=>e.toLowerCase().includes(k)),w=a.filter(e=>e.toLowerCase().includes(k)),C=y.length>0||w.length>0,S=async()=>{N(!0);try{await l()}finally{N(!1)}};return(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-1.5",children:[(0,t.jsx)("p",{className:"text-[10px] font-semibold uppercase tracking-wider text-muted-foreground",children:c("git.currentBranch")}),(0,t.jsxs)("div",{className:"flex items-center gap-0.5",children:[(0,t.jsx)(h.Button,{variant:"ghost",size:"icon-xs",onClick:S,disabled:j,className:"text-muted-foreground","aria-label":"Fetch",children:(0,t.jsx)(J.RefreshCw,{className:`h-3 w-3 ${j?"animate-spin":""}`})}),(0,t.jsx)(h.Button,{variant:"ghost",size:"icon-xs",onClick:i,className:"text-muted-foreground","aria-label":c("git.createBranch"),children:(0,t.jsx)(m.Plus,{className:"h-3 w-3"})})]})]}),(0,t.jsxs)("div",{className:"relative",ref:v,children:[(0,t.jsxs)("button",{onClick:()=>{p(!d),f("")},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 min-w-0",children:[(0,t.jsx)(u.GitBranch,{className:"h-3 w-3 shrink-0 text-emerald-400"}),(0,t.jsx)("span",{className:"truncate font-mono text-xs text-foreground",title:r||void 0,children:r||"—"})]}),(0,t.jsx)(M.ChevronDown,{className:`h-3 w-3 shrink-0 text-muted-foreground transition-transform ${d?"rotate-180":""}`})]}),d&&(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)(x.Search,{className:"absolute left-2 top-1/2 -translate-y-1/2 h-3 w-3 text-muted-foreground"}),(0,t.jsx)("input",{value:g,onChange:e=>f(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.jsxs)("div",{className:"max-h-60 overflow-auto py-1",children:[!C&&(0,t.jsx)("p",{className:"px-3 py-2 text-xs text-muted-foreground",children:"No branches found"}),y.length>0&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("p",{className:"px-3 pt-1.5 pb-1 text-[10px] font-semibold uppercase tracking-wider text-muted-foreground",children:c("git.localBranches")}),y.map(e=>{let s=e===r;return(0,t.jsxs)("button",{onClick:()=>{s||n(e),p(!1)},className:`flex w-full items-center gap-2 px-3 py-1.5 text-left transition-colors ${s?"bg-emerald-500/10 text-emerald-400":"text-secondary-foreground hover:bg-accent"}`,children:[(0,t.jsx)(u.GitBranch,{className:"h-3 w-3 shrink-0"}),(0,t.jsx)("span",{className:"truncate font-mono text-xs",title:e,children:e}),s&&(0,t.jsx)(b.Check,{className:"h-3 w-3 ml-auto shrink-0"})]},`local-${e}`)})]}),w.length>0&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("p",{className:"px-3 pt-2.5 pb-1 text-[10px] font-semibold uppercase tracking-wider text-muted-foreground",children:c("git.remoteBranches")}),w.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 text-secondary-foreground transition-colors hover:bg-accent",children:[(0,t.jsx)(U.Globe,{className:"h-3 w-3 shrink-0 text-sky-400"}),(0,t.jsx)("span",{className:"truncate font-mono text-xs",title:e,children:e})]},`remote-${e}`))]})]})]})]})]})}var ev=e.i(475958),ek=e.i(313029),ey=e.i(301348),ew=e.i(746798),eC=e.i(259846),eS=e.i(975157);function eP({title:e,description:s,branch:a,baseBranch:r,hasConversation:n,updatedAt:l,onBack:i}){let{t:c}=(0,o.useI18n)();return(0,t.jsxs)("div",{className:"border-b border-border px-4 py-3",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(K.Sparkles,{className:"h-3.5 w-3.5 text-primary"}),(0,t.jsx)("span",{className:"text-xs font-semibold text-primary",children:c("taskDetail.title")})]}),(0,t.jsxs)(h.Button,{variant:"ghost",onClick:i,className:"flex items-center gap-1 text-xs text-muted-foreground transition-colors hover:text-foreground h-auto px-2 py-1",children:[(0,t.jsx)(eC.ArrowLeft,{className:"h-3.5 w-3.5"}),c("taskDetail.back")]})]}),(0,t.jsx)("h2",{className:"mt-2.5 text-lg font-bold tracking-tight text-foreground",children:e}),s&&(0,t.jsx)("p",{className:"mt-1 text-xs text-muted-foreground line-clamp-2",children:s}),(0,t.jsxs)("div",{className:"mt-3 flex flex-wrap items-center gap-2",children:[r?(0,t.jsxs)(D.Badge,{variant:"secondary",className:"bg-muted text-muted-foreground text-[10px] font-mono border border-border",children:[(0,t.jsx)(u.GitBranch,{className:"mr-1 h-3 w-3"}),r," · worktree"]}):a?(0,t.jsx)(D.Badge,{variant:"secondary",className:"bg-muted text-muted-foreground text-[10px] font-mono border border-border",children:c("taskDetail.directMode")}):null,n&&(0,t.jsx)(D.Badge,{variant:"secondary",className:"bg-emerald-500/10 text-emerald-400 text-[10px] border border-emerald-500/20",children:c("taskDetail.hasConversation")}),(0,t.jsxs)("span",{className:"text-[11px] text-muted-foreground",children:[c("taskDetail.updatedAt")," ",(0,eS.formatRelativeTime)(l)]})]})]})}var eT=e.i(14842),eE=e.i(865514),eD=e.i(83434),eI=e.i(992238),eL=e.i(294980),eB=e.i(3362),eR=e.i(429416),eF=e.i(317248),eO=e.i(848466),e$=e.i(150133),eA=e.i(656985),eM=e.i(351909),ez=e.i(326883),eU=e.i(631675);let eG=(0,n.default)("paperclip",[["path",{d:"m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551",key:"1miecu"}]]);var eW=e.i(657153),e_=e.i(954777);let eV=(0,Z.createServerReference)("401596434c549b95410f2ab34f1bd9df4db714c92b",Z.callServer,void 0,Z.findSourceMapURL,"getTaskNotes");var eH=e.i(555989);let eK=(0,Z.createServerReference)("400bc8fbab7c5d6dd9cdee33d2c692993b9042a98d",Z.callServer,void 0,Z.findSourceMapURL,"getTaskAssets");var eJ=e.i(155959),eY=e.i(159925);function eq({taskId:e,projectId:a}){let{t:r}=(0,o.useI18n)(),n=(0,s.useRef)(null),[l,i]=(0,s.useState)([]),[c,d]=(0,s.useState)([]),[x,u]=(0,s.useState)(!1),[p,g]=(0,s.useState)(""),[f,j]=(0,s.useState)(""),[b,N]=(0,s.useState)(!1);async function v(){p.trim()&&(await (0,e_.createNote)({title:p.trim(),content:f.trim(),projectId:a,taskId:e,category:"task"}),g(""),j(""),u(!1),eV(e).then(i))}async function k(e){await (0,eH.deleteNote)(e),i(t=>t.filter(t=>t.id!==e))}async function y(t){let s=t.target.files?.[0];if(s){N(!0);try{let t=new FormData;t.set("file",s),t.set("projectId",a),t.set("taskId",e),await (0,eJ.uploadAsset)(t),eK(e).then(d)}finally{N(!1),n.current&&(n.current.value="")}}}async function w(e){await (0,eY.deleteAsset)(e),d(t=>t.filter(t=>t.id!==e))}return(0,s.useEffect)(()=>{eV(e).then(i),eK(e).then(d)},[e]),(0,t.jsx)(R.ScrollArea,{className:"h-full",children:(0,t.jsxs)("div",{className:"flex flex-col",children:[(0,t.jsxs)("div",{className:"border-b border-border px-4 py-3",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)("h3",{className:"flex items-center gap-1.5 text-xs font-semibold uppercase tracking-wider text-muted-foreground",children:[(0,t.jsx)(G.FileText,{className:"h-3.5 w-3.5"}),r("taskPage.notes")]}),(0,t.jsxs)(h.Button,{variant:"ghost",className:"h-6 gap-1 px-2 text-xs",onClick:()=>u(!x),children:[x?(0,t.jsx)(eW.X,{className:"h-3 w-3"}):(0,t.jsx)(m.Plus,{className:"h-3 w-3"}),x?"":r("taskPage.addNote")]})]}),x&&(0,t.jsxs)("div",{className:"mt-3 space-y-2",children:[(0,t.jsx)("input",{type:"text",value:p,onChange:e=>g(e.target.value),placeholder:r("taskPage.noteTitle"),className:"h-8 w-full rounded-md border border-border bg-background px-3 text-sm focus:outline-none focus:ring-1 focus:ring-primary",autoFocus:!0}),(0,t.jsx)("textarea",{value:f,onChange:e=>j(e.target.value),placeholder:r("taskPage.noteContent"),rows:3,className:"w-full rounded-md border border-border bg-background px-3 py-2 text-sm focus:outline-none focus:ring-1 focus:ring-primary resize-none"}),(0,t.jsx)(h.Button,{className:"text-xs",onClick:v,disabled:!p.trim(),children:r("taskPage.addNote")})]}),(0,t.jsxs)("div",{className:"mt-2 space-y-2",children:[0===l.length&&!x&&(0,t.jsx)("p",{className:"text-xs text-muted-foreground py-2",children:r("taskPage.noNotes")}),l.map(e=>(0,t.jsx)("div",{className:"group rounded-md border border-border bg-card p-3",children:(0,t.jsxs)("div",{className:"flex items-start justify-between gap-2",children:[(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("h4",{className:"text-sm font-medium truncate",children:e.title}),e.content&&(0,t.jsx)("p",{className:"mt-1 text-xs text-muted-foreground line-clamp-3 whitespace-pre-wrap",children:e.content}),(0,t.jsx)("p",{className:"mt-1 text-[10px] text-muted-foreground",children:new Date(e.createdAt).toLocaleString()})]}),(0,t.jsx)(h.Button,{variant:"ghost",size:"icon-xs",onClick:()=>k(e.id),className:"shrink-0 text-muted-foreground opacity-0 hover:bg-destructive/10 hover:text-destructive group-hover:opacity-100",title:r("taskPage.deleteNote"),children:(0,t.jsx)(T.Trash2,{className:"h-3.5 w-3.5"})})]})},e.id))]})]}),(0,t.jsxs)("div",{className:"px-4 py-3",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)("h3",{className:"flex items-center gap-1.5 text-xs font-semibold uppercase tracking-wider text-muted-foreground",children:[(0,t.jsx)(eG,{className:"h-3.5 w-3.5"}),r("taskPage.attachments")]}),(0,t.jsxs)(h.Button,{variant:"ghost",className:"h-6 gap-1 px-2 text-xs",onClick:()=>n.current?.click(),disabled:b,children:[(0,t.jsx)(eU.Upload,{className:"h-3 w-3"}),r("taskPage.uploadFile")]}),(0,t.jsx)("input",{ref:n,type:"file",className:"hidden",onChange:y})]}),(0,t.jsxs)("div",{className:"mt-2 space-y-1.5",children:[0===c.length&&(0,t.jsx)("p",{className:"text-xs text-muted-foreground py-2",children:r("taskPage.noAttachments")}),c.map(e=>{var s;return(0,t.jsxs)("div",{className:"group flex items-center gap-2 rounded-md border border-border bg-card px-3 py-2",children:[(0,t.jsx)(eG,{className:"h-3.5 w-3.5 shrink-0 text-muted-foreground"}),(0,t.jsx)("span",{className:"flex-1 truncate text-sm",children:e.filename}),(0,t.jsx)("span",{className:"shrink-0 text-[10px] text-muted-foreground",children:(s=e.size)?s<1024?`${s} B`:s<1048576?`${(s/1024).toFixed(1)} KB`:`${(s/1024/1024).toFixed(1)} MB`:""}),(0,t.jsx)(h.Button,{variant:"ghost",size:"icon-xs",onClick:()=>w(e.id),className:"shrink-0 text-muted-foreground opacity-0 hover:bg-destructive/10 hover:text-destructive group-hover:opacity-100",title:r("taskPage.deleteAttachment"),children:(0,t.jsx)(T.Trash2,{className:"h-3 w-3"})})]},e.id)})]})]})]})})}function eX({task:e,workspaceId:r,projectLocalPath:n,onClose:l}){let{t:i}=(0,o.useI18n)(),c=(0,a.useRouter)(),{removePortal:d}=(0,eD.useTerminalPortal)(),[m,x]=(0,s.useState)("terminal"),[u,p]=(0,s.useState)(null),[f,j]=(0,s.useState)(!1),[b,N]=(0,s.useState)(e.status);(0,s.useEffect)(()=>{N(e.status)},[e.status]);let[v,k]=(0,s.useState)(null),[y,w]=(0,s.useState)(!1),[C,S]=(0,s.useState)(!1),[P,T]=(0,s.useState)([]);(0,s.useEffect)(()=>{k(null),w(!1),S(!1),T([]),p(null),x("terminal")},[e.id]);let[E,D]=(0,s.useState)([]),[I,L]=(0,s.useState)(null);(0,s.useEffect)(()=>{let e=!1;return(0,eM.getPrompts)().then(t=>{if(e)return;D(t.map(e=>({id:e.id,name:e.name,isDefault:e.isDefault})));let s=t.find(e=>e.isDefault);s&&L(s.id)}),()=>{e=!0}},[]),(0,s.useEffect)(()=>{k(null),S(!1);let t=!1;return(0,eI.getTaskExecutions)(e.id).then(e=>{if(t)return;let s=e[0];if(s?.status==="RUNNING"){let e=s.worktreePath||n||null;e&&k(e)}T(e.filter(e=>"RUNNING"!==e.status)),S(!0)}),()=>{t=!0}},[e.id]),(0,s.useEffect)(()=>{if("changes"!==m||"TODO"===b||"CANCELLED"===b)return;let t=!1;return j(!0),fetch(`/api/tasks/${e.id}/diff`).then(e=>{if(!e.ok)throw Error(`HTTP ${e.status}`);return e.json()}).then(e=>{t||p(e?.files||e?.branchDeleted?e:null)}).catch(()=>{t||p(null)}).finally(()=>{t||j(!1)}),()=>{t=!0}},[m,b,e.id]);let B=(0,s.useCallback)(async()=>{if(!y){w(!0),d(e.id);try{let{worktreePath:t}=await (0,eL.startPtyExecution)(e.id,"",I);k(t),N("IN_PROGRESS")}catch(e){w(!1),ec.toast.error(e instanceof Error?e.message:String(e))}}},[e.id,y,I]),F=(0,s.useCallback)(t=>{w(!1),k(null),d(e.id),0===t&&N("IN_REVIEW"),(0,eI.getTaskExecutions)(e.id).then(e=>{T(e.filter(e=>"RUNNING"!==e.status))}),c.refresh()},[c,e.id]),O=(0,s.useCallback)(async()=>{await (0,eB.stopPtyExecution)(e.id),w(!1),d(e.id),k(null),N("IN_REVIEW"),(0,eI.getTaskExecutions)(e.id).then(e=>{T(e.filter(e=>"RUNNING"!==e.status))}),c.refresh()},[e.id,c]),$=(0,s.useCallback)(async t=>{w(!0),d(e.id),k(null);try{let{worktreePath:s}=await (0,eR.resumePtyExecution)(e.id,t);k(s),N("IN_PROGRESS")}catch{w(!1)}},[e.id,d]),A=(0,s.useCallback)(async()=>{w(!0),d(e.id),k(null);try{let{worktreePath:t}=await (0,eF.continueLatestPtyExecution)(e.id);k(t),N("IN_PROGRESS")}catch(e){w(!1),ec.toast.error(e instanceof Error?e.message:String(e))}},[e.id,d]),[M,z]=(0,s.useState)(!1),[U,W]=(0,s.useState)([]),_=(0,s.useCallback)(async()=>{try{let t=await (0,e$.checkWorktreeClean)(e.id);if(t.hasWorktree&&!t.clean)return void ec.toast.error(i("taskPage.uncommittedChanges",{count:String(t.files.length)}));if(t.hasWorktree&&t.clean&&!t.hasCommits)return void ec.toast.error(i("taskPage.noChangesToComplete"),{action:{label:i("taskPage.markAsCancelled"),onClick:()=>{(0,eO.updateTaskStatus)(e.id,"CANCELLED").then(()=>{N("CANCELLED"),ec.toast.success(i("taskPage.taskCancelled")),c.refresh()}).catch(()=>ec.toast.error("Failed to cancel task"))}}});if(t.hasWorktree&&t.hasCommits){W(t.commitLog),z(!0);return}await (0,eO.updateTaskStatus)(e.id,"DONE"),N("DONE"),ec.toast.success(i("taskPage.taskCompleted")),c.refresh()}catch{ec.toast.error("Failed to complete task")}},[e.id,c,i]),V=(0,s.useCallback)(()=>{N("DONE"),z(!1),ec.toast.success(i("taskPage.taskCompleted")),c.refresh()},[c,i]),K=(0,s.useCallback)(async t=>{try{let{hash:s}=await (0,eA.commitWorktreeChanges)(e.id,t);ec.toast.success(i("diff.commitSuccess",{hash:s})),c.refresh();let a=await fetch(`/api/tasks/${e.id}/diff`);if(a.ok){let e=await a.json();p(e?.files?e:null)}}catch(e){ec.toast.error(e instanceof Error?e.message:"Commit failed")}},[e.id,c,i]);return(0,t.jsxs)("div",{className:"flex h-full w-[600px] flex-shrink-0 flex-col border-l border-border bg-sidebar","data-testid":"task-detail-panel",children:[(0,t.jsx)(eP,{title:e.title,description:i("taskDetail.panelDescription"),branch:`task/${e.id}`,baseBranch:e.baseBranch,hasConversation:!1,updatedAt:e.updatedAt,onBack:l}),(0,t.jsxs)("div",{className:"flex items-center justify-between border-b border-border px-4 py-2",children:[(0,t.jsxs)("div",{className:"flex gap-1",children:[(0,t.jsxs)("button",{onClick:()=>x("terminal"),className:`flex items-center gap-1.5 px-3 py-1 text-xs font-medium rounded-md ${"terminal"===m?"bg-muted text-foreground":"text-muted-foreground hover:text-foreground"}`,children:[(0,t.jsx)(X.Terminal,{className:"h-3 w-3"}),i("terminal.execute")]}),(0,t.jsx)("button",{onClick:()=>x("changes"),className:`px-3 py-1 text-xs font-medium rounded-md ${"changes"===m?"bg-muted text-foreground":"text-muted-foreground hover:text-foreground"}`,children:i("taskPage.changes")}),(0,t.jsxs)("button",{onClick:()=>x("notes"),className:`flex items-center gap-1.5 px-3 py-1 text-xs font-medium rounded-md ${"notes"===m?"bg-muted text-foreground":"text-muted-foreground hover:text-foreground"}`,children:[(0,t.jsx)(G.FileText,{className:"h-3 w-3"}),i("taskPage.notes")]})]}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:["IN_REVIEW"===b&&(0,t.jsxs)(h.Button,{size:"sm",onClick:_,className:"bg-emerald-500/15 text-emerald-400 ring-1 ring-emerald-500/20 hover:bg-emerald-500/25",children:[(0,t.jsx)(ey.CheckCircle2,{className:"h-3 w-3"}),i("taskPage.completeTask")]}),"DONE"!==b&&"CANCELLED"!==b&&(0,t.jsxs)(h.Button,{variant:"ghost",size:"sm",onClick:()=>c.push(`/workspaces/${r}/tasks/${e.id}`),className:"text-muted-foreground",children:[(0,t.jsx)(ev.ExternalLink,{className:"h-3 w-3"}),i("taskPage.viewDetails")]})]})]}),"terminal"===m?(0,t.jsx)("div",{className:"flex-1 min-h-0 overflow-hidden",children:C?v?(0,t.jsxs)("div",{className:"flex h-full flex-col overflow-hidden",children:[(0,t.jsxs)("div",{className:"shrink-0 flex items-center justify-between border-b border-neutral-800 px-3 py-2 bg-[#0f1419]",children:[(0,t.jsxs)("span",{className:"flex items-center gap-1.5 text-xs text-emerald-400",children:[(0,t.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-emerald-400 animate-pulse"}),i("execution.running")]}),(0,t.jsxs)(ew.Tooltip,{children:[(0,t.jsxs)(ew.TooltipTrigger,{onClick:O,className:"flex items-center gap-1.5 rounded-md bg-red-500/15 px-3 py-1 text-xs font-medium text-red-400 hover:bg-red-500/25 transition-colors",children:[(0,t.jsx)(ek.Square,{className:"h-3 w-3"}),i("terminal.stopExecution")]}),(0,t.jsx)(ew.TooltipContent,{side:"bottom",children:i("terminal.stopHint")})]})]}),(0,t.jsx)("div",{className:"flex-1 min-h-0",children:(0,t.jsx)(eD.TerminalOutlet,{taskId:e.id,worktreePath:v,onSessionEnd:F})})]}):"DONE"===b||"CANCELLED"===b?(0,t.jsx)("div",{className:"flex h-full flex-col overflow-hidden",children:(0,t.jsx)(R.ScrollArea,{className:"flex-1 min-h-0",children:(0,t.jsx)(ez.ExecutionTimeline,{executions:P})})}):(0,t.jsxs)("div",{className:"flex h-full flex-col overflow-hidden",children:[(0,t.jsxs)("div",{className:"shrink-0 flex items-center gap-2 border-b border-border px-4 py-3",children:[E.length>0&&(0,t.jsxs)(g.Select,{defaultValue:I??"none",onValueChange:e=>L("none"===e?null:e),children:[(0,t.jsx)(g.SelectTrigger,{size:"sm",className:"min-w-[120px]",children:(0,t.jsx)("span",{className:"text-left truncate",children:I?E.find(e=>e.id===I)?.name??i("terminal.noPrompt"):i("terminal.noPrompt")})}),(0,t.jsxs)(g.SelectContent,{className:"min-w-[200px]",children:[(0,t.jsx)(g.SelectItem,{value:"none",children:i("terminal.noPrompt")}),E.map(e=>(0,t.jsxs)(g.SelectItem,{value:e.id,children:[e.name,e.isDefault?" ★":""]},e.id))]})]},`prompt-${E.length}`),(0,t.jsxs)(h.Button,{onClick:B,disabled:y,size:"sm",className:"gap-2 px-4",children:[y?(0,t.jsx)(H.Loader2,{className:"h-3.5 w-3.5 animate-spin"}):(0,t.jsx)(X.Terminal,{className:"h-3.5 w-3.5"}),y?i("terminal.executing"):i("terminal.launch")]})]}),(0,t.jsx)(R.ScrollArea,{className:"flex-1 min-h-0",children:(0,t.jsx)(ez.ExecutionTimeline,{executions:P,onResume:$,onContinueLatest:A})})]}):(0,t.jsxs)("div",{className:"flex h-full flex-col items-center justify-center gap-2 bg-[#0f1419]",children:[(0,t.jsx)(H.Loader2,{className:"size-5 animate-spin text-neutral-500"}),(0,t.jsx)("span",{className:"text-xs text-neutral-500",children:i("execution.loading")})]})}):"changes"===m?(0,t.jsx)("div",{className:"flex-1 min-h-0 overflow-hidden",children:f?(0,t.jsx)("div",{className:"flex h-full items-center justify-center",children:(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:i("taskPage.loadingDiff")})}):u?.branchDeleted?(0,t.jsx)("div",{className:"flex h-full items-center justify-center",children:(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:i("taskPage.branchDeleted")})}):u?(0,t.jsx)(eT.TaskDiffView,{taskId:e.id,files:u.files,totalAdded:u.totalAdded,totalRemoved:u.totalRemoved,hasConflicts:u.hasConflicts,conflictFiles:u.conflictFiles,onCommit:K,hasUncommitted:u.hasUncommitted}):(0,t.jsx)("div",{className:"flex h-full items-center justify-center",children:(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:i("taskPage.noChanges")})})}):"notes"===m?(0,t.jsx)("div",{className:"flex-1 min-h-0 overflow-hidden",children:(0,t.jsx)(eq,{taskId:e.id,projectId:e.projectId})}):null,(0,t.jsx)(eE.TaskMergeConfirmDialog,{open:M,onOpenChange:z,taskId:e.id,taskTitle:e.title,baseBranch:e.baseBranch??"main",fileCount:u?.files?.length??0,commitCount:u?.commitCount??0,commitLog:U,onMergeComplete:V})]})}var eQ=e.i(392239),eZ=e.i(541212);let e0=(0,Z.createServerReference)("40a176f62e3cd9394f472e0ba90da46e1f57b3828e",Z.callServer,void 0,Z.findSourceMapURL,"deleteTask"),e1=(0,Z.createServerReference)("40639b056920aaa0244d82b61a348fd8481650fba4",Z.callServer,void 0,Z.findSourceMapURL,"toggleTaskPinned"),e3=(0,Z.createServerReference)("4086ff4188ba5d2a2837028e868b13c62963d93529",Z.callServer,void 0,Z.findSourceMapURL,"getVersionsForPicker");var e5=e.i(19671);function e2({projects:e,activeProjectId:a,onSelect:r}){let n=(0,s.useRef)(null),[l,i]=(0,s.useState)(!1),[o,c]=(0,s.useState)(!1),d=()=>{let e=n.current;e&&(i(e.scrollLeft>0),c(e.scrollLeft<e.scrollWidth-e.clientWidth-1))};(0,s.useEffect)(()=>{d();let e=n.current;if(e){e.addEventListener("scroll",d);let t=new ResizeObserver(d);return t.observe(e),()=>{e.removeEventListener("scroll",d),t.disconnect()}}},[e]);let m=e=>{let t=n.current;t&&t.scrollBy({left:"left"===e?-150:150,behavior:"smooth"})};return(0,t.jsxs)("div",{className:"relative flex items-center",children:[l&&(0,t.jsx)("button",{onClick:()=>m("left"),className:"absolute left-0 z-10 flex h-8 w-8 items-center justify-center rounded-md bg-background/90 text-muted-foreground shadow-sm ring-1 ring-border backdrop-blur-sm transition-colors hover:text-foreground",children:(0,t.jsx)(e5.ChevronLeft,{className:"h-4 w-4"})}),(0,t.jsx)("div",{ref:n,className:"flex items-center gap-1.5 overflow-x-auto scrollbar-none px-1 py-1",style:{scrollbarWidth:"none",msOverflowStyle:"none"},children:e.map(e=>{let s=a===e.id;return(0,t.jsxs)("button",{onClick:()=>{s||r(e.id)},className:`shrink-0 rounded-lg border-b-2 px-4 py-2 text-sm font-medium transition-colors ${s?"border-primary bg-primary/10 text-primary ring-1 ring-primary/20 cursor-default":"border-transparent text-muted-foreground hover:bg-accent hover:text-foreground cursor-pointer"}`,children:[(0,t.jsx)("span",{children:e.name}),e.alias&&(0,t.jsx)("span",{className:"ml-1.5 text-xs text-muted-foreground font-normal",children:e.alias})]},e.id)})}),o&&(0,t.jsx)("button",{onClick:()=>m("right"),className:"absolute right-0 z-10 flex h-8 w-8 items-center justify-center rounded-md bg-background/90 text-muted-foreground shadow-sm ring-1 ring-border backdrop-blur-sm transition-colors hover:text-foreground",children:(0,t.jsx)(z.ChevronRight,{className:"h-4 w-4"})})]})}var e4=e.i(759686);function e8({open:e,onOpenChange:s,taskTitle:a,uncommittedFiles:r,commitLog:n,onConfirm:l}){let{t:i}=(0,o.useI18n)(),c=r.length,d=n.length,m=0===c&&0===d;return(0,t.jsx)(B.Dialog,{open:e,onOpenChange:s,children:(0,t.jsxs)(B.DialogContent,{showCloseButton:!0,className:"sm:max-w-md",children:[(0,t.jsx)(B.DialogHeader,{children:(0,t.jsxs)(B.DialogTitle,{className:"flex items-center gap-2",children:[(0,t.jsx)(e4.AlertTriangle,{className:"h-4 w-4 text-amber-400"}),i("taskCancel.title")]})}),(0,t.jsxs)("div",{className:"space-y-3 py-2",children:[(0,t.jsxs)("div",{className:"rounded-lg border border-amber-500/20 bg-amber-500/10 p-3 space-y-1.5",children:[(0,t.jsx)("p",{className:"text-xs text-foreground",children:i("taskCancel.intro",{title:a})}),(0,t.jsx)("p",{className:"text-xs text-amber-300",children:i("taskCancel.irreversible")})]}),m?(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:i("taskCancel.cleanNotice")}):(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:i("taskCancel.uncommittedFiles")}),(0,t.jsx)("span",{className:"text-xs font-medium text-foreground",children:c})]}),(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:i("taskCancel.unmergedCommits")}),(0,t.jsx)("span",{className:"text-xs font-medium text-foreground",children:d})]})]}),c>0&&(0,t.jsxs)("div",{children:[(0,t.jsx)("span",{className:"text-xs text-muted-foreground mb-1 block",children:i("taskCancel.filesList")}),(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:r.map((e,s)=>(0,t.jsx)("div",{className:"text-xs font-mono text-foreground/80",children:e},s))})]}),d>0&&(0,t.jsxs)("div",{children:[(0,t.jsx)("span",{className:"text-xs text-muted-foreground mb-1 block",children:i("taskCancel.commitsList")}),(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:n.map((e,s)=>(0,t.jsx)("div",{className:"text-xs font-mono text-foreground/80",children:e},s))}),(0,t.jsx)("p",{className:"text-[10px] text-muted-foreground mt-1.5",children:i("taskCancel.reflogHint")})]})]}),(0,t.jsxs)(B.DialogFooter,{children:[(0,t.jsx)(h.Button,{variant:"outline",onClick:()=>s(!1),children:i("taskCancel.keep")}),(0,t.jsxs)(h.Button,{variant:"destructive",onClick:l,className:"gap-2",children:[(0,t.jsx)(e4.AlertTriangle,{className:"h-4 w-4"}),i("taskCancel.confirm")]})]})]})})}e.s(["BoardPageClient",0,function({workspaceId:e,projectId:r,project:n,projects:l,initialTasks:i,labels:d,openTaskId:m}){let x=(0,a.useRouter)(),{t:u}=(0,o.useI18n)(),[,h]=(0,s.useTransition)(),[p,g]=(0,s.useState)(""),[j,b]=(0,s.useState)("all"),[v,k]=(0,s.useState)(!1),[y,w]=(0,s.useState)("TODO"),[C,S]=(0,s.useState)(m??null),[P,T]=(0,s.useState)([]),E=C?i.find(e=>e.id===C)??null:null,[D,I]=(0,s.useState)(null),[L,B]=(0,s.useState)(null),[R,F]=(0,s.useState)(null);(0,s.useEffect)(()=>{e3(r).then(T).catch(()=>T([]))},[r]);let O=P.find(e=>e.isCurrent)?.id??null,M=(0,s.useCallback)(()=>{h(()=>{x.refresh()})},[x]);(0,s.useEffect)(()=>{if(v)return;let e=setInterval(()=>{h(()=>{x.refresh()})},5e3);return()=>clearInterval(e)},[x,v]);let z=(0,s.useCallback)(e=>{g(e)},[]),U=(0,s.useCallback)(async e=>{let t=i.find(t=>t.id===e);if(t)try{let s=await (0,e$.checkWorktreeClean)(e);if(s.hasWorktree&&!s.clean){ec.toast.error(u("taskPage.uncommittedChanges",{count:String(s.files.length)})),M();return}if(s.hasWorktree&&s.clean&&!s.hasCommits){ec.toast.error(u("taskPage.noChangesToComplete"),{action:{label:u("taskPage.markAsCancelled"),onClick:()=>{(0,eO.updateTaskStatus)(e,"CANCELLED").then(()=>{ec.toast.success(u("taskPage.taskCancelled")),M()}).catch(()=>ec.toast.error("Failed to cancel task"))}}}),M();return}if(s.hasWorktree&&s.hasCommits){B({task:t,commitLog:s.commitLog,commitCount:s.commitLog.length}),M();return}await (0,eO.updateTaskStatus)(e,"DONE"),ec.toast.success(u("taskPage.taskCompleted")),M()}catch{ec.toast.error("Failed to complete task"),M()}},[i,M,u]),G=(0,s.useCallback)(async e=>{let t=i.find(t=>t.id===e);if(t)try{let s=await (0,e$.checkWorktreeClean)(e);if(!s.hasWorktree){await (0,eO.updateTaskStatus)(e,"CANCELLED"),ec.toast.success(u("taskPage.taskCancelled")),M();return}F({task:t,files:s.files,commitLog:s.commitLog}),M()}catch{ec.toast.error("Failed to cancel task"),M()}},[i,M,u]),W=(0,s.useCallback)(async(e,t)=>{"DONE"===t?await U(e):"CANCELLED"===t?await G(e):(await (0,eO.updateTaskStatus)(e,t),M())},[M,U,G]),_=(0,s.useCallback)(async t=>{let s=await (0,eQ.createTask)({title:t.title,description:t.description,projectId:r,priority:t.priority,status:t.status,labelIds:t.labelIds,baseBranch:t.baseBranch,subPath:t.subPath,versionId:t.versionId??void 0});if(M(),t.autoStart&&s?.id)try{await (0,eL.startPtyExecution)(s.id,""),x.push(`/workspaces/${e}/tasks/${s.id}`)}catch(e){ec.toast.error(e instanceof Error?e.message:String(e))}},[r,M,x,e]),V=(0,s.useCallback)(async(e,t)=>{await (0,eZ.updateTask)(e,{...t,labelIds:t.labelIds}),I(null),M()},[M]),H=(0,s.useCallback)(async e=>{await e0(e),C===e&&S(null),M()},[M,C]),K=(0,s.useCallback)(async e=>{await e1(e),M()},[M]),J=(0,s.useCallback)(async t=>{try{await (0,eL.startPtyExecution)(t,"")}catch(e){ec.toast.error(e instanceof Error?e.message:String(e))}x.push(`/workspaces/${e}/tasks/${t}`)},[x,e]),Y=(0,s.useCallback)(async(e,t)=>{"DONE"===t?await U(e):"CANCELLED"===t?await G(e):(await (0,eO.updateTaskStatus)(e,t),M())},[M,U,G]),q=(0,s.useCallback)(e=>{w(e),I(null),k(!0)},[]),X=(0,s.useCallback)(e=>{I(e),k(!0)},[]),Q=i.filter(e=>!e.labels?.some(e=>e.label.name===N.TOWER_LABEL_NAME&&e.label.isBuiltin)),Z=Q.filter(e=>{if("backlog"===j){if(e.versionId)return!1}else if("all"!==j&&e.versionId!==j)return!1;if(p.trim()){let t=p.toLowerCase();if(!e.title.toLowerCase().includes(t)&&!e.description?.toLowerCase().includes(t))return!1}return!0});return(0,t.jsxs)("div",{className:"flex h-full",children:[(0,t.jsxs)("div",{className:"flex flex-1 flex-col overflow-hidden",children:[(0,t.jsx)("div",{className:"px-6 pt-3 pb-1",children:(0,t.jsx)(e2,{projects:l,activeProjectId:r,onSelect:t=>x.push(`/workspaces/${e}?projectId=${t}`,{scroll:!1})})}),(0,t.jsx)(c,{totalTasks:Q.length,runningTasks:Q.filter(e=>"IN_PROGRESS"===e.status).length}),(0,t.jsx)(f,{searchQuery:p,onSearchChange:z,versions:P,versionFilter:j,onVersionFilterChange:b,versionsHref:`/workspaces/${e}/projects/${r}/versions`,onCreateTask:()=>{I(null),k(!0)}}),(0,t.jsx)("div",{className:"flex-1 min-h-0 overflow-hidden p-4",children:(0,t.jsx)($,{initialTasks:Z,onTaskMove:W,onTaskClick:e=>{S(e.id)},onEditTask:X,onAddTask:q,onDeleteTask:H,onTogglePin:K,workspaceId:e,onContextMenuStatusChange:Y,onContextMenuLaunch:J})}),(0,t.jsx)(A.CreateTaskDialog,{open:v,onOpenChange:e=>{k(e),e||I(null)},onSubmit:_,onUpdate:V,defaultStatus:y,editTask:D,editTaskLabelIds:D?.labels?D.labels.map(e=>e.labelId):[],labels:d.filter(e=>!(e.name===N.TOWER_LABEL_NAME&&e.isBuiltin)),projectType:n.type,projectLocalPath:n.localPath,versions:P,defaultVersionId:O})]}),E?(0,t.jsx)(eX,{task:E,workspaceId:e,projectLocalPath:n.localPath,onClose:()=>S(null)}):(0,t.jsx)(eb,{project:n,workspaceId:e}),L&&(0,t.jsx)(eE.TaskMergeConfirmDialog,{open:!0,onOpenChange:e=>{e||B(null)},taskId:L.task.id,taskTitle:L.task.title,baseBranch:L.task.baseBranch??"main",fileCount:0,commitCount:L.commitCount,commitLog:L.commitLog,onMergeComplete:()=>{B(null),ec.toast.success(u("taskPage.taskCompleted")),M()}}),R&&(0,t.jsx)(e8,{open:!0,onOpenChange:e=>{e||F(null)},taskTitle:R.task.title,uncommittedFiles:R.files,commitLog:R.commitLog,onConfirm:()=>{let e=R.task.id;F(null),(0,eO.updateTaskStatus)(e,"CANCELLED").then(()=>{ec.toast.success(u("taskPage.taskCancelled")),M()}).catch(()=>ec.toast.error("Failed to cancel task"))}})]})}],783426)}]);