tower-studio 0.2.12 → 0.2.14

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 (327) 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 -3
  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/react-loadable-manifest.json +1 -1
  12. package/.next/standalone/.next/server/app/_not-found/page/server-reference-manifest.json +35 -35
  13. package/.next/standalone/.next/server/app/_not-found/page.js +5 -5
  14. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  15. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  16. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  17. package/.next/standalone/.next/server/app/_not-found.rsc +15 -15
  18. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +15 -15
  19. package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
  20. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +9 -9
  21. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  22. package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  23. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  24. package/.next/standalone/.next/server/app/api/adapters/test/route.js +3 -3
  25. package/.next/standalone/.next/server/app/api/adapters/test/route.js.nft.json +1 -1
  26. package/.next/standalone/.next/server/app/api/browse-fs/route.js.nft.json +1 -1
  27. package/.next/standalone/.next/server/app/api/files/assets/[projectId]/[filename]/route.js +1 -1
  28. package/.next/standalone/.next/server/app/api/files/assets/[projectId]/[filename]/route.js.nft.json +1 -1
  29. package/.next/standalone/.next/server/app/api/git/route.js +1 -1
  30. package/.next/standalone/.next/server/app/api/git/route.js.nft.json +1 -1
  31. package/.next/standalone/.next/server/app/api/internal/assets/[projectId]/[filename]/route.js +1 -1
  32. package/.next/standalone/.next/server/app/api/internal/assets/[projectId]/[filename]/route.js.nft.json +1 -1
  33. package/.next/standalone/.next/server/app/api/internal/assistant/attachments/route.js +1 -1
  34. package/.next/standalone/.next/server/app/api/internal/assistant/attachments/route.js.nft.json +1 -1
  35. package/.next/standalone/.next/server/app/api/internal/assistant/chat/route.js +3 -2
  36. package/.next/standalone/.next/server/app/api/internal/assistant/chat/route.js.nft.json +1 -1
  37. package/.next/standalone/.next/server/app/api/internal/assistant/route.js +2 -2
  38. package/.next/standalone/.next/server/app/api/internal/assistant/route.js.nft.json +1 -1
  39. package/.next/standalone/.next/server/app/api/internal/assistant/sessions/route.js +2 -2
  40. package/.next/standalone/.next/server/app/api/internal/assistant/sessions/route.js.nft.json +1 -1
  41. package/.next/standalone/.next/server/app/api/internal/backup/import/route.js +1 -1
  42. package/.next/standalone/.next/server/app/api/internal/backup/import/route.js.nft.json +1 -1
  43. package/.next/standalone/.next/server/app/api/internal/cache/[...segments]/route.js +1 -1
  44. package/.next/standalone/.next/server/app/api/internal/cache/[...segments]/route.js.nft.json +1 -1
  45. package/.next/standalone/.next/server/app/api/internal/hooks/install/route.js +1 -1
  46. package/.next/standalone/.next/server/app/api/internal/hooks/install/route.js.nft.json +1 -1
  47. package/.next/standalone/.next/server/app/api/internal/hooks/upload/route.js +1 -1
  48. package/.next/standalone/.next/server/app/api/internal/hooks/upload/route.js.nft.json +1 -1
  49. package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/start/route.js +3 -3
  50. package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/start/route.js.nft.json +1 -1
  51. package/.next/standalone/.next/server/app/index.html +1 -1
  52. package/.next/standalone/.next/server/app/index.rsc +15 -15
  53. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  54. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +15 -15
  55. package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +4 -4
  56. package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +9 -9
  57. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  58. package/.next/standalone/.next/server/app/missions/page/react-loadable-manifest.json +1 -1
  59. package/.next/standalone/.next/server/app/missions/page/server-reference-manifest.json +69 -69
  60. package/.next/standalone/.next/server/app/missions/page.js +5 -5
  61. package/.next/standalone/.next/server/app/missions/page.js.nft.json +1 -1
  62. package/.next/standalone/.next/server/app/missions/page_client-reference-manifest.js +1 -1
  63. package/.next/standalone/.next/server/app/onboarding/page/react-loadable-manifest.json +1 -1
  64. package/.next/standalone/.next/server/app/onboarding/page/server-reference-manifest.json +35 -35
  65. package/.next/standalone/.next/server/app/onboarding/page.js +5 -5
  66. package/.next/standalone/.next/server/app/onboarding/page.js.nft.json +1 -1
  67. package/.next/standalone/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  68. package/.next/standalone/.next/server/app/onboarding.html +1 -1
  69. package/.next/standalone/.next/server/app/onboarding.rsc +17 -17
  70. package/.next/standalone/.next/server/app/onboarding.segments/_full.segment.rsc +17 -17
  71. package/.next/standalone/.next/server/app/onboarding.segments/_head.segment.rsc +4 -4
  72. package/.next/standalone/.next/server/app/onboarding.segments/_index.segment.rsc +9 -9
  73. package/.next/standalone/.next/server/app/onboarding.segments/_tree.segment.rsc +1 -1
  74. package/.next/standalone/.next/server/app/onboarding.segments/onboarding/__PAGE__.segment.rsc +4 -4
  75. package/.next/standalone/.next/server/app/onboarding.segments/onboarding.segment.rsc +3 -3
  76. package/.next/standalone/.next/server/app/page/react-loadable-manifest.json +1 -1
  77. package/.next/standalone/.next/server/app/page/server-reference-manifest.json +35 -35
  78. package/.next/standalone/.next/server/app/page.js +5 -5
  79. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  80. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  81. package/.next/standalone/.next/server/app/settings/page/react-loadable-manifest.json +1 -1
  82. package/.next/standalone/.next/server/app/settings/page/server-reference-manifest.json +48 -48
  83. package/.next/standalone/.next/server/app/settings/page.js +5 -5
  84. package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
  85. package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  86. package/.next/standalone/.next/server/app/settings.html +1 -1
  87. package/.next/standalone/.next/server/app/settings.rsc +17 -17
  88. package/.next/standalone/.next/server/app/settings.segments/_full.segment.rsc +17 -17
  89. package/.next/standalone/.next/server/app/settings.segments/_head.segment.rsc +4 -4
  90. package/.next/standalone/.next/server/app/settings.segments/_index.segment.rsc +9 -9
  91. package/.next/standalone/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
  92. package/.next/standalone/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +4 -4
  93. package/.next/standalone/.next/server/app/settings.segments/settings.segment.rsc +3 -3
  94. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/archive/page/react-loadable-manifest.json +1 -1
  95. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/archive/page/server-reference-manifest.json +96 -96
  96. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/archive/page.js +5 -5
  97. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/archive/page.js.nft.json +1 -1
  98. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/archive/page_client-reference-manifest.js +1 -1
  99. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/assets/page/react-loadable-manifest.json +1 -1
  100. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/assets/page/server-reference-manifest.json +78 -78
  101. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/assets/page.js +5 -5
  102. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/assets/page.js.nft.json +1 -1
  103. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/assets/page_client-reference-manifest.js +1 -1
  104. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/notes/page/react-loadable-manifest.json +1 -1
  105. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/notes/page/server-reference-manifest.json +73 -73
  106. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/notes/page.js +5 -5
  107. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/notes/page.js.nft.json +1 -1
  108. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/notes/page_client-reference-manifest.js +1 -1
  109. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/page/react-loadable-manifest.json +1 -1
  110. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/page/server-reference-manifest.json +64 -64
  111. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/page.js +6 -6
  112. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/page.js.nft.json +1 -1
  113. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/page_client-reference-manifest.js +1 -1
  114. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page/react-loadable-manifest.json +1 -1
  115. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page/server-reference-manifest.json +35 -35
  116. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page.js +6 -6
  117. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page.js.nft.json +1 -1
  118. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page_client-reference-manifest.js +1 -1
  119. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/versions/page/react-loadable-manifest.json +1 -1
  120. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/versions/page/server-reference-manifest.json +72 -72
  121. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/versions/page.js +5 -5
  122. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/versions/page.js.nft.json +1 -1
  123. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/versions/page_client-reference-manifest.js +1 -1
  124. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page/react-loadable-manifest.json +2 -2
  125. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page/server-reference-manifest.json +82 -82
  126. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page.js +7 -7
  127. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page.js.nft.json +1 -1
  128. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page_client-reference-manifest.js +1 -1
  129. package/.next/standalone/.next/server/app/workspaces/page/react-loadable-manifest.json +1 -1
  130. package/.next/standalone/.next/server/app/workspaces/page/server-reference-manifest.json +55 -55
  131. package/.next/standalone/.next/server/app/workspaces/page.js +5 -5
  132. package/.next/standalone/.next/server/app/workspaces/page.js.nft.json +1 -1
  133. package/.next/standalone/.next/server/app/workspaces/page_client-reference-manifest.js +1 -1
  134. package/.next/standalone/.next/server/chunks/0se9_next_dist_esm_build_templates_app-route_0hrprmi.js +1 -1
  135. package/.next/standalone/.next/server/chunks/[externals]__07308ej._.js +3 -0
  136. package/.next/standalone/.next/server/chunks/[externals]__12mj_bs._.js +3 -0
  137. package/.next/standalone/.next/server/chunks/[root-of-the-server]__00mjz~7._.js +1 -1
  138. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__07f7~6u._.js → [root-of-the-server]__03j20vp._.js} +3 -3
  139. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__03gi3ue._.js → [root-of-the-server]__04qke1x._.js} +3 -3
  140. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0d~z6xs._.js → [root-of-the-server]__08v2air._.js} +3 -3
  141. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__028ucbo._.js → [root-of-the-server]__09pc-71._.js} +3 -3
  142. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0iyp~.k._.js +20 -0
  143. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ogh_qu._.js +2 -2
  144. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0qif839._.js +4 -0
  145. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0r0nj9k._.js +20 -0
  146. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0n0cdrs._.js → [root-of-the-server]__0rvsc5q._.js} +2 -2
  147. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0cwgqg2._.js → [root-of-the-server]__0stmn6n._.js} +2 -2
  148. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__06hktr2._.js → [root-of-the-server]__0umocfj._.js} +2 -2
  149. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0wotir9._.js +11 -0
  150. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__00fx8qq._.js → [root-of-the-server]__0z-k6vg._.js} +2 -2
  151. package/.next/standalone/.next/server/chunks/src_0bkvm8c._.js +1 -1
  152. package/.next/standalone/.next/server/chunks/src_lib_0aowbzy._.js +3 -0
  153. package/.next/standalone/.next/server/chunks/src_lib_0nw5n~t._.js +3 -0
  154. package/.next/standalone/.next/server/chunks/ssr/0iu._[workspaceId]_projects_[projectId]_versions_version-timeline-client_tsx_07o_kyi._.js +1 -1
  155. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0-pcbjc._.js +30 -0
  156. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0.bvw5b._.js +4 -0
  157. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__04nht4_._.js +30 -0
  158. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__06ci01x._.js +30 -0
  159. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__06fz814._.js +3 -0
  160. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__08icsmr._.js +30 -0
  161. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__098yytg._.js +30 -0
  162. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0b7rna9._.js +30 -0
  163. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0b8cn~b._.js +30 -0
  164. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0clm.cb._.js +30 -0
  165. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0f6jg2_._.js +3 -0
  166. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0gaiasa._.js +3 -0
  167. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0lipl.6._.js → [root-of-the-server]__0k23.h1._.js} +2 -2
  168. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0n-4zp8._.js +3 -0
  169. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0myrdxo._.js → [root-of-the-server]__0pj4ghy._.js} +1 -1
  170. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0ps55l6._.js +1 -1
  171. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0snkwkk._.js +3 -0
  172. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0ss.-i7._.js +30 -0
  173. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0hwl8ew._.js → [root-of-the-server]__0vk3eou._.js} +2 -2
  174. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0vqar.7._.js +3 -0
  175. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0x81w9c._.js +30 -0
  176. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0yr--da._.js +3 -0
  177. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0zb9q4h._.js → [root-of-the-server]__0z1phoe._.js} +2 -2
  178. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0~8i4lj._.js +3 -0
  179. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0wvyks.._.js → [root-of-the-server]__10yxmur._.js} +2 -2
  180. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__11dfb6z._.js +3 -0
  181. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__11einlk._.js +30 -0
  182. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__11zjs~k._.js +3 -0
  183. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__13wezd4._.js +30 -0
  184. package/.next/standalone/.next/server/chunks/ssr/{_109h4z-._.js → _00-v8~4._.js} +1 -1
  185. package/.next/standalone/.next/server/chunks/ssr/_05h.8a~._.js +1 -1
  186. package/.next/standalone/.next/server/chunks/ssr/_06sgp6h._.js +3 -0
  187. package/.next/standalone/.next/server/chunks/ssr/{_0qzkt..._.js → _09gfkbi._.js} +1 -1
  188. package/.next/standalone/.next/server/chunks/ssr/_0_l8.dg._.js +1 -1
  189. package/.next/standalone/.next/server/chunks/ssr/{_0h8g7_g._.js → _0bxf9ev._.js} +2 -2
  190. package/.next/standalone/.next/server/chunks/ssr/_0cf4wa5._.js +7 -0
  191. package/.next/standalone/.next/server/chunks/ssr/_0cj9a7y._.js +1 -1
  192. package/.next/standalone/.next/server/chunks/ssr/_0h~yckx._.js +3 -0
  193. package/.next/standalone/.next/server/chunks/ssr/_0i4__mf._.js +1 -1
  194. package/.next/standalone/.next/server/chunks/ssr/{_0p0-eyg._.js → _0istl17._.js} +2 -2
  195. package/.next/standalone/.next/server/chunks/ssr/_0kkxrcc._.js +3 -0
  196. package/.next/standalone/.next/server/chunks/ssr/{_0m5sihc._.js → _0mvc5xq._.js} +2 -2
  197. package/.next/standalone/.next/server/chunks/ssr/{_003qoge._.js → _0nbldfa._.js} +2 -2
  198. package/.next/standalone/.next/server/chunks/ssr/_0nia_eb._.js +7 -0
  199. package/.next/standalone/.next/server/chunks/ssr/{_13duqz7._.js → _0of7fy7._.js} +1 -1
  200. package/.next/standalone/.next/server/chunks/ssr/{_0vcf0-e._.js → _0ome.i4._.js} +2 -2
  201. package/.next/standalone/.next/server/chunks/ssr/_0pgn51u._.js +7 -0
  202. package/.next/standalone/.next/server/chunks/ssr/{_0_f2g9z._.js → _0q6ax60._.js} +1 -1
  203. package/.next/standalone/.next/server/chunks/ssr/{_0.obv1p._.js → _0rk3o8h._.js} +1 -1
  204. package/.next/standalone/.next/server/chunks/ssr/{_008q_0v._.js → _0s10w76._.js} +2 -2
  205. package/.next/standalone/.next/server/chunks/ssr/{_0td~e1-._.js → _0v_1aum._.js} +2 -2
  206. package/.next/standalone/.next/server/chunks/ssr/{_07ax4.m._.js → _0w3~ri1._.js} +2 -2
  207. package/.next/standalone/.next/server/chunks/ssr/_0wvv86n._.js +3 -0
  208. package/.next/standalone/.next/server/chunks/ssr/_0xrgx~o._.js +3 -0
  209. package/.next/standalone/.next/server/chunks/ssr/{_0bowgha._.js → _0yp1dzk._.js} +1 -1
  210. package/.next/standalone/.next/server/chunks/ssr/_0~80adm._.js +3 -3
  211. package/.next/standalone/.next/server/chunks/ssr/{_0wdm870._.js → _102gd3m._.js} +1 -1
  212. package/.next/standalone/.next/server/chunks/ssr/_10dvolb._.js +3 -0
  213. package/.next/standalone/.next/server/chunks/ssr/src_0eufeyj._.js +1 -1
  214. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__03ebsif._.js → src_0j_1~da._.js} +4 -4
  215. package/.next/standalone/.next/server/chunks/ssr/src_13jha60._.js +1 -1
  216. package/.next/standalone/.next/server/chunks/ssr/src_actions_agent-actions_ts_0~wc.sy._.js +1 -1
  217. package/.next/standalone/.next/server/chunks/ssr/src_actions_file-actions_ts_0gcvqwm._.js +1 -1
  218. package/.next/standalone/.next/server/chunks/ssr/src_actions_search-code-actions_ts_0k9u5d~._.js +3 -0
  219. package/.next/standalone/.next/server/chunks/ssr/src_app_missions_missions-client_tsx_11429lj._.js +1 -1
  220. package/.next/standalone/.next/server/chunks/ssr/src_app_onboarding_page_tsx_0xf7hpz._.js +1 -1
  221. package/.next/standalone/.next/server/chunks/ssr/src_app_settings_page_tsx_0h9v7dr._.js +1 -1
  222. package/.next/standalone/.next/server/chunks/ssr/src_app_workspaces_[workspaceId]_assets_assets-page-client_tsx_0wyzpam._.js +1 -1
  223. package/.next/standalone/.next/server/chunks/ssr/src_app_workspaces_[workspaceId]_board-page-client_tsx_0gips66._.js +1 -1
  224. package/.next/standalone/.next/server/chunks/ssr/src_app_workspaces_[workspaceId]_tasks_[taskId]_task-page-client_tsx_02t7blt._.js +1 -1
  225. package/.next/standalone/.next/server/chunks/ssr/{src_lib_05~z630._.js → src_lib_02~8o7n._.js} +1 -1
  226. package/.next/standalone/.next/server/chunks/ssr/{src_lib_061yy7e._.js → src_lib_05._ry~._.js} +1 -1
  227. package/.next/standalone/.next/server/chunks/ssr/{src_lib_0.8j.z6._.js → src_lib_0d6br1r._.js} +1 -1
  228. package/.next/standalone/.next/server/chunks/ssr/{src_lib_02v1~f3._.js → src_lib_0d7-dyi._.js} +1 -1
  229. package/.next/standalone/.next/server/chunks/ssr/src_lib_0iq4x_.._.js +3 -0
  230. package/.next/standalone/.next/server/chunks/ssr/src_lib_0me8mly._.js +3 -0
  231. package/.next/standalone/.next/server/chunks/ssr/src_lib_0ngr9__._.js +3 -0
  232. package/.next/standalone/.next/server/chunks/ssr/src_lib_0qu3epc._.js +3 -0
  233. package/.next/standalone/.next/server/chunks/ssr/src_lib_0r2kk28._.js +3 -0
  234. package/.next/standalone/.next/server/chunks/ssr/src_lib_0v-t4im._.js +3 -0
  235. package/.next/standalone/.next/server/chunks/ssr/src_lib_0v244ym._.js +3 -0
  236. package/.next/standalone/.next/server/chunks/ssr/src_lib_0y0c60a._.js +3 -0
  237. package/.next/standalone/.next/server/chunks/ssr/src_lib_13f4e5p._.js +3 -0
  238. package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
  239. package/.next/standalone/.next/server/pages/404.html +1 -1
  240. package/.next/standalone/.next/server/pages/500.html +1 -1
  241. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  242. package/.next/standalone/.next/server/server-reference-manifest.json +257 -257
  243. package/.next/standalone/.next/static/chunks/{0h3-~sna4okq2.js → 0.8v0ovyop-~2.js} +1 -1
  244. package/.next/standalone/.next/static/chunks/{0v-7eievh_rkh.js → 00l2hb0-8vqxa.js} +2 -2
  245. package/.next/standalone/.next/static/chunks/{0sgaa06_07.8u.js → 07pvcpi6zp562.js} +2 -2
  246. package/.next/standalone/.next/static/chunks/08xj788_-g4ro.js +1 -0
  247. package/.next/standalone/.next/static/chunks/{0q4az7r-d-n~g.js → 0gw.5-0.yxwx-.js} +1 -1
  248. package/.next/standalone/.next/static/chunks/{0zxdsce2j9r4a.js → 0q6i.u46oj3et.js} +1 -1
  249. package/.next/standalone/.next/static/chunks/{0xk7u4vr-rwn8.js → 0qx8zbx8~0kzb.js} +1 -1
  250. package/.next/standalone/.next/static/chunks/{010xl0lpp55xe.js → 0v5-g5xtcj48u.js} +1 -1
  251. package/.next/standalone/.next/static/chunks/0vg7vvvpc41pt.js +1 -0
  252. package/.next/standalone/.next/static/chunks/{0w0vkomv~5a72.js → 0wuryio392ep..js} +1 -1
  253. package/.next/standalone/.next/static/chunks/0x-x1fbxj_xqd.js +1 -0
  254. package/.next/standalone/.next/static/chunks/{0ns9v_d.3s~uo.js → 0xw4lc5b8_ksq.js} +1 -1
  255. package/.next/standalone/.next/static/chunks/0y5a_8x-kzjh~.js +1 -0
  256. package/.next/standalone/.next/static/chunks/{01e93lnruej42.js → 0zvvx~xakrlk3.js} +1 -1
  257. package/.next/standalone/.next/static/chunks/{0khynh_kl0aog.js → 10m3b0915q6yz.js} +1 -1
  258. package/.next/standalone/.next/static/chunks/{0uepevftf8c0j.js → 11fsu1zog.5r2.js} +2 -2
  259. package/.next/standalone/.next/static/chunks/{0rgyeuy~3vua-.js → 11qxjwptzbka2.js} +1 -1
  260. package/.next/standalone/.next/static/chunks/162.req.5srx1.js +1 -0
  261. package/.next/standalone/.next/static/chunks/1633lyb6elnxv.js +1 -0
  262. package/.next/standalone/.next/static/chunks/{0f820g2c4omlb.js → 17fjz63sudhsi.js} +2 -2
  263. package/.next/standalone/.next/static/chunks/184w42tfqip9h.js +1 -0
  264. package/.next/standalone/package.json +1 -1
  265. package/package.json +1 -1
  266. package/.next/standalone/.next/server/chunks/[externals]__09i7990._.js +0 -3
  267. package/.next/standalone/.next/server/chunks/[externals]__0mwl_.i._.js +0 -3
  268. package/.next/standalone/.next/server/chunks/[root-of-the-server]__05eviiz._.js +0 -20
  269. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0_90467._.js +0 -3
  270. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0e44k3f._.js +0 -20
  271. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0h.z9fm._.js +0 -11
  272. package/.next/standalone/.next/server/chunks/_0_w835g._.js +0 -4
  273. package/.next/standalone/.next/server/chunks/src_lib_0ba0ntr._.js +0 -3
  274. package/.next/standalone/.next/server/chunks/src_lib_ai_0q-~me1._.js +0 -3
  275. package/.next/standalone/.next/server/chunks/ssr/[externals]_@vscode_ripgrep_0ylq4j7._.js +0 -3
  276. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0-gtzf3._.js +0 -30
  277. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0047xda._.js +0 -30
  278. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__03fx0ja._.js +0 -30
  279. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__08n5qbf._.js +0 -3
  280. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__09vrijh._.js +0 -3
  281. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0a6h8gd._.js +0 -3
  282. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0akzln5._.js +0 -3
  283. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0bpfp11._.js +0 -30
  284. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0di.lno._.js +0 -3
  285. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0e.z.70._.js +0 -30
  286. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0eu0ho5._.js +0 -30
  287. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0h3qzpw._.js +0 -30
  288. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0hi0yzd._.js +0 -3
  289. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0i1yr6p._.js +0 -3
  290. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0iy-id0._.js +0 -4
  291. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0k9v1jm._.js +0 -30
  292. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0m1rkbb._.js +0 -30
  293. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0n78kqj._.js +0 -30
  294. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0ribsk4._.js +0 -3
  295. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0rifydx._.js +0 -3
  296. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0sb.sz3._.js +0 -30
  297. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0tq_14j._.js +0 -30
  298. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0wjg_.n._.js +0 -3
  299. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__10.y4wq._.js +0 -3
  300. package/.next/standalone/.next/server/chunks/ssr/_0._ejth._.js +0 -3
  301. package/.next/standalone/.next/server/chunks/ssr/_0dig3de._.js +0 -7
  302. package/.next/standalone/.next/server/chunks/ssr/_0f6qjbg._.js +0 -3
  303. package/.next/standalone/.next/server/chunks/ssr/_0l4wi9q._.js +0 -7
  304. package/.next/standalone/.next/server/chunks/ssr/_0miyz-f._.js +0 -3
  305. package/.next/standalone/.next/server/chunks/ssr/_0t4lzoj._.js +0 -7
  306. package/.next/standalone/.next/server/chunks/ssr/_0vk31-9._.js +0 -3
  307. package/.next/standalone/.next/server/chunks/ssr/_0xtk7wi._.js +0 -3
  308. package/.next/standalone/.next/server/chunks/ssr/_0~a80th._.js +0 -3
  309. package/.next/standalone/.next/server/chunks/ssr/src_lib_09uekh_._.js +0 -3
  310. package/.next/standalone/.next/server/chunks/ssr/src_lib_09y4fnl._.js +0 -3
  311. package/.next/standalone/.next/server/chunks/ssr/src_lib_0a7f32~._.js +0 -3
  312. package/.next/standalone/.next/server/chunks/ssr/src_lib_0aeqb5m._.js +0 -3
  313. package/.next/standalone/.next/server/chunks/ssr/src_lib_0p183eh._.js +0 -3
  314. package/.next/standalone/.next/server/chunks/ssr/src_lib_0uyb_-k._.js +0 -3
  315. package/.next/standalone/.next/server/chunks/ssr/src_lib_0vhhwfe._.js +0 -3
  316. package/.next/standalone/.next/server/chunks/ssr/src_lib_10i7f.9._.js +0 -3
  317. package/.next/standalone/.next/server/chunks/ssr/src_lib_137bst6._.js +0 -3
  318. package/.next/standalone/.next/static/chunks/022_88ef~e93a.js +0 -1
  319. package/.next/standalone/.next/static/chunks/0azh0__hpbe-z.js +0 -1
  320. package/.next/standalone/.next/static/chunks/0cg0zjodapp79.js +0 -1
  321. package/.next/standalone/.next/static/chunks/0eqr_08akp8xl.js +0 -1
  322. package/.next/standalone/.next/static/chunks/0s.g.dge529_6.js +0 -1
  323. package/.next/standalone/.next/static/chunks/0xrh8~725gqdt.js +0 -1
  324. package/.next/standalone/.next/static/chunks/14630b661zu3g.js +0 -1
  325. /package/.next/standalone/.next/static/{U-HwmuCE_TgwA_Rd4SjpZ → _ZiE8oD76fu2E6vKTuPlS}/_buildManifest.js +0 -0
  326. /package/.next/standalone/.next/static/{U-HwmuCE_TgwA_Rd4SjpZ → _ZiE8oD76fu2E6vKTuPlS}/_clientMiddlewareManifest.js +0 -0
  327. /package/.next/standalone/.next/static/{U-HwmuCE_TgwA_Rd4SjpZ → _ZiE8oD76fu2E6vKTuPlS}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- module.exports=[378322,a=>{"use strict";class b{providers=new Map;register(a){this.providers.set(a.name,a)}get(a){return this.providers.get(a)}getAll(){return Array.from(this.providers.values())}getCliAdapter(a){return this.providers.get(a)?.cli?.adapter??null}getQueryAdapter(a,b){let c=this.providers.get(a);return c?"api"===b?c.api?.adapter??null:c.cliQuery?.adapter??null:null}getAllowedCommands(){let a=[];for(let b of this.providers.values())b.cli?.command&&a.push(b.cli.command);return a}async getAvailableProviders(){let a=[];for(let b of this.providers.values()){let c=!!b.cli&&await b.cli.adapter.isAvailable(),d=c&&b.cli?await b.cli.adapter.getVersion():null,e=!!b.api&&!!process.env[b.api.keyEnvVar],f=!!b.api&&e;a.push({name:b.name,displayName:b.displayName,cli:{available:c,version:d},api:{available:f,keyConfigured:e}})}return a}}var c=a.i(52350),d=a.i(902157),e=a.i(660526),f=a.i(750227),g=a.i(163812),h=a.i(562278);let i=["o4-mini","o3","gpt-4.1","gpt-4.1-mini","gpt-4.1-nano","codex-mini-latest"],j=globalThis;if(!j.__providerRegistry){let k=new b;k.register({name:"claude",displayName:"Claude Code",agentFieldValue:"CLAUDE_CODE",cli:{command:"claude",adapter:new c.ClaudeCliAdapter},models:{cli:["sonnet","opus","haiku","claude-sonnet-4-6","claude-opus-4-6","claude-haiku-4-5-20251001"],api:[]}}),k.register({name:"codex",displayName:"Codex CLI",agentFieldValue:"CODEX_CLI",cli:{command:"codex",adapter:new class b{buildSpawnArgs(a){let b=[];a.resumeSessionId?b.push("resume",a.resumeSessionId):a.continueLatest?b.push("resume","--last"):(b.push("--full-auto"),a.extraArgs?.length&&b.push(...a.extraArgs),a.prompt&&b.push(a.prompt));let c={...a.envOverrides??{}};return{command:this.resolveCommand(),args:b,env:c}}buildEnvOverrides(a){let b={TOWER_TASK_ID:a.taskId,TOWER_TASK_TITLE:a.taskTitle,TOWER_STARTED_AT:new Date().toISOString(),TOWER_API_URL:a.apiUrl};return a.callbackUrl&&(b.CALLBACK_URL=a.callbackUrl),b}async installHooks(a){try{let a=this.readHooks(),b=(0,h.getPackageRoot)().replace(/\\/g,"/"),c=f.join(b,"scripts","session-start-hook.js").replace(/\\/g,"/"),d=f.join(b,"scripts","post-tool-hook.js").replace(/\\/g,"/"),e=f.join(b,"scripts","stop-hook.js").replace(/\\/g,"/"),g=!1;return g=this.upsertHook(a,"SessionStart","session-start-hook.js",{hooks:[{command:`node "${c}"`,timeout:5,type:"command"}]})||g,g=this.upsertHook(a,"PostToolUse","post-tool-hook.js",{hooks:[{command:`node "${d}"`,timeout:10,type:"command"}],matcher:"Write|Edit|MultiEdit"})||g,(g=this.upsertHook(a,"Stop","stop-hook.js",{hooks:[{command:`node "${e}"`,timeout:5,type:"command"}]})||g)&&(this.writeHooks(a),this.ensureHooksFeatureEnabled()),{ok:!0,method:"file",detail:this.getHooksPath()}}catch(a){return{ok:!1,method:"file",detail:this.getHooksPath(),error:a instanceof Error?a.message:String(a)}}}async repairHookPaths(){try{let a=this.readHooks(),b=(0,h.getPackageRoot)().replace(/\\/g,"/"),c=!1;for(let[d,e]of[["SessionStart","session-start-hook.js"],["PostToolUse","post-tool-hook.js"],["Stop","stop-hook.js"]]){let g=this.getHookArray(a,d),h=g.findIndex(a=>a?.hooks?.some?.(a=>a.command?.includes(e)));if(h<0)continue;let i=f.join(b,"scripts",e).replace(/\\/g,"/"),j=`node "${i}"`,k=g[h]?.hooks?.[0];k&&k.command!==j&&(k.command=j,a[d]=g,c=!0)}c&&(this.writeHooks(a),this.ensureHooksFeatureEnabled())}catch{}}upsertHook(a,b,c,d){let e=this.getHookArray(a,b),f=d?.hooks?.[0]?.command,g=e.findIndex(a=>a?.hooks?.some?.(a=>a.command?.includes(c)));if(g>=0){if(e[g]?.hooks?.[0]?.command===f)return!1;e.splice(g,1)}return e.push(d),a[b]=e,!0}async uninstallHooks(){try{let a=this.readHooks(),b=["session-start-hook.js","post-tool-hook.js","stop-hook.js"];for(let c of["SessionStart","PostToolUse","Stop"]){let d=this.getHookArray(a,c);a[c]=d.filter(a=>!a.hooks?.some(a=>b.some(b=>a.command?.includes(b))))}return this.writeHooks(a),{ok:!0,method:"file",detail:this.getHooksPath()}}catch(a){return{ok:!1,method:"file",detail:this.getHooksPath(),error:a instanceof Error?a.message:String(a)}}}async isHooksInstalled(){let a=this.readHooks(),b=this.getHookArray(a,"PostToolUse");return this.hasHook(b,"post-tool-hook.js")}async installMcp(a,b={}){let c=this.resolveCommand(),d=["mcp","add",a.name];if(a.env)for(let[b,c]of Object.entries(a.env))d.push("--env",`${b}=${c}`);d.push("--",a.command,...a.args);try{return await this.runCli(c,["mcp","remove",a.name],b.cwd).catch(()=>{}),await this.runCli(c,d,b.cwd),{ok:!0,method:"cli",detail:`${c} ${d.join(" ")}`}}catch(a){return{ok:!1,method:"cli",detail:`${c} ${d.join(" ")}`,error:a instanceof Error?a.message:String(a)}}}async uninstallMcp(a,b={}){let c=this.resolveCommand(),d=["mcp","remove",a];try{return await this.runCli(c,d,b.cwd),{ok:!0,method:"cli",detail:`${c} ${d.join(" ")}`}}catch(a){return{ok:!1,method:"cli",detail:`${c} ${d.join(" ")}`,error:a instanceof Error?a.message:String(a)}}}async isMcpInstalled(a,b={}){let c=this.resolveCommand();try{return await this.runCli(c,["mcp","get",a],b.cwd,5e3),!0}catch{return!1}}async installSkill(a,b){let c=f.join(this.getConfigDir(),"skills",a);try{if(!d.existsSync(b))return{ok:!1,method:"symlink",detail:c,error:`Source skill dir does not exist: ${b}`};d.mkdirSync(f.dirname(c),{recursive:!0});let a=await d.promises.lstat(c).catch(()=>null);if(a)if(!(a.isSymbolicLink()||"win32"===process.platform&&a.isDirectory()))return{ok:!1,method:"symlink",detail:c,error:`Refusing to overwrite non-symlink at ${c}`};else try{let a=await d.promises.readlink(c);if(f.resolve(a)===f.resolve(b))return{ok:!0,method:"symlink",detail:`${c} → ${b} (already)`};await d.promises.unlink(c)}catch{if(!a.isSymbolicLink())return{ok:!1,method:"symlink",detail:c,error:`Refusing to overwrite non-symlink at ${c}`}}return await d.promises.symlink(b,c,"dir"),{ok:!0,method:"symlink",detail:`${c} → ${b}`}}catch(a){return{ok:!1,method:"symlink",detail:c,error:a instanceof Error?a.message:String(a)}}}async uninstallSkill(a){let b=f.join(this.getConfigDir(),"skills",a);try{let a=await d.promises.lstat(b).catch(()=>null);if(!a)return{ok:!0,method:"symlink",detail:`${b} (already absent)`};if(!a.isSymbolicLink())return{ok:!1,method:"symlink",detail:b,error:`Refusing to remove non-symlink at ${b}`};return await d.promises.unlink(b),{ok:!0,method:"symlink",detail:b}}catch(a){return{ok:!1,method:"symlink",detail:b,error:a instanceof Error?a.message:String(a)}}}async isSkillInstalled(a,b){let c=f.join(this.getConfigDir(),"skills",a);try{if(!(await d.promises.lstat(c)).isSymbolicLink())return!1;if(!b)return!0;let a=await d.promises.readlink(c),e=f.isAbsolute(a)?a:f.resolve(f.dirname(c),a);return f.resolve(e)===f.resolve(b)}catch{return!1}}async runCli(b,c,d,e=1e4){let{execFile:f}=await a.A(482848),{promisify:g}=await a.A(268548),h=g(f),{stdout:i}=await h(b,c,{cwd:d,timeout:e});return i}async isAvailable(){return null!==await this.getVersion()}async getVersion(){try{let{execFile:b}=await a.A(144264),{promisify:c}=await a.A(534777),{resolveSpawnTarget:d}=await a.A(889618),e=c(b),f=await d(this.resolveCommand(),["--version"]),{stdout:g}=await e(f.command,f.args,{timeout:5e3});return g.trim()||null}catch{return null}}async getModels(){return i}getConfigDir(){return f.join(e.homedir(),".codex")}getSettingsPath(){return f.join(this.getConfigDir(),"config.toml")}getSessionsDir(){return f.join(this.getConfigDir(),"sessions")}getApiKeyInfo(){return{envVar:"OPENAI_API_KEY",required:!1}}buildHelloProbeArgs(a){return{command:this.resolveCommand(),args:["exec",a]}}resolveCommand(){return process.env.CODEX_CLI_PATH?process.env.CODEX_CLI_PATH:(0,g.resolveCommandPathSync)("codex")}getHooksPath(){return f.join(this.getConfigDir(),"hooks.json")}readHooks(){try{return JSON.parse(d.readFileSync(this.getHooksPath(),"utf-8")).hooks??{}}catch{return{}}}writeHooks(a){let b=this.getConfigDir();d.existsSync(b)||d.mkdirSync(b,{recursive:!0}),d.writeFileSync(this.getHooksPath(),JSON.stringify({hooks:a},null,2),"utf-8")}ensureHooksFeatureEnabled(){let a=this.getSettingsPath(),b="";try{b=d.readFileSync(a,"utf-8")}catch{}if(/codex_hooks\s*=\s*true/.test(b))return;/\[features\]/.test(b)?b=b.replace(/\[features\]/,"[features]\ncodex_hooks = true"):b+="\n[features]\ncodex_hooks = true\n";let c=this.getConfigDir();d.existsSync(c)||d.mkdirSync(c,{recursive:!0}),d.writeFileSync(a,b,"utf-8")}getHookArray(a,b){let c=a[b];return Array.isArray(c)?c:[]}hasHook(a,b){return a.some(a=>a.hooks?.some(a=>a.command?.includes(b)))}}},models:{cli:["o4-mini","o3","gpt-4.1","gpt-4.1-mini","gpt-4.1-nano","codex-mini-latest"],api:[]}}),j.__providerRegistry=k}let k=j.__providerRegistry;a.s(["providerRegistry",0,k],378322)},855806,a=>{"use strict";var b=a.i(815429),c=a.i(761469);async function d(a,b={}){let e=b.report,f=e?JSON.stringify(e):null;await c.db.providerConnection.upsert({where:{provider:a},create:{provider:a,lastTestedAt:new Date,testOk:!0,version:b.version??null,mcpInstalled:e?.mcp?.ok??!1,hooksInstalled:e?.hooks?.ok??!1,skillsInstalled:e?.skill?.ok??!1,installLog:f},update:{lastTestedAt:new Date,testOk:!0,version:b.version??null,mcpInstalled:e?.mcp?.ok??!1,hooksInstalled:e?.hooks?.ok??!1,skillsInstalled:e?.skill?.ok??!1,installLog:f}})}async function e(a,b={}){await c.db.providerConnection.upsert({where:{provider:a},create:{provider:a,lastTestedAt:new Date,testOk:!1,installLog:b.reason??null},update:{lastTestedAt:new Date,testOk:!1,mcpInstalled:!1,hooksInstalled:!1,skillsInstalled:!1,installLog:b.reason??null}})}async function f(a){let b=await c.db.providerConnection.findUnique({where:{provider:a}});return!!b&&b.testOk}async function g(){return(await c.db.providerConnection.findMany({where:{testOk:!0},select:{provider:!0},orderBy:{provider:"asc"}})).map(a=>a.provider)}async function h(){return c.db.providerConnection.findMany({select:{provider:!0,lastTestedAt:!0,testOk:!0,version:!0,mcpInstalled:!0,hooksInstalled:!0,skillsInstalled:!0,installLog:!0},orderBy:{provider:"asc"}})}(0,a.i(630048).ensureServerEntryExports)([d,e,f,g,h]),(0,b.registerServerReference)(d,"60371c5b5ccc51013126d676127b6b8e1dfa33cb00",null),(0,b.registerServerReference)(e,"60a4e73a878cdc71979aa83c7f04c4076261eb75ed",null),(0,b.registerServerReference)(f,"400cd68399ccae70b1205790c0d9bf2bee2db1bf8f",null),(0,b.registerServerReference)(g,"00215c10fe812ef9e93315431156dfd87e06479c86",null),(0,b.registerServerReference)(h,"00ca25bc0c6abf4619ee27cc3b73be1e49ecaf2919",null),a.s(["getConnectedProviders",0,g,"getProviderConnections",0,h,"isProviderConnected",0,f,"markProviderConnected",0,d,"markProviderDisconnected",0,e])}];
1
+ module.exports=[378322,a=>{"use strict";class b{providers=new Map;register(a){this.providers.set(a.name,a)}get(a){return this.providers.get(a)}getAll(){return Array.from(this.providers.values())}getCliAdapter(a){return this.providers.get(a)?.cli?.adapter??null}getQueryAdapter(a,b){let c=this.providers.get(a);return c?"api"===b?c.api?.adapter??null:c.cliQuery?.adapter??null:null}getAllowedCommands(){let a=[];for(let b of this.providers.values())b.cli?.command&&a.push(b.cli.command);return a}async getAvailableProviders(){let a=[];for(let b of this.providers.values()){let c=!!b.cli&&await b.cli.adapter.isAvailable(),d=c&&b.cli?await b.cli.adapter.getVersion():null,e=!!b.api&&!!process.env[b.api.keyEnvVar],f=!!b.api&&e;a.push({name:b.name,displayName:b.displayName,cli:{available:c,version:d},api:{available:f,keyConfigured:e}})}return a}}var c=a.i(52350),d=a.i(902157),e=a.i(660526),f=a.i(750227),g=a.i(163812),h=a.i(562278);let i=["o4-mini","o3","gpt-4.1","gpt-4.1-mini","gpt-4.1-nano","codex-mini-latest"],j=globalThis;if(!j.__providerRegistry){let k=new b;k.register({name:"claude",displayName:"Claude Code",agentFieldValue:"CLAUDE_CODE",cli:{command:"claude",adapter:new c.ClaudeCliAdapter},models:{cli:["sonnet","opus","haiku","claude-sonnet-4-6","claude-opus-4-6","claude-haiku-4-5-20251001"],api:[]}}),k.register({name:"codex",displayName:"Codex CLI",agentFieldValue:"CODEX_CLI",cli:{command:"codex",adapter:new class b{buildSpawnArgs(a){let b=[];a.resumeSessionId?b.push("resume",a.resumeSessionId):a.continueLatest?b.push("resume","--last"):(b.push("--full-auto"),a.extraArgs?.length&&b.push(...a.extraArgs),a.prompt&&b.push(a.prompt));let c={...a.envOverrides??{}};return{command:this.resolveCommand(),args:b,env:c}}buildEnvOverrides(a){let b={TOWER_TASK_ID:a.taskId,TOWER_TASK_TITLE:a.taskTitle,TOWER_STARTED_AT:new Date().toISOString(),TOWER_API_URL:a.apiUrl};return a.callbackUrl&&(b.CALLBACK_URL=a.callbackUrl),b}async installHooks(a){try{let a=this.readHooks(),b=(0,h.getPackageRoot)().replace(/\\/g,"/"),c=f.join(b,"scripts","session-start-hook.js").replace(/\\/g,"/"),d=f.join(b,"scripts","post-tool-hook.js").replace(/\\/g,"/"),e=f.join(b,"scripts","stop-hook.js").replace(/\\/g,"/"),g=!1;return g=this.upsertHook(a,"SessionStart","session-start-hook.js",{hooks:[{command:`node "${c}"`,timeout:5,type:"command"}]})||g,g=this.upsertHook(a,"PostToolUse","post-tool-hook.js",{hooks:[{command:`node "${d}"`,timeout:10,type:"command"}],matcher:"Write|Edit|MultiEdit"})||g,(g=this.upsertHook(a,"Stop","stop-hook.js",{hooks:[{command:`node "${e}"`,timeout:5,type:"command"}]})||g)&&(this.writeHooks(a),this.ensureHooksFeatureEnabled()),{ok:!0,method:"file",detail:this.getHooksPath()}}catch(a){return{ok:!1,method:"file",detail:this.getHooksPath(),error:a instanceof Error?a.message:String(a)}}}async repairHookPaths(){try{let a=this.readHooks(),b=(0,h.getPackageRoot)().replace(/\\/g,"/"),c=!1;for(let[d,e]of[["SessionStart","session-start-hook.js"],["PostToolUse","post-tool-hook.js"],["Stop","stop-hook.js"]]){let g=this.getHookArray(a,d),h=g.findIndex(a=>a?.hooks?.some?.(a=>a.command?.includes(e)));if(h<0)continue;let i=f.join(b,"scripts",e).replace(/\\/g,"/"),j=`node "${i}"`,k=g[h]?.hooks?.[0];k&&k.command!==j&&(k.command=j,a[d]=g,c=!0)}c&&(this.writeHooks(a),this.ensureHooksFeatureEnabled())}catch{}}upsertHook(a,b,c,d){let e=this.getHookArray(a,b),f=d?.hooks?.[0]?.command,g=e.findIndex(a=>a?.hooks?.some?.(a=>a.command?.includes(c)));if(g>=0){if(e[g]?.hooks?.[0]?.command===f)return!1;e.splice(g,1)}return e.push(d),a[b]=e,!0}async uninstallHooks(){try{let a=this.readHooks(),b=["session-start-hook.js","post-tool-hook.js","stop-hook.js"];for(let c of["SessionStart","PostToolUse","Stop"]){let d=this.getHookArray(a,c);a[c]=d.filter(a=>!a.hooks?.some(a=>b.some(b=>a.command?.includes(b))))}return this.writeHooks(a),{ok:!0,method:"file",detail:this.getHooksPath()}}catch(a){return{ok:!1,method:"file",detail:this.getHooksPath(),error:a instanceof Error?a.message:String(a)}}}async isHooksInstalled(){let a=this.readHooks(),b=this.getHookArray(a,"PostToolUse");return this.hasHook(b,"post-tool-hook.js")}async installMcp(a,b={}){let c=this.resolveCommand(),d=["mcp","add",a.name];if(a.env)for(let[b,c]of Object.entries(a.env))d.push("--env",`${b}=${c}`);d.push("--",a.command,...a.args);try{return await this.runCli(c,["mcp","remove",a.name],b.cwd).catch(()=>{}),await this.runCli(c,d,b.cwd),{ok:!0,method:"cli",detail:`${c} ${d.join(" ")}`}}catch(a){return{ok:!1,method:"cli",detail:`${c} ${d.join(" ")}`,error:a instanceof Error?a.message:String(a)}}}async uninstallMcp(a,b={}){let c=this.resolveCommand(),d=["mcp","remove",a];try{return await this.runCli(c,d,b.cwd),{ok:!0,method:"cli",detail:`${c} ${d.join(" ")}`}}catch(a){return{ok:!1,method:"cli",detail:`${c} ${d.join(" ")}`,error:a instanceof Error?a.message:String(a)}}}async isMcpInstalled(a,b={}){let c=this.resolveCommand();try{return await this.runCli(c,["mcp","get",a],b.cwd,5e3),!0}catch{return!1}}async installSkill(a,b){let c=f.join(this.getConfigDir(),"skills",a);try{if(!d.existsSync(b))return{ok:!1,method:"symlink",detail:c,error:`Source skill dir does not exist: ${b}`};d.mkdirSync(f.dirname(c),{recursive:!0});let a=await d.promises.lstat(c).catch(()=>null);if(a)if(!(a.isSymbolicLink()||"win32"===process.platform&&a.isDirectory()))return{ok:!1,method:"symlink",detail:c,error:`Refusing to overwrite non-symlink at ${c}`};else try{let a=await d.promises.readlink(c);if(f.resolve(a)===f.resolve(b))return{ok:!0,method:"symlink",detail:`${c} → ${b} (already)`};await d.promises.unlink(c)}catch{if(!a.isSymbolicLink())return{ok:!1,method:"symlink",detail:c,error:`Refusing to overwrite non-symlink at ${c}`}}return await d.promises.symlink(b,c,"dir"),{ok:!0,method:"symlink",detail:`${c} → ${b}`}}catch(a){return{ok:!1,method:"symlink",detail:c,error:a instanceof Error?a.message:String(a)}}}async uninstallSkill(a){let b=f.join(this.getConfigDir(),"skills",a);try{let a=await d.promises.lstat(b).catch(()=>null);if(!a)return{ok:!0,method:"symlink",detail:`${b} (already absent)`};if(!a.isSymbolicLink())return{ok:!1,method:"symlink",detail:b,error:`Refusing to remove non-symlink at ${b}`};return await d.promises.unlink(b),{ok:!0,method:"symlink",detail:b}}catch(a){return{ok:!1,method:"symlink",detail:b,error:a instanceof Error?a.message:String(a)}}}async isSkillInstalled(a,b){let c=f.join(this.getConfigDir(),"skills",a);try{if(!(await d.promises.lstat(c)).isSymbolicLink())return!1;if(!b)return!0;let a=await d.promises.readlink(c),e=f.isAbsolute(a)?a:f.resolve(f.dirname(c),a);return f.resolve(e)===f.resolve(b)}catch{return!1}}async runCli(b,c,d,e=1e4){let{execFile:f}=await a.A(482848),{promisify:g}=await a.A(268548),h=g(f),{stdout:i}=await h(b,c,{cwd:d,timeout:e});return i}async isAvailable(){return null!==await this.getVersion()}async getVersion(){try{let{execFile:b}=await a.A(144264),{promisify:c}=await a.A(534777),{resolveSpawnTarget:d}=await a.A(889618),e=c(b),f=await d(this.resolveCommand(),["--version"]),{stdout:g}=await e(f.command,f.args,{timeout:5e3});return g.trim()||null}catch{return null}}async getModels(){return i}getConfigDir(){return f.join(e.homedir(),".codex")}getSettingsPath(){return f.join(this.getConfigDir(),"config.toml")}getSessionsDir(){return f.join(this.getConfigDir(),"sessions")}getApiKeyInfo(){return{envVar:"OPENAI_API_KEY",required:!1}}buildHelloProbeArgs(a){return{command:this.resolveCommand(),args:["exec",a]}}resolveCommand(){return process.env.CODEX_CLI_PATH?process.env.CODEX_CLI_PATH:(0,g.resolveCommandPathSync)("codex")}getHooksPath(){return f.join(this.getConfigDir(),"hooks.json")}readHooks(){try{return JSON.parse(d.readFileSync(this.getHooksPath(),"utf-8")).hooks??{}}catch{return{}}}writeHooks(a){let b=this.getConfigDir();d.existsSync(b)||d.mkdirSync(b,{recursive:!0}),d.writeFileSync(this.getHooksPath(),JSON.stringify({hooks:a},null,2),"utf-8")}ensureHooksFeatureEnabled(){let a=this.getSettingsPath(),b="";try{b=d.readFileSync(a,"utf-8")}catch{}if(/codex_hooks\s*=\s*true/.test(b))return;/\[features\]/.test(b)?b=b.replace(/\[features\]/,"[features]\ncodex_hooks = true"):b+="\n[features]\ncodex_hooks = true\n";let c=this.getConfigDir();d.existsSync(c)||d.mkdirSync(c,{recursive:!0}),d.writeFileSync(a,b,"utf-8")}getHookArray(a,b){let c=a[b];return Array.isArray(c)?c:[]}hasHook(a,b){return a.some(a=>a.hooks?.some(a=>a.command?.includes(b)))}}},models:{cli:["o4-mini","o3","gpt-4.1","gpt-4.1-mini","gpt-4.1-nano","codex-mini-latest"],api:[]}}),j.__providerRegistry=k}let k=j.__providerRegistry;a.s(["providerRegistry",0,k],378322)},855806,a=>{"use strict";var b=a.i(815429),c=a.i(761469);async function d(a,b={}){let e=b.report,f=e?JSON.stringify(e):null;await c.db.providerConnection.upsert({where:{provider:a},create:{provider:a,lastTestedAt:new Date,testOk:!0,version:b.version??null,mcpInstalled:e?.mcp?.ok??!1,hooksInstalled:e?.hooks?.ok??!1,skillsInstalled:e?.skill?.ok??!1,installLog:f},update:{lastTestedAt:new Date,testOk:!0,version:b.version??null,mcpInstalled:e?.mcp?.ok??!1,hooksInstalled:e?.hooks?.ok??!1,skillsInstalled:e?.skill?.ok??!1,installLog:f}})}async function e(a,b={}){await c.db.providerConnection.upsert({where:{provider:a},create:{provider:a,lastTestedAt:new Date,testOk:!1,installLog:b.reason??null},update:{lastTestedAt:new Date,testOk:!1,mcpInstalled:!1,hooksInstalled:!1,skillsInstalled:!1,installLog:b.reason??null}})}async function f(a){let b=await c.db.providerConnection.findUnique({where:{provider:a}});return!!b&&b.testOk}async function g(){return(await c.db.providerConnection.findMany({where:{testOk:!0},select:{provider:!0},orderBy:{provider:"asc"}})).map(a=>a.provider)}async function h(){return c.db.providerConnection.findMany({select:{provider:!0,lastTestedAt:!0,testOk:!0,version:!0,mcpInstalled:!0,hooksInstalled:!0,skillsInstalled:!0,installLog:!0},orderBy:{provider:"asc"}})}(0,a.i(630048).ensureServerEntryExports)([d,e,f,g,h]),(0,b.registerServerReference)(d,"603a9d5ba9afb00cd17384886b251465dc597db5ca",null),(0,b.registerServerReference)(e,"60211cf493308e4505321c2a312dfbc0c28feb7b64",null),(0,b.registerServerReference)(f,"40ca6b48365c4210e2daab7dae6926bbe5b4c35087",null),(0,b.registerServerReference)(g,"004c5e27f878e5edbc52b2aeb8969d53fe3b8e2aea",null),(0,b.registerServerReference)(h,"00952c121612aad591f7db57dace8234ae327b2199",null),a.s(["getConnectedProviders",0,g,"getProviderConnections",0,h,"isProviderConnected",0,f,"markProviderConnected",0,d,"markProviderDisconnected",0,e])}];
2
2
 
3
3
  //# sourceMappingURL=src_0eufeyj._.js.map
@@ -1,4 +1,4 @@
1
- module.exports=[495370,a=>{"use strict";var b=a.i(815429),c=a.i(761469),d=a.i(188139),e=a.i(496877);async function f(a){return c.db.label.findMany({where:{OR:[{isBuiltin:!0},{workspaceId:a}]},orderBy:[{isBuiltin:"desc"},{name:"asc"}]})}async function g(a){let b=e.createLabelSchema.parse(a),f=await c.db.label.create({data:{name:b.name,color:b.color,workspaceId:b.workspaceId}});return(0,d.revalidatePath)("/workspaces"),f}async function h(a){let b=await c.db.label.findUnique({where:{id:a}});if(!b)throw Error("Label not found");if(b.isBuiltin)throw Error("Cannot delete builtin labels");await c.db.label.delete({where:{id:a}}),(0,d.revalidatePath)("/workspaces")}async function i(a,b){await c.db.$transaction(async c=>{await c.taskLabel.deleteMany({where:{taskId:a}}),b.length>0&&await c.taskLabel.createMany({data:b.map(b=>({taskId:a,labelId:b}))})}),(0,d.revalidatePath)("/workspaces")}async function j(a){return(await c.db.taskLabel.findMany({where:{taskId:a},include:{label:!0}})).map(a=>a.label)}(0,a.i(630048).ensureServerEntryExports)([f,g,h,i,j]),(0,b.registerServerReference)(f,"405aab40646db7ede6dc5b1df4b046cfa2c913c660",null),(0,b.registerServerReference)(g,"4017c55bf87cb8154bf0a881c604e56c85b9d85362",null),(0,b.registerServerReference)(h,"40cfc10d2b13f3e5d43ec7aba8d830e732aa4dff27",null),(0,b.registerServerReference)(i,"60748e9ee0810d1c59e8afa467345970af61c0cde3",null),(0,b.registerServerReference)(j,"409b7abdb4fbb5df18de66e8d40d05a4bef32a9042",null),a.s(["createLabel",0,g,"deleteLabel",0,h,"getLabelsForWorkspace",0,f,"getTaskLabels",0,j,"setTaskLabels",0,i])},799620,(a,b,c)=>{b.exports=a.x("@vscode/ripgrep-9efc5655eb017bdc",()=>require("@vscode/ripgrep-9efc5655eb017bdc"))},870888,a=>a.a(async(b,c)=>{try{let o;var d=a.i(815429),e=a.i(233405),f=a.i(522734),g=a.i(75681),h=a.i(980999),i=a.i(630048),j=b([h]);function k(){return o||(o=function(){try{let b=a.r(799620).rgPath;if(b&&(0,f.existsSync)(b))return b}catch{}try{let a=(0,e.execFileSync)("which",["rg"],{encoding:"utf-8"}).trim();if(a&&(0,f.existsSync)(a))return a}catch{}throw Error("ripgrep not found: install @vscode/ripgrep or system rg")}()),o}async function l(){try{return k(),{available:!0,platform:process.platform}}catch{return{available:!1,platform:process.platform}}}async function m(){o=void 0}[h]=j.then?(await j)():j;let p=g.z.object({localPath:g.z.string().min(1),pattern:g.z.string().min(1).max(500),glob:g.z.string().max(200).optional(),maxResults:g.z.number().int().min(1).max(500).default(200)});async function n(a,b,c,d=200,f){let g,i,j=p.safeParse({localPath:a,pattern:b,glob:c,maxResults:d});if(!j.success)return{matches:[],truncated:!1,error:`Invalid input: ${j.error.message}`};let{localPath:l,pattern:m,glob:o,maxResults:q}=j.data;if(!(l.startsWith("/")||/^[a-zA-Z]:[/\\]/.test(l)))return{matches:[],truncated:!1,error:"localPath must be an absolute path"};try{g=k()}catch(a){return{matches:[],truncated:!1,error:a.message.slice(0,200),errorKind:"not_installed"}}let r=["--json","-n",m];o&&r.push("--glob",o),r.push(l);let s=await (0,h.getConfigValue)("search.codeTimeoutSec",30),t=1e3*Math.max(1,s),u=f instanceof AbortSignal?f:void 0;try{var v,w;i=await (v=g,w={encoding:"utf-8",maxBuffer:0xa00000,timeout:t,signal:u},new Promise((a,b)=>{(0,e.execFile)(v,r,w,(c,d,e)=>{c?(c.stderr="string"==typeof e?e:e?.toString(),b(c)):a("string"==typeof d?d:d.toString())})}))}catch(b){if(1===b.code)return{matches:[],truncated:!1};let a=function(a){if("AbortError"===a.name)return{kind:"aborted",message:""};if(a.killed&&("SIGTERM"===a.signal||"SIGKILL"===a.signal))return{kind:"timeout",message:a.message??"search timed out"};let b=a.stderr??"",c=`${a.message??""} ${b}`.toLowerCase();return c.includes("permission denied")||c.includes("eacces")?{kind:"permission_denied",message:b||a.message||"permission denied"}:c.includes("not found")||c.includes("enoent")||c.includes("ripgrep")?{kind:"not_installed",message:b||a.message||"ripgrep not found"}:{kind:"unknown",message:(b||a.message||"unknown error").slice(0,200)}}(b);if("aborted"===a.kind)return{matches:[],truncated:!1,aborted:!0};return console.error("[searchCode] rg failed:",b),{matches:[],truncated:!1,error:a.message.slice(0,200),errorKind:a.kind}}let x=i.split("\n"),y=[];for(let a of x){let b,c=a.trim();if(!c)continue;try{b=JSON.parse(c)}catch{continue}if("match"!==b.type)continue;let d=b.data,e=d.path.text,f=l.endsWith("/")?l:l+"/",g=e.startsWith(f)?e.slice(f.length):e,h=d.lines.text.replace(/\r?\n$/,""),i=d.submatches.map(a=>({start:a.start,end:a.end}));y.push({filePath:g,lineNumber:d.line_number,lineText:h,submatches:i})}let z=y.length>q;return{matches:z?y.slice(0,q):y,truncated:z}}(0,i.ensureServerEntryExports)([l,m,n]),(0,d.registerServerReference)(l,"005f58e806fcf82bece11bc5a3d4b5deb2c9731435",null),(0,d.registerServerReference)(m,"00582cf368dd3ebce6169b45055806e1ee63dba953",null),(0,d.registerServerReference)(n,"7c8496b1638b8d904a0e0eeed7abdf46ee4d29c739",null),a.s(["checkRgAvailable",0,l,"clearRgPathCache",0,m,"searchCode",0,n]),c()}catch(a){c(a)}},!1),287068,a=>{"use strict";var b=a.i(761469);function c(a,b){return{id:a.note_id,type:"note",title:a.title,subtitle:`${a.workspace_name} / ${a.project_name}`,navigateTo:`/workspaces/${a.workspaceId}/notes?projectId=${a.projectId}`,snippet:a.content?a.content.slice(0,b):void 0}}async function d(a,e="task",f){if(!a.trim())return[];let g=a.trim(),{resultLimit:h,allModeCap:i,snippetLength:j}=f;if("all"===e){let[a,b,c,e,h]=await Promise.allSettled([d(g,"task",f),d(g,"project",f),d(g,"repository",f),d(g,"note",f),d(g,"asset",f)]),j=a=>"fulfilled"===a.status?a.value.slice(0,i):[];return[...j(a),...j(b),...j(c),...j(e),...j(h)]}if("task"===e)return(await b.db.task.findMany({where:{OR:[{title:{contains:g}},{description:{contains:g}}]},include:{project:{include:{workspace:!0}}},take:h,orderBy:{updatedAt:"desc"}})).map(a=>{let b="DONE"===a.status||"CANCELLED"===a.status,c=a.project.workspaceId;return{id:a.id,type:"task",title:a.title,subtitle:`${a.project.workspace.name} / ${a.project.name}`,navigateTo:b?`/workspaces/${c}/archive?projectId=${a.projectId}`:`/workspaces/${c}?projectId=${a.projectId}`}});if("project"===e)return(await b.db.project.findMany({where:{OR:[{name:{contains:g}},{alias:{contains:g}},{description:{contains:g}}]},include:{workspace:!0},take:h,orderBy:{updatedAt:"desc"}})).map(a=>({id:a.id,type:"project",title:a.alias?`${a.name} (${a.alias})`:a.name,subtitle:a.workspace.name,navigateTo:`/workspaces/${a.workspaceId}?projectId=${a.id}`}));if("repository"===e)return(await b.db.repository.findMany({where:{OR:[{name:{contains:g}},{path:{contains:g}}]},include:{project:{include:{workspace:!0}}},take:h})).map(a=>({id:a.id,type:"repository",title:a.name,subtitle:`${a.project.workspace.name} / ${a.project.name} \xb7 ${a.branch}`,navigateTo:`/workspaces/${a.project.workspaceId}?projectId=${a.projectId}`}));if("note"===e){if(g.length<3)return(await b.db.$queryRawUnsafe(`SELECT n.id as note_id, n.title, n.content,
1
+ module.exports=[495370,a=>{"use strict";var b=a.i(815429),c=a.i(761469),d=a.i(188139),e=a.i(496877);async function f(a){return c.db.label.findMany({where:{OR:[{isBuiltin:!0},{workspaceId:a}]},orderBy:[{isBuiltin:"desc"},{name:"asc"}]})}async function g(a){let b=e.createLabelSchema.parse(a),f=await c.db.label.create({data:{name:b.name,color:b.color,workspaceId:b.workspaceId}});return(0,d.revalidatePath)("/workspaces"),f}async function h(a){let b=await c.db.label.findUnique({where:{id:a}});if(!b)throw Error("Label not found");if(b.isBuiltin)throw Error("Cannot delete builtin labels");await c.db.label.delete({where:{id:a}}),(0,d.revalidatePath)("/workspaces")}async function i(a,b){await c.db.$transaction(async c=>{await c.taskLabel.deleteMany({where:{taskId:a}}),b.length>0&&await c.taskLabel.createMany({data:b.map(b=>({taskId:a,labelId:b}))})}),(0,d.revalidatePath)("/workspaces")}async function j(a){return(await c.db.taskLabel.findMany({where:{taskId:a},include:{label:!0}})).map(a=>a.label)}(0,a.i(630048).ensureServerEntryExports)([f,g,h,i,j]),(0,b.registerServerReference)(f,"40fb0d82631d9a69ca629c8e368af79ac8092fde38",null),(0,b.registerServerReference)(g,"408e5c48ac6c824b68d011961876a2c2ea15658b43",null),(0,b.registerServerReference)(h,"40a1cb23d9c50b1205b46da719c74011db48916a7e",null),(0,b.registerServerReference)(i,"60931fa35dac4c1a3764ab2d9b7ce1c870d810199f",null),(0,b.registerServerReference)(j,"4010fa4cbd9b247ba20e34f1c4b64bf55219a70ab9",null),a.s(["createLabel",0,g,"deleteLabel",0,h,"getLabelsForWorkspace",0,f,"getTaskLabels",0,j,"setTaskLabels",0,i])},870888,a=>a.a(async(b,c)=>{try{let q;var d=a.i(815429),e=a.i(233405),f=a.i(522734),g=a.i(814747),h=a.i(75681),i=a.i(980999),j=a.i(319997),k=a.i(630048),l=b([i]);function m(){return q||(q=function(){try{let a=g.default.join((0,j.getExtensionsDir)(),"node_modules","@vscode","ripgrep");if((0,f.existsSync)(a)){let a=(()=>{let a=Error("Cannot find module 'unknown'");throw a.code="MODULE_NOT_FOUND",a})().rgPath;if(a&&(0,f.existsSync)(a))return a}}catch{}try{let a=(0,e.execFileSync)("which",["rg"],{encoding:"utf-8"}).trim();if(a&&(0,f.existsSync)(a))return a}catch{}throw Error("ripgrep not found: install @vscode/ripgrep or system rg")}()),q}async function n(){try{return m(),{available:!0,platform:process.platform}}catch{return{available:!1,platform:process.platform}}}async function o(){q=void 0}[i]=l.then?(await l)():l;let r=h.z.object({localPath:h.z.string().min(1),pattern:h.z.string().min(1).max(500),glob:h.z.string().max(200).optional(),maxResults:h.z.number().int().min(1).max(500).default(200)});async function p(a,b,c,d=200,f){let g,h,j=r.safeParse({localPath:a,pattern:b,glob:c,maxResults:d});if(!j.success)return{matches:[],truncated:!1,error:`Invalid input: ${j.error.message}`};let{localPath:k,pattern:l,glob:n,maxResults:o}=j.data;if(!(k.startsWith("/")||/^[a-zA-Z]:[/\\]/.test(k)))return{matches:[],truncated:!1,error:"localPath must be an absolute path"};try{g=m()}catch(a){return{matches:[],truncated:!1,error:a.message.slice(0,200),errorKind:"not_installed"}}let q=["--json","-n",l];n&&q.push("--glob",n),q.push(k);let s=await (0,i.getConfigValue)("search.codeTimeoutSec",30),t=1e3*Math.max(1,s),u=f instanceof AbortSignal?f:void 0;try{var v,w;h=await (v=g,w={encoding:"utf-8",maxBuffer:0xa00000,timeout:t,signal:u},new Promise((a,b)=>{(0,e.execFile)(v,q,w,(c,d,e)=>{c?(c.stderr="string"==typeof e?e:e?.toString(),b(c)):a("string"==typeof d?d:d.toString())})}))}catch(b){if(1===b.code)return{matches:[],truncated:!1};let a=function(a){if("AbortError"===a.name)return{kind:"aborted",message:""};if(a.killed&&("SIGTERM"===a.signal||"SIGKILL"===a.signal))return{kind:"timeout",message:a.message??"search timed out"};let b=a.stderr??"",c=`${a.message??""} ${b}`.toLowerCase();return c.includes("permission denied")||c.includes("eacces")?{kind:"permission_denied",message:b||a.message||"permission denied"}:c.includes("not found")||c.includes("enoent")||c.includes("ripgrep")?{kind:"not_installed",message:b||a.message||"ripgrep not found"}:{kind:"unknown",message:(b||a.message||"unknown error").slice(0,200)}}(b);if("aborted"===a.kind)return{matches:[],truncated:!1,aborted:!0};return console.error("[searchCode] rg failed:",b),{matches:[],truncated:!1,error:a.message.slice(0,200),errorKind:a.kind}}let x=h.split("\n"),y=[];for(let a of x){let b,c=a.trim();if(!c)continue;try{b=JSON.parse(c)}catch{continue}if("match"!==b.type)continue;let d=b.data,e=d.path.text,f=k.endsWith("/")?k:k+"/",g=e.startsWith(f)?e.slice(f.length):e,h=d.lines.text.replace(/\r?\n$/,""),i=d.submatches.map(a=>({start:a.start,end:a.end}));y.push({filePath:g,lineNumber:d.line_number,lineText:h,submatches:i})}let z=y.length>o;return{matches:z?y.slice(0,o):y,truncated:z}}(0,k.ensureServerEntryExports)([n,o,p]),(0,d.registerServerReference)(n,"008a40226d393fe09508556a4ee960644154f978e6",null),(0,d.registerServerReference)(o,"0079ac81b173aae9f7d7702ec283ad03a1b5c8c4ed",null),(0,d.registerServerReference)(p,"7c3d72aaccc12030611186d76b657c08777839e7d1",null),a.s(["checkRgAvailable",0,n,"clearRgPathCache",0,o,"searchCode",0,p]),c()}catch(a){c(a)}},!1),287068,a=>{"use strict";var b=a.i(761469);function c(a,b){return{id:a.note_id,type:"note",title:a.title,subtitle:`${a.workspace_name} / ${a.project_name}`,navigateTo:`/workspaces/${a.workspaceId}/notes?projectId=${a.projectId}`,snippet:a.content?a.content.slice(0,b):void 0}}async function d(a,e="task",f){if(!a.trim())return[];let g=a.trim(),{resultLimit:h,allModeCap:i,snippetLength:j}=f;if("all"===e){let[a,b,c,e,h]=await Promise.allSettled([d(g,"task",f),d(g,"project",f),d(g,"repository",f),d(g,"note",f),d(g,"asset",f)]),j=a=>"fulfilled"===a.status?a.value.slice(0,i):[];return[...j(a),...j(b),...j(c),...j(e),...j(h)]}if("task"===e)return(await b.db.task.findMany({where:{OR:[{title:{contains:g}},{description:{contains:g}}]},include:{project:{include:{workspace:!0}}},take:h,orderBy:{updatedAt:"desc"}})).map(a=>{let b="DONE"===a.status||"CANCELLED"===a.status,c=a.project.workspaceId;return{id:a.id,type:"task",title:a.title,subtitle:`${a.project.workspace.name} / ${a.project.name}`,navigateTo:b?`/workspaces/${c}/archive?projectId=${a.projectId}`:`/workspaces/${c}?projectId=${a.projectId}`}});if("project"===e)return(await b.db.project.findMany({where:{OR:[{name:{contains:g}},{alias:{contains:g}},{description:{contains:g}}]},include:{workspace:!0},take:h,orderBy:{updatedAt:"desc"}})).map(a=>({id:a.id,type:"project",title:a.alias?`${a.name} (${a.alias})`:a.name,subtitle:a.workspace.name,navigateTo:`/workspaces/${a.workspaceId}?projectId=${a.id}`}));if("repository"===e)return(await b.db.repository.findMany({where:{OR:[{name:{contains:g}},{path:{contains:g}}]},include:{project:{include:{workspace:!0}}},take:h})).map(a=>({id:a.id,type:"repository",title:a.name,subtitle:`${a.project.workspace.name} / ${a.project.name} \xb7 ${a.branch}`,navigateTo:`/workspaces/${a.project.workspaceId}?projectId=${a.projectId}`}));if("note"===e){if(g.length<3)return(await b.db.$queryRawUnsafe(`SELECT n.id as note_id, n.title, n.content,
2
2
  n."projectId", p."workspaceId", p.name as project_name, w.name as workspace_name
3
3
  FROM "ProjectNote" n
4
4
  JOIN "Project" p ON p.id = n."projectId"
@@ -18,7 +18,7 @@ module.exports=[495370,a=>{"use strict";var b=a.i(815429),c=a.i(761469),d=a.i(18
18
18
  JOIN "Project" p ON p.id = n."projectId"
19
19
  JOIN "Workspace" w ON w.id = p."workspaceId"
20
20
  WHERE n.title LIKE ? OR n.content LIKE ?
21
- LIMIT ?`,`%${g}%`,`%${g}%`,h)).map(a=>c(a,j))}}return"asset"===e?(await b.db.projectAsset.findMany({where:{OR:[{filename:{contains:g}},{description:{contains:g}}]},include:{project:{include:{workspace:!0}}},take:h,orderBy:{createdAt:"desc"}})).map(a=>({id:a.id,type:"asset",title:a.filename,subtitle:`${a.project.workspace.name} / ${a.project.name}`,navigateTo:`/workspaces/${a.project.workspaceId}/assets?projectId=${a.projectId}`,snippet:a.description||void 0})):[]}a.s(["search",0,d])},396904,a=>a.a(async(b,c)=>{try{var d=a.i(815429),e=a.i(287068),f=a.i(980999),g=a.i(630048),h=b([f]);async function i(a,b="task"){let c=await (0,f.getConfigValues)(["search.resultLimit","search.allModeCap","search.snippetLength"]);return(0,e.search)(a,b,{resultLimit:c["search.resultLimit"]??20,allModeCap:c["search.allModeCap"]??5,snippetLength:c["search.snippetLength"]??80})}[f]=h.then?(await h)():h,(0,g.ensureServerEntryExports)([i]),(0,d.registerServerReference)(i,"603738f3d819572368901747e3c7b7c7ceba2d5528",null),a.s(["globalSearch",0,i]),c()}catch(a){c(a)}},!1),101844,a=>{"use strict";var b=a.i(815429),c=a.i(924868),d=a.i(522734),e=a.i(814747),f=a.i(761469),g=a.i(188139),h=a.i(630048);async function i(b){if(!b||"string"!=typeof b)return{safe:!1,reason:"无效的项目 ID"};let g=await f.db.project.findUnique({where:{id:b}});if(!g||!g.localPath)return{safe:!1,reason:"项目不存在或未设置本地路径"};if((await f.db.taskExecution.findMany({where:{task:{projectId:b},status:"RUNNING"},select:{id:!0}})).length>0)return{safe:!1,reason:"该项目有正在运行的任务执行,请先停止所有执行"};let h=await f.db.task.findMany({where:{projectId:b},select:{id:!0}}),{getSession:i}=await a.A(98813);for(let a of h)if(void 0!==i(a.id))return{safe:!1,reason:"该项目有活跃的终端会话,请先关闭"};let j=e.default.join(g.localPath,".worktrees");if((0,d.existsSync)(j))try{if((await (0,c.readdir)(j)).length>0)return{safe:!1,reason:"该项目有活跃的 Git Worktree,请先清理"}}catch{}return{safe:!0}}async function j(b,h){if(!b||"string"!=typeof b)return{success:!1,error:"无效的项目 ID"};if(!h||"string"!=typeof h||!e.default.isAbsolute(h))return{success:!1,error:"目标路径必须是非空的绝对路径"};let i=await f.db.project.findUnique({where:{id:b}});if(!i||!i.localPath)return{success:!1,error:"项目不存在或未设置本地路径"};let j=i.localPath;if(h===j)return{success:!1,error:"源路径和目标路径相同"};if((await f.db.taskExecution.findMany({where:{task:{projectId:b},status:"RUNNING"},select:{id:!0}})).length>0)return{success:!1,error:"该项目有正在运行的任务执行,请先停止所有执行"};let k=await f.db.task.findMany({where:{projectId:b},select:{id:!0}}),{getSession:l}=await a.A(98813);for(let a of k)if(void 0!==l(a.id))return{success:!1,error:"该项目有活跃的终端会话,请先关闭"};let m=e.default.join(j,".worktrees");if((0,d.existsSync)(m))try{if((await (0,c.readdir)(m)).length>0)return{success:!1,error:"该项目有活跃的 Git Worktree,请先清理"}}catch{}if((0,d.existsSync)(h))try{if((await (0,c.readdir)(h)).length>0)return{success:!1,error:"目标路径已存在且不为空"}}catch{return{success:!1,error:"目标路径已存在且不为空"}}let n=e.default.dirname(h);try{await (0,c.mkdir)(n,{recursive:!0})}catch(a){if("EACCES"===a.code||"EPERM"===a.code)return{success:!1,error:`无权限创建父目录 ${n} — 请检查 Git 路径映射规则的模板是否漏了 "~/" 前缀`};if("EROFS"===a.code)return{success:!1,error:`父目录所在文件系统只读:${n}`};return{success:!1,error:`创建父目录失败:${a.message||a.code||"未知错误"}`}}try{await (0,c.rename)(j,h)}catch(a){if("EXDEV"===a.code)return{success:!1,error:"源路径和目标路径不在同一文件系统,不支持跨设备迁移"};if("EACCES"===a.code||"EPERM"===a.code)return{success:!1,error:`无权限移动到 ${h}`};return{success:!1,error:a.message||"文件系统操作失败"}}return await f.db.project.update({where:{id:b},data:{localPath:h}}),(0,g.revalidatePath)("/workspaces"),{success:!0}}let k=`分析这个项目目录,生成一段简短的 Markdown 项目描述。
21
+ LIMIT ?`,`%${g}%`,`%${g}%`,h)).map(a=>c(a,j))}}return"asset"===e?(await b.db.projectAsset.findMany({where:{OR:[{filename:{contains:g}},{description:{contains:g}}]},include:{project:{include:{workspace:!0}}},take:h,orderBy:{createdAt:"desc"}})).map(a=>({id:a.id,type:"asset",title:a.filename,subtitle:`${a.project.workspace.name} / ${a.project.name}`,navigateTo:`/workspaces/${a.project.workspaceId}/assets?projectId=${a.projectId}`,snippet:a.description||void 0})):[]}a.s(["search",0,d])},396904,a=>a.a(async(b,c)=>{try{var d=a.i(815429),e=a.i(287068),f=a.i(980999),g=a.i(630048),h=b([f]);async function i(a,b="task"){let c=await (0,f.getConfigValues)(["search.resultLimit","search.allModeCap","search.snippetLength"]);return(0,e.search)(a,b,{resultLimit:c["search.resultLimit"]??20,allModeCap:c["search.allModeCap"]??5,snippetLength:c["search.snippetLength"]??80})}[f]=h.then?(await h)():h,(0,g.ensureServerEntryExports)([i]),(0,d.registerServerReference)(i,"60ee93c257ac2bd7b84c248dde49893f53ae3656a6",null),a.s(["globalSearch",0,i]),c()}catch(a){c(a)}},!1),101844,a=>{"use strict";var b=a.i(815429),c=a.i(924868),d=a.i(522734),e=a.i(814747),f=a.i(761469),g=a.i(188139),h=a.i(630048);async function i(b){if(!b||"string"!=typeof b)return{safe:!1,reason:"无效的项目 ID"};let g=await f.db.project.findUnique({where:{id:b}});if(!g||!g.localPath)return{safe:!1,reason:"项目不存在或未设置本地路径"};if((await f.db.taskExecution.findMany({where:{task:{projectId:b},status:"RUNNING"},select:{id:!0}})).length>0)return{safe:!1,reason:"该项目有正在运行的任务执行,请先停止所有执行"};let h=await f.db.task.findMany({where:{projectId:b},select:{id:!0}}),{getSession:i}=await a.A(98813);for(let a of h)if(void 0!==i(a.id))return{safe:!1,reason:"该项目有活跃的终端会话,请先关闭"};let j=e.default.join(g.localPath,".worktrees");if((0,d.existsSync)(j))try{if((await (0,c.readdir)(j)).length>0)return{safe:!1,reason:"该项目有活跃的 Git Worktree,请先清理"}}catch{}return{safe:!0}}async function j(b,h){if(!b||"string"!=typeof b)return{success:!1,error:"无效的项目 ID"};if(!h||"string"!=typeof h||!e.default.isAbsolute(h))return{success:!1,error:"目标路径必须是非空的绝对路径"};let i=await f.db.project.findUnique({where:{id:b}});if(!i||!i.localPath)return{success:!1,error:"项目不存在或未设置本地路径"};let j=i.localPath;if(h===j)return{success:!1,error:"源路径和目标路径相同"};if((await f.db.taskExecution.findMany({where:{task:{projectId:b},status:"RUNNING"},select:{id:!0}})).length>0)return{success:!1,error:"该项目有正在运行的任务执行,请先停止所有执行"};let k=await f.db.task.findMany({where:{projectId:b},select:{id:!0}}),{getSession:l}=await a.A(98813);for(let a of k)if(void 0!==l(a.id))return{success:!1,error:"该项目有活跃的终端会话,请先关闭"};let m=e.default.join(j,".worktrees");if((0,d.existsSync)(m))try{if((await (0,c.readdir)(m)).length>0)return{success:!1,error:"该项目有活跃的 Git Worktree,请先清理"}}catch{}if((0,d.existsSync)(h))try{if((await (0,c.readdir)(h)).length>0)return{success:!1,error:"目标路径已存在且不为空"}}catch{return{success:!1,error:"目标路径已存在且不为空"}}let n=e.default.dirname(h);try{await (0,c.mkdir)(n,{recursive:!0})}catch(a){if("EACCES"===a.code||"EPERM"===a.code)return{success:!1,error:`无权限创建父目录 ${n} — 请检查 Git 路径映射规则的模板是否漏了 "~/" 前缀`};if("EROFS"===a.code)return{success:!1,error:`父目录所在文件系统只读:${n}`};return{success:!1,error:`创建父目录失败:${a.message||a.code||"未知错误"}`}}try{await (0,c.rename)(j,h)}catch(a){if("EXDEV"===a.code)return{success:!1,error:"源路径和目标路径不在同一文件系统,不支持跨设备迁移"};if("EACCES"===a.code||"EPERM"===a.code)return{success:!1,error:`无权限移动到 ${h}`};return{success:!1,error:a.message||"文件系统操作失败"}}return await f.db.project.update({where:{id:b},data:{localPath:h}}),(0,g.revalidatePath)("/workspaces"),{success:!0}}let k=`分析这个项目目录,生成一段简短的 Markdown 项目描述。
22
22
 
23
23
  读取 package.json、README.md 等关键文件,然后概括:
24
24
 
@@ -42,6 +42,6 @@ Requirements:
42
42
  - Keep it under 1000 words
43
43
  - Use concise Markdown (bold labels + short sentences), no ## headings or tables
44
44
  - Don't list every file/directory, only key information
45
- - Output in English`;async function m(b,c="zh"){if(!b||"string"!=typeof b)throw Error("无效的本地路径");if(b.startsWith("~"))throw Error("不支持 ~ 别名,请提供绝对路径");if(!e.default.isAbsolute(b))throw Error("本地路径必须为绝对路径");let{aiQuery:d}=await a.A(752453),f=await d("en"===c?l:k,b,{maxTurns:10,tools:["Read","Glob"],allowedTools:["Read","Glob"]});if(!f)throw Error("AI 分析未返回结果");return f.length>2e3?f.slice(0,2e3).trimEnd()+"\n\n...":f}(0,h.ensureServerEntryExports)([i,j,m]),(0,b.registerServerReference)(i,"4086d4fac67eb51074663ecda67e6d5c91db6a39f0",null),(0,b.registerServerReference)(j,"609c44c07549141a1d3aa685e217e105d01deb136b",null),(0,b.registerServerReference)(m,"6050a920bf748f3f9420f69a5223c28ff276888314",null),a.s(["analyzeProjectDirectory",0,m,"checkMigrationSafety",0,i,"migrateProjectPath",0,j])}];
45
+ - Output in English`;async function m(b,c="zh"){if(!b||"string"!=typeof b)throw Error("无效的本地路径");if(b.startsWith("~"))throw Error("不支持 ~ 别名,请提供绝对路径");if(!e.default.isAbsolute(b))throw Error("本地路径必须为绝对路径");let{aiQuery:d}=await a.A(752453),f=await d("en"===c?l:k,b,{maxTurns:10,tools:["Read","Glob"],allowedTools:["Read","Glob"]});if(!f)throw Error("AI 分析未返回结果");return f.length>2e3?f.slice(0,2e3).trimEnd()+"\n\n...":f}(0,h.ensureServerEntryExports)([i,j,m]),(0,b.registerServerReference)(i,"403b0b19501eae7fc7f033311a9699b661c77a1c27",null),(0,b.registerServerReference)(j,"60912e5efd578a2164ae3ecbacc85273a0b85a3bc0",null),(0,b.registerServerReference)(m,"60a15a0f987a45dc4abb292e72222dd2e8b8beb48e",null),a.s(["analyzeProjectDirectory",0,m,"checkMigrationSafety",0,i,"migrateProjectPath",0,j])}];
46
46
 
47
- //# sourceMappingURL=%5Broot-of-the-server%5D__03ebsif._.js.map
47
+ //# sourceMappingURL=src_0j_1~da._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[845427,a=>{"use strict";var b=a.i(233405),c=a.i(522734),d=a.i(924868),e=a.i(814747),f=a.i(446786),g=a.i(26683);function h(a){return a.startsWith("~/")||"~"===a?e.default.join(f.default.homedir(),a.slice(1)):a}async function i(a,f,i,j){let k=h(a),l=e.default.join(k,".worktrees","task-"+f),m="task/"+f;await (0,d.mkdir)(e.default.join(k,".worktrees"),{recursive:!0});let n=(0,b.execFileSync)("git",["worktree","list","--porcelain"],{cwd:k,encoding:"utf-8",timeout:1e4}),o=e.default.normalize(l).replace(/\\/g,"/");if(n.split("\n").some(a=>a.startsWith("worktree ")&&a.slice(9).replace(/\\/g,"/")===o))return{worktreePath:l,worktreeBranch:m};if((0,c.existsSync)(l)&&(g.logger.warn(`[worktree] Directory exists but not tracked by git, removing: ${l}`),(0,b.execFileSync)("git",["worktree","remove",l,"--force"],{cwd:k,encoding:"utf-8",timeout:3e4})),(0,b.execFileSync)("git",["branch","--list",m],{cwd:k,encoding:"utf-8",timeout:5e3}).trim())(0,b.execFileSync)("git",["worktree","add",l,m],{cwd:k,encoding:"utf-8",timeout:3e4});else{let a=i;try{(0,b.execFileSync)("git",["rev-parse","--verify",i],{cwd:k,encoding:"utf-8",timeout:5e3,stdio:["pipe","pipe","pipe"]})}catch{try{(0,b.execFileSync)("git",["rev-parse","--verify",`origin/${i}`],{cwd:k,encoding:"utf-8",timeout:5e3,stdio:["pipe","pipe","pipe"]}),a=`origin/${i}`}catch{throw Error(`Base branch '${i}' does not exist locally or on remote. Available branches: `+(0,b.execFileSync)("git",["branch","-a","--format=%(refname:short)"],{cwd:k,encoding:"utf-8",timeout:5e3}).trim().split("\n").join(", "))}}(0,b.execFileSync)("git",["worktree","add","-b",m,l,a],{cwd:k,encoding:"utf-8",timeout:3e4})}return function(a,b,d){let f=g.logger.create("worktree"),h=["node_modules",".next"];for(let g of d?["",d]:[""])if((0,c.existsSync)(e.default.join(a,g,"package.json")))for(let d of h){let h=g?e.default.join(g,d):d,i=e.default.join(a,h),j=e.default.join(b,h);if((0,c.existsSync)(i)){try{(0,c.lstatSync)(j);continue}catch{}try{(0,c.symlinkSync)(i,j,"junction"),f.info(`Symlinked ${h}`,{from:i,to:j})}catch(a){f.warn(`Failed to symlink ${h}`,{error:String(a)})}}}}(k,l,j),{worktreePath:l,worktreeBranch:m}}async function j(a,d){let f=h(a),g=e.default.join(f,".worktrees","task-"+d),i="task/"+d;(0,c.existsSync)(g)&&(0,b.execFileSync)("git",["worktree","remove",g,"--force"],{cwd:f,encoding:"utf-8",timeout:3e4}),(0,b.execFileSync)("git",["branch","--list",i],{cwd:f,encoding:"utf-8",timeout:5e3}).trim()&&(0,b.execFileSync)("git",["branch","-D",i],{cwd:f,encoding:"utf-8",timeout:5e3})}a.s(["createWorktree",0,i,"removeWorktree",0,j])},689171,a=>{"use strict";var b=a.i(815429),c=a.i(761469),d=a.i(188139),e=a.i(495370),f=a.i(845427),g=a.i(75681),h=a.i(496877),i=a.i(26683),j=a.i(630048);let k=i.logger.create("task-actions");async function l(a){let b=h.createTaskSchema.parse(a),e=await c.db.task.create({data:{title:b.title,description:b.description,projectId:b.projectId,priority:b.priority??"MEDIUM",status:b.status??"TODO",baseBranch:b.baseBranch??null,subPath:b.subPath??null,versionId:b.versionId??null}});return b.labelIds&&b.labelIds.length>0&&await c.db.taskLabel.createMany({data:b.labelIds.map(a=>({taskId:e.id,labelId:a}))}),(0,d.revalidatePath)("/workspaces"),e}async function m(b,e){h.taskStatusSchema.parse(e);let g=await c.db.task.update({where:{id:b},data:{status:e},include:{project:!0}});if("DONE"===e&&!g.baseBranch&&g.project?.localPath)try{let{execFileSync:d}=await a.A(144264),e=d("git",["rev-parse","HEAD"],{cwd:g.project.localPath,encoding:"utf-8",timeout:5e3}).trim();if(e){let a=await c.db.taskExecution.findFirst({where:{taskId:b},orderBy:{createdAt:"desc"}});a&&await c.db.taskExecution.update({where:{id:a.id},data:{mergeCommit:e}})}}catch{}if("DONE"===e&&a.A(662330).then(({captureTaskDreaming:a})=>{a(b).catch(()=>{})}).catch(()=>{}),"CANCELLED"===e&&g.project?.localPath)try{await (0,f.removeWorktree)(g.project.localPath,b)}catch(a){k.error("Worktree cleanup failed",a,{taskId:b})}return(0,d.revalidatePath)("/workspaces"),g}async function n(a,b){let{labelIds:f,...g}=h.updateTaskSchema.parse(b),i=await c.db.task.update({where:{id:a},data:g});return void 0!==f&&await (0,e.setTaskLabels)(a,f),(0,d.revalidatePath)("/workspaces"),i}async function o(a){g.z.string().cuid().parse(a);let b=await c.db.task.findUniqueOrThrow({where:{id:a},select:{pinned:!0}}),e=await c.db.task.update({where:{id:a},data:{pinned:!b.pinned}});return(0,d.revalidatePath)("/workspaces"),e}async function p(b){let e=await c.db.task.findUnique({where:{id:b},include:{project:!0}});if(e?.project?.localPath)try{await (0,f.removeWorktree)(e.project.localPath,b)}catch{}try{let{destroySession:c}=await a.A(98813);c(b)}catch{}await c.db.task.delete({where:{id:b}}),(0,d.revalidatePath)("/workspaces")}async function q(a){let b=new Date;return b.setHours(0,0,0,0),c.db.task.findMany({where:{projectId:a,OR:[{status:{notIn:["DONE","CANCELLED"]}},{status:{in:["DONE","CANCELLED"]},updatedAt:{gte:b}}]},orderBy:[{pinned:"desc"},{order:"asc"},{createdAt:"desc"}]})}async function r(a){return a.trim()?c.db.task.findMany({where:{OR:[{title:{contains:a}},{description:{contains:a}}]},include:{project:{include:{workspace:!0}}},take:20,orderBy:{updatedAt:"desc"}}):[]}async function s(a){let b=new Date;return b.setHours(0,0,0,0),c.db.task.findMany({where:{projectId:a,status:{in:["DONE","CANCELLED"]},updatedAt:{lt:b}},include:{labels:{include:{label:!0}},executions:{orderBy:{createdAt:"desc"},take:1}},orderBy:{updatedAt:"desc"}})}async function t(b){let{execFileSync:d}=await a.A(144264),{existsSync:e}=await a.A(323970),f=await c.db.task.findUnique({where:{id:b}}),g=await c.db.taskExecution.findFirst({where:{taskId:b},orderBy:{createdAt:"desc"}});if(!g?.worktreePath||!e(g.worktreePath))return{clean:!0,files:[],hasCommits:!1,lastCommitMessage:null,commitLog:[],hasWorktree:!1};let h=g.worktreePath,i=f?.baseBranch||"main";try{let a=d("git",["status","--porcelain"],{cwd:h,encoding:"utf-8",timeout:5e3}).trim(),b=a?a.split("\n").map(a=>a.trim()).filter(Boolean):[],c=0===b.length,e=!1,f=null,g=[];try{let a=d("git",["merge-base",i,"HEAD"],{cwd:h,encoding:"utf-8",timeout:5e3}).trim(),b=d("git",["rev-list","--count",`${a}..HEAD`],{cwd:h,encoding:"utf-8",timeout:5e3}).trim();if(e=parseInt(b,10)>0){f=d("git",["log","-1","--format=%B"],{cwd:h,encoding:"utf-8",timeout:5e3}).trim();let b=d("git",["log","--oneline",`${a}..HEAD`],{cwd:h,encoding:"utf-8",timeout:5e3}).trim();g=b?b.split("\n").filter(Boolean):[]}}catch{}return{clean:c,files:b,hasCommits:e,lastCommitMessage:f,commitLog:g,hasWorktree:!0}}catch{return{clean:!0,files:[],hasCommits:!1,lastCommitMessage:null,commitLog:[],hasWorktree:!0}}}async function u(b,d){let{execFileSync:e}=await a.A(144264),{existsSync:f}=await a.A(323970),g=await c.db.taskExecution.findFirst({where:{taskId:b},orderBy:{createdAt:"desc"}});if(!g?.worktreePath||!f(g.worktreePath))throw Error("No active worktree for this task");let h=g.worktreePath;if(e("git",["add","-A"],{cwd:h,timeout:1e4}),!e("git",["status","--porcelain"],{cwd:h,encoding:"utf-8",timeout:5e3}).trim())throw Error("No changes to commit");return e("git",["commit","-m",d],{cwd:h,encoding:"utf-8",timeout:15e3}),{hash:e("git",["rev-parse","--short","HEAD"],{cwd:h,encoding:"utf-8",timeout:5e3}).trim()}}async function v(a){return/^c[a-z0-9]{20,30}$/.test(a)?c.db.task.findUnique({where:{id:a},include:{labels:{include:{label:!0}},project:{select:{id:!0,name:!0,type:!0,localPath:!0,workspaceId:!0}},executions:{orderBy:{createdAt:"desc"},take:1,select:{summary:!0,status:!0,endedAt:!0,gitStats:!0}},_count:{select:{assets:!0}}}}):null}async function w(a){let b=new Date;return b.setHours(0,0,0,0),c.db.task.count({where:{projectId:a,status:{in:["DONE","CANCELLED"]},updatedAt:{lt:b}}})}(0,j.ensureServerEntryExports)([l,m,n,o,p,q,r,s,t,u,v,w]),(0,b.registerServerReference)(l,"405bd119fee38e72cd1c808abda7f46cd83a0fc302",null),(0,b.registerServerReference)(m,"60c594637c6e7899b90bcb9e778159f9beffb9bac8",null),(0,b.registerServerReference)(n,"60a84ea6c2ba29e64ac76dd854393c966d54e133c4",null),(0,b.registerServerReference)(o,"4033448aa7efe65b5ecb9c5227e485d567f1b5f8d0",null),(0,b.registerServerReference)(p,"404e6712981e0afe59a8e15773782718ba80df3c52",null),(0,b.registerServerReference)(q,"40511a7eb587330f02b0e505c3b4034130179358f2",null),(0,b.registerServerReference)(r,"40c35c4856c452a913ca81682ddeaef09a75906c40",null),(0,b.registerServerReference)(s,"40c4827e9bd88dc4df79c38b10891e815b4b0fe5c0",null),(0,b.registerServerReference)(t,"40249cd06cec6d387c09fba3cc09267dc61d9c292e",null),(0,b.registerServerReference)(u,"602e61f3faf648fd0e3fc788f6e27d5bfb95a8ffdf",null),(0,b.registerServerReference)(v,"40f08f78116430c7b12d09f8282a762c1337e7752c",null),(0,b.registerServerReference)(w,"40353f2081b5007f80bf9c18c97fc87aab11478e55",null),a.s(["checkWorktreeClean",0,t,"commitWorktreeChanges",0,u,"createTask",0,l,"deleteTask",0,p,"getArchivedTaskCount",0,w,"getArchivedTasks",0,s,"getProjectTasks",0,q,"getTaskOverview",0,v,"searchTasks",0,r,"toggleTaskPinned",0,o,"updateTask",0,n,"updateTaskStatus",0,m])},196195,a=>{"use strict";var b=a.i(815429),c=a.i(233405),d=a.i(814747),e=a.i(446786);function f(a){return a.startsWith("~/")||"~"===a?d.default.join(e.default.homedir(),a.slice(1)):a}async function g(a){if(!a?.trim())return null;let b=d.default.resolve(f(a));try{return(0,c.execSync)("git rev-parse --abbrev-ref HEAD",{cwd:b,encoding:"utf-8",timeout:5e3}).trim()}catch{return null}}async function h(a){if(!a?.trim())return[];let b=d.default.resolve(f(a));try{let a,d;return a=new Set((0,c.execSync)("git branch --format='%(refname:short)'",{cwd:b,encoding:"utf-8",timeout:5e3}).trim().split("\n").filter(Boolean).map(a=>a.replace(/'/g,""))),d=(0,c.execSync)("git branch -r --format='%(refname:short)'",{cwd:b,encoding:"utf-8",timeout:5e3}).trim().split("\n").filter(Boolean).map(a=>a.replace(/'/g,"").replace(/^origin\//,"")).filter(b=>"HEAD"!==b&&!a.has(b)),[...a,...d]}catch{return[]}}async function i(a){if(!a?.trim())return;let b=d.default.resolve(f(a));try{(0,c.spawn)("git",["fetch","--prune"],{cwd:b,stdio:"ignore",detached:!0}).unref()}catch{}}(0,a.i(630048).ensureServerEntryExports)([g,h,i]),(0,b.registerServerReference)(g,"40b130393fe7e7d5b669caf6355e66359bf3f2f533",null),(0,b.registerServerReference)(h,"404a5f4fc113828a7f21798e83f57a8018ebaab99b",null),(0,b.registerServerReference)(i,"402d77511fb9d05b47fabb5d8dd8c4d901208a2d26",null),a.s(["fetchRemoteBranches",0,i,"getCurrentBranch",0,g,"getProjectBranches",0,h])}];
1
+ module.exports=[845427,a=>{"use strict";var b=a.i(233405),c=a.i(522734),d=a.i(924868),e=a.i(814747),f=a.i(446786),g=a.i(26683);function h(a){return a.startsWith("~/")||"~"===a?e.default.join(f.default.homedir(),a.slice(1)):a}async function i(a,f,i,j){let k=h(a),l=e.default.join(k,".worktrees","task-"+f),m="task/"+f;await (0,d.mkdir)(e.default.join(k,".worktrees"),{recursive:!0});let n=(0,b.execFileSync)("git",["worktree","list","--porcelain"],{cwd:k,encoding:"utf-8",timeout:1e4}),o=e.default.normalize(l).replace(/\\/g,"/");if(n.split("\n").some(a=>a.startsWith("worktree ")&&a.slice(9).replace(/\\/g,"/")===o))return{worktreePath:l,worktreeBranch:m};if((0,c.existsSync)(l)&&(g.logger.warn(`[worktree] Directory exists but not tracked by git, removing: ${l}`),(0,b.execFileSync)("git",["worktree","remove",l,"--force"],{cwd:k,encoding:"utf-8",timeout:3e4})),(0,b.execFileSync)("git",["branch","--list",m],{cwd:k,encoding:"utf-8",timeout:5e3}).trim())(0,b.execFileSync)("git",["worktree","add",l,m],{cwd:k,encoding:"utf-8",timeout:3e4});else{let a=i;try{(0,b.execFileSync)("git",["rev-parse","--verify",i],{cwd:k,encoding:"utf-8",timeout:5e3,stdio:["pipe","pipe","pipe"]})}catch{try{(0,b.execFileSync)("git",["rev-parse","--verify",`origin/${i}`],{cwd:k,encoding:"utf-8",timeout:5e3,stdio:["pipe","pipe","pipe"]}),a=`origin/${i}`}catch{throw Error(`Base branch '${i}' does not exist locally or on remote. Available branches: `+(0,b.execFileSync)("git",["branch","-a","--format=%(refname:short)"],{cwd:k,encoding:"utf-8",timeout:5e3}).trim().split("\n").join(", "))}}(0,b.execFileSync)("git",["worktree","add","-b",m,l,a],{cwd:k,encoding:"utf-8",timeout:3e4})}return function(a,b,d){let f=g.logger.create("worktree"),h=["node_modules",".next"];for(let g of d?["",d]:[""])if((0,c.existsSync)(e.default.join(a,g,"package.json")))for(let d of h){let h=g?e.default.join(g,d):d,i=e.default.join(a,h),j=e.default.join(b,h);if((0,c.existsSync)(i)){try{(0,c.lstatSync)(j);continue}catch{}try{(0,c.symlinkSync)(i,j,"junction"),f.info(`Symlinked ${h}`,{from:i,to:j})}catch(a){f.warn(`Failed to symlink ${h}`,{error:String(a)})}}}}(k,l,j),{worktreePath:l,worktreeBranch:m}}async function j(a,d){let f=h(a),g=e.default.join(f,".worktrees","task-"+d),i="task/"+d;(0,c.existsSync)(g)&&(0,b.execFileSync)("git",["worktree","remove",g,"--force"],{cwd:f,encoding:"utf-8",timeout:3e4}),(0,b.execFileSync)("git",["branch","--list",i],{cwd:f,encoding:"utf-8",timeout:5e3}).trim()&&(0,b.execFileSync)("git",["branch","-D",i],{cwd:f,encoding:"utf-8",timeout:5e3})}a.s(["createWorktree",0,i,"removeWorktree",0,j])},689171,a=>{"use strict";var b=a.i(815429),c=a.i(761469),d=a.i(188139),e=a.i(495370),f=a.i(845427),g=a.i(75681),h=a.i(496877),i=a.i(26683),j=a.i(630048);let k=i.logger.create("task-actions");async function l(a){let b=h.createTaskSchema.parse(a),e=await c.db.task.create({data:{title:b.title,description:b.description,projectId:b.projectId,priority:b.priority??"MEDIUM",status:b.status??"TODO",baseBranch:b.baseBranch??null,subPath:b.subPath??null,versionId:b.versionId??null}});return b.labelIds&&b.labelIds.length>0&&await c.db.taskLabel.createMany({data:b.labelIds.map(a=>({taskId:e.id,labelId:a}))}),(0,d.revalidatePath)("/workspaces"),e}async function m(b,e){h.taskStatusSchema.parse(e);let g=await c.db.task.update({where:{id:b},data:{status:e},include:{project:!0}});if("DONE"===e&&!g.baseBranch&&g.project?.localPath)try{let{execFileSync:d}=await a.A(144264),e=d("git",["rev-parse","HEAD"],{cwd:g.project.localPath,encoding:"utf-8",timeout:5e3}).trim();if(e){let a=await c.db.taskExecution.findFirst({where:{taskId:b},orderBy:{createdAt:"desc"}});a&&await c.db.taskExecution.update({where:{id:a.id},data:{mergeCommit:e}})}}catch{}if("DONE"===e&&a.A(662330).then(({captureTaskDreaming:a})=>{a(b).catch(()=>{})}).catch(()=>{}),"CANCELLED"===e&&g.project?.localPath)try{await (0,f.removeWorktree)(g.project.localPath,b)}catch(a){k.error("Worktree cleanup failed",a,{taskId:b})}return(0,d.revalidatePath)("/workspaces"),g}async function n(a,b){let{labelIds:f,...g}=h.updateTaskSchema.parse(b),i=await c.db.task.update({where:{id:a},data:g});return void 0!==f&&await (0,e.setTaskLabels)(a,f),(0,d.revalidatePath)("/workspaces"),i}async function o(a){g.z.string().cuid().parse(a);let b=await c.db.task.findUniqueOrThrow({where:{id:a},select:{pinned:!0}}),e=await c.db.task.update({where:{id:a},data:{pinned:!b.pinned}});return(0,d.revalidatePath)("/workspaces"),e}async function p(b){let e=await c.db.task.findUnique({where:{id:b},include:{project:!0}});if(e?.project?.localPath)try{await (0,f.removeWorktree)(e.project.localPath,b)}catch{}try{let{destroySession:c}=await a.A(98813);c(b)}catch{}await c.db.task.delete({where:{id:b}}),(0,d.revalidatePath)("/workspaces")}async function q(a){let b=new Date;return b.setHours(0,0,0,0),c.db.task.findMany({where:{projectId:a,OR:[{status:{notIn:["DONE","CANCELLED"]}},{status:{in:["DONE","CANCELLED"]},updatedAt:{gte:b}}]},orderBy:[{pinned:"desc"},{order:"asc"},{createdAt:"desc"}]})}async function r(a){return a.trim()?c.db.task.findMany({where:{OR:[{title:{contains:a}},{description:{contains:a}}]},include:{project:{include:{workspace:!0}}},take:20,orderBy:{updatedAt:"desc"}}):[]}async function s(a){let b=new Date;return b.setHours(0,0,0,0),c.db.task.findMany({where:{projectId:a,status:{in:["DONE","CANCELLED"]},updatedAt:{lt:b}},include:{labels:{include:{label:!0}},executions:{orderBy:{createdAt:"desc"},take:1}},orderBy:{updatedAt:"desc"}})}async function t(b){let{execFileSync:d}=await a.A(144264),{existsSync:e}=await a.A(323970),f=await c.db.task.findUnique({where:{id:b}}),g=await c.db.taskExecution.findFirst({where:{taskId:b},orderBy:{createdAt:"desc"}});if(!g?.worktreePath||!e(g.worktreePath))return{clean:!0,files:[],hasCommits:!1,lastCommitMessage:null,commitLog:[],hasWorktree:!1};let h=g.worktreePath,i=f?.baseBranch||"main";try{let a=d("git",["status","--porcelain"],{cwd:h,encoding:"utf-8",timeout:5e3}).trim(),b=a?a.split("\n").map(a=>a.trim()).filter(Boolean):[],c=0===b.length,e=!1,f=null,g=[];try{let a=d("git",["merge-base",i,"HEAD"],{cwd:h,encoding:"utf-8",timeout:5e3}).trim(),b=d("git",["rev-list","--count",`${a}..HEAD`],{cwd:h,encoding:"utf-8",timeout:5e3}).trim();if(e=parseInt(b,10)>0){f=d("git",["log","-1","--format=%B"],{cwd:h,encoding:"utf-8",timeout:5e3}).trim();let b=d("git",["log","--oneline",`${a}..HEAD`],{cwd:h,encoding:"utf-8",timeout:5e3}).trim();g=b?b.split("\n").filter(Boolean):[]}}catch{}return{clean:c,files:b,hasCommits:e,lastCommitMessage:f,commitLog:g,hasWorktree:!0}}catch{return{clean:!0,files:[],hasCommits:!1,lastCommitMessage:null,commitLog:[],hasWorktree:!0}}}async function u(b,d){let{execFileSync:e}=await a.A(144264),{existsSync:f}=await a.A(323970),g=await c.db.taskExecution.findFirst({where:{taskId:b},orderBy:{createdAt:"desc"}});if(!g?.worktreePath||!f(g.worktreePath))throw Error("No active worktree for this task");let h=g.worktreePath;if(e("git",["add","-A"],{cwd:h,timeout:1e4}),!e("git",["status","--porcelain"],{cwd:h,encoding:"utf-8",timeout:5e3}).trim())throw Error("No changes to commit");return e("git",["commit","-m",d],{cwd:h,encoding:"utf-8",timeout:15e3}),{hash:e("git",["rev-parse","--short","HEAD"],{cwd:h,encoding:"utf-8",timeout:5e3}).trim()}}async function v(a){return/^c[a-z0-9]{20,30}$/.test(a)?c.db.task.findUnique({where:{id:a},include:{labels:{include:{label:!0}},project:{select:{id:!0,name:!0,type:!0,localPath:!0,workspaceId:!0}},executions:{orderBy:{createdAt:"desc"},take:1,select:{summary:!0,status:!0,endedAt:!0,gitStats:!0}},_count:{select:{assets:!0}}}}):null}async function w(a){let b=new Date;return b.setHours(0,0,0,0),c.db.task.count({where:{projectId:a,status:{in:["DONE","CANCELLED"]},updatedAt:{lt:b}}})}(0,j.ensureServerEntryExports)([l,m,n,o,p,q,r,s,t,u,v,w]),(0,b.registerServerReference)(l,"402a3036fb51a67f3443096bd50f9c9ef89750d483",null),(0,b.registerServerReference)(m,"600ec870dd67923690bcfd0a7d3ec447cacaa8fdf5",null),(0,b.registerServerReference)(n,"60c0c99731863f9af27a3fae979b49b23f9ce76329",null),(0,b.registerServerReference)(o,"40f52736456189b0053a31bc639186ec0701665762",null),(0,b.registerServerReference)(p,"409268e8c3bea05e209fc80f56d36599bb38ec4608",null),(0,b.registerServerReference)(q,"4099a9a8740f408494b5250ee0dbe45e67309d915a",null),(0,b.registerServerReference)(r,"40f988f8befa79e60bd1a2891f5a1235b59518210a",null),(0,b.registerServerReference)(s,"402d54639a0ad6d0db931d558791ec166378fbcfd4",null),(0,b.registerServerReference)(t,"4072348753bfa91488aba0268bfa642250274e2590",null),(0,b.registerServerReference)(u,"604ca03ed6b1c4a4bc54beaa6936f2639564267b60",null),(0,b.registerServerReference)(v,"400b035a548c21f1af0a4269dedff1a9ccdf4126f5",null),(0,b.registerServerReference)(w,"402600786c93f2bfd8090a11d4c41b6b779008c9b6",null),a.s(["checkWorktreeClean",0,t,"commitWorktreeChanges",0,u,"createTask",0,l,"deleteTask",0,p,"getArchivedTaskCount",0,w,"getArchivedTasks",0,s,"getProjectTasks",0,q,"getTaskOverview",0,v,"searchTasks",0,r,"toggleTaskPinned",0,o,"updateTask",0,n,"updateTaskStatus",0,m])},196195,a=>{"use strict";var b=a.i(815429),c=a.i(233405),d=a.i(814747),e=a.i(446786);function f(a){return a.startsWith("~/")||"~"===a?d.default.join(e.default.homedir(),a.slice(1)):a}async function g(a){if(!a?.trim())return null;let b=d.default.resolve(f(a));try{return(0,c.execSync)("git rev-parse --abbrev-ref HEAD",{cwd:b,encoding:"utf-8",timeout:5e3}).trim()}catch{return null}}async function h(a){if(!a?.trim())return[];let b=d.default.resolve(f(a));try{let a,d;return a=new Set((0,c.execSync)("git branch --format='%(refname:short)'",{cwd:b,encoding:"utf-8",timeout:5e3}).trim().split("\n").filter(Boolean).map(a=>a.replace(/'/g,""))),d=(0,c.execSync)("git branch -r --format='%(refname:short)'",{cwd:b,encoding:"utf-8",timeout:5e3}).trim().split("\n").filter(Boolean).map(a=>a.replace(/'/g,"").replace(/^origin\//,"")).filter(b=>"HEAD"!==b&&!a.has(b)),[...a,...d]}catch{return[]}}async function i(a){if(!a?.trim())return;let b=d.default.resolve(f(a));try{(0,c.spawn)("git",["fetch","--prune"],{cwd:b,stdio:"ignore",detached:!0}).unref()}catch{}}(0,a.i(630048).ensureServerEntryExports)([g,h,i]),(0,b.registerServerReference)(g,"404b14041825855ecf2ed923323b3e1f4587a8cd91",null),(0,b.registerServerReference)(h,"409ce1bb56a35f8de4c702e26b06ea01030bcb7a2a",null),(0,b.registerServerReference)(i,"4096a96fa0228acf7b76524b8980d2dca5d70bf55b",null),a.s(["fetchRemoteBranches",0,i,"getCurrentBranch",0,g,"getProjectBranches",0,h])}];
2
2
 
3
3
  //# sourceMappingURL=src_13jha60._.js.map
@@ -1,4 +1,4 @@
1
1
  module.exports=[347427,a=>{"use strict";var b=a.i(815429),c=a.i(761469),d=a.i(188139),e=a.i(845427),f=a.i(962620),g=a.i(26683),h=a.i(312369),i=a.i(378322);class j extends Error{code;provider;constructor(a,b,c){super(c),this.code=a,this.provider=b,this.name="AiProviderError"}}var k=a.i(855806);let l="claude",m="请到 Settings → Test Connection 测试该 Provider 后再使用(未注入的 CLI 不能被插槽选中)";async function n(a){return c.db.aiCapabilityConfig.findUnique({where:{slot:a}})}async function o(a){if(a){if(await (0,k.isProviderConnected)(a))return a;throw new j("CLI_NOT_FOUND",a,`Provider "${a}" 未连接:${m}`)}let b=await (0,k.getConnectedProviders)();if(0===b.length)throw new j("CLI_NOT_FOUND",l,`没有任何 AI Provider 已连接:${m}`);return b.includes(l)?l:b[0]}async function p(a){let b=await n(a),c=b?.model??void 0,d=await o(b?.provider??null),e=i.providerRegistry.get(d);if(!e)throw new j("CLI_NOT_FOUND",d,`Provider "${d}" 未注册`);let f=e.cli?.adapter;if(!f)throw new j("UNSUPPORTED_MODE",d,`Provider "${d}" 不支持 CLI 模式`);return{adapter:f,provider:e,model:c}}var q=a.i(924868),r=a.i(446786),s=a.i(814747),t=a.i(630048);let u=g.logger.create("agent-actions"),v=(0,s.join)((0,r.tmpdir)(),"tower-signals");async function w(a,b){try{await (0,q.mkdir)(v,{recursive:!0,mode:448}),await (0,q.writeFile)((0,s.join)(v,`exit-${a}`),String(b),{mode:384})}catch{}}async function x(a,b){let e=await c.db.taskMessage.create({data:{role:"USER",content:b,taskId:a}});return(0,d.revalidatePath)("/workspaces"),{userMessage:e}}async function y(a){return c.db.taskMessage.findMany({where:{taskId:a},orderBy:{createdAt:"asc"}})}async function z(a,b="CLAUDE_CODE",e,f){let g=await c.db.taskExecution.create({data:{taskId:a,agent:b,status:"RUNNING",startedAt:new Date,worktreePath:e??null,worktreeBranch:f??null}});return await c.db.task.update({where:{id:a},data:{status:"IN_PROGRESS"}}),(0,d.revalidatePath)("/workspaces"),g}async function A(a,b="FAILED"){let e=await c.db.taskExecution.update({where:{id:a},data:{status:b,endedAt:new Date}});return(0,d.revalidatePath)("/workspaces"),e}async function B(b){let{destroySession:e,getSession:f}=await a.A(98813),g=f(b),h=g?.getBuffer()??"",i=await c.db.taskExecution.findFirst({where:{taskId:b,status:"RUNNING"},orderBy:{createdAt:"desc"}}),j=await c.db.task.findUnique({where:{id:b},include:{project:{select:{localPath:!0}}}});if(e(b),i){await c.db.taskExecution.update({where:{id:i.id},data:{status:"COMPLETED",endedAt:new Date}}),await c.db.task.update({where:{id:b},data:{status:"IN_REVIEW"}});let d=i.worktreePath||j?.project?.localPath||null,{captureExecutionSummary:e}=await a.A(662330);await e(i.id,b,0,h,d)}(0,d.revalidatePath)("/workspaces")}async function C(a){return c.db.taskExecution.findMany({where:{taskId:a},orderBy:{createdAt:"desc"},include:{insightNote:{select:{id:!0,title:!0,content:!0}}}})}async function D(b,e){let g=await c.db.task.findUnique({where:{id:b},include:{project:!0}});if(!g)throw Error("Task not found");if(!g.project?.localPath)throw Error("Project has no local path configured");await c.db.taskExecution.updateMany({where:{taskId:b,status:"RUNNING",NOT:{sessionId:e}},data:{status:"FAILED",endedAt:new Date}});let i=await c.db.taskExecution.findFirst({where:{taskId:b,sessionId:e},orderBy:{createdAt:"desc"}});if(!i)throw Error("Previous execution not found");let j=i.worktreePath??g.project.localPath,k=g.subPath?(0,s.join)(j,g.subPath):j,l=await (0,h.readConfigValue)("terminal.idleTimeoutSec",180),{adapter:m}=await p("terminal"),n=m.buildEnvOverrides({taskId:b,taskTitle:g.title,apiUrl:`http://localhost:${process.env.PORT||"3000"}`,callbackUrl:i.callbackUrl??void 0}),o=await c.db.taskExecution.update({where:{id:i.id},data:{status:"RUNNING",endedAt:null}});await c.db.task.update({where:{id:b},data:{status:"IN_PROGRESS"}}),(0,d.revalidatePath)("/workspaces");let q=await (0,h.readConfigValue)("onboarding.username",""),r=m.buildSpawnArgs({taskId:b,prompt:"",cwd:k,resumeSessionId:e,extraArgs:[...q?["--append-system-prompt",`The user's name is ${q}.`]:[]],envOverrides:n}),t=/no conversation found with session id|unknown session|session .* not found/i;return(0,f.createSession)(b,r.command,r.args,k,()=>{},async d=>{await w(b,d);let f=await c.db.taskExecution.findUnique({where:{id:o.id}});if(f?.status!=="RUNNING")return;let{getSession:h}=await a.A(98813),j=h(b),k=j?.getBuffer()??"";if(0!==d&&t.test(k)){u.info("Session resume failed — retrying with fresh execution",{taskId:b,previousSessionId:e}),await c.db.taskExecution.update({where:{id:o.id},data:{status:"FAILED",endedAt:new Date}}).catch(()=>{});try{await F(b,g.title)}catch(a){u.error("Fresh execution retry also failed",a,{taskId:b})}return}await c.db.taskExecution.update({where:{id:o.id},data:{status:0===d?"COMPLETED":"FAILED",endedAt:new Date}}).catch(()=>{});let l=i.worktreePath||g.project.localPath,{captureExecutionSummary:m}=await a.A(662330);await m(o.id,b,d,k,l);let{dispatchTaskCompletionEvent:n}=await a.A(610073);await n({taskId:b,taskTitle:g.title,status:0===d?"COMPLETED":"FAILED",executionId:o.id,workspaceId:g.project.workspaceId}),0===d&&await c.db.task.update({where:{id:b},data:{status:"IN_REVIEW"}}).catch(()=>{})},r.env,void 0,1e3*l),{executionId:o.id,worktreePath:i.worktreePath??j??null}}async function E(b){let e=await c.db.task.findUnique({where:{id:b},include:{project:!0}});if(!e)throw Error("Task not found");if(!e.project?.localPath)throw Error("Project has no local path configured");let g=await c.db.taskExecution.findFirst({where:{taskId:b},orderBy:{createdAt:"desc"}}),{destroySession:i}=await a.A(98813);i(b),await c.db.taskExecution.updateMany({where:{taskId:b,status:"RUNNING"},data:{status:"FAILED",endedAt:new Date}});let j=g?.worktreePath??e.project.localPath,k=e.subPath?(0,s.join)(j,e.subPath):j,l=await (0,h.readConfigValue)("terminal.idleTimeoutSec",180),{adapter:m,provider:n}=await p("terminal"),o=m.buildEnvOverrides({taskId:b,taskTitle:e.title,apiUrl:`http://localhost:${process.env.PORT||"3000"}`}),q=await c.db.taskExecution.create({data:{taskId:b,agent:n.agentFieldValue,status:"RUNNING",startedAt:new Date,worktreePath:g?.worktreePath??null,worktreeBranch:g?.worktreeBranch??null}});await c.db.task.update({where:{id:b},data:{status:"IN_PROGRESS"}}),(0,d.revalidatePath)("/workspaces");let r=await (0,h.readConfigValue)("onboarding.username",""),t=m.buildSpawnArgs({taskId:b,prompt:"",cwd:k,continueLatest:!0,extraArgs:[...r?["--append-system-prompt",`The user's name is ${r}.`]:[]],envOverrides:o});return(0,f.createSession)(b,t.command,t.args,k,()=>{},async d=>{await w(b,d);let f=await c.db.taskExecution.findUnique({where:{id:q.id}});if(f?.status!=="RUNNING")return;let{getSession:h}=await a.A(98813),i=h(b),j=i?.getBuffer()??"";await c.db.taskExecution.update({where:{id:q.id},data:{status:0===d?"COMPLETED":"FAILED",endedAt:new Date}}).catch(()=>{});let k=g?.worktreePath||e.project.localPath,{captureExecutionSummary:l}=await a.A(662330);await l(q.id,b,d,j,k);let{dispatchTaskCompletionEvent:m}=await a.A(610073);await m({taskId:b,taskTitle:e.title,status:0===d?"COMPLETED":"FAILED",executionId:q.id,workspaceId:e.project.workspaceId}),0===d&&await c.db.task.update({where:{id:b},data:{status:"IN_REVIEW"}}).catch(()=>{})},t.env,void 0,1e3*l),{executionId:q.id,worktreePath:g?.worktreePath??j??null}}async function F(b,g,i,j,k){let l,m,n=await c.db.task.findUnique({where:{id:b},include:{project:!0}});if(!n)throw Error("Task not found");if(!n.project?.localPath)throw Error("Project has no local path configured");let o=await (0,h.readConfigValue)("system.maxConcurrentExecutions",20);if(await c.db.taskExecution.count({where:{status:"RUNNING"}})>=o)throw Error(`已达并发上限(${o}),请等待其他任务完成后再启动`);let t=await (0,h.readConfigValue)("terminal.idleTimeoutSec",180),{adapter:v,provider:x,model:y}=await p("terminal");await c.db.taskExecution.updateMany({where:{taskId:b,status:"RUNNING"},data:{status:"FAILED",endedAt:new Date}}),"IN_PROGRESS"!==n.status&&(await c.db.task.update({where:{id:b},data:{status:"IN_PROGRESS"}}),(0,d.revalidatePath)("/workspaces"));let z="";if(!k){let a=await c.db.taskMessage.findMany({where:{taskId:b},orderBy:{createdAt:"desc"},take:10});z=[`Task: ${n.title}`,n.description?`Description: ${n.description}`:"",a.length>0?`Recent conversation:
2
- ${a.reverse().map(a=>`${a.role}: ${a.content}`).join("\n")}`:"",g.trim()?`User message: ${g}`:""].filter(Boolean).join("\n\n")}let A=i??n.promptId;if(A){let a=await c.db.agentPrompt.findUnique({where:{id:A}});a?.content&&(m=await (0,q.mkdtemp)((0,s.join)((0,r.tmpdir)(),"tower-pty-")),l=(0,s.join)(m,"instructions.md"),await (0,q.writeFile)(l,a.content,"utf-8"))}let B=null,C=null;if(n.baseBranch&&n.project.localPath){let{worktreePath:a,worktreeBranch:c}=await (0,e.createWorktree)(n.project.localPath,b,n.baseBranch,n.subPath);B=a,C=c}let D=B??n.project.localPath,E=n.subPath?(0,s.join)(D,n.subPath):D,F=await c.db.taskExecution.create({data:{taskId:b,agent:x.agentFieldValue,status:"RUNNING",startedAt:new Date,worktreePath:B??null,worktreeBranch:C??null,callbackUrl:j??null}});if(n.project.localPath)try{let b,{execFileSync:d}=await a.A(144264);(b=B&&n.baseBranch?d("git",["merge-base",n.baseBranch,"HEAD"],{cwd:B,encoding:"utf-8",timeout:5e3}).trim():d("git",["rev-parse","HEAD"],{cwd:n.project.localPath,encoding:"utf-8",timeout:5e3}).trim())&&await c.db.taskExecution.update({where:{id:F.id},data:{forkCommit:b}})}catch{}let G="";if(l){let{readFile:b}=await a.A(260815);G+=await b(l,"utf-8")}let H=await (0,h.readConfigValue)("onboarding.username","");H&&(G+=(G?"\n":"")+`The user's name is ${H}.`);let I=v.buildSpawnArgs({taskId:b,prompt:z,cwd:E,extraArgs:[...G?["--append-system-prompt",G]:[],...y?["--model",y]:[]],envOverrides:v.buildEnvOverrides({taskId:b,taskTitle:n.title,apiUrl:`http://localhost:${process.env.PORT||"3000"}`,callbackUrl:j??void 0})});return(0,f.createSession)(b,I.command,I.args,E,()=>{},async d=>{await w(b,d);let e=await c.db.taskExecution.findUnique({where:{id:F.id}});if(e?.status!=="RUNNING")return;let{getSession:f}=await a.A(98813),g=f(b),h=g?.getBuffer()??"";await c.db.taskExecution.update({where:{id:F.id},data:{status:0===d?"COMPLETED":"FAILED",endedAt:new Date}}).catch(a=>{u.error("Failed to update execution status",a)});let i=B||n.project.localPath,{captureExecutionSummary:j}=await a.A(662330);await j(F.id,b,d,h,i);let{dispatchTaskCompletionEvent:k}=await a.A(610073);await k({taskId:b,taskTitle:n.title,status:0===d?"COMPLETED":"FAILED",executionId:F.id,workspaceId:n.project.workspaceId}),0===d&&await c.db.task.update({where:{id:b},data:{status:"IN_REVIEW"}}).catch(a=>{u.error("Failed to update task status",a)}),m&&await (0,q.rm)(m,{recursive:!0,force:!0}).catch(()=>{})},I.env,void 0,1e3*t),{executionId:F.id,worktreePath:B??D??null}}async function G(){return(await c.db.taskExecution.findMany({where:{status:"RUNNING"},orderBy:{startedAt:"asc"},include:{task:{include:{project:{include:{workspace:!0}}}}}})).map(a=>({executionId:a.id,taskId:a.taskId,taskTitle:a.task.title,projectId:a.task.project.id,projectName:a.task.project.name,projectAlias:a.task.project.alias,projectLocalPath:a.task.project.localPath,workspaceId:a.task.project.workspace.id,workspaceName:a.task.project.workspace.name,worktreePath:a.worktreePath,startedAt:a.startedAt?.toISOString()??null}))}(0,t.ensureServerEntryExports)([x,y,z,A,B,C,D,E,F,G]),(0,b.registerServerReference)(x,"600294c6747bc61c850452ac7bf902d1d9b7e5dfec",null),(0,b.registerServerReference)(y,"40147228aed366cd6f9f120cc62c9ff1f21da9b4ee",null),(0,b.registerServerReference)(z,"784c3422bdeb2521df79c86fbfffdf8c785e158faf",null),(0,b.registerServerReference)(A,"6062fb8d8484144c1b7ee1cef89317e2871fe57673",null),(0,b.registerServerReference)(B,"4037b4917ac41e034cd749f30891348da8136d901c",null),(0,b.registerServerReference)(C,"40353aa4e0c0e668e1afcb33989debd5556f969597",null),(0,b.registerServerReference)(D,"6007aaf2a1c10b6cd0c420b925dcce2adf9f50fb0d",null),(0,b.registerServerReference)(E,"40aeda853992f713aa7b533e505d1eea89fb9226a7",null),(0,b.registerServerReference)(F,"7c3d3e128c7ede8a1daf9a82c04a8feb7d2080ba3c",null),(0,b.registerServerReference)(G,"00345e126058c2ddca2edd4cd73b11f588cdec2f45",null),a.s(["continueLatestPtyExecution",0,E,"getActiveExecutionsAcrossWorkspaces",0,G,"getTaskExecutions",0,C,"getTaskMessages",0,y,"resumePtyExecution",0,D,"sendTaskMessage",0,x,"startPtyExecution",0,F,"startTaskExecution",0,z,"stopPtyExecution",0,B,"stopTaskExecution",0,A],347427)}];
2
+ ${a.reverse().map(a=>`${a.role}: ${a.content}`).join("\n")}`:"",g.trim()?`User message: ${g}`:""].filter(Boolean).join("\n\n")}let A=i??n.promptId;if(A){let a=await c.db.agentPrompt.findUnique({where:{id:A}});a?.content&&(m=await (0,q.mkdtemp)((0,s.join)((0,r.tmpdir)(),"tower-pty-")),l=(0,s.join)(m,"instructions.md"),await (0,q.writeFile)(l,a.content,"utf-8"))}let B=null,C=null;if(n.baseBranch&&n.project.localPath){let{worktreePath:a,worktreeBranch:c}=await (0,e.createWorktree)(n.project.localPath,b,n.baseBranch,n.subPath);B=a,C=c}let D=B??n.project.localPath,E=n.subPath?(0,s.join)(D,n.subPath):D,F=await c.db.taskExecution.create({data:{taskId:b,agent:x.agentFieldValue,status:"RUNNING",startedAt:new Date,worktreePath:B??null,worktreeBranch:C??null,callbackUrl:j??null}});if(n.project.localPath)try{let b,{execFileSync:d}=await a.A(144264);(b=B&&n.baseBranch?d("git",["merge-base",n.baseBranch,"HEAD"],{cwd:B,encoding:"utf-8",timeout:5e3}).trim():d("git",["rev-parse","HEAD"],{cwd:n.project.localPath,encoding:"utf-8",timeout:5e3}).trim())&&await c.db.taskExecution.update({where:{id:F.id},data:{forkCommit:b}})}catch{}let G="";if(l){let{readFile:b}=await a.A(260815);G+=await b(l,"utf-8")}let H=await (0,h.readConfigValue)("onboarding.username","");H&&(G+=(G?"\n":"")+`The user's name is ${H}.`);let I=v.buildSpawnArgs({taskId:b,prompt:z,cwd:E,extraArgs:[...G?["--append-system-prompt",G]:[],...y?["--model",y]:[]],envOverrides:v.buildEnvOverrides({taskId:b,taskTitle:n.title,apiUrl:`http://localhost:${process.env.PORT||"3000"}`,callbackUrl:j??void 0})});return(0,f.createSession)(b,I.command,I.args,E,()=>{},async d=>{await w(b,d);let e=await c.db.taskExecution.findUnique({where:{id:F.id}});if(e?.status!=="RUNNING")return;let{getSession:f}=await a.A(98813),g=f(b),h=g?.getBuffer()??"";await c.db.taskExecution.update({where:{id:F.id},data:{status:0===d?"COMPLETED":"FAILED",endedAt:new Date}}).catch(a=>{u.error("Failed to update execution status",a)});let i=B||n.project.localPath,{captureExecutionSummary:j}=await a.A(662330);await j(F.id,b,d,h,i);let{dispatchTaskCompletionEvent:k}=await a.A(610073);await k({taskId:b,taskTitle:n.title,status:0===d?"COMPLETED":"FAILED",executionId:F.id,workspaceId:n.project.workspaceId}),0===d&&await c.db.task.update({where:{id:b},data:{status:"IN_REVIEW"}}).catch(a=>{u.error("Failed to update task status",a)}),m&&await (0,q.rm)(m,{recursive:!0,force:!0}).catch(()=>{})},I.env,void 0,1e3*t),{executionId:F.id,worktreePath:B??D??null}}async function G(){return(await c.db.taskExecution.findMany({where:{status:"RUNNING"},orderBy:{startedAt:"asc"},include:{task:{include:{project:{include:{workspace:!0}}}}}})).map(a=>({executionId:a.id,taskId:a.taskId,taskTitle:a.task.title,projectId:a.task.project.id,projectName:a.task.project.name,projectAlias:a.task.project.alias,projectLocalPath:a.task.project.localPath,workspaceId:a.task.project.workspace.id,workspaceName:a.task.project.workspace.name,worktreePath:a.worktreePath,startedAt:a.startedAt?.toISOString()??null}))}(0,t.ensureServerEntryExports)([x,y,z,A,B,C,D,E,F,G]),(0,b.registerServerReference)(x,"605cac693b662d8e87d3b0cc64843db354975308b2",null),(0,b.registerServerReference)(y,"40dbba42da731c103b244dcf85e420947f52180816",null),(0,b.registerServerReference)(z,"782a0eb16e4f62e0fda463f361f4a0b1ae11a5cd5a",null),(0,b.registerServerReference)(A,"6047a8acb2f858dedc06aaa0b3940edc647a706254",null),(0,b.registerServerReference)(B,"40d534095f1dd47c72d8254f56ece2a04161888f90",null),(0,b.registerServerReference)(C,"400a0553d64bdf9db6ba2c3d9600828cb9af68ae73",null),(0,b.registerServerReference)(D,"60084430f7608b3c677cc2792638b8e7002a620d58",null),(0,b.registerServerReference)(E,"409f6e9d41e72ba226a8c9ce886e35ec0afd2aa3a2",null),(0,b.registerServerReference)(F,"7c8e96f791f883566a33a9d846aa336f783cb43557",null),(0,b.registerServerReference)(G,"00f323c6268335a42c80c54c1409d1ea3b33677565",null),a.s(["continueLatestPtyExecution",0,E,"getActiveExecutionsAcrossWorkspaces",0,G,"getTaskExecutions",0,C,"getTaskMessages",0,y,"resumePtyExecution",0,D,"sendTaskMessage",0,x,"startPtyExecution",0,F,"startTaskExecution",0,z,"stopPtyExecution",0,B,"stopTaskExecution",0,A],347427)}];
3
3
 
4
4
  //# sourceMappingURL=src_actions_agent-actions_ts_0~wc.sy._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[610024,a=>{"use strict";a.s([],784230),a.i(784230),a.i(631934),a.i(834808),a.i(728977),a.i(259872),a.i(911632),a.i(830071),a.i(456042),a.i(498008),a.i(303037),a.i(573563);var b=a.i(780410);let c=(0,b.createServerReference)("60cc2b2e8c9255745c910725ca60211f0c303a5ac2",b.callServer,void 0,b.findSourceMapURL,"revealInFinder");a.s(["revealInFinder",0,c],610024)}];
1
+ module.exports=[610024,a=>{"use strict";a.s([],784230),a.i(784230),a.i(26688),a.i(899498),a.i(384134),a.i(579358),a.i(194267),a.i(528512),a.i(869374),a.i(132208),a.i(738949),a.i(14339);var b=a.i(780410);let c=(0,b.createServerReference)("6074e2f96f3f1d1e4c4fa90b0204a176260e83b201",b.callServer,void 0,b.findSourceMapURL,"revealInFinder");a.s(["revealInFinder",0,c],610024)}];
2
2
 
3
3
  //# sourceMappingURL=src_actions_file-actions_ts_0gcvqwm._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[870888,a=>a.a(async(b,c)=>{try{let q;var d=a.i(815429),e=a.i(233405),f=a.i(522734),g=a.i(814747),h=a.i(75681),i=a.i(980999),j=a.i(319997),k=a.i(630048),l=b([i]);function m(){return q||(q=function(){try{let a=g.default.join((0,j.getExtensionsDir)(),"node_modules","@vscode","ripgrep");if((0,f.existsSync)(a)){let a=(()=>{let a=Error("Cannot find module 'unknown'");throw a.code="MODULE_NOT_FOUND",a})().rgPath;if(a&&(0,f.existsSync)(a))return a}}catch{}try{let a=(0,e.execFileSync)("which",["rg"],{encoding:"utf-8"}).trim();if(a&&(0,f.existsSync)(a))return a}catch{}throw Error("ripgrep not found: install @vscode/ripgrep or system rg")}()),q}async function n(){try{return m(),{available:!0,platform:process.platform}}catch{return{available:!1,platform:process.platform}}}async function o(){q=void 0}[i]=l.then?(await l)():l;let r=h.z.object({localPath:h.z.string().min(1),pattern:h.z.string().min(1).max(500),glob:h.z.string().max(200).optional(),maxResults:h.z.number().int().min(1).max(500).default(200)});async function p(a,b,c,d=200,f){let g,h,j=r.safeParse({localPath:a,pattern:b,glob:c,maxResults:d});if(!j.success)return{matches:[],truncated:!1,error:`Invalid input: ${j.error.message}`};let{localPath:k,pattern:l,glob:n,maxResults:o}=j.data;if(!(k.startsWith("/")||/^[a-zA-Z]:[/\\]/.test(k)))return{matches:[],truncated:!1,error:"localPath must be an absolute path"};try{g=m()}catch(a){return{matches:[],truncated:!1,error:a.message.slice(0,200),errorKind:"not_installed"}}let q=["--json","-n",l];n&&q.push("--glob",n),q.push(k);let s=await (0,i.getConfigValue)("search.codeTimeoutSec",30),t=1e3*Math.max(1,s),u=f instanceof AbortSignal?f:void 0;try{var v,w;h=await (v=g,w={encoding:"utf-8",maxBuffer:0xa00000,timeout:t,signal:u},new Promise((a,b)=>{(0,e.execFile)(v,q,w,(c,d,e)=>{c?(c.stderr="string"==typeof e?e:e?.toString(),b(c)):a("string"==typeof d?d:d.toString())})}))}catch(b){if(1===b.code)return{matches:[],truncated:!1};let a=function(a){if("AbortError"===a.name)return{kind:"aborted",message:""};if(a.killed&&("SIGTERM"===a.signal||"SIGKILL"===a.signal))return{kind:"timeout",message:a.message??"search timed out"};let b=a.stderr??"",c=`${a.message??""} ${b}`.toLowerCase();return c.includes("permission denied")||c.includes("eacces")?{kind:"permission_denied",message:b||a.message||"permission denied"}:c.includes("not found")||c.includes("enoent")||c.includes("ripgrep")?{kind:"not_installed",message:b||a.message||"ripgrep not found"}:{kind:"unknown",message:(b||a.message||"unknown error").slice(0,200)}}(b);if("aborted"===a.kind)return{matches:[],truncated:!1,aborted:!0};return console.error("[searchCode] rg failed:",b),{matches:[],truncated:!1,error:a.message.slice(0,200),errorKind:a.kind}}let x=h.split("\n"),y=[];for(let a of x){let b,c=a.trim();if(!c)continue;try{b=JSON.parse(c)}catch{continue}if("match"!==b.type)continue;let d=b.data,e=d.path.text,f=k.endsWith("/")?k:k+"/",g=e.startsWith(f)?e.slice(f.length):e,h=d.lines.text.replace(/\r?\n$/,""),i=d.submatches.map(a=>({start:a.start,end:a.end}));y.push({filePath:g,lineNumber:d.line_number,lineText:h,submatches:i})}let z=y.length>o;return{matches:z?y.slice(0,o):y,truncated:z}}(0,k.ensureServerEntryExports)([n,o,p]),(0,d.registerServerReference)(n,"008a40226d393fe09508556a4ee960644154f978e6",null),(0,d.registerServerReference)(o,"0079ac81b173aae9f7d7702ec283ad03a1b5c8c4ed",null),(0,d.registerServerReference)(p,"7c3d72aaccc12030611186d76b657c08777839e7d1",null),a.s(["checkRgAvailable",0,n,"clearRgPathCache",0,o,"searchCode",0,p]),c()}catch(a){c(a)}},!1)];
2
+
3
+ //# sourceMappingURL=src_actions_search-code-actions_ts_0k9u5d~._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[989799,a=>{"use strict";var b=a.i(728778),c=a.i(374637),d=a.i(951192),e=a.i(780410);let f=(0,e.createServerReference)("00345e126058c2ddca2edd4cd73b11f588cdec2f45",e.callServer,void 0,e.findSourceMapURL,"getActiveExecutionsAcrossWorkspaces");var g=a.i(25422);let h=[{id:"1x1",label:"1×1",cols:1,rows:1,minHeight:"480px",desc:"Focus mode"},{id:"2x1",label:"2×1",cols:2,rows:1,minHeight:"480px",desc:"Side by side"},{id:"3x2",label:"3×2",cols:3,rows:2,minHeight:"300px",desc:"Default"},{id:"2x2",label:"2×2",cols:2,rows:2,minHeight:"300px",desc:"Balanced"},{id:"4x2",label:"4×2",cols:4,rows:2,minHeight:"240px",desc:"Wide monitor"},{id:"3x3",label:"3×3",cols:3,rows:3,minHeight:"240px",desc:"Max overview"}];var i=a.i(580701),j=a.i(699570),k=a.i(579834),l=a.i(711796);let m=(0,l.default)("rocket",[["path",{d:"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5",key:"qeys4"}],["path",{d:"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09",key:"u4xsad"}],["path",{d:"M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z",key:"676m9"}],["path",{d:"M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05",key:"92ym6u"}]]);var n=a.i(330337);function o({cols:a,rows:c,active:d}){let e=Array.from({length:a*c});return(0,b.jsx)("div",{className:`grid gap-[1px] w-7 h-5 p-[3px] rounded-sm border shrink-0 ${d?"border-primary bg-primary/10":"border-border bg-muted"}`,style:{gridTemplateColumns:`repeat(${a}, 1fr)`,gridTemplateRows:`repeat(${c}, 1fr)`},children:e.map((a,c)=>(0,b.jsx)("div",{className:`rounded-[1px] min-w-0 min-h-0 ${d?"bg-primary":"bg-muted-foreground/40"}`},c))})}let p="custom";function q({value:a,customValue:e,onChange:f}){let{t:g}=(0,d.useI18n)(),[i,k]=(0,c.useState)(!1),l=(0,c.useRef)(null),m=a===p,r=m?null:h.find(b=>b.id===a)??h[2],[s,t]=(0,c.useState)(e?.cols??2),[u,v]=(0,c.useState)(e?.rows??2),[w,x]=(0,c.useState)({minCols:1,maxCols:5,minRows:1,maxRows:5});(0,c.useEffect)(()=>{(0,n.getConfigValues)(["missions.grid.minCols","missions.grid.maxCols","missions.grid.minRows","missions.grid.maxRows"]).then(a=>{x({minCols:a["missions.grid.minCols"]??1,maxCols:a["missions.grid.maxCols"]??5,minRows:a["missions.grid.minRows"]??1,maxRows:a["missions.grid.maxRows"]??5})})},[]),(0,c.useEffect)(()=>{e&&(t(e.cols),v(e.rows))},[e?.cols,e?.rows]),(0,c.useEffect)(()=>{if(i)return document.addEventListener("mousedown",a),()=>document.removeEventListener("mousedown",a);function a(a){l.current&&!l.current.contains(a.target)&&k(!1)}},[i]);let y=(a,b,c)=>Math.max(b,Math.min(c,a)),z=m?s:r?.cols??2,A=m?u:r?.rows??2,B=m?`${s}\xd7${u}`:r?.label??"";return(0,b.jsxs)("div",{ref:l,className:"relative",children:[(0,b.jsxs)(j.Button,{variant:"outline",onClick:()=>k(a=>!a),className:"gap-2",children:[(0,b.jsx)(o,{cols:z,rows:A,active:!1}),(0,b.jsx)("span",{children:B}),(0,b.jsx)("span",{className:"text-[10px] text-muted-foreground",children:"▼"})]}),i&&(0,b.jsxs)("div",{className:"absolute right-0 z-50 mt-1 w-72 rounded-lg border border-border bg-popover shadow-xl p-3",children:[(0,b.jsx)("h5",{className:"text-sm font-semibold text-foreground mb-3",children:g("missions.gridPreset")}),(0,b.jsxs)("div",{className:"flex flex-col gap-0.5",children:[h.map(c=>{let d=c.id===a;return(0,b.jsxs)("button",{onClick:()=>{f(c.id),k(!1)},className:`flex items-center gap-3 px-3 py-2.5 rounded-lg transition-colors ${d?"bg-primary/10":"hover:bg-accent"}`,children:[(0,b.jsx)(o,{cols:c.cols,rows:c.rows,active:d}),(0,b.jsx)("span",{className:`text-sm font-medium flex-1 text-left ${d?"text-primary":"text-foreground"}`,children:c.label}),(0,b.jsx)("span",{className:`text-xs ${d?"text-primary/60":"text-muted-foreground"}`,children:c.desc})]},c.id)}),(0,b.jsxs)("div",{className:"mt-1 border-t border-border pt-2",children:[(0,b.jsxs)("button",{onClick:()=>{m||f(p,{cols:s,rows:u})},className:`flex items-center gap-3 px-3 py-2.5 rounded-lg transition-colors w-full ${m?"bg-primary/10":"hover:bg-accent"}`,children:[(0,b.jsx)(o,{cols:s,rows:u,active:m}),(0,b.jsx)("span",{className:`text-sm font-medium flex-1 text-left ${m?"text-primary":"text-foreground"}`,children:g("missions.gridCustom")}),(0,b.jsxs)("span",{className:`text-xs ${m?"text-primary/60":"text-muted-foreground"}`,children:[s,"×",u]})]}),m&&(0,b.jsxs)("div",{className:"flex items-center gap-3 px-3 py-2",children:[(0,b.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,b.jsx)("label",{className:"text-xs text-muted-foreground",children:g("missions.gridCols")}),(0,b.jsx)("input",{type:"number",min:w.minCols,max:w.maxCols,value:s,onChange:a=>{let b;t(b=y(Number(a.target.value),w.minCols,w.maxCols)),f(p,{cols:b,rows:u})},className:"h-7 w-14 rounded-md border border-border bg-background px-2 text-sm text-center"})]}),(0,b.jsx)("span",{className:"text-muted-foreground",children:"×"}),(0,b.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,b.jsx)("label",{className:"text-xs text-muted-foreground",children:g("missions.gridRows")}),(0,b.jsx)("input",{type:"number",min:w.minRows,max:w.maxRows,value:u,onChange:a=>{let b;v(b=y(Number(a.target.value),w.minRows,w.maxRows)),f(p,{cols:s,rows:b})},className:"h-7 w-14 rounded-md border border-border bg-background px-2 text-sm text-center"})]})]})]})]})]})]})}var r=a.i(643228),s=a.i(859103),t=a.i(969032),u=a.i(553798),v=a.i(514126);let w=(0,l.default)("grip-vertical",[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]]),x=(0,l.default)("arrow-up-right",[["path",{d:"M7 7h10v10",key:"1tivn9"}],["path",{d:"M7 17 17 7",key:"1vkiza"}]]);var y=a.i(54384);let z=(0,l.default)("square-terminal",[["path",{d:"m7 11 2-2-2-2",key:"1lz0vl"}],["path",{d:"M11 13h4",key:"1p7l4v"}],["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}]]);var A=a.i(785259),B=a.i(786304),C=a.i(388025),D=a.i(952313);let E=(0,t.default)(async()=>{},{loadableGenerated:{modules:[346069]},ssr:!1,loading:()=>(0,b.jsx)("div",{className:"h-full w-full bg-[#0a0a0a] animate-pulse"})});function F({execution:a,isRemoving:e,removeReason:f,onStop:g,onSessionEnd:h}){let{t:i}=(0,d.useI18n)(),k=(0,u.useRouter)(),{attributes:l,listeners:m,setNodeRef:n,transform:o,transition:p}=(0,s.useSortable)({id:a.executionId}),q={transform:v.CSS.Transform.toString(o),transition:p,opacity:+!e},[r,t]=(0,c.useState)(()=>a.startedAt?Math.floor((Date.now()-new Date(a.startedAt).getTime())/1e3):0);(0,c.useEffect)(()=>{if(e)return;let b=setInterval(()=>{t(a.startedAt?Math.floor((Date.now()-new Date(a.startedAt).getTime())/1e3):0)},1e3);return()=>clearInterval(b)},[a.startedAt,e]);let G=Math.floor(r/60),H=`${G}m ${r%60}s`;async function I(){if(a.projectLocalPath)try{await (0,C.openInTerminal)(a.projectLocalPath)}catch{D.toast.error(i("preview.terminalError"))}}return(0,b.jsxs)("div",{ref:n,style:q,className:"border border-border rounded-lg overflow-hidden flex flex-col transition-opacity duration-300",...l,children:[(0,b.jsxs)("div",{className:"h-10 px-3 flex items-center gap-1 border-b border-border bg-card shrink-0",children:[(0,b.jsx)("button",{...m,"aria-label":i("missions.dragHandle"),"aria-roledescription":"sortable",className:"cursor-grab text-muted-foreground hover:text-foreground mr-1",children:(0,b.jsx)(w,{className:"h-3.5 w-3.5"})}),(0,b.jsxs)("span",{className:"text-[11px] text-muted-foreground truncate flex-1",children:[a.workspaceName," ›"," ",a.projectAlias||a.projectName," ›"," ",(0,b.jsx)("span",{className:"text-foreground font-semibold",children:a.taskTitle})]}),e?(0,b.jsx)(B.Badge,{variant:"outline",className:"text-[11px] text-muted-foreground bg-muted ml-1 shrink-0",children:"stopped"===f?i("missions.statusStopped"):i("missions.statusCompleted")}):(0,b.jsx)(B.Badge,{variant:"outline",className:"text-[11px] text-primary border-primary/30 bg-primary/10 ml-1 shrink-0",children:i("missions.statusRunning")}),(0,b.jsx)("span",{className:"text-[11px] text-muted-foreground ml-1 shrink-0",children:H}),a.projectLocalPath&&(0,b.jsxs)(A.Tooltip,{children:[(0,b.jsx)(A.TooltipTrigger,{render:(0,b.jsx)(j.Button,{variant:"ghost",size:"icon",className:"ml-1 shrink-0 text-muted-foreground",onClick:I}),children:(0,b.jsx)(z,{className:"h-3.5 w-3.5"})}),(0,b.jsx)(A.TooltipContent,{children:i("missions.openInTerminal")})]}),(0,b.jsxs)(A.Tooltip,{children:[(0,b.jsx)(A.TooltipTrigger,{render:(0,b.jsx)(j.Button,{variant:"ghost",size:"icon",className:"ml-1 shrink-0 text-muted-foreground",onClick:()=>k.push(`/workspaces/${a.workspaceId}/tasks/${a.taskId}`)}),children:(0,b.jsx)(x,{className:"h-3.5 w-3.5"})}),(0,b.jsx)(A.TooltipContent,{children:i("missions.openFullView")})]}),(0,b.jsxs)(A.Tooltip,{children:[(0,b.jsx)(A.TooltipTrigger,{render:(0,b.jsx)(j.Button,{variant:"destructive",size:"icon",className:"ml-1 shrink-0",onClick:()=>g(a.taskId),disabled:e}),children:(0,b.jsx)(y.X,{className:"h-3.5 w-3.5"})}),(0,b.jsx)(A.TooltipContent,{children:i("missions.stopTask")})]})]}),(0,b.jsx)("div",{className:"flex-1 overflow-hidden",children:(0,b.jsx)(E,{taskId:a.taskId,worktreePath:a.worktreePath??a.projectLocalPath,onSessionEnd:b=>h?.(a.taskId,b),useCanvasRenderer:!0})})]})}var G=a.i(594003);let H=(0,e.createServerReference)("40751310b9350100344fa26aa52c50f0a574d2119d",e.callServer,void 0,e.findSourceMapURL,"getWorkspacesWithRecentTasks"),I=(0,e.createServerReference)("40511a7eb587330f02b0e505c3b4034130179358f2",e.callServer,void 0,e.findSourceMapURL,"getProjectTasks");var J=a.i(32630),K=a.i(895898),L=a.i(866718),M=a.i(814574),N=a.i(10390);let O=(0,l.default)("play",[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]]);var P=a.i(161664),Q=a.i(573242),R=a.i(269876);let S={TODO:"TODO",IN_PROGRESS:"Running",IN_REVIEW:"Review"},T={LOW:"Low",MEDIUM:"Med",HIGH:"High",CRITICAL:"Crit"};function U({status:a}){return(0,b.jsx)("span",{className:`text-[10px] px-1.5 py-0.5 rounded font-medium ${{TODO:"bg-slate-100 text-slate-600 dark:bg-slate-800 dark:text-slate-400",IN_PROGRESS:"bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400",IN_REVIEW:"bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-400"}[a]??"bg-slate-100 text-slate-600"}`,children:S[a]??a})}function V({task:a,isRunning:c,launchingId:d,onLaunchNew:e,onResume:f,t:g}){let h=a.executions?.[0]?.sessionId,i=d===a.id;return(0,b.jsxs)("div",{className:"group/task grid grid-cols-[minmax(0,1fr)_auto] items-center gap-2 px-3 py-1.5 hover:bg-accent/50 cursor-default",children:[(0,b.jsxs)("div",{className:"min-w-0",children:[(0,b.jsx)("p",{className:`text-sm truncate ${c?"italic text-muted-foreground":""}`,children:a.title}),(0,b.jsxs)("div",{className:"flex items-center gap-1.5 mt-0.5",children:[(0,b.jsx)(U,{status:a.status}),(0,b.jsx)("span",{className:"text-[10px] text-muted-foreground",children:T[a.priority]??a.priority})]})]}),c?(0,b.jsx)("span",{className:"text-[10px] italic text-muted-foreground",children:g("missions.alreadyMonitored")}):(0,b.jsxs)("div",{className:"flex items-center gap-1 opacity-0 group-hover/task:opacity-100 transition-opacity",children:[h&&(0,b.jsxs)(j.Button,{variant:"outline",className:"h-6 px-2 text-xs",onClick:()=>f(a.id,h),disabled:i,title:g("missions.continueSession"),children:[(0,b.jsx)(P.RotateCcw,{className:"h-3 w-3 mr-1"}),g("missions.continueLabel")]}),(0,b.jsxs)(j.Button,{variant:"outline",className:"h-6 px-2 text-xs",onClick:()=>e(a.id),disabled:i,title:g("missions.launchNew"),children:[(0,b.jsx)(O,{className:"h-3 w-3 mr-1"}),i?"...":g("missions.launchNewLabel")]})]})]})}function W({open:a,onOpenChange:e,onLaunchNew:f,onResume:g,runningTaskIds:h,launchingId:k}){let{t:l}=(0,d.useI18n)(),[m,n]=(0,c.useState)([]),[o,p]=(0,c.useState)(""),[q,r]=(0,c.useState)(""),[s,t]=(0,c.useState)([]),[u,v]=(0,c.useState)("");(0,c.useEffect)(()=>{a&&(p(""),r(""),t([]),v(""),H(100).then(n).catch(()=>D.toast.error(l("missions.error.launchFailed"))))},[a,l]),(0,c.useEffect)(()=>{q?I(q).then(a=>{t(a.filter(a=>"TODO"===a.status||"IN_PROGRESS"===a.status||"IN_REVIEW"===a.status))}).catch(()=>D.toast.error(l("missions.error.launchFailed"))):t([])},[q,l]);let w=(0,c.useMemo)(()=>{let a=[];for(let b of m)for(let c of b.projects)for(let d of c.tasks)("TODO"===d.status||"IN_PROGRESS"===d.status||"IN_REVIEW"===d.status)&&a.push({task:d,workspaceName:b.name,projectName:c.alias??c.name});return a},[m]),x=(0,c.useMemo)(()=>new G.default(w,{keys:["task.title"],threshold:.4,distance:200}),[w]),z=(0,c.useMemo)(()=>{let a=u.trim();return a?x.search(a,{limit:30}).map(a=>a.item):[]},[x,u]),A=u.trim().length>0,B=m.find(a=>a.id===o),C=B?.projects??[];return(0,b.jsx)(M.Dialog,{open:a,onOpenChange:e,children:(0,b.jsxs)(M.DialogContent,{className:"sm:max-w-2xl max-h-[80vh]",children:[(0,b.jsx)(M.DialogHeader,{children:(0,b.jsx)(M.DialogTitle,{children:l("missions.fullPickerTitle")})}),(0,b.jsxs)("div",{className:"flex flex-col gap-2 shrink-0",children:[(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)(Q.Search,{className:"absolute left-2 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),(0,b.jsx)(L.Input,{value:u,onChange:a=>v(a.target.value),placeholder:l("missions.fullPicker.searchPlaceholder"),className:"pl-8 pr-8 h-8"}),u&&(0,b.jsx)(j.Button,{type:"button",variant:"ghost",size:"icon",className:"absolute right-1 top-1/2 -translate-y-1/2 h-6 w-6",onClick:()=>v(""),"aria-label":l("missions.fullPicker.clearSearch"),children:(0,b.jsx)(y.X,{className:"h-3.5 w-3.5"})})]}),!A&&(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsxs)(i.Select,{value:o,onValueChange:a=>{p(a??""),r("")},children:[(0,b.jsx)(i.SelectTrigger,{id:"full-picker-ws",className:"w-48 h-8",children:(0,b.jsx)("span",{className:"truncate",children:m.find(a=>a.id===o)?.name??l("missions.launcher.selectWorkspace")})}),(0,b.jsx)(i.SelectContent,{children:m.map(a=>(0,b.jsx)(i.SelectItem,{value:a.id,children:a.name},a.id))})]}),(0,b.jsxs)(i.Select,{value:q,onValueChange:a=>r(a??""),disabled:!o,children:[(0,b.jsx)(i.SelectTrigger,{id:"full-picker-proj",className:"w-48 h-8",children:(0,b.jsx)("span",{className:"truncate",children:C.find(a=>a.id===q)?.name??l("missions.launcher.selectProject")})}),(0,b.jsx)(i.SelectContent,{children:C.map(a=>(0,b.jsx)(i.SelectItem,{value:a.id,children:a.alias??a.name},a.id))})]})]})]}),(0,b.jsx)(R.ScrollArea,{className:"max-h-[60vh] -mx-2",children:A?0===z.length?(0,b.jsx)("p",{className:"text-sm text-muted-foreground text-center py-8",children:l("missions.fullPicker.noSearchResults")}):z.map(a=>(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"px-3 pt-2 pb-0.5 text-[11px] text-muted-foreground",children:[a.workspaceName," · ",a.projectName]}),(0,b.jsx)(V,{task:a.task,isRunning:h.has(a.task.id),launchingId:k,onLaunchNew:f,onResume:g,t:l})]},a.task.id)):0===s.length&&q?(0,b.jsx)("p",{className:"text-sm text-muted-foreground text-center py-8",children:l("missions.launcher.noTasks")}):0===s.length?(0,b.jsx)("p",{className:"text-sm text-muted-foreground text-center py-8",children:l("missions.fullPickerHint")}):s.map(a=>(0,b.jsx)(V,{task:a,isRunning:h.has(a.id),launchingId:k,onLaunchNew:f,onResume:g,t:l},a.id))})]})})}function X({open:a,onOpenChange:e,onLaunched:f,runningTaskIds:g=new Set,anchorRef:h}){let{t:i}=(0,d.useI18n)(),k=(0,c.useRef)(null),[l,m]=(0,c.useState)([]),[n,o]=(0,c.useState)(!1),[p,q]=(0,c.useState)(null),[r,s]=(0,c.useState)(!1),[t,u]=(0,c.useState)(new Set);(0,c.useEffect)(()=>{a&&(o(!0),H(5).then(m).catch(()=>D.toast.error(i("missions.error.launchFailed"))).finally(()=>o(!1)))},[a,i]);let v=(0,c.useMemo)(()=>l.filter(a=>a.projects.some(a=>a._count.tasks>0)),[l]),w=(0,c.useCallback)(a=>{u(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c})},[]);(0,c.useEffect)(()=>{if(a)return document.addEventListener("mousedown",b),()=>document.removeEventListener("mousedown",b);function b(a){let b=a.target;if(k.current&&!k.current.contains(b)){if(h?.current&&h.current.contains(b))return;e(!1)}}},[a,e,h]);let x=(0,c.useCallback)(async a=>{try{q(a),await (0,J.startPtyExecution)(a,""),f(a),e(!1),s(!1)}catch{D.toast.error(i("missions.error.launchFailed"))}finally{q(null)}},[f,e,i]),y=(0,c.useCallback)(async(a,b)=>{try{q(a),await (0,K.resumePtyExecution)(a,b),f(a),e(!1),s(!1)}catch{D.toast.error(i("missions.error.launchFailed"))}finally{q(null)}},[f,e,i]),z=(0,c.useCallback)(()=>{e(!1),s(!0)},[e]);return a||r?(0,b.jsxs)(b.Fragment,{children:[a&&(0,b.jsxs)("div",{ref:k,className:"absolute right-0 z-50 mt-1 grid max-h-[480px] w-[28rem] grid-rows-[auto_minmax(0,1fr)_auto] overflow-hidden rounded-lg border border-border bg-popover shadow-xl",children:[(0,b.jsx)("div",{className:"px-3 py-2 border-b border-border",children:(0,b.jsx)("p",{className:"text-xs font-semibold text-muted-foreground uppercase tracking-wide",children:i("missions.pickerTitle")})}),(0,b.jsx)(R.ScrollArea,{children:n?(0,b.jsx)("div",{className:"flex items-center justify-center py-8 text-sm text-muted-foreground",children:"Loading..."}):0===v.length?(0,b.jsx)("div",{className:"flex items-center justify-center py-8 text-sm text-muted-foreground",children:i("missions.noAvailableTasks")}):v.map(a=>{let c=t.has(a.id),d=a.projects.filter(a=>a._count.tasks>0);return(0,b.jsxs)("div",{children:[(0,b.jsxs)(j.Button,{variant:"ghost",onClick:()=>w(a.id),className:"flex h-auto w-full justify-start gap-1.5 rounded-none border-b border-border/50 px-3 py-1.5 hover:bg-accent",children:[(0,b.jsx)(N.ChevronRight,{className:`h-3.5 w-3.5 shrink-0 text-muted-foreground transition-transform ${c?"":"rotate-90"}`}),(0,b.jsx)("span",{className:"text-[11px] font-semibold text-muted-foreground uppercase tracking-wider",children:a.name})]}),!c&&(0,b.jsx)("div",{className:"ml-[19px] mt-0.5 border-l border-border/50",children:d.map(a=>(0,b.jsxs)("div",{className:"py-0.5",children:[(0,b.jsx)("div",{className:"pl-3 pt-1.5 pb-1",children:(0,b.jsx)("span",{className:"text-xs font-medium text-foreground",children:a.alias??a.name})}),(0,b.jsx)("div",{className:"pl-3",children:a.tasks.map(a=>(0,b.jsx)(V,{task:a,isRunning:g.has(a.id),launchingId:p,onLaunchNew:x,onResume:y,t:i},a.id))})]},a.id))})]},a.id)})}),(0,b.jsx)("div",{className:"border-t border-border",children:(0,b.jsx)(j.Button,{variant:"ghost",className:"w-full rounded-none text-xs text-primary font-medium",onClick:z,children:i("missions.showMoreTasks")})})]}),(0,b.jsx)(W,{open:r,onOpenChange:s,onLaunchNew:x,onResume:y,runningTaskIds:g,launchingId:p})]}):null}a.s(["MissionsClient",0,function({initialExecutions:a}){let{t:e}=(0,d.useI18n)(),[l,n]=(0,c.useState)(a),[o,p]=(0,c.useState)(()=>"3x2"),[t,u]=(0,c.useState)(()=>({cols:2,rows:2})),[v,w]=(0,c.useState)(!1),[x,y]=(0,c.useState)(""),z=(0,c.useRef)(null),[A,B]=(0,c.useState)(new Map),C=(0,c.useRef)(A);(0,c.useEffect)(()=>{C.current=A},[A]);let E=(0,c.useRef)(new Map),G=h.find(a=>a.id===o)??h[2],H="custom"===o?t.cols:G.cols,I="custom"===o?t.rows:G.rows,J=(0,c.useRef)(null),[K,L]=(0,c.useState)("480px");(0,c.useEffect)(()=>{let a=J.current;if(!a)return;let b=()=>{let b=(a.clientHeight-32-16*(I-1))/I;L(`${Math.max(b,200)}px`)};b();let c=new ResizeObserver(b);return c.observe(a),()=>c.disconnect()},[I]);let M=(0,c.useCallback)((a,b)=>{a&&(p(a),localStorage.setItem("missions-grid-preset",a),"custom"===a&&b&&(u(b),localStorage.setItem("missions-grid-custom",JSON.stringify(b))))},[]),N=(0,r.useSensors)((0,r.useSensor)(r.PointerSensor,{activationConstraint:{distance:8}})),O=(0,c.useCallback)(a=>{let{active:b,over:c}=a;c&&b.id!==c.id&&n(a=>{let d=a.findIndex(a=>a.executionId===b.id),e=a.findIndex(a=>a.executionId===c.id);return(0,s.arrayMove)(a,d,e)})},[]),P=(0,c.useCallback)((a,b)=>{if(C.current.has(a))return;B(c=>new Map([...c,[a,b]]));let c=setTimeout(()=>{n(b=>b.filter(b=>b.executionId!==a)),B(b=>{let c=new Map(b);return c.delete(a),c}),E.current.delete(a)},500);E.current.set(a,c)},[]);(0,c.useEffect)(()=>{let a=setInterval(async()=>{try{let a=await f();n(b=>{let c=C.current,{merged:d,goneIds:e}=function({prev:a,fresh:b,removingIds:c}){let d=new Set(b.map(a=>a.executionId)),e=[];a.forEach(a=>{d.has(a.executionId)||c.has(a.executionId)||e.push(a.executionId)});let f=a.filter(a=>d.has(a.executionId)||c.has(a.executionId)),g=new Set(a.map(a=>a.executionId));return{merged:[...f,...b.filter(a=>!g.has(a.executionId))],goneIds:e}}({prev:b,fresh:a,removingIds:new Set(c.keys())});return e.forEach(a=>P(a,"completed")),d})}catch{}},4e3);return()=>clearInterval(a)},[P]),(0,c.useEffect)(()=>{let a=E.current;return()=>{a.forEach(a=>clearTimeout(a))}},[]);let Q=(0,c.useCallback)(async a=>{try{await (0,g.stopPtyExecution)(a),n(b=>{let c=b.find(b=>b.taskId===a);return c&&P(c.executionId,"stopped"),b})}catch{D.toast.error(e("missions.error.stopFailed"))}},[P,e]),R=(0,c.useCallback)((a,b)=>{n(b=>{let c=b.find(b=>b.taskId===a);return c&&P(c.executionId,"completed"),b})},[P]),S=(0,c.useCallback)(a=>{f().then(a=>{n(b=>{let c=new Set(b.map(a=>a.executionId));return[...b,...a.filter(a=>!c.has(a.executionId))]})}).catch(()=>{})},[]),T=Array.from(new Map(l.map(a=>[a.workspaceId,a.workspaceName])).entries()).map(([a,b])=>({id:a,name:b})),U=x?l.filter(a=>a.workspaceId===x):l,V=new Set(l.map(a=>a.taskId));return(0,b.jsxs)("div",{className:"flex h-full flex-col",children:[(0,b.jsxs)("div",{className:"header-sm shrink-0 px-4 flex items-center gap-3",children:[(0,b.jsx)("h1",{className:"text-base font-semibold",children:e("missions.pageTitle")}),(0,b.jsxs)(i.Select,{value:x,onValueChange:a=>y(a??""),children:[(0,b.jsx)(i.SelectTrigger,{className:"w-36 h-8",children:(0,b.jsx)("span",{className:"truncate",children:x?T.find(a=>a.id===x)?.name??e("missions.filterAll"):e("missions.filterAll")})}),(0,b.jsxs)(i.SelectContent,{children:[(0,b.jsx)(i.SelectItem,{value:"",children:e("missions.filterAll")}),T.map(a=>(0,b.jsx)(i.SelectItem,{value:a.id,children:a.name},a.id))]})]}),(0,b.jsx)("div",{className:"flex-1"}),(0,b.jsx)(q,{value:o,customValue:t,onChange:M}),(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)(j.Button,{ref:z,onClick:()=>w(a=>!a),children:e("missions.launchTask")}),(0,b.jsx)(X,{open:v,onOpenChange:w,onLaunched:S,runningTaskIds:V,anchorRef:z})]})]}),(0,b.jsx)("div",{ref:J,className:"flex-1 overflow-auto min-h-0 p-4",children:0===U.length&&0===A.size?(0,b.jsx)(k.EmptyState,{icon:m,title:e("missions.emptyTitle"),description:e("missions.emptyDesc"),className:"h-full",action:(0,b.jsx)(j.Button,{onClick:()=>w(!0),children:e("missions.launchTask")})}):(0,b.jsx)(r.DndContext,{id:"missions-dnd",sensors:N,collisionDetection:r.closestCenter,onDragEnd:O,children:(0,b.jsx)(s.SortableContext,{items:U.map(a=>a.executionId),strategy:s.rectSortingStrategy,children:(0,b.jsx)("div",{className:"grid gap-4",style:{gridTemplateColumns:`repeat(${H}, 1fr)`,gridAutoRows:K},children:U.map(a=>(0,b.jsx)(F,{execution:a,isRemoving:A.has(a.executionId),removeReason:A.get(a.executionId),onStop:Q,onSessionEnd:R},a.executionId))})})})})]})}],989799)}];
1
+ module.exports=[989799,a=>{"use strict";var b=a.i(728778),c=a.i(374637),d=a.i(951192),e=a.i(780410);let f=(0,e.createServerReference)("00f323c6268335a42c80c54c1409d1ea3b33677565",e.callServer,void 0,e.findSourceMapURL,"getActiveExecutionsAcrossWorkspaces");var g=a.i(930089);let h=[{id:"1x1",label:"1×1",cols:1,rows:1,minHeight:"480px",desc:"Focus mode"},{id:"2x1",label:"2×1",cols:2,rows:1,minHeight:"480px",desc:"Side by side"},{id:"3x2",label:"3×2",cols:3,rows:2,minHeight:"300px",desc:"Default"},{id:"2x2",label:"2×2",cols:2,rows:2,minHeight:"300px",desc:"Balanced"},{id:"4x2",label:"4×2",cols:4,rows:2,minHeight:"240px",desc:"Wide monitor"},{id:"3x3",label:"3×3",cols:3,rows:3,minHeight:"240px",desc:"Max overview"}];var i=a.i(580701),j=a.i(699570),k=a.i(579834),l=a.i(711796);let m=(0,l.default)("rocket",[["path",{d:"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5",key:"qeys4"}],["path",{d:"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09",key:"u4xsad"}],["path",{d:"M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z",key:"676m9"}],["path",{d:"M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05",key:"92ym6u"}]]);var n=a.i(392299);function o({cols:a,rows:c,active:d}){let e=Array.from({length:a*c});return(0,b.jsx)("div",{className:`grid gap-[1px] w-7 h-5 p-[3px] rounded-sm border shrink-0 ${d?"border-primary bg-primary/10":"border-border bg-muted"}`,style:{gridTemplateColumns:`repeat(${a}, 1fr)`,gridTemplateRows:`repeat(${c}, 1fr)`},children:e.map((a,c)=>(0,b.jsx)("div",{className:`rounded-[1px] min-w-0 min-h-0 ${d?"bg-primary":"bg-muted-foreground/40"}`},c))})}let p="custom";function q({value:a,customValue:e,onChange:f}){let{t:g}=(0,d.useI18n)(),[i,k]=(0,c.useState)(!1),l=(0,c.useRef)(null),m=a===p,r=m?null:h.find(b=>b.id===a)??h[2],[s,t]=(0,c.useState)(e?.cols??2),[u,v]=(0,c.useState)(e?.rows??2),[w,x]=(0,c.useState)({minCols:1,maxCols:5,minRows:1,maxRows:5});(0,c.useEffect)(()=>{(0,n.getConfigValues)(["missions.grid.minCols","missions.grid.maxCols","missions.grid.minRows","missions.grid.maxRows"]).then(a=>{x({minCols:a["missions.grid.minCols"]??1,maxCols:a["missions.grid.maxCols"]??5,minRows:a["missions.grid.minRows"]??1,maxRows:a["missions.grid.maxRows"]??5})})},[]),(0,c.useEffect)(()=>{e&&(t(e.cols),v(e.rows))},[e?.cols,e?.rows]),(0,c.useEffect)(()=>{if(i)return document.addEventListener("mousedown",a),()=>document.removeEventListener("mousedown",a);function a(a){l.current&&!l.current.contains(a.target)&&k(!1)}},[i]);let y=(a,b,c)=>Math.max(b,Math.min(c,a)),z=m?s:r?.cols??2,A=m?u:r?.rows??2,B=m?`${s}\xd7${u}`:r?.label??"";return(0,b.jsxs)("div",{ref:l,className:"relative",children:[(0,b.jsxs)(j.Button,{variant:"outline",onClick:()=>k(a=>!a),className:"gap-2",children:[(0,b.jsx)(o,{cols:z,rows:A,active:!1}),(0,b.jsx)("span",{children:B}),(0,b.jsx)("span",{className:"text-[10px] text-muted-foreground",children:"▼"})]}),i&&(0,b.jsxs)("div",{className:"absolute right-0 z-50 mt-1 w-72 rounded-lg border border-border bg-popover shadow-xl p-3",children:[(0,b.jsx)("h5",{className:"text-sm font-semibold text-foreground mb-3",children:g("missions.gridPreset")}),(0,b.jsxs)("div",{className:"flex flex-col gap-0.5",children:[h.map(c=>{let d=c.id===a;return(0,b.jsxs)("button",{onClick:()=>{f(c.id),k(!1)},className:`flex items-center gap-3 px-3 py-2.5 rounded-lg transition-colors ${d?"bg-primary/10":"hover:bg-accent"}`,children:[(0,b.jsx)(o,{cols:c.cols,rows:c.rows,active:d}),(0,b.jsx)("span",{className:`text-sm font-medium flex-1 text-left ${d?"text-primary":"text-foreground"}`,children:c.label}),(0,b.jsx)("span",{className:`text-xs ${d?"text-primary/60":"text-muted-foreground"}`,children:c.desc})]},c.id)}),(0,b.jsxs)("div",{className:"mt-1 border-t border-border pt-2",children:[(0,b.jsxs)("button",{onClick:()=>{m||f(p,{cols:s,rows:u})},className:`flex items-center gap-3 px-3 py-2.5 rounded-lg transition-colors w-full ${m?"bg-primary/10":"hover:bg-accent"}`,children:[(0,b.jsx)(o,{cols:s,rows:u,active:m}),(0,b.jsx)("span",{className:`text-sm font-medium flex-1 text-left ${m?"text-primary":"text-foreground"}`,children:g("missions.gridCustom")}),(0,b.jsxs)("span",{className:`text-xs ${m?"text-primary/60":"text-muted-foreground"}`,children:[s,"×",u]})]}),m&&(0,b.jsxs)("div",{className:"flex items-center gap-3 px-3 py-2",children:[(0,b.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,b.jsx)("label",{className:"text-xs text-muted-foreground",children:g("missions.gridCols")}),(0,b.jsx)("input",{type:"number",min:w.minCols,max:w.maxCols,value:s,onChange:a=>{let b;t(b=y(Number(a.target.value),w.minCols,w.maxCols)),f(p,{cols:b,rows:u})},className:"h-7 w-14 rounded-md border border-border bg-background px-2 text-sm text-center"})]}),(0,b.jsx)("span",{className:"text-muted-foreground",children:"×"}),(0,b.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,b.jsx)("label",{className:"text-xs text-muted-foreground",children:g("missions.gridRows")}),(0,b.jsx)("input",{type:"number",min:w.minRows,max:w.maxRows,value:u,onChange:a=>{let b;v(b=y(Number(a.target.value),w.minRows,w.maxRows)),f(p,{cols:s,rows:b})},className:"h-7 w-14 rounded-md border border-border bg-background px-2 text-sm text-center"})]})]})]})]})]})]})}var r=a.i(643228),s=a.i(859103),t=a.i(969032),u=a.i(553798),v=a.i(514126);let w=(0,l.default)("grip-vertical",[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]]),x=(0,l.default)("arrow-up-right",[["path",{d:"M7 7h10v10",key:"1tivn9"}],["path",{d:"M7 17 17 7",key:"1vkiza"}]]);var y=a.i(54384);let z=(0,l.default)("square-terminal",[["path",{d:"m7 11 2-2-2-2",key:"1lz0vl"}],["path",{d:"M11 13h4",key:"1p7l4v"}],["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}]]);var A=a.i(785259),B=a.i(786304),C=a.i(119041),D=a.i(952313);let E=(0,t.default)(async()=>{},{loadableGenerated:{modules:[346069]},ssr:!1,loading:()=>(0,b.jsx)("div",{className:"h-full w-full bg-[#0a0a0a] animate-pulse"})});function F({execution:a,isRemoving:e,removeReason:f,onStop:g,onSessionEnd:h}){let{t:i}=(0,d.useI18n)(),k=(0,u.useRouter)(),{attributes:l,listeners:m,setNodeRef:n,transform:o,transition:p}=(0,s.useSortable)({id:a.executionId}),q={transform:v.CSS.Transform.toString(o),transition:p,opacity:+!e},[r,t]=(0,c.useState)(()=>a.startedAt?Math.floor((Date.now()-new Date(a.startedAt).getTime())/1e3):0);(0,c.useEffect)(()=>{if(e)return;let b=setInterval(()=>{t(a.startedAt?Math.floor((Date.now()-new Date(a.startedAt).getTime())/1e3):0)},1e3);return()=>clearInterval(b)},[a.startedAt,e]);let G=Math.floor(r/60),H=`${G}m ${r%60}s`;async function I(){if(a.projectLocalPath)try{await (0,C.openInTerminal)(a.projectLocalPath)}catch{D.toast.error(i("preview.terminalError"))}}return(0,b.jsxs)("div",{ref:n,style:q,className:"border border-border rounded-lg overflow-hidden flex flex-col transition-opacity duration-300",...l,children:[(0,b.jsxs)("div",{className:"h-10 px-3 flex items-center gap-1 border-b border-border bg-card shrink-0",children:[(0,b.jsx)("button",{...m,"aria-label":i("missions.dragHandle"),"aria-roledescription":"sortable",className:"cursor-grab text-muted-foreground hover:text-foreground mr-1",children:(0,b.jsx)(w,{className:"h-3.5 w-3.5"})}),(0,b.jsxs)("span",{className:"text-[11px] text-muted-foreground truncate flex-1",children:[a.workspaceName," ›"," ",a.projectAlias||a.projectName," ›"," ",(0,b.jsx)("span",{className:"text-foreground font-semibold",children:a.taskTitle})]}),e?(0,b.jsx)(B.Badge,{variant:"outline",className:"text-[11px] text-muted-foreground bg-muted ml-1 shrink-0",children:"stopped"===f?i("missions.statusStopped"):i("missions.statusCompleted")}):(0,b.jsx)(B.Badge,{variant:"outline",className:"text-[11px] text-primary border-primary/30 bg-primary/10 ml-1 shrink-0",children:i("missions.statusRunning")}),(0,b.jsx)("span",{className:"text-[11px] text-muted-foreground ml-1 shrink-0",children:H}),a.projectLocalPath&&(0,b.jsxs)(A.Tooltip,{children:[(0,b.jsx)(A.TooltipTrigger,{render:(0,b.jsx)(j.Button,{variant:"ghost",size:"icon",className:"ml-1 shrink-0 text-muted-foreground",onClick:I}),children:(0,b.jsx)(z,{className:"h-3.5 w-3.5"})}),(0,b.jsx)(A.TooltipContent,{children:i("missions.openInTerminal")})]}),(0,b.jsxs)(A.Tooltip,{children:[(0,b.jsx)(A.TooltipTrigger,{render:(0,b.jsx)(j.Button,{variant:"ghost",size:"icon",className:"ml-1 shrink-0 text-muted-foreground",onClick:()=>k.push(`/workspaces/${a.workspaceId}/tasks/${a.taskId}`)}),children:(0,b.jsx)(x,{className:"h-3.5 w-3.5"})}),(0,b.jsx)(A.TooltipContent,{children:i("missions.openFullView")})]}),(0,b.jsxs)(A.Tooltip,{children:[(0,b.jsx)(A.TooltipTrigger,{render:(0,b.jsx)(j.Button,{variant:"destructive",size:"icon",className:"ml-1 shrink-0",onClick:()=>g(a.taskId),disabled:e}),children:(0,b.jsx)(y.X,{className:"h-3.5 w-3.5"})}),(0,b.jsx)(A.TooltipContent,{children:i("missions.stopTask")})]})]}),(0,b.jsx)("div",{className:"flex-1 overflow-hidden",children:(0,b.jsx)(E,{taskId:a.taskId,worktreePath:a.worktreePath??a.projectLocalPath,onSessionEnd:b=>h?.(a.taskId,b),useCanvasRenderer:!0})})]})}var G=a.i(594003);let H=(0,e.createServerReference)("40c39f9c4b9e7b389a3450c2fcc45fcdea508b6dcb",e.callServer,void 0,e.findSourceMapURL,"getWorkspacesWithRecentTasks"),I=(0,e.createServerReference)("4099a9a8740f408494b5250ee0dbe45e67309d915a",e.callServer,void 0,e.findSourceMapURL,"getProjectTasks");var J=a.i(779097),K=a.i(57469),L=a.i(866718),M=a.i(814574),N=a.i(10390);let O=(0,l.default)("play",[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]]);var P=a.i(161664),Q=a.i(573242),R=a.i(269876);let S={TODO:"TODO",IN_PROGRESS:"Running",IN_REVIEW:"Review"},T={LOW:"Low",MEDIUM:"Med",HIGH:"High",CRITICAL:"Crit"};function U({status:a}){return(0,b.jsx)("span",{className:`text-[10px] px-1.5 py-0.5 rounded font-medium ${{TODO:"bg-slate-100 text-slate-600 dark:bg-slate-800 dark:text-slate-400",IN_PROGRESS:"bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400",IN_REVIEW:"bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-400"}[a]??"bg-slate-100 text-slate-600"}`,children:S[a]??a})}function V({task:a,isRunning:c,launchingId:d,onLaunchNew:e,onResume:f,t:g}){let h=a.executions?.[0]?.sessionId,i=d===a.id;return(0,b.jsxs)("div",{className:"group/task grid grid-cols-[minmax(0,1fr)_auto] items-center gap-2 px-3 py-1.5 hover:bg-accent/50 cursor-default",children:[(0,b.jsxs)("div",{className:"min-w-0",children:[(0,b.jsx)("p",{className:`text-sm truncate ${c?"italic text-muted-foreground":""}`,children:a.title}),(0,b.jsxs)("div",{className:"flex items-center gap-1.5 mt-0.5",children:[(0,b.jsx)(U,{status:a.status}),(0,b.jsx)("span",{className:"text-[10px] text-muted-foreground",children:T[a.priority]??a.priority})]})]}),c?(0,b.jsx)("span",{className:"text-[10px] italic text-muted-foreground",children:g("missions.alreadyMonitored")}):(0,b.jsxs)("div",{className:"flex items-center gap-1 opacity-0 group-hover/task:opacity-100 transition-opacity",children:[h&&(0,b.jsxs)(j.Button,{variant:"outline",className:"h-6 px-2 text-xs",onClick:()=>f(a.id,h),disabled:i,title:g("missions.continueSession"),children:[(0,b.jsx)(P.RotateCcw,{className:"h-3 w-3 mr-1"}),g("missions.continueLabel")]}),(0,b.jsxs)(j.Button,{variant:"outline",className:"h-6 px-2 text-xs",onClick:()=>e(a.id),disabled:i,title:g("missions.launchNew"),children:[(0,b.jsx)(O,{className:"h-3 w-3 mr-1"}),i?"...":g("missions.launchNewLabel")]})]})]})}function W({open:a,onOpenChange:e,onLaunchNew:f,onResume:g,runningTaskIds:h,launchingId:k}){let{t:l}=(0,d.useI18n)(),[m,n]=(0,c.useState)([]),[o,p]=(0,c.useState)(""),[q,r]=(0,c.useState)(""),[s,t]=(0,c.useState)([]),[u,v]=(0,c.useState)("");(0,c.useEffect)(()=>{a&&(p(""),r(""),t([]),v(""),H(100).then(n).catch(()=>D.toast.error(l("missions.error.launchFailed"))))},[a,l]),(0,c.useEffect)(()=>{q?I(q).then(a=>{t(a.filter(a=>"TODO"===a.status||"IN_PROGRESS"===a.status||"IN_REVIEW"===a.status))}).catch(()=>D.toast.error(l("missions.error.launchFailed"))):t([])},[q,l]);let w=(0,c.useMemo)(()=>{let a=[];for(let b of m)for(let c of b.projects)for(let d of c.tasks)("TODO"===d.status||"IN_PROGRESS"===d.status||"IN_REVIEW"===d.status)&&a.push({task:d,workspaceName:b.name,projectName:c.alias??c.name});return a},[m]),x=(0,c.useMemo)(()=>new G.default(w,{keys:["task.title"],threshold:.4,distance:200}),[w]),z=(0,c.useMemo)(()=>{let a=u.trim();return a?x.search(a,{limit:30}).map(a=>a.item):[]},[x,u]),A=u.trim().length>0,B=m.find(a=>a.id===o),C=B?.projects??[];return(0,b.jsx)(M.Dialog,{open:a,onOpenChange:e,children:(0,b.jsxs)(M.DialogContent,{className:"sm:max-w-2xl max-h-[80vh]",children:[(0,b.jsx)(M.DialogHeader,{children:(0,b.jsx)(M.DialogTitle,{children:l("missions.fullPickerTitle")})}),(0,b.jsxs)("div",{className:"flex flex-col gap-2 shrink-0",children:[(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)(Q.Search,{className:"absolute left-2 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),(0,b.jsx)(L.Input,{value:u,onChange:a=>v(a.target.value),placeholder:l("missions.fullPicker.searchPlaceholder"),className:"pl-8 pr-8 h-8"}),u&&(0,b.jsx)(j.Button,{type:"button",variant:"ghost",size:"icon",className:"absolute right-1 top-1/2 -translate-y-1/2 h-6 w-6",onClick:()=>v(""),"aria-label":l("missions.fullPicker.clearSearch"),children:(0,b.jsx)(y.X,{className:"h-3.5 w-3.5"})})]}),!A&&(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsxs)(i.Select,{value:o,onValueChange:a=>{p(a??""),r("")},children:[(0,b.jsx)(i.SelectTrigger,{id:"full-picker-ws",className:"w-48 h-8",children:(0,b.jsx)("span",{className:"truncate",children:m.find(a=>a.id===o)?.name??l("missions.launcher.selectWorkspace")})}),(0,b.jsx)(i.SelectContent,{children:m.map(a=>(0,b.jsx)(i.SelectItem,{value:a.id,children:a.name},a.id))})]}),(0,b.jsxs)(i.Select,{value:q,onValueChange:a=>r(a??""),disabled:!o,children:[(0,b.jsx)(i.SelectTrigger,{id:"full-picker-proj",className:"w-48 h-8",children:(0,b.jsx)("span",{className:"truncate",children:C.find(a=>a.id===q)?.name??l("missions.launcher.selectProject")})}),(0,b.jsx)(i.SelectContent,{children:C.map(a=>(0,b.jsx)(i.SelectItem,{value:a.id,children:a.alias??a.name},a.id))})]})]})]}),(0,b.jsx)(R.ScrollArea,{className:"max-h-[60vh] -mx-2",children:A?0===z.length?(0,b.jsx)("p",{className:"text-sm text-muted-foreground text-center py-8",children:l("missions.fullPicker.noSearchResults")}):z.map(a=>(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"px-3 pt-2 pb-0.5 text-[11px] text-muted-foreground",children:[a.workspaceName," · ",a.projectName]}),(0,b.jsx)(V,{task:a.task,isRunning:h.has(a.task.id),launchingId:k,onLaunchNew:f,onResume:g,t:l})]},a.task.id)):0===s.length&&q?(0,b.jsx)("p",{className:"text-sm text-muted-foreground text-center py-8",children:l("missions.launcher.noTasks")}):0===s.length?(0,b.jsx)("p",{className:"text-sm text-muted-foreground text-center py-8",children:l("missions.fullPickerHint")}):s.map(a=>(0,b.jsx)(V,{task:a,isRunning:h.has(a.id),launchingId:k,onLaunchNew:f,onResume:g,t:l},a.id))})]})})}function X({open:a,onOpenChange:e,onLaunched:f,runningTaskIds:g=new Set,anchorRef:h}){let{t:i}=(0,d.useI18n)(),k=(0,c.useRef)(null),[l,m]=(0,c.useState)([]),[n,o]=(0,c.useState)(!1),[p,q]=(0,c.useState)(null),[r,s]=(0,c.useState)(!1),[t,u]=(0,c.useState)(new Set);(0,c.useEffect)(()=>{a&&(o(!0),H(5).then(m).catch(()=>D.toast.error(i("missions.error.launchFailed"))).finally(()=>o(!1)))},[a,i]);let v=(0,c.useMemo)(()=>l.filter(a=>a.projects.some(a=>a._count.tasks>0)),[l]),w=(0,c.useCallback)(a=>{u(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c})},[]);(0,c.useEffect)(()=>{if(a)return document.addEventListener("mousedown",b),()=>document.removeEventListener("mousedown",b);function b(a){let b=a.target;if(k.current&&!k.current.contains(b)){if(h?.current&&h.current.contains(b))return;e(!1)}}},[a,e,h]);let x=(0,c.useCallback)(async a=>{try{q(a),await (0,J.startPtyExecution)(a,""),f(a),e(!1),s(!1)}catch{D.toast.error(i("missions.error.launchFailed"))}finally{q(null)}},[f,e,i]),y=(0,c.useCallback)(async(a,b)=>{try{q(a),await (0,K.resumePtyExecution)(a,b),f(a),e(!1),s(!1)}catch{D.toast.error(i("missions.error.launchFailed"))}finally{q(null)}},[f,e,i]),z=(0,c.useCallback)(()=>{e(!1),s(!0)},[e]);return a||r?(0,b.jsxs)(b.Fragment,{children:[a&&(0,b.jsxs)("div",{ref:k,className:"absolute right-0 z-50 mt-1 grid max-h-[480px] w-[28rem] grid-rows-[auto_minmax(0,1fr)_auto] overflow-hidden rounded-lg border border-border bg-popover shadow-xl",children:[(0,b.jsx)("div",{className:"px-3 py-2 border-b border-border",children:(0,b.jsx)("p",{className:"text-xs font-semibold text-muted-foreground uppercase tracking-wide",children:i("missions.pickerTitle")})}),(0,b.jsx)(R.ScrollArea,{children:n?(0,b.jsx)("div",{className:"flex items-center justify-center py-8 text-sm text-muted-foreground",children:"Loading..."}):0===v.length?(0,b.jsx)("div",{className:"flex items-center justify-center py-8 text-sm text-muted-foreground",children:i("missions.noAvailableTasks")}):v.map(a=>{let c=t.has(a.id),d=a.projects.filter(a=>a._count.tasks>0);return(0,b.jsxs)("div",{children:[(0,b.jsxs)(j.Button,{variant:"ghost",onClick:()=>w(a.id),className:"flex h-auto w-full justify-start gap-1.5 rounded-none border-b border-border/50 px-3 py-1.5 hover:bg-accent",children:[(0,b.jsx)(N.ChevronRight,{className:`h-3.5 w-3.5 shrink-0 text-muted-foreground transition-transform ${c?"":"rotate-90"}`}),(0,b.jsx)("span",{className:"text-[11px] font-semibold text-muted-foreground uppercase tracking-wider",children:a.name})]}),!c&&(0,b.jsx)("div",{className:"ml-[19px] mt-0.5 border-l border-border/50",children:d.map(a=>(0,b.jsxs)("div",{className:"py-0.5",children:[(0,b.jsx)("div",{className:"pl-3 pt-1.5 pb-1",children:(0,b.jsx)("span",{className:"text-xs font-medium text-foreground",children:a.alias??a.name})}),(0,b.jsx)("div",{className:"pl-3",children:a.tasks.map(a=>(0,b.jsx)(V,{task:a,isRunning:g.has(a.id),launchingId:p,onLaunchNew:x,onResume:y,t:i},a.id))})]},a.id))})]},a.id)})}),(0,b.jsx)("div",{className:"border-t border-border",children:(0,b.jsx)(j.Button,{variant:"ghost",className:"w-full rounded-none text-xs text-primary font-medium",onClick:z,children:i("missions.showMoreTasks")})})]}),(0,b.jsx)(W,{open:r,onOpenChange:s,onLaunchNew:x,onResume:y,runningTaskIds:g,launchingId:p})]}):null}a.s(["MissionsClient",0,function({initialExecutions:a}){let{t:e}=(0,d.useI18n)(),[l,n]=(0,c.useState)(a),[o,p]=(0,c.useState)(()=>"3x2"),[t,u]=(0,c.useState)(()=>({cols:2,rows:2})),[v,w]=(0,c.useState)(!1),[x,y]=(0,c.useState)(""),z=(0,c.useRef)(null),[A,B]=(0,c.useState)(new Map),C=(0,c.useRef)(A);(0,c.useEffect)(()=>{C.current=A},[A]);let E=(0,c.useRef)(new Map),G=h.find(a=>a.id===o)??h[2],H="custom"===o?t.cols:G.cols,I="custom"===o?t.rows:G.rows,J=(0,c.useRef)(null),[K,L]=(0,c.useState)("480px");(0,c.useEffect)(()=>{let a=J.current;if(!a)return;let b=()=>{let b=(a.clientHeight-32-16*(I-1))/I;L(`${Math.max(b,200)}px`)};b();let c=new ResizeObserver(b);return c.observe(a),()=>c.disconnect()},[I]);let M=(0,c.useCallback)((a,b)=>{a&&(p(a),localStorage.setItem("missions-grid-preset",a),"custom"===a&&b&&(u(b),localStorage.setItem("missions-grid-custom",JSON.stringify(b))))},[]),N=(0,r.useSensors)((0,r.useSensor)(r.PointerSensor,{activationConstraint:{distance:8}})),O=(0,c.useCallback)(a=>{let{active:b,over:c}=a;c&&b.id!==c.id&&n(a=>{let d=a.findIndex(a=>a.executionId===b.id),e=a.findIndex(a=>a.executionId===c.id);return(0,s.arrayMove)(a,d,e)})},[]),P=(0,c.useCallback)((a,b)=>{if(C.current.has(a))return;B(c=>new Map([...c,[a,b]]));let c=setTimeout(()=>{n(b=>b.filter(b=>b.executionId!==a)),B(b=>{let c=new Map(b);return c.delete(a),c}),E.current.delete(a)},500);E.current.set(a,c)},[]);(0,c.useEffect)(()=>{let a=setInterval(async()=>{try{let a=await f();n(b=>{let c=C.current,{merged:d,goneIds:e}=function({prev:a,fresh:b,removingIds:c}){let d=new Set(b.map(a=>a.executionId)),e=[];a.forEach(a=>{d.has(a.executionId)||c.has(a.executionId)||e.push(a.executionId)});let f=a.filter(a=>d.has(a.executionId)||c.has(a.executionId)),g=new Set(a.map(a=>a.executionId));return{merged:[...f,...b.filter(a=>!g.has(a.executionId))],goneIds:e}}({prev:b,fresh:a,removingIds:new Set(c.keys())});return e.forEach(a=>P(a,"completed")),d})}catch{}},4e3);return()=>clearInterval(a)},[P]),(0,c.useEffect)(()=>{let a=E.current;return()=>{a.forEach(a=>clearTimeout(a))}},[]);let Q=(0,c.useCallback)(async a=>{try{await (0,g.stopPtyExecution)(a),n(b=>{let c=b.find(b=>b.taskId===a);return c&&P(c.executionId,"stopped"),b})}catch{D.toast.error(e("missions.error.stopFailed"))}},[P,e]),R=(0,c.useCallback)((a,b)=>{n(b=>{let c=b.find(b=>b.taskId===a);return c&&P(c.executionId,"completed"),b})},[P]),S=(0,c.useCallback)(a=>{f().then(a=>{n(b=>{let c=new Set(b.map(a=>a.executionId));return[...b,...a.filter(a=>!c.has(a.executionId))]})}).catch(()=>{})},[]),T=Array.from(new Map(l.map(a=>[a.workspaceId,a.workspaceName])).entries()).map(([a,b])=>({id:a,name:b})),U=x?l.filter(a=>a.workspaceId===x):l,V=new Set(l.map(a=>a.taskId));return(0,b.jsxs)("div",{className:"flex h-full flex-col",children:[(0,b.jsxs)("div",{className:"header-sm shrink-0 px-4 flex items-center gap-3",children:[(0,b.jsx)("h1",{className:"text-base font-semibold",children:e("missions.pageTitle")}),(0,b.jsxs)(i.Select,{value:x,onValueChange:a=>y(a??""),children:[(0,b.jsx)(i.SelectTrigger,{className:"w-36 h-8",children:(0,b.jsx)("span",{className:"truncate",children:x?T.find(a=>a.id===x)?.name??e("missions.filterAll"):e("missions.filterAll")})}),(0,b.jsxs)(i.SelectContent,{children:[(0,b.jsx)(i.SelectItem,{value:"",children:e("missions.filterAll")}),T.map(a=>(0,b.jsx)(i.SelectItem,{value:a.id,children:a.name},a.id))]})]}),(0,b.jsx)("div",{className:"flex-1"}),(0,b.jsx)(q,{value:o,customValue:t,onChange:M}),(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)(j.Button,{ref:z,onClick:()=>w(a=>!a),children:e("missions.launchTask")}),(0,b.jsx)(X,{open:v,onOpenChange:w,onLaunched:S,runningTaskIds:V,anchorRef:z})]})]}),(0,b.jsx)("div",{ref:J,className:"flex-1 overflow-auto min-h-0 p-4",children:0===U.length&&0===A.size?(0,b.jsx)(k.EmptyState,{icon:m,title:e("missions.emptyTitle"),description:e("missions.emptyDesc"),className:"h-full",action:(0,b.jsx)(j.Button,{onClick:()=>w(!0),children:e("missions.launchTask")})}):(0,b.jsx)(r.DndContext,{id:"missions-dnd",sensors:N,collisionDetection:r.closestCenter,onDragEnd:O,children:(0,b.jsx)(s.SortableContext,{items:U.map(a=>a.executionId),strategy:s.rectSortingStrategy,children:(0,b.jsx)("div",{className:"grid gap-4",style:{gridTemplateColumns:`repeat(${H}, 1fr)`,gridAutoRows:K},children:U.map(a=>(0,b.jsx)(F,{execution:a,isRemoving:A.has(a.executionId),removeReason:A.get(a.executionId),onStop:Q,onSessionEnd:R},a.executionId))})})})})]})}],989799)}];
2
2
 
3
3
  //# sourceMappingURL=src_app_missions_missions-client_tsx_11429lj._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[163778,a=>{"use strict";var b=a.i(728778),c=a.i(374637),d=a.i(553798),e=a.i(940271),f=a.i(699570),g=a.i(866718),h=a.i(487410),i=a.i(785259),j=a.i(43775),k=a.i(368114);function l({className:a,size:c="default",...d}){return(0,b.jsx)("div",{"data-slot":"card","data-size":c,className:(0,k.cn)("group/card flex flex-col gap-4 overflow-hidden rounded-xl bg-card py-4 text-sm text-card-foreground ring-1 ring-foreground/10 has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl",a),...d})}function m({className:a,...c}){return(0,b.jsx)("div",{"data-slot":"card-content",className:(0,k.cn)("px-4 group-data-[size=sm]/card:px-3",a),...c})}var n=a.i(704494),o=a.i(668116),p=a.i(54384),q=a.i(648512),r=a.i(913284),s=a.i(468862),t=a.i(951192);function u({adapterType:a,adapterLabel:d,provider:e,hideHeader:g,onResult:h}){let[i,j]=(0,c.useState)(!1),[v,w]=(0,c.useState)(null),{t:x}=(0,t.useI18n)();async function y(){if(!i){j(!0),w(null);try{let b=await fetch("/api/adapters/test",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({adapterType:a,provider:e})}),c=await b.json();w(c),h?.(c)}catch{let a={ok:!1,checks:[{name:"network_error",passed:!1,message:"Network request failed"}]};w(a),h?.(a)}finally{j(!1)}}}return(0,b.jsxs)("div",{className:"space-y-4",children:[!g&&(0,b.jsxs)("div",{className:"flex items-center gap-3",children:[(0,b.jsx)("div",{className:"rounded-lg bg-emerald-100 dark:bg-emerald-900/30 p-2",children:(0,b.jsx)(q.Terminal,{className:"h-5 w-5 text-emerald-600 dark:text-emerald-400"})}),(0,b.jsxs)("div",{children:[(0,b.jsx)("h3",{className:"font-semibold",children:x("settings.aiTools.cliVerification")}),(0,b.jsx)("p",{className:"text-sm text-muted-foreground",children:x("settings.aiTools.cliVerificationDesc")})]})]}),(0,b.jsx)(l,{children:(0,b.jsxs)(m,{className:"p-6 space-y-4",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)("div",{children:d&&(0,b.jsx)("p",{className:"font-medium",children:d})}),(0,b.jsx)(f.Button,{onClick:y,disabled:i,variant:"outline",children:i?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(n.Loader2,{className:"h-4 w-4 animate-spin mr-2"}),x("settings.aiTools.testing")]}):x("settings.aiTools.testConnection")})]}),v&&(0,b.jsxs)("div",{className:(0,k.cn)("rounded-lg border p-4 space-y-3",v.ok?"bg-green-50 border-green-200 dark:bg-green-950/20 dark:border-green-800":"bg-red-50 border-red-200 dark:bg-red-950/20 dark:border-red-800"),children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[v.ok?(0,b.jsx)(r.CheckCircle2,{className:"h-4 w-4 text-green-600 dark:text-green-400"}):(0,b.jsx)(s.XCircle,{className:"h-4 w-4 text-red-600 dark:text-red-400"}),(0,b.jsx)("span",{className:(0,k.cn)("text-sm font-medium",v.ok?"text-green-700 dark:text-green-300":"text-red-700 dark:text-red-300"),children:x(v.ok?"settings.aiTools.testPassed":"settings.aiTools.testFailed")})]}),(0,b.jsx)("div",{className:"space-y-2",children:v.checks.map(c=>(0,b.jsxs)("div",{className:"flex items-start gap-2 text-sm",children:[c.passed?(0,b.jsx)(o.Check,{className:"h-4 w-4 text-green-500 mt-0.5 shrink-0"}):(0,b.jsx)(p.X,{className:"h-4 w-4 text-red-500 mt-0.5 shrink-0"}),(0,b.jsx)("span",{className:(0,k.cn)(c.passed?"text-green-700 dark:text-green-300":"text-red-700 dark:text-red-300"),children:c.message})]},`${a}-${c.name}`))})]})]})})]})}var v=a.i(960254),w=a.i(711796);let x=(0,w.default)("user",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]);var y=a.i(577565),z=a.i(264589),A=a.i(912868),B=a.i(10390),C=a.i(761052),D=a.i(86354);let E=(0,w.default)("monitor",[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]]),F=(0,w.default)("languages",[["path",{d:"m5 8 6 6",key:"1wu5hv"}],["path",{d:"m4 14 6-6 2-3",key:"1k1g8d"}],["path",{d:"M2 5h12",key:"or177f"}],["path",{d:"M7 2h1",key:"1t2jsx"}],["path",{d:"m22 22-5-10-5 10",key:"don7ne"}],["path",{d:"M14 18h6",key:"1m8k6r"}]]);var G=a.i(774881),H=a.i(975231),I=a.i(347165),J=a.i(963326),K=a.i(953093),L=a.i(239748),M=a.i(780410);let N=(0,M.createServerReference)("607f41e8b835c411c7f73c6c13d8805a266f35c6a7",M.callServer,void 0,M.findSourceMapURL,"completeOnboarding"),O=(0,M.createServerReference)("607b07e815c7beb5484ceff557174fb4302a9e073f",M.callServer,void 0,M.findSourceMapURL,"setOnboardingExtensions");function P({username:a,onComplete:d}){let{t:e}=(0,t.useI18n)(),g=(0,K.listExtensionMetadata)(),[h,i]=(0,c.useState)(()=>new Set(g.map(a=>a.id))),[j,k]=(0,c.useState)(!1),l=g.length,m=h.size;async function o(){k(!0);let b=Array.from(h),c=[];if(b.length>0)for(let a of(await Promise.all(b.map(async a=>{try{let b=await (0,L.installExtension)(a);return{id:a,success:b.success}}catch{return{id:a,success:!1}}}))))a.success&&c.push(a.id);await O(b,c),await N(a),k(!1),d()}return(0,b.jsxs)("div",{className:"space-y-6",children:[(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)("h2",{className:"text-xl font-semibold",children:e("onboarding.step4.title")}),(0,b.jsx)("p",{className:"text-sm text-muted-foreground",children:e("onboarding.step4.desc")})]}),(0,b.jsx)("div",{className:"space-y-2",children:g.map(a=>{let c=a.icon,d=h.has(a.id);return(0,b.jsxs)("label",{className:"flex items-start gap-3 rounded-lg border border-border bg-background p-3 cursor-pointer hover:bg-accent/50 transition-colors",children:[(0,b.jsx)("input",{type:"checkbox",checked:d,onChange:()=>{var b;return b=a.id,void i(a=>{let c=new Set(a);return c.has(b)?c.delete(b):c.add(b),c})},disabled:j,className:"mt-0.5 h-4 w-4 cursor-pointer accent-primary"}),(0,b.jsxs)("div",{className:"flex flex-1 items-start gap-3 min-w-0",children:[(0,b.jsx)("div",{className:"flex h-8 w-8 shrink-0 items-center justify-center rounded-md bg-muted",children:(0,b.jsx)(c,{className:"h-4 w-4 text-muted-foreground"})}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,b.jsx)("span",{className:"text-sm font-medium",children:a.name}),(0,b.jsxs)("span",{className:"shrink-0 text-xs text-muted-foreground",children:["~",a.sizeMB," MB"]})]}),(0,b.jsx)("p",{className:"mt-0.5 text-xs text-muted-foreground",children:a.description}),(0,b.jsxs)("a",{href:a.homepageUrl,target:"_blank",rel:"noopener noreferrer",onClick:a=>a.stopPropagation(),className:"mt-1 inline-flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground",children:[(0,b.jsx)(J.ExternalLink,{className:"h-3 w-3"}),e("settings.extensions.visitHomepage")]})]})]})]},a.id)})}),m<l&&(0,b.jsx)("p",{className:"text-xs text-muted-foreground italic",children:e("onboarding.step4.skipHint")}),(0,b.jsx)("div",{className:"flex justify-end",children:(0,b.jsx)(f.Button,{onClick:o,disabled:j,children:j?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(n.Loader2,{className:"h-3.5 w-3.5 animate-spin"}),e("onboarding.step4.installing")]}):0===m?e("onboarding.step4.continueWithoutInstall"):e("onboarding.step4.continue")})})]})}function Q({step:a}){let c=[x,q.Terminal,y.GitBranch,z.Package][a-1]??x,d=["Profile","Connect","Configure","Extensions"][a-1]??"";return(0,b.jsxs)("div",{className:"relative h-full w-full overflow-hidden",children:[(0,b.jsx)("div",{className:"absolute inset-0 opacity-[0.07] text-white",style:{backgroundImage:"radial-gradient(circle, currentColor 1px, transparent 1px)",backgroundSize:"24px 24px"}}),(0,b.jsx)("div",{className:"absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 rounded-full",style:{width:"380px",height:"380px",background:"radial-gradient(circle, oklch(0.80 0.14 75 / 0.25) 0%, oklch(0.80 0.14 75 / 0.08) 45%, transparent 70%)",animation:"ob-pulse 6s ease-in-out infinite"}}),(0,b.jsx)("div",{className:"absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 rounded-full border border-amber-400/25",style:{width:"260px",height:"260px",animation:"ob-spin 20s linear infinite"},children:(0,b.jsx)("div",{className:"absolute -top-1.5 left-1/2 -translate-x-1/2 h-3 w-3 rounded-full bg-amber-400",style:{boxShadow:"0 0 16px oklch(0.80 0.14 75 / 0.7)"}})}),(0,b.jsxs)("div",{className:"absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 rounded-full border border-amber-400/15",style:{width:"380px",height:"380px",animation:"ob-spin 30s linear infinite reverse"},children:[(0,b.jsx)("div",{className:"absolute -top-1 left-1/2 -translate-x-1/2 h-2 w-2 rounded-full bg-amber-400/70"}),(0,b.jsx)("div",{className:"absolute -bottom-1 left-1/2 -translate-x-1/2 h-1.5 w-1.5 rounded-full bg-amber-400/50"})]}),(0,b.jsx)("svg",{className:"absolute",style:{top:"18%",right:"22%",animation:"ob-float 8s ease-in-out infinite"},width:"44",height:"50",viewBox:"0 0 40 46",fill:"none",children:(0,b.jsx)("path",{d:"M20 1 L38 12 L38 34 L20 45 L2 34 L2 12 Z",stroke:"oklch(0.80 0.14 75 / 0.4)",strokeWidth:"1.5",fill:"oklch(0.80 0.14 75 / 0.06)"})}),(0,b.jsx)("svg",{className:"absolute",style:{bottom:"22%",left:"18%",animation:"ob-float 10s ease-in-out 2s infinite"},width:"32",height:"36",viewBox:"0 0 40 46",fill:"none",children:(0,b.jsx)("path",{d:"M20 1 L38 12 L38 34 L20 45 L2 34 L2 12 Z",stroke:"oklch(0.80 0.14 75 / 0.3)",strokeWidth:"1.5",fill:"oklch(0.80 0.14 75 / 0.05)"})}),(0,b.jsx)("div",{className:"absolute h-3.5 w-3.5 rounded-full bg-amber-400/40",style:{top:"30%",left:"28%",animation:"ob-float 7s ease-in-out 1s infinite"}}),(0,b.jsx)("div",{className:"absolute h-2.5 w-2.5 rounded-full bg-amber-400/30",style:{top:"65%",right:"30%",animation:"ob-float 9s ease-in-out 3s infinite"}}),(0,b.jsx)("div",{className:"absolute h-2 w-2 rounded-full bg-amber-400/20",style:{top:"45%",right:"15%",animation:"ob-float 6s ease-in-out 0.5s infinite"}}),(0,b.jsxs)("svg",{className:"absolute inset-0 h-full w-full text-white opacity-[0.12]",children:[(0,b.jsx)("line",{x1:"30%",y1:"25%",x2:"70%",y2:"45%",stroke:"currentColor",strokeWidth:"1",strokeDasharray:"4 6",style:{animation:"ob-dash 12s linear infinite"}}),(0,b.jsx)("line",{x1:"65%",y1:"30%",x2:"35%",y2:"70%",stroke:"currentColor",strokeWidth:"1",strokeDasharray:"4 6",style:{animation:"ob-dash 15s linear infinite reverse"}})]}),(0,b.jsx)("div",{className:"absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 flex items-center justify-center",children:(0,b.jsx)("div",{className:"flex h-16 w-16 items-center justify-center rounded-2xl border border-amber-400/35 bg-amber-500/10 backdrop-blur-sm transition-all duration-700",style:{boxShadow:"0 0 50px oklch(0.80 0.14 75 / 0.2)"},children:(0,b.jsx)(c,{className:"h-7 w-7 text-amber-400"})})}),(0,b.jsx)("div",{className:"absolute left-1/2 top-1/2 -translate-x-1/2 translate-y-12 text-center",children:(0,b.jsx)("p",{className:"text-[11px] font-medium tracking-widest uppercase text-amber-400/60",children:d})})]})}let R={host:"",ownerMatch:"*",localPathTemplate:""};a.s(["default",0,function(){let a,k,l,m=(0,d.useRouter)(),{t:n,locale:p,setLocale:r}=(0,t.useI18n)(),{theme:s,setTheme:w}=(0,e.useTheme)(),[J,K]=(0,c.useState)(!1),[L,M]=(0,c.useState)(1),[N,O]=(0,c.useState)(""),[S,T]=(0,c.useState)({}),U=Object.values(S).some(a=>a.ok),[V,W]=(0,c.useState)([]),[X,Y]=(0,c.useState)({...R}),[Z,$]=(0,c.useState)(!0),[_,aa]=(0,c.useState)(0),[ab,ac]=(0,c.useState)(!1),[ad,ae]=(0,c.useState)(!1);(0,c.useEffect)(()=>K(!0),[]);let af=[{value:"light",label:(0,b.jsx)(C.Sun,{className:"h-4 w-4"})},{value:"dark",label:(0,b.jsx)(D.Moon,{className:"h-4 w-4"})},{value:"system",label:(0,b.jsx)(E,{className:"h-4 w-4"})}];function ag(){M(a=>a+1)}function ah(){M(a=>Math.max(1,a-1))}let ai=[{icon:x,label:n("onboarding.step1.title")},{icon:q.Terminal,label:n("onboarding.step2.title")},{icon:y.GitBranch,label:n("onboarding.step3.title")},{icon:z.Package,label:n("onboarding.step4.title")}];return(0,b.jsxs)("div",{className:"flex h-screen bg-background",children:[(0,b.jsx)("div",{className:"hidden xl:block xl:w-3/5 border-r border-border/50 bg-[oklch(0.13_0.006_260)]",children:(0,b.jsx)(Q,{step:L})}),(0,b.jsx)("div",{className:"flex w-full flex-col items-center px-8 pt-[10vh] pb-10 xl:w-2/5 xl:px-16 overflow-y-auto",children:(0,b.jsxs)("div",{className:"w-full max-w-lg space-y-6",children:[(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,b.jsx)("img",{src:"/logo.png",alt:"Tower",className:"h-8 w-8 rounded-lg"}),(0,b.jsx)("span",{className:"text-lg font-semibold tracking-tight",children:"Tower"})]}),(0,b.jsx)("div",{className:"flex items-center gap-1.5",children:ai.map((a,c)=>{let d=c+1,e=d===L,f=d<L,g=a.icon;return(0,b.jsxs)("div",{className:"flex items-center gap-1.5 shrink-0",children:[c>0&&(0,b.jsx)("div",{className:`h-px w-4 transition-colors duration-500 ${f?"bg-primary":"bg-border"}`}),(0,b.jsxs)("div",{className:`flex items-center gap-1 shrink-0 rounded-full px-2 py-1 text-[11px] font-medium whitespace-nowrap transition-all duration-500 ${e?"bg-primary text-primary-foreground shadow-sm":f?"bg-primary/10 text-primary":"bg-muted text-muted-foreground"}`,children:[f?(0,b.jsx)(o.Check,{className:"h-3 w-3 shrink-0"}):(0,b.jsx)(g,{className:"h-3 w-3 shrink-0"}),(0,b.jsx)("span",{children:a.label})]})]},c)})})]}),(0,b.jsxs)("div",{children:[1===L&&(0,b.jsxs)("div",{className:"space-y-7 animate-in fade-in slide-in-from-left-4 duration-500",children:[(0,b.jsxs)("div",{className:"space-y-1.5",children:[(0,b.jsx)("h1",{className:"text-2xl font-bold tracking-tight",children:n("onboarding.step1.title")}),(0,b.jsx)("p",{className:"text-sm text-muted-foreground leading-relaxed",children:n("onboarding.step1.desc")})]}),(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)("label",{htmlFor:"onboarding-username",className:"text-sm font-medium",children:n("onboarding.step1.usernameLabel")}),(0,b.jsx)("input",{id:"onboarding-username",type:"text",value:N,onChange:a=>O(a.target.value),placeholder:n("onboarding.step1.usernamePlaceholder"),className:"flex h-10 w-full rounded-lg border border-input bg-transparent px-3 py-2 text-sm shadow-sm transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/50",maxLength:64,autoFocus:!0,autoComplete:"username"})]}),(0,b.jsxs)("div",{className:"grid grid-cols-2 gap-6",children:[(0,b.jsxs)("div",{className:"space-y-2.5",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(F,{className:"h-3.5 w-3.5 text-muted-foreground"}),(0,b.jsx)("label",{className:"text-sm font-medium",children:n("settings.language")})]}),(0,b.jsx)(h.SegmentedControl,{options:[{value:"zh",label:"中文"},{value:"en",label:"English"}].map(a=>({value:a.value,label:a.label})),value:p,onChange:a=>r(a)})]}),(0,b.jsxs)("div",{className:"space-y-2.5",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(C.Sun,{className:"h-3.5 w-3.5 text-muted-foreground"}),(0,b.jsx)("label",{className:"text-sm font-medium",children:n("settings.theme")})]}),J?(0,b.jsx)(h.SegmentedControl,{options:af.map(a=>({value:a.value,label:a.label})),value:s??"system",onChange:a=>w(a)}):(0,b.jsx)("div",{className:"inline-flex h-8 rounded-md border border-border bg-muted p-1 gap-1 w-[120px]"})]})]}),(0,b.jsx)("div",{className:"flex justify-end pt-3",children:(0,b.jsxs)(f.Button,{onClick:ag,disabled:0===N.trim().length,className:"px-5",children:[n("onboarding.step1.next"),(0,b.jsx)(B.ChevronRight,{className:"h-4 w-4 ml-1"})]})})]}),2===L&&(0,b.jsxs)("div",{className:"space-y-7 animate-in fade-in slide-in-from-left-4 duration-500",children:[(0,b.jsxs)("div",{className:"space-y-1.5",children:[(0,b.jsx)("h1",{className:"text-2xl font-bold tracking-tight",children:n("onboarding.step2.title")}),(0,b.jsx)("p",{className:"text-sm text-muted-foreground leading-relaxed",children:n("onboarding.step2.desc")})]}),(0,b.jsx)(u,{adapterType:"claude_code",adapterLabel:"Claude CLI",provider:"claude",onResult:a=>T(b=>({...b,claude:a}))}),(0,b.jsx)(u,{adapterType:"codex_cli",adapterLabel:"Codex CLI",provider:"codex",hideHeader:!0,onResult:a=>T(b=>({...b,codex:a}))}),(0,b.jsxs)("div",{className:"flex items-center justify-between pt-3",children:[(0,b.jsxs)(f.Button,{variant:"ghost",className:"text-muted-foreground",onClick:ah,children:[(0,b.jsx)(A.ChevronLeft,{className:"h-4 w-4 mr-1"}),n("onboarding.back")]}),(0,b.jsxs)(f.Button,{onClick:ag,disabled:!U,className:"px-5",children:[n("onboarding.step1.next"),(0,b.jsx)(B.ChevronRight,{className:"h-4 w-4 ml-1"})]})]})]}),3===L&&(0,b.jsxs)("div",{className:"space-y-5 animate-in fade-in slide-in-from-left-4 duration-500",children:[(0,b.jsxs)("div",{className:"space-y-1.5",children:[(0,b.jsx)("h1",{className:"text-2xl font-bold tracking-tight",children:n("onboarding.step3.title")}),(0,b.jsx)("p",{className:"text-sm text-muted-foreground leading-relaxed",children:n("onboarding.step3.desc")})]}),V.length>0&&(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)("p",{className:"text-xs font-medium text-muted-foreground",children:n("onboarding.step3.added").replace("{count}",String(V.length))}),V.map(a=>(0,b.jsxs)("div",{className:"flex items-center justify-between rounded-lg border border-border bg-muted/30 px-3 py-2",children:[(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsxs)("p",{className:"text-sm font-medium truncate",children:[a.host,(0,b.jsx)("span",{className:"text-muted-foreground",children:"*"!==a.ownerMatch?` / ${a.ownerMatch}`:""})]}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground font-mono truncate",children:a.localPathTemplate})]}),(0,b.jsx)(f.Button,{variant:"ghost",size:"icon",className:"shrink-0 text-muted-foreground hover:text-destructive",onClick:()=>{var b;return b=a.id,void W(a=>a.filter(a=>a.id!==b))},children:(0,b.jsx)(H.Trash2,{className:"h-3.5 w-3.5"})})]},a.id))]}),Z?(0,b.jsxs)("div",{className:"space-y-3 rounded-lg border border-border p-4",children:[(0,b.jsxs)("div",{className:"space-y-1.5",children:[(0,b.jsx)("label",{className:"text-xs font-medium",children:n("onboarding.step3.hostLabel")}),(0,b.jsx)(g.Input,{value:X.host,onChange:a=>Y(b=>({...b,host:a.target.value})),placeholder:n("onboarding.step3.hostPlaceholder"),className:"h-9",autoFocus:!0})]}),(0,b.jsxs)("div",{className:"space-y-1.5",children:[(0,b.jsx)("label",{className:"text-xs font-medium",children:n("onboarding.step3.ownerLabel")}),(0,b.jsx)(g.Input,{value:X.ownerMatch,onChange:a=>Y(b=>({...b,ownerMatch:a.target.value})),placeholder:n("onboarding.step3.ownerPlaceholder"),className:"h-9"})]}),(0,b.jsxs)("div",{className:"space-y-1.5",children:[(0,b.jsx)("label",{className:"block text-xs font-medium",children:n("onboarding.step3.pathLabel")}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(g.Input,{value:X.localPathTemplate,onChange:a=>Y(b=>({...b,localPathTemplate:a.target.value})),placeholder:n("onboarding.step3.pathPlaceholder"),className:"h-9 font-mono text-xs flex-1"}),(0,b.jsxs)(i.Tooltip,{children:[(0,b.jsx)(i.TooltipTrigger,{render:(0,b.jsx)(f.Button,{variant:ab?"default":"outline",size:"sm",type:"button",onClick:()=>{ac(a=>(a||aa(2),!a))},className:"shrink-0 font-mono",children:"{path}"})}),(0,b.jsx)(i.TooltipContent,{side:"top",className:"max-w-xs",children:(0,b.jsxs)("div",{className:"space-y-1 text-xs",children:[(0,b.jsx)("div",{className:"font-medium",children:n("settings.config.git.pathTooltipTitle")}),(0,b.jsx)("div",{className:"opacity-80",children:n("settings.config.git.pathTooltipDetail")})]})})]}),(0,b.jsxs)(i.Tooltip,{children:[(0,b.jsx)(i.TooltipTrigger,{render:(0,b.jsx)(f.Button,{variant:"outline",size:"icon",type:"button",onClick:()=>ae(!0),children:(0,b.jsx)(I.FolderOpen,{className:"h-4 w-4"})})}),(0,b.jsx)(i.TooltipContent,{children:n("settings.config.git.pickFolder")})]})]}),(0,b.jsx)("p",{className:"text-[11px] text-muted-foreground",children:n(ab?"onboarding.step3.pathHintFull":"onboarding.step3.pathHintRepo")})]}),X.localPathTemplate&&(a=X.localPathTemplate.trim().replace(/\/+$/,""),k=ab?`${a}/{path}`:a,l=[{label:"GitHub SSH",url:"git@github.com:user/my-app.git"},{label:"GitHub HTTPS",url:"https://github.com/user/my-app.git"},{label:"GitLab Subgroup",url:"https://gitlab.com/org/team/sub/my-api.git"}],(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)("label",{className:"text-xs font-medium",children:n("onboarding.step3.previewLabel")}),(0,b.jsx)("div",{className:"flex gap-1 flex-wrap",children:l.map((a,c)=>(0,b.jsx)("button",{type:"button",onClick:()=>aa(c),className:`rounded-md px-2 py-1 text-[11px] font-medium transition-colors ${_===c?"bg-primary text-primary-foreground":"bg-muted text-muted-foreground hover:text-foreground"}`,children:a.label},c))}),(0,b.jsxs)("div",{className:"rounded-md bg-muted/50 px-3 py-2 space-y-1",children:[(0,b.jsx)("p",{className:"font-mono text-[11px] text-muted-foreground truncate",children:l[_].url}),(0,b.jsxs)("p",{className:"font-mono text-xs",children:[(0,b.jsx)("span",{className:"text-muted-foreground",children:"→ "}),(0,b.jsx)("span",{className:"text-primary",children:function(a,b){if(!a||!b)return"";let c=b.trim(),d=[],e=c.match(/^git@[^:]+:(.+)$/);if(e)d=e[1].replace(/\.git\/?$/,"").split("/").filter(Boolean);else try{let a=new URL(c);d=decodeURIComponent(a.pathname).replace(/\.git\/?$/,"").split("/").filter(Boolean)}catch{return""}if(!d.length)return"";let f=d[0],g=d[d.length-1],h=d.join("/");if(a.includes("{path}"))return a.replace("{path}",h).replace("{owner}",f).replace("{repo}",g).replace(/\/+$/,"");let i=a.replace("{owner}",f).replace("{repo}","").replace(/\/+$/,"");return`${i}/${g}`}(k,l[_].url)})]})]})]})),(0,b.jsxs)("div",{className:"flex justify-end gap-2 pt-1",children:[V.length>0&&(0,b.jsx)(f.Button,{variant:"ghost",onClick:()=>$(!1),children:n("settings.config.git.cancel")}),(0,b.jsxs)(f.Button,{onClick:function(){if(!X.host.trim()||!X.localPathTemplate.trim())return;let a=X.localPathTemplate.trim().replace(/\/+$/,""),b=ab?`${a}/{path}`:a,c={id:crypto.randomUUID(),host:X.host.trim(),ownerMatch:X.ownerMatch.trim()||"*",localPathTemplate:b,priority:V.length};W(a=>[...a,c]),Y({...R}),ac(!1),$(!1)},disabled:!X.host.trim()||!X.localPathTemplate.trim(),children:[(0,b.jsx)(o.Check,{className:"h-4 w-4 mr-1"}),n("settings.config.git.save")]})]})]}):(0,b.jsxs)(f.Button,{variant:"outline",onClick:()=>{Y({...R}),$(!0)},children:[(0,b.jsx)(G.Plus,{className:"h-4 w-4 mr-1"}),n("settings.config.git.addRule")]}),(0,b.jsxs)("div",{className:"flex items-center justify-between pt-3",children:[(0,b.jsxs)(f.Button,{variant:"ghost",className:"text-muted-foreground",onClick:ah,children:[(0,b.jsx)(A.ChevronLeft,{className:"h-4 w-4 mr-1"}),n("onboarding.back")]}),(0,b.jsxs)(f.Button,{onClick:async()=>{V.length>0&&await (0,v.setConfigValue)("git.pathMappingRules",V),M(a=>a+1)},className:"px-5",children:[n("onboarding.step1.next"),(0,b.jsx)(B.ChevronRight,{className:"h-4 w-4 ml-1"})]})]})]}),4===L&&(0,b.jsx)(P,{username:N,onComplete:()=>m.replace("/workspaces")})]}),(0,b.jsx)("div",{className:"pt-6 text-xs text-muted-foreground",children:n("onboarding.stepIndicator").replace("{current}",String(L)).replace("{total}",String(4))})]})}),(0,b.jsx)(j.FolderBrowserDialog,{open:ad,onOpenChange:ae,onSelect:a=>{Y(b=>({...b,localPathTemplate:a})),ae(!1)}})]})}],163778)}];
1
+ module.exports=[163778,a=>{"use strict";var b=a.i(728778),c=a.i(374637),d=a.i(553798),e=a.i(940271),f=a.i(699570),g=a.i(866718),h=a.i(487410),i=a.i(785259),j=a.i(43775),k=a.i(368114);function l({className:a,size:c="default",...d}){return(0,b.jsx)("div",{"data-slot":"card","data-size":c,className:(0,k.cn)("group/card flex flex-col gap-4 overflow-hidden rounded-xl bg-card py-4 text-sm text-card-foreground ring-1 ring-foreground/10 has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl",a),...d})}function m({className:a,...c}){return(0,b.jsx)("div",{"data-slot":"card-content",className:(0,k.cn)("px-4 group-data-[size=sm]/card:px-3",a),...c})}var n=a.i(704494),o=a.i(668116),p=a.i(54384),q=a.i(648512),r=a.i(913284),s=a.i(468862),t=a.i(951192);function u({adapterType:a,adapterLabel:d,provider:e,hideHeader:g,onResult:h}){let[i,j]=(0,c.useState)(!1),[v,w]=(0,c.useState)(null),{t:x}=(0,t.useI18n)();async function y(){if(!i){j(!0),w(null);try{let b=await fetch("/api/adapters/test",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({adapterType:a,provider:e})}),c=await b.json();w(c),h?.(c)}catch{let a={ok:!1,checks:[{name:"network_error",passed:!1,message:"Network request failed"}]};w(a),h?.(a)}finally{j(!1)}}}return(0,b.jsxs)("div",{className:"space-y-4",children:[!g&&(0,b.jsxs)("div",{className:"flex items-center gap-3",children:[(0,b.jsx)("div",{className:"rounded-lg bg-emerald-100 dark:bg-emerald-900/30 p-2",children:(0,b.jsx)(q.Terminal,{className:"h-5 w-5 text-emerald-600 dark:text-emerald-400"})}),(0,b.jsxs)("div",{children:[(0,b.jsx)("h3",{className:"font-semibold",children:x("settings.aiTools.cliVerification")}),(0,b.jsx)("p",{className:"text-sm text-muted-foreground",children:x("settings.aiTools.cliVerificationDesc")})]})]}),(0,b.jsx)(l,{children:(0,b.jsxs)(m,{className:"p-6 space-y-4",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)("div",{children:d&&(0,b.jsx)("p",{className:"font-medium",children:d})}),(0,b.jsx)(f.Button,{onClick:y,disabled:i,variant:"outline",children:i?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(n.Loader2,{className:"h-4 w-4 animate-spin mr-2"}),x("settings.aiTools.testing")]}):x("settings.aiTools.testConnection")})]}),v&&(0,b.jsxs)("div",{className:(0,k.cn)("rounded-lg border p-4 space-y-3",v.ok?"bg-green-50 border-green-200 dark:bg-green-950/20 dark:border-green-800":"bg-red-50 border-red-200 dark:bg-red-950/20 dark:border-red-800"),children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[v.ok?(0,b.jsx)(r.CheckCircle2,{className:"h-4 w-4 text-green-600 dark:text-green-400"}):(0,b.jsx)(s.XCircle,{className:"h-4 w-4 text-red-600 dark:text-red-400"}),(0,b.jsx)("span",{className:(0,k.cn)("text-sm font-medium",v.ok?"text-green-700 dark:text-green-300":"text-red-700 dark:text-red-300"),children:x(v.ok?"settings.aiTools.testPassed":"settings.aiTools.testFailed")})]}),(0,b.jsx)("div",{className:"space-y-2",children:v.checks.map(c=>(0,b.jsxs)("div",{className:"flex items-start gap-2 text-sm",children:[c.passed?(0,b.jsx)(o.Check,{className:"h-4 w-4 text-green-500 mt-0.5 shrink-0"}):(0,b.jsx)(p.X,{className:"h-4 w-4 text-red-500 mt-0.5 shrink-0"}),(0,b.jsx)("span",{className:(0,k.cn)(c.passed?"text-green-700 dark:text-green-300":"text-red-700 dark:text-red-300"),children:c.message})]},`${a}-${c.name}`))})]})]})})]})}var v=a.i(406717),w=a.i(711796);let x=(0,w.default)("user",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]);var y=a.i(577565),z=a.i(264589),A=a.i(912868),B=a.i(10390),C=a.i(761052),D=a.i(86354);let E=(0,w.default)("monitor",[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]]),F=(0,w.default)("languages",[["path",{d:"m5 8 6 6",key:"1wu5hv"}],["path",{d:"m4 14 6-6 2-3",key:"1k1g8d"}],["path",{d:"M2 5h12",key:"or177f"}],["path",{d:"M7 2h1",key:"1t2jsx"}],["path",{d:"m22 22-5-10-5 10",key:"don7ne"}],["path",{d:"M14 18h6",key:"1m8k6r"}]]);var G=a.i(774881),H=a.i(975231),I=a.i(347165),J=a.i(963326),K=a.i(953093),L=a.i(549290),M=a.i(780410);let N=(0,M.createServerReference)("6088e818ca79d39a52dd0e1830e042ae320304ec98",M.callServer,void 0,M.findSourceMapURL,"completeOnboarding"),O=(0,M.createServerReference)("60179761a4d1a31997a44f5bb81c8b9b9d8d51193b",M.callServer,void 0,M.findSourceMapURL,"setOnboardingExtensions");function P({username:a,onComplete:d}){let{t:e}=(0,t.useI18n)(),g=(0,K.listExtensionMetadata)(),[h,i]=(0,c.useState)(()=>new Set(g.map(a=>a.id))),[j,k]=(0,c.useState)(!1),l=g.length,m=h.size;async function o(){k(!0);let b=Array.from(h),c=[];if(b.length>0)for(let a of(await Promise.all(b.map(async a=>{try{let b=await (0,L.installExtension)(a);return{id:a,success:b.success}}catch{return{id:a,success:!1}}}))))a.success&&c.push(a.id);await O(b,c),await N(a),k(!1),d()}return(0,b.jsxs)("div",{className:"space-y-6",children:[(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)("h2",{className:"text-xl font-semibold",children:e("onboarding.step4.title")}),(0,b.jsx)("p",{className:"text-sm text-muted-foreground",children:e("onboarding.step4.desc")})]}),(0,b.jsx)("div",{className:"space-y-2",children:g.map(a=>{let c=a.icon,d=h.has(a.id);return(0,b.jsxs)("label",{className:"flex items-start gap-3 rounded-lg border border-border bg-background p-3 cursor-pointer hover:bg-accent/50 transition-colors",children:[(0,b.jsx)("input",{type:"checkbox",checked:d,onChange:()=>{var b;return b=a.id,void i(a=>{let c=new Set(a);return c.has(b)?c.delete(b):c.add(b),c})},disabled:j,className:"mt-0.5 h-4 w-4 cursor-pointer accent-primary"}),(0,b.jsxs)("div",{className:"flex flex-1 items-start gap-3 min-w-0",children:[(0,b.jsx)("div",{className:"flex h-8 w-8 shrink-0 items-center justify-center rounded-md bg-muted",children:(0,b.jsx)(c,{className:"h-4 w-4 text-muted-foreground"})}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,b.jsx)("span",{className:"text-sm font-medium",children:a.name}),(0,b.jsxs)("span",{className:"shrink-0 text-xs text-muted-foreground",children:["~",a.sizeMB," MB"]})]}),(0,b.jsx)("p",{className:"mt-0.5 text-xs text-muted-foreground",children:a.description}),(0,b.jsxs)("a",{href:a.homepageUrl,target:"_blank",rel:"noopener noreferrer",onClick:a=>a.stopPropagation(),className:"mt-1 inline-flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground",children:[(0,b.jsx)(J.ExternalLink,{className:"h-3 w-3"}),e("settings.extensions.visitHomepage")]})]})]})]},a.id)})}),m<l&&(0,b.jsx)("p",{className:"text-xs text-muted-foreground italic",children:e("onboarding.step4.skipHint")}),(0,b.jsx)("div",{className:"flex justify-end",children:(0,b.jsx)(f.Button,{onClick:o,disabled:j,children:j?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(n.Loader2,{className:"h-3.5 w-3.5 animate-spin"}),e("onboarding.step4.installing")]}):0===m?e("onboarding.step4.continueWithoutInstall"):e("onboarding.step4.continue")})})]})}function Q({step:a}){let c=[x,q.Terminal,y.GitBranch,z.Package][a-1]??x,d=["Profile","Connect","Configure","Extensions"][a-1]??"";return(0,b.jsxs)("div",{className:"relative h-full w-full overflow-hidden",children:[(0,b.jsx)("div",{className:"absolute inset-0 opacity-[0.07] text-white",style:{backgroundImage:"radial-gradient(circle, currentColor 1px, transparent 1px)",backgroundSize:"24px 24px"}}),(0,b.jsx)("div",{className:"absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 rounded-full",style:{width:"380px",height:"380px",background:"radial-gradient(circle, oklch(0.80 0.14 75 / 0.25) 0%, oklch(0.80 0.14 75 / 0.08) 45%, transparent 70%)",animation:"ob-pulse 6s ease-in-out infinite"}}),(0,b.jsx)("div",{className:"absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 rounded-full border border-amber-400/25",style:{width:"260px",height:"260px",animation:"ob-spin 20s linear infinite"},children:(0,b.jsx)("div",{className:"absolute -top-1.5 left-1/2 -translate-x-1/2 h-3 w-3 rounded-full bg-amber-400",style:{boxShadow:"0 0 16px oklch(0.80 0.14 75 / 0.7)"}})}),(0,b.jsxs)("div",{className:"absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 rounded-full border border-amber-400/15",style:{width:"380px",height:"380px",animation:"ob-spin 30s linear infinite reverse"},children:[(0,b.jsx)("div",{className:"absolute -top-1 left-1/2 -translate-x-1/2 h-2 w-2 rounded-full bg-amber-400/70"}),(0,b.jsx)("div",{className:"absolute -bottom-1 left-1/2 -translate-x-1/2 h-1.5 w-1.5 rounded-full bg-amber-400/50"})]}),(0,b.jsx)("svg",{className:"absolute",style:{top:"18%",right:"22%",animation:"ob-float 8s ease-in-out infinite"},width:"44",height:"50",viewBox:"0 0 40 46",fill:"none",children:(0,b.jsx)("path",{d:"M20 1 L38 12 L38 34 L20 45 L2 34 L2 12 Z",stroke:"oklch(0.80 0.14 75 / 0.4)",strokeWidth:"1.5",fill:"oklch(0.80 0.14 75 / 0.06)"})}),(0,b.jsx)("svg",{className:"absolute",style:{bottom:"22%",left:"18%",animation:"ob-float 10s ease-in-out 2s infinite"},width:"32",height:"36",viewBox:"0 0 40 46",fill:"none",children:(0,b.jsx)("path",{d:"M20 1 L38 12 L38 34 L20 45 L2 34 L2 12 Z",stroke:"oklch(0.80 0.14 75 / 0.3)",strokeWidth:"1.5",fill:"oklch(0.80 0.14 75 / 0.05)"})}),(0,b.jsx)("div",{className:"absolute h-3.5 w-3.5 rounded-full bg-amber-400/40",style:{top:"30%",left:"28%",animation:"ob-float 7s ease-in-out 1s infinite"}}),(0,b.jsx)("div",{className:"absolute h-2.5 w-2.5 rounded-full bg-amber-400/30",style:{top:"65%",right:"30%",animation:"ob-float 9s ease-in-out 3s infinite"}}),(0,b.jsx)("div",{className:"absolute h-2 w-2 rounded-full bg-amber-400/20",style:{top:"45%",right:"15%",animation:"ob-float 6s ease-in-out 0.5s infinite"}}),(0,b.jsxs)("svg",{className:"absolute inset-0 h-full w-full text-white opacity-[0.12]",children:[(0,b.jsx)("line",{x1:"30%",y1:"25%",x2:"70%",y2:"45%",stroke:"currentColor",strokeWidth:"1",strokeDasharray:"4 6",style:{animation:"ob-dash 12s linear infinite"}}),(0,b.jsx)("line",{x1:"65%",y1:"30%",x2:"35%",y2:"70%",stroke:"currentColor",strokeWidth:"1",strokeDasharray:"4 6",style:{animation:"ob-dash 15s linear infinite reverse"}})]}),(0,b.jsx)("div",{className:"absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 flex items-center justify-center",children:(0,b.jsx)("div",{className:"flex h-16 w-16 items-center justify-center rounded-2xl border border-amber-400/35 bg-amber-500/10 backdrop-blur-sm transition-all duration-700",style:{boxShadow:"0 0 50px oklch(0.80 0.14 75 / 0.2)"},children:(0,b.jsx)(c,{className:"h-7 w-7 text-amber-400"})})}),(0,b.jsx)("div",{className:"absolute left-1/2 top-1/2 -translate-x-1/2 translate-y-12 text-center",children:(0,b.jsx)("p",{className:"text-[11px] font-medium tracking-widest uppercase text-amber-400/60",children:d})})]})}let R={host:"",ownerMatch:"*",localPathTemplate:""};a.s(["default",0,function(){let a,k,l,m=(0,d.useRouter)(),{t:n,locale:p,setLocale:r}=(0,t.useI18n)(),{theme:s,setTheme:w}=(0,e.useTheme)(),[J,K]=(0,c.useState)(!1),[L,M]=(0,c.useState)(1),[N,O]=(0,c.useState)(""),[S,T]=(0,c.useState)({}),U=Object.values(S).some(a=>a.ok),[V,W]=(0,c.useState)([]),[X,Y]=(0,c.useState)({...R}),[Z,$]=(0,c.useState)(!0),[_,aa]=(0,c.useState)(0),[ab,ac]=(0,c.useState)(!1),[ad,ae]=(0,c.useState)(!1);(0,c.useEffect)(()=>K(!0),[]);let af=[{value:"light",label:(0,b.jsx)(C.Sun,{className:"h-4 w-4"})},{value:"dark",label:(0,b.jsx)(D.Moon,{className:"h-4 w-4"})},{value:"system",label:(0,b.jsx)(E,{className:"h-4 w-4"})}];function ag(){M(a=>a+1)}function ah(){M(a=>Math.max(1,a-1))}let ai=[{icon:x,label:n("onboarding.step1.title")},{icon:q.Terminal,label:n("onboarding.step2.title")},{icon:y.GitBranch,label:n("onboarding.step3.title")},{icon:z.Package,label:n("onboarding.step4.title")}];return(0,b.jsxs)("div",{className:"flex h-screen bg-background",children:[(0,b.jsx)("div",{className:"hidden xl:block xl:w-3/5 border-r border-border/50 bg-[oklch(0.13_0.006_260)]",children:(0,b.jsx)(Q,{step:L})}),(0,b.jsx)("div",{className:"flex w-full flex-col items-center px-8 pt-[10vh] pb-10 xl:w-2/5 xl:px-16 overflow-y-auto",children:(0,b.jsxs)("div",{className:"w-full max-w-lg space-y-6",children:[(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,b.jsx)("img",{src:"/logo.png",alt:"Tower",className:"h-8 w-8 rounded-lg"}),(0,b.jsx)("span",{className:"text-lg font-semibold tracking-tight",children:"Tower"})]}),(0,b.jsx)("div",{className:"flex items-center gap-1.5",children:ai.map((a,c)=>{let d=c+1,e=d===L,f=d<L,g=a.icon;return(0,b.jsxs)("div",{className:"flex items-center gap-1.5 shrink-0",children:[c>0&&(0,b.jsx)("div",{className:`h-px w-4 transition-colors duration-500 ${f?"bg-primary":"bg-border"}`}),(0,b.jsxs)("div",{className:`flex items-center gap-1 shrink-0 rounded-full px-2 py-1 text-[11px] font-medium whitespace-nowrap transition-all duration-500 ${e?"bg-primary text-primary-foreground shadow-sm":f?"bg-primary/10 text-primary":"bg-muted text-muted-foreground"}`,children:[f?(0,b.jsx)(o.Check,{className:"h-3 w-3 shrink-0"}):(0,b.jsx)(g,{className:"h-3 w-3 shrink-0"}),(0,b.jsx)("span",{children:a.label})]})]},c)})})]}),(0,b.jsxs)("div",{children:[1===L&&(0,b.jsxs)("div",{className:"space-y-7 animate-in fade-in slide-in-from-left-4 duration-500",children:[(0,b.jsxs)("div",{className:"space-y-1.5",children:[(0,b.jsx)("h1",{className:"text-2xl font-bold tracking-tight",children:n("onboarding.step1.title")}),(0,b.jsx)("p",{className:"text-sm text-muted-foreground leading-relaxed",children:n("onboarding.step1.desc")})]}),(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)("label",{htmlFor:"onboarding-username",className:"text-sm font-medium",children:n("onboarding.step1.usernameLabel")}),(0,b.jsx)("input",{id:"onboarding-username",type:"text",value:N,onChange:a=>O(a.target.value),placeholder:n("onboarding.step1.usernamePlaceholder"),className:"flex h-10 w-full rounded-lg border border-input bg-transparent px-3 py-2 text-sm shadow-sm transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/50",maxLength:64,autoFocus:!0,autoComplete:"username"})]}),(0,b.jsxs)("div",{className:"grid grid-cols-2 gap-6",children:[(0,b.jsxs)("div",{className:"space-y-2.5",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(F,{className:"h-3.5 w-3.5 text-muted-foreground"}),(0,b.jsx)("label",{className:"text-sm font-medium",children:n("settings.language")})]}),(0,b.jsx)(h.SegmentedControl,{options:[{value:"zh",label:"中文"},{value:"en",label:"English"}].map(a=>({value:a.value,label:a.label})),value:p,onChange:a=>r(a)})]}),(0,b.jsxs)("div",{className:"space-y-2.5",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(C.Sun,{className:"h-3.5 w-3.5 text-muted-foreground"}),(0,b.jsx)("label",{className:"text-sm font-medium",children:n("settings.theme")})]}),J?(0,b.jsx)(h.SegmentedControl,{options:af.map(a=>({value:a.value,label:a.label})),value:s??"system",onChange:a=>w(a)}):(0,b.jsx)("div",{className:"inline-flex h-8 rounded-md border border-border bg-muted p-1 gap-1 w-[120px]"})]})]}),(0,b.jsx)("div",{className:"flex justify-end pt-3",children:(0,b.jsxs)(f.Button,{onClick:ag,disabled:0===N.trim().length,className:"px-5",children:[n("onboarding.step1.next"),(0,b.jsx)(B.ChevronRight,{className:"h-4 w-4 ml-1"})]})})]}),2===L&&(0,b.jsxs)("div",{className:"space-y-7 animate-in fade-in slide-in-from-left-4 duration-500",children:[(0,b.jsxs)("div",{className:"space-y-1.5",children:[(0,b.jsx)("h1",{className:"text-2xl font-bold tracking-tight",children:n("onboarding.step2.title")}),(0,b.jsx)("p",{className:"text-sm text-muted-foreground leading-relaxed",children:n("onboarding.step2.desc")})]}),(0,b.jsx)(u,{adapterType:"claude_code",adapterLabel:"Claude CLI",provider:"claude",onResult:a=>T(b=>({...b,claude:a}))}),(0,b.jsx)(u,{adapterType:"codex_cli",adapterLabel:"Codex CLI",provider:"codex",hideHeader:!0,onResult:a=>T(b=>({...b,codex:a}))}),(0,b.jsxs)("div",{className:"flex items-center justify-between pt-3",children:[(0,b.jsxs)(f.Button,{variant:"ghost",className:"text-muted-foreground",onClick:ah,children:[(0,b.jsx)(A.ChevronLeft,{className:"h-4 w-4 mr-1"}),n("onboarding.back")]}),(0,b.jsxs)(f.Button,{onClick:ag,disabled:!U,className:"px-5",children:[n("onboarding.step1.next"),(0,b.jsx)(B.ChevronRight,{className:"h-4 w-4 ml-1"})]})]})]}),3===L&&(0,b.jsxs)("div",{className:"space-y-5 animate-in fade-in slide-in-from-left-4 duration-500",children:[(0,b.jsxs)("div",{className:"space-y-1.5",children:[(0,b.jsx)("h1",{className:"text-2xl font-bold tracking-tight",children:n("onboarding.step3.title")}),(0,b.jsx)("p",{className:"text-sm text-muted-foreground leading-relaxed",children:n("onboarding.step3.desc")})]}),V.length>0&&(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)("p",{className:"text-xs font-medium text-muted-foreground",children:n("onboarding.step3.added").replace("{count}",String(V.length))}),V.map(a=>(0,b.jsxs)("div",{className:"flex items-center justify-between rounded-lg border border-border bg-muted/30 px-3 py-2",children:[(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsxs)("p",{className:"text-sm font-medium truncate",children:[a.host,(0,b.jsx)("span",{className:"text-muted-foreground",children:"*"!==a.ownerMatch?` / ${a.ownerMatch}`:""})]}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground font-mono truncate",children:a.localPathTemplate})]}),(0,b.jsx)(f.Button,{variant:"ghost",size:"icon",className:"shrink-0 text-muted-foreground hover:text-destructive",onClick:()=>{var b;return b=a.id,void W(a=>a.filter(a=>a.id!==b))},children:(0,b.jsx)(H.Trash2,{className:"h-3.5 w-3.5"})})]},a.id))]}),Z?(0,b.jsxs)("div",{className:"space-y-3 rounded-lg border border-border p-4",children:[(0,b.jsxs)("div",{className:"space-y-1.5",children:[(0,b.jsx)("label",{className:"text-xs font-medium",children:n("onboarding.step3.hostLabel")}),(0,b.jsx)(g.Input,{value:X.host,onChange:a=>Y(b=>({...b,host:a.target.value})),placeholder:n("onboarding.step3.hostPlaceholder"),className:"h-9",autoFocus:!0})]}),(0,b.jsxs)("div",{className:"space-y-1.5",children:[(0,b.jsx)("label",{className:"text-xs font-medium",children:n("onboarding.step3.ownerLabel")}),(0,b.jsx)(g.Input,{value:X.ownerMatch,onChange:a=>Y(b=>({...b,ownerMatch:a.target.value})),placeholder:n("onboarding.step3.ownerPlaceholder"),className:"h-9"})]}),(0,b.jsxs)("div",{className:"space-y-1.5",children:[(0,b.jsx)("label",{className:"block text-xs font-medium",children:n("onboarding.step3.pathLabel")}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(g.Input,{value:X.localPathTemplate,onChange:a=>Y(b=>({...b,localPathTemplate:a.target.value})),placeholder:n("onboarding.step3.pathPlaceholder"),className:"h-9 font-mono text-xs flex-1"}),(0,b.jsxs)(i.Tooltip,{children:[(0,b.jsx)(i.TooltipTrigger,{render:(0,b.jsx)(f.Button,{variant:ab?"default":"outline",size:"sm",type:"button",onClick:()=>{ac(a=>(a||aa(2),!a))},className:"shrink-0 font-mono",children:"{path}"})}),(0,b.jsx)(i.TooltipContent,{side:"top",className:"max-w-xs",children:(0,b.jsxs)("div",{className:"space-y-1 text-xs",children:[(0,b.jsx)("div",{className:"font-medium",children:n("settings.config.git.pathTooltipTitle")}),(0,b.jsx)("div",{className:"opacity-80",children:n("settings.config.git.pathTooltipDetail")})]})})]}),(0,b.jsxs)(i.Tooltip,{children:[(0,b.jsx)(i.TooltipTrigger,{render:(0,b.jsx)(f.Button,{variant:"outline",size:"icon",type:"button",onClick:()=>ae(!0),children:(0,b.jsx)(I.FolderOpen,{className:"h-4 w-4"})})}),(0,b.jsx)(i.TooltipContent,{children:n("settings.config.git.pickFolder")})]})]}),(0,b.jsx)("p",{className:"text-[11px] text-muted-foreground",children:n(ab?"onboarding.step3.pathHintFull":"onboarding.step3.pathHintRepo")})]}),X.localPathTemplate&&(a=X.localPathTemplate.trim().replace(/\/+$/,""),k=ab?`${a}/{path}`:a,l=[{label:"GitHub SSH",url:"git@github.com:user/my-app.git"},{label:"GitHub HTTPS",url:"https://github.com/user/my-app.git"},{label:"GitLab Subgroup",url:"https://gitlab.com/org/team/sub/my-api.git"}],(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)("label",{className:"text-xs font-medium",children:n("onboarding.step3.previewLabel")}),(0,b.jsx)("div",{className:"flex gap-1 flex-wrap",children:l.map((a,c)=>(0,b.jsx)("button",{type:"button",onClick:()=>aa(c),className:`rounded-md px-2 py-1 text-[11px] font-medium transition-colors ${_===c?"bg-primary text-primary-foreground":"bg-muted text-muted-foreground hover:text-foreground"}`,children:a.label},c))}),(0,b.jsxs)("div",{className:"rounded-md bg-muted/50 px-3 py-2 space-y-1",children:[(0,b.jsx)("p",{className:"font-mono text-[11px] text-muted-foreground truncate",children:l[_].url}),(0,b.jsxs)("p",{className:"font-mono text-xs",children:[(0,b.jsx)("span",{className:"text-muted-foreground",children:"→ "}),(0,b.jsx)("span",{className:"text-primary",children:function(a,b){if(!a||!b)return"";let c=b.trim(),d=[],e=c.match(/^git@[^:]+:(.+)$/);if(e)d=e[1].replace(/\.git\/?$/,"").split("/").filter(Boolean);else try{let a=new URL(c);d=decodeURIComponent(a.pathname).replace(/\.git\/?$/,"").split("/").filter(Boolean)}catch{return""}if(!d.length)return"";let f=d[0],g=d[d.length-1],h=d.join("/");if(a.includes("{path}"))return a.replace("{path}",h).replace("{owner}",f).replace("{repo}",g).replace(/\/+$/,"");let i=a.replace("{owner}",f).replace("{repo}","").replace(/\/+$/,"");return`${i}/${g}`}(k,l[_].url)})]})]})]})),(0,b.jsxs)("div",{className:"flex justify-end gap-2 pt-1",children:[V.length>0&&(0,b.jsx)(f.Button,{variant:"ghost",onClick:()=>$(!1),children:n("settings.config.git.cancel")}),(0,b.jsxs)(f.Button,{onClick:function(){if(!X.host.trim()||!X.localPathTemplate.trim())return;let a=X.localPathTemplate.trim().replace(/\/+$/,""),b=ab?`${a}/{path}`:a,c={id:crypto.randomUUID(),host:X.host.trim(),ownerMatch:X.ownerMatch.trim()||"*",localPathTemplate:b,priority:V.length};W(a=>[...a,c]),Y({...R}),ac(!1),$(!1)},disabled:!X.host.trim()||!X.localPathTemplate.trim(),children:[(0,b.jsx)(o.Check,{className:"h-4 w-4 mr-1"}),n("settings.config.git.save")]})]})]}):(0,b.jsxs)(f.Button,{variant:"outline",onClick:()=>{Y({...R}),$(!0)},children:[(0,b.jsx)(G.Plus,{className:"h-4 w-4 mr-1"}),n("settings.config.git.addRule")]}),(0,b.jsxs)("div",{className:"flex items-center justify-between pt-3",children:[(0,b.jsxs)(f.Button,{variant:"ghost",className:"text-muted-foreground",onClick:ah,children:[(0,b.jsx)(A.ChevronLeft,{className:"h-4 w-4 mr-1"}),n("onboarding.back")]}),(0,b.jsxs)(f.Button,{onClick:async()=>{V.length>0&&await (0,v.setConfigValue)("git.pathMappingRules",V),M(a=>a+1)},className:"px-5",children:[n("onboarding.step1.next"),(0,b.jsx)(B.ChevronRight,{className:"h-4 w-4 ml-1"})]})]})]}),4===L&&(0,b.jsx)(P,{username:N,onComplete:()=>m.replace("/workspaces")})]}),(0,b.jsx)("div",{className:"pt-6 text-xs text-muted-foreground",children:n("onboarding.stepIndicator").replace("{current}",String(L)).replace("{total}",String(4))})]})}),(0,b.jsx)(j.FolderBrowserDialog,{open:ad,onOpenChange:ae,onSelect:a=>{Y(b=>({...b,localPathTemplate:a})),ae(!1)}})]})}],163778)}];
2
2
 
3
3
  //# sourceMappingURL=src_app_onboarding_page_tsx_0xf7hpz._.js.map