tower-studio 0.2.4 → 0.2.6

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 (263) 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 +49 -49
  13. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  14. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  15. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  16. package/.next/standalone/.next/server/app/_not-found.rsc +14 -14
  17. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +14 -14
  18. package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
  19. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +9 -9
  20. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  21. package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  22. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  23. package/.next/standalone/.next/server/app/api/adapters/test/route.js +1 -1
  24. package/.next/standalone/.next/server/app/api/adapters/test/route.js.nft.json +1 -1
  25. package/.next/standalone/.next/server/app/api/browse-fs/route.js.nft.json +1 -1
  26. package/.next/standalone/.next/server/app/api/files/assets/[projectId]/[filename]/route.js.nft.json +1 -1
  27. package/.next/standalone/.next/server/app/api/git/route.js.nft.json +1 -1
  28. package/.next/standalone/.next/server/app/api/internal/assets/[projectId]/[filename]/route.js.nft.json +1 -1
  29. package/.next/standalone/.next/server/app/api/internal/assets/reveal/route.js.nft.json +1 -1
  30. package/.next/standalone/.next/server/app/api/internal/assistant/attachments/route.js.nft.json +1 -1
  31. package/.next/standalone/.next/server/app/api/internal/assistant/chat/route.js +1 -1
  32. package/.next/standalone/.next/server/app/api/internal/assistant/chat/route.js.nft.json +1 -1
  33. package/.next/standalone/.next/server/app/api/internal/assistant/route.js +1 -1
  34. package/.next/standalone/.next/server/app/api/internal/assistant/route.js.nft.json +1 -1
  35. package/.next/standalone/.next/server/app/api/internal/assistant/sessions/route.js +1 -1
  36. package/.next/standalone/.next/server/app/api/internal/assistant/sessions/route.js.nft.json +1 -1
  37. package/.next/standalone/.next/server/app/api/internal/backup/import/route.js.nft.json +1 -1
  38. package/.next/standalone/.next/server/app/api/internal/cache/[...segments]/route.js.nft.json +1 -1
  39. package/.next/standalone/.next/server/app/api/internal/hooks/install/route.js +1 -1
  40. package/.next/standalone/.next/server/app/api/internal/hooks/install/route.js.nft.json +1 -1
  41. package/.next/standalone/.next/server/app/api/internal/hooks/stop/route.js.nft.json +1 -1
  42. package/.next/standalone/.next/server/app/api/internal/hooks/upload/route.js.nft.json +1 -1
  43. package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/buffer/route.js.nft.json +1 -1
  44. package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/input/route.js.nft.json +1 -1
  45. package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/start/route.js +1 -1
  46. package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/start/route.js.nft.json +1 -1
  47. package/.next/standalone/.next/server/app/api/tasks/[taskId]/diff/route.js.nft.json +1 -1
  48. package/.next/standalone/.next/server/app/api/tasks/[taskId]/merge/route.js.nft.json +1 -1
  49. package/.next/standalone/.next/server/app/index.html +1 -1
  50. package/.next/standalone/.next/server/app/index.rsc +14 -14
  51. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  52. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +14 -14
  53. package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +4 -4
  54. package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +9 -9
  55. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  56. package/.next/standalone/.next/server/app/missions/page/react-loadable-manifest.json +1 -1
  57. package/.next/standalone/.next/server/app/missions/page/server-reference-manifest.json +83 -83
  58. package/.next/standalone/.next/server/app/missions/page.js +1 -1
  59. package/.next/standalone/.next/server/app/missions/page.js.nft.json +1 -1
  60. package/.next/standalone/.next/server/app/missions/page_client-reference-manifest.js +1 -1
  61. package/.next/standalone/.next/server/app/onboarding/page/react-loadable-manifest.json +1 -1
  62. package/.next/standalone/.next/server/app/onboarding/page/server-reference-manifest.json +49 -49
  63. package/.next/standalone/.next/server/app/onboarding/page.js.nft.json +1 -1
  64. package/.next/standalone/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  65. package/.next/standalone/.next/server/app/onboarding.html +1 -1
  66. package/.next/standalone/.next/server/app/onboarding.rsc +16 -16
  67. package/.next/standalone/.next/server/app/onboarding.segments/_full.segment.rsc +16 -16
  68. package/.next/standalone/.next/server/app/onboarding.segments/_head.segment.rsc +4 -4
  69. package/.next/standalone/.next/server/app/onboarding.segments/_index.segment.rsc +9 -9
  70. package/.next/standalone/.next/server/app/onboarding.segments/_tree.segment.rsc +1 -1
  71. package/.next/standalone/.next/server/app/onboarding.segments/onboarding/__PAGE__.segment.rsc +4 -4
  72. package/.next/standalone/.next/server/app/onboarding.segments/onboarding.segment.rsc +3 -3
  73. package/.next/standalone/.next/server/app/page/react-loadable-manifest.json +1 -1
  74. package/.next/standalone/.next/server/app/page/server-reference-manifest.json +49 -49
  75. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  76. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  77. package/.next/standalone/.next/server/app/settings/page/react-loadable-manifest.json +1 -1
  78. package/.next/standalone/.next/server/app/settings/page/server-reference-manifest.json +62 -62
  79. package/.next/standalone/.next/server/app/settings/page.js +1 -1
  80. package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
  81. package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  82. package/.next/standalone/.next/server/app/settings.html +1 -1
  83. package/.next/standalone/.next/server/app/settings.rsc +16 -16
  84. package/.next/standalone/.next/server/app/settings.segments/_full.segment.rsc +16 -16
  85. package/.next/standalone/.next/server/app/settings.segments/_head.segment.rsc +4 -4
  86. package/.next/standalone/.next/server/app/settings.segments/_index.segment.rsc +9 -9
  87. package/.next/standalone/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
  88. package/.next/standalone/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +4 -4
  89. package/.next/standalone/.next/server/app/settings.segments/settings.segment.rsc +3 -3
  90. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/archive/page/react-loadable-manifest.json +1 -1
  91. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/archive/page/server-reference-manifest.json +104 -104
  92. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/archive/page.js.nft.json +1 -1
  93. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/archive/page_client-reference-manifest.js +1 -1
  94. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/assets/page/react-loadable-manifest.json +1 -1
  95. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/assets/page/server-reference-manifest.json +84 -84
  96. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/assets/page.js.nft.json +1 -1
  97. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/assets/page_client-reference-manifest.js +1 -1
  98. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/notes/page/react-loadable-manifest.json +1 -1
  99. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/notes/page/server-reference-manifest.json +79 -79
  100. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/notes/page.js.nft.json +1 -1
  101. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/notes/page_client-reference-manifest.js +1 -1
  102. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/page/react-loadable-manifest.json +1 -1
  103. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/page/server-reference-manifest.json +78 -78
  104. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/page.js +1 -1
  105. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/page.js.nft.json +1 -1
  106. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/page_client-reference-manifest.js +1 -1
  107. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page/react-loadable-manifest.json +1 -1
  108. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page/server-reference-manifest.json +49 -49
  109. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page.js.nft.json +1 -1
  110. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page_client-reference-manifest.js +1 -1
  111. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/versions/page/react-loadable-manifest.json +1 -1
  112. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/versions/page/server-reference-manifest.json +84 -84
  113. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/versions/page.js.nft.json +1 -1
  114. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/versions/page_client-reference-manifest.js +1 -1
  115. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page/react-loadable-manifest.json +2 -2
  116. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page/server-reference-manifest.json +96 -96
  117. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page.js +1 -1
  118. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page.js.nft.json +1 -1
  119. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page_client-reference-manifest.js +1 -1
  120. package/.next/standalone/.next/server/app/workspaces/page/react-loadable-manifest.json +1 -1
  121. package/.next/standalone/.next/server/app/workspaces/page/server-reference-manifest.json +63 -63
  122. package/.next/standalone/.next/server/app/workspaces/page.js.nft.json +1 -1
  123. package/.next/standalone/.next/server/app/workspaces/page_client-reference-manifest.js +1 -1
  124. package/.next/standalone/.next/server/chunks/0se9_next_dist_esm_build_templates_app-route_0hrprmi.js +1 -1
  125. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0.9mj3v._.js +2 -2
  126. package/.next/standalone/.next/server/chunks/[root-of-the-server]__05353yb._.js +1 -1
  127. package/.next/standalone/.next/server/chunks/[root-of-the-server]__05eviiz._.js +2 -2
  128. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__07h7qz8._.js → [root-of-the-server]__09h3i6m._.js} +2 -2
  129. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0_a8-jq._.js +1 -1
  130. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0dsv3wl._.js +4 -0
  131. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0c1g5im._.js → [root-of-the-server]__0j~qauc._.js} +2 -2
  132. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0p_ii~p._.js +3 -0
  133. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0puw1af._.js +2 -2
  134. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0ntb7n~._.js → [root-of-the-server]__0qie1gs._.js} +3 -3
  135. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0w2w3x.._.js +20 -0
  136. package/.next/standalone/.next/server/chunks/{_0u-~jqd._.js → _0trog_r._.js} +1 -1
  137. package/.next/standalone/.next/server/chunks/{src_0o_27yu._.js → src_01ztl3b._.js} +2 -2
  138. package/.next/standalone/.next/server/chunks/src_lib_0ba0ntr._.js +1 -1
  139. package/.next/standalone/.next/server/chunks/src_lib_ai_0q-~me1._.js +1 -1
  140. package/.next/standalone/.next/server/chunks/src_lib_ai_0xx6y51._.js +1 -1
  141. package/.next/standalone/.next/server/chunks/src_lib_ai_providers_index_ts_0.y.3vp._.js +1 -1
  142. package/.next/standalone/.next/server/chunks/ssr/0iu._[workspaceId]_projects_[projectId]_versions_version-timeline-client_tsx_07o_kyi._.js +1 -1
  143. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0-yld.d._.js +3 -0
  144. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0.5rcav._.js +1 -1
  145. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__006_qh0._.js +1 -1
  146. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__02px.0y._.js +1 -1
  147. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__03ebsif._.js +3 -3
  148. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__05kq890._.js +1 -1
  149. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0-xoiaj._.js → [root-of-the-server]__079.nog._.js} +2 -2
  150. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0rp_09h._.js → [root-of-the-server]__0c4.z1s._.js} +2 -2
  151. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0gaa~xc._.js +1 -1
  152. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0gcf4k3._.js +1 -1
  153. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0ghfuuv._.js +1 -1
  154. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0n8jy_r._.js → [root-of-the-server]__0k3isnk._.js} +2 -2
  155. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0l43.5g._.js +1 -1
  156. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0ty48g5._.js → [root-of-the-server]__0nwue~m._.js} +2 -2
  157. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0ps55l6._.js +1 -1
  158. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0q7ho54._.js +1 -1
  159. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0qe~p-n._.js +1 -1
  160. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0ribsk4._.js +1 -1
  161. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0tf4zp_._.js +1 -1
  162. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__00wymqa._.js → [root-of-the-server]__0vh-egg._.js} +2 -2
  163. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0wjg_.n._.js +1 -1
  164. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0wvyks.._.js +1 -1
  165. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0y.nw7l._.js +1 -1
  166. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0zbmoit._.js +1 -1
  167. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__11bequ2._.js +1 -1
  168. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__11ko84j._.js +1 -1
  169. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__12pnl8n._.js +1 -1
  170. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0cdz55-._.js → [root-of-the-server]__13k4vkg._.js} +2 -2
  171. package/.next/standalone/.next/server/chunks/ssr/{_008xdn0._.js → _0-pqb_c._.js} +3 -3
  172. package/.next/standalone/.next/server/chunks/ssr/{_0p8de_7._.js → _00d1y-k._.js} +2 -2
  173. package/.next/standalone/.next/server/chunks/ssr/{_0xp-.5k._.js → _03xwww2._.js} +2 -2
  174. package/.next/standalone/.next/server/chunks/ssr/{_0qu2yg4._.js → _049.box._.js} +1 -1
  175. package/.next/standalone/.next/server/chunks/ssr/_04b71ua._.js +1 -1
  176. package/.next/standalone/.next/server/chunks/ssr/{_0w_jwhc._.js → _05-r00y._.js} +3 -3
  177. package/.next/standalone/.next/server/chunks/ssr/{_0_obsmv._.js → _054w82_._.js} +2 -2
  178. package/.next/standalone/.next/server/chunks/ssr/_05h.8a~._.js +1 -1
  179. package/.next/standalone/.next/server/chunks/ssr/{_108e4..._.js → _086yn8o._.js} +1 -1
  180. package/.next/standalone/.next/server/chunks/ssr/{_0c-z9co._.js → _08t2xag._.js} +2 -2
  181. package/.next/standalone/.next/server/chunks/ssr/{_0cie3rm._.js → _0_gqtgq._.js} +1 -1
  182. package/.next/standalone/.next/server/chunks/ssr/_0_l8.dg._.js +1 -1
  183. package/.next/standalone/.next/server/chunks/ssr/{_0lul2~5._.js → _0_~ftjv._.js} +2 -2
  184. package/.next/standalone/.next/server/chunks/ssr/{_0a-rizg._.js → _0ah80pn._.js} +1 -1
  185. package/.next/standalone/.next/server/chunks/ssr/_0cj9a7y._.js +1 -1
  186. package/.next/standalone/.next/server/chunks/ssr/_0ds6nk2._.js +1 -1
  187. package/.next/standalone/.next/server/chunks/ssr/{_079ks~i._.js → _0ep3sg_._.js} +1 -1
  188. package/.next/standalone/.next/server/chunks/ssr/{_13l5s-p._.js → _0f8jvpw._.js} +1 -1
  189. package/.next/standalone/.next/server/chunks/ssr/{_0popc9v._.js → _0fri5n~._.js} +2 -2
  190. package/.next/standalone/.next/server/chunks/ssr/{_02_8bze._.js → _0h_~oum._.js} +3 -3
  191. package/.next/standalone/.next/server/chunks/ssr/{_07scffz._.js → _0i2usny._.js} +1 -1
  192. package/.next/standalone/.next/server/chunks/ssr/_0i4__mf._.js +1 -1
  193. package/.next/standalone/.next/server/chunks/ssr/_0ihq._v._.js +1 -1
  194. package/.next/standalone/.next/server/chunks/ssr/_0r9w-k8._.js +1 -1
  195. package/.next/standalone/.next/server/chunks/ssr/_0rbctq7._.js +1 -1
  196. package/.next/standalone/.next/server/chunks/ssr/{_0gc6xfk._.js → _0rfo51k._.js} +2 -2
  197. package/.next/standalone/.next/server/chunks/ssr/_0rt8hus._.js +1 -1
  198. package/.next/standalone/.next/server/chunks/ssr/{_0no3ok_._.js → _0vqyzrr._.js} +2 -2
  199. package/.next/standalone/.next/server/chunks/ssr/_0~80adm._.js +3 -3
  200. package/.next/standalone/.next/server/chunks/ssr/src_095o8x6._.js +1 -1
  201. package/.next/standalone/.next/server/chunks/ssr/src_13jha60._.js +1 -1
  202. package/.next/standalone/.next/server/chunks/ssr/src_actions_agent-actions_ts_0~wc.sy._.js +1 -1
  203. package/.next/standalone/.next/server/chunks/ssr/src_actions_file-actions_ts_0gcvqwm._.js +1 -1
  204. package/.next/standalone/.next/server/chunks/ssr/src_app_missions_missions-client_tsx_11429lj._.js +1 -1
  205. package/.next/standalone/.next/server/chunks/ssr/src_app_onboarding_page_tsx_0xf7hpz._.js +1 -1
  206. package/.next/standalone/.next/server/chunks/ssr/src_app_settings_page_tsx_0h9v7dr._.js +1 -1
  207. package/.next/standalone/.next/server/chunks/ssr/src_app_workspaces_[workspaceId]_assets_assets-page-client_tsx_0wyzpam._.js +1 -1
  208. package/.next/standalone/.next/server/chunks/ssr/src_app_workspaces_[workspaceId]_board-page-client_tsx_0gips66._.js +1 -1
  209. package/.next/standalone/.next/server/chunks/ssr/src_app_workspaces_[workspaceId]_tasks_[taskId]_task-page-client_tsx_02t7blt._.js +1 -1
  210. package/.next/standalone/.next/server/chunks/ssr/{src_lib_0h36tj.._.js → src_lib_08n755q._.js} +1 -1
  211. package/.next/standalone/.next/server/chunks/ssr/{src_lib_0h3ouzu._.js → src_lib_0tb2yya._.js} +1 -1
  212. package/.next/standalone/.next/server/chunks/ssr/{src_lib_0~jyveg._.js → src_lib_123jf_a._.js} +1 -1
  213. package/.next/standalone/.next/server/chunks/ssr/{src_lib_0~rxy~0._.js → src_lib_12ulcxj._.js} +1 -1
  214. package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
  215. package/.next/standalone/.next/server/pages/404.html +1 -1
  216. package/.next/standalone/.next/server/pages/500.html +1 -1
  217. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  218. package/.next/standalone/.next/server/server-reference-manifest.json +347 -347
  219. package/.next/standalone/.next/static/chunks/{06aef6liyecnz.js → 0.zipr1bga3lu.js} +1 -1
  220. package/.next/standalone/.next/static/chunks/037-verumdykv.js +5 -0
  221. package/.next/standalone/.next/static/chunks/04-7c5m91nvj1.js +1 -0
  222. package/.next/standalone/.next/static/chunks/06shpikm5rcmu.js +1 -0
  223. package/.next/standalone/.next/static/chunks/{0xt_3903v1zad.js → 07i~~ygu~oi26.js} +1 -1
  224. package/.next/standalone/.next/static/chunks/082cedbq4pp.-.js +1 -0
  225. package/.next/standalone/.next/static/chunks/089ktlh~nim1x.js +1 -0
  226. package/.next/standalone/.next/static/chunks/{0bswzaqeengiv.js → 0ee.~~ae-vl_q.js} +1 -1
  227. package/.next/standalone/.next/static/chunks/{030zalmk5.98l.js → 0fovq74l0wh7c.js} +1 -1
  228. package/.next/standalone/.next/static/chunks/{0uzgie3q9h20b.js → 0hxgzql5.szyz.js} +1 -1
  229. package/.next/standalone/.next/static/chunks/0jscst0zjd2az.js +1 -0
  230. package/.next/standalone/.next/static/chunks/{0t0pq7y~7s7j_.js → 0m2lubto0vt0x.js} +1 -1
  231. package/.next/standalone/.next/static/chunks/{0ptiiywcgt9lq.js → 0mfgulw-d49o9.js} +1 -1
  232. package/.next/standalone/.next/static/chunks/0m~ltp.wfnbf7.js +5 -0
  233. package/.next/standalone/.next/static/chunks/{0siyzg11n09zl.js → 0nrbltth-7m~e.js} +1 -1
  234. package/.next/standalone/.next/static/chunks/{0d.m9b-ln~cns.js → 0r7jm27~cp-vs.js} +1 -1
  235. package/.next/standalone/.next/static/chunks/0tk-ju9xhoh68.js +5 -0
  236. package/.next/standalone/.next/static/chunks/{0~zg.626i--lj.js → 0v9ahxdsn0mse.js} +1 -1
  237. package/.next/standalone/.next/static/chunks/0w9x-ap4dcwy..js +1 -0
  238. package/.next/standalone/.next/static/chunks/17cayeebhpt~w.js +2 -0
  239. package/.next/standalone/.next/static/chunks/186ahmq856rfj.js +1 -0
  240. package/.next/standalone/package.json +3 -1
  241. package/bin/tower.mjs +16 -0
  242. package/dist/mcp-server.cjs +12 -1
  243. package/package.json +3 -1
  244. package/prisma/pre-migration.sql +23 -0
  245. package/skills/tower/SKILL.md +381 -0
  246. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0-eibah._.js +0 -4
  247. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0_q8qjf._.js +0 -20
  248. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0vasg9u._.js +0 -3
  249. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0sw9hqr._.js +0 -3
  250. package/.next/standalone/.next/static/chunks/00kag1vn1xq-h.js +0 -1
  251. package/.next/standalone/.next/static/chunks/06b1pibint3_6.js +0 -5
  252. package/.next/standalone/.next/static/chunks/07h0wys36zya1.js +0 -1
  253. package/.next/standalone/.next/static/chunks/08qc-i9nlpeuj.js +0 -1
  254. package/.next/standalone/.next/static/chunks/0cgu7kw00ijog.js +0 -1
  255. package/.next/standalone/.next/static/chunks/0dbuddzi1ktpc.js +0 -5
  256. package/.next/standalone/.next/static/chunks/0dchz9lk.idgp.js +0 -1
  257. package/.next/standalone/.next/static/chunks/0f6q8.wnwub-h.js +0 -2
  258. package/.next/standalone/.next/static/chunks/0ji8xfnts~7s6.js +0 -1
  259. package/.next/standalone/.next/static/chunks/0zf927936chqj.js +0 -1
  260. package/.next/standalone/.next/static/chunks/12vd_.lx4r~dd.js +0 -5
  261. /package/.next/standalone/.next/static/{1lmBVxqYafZ25FnbSpFe2 → VGoiH5uRfCRm6SKXNPZoz}/_buildManifest.js +0 -0
  262. /package/.next/standalone/.next/static/{1lmBVxqYafZ25FnbSpFe2 → VGoiH5uRfCRm6SKXNPZoz}/_clientMiddlewareManifest.js +0 -0
  263. /package/.next/standalone/.next/static/{1lmBVxqYafZ25FnbSpFe2 → VGoiH5uRfCRm6SKXNPZoz}/_ssgManifest.js +0 -0
@@ -0,0 +1,381 @@
1
+ ---
2
+ name: tower
3
+ description: AI task orchestration platform — use Tower MCP tools to manage workspaces, projects, tasks, and monitor agent execution
4
+ ---
5
+
6
+ # Tower
7
+
8
+ Tower is an AI task orchestration platform. This skill teaches you how to use Tower's MCP tools to manage projects and tasks.
9
+
10
+ ## MCP Setup
11
+
12
+ Before using Tower tools, check if the `tower` MCP server is available. If tools like `list_workspaces` are not found, guide the user to configure MCP:
13
+
14
+ **Claude Code** — add to `~/.claude/settings.json`:
15
+ ```json
16
+ {
17
+ "mcpServers": {
18
+ "tower": {
19
+ "command": "npx",
20
+ "args": ["tsx", "<project-root>/src/mcp/index.ts"]
21
+ }
22
+ }
23
+ }
24
+ ```
25
+
26
+ **Other AI agents** — add the same config to your MCP client settings file.
27
+
28
+ After configuration, restart the AI session. The Tower tools will then be available.
29
+
30
+ ---
31
+
32
+ ## When to Use
33
+
34
+ Use Tower tools when the user wants to:
35
+ - View, create, or manage tasks and projects
36
+ - Check task execution status or progress
37
+ - Interact with a running task's terminal
38
+ - Search across workspaces, projects, or tasks
39
+ - Organize tasks with labels or status changes
40
+ - Get daily work summary or pending todo list
41
+ - Check what was done today or what's left to do
42
+
43
+ ---
44
+
45
+ ## Scenarios
46
+
47
+ ### "Show me my workspaces" / "List projects"
48
+
49
+ 1. Call `list_workspaces`
50
+ 2. If user asks about a specific workspace, call `list_projects` with the workspaceId
51
+ 3. Present results in a clean table format
52
+
53
+ ### "Create a task" / "Add a task for ..."
54
+
55
+ 1. Call `list_workspaces` to find the target workspace
56
+ 2. Call `list_projects` with workspaceId to find the target project
57
+ 3. Ask user to confirm the project (or infer from context)
58
+ 4. **Worktree mode**: default is direct mode (no branch isolation). If user says "use worktree", "-w", or "branch isolation", set `useWorktree: true`. Optionally pass `baseBranch` to specify which branch to check out from (e.g. `baseBranch: "develop"`). If `baseBranch` is omitted, the project's current git branch is auto-detected.
59
+ 5. **SubPath detection**: check the project description for directory structure hints (e.g. "monorepo: packages/web, packages/api"). If the task clearly belongs to a subdirectory, set `subPath` (e.g. "packages/web"). If unclear, omit it — it's optional.
60
+ 6. **References (any files/images)**: ALL user-provided files — including pasted screenshots, uploaded images, and local file paths — should be passed as `references: ["/path/to/file"]` on `create_task`. The tool copies files into the project asset library automatically.
61
+ - **Local file paths**: pass directly (e.g. `references: ["/path/to/doc.md", "/path/to/design.png"]`)
62
+ - **Pasted images with known paths**: if the platform provides file paths for pasted media (e.g. OpenClaw's `{{MediaPaths}}`, Claude Code temp files), pass those paths directly — they are local files
63
+ - **Base64 only (no file path)**: if you only have base64 data with no local path, upload first via `manage_assets` with `action: "upload"`, `projectId`, `base64`, `mimeType`. Get back `{ id: assetId, path }`. Then pass the returned `path` in `references` — `create_task` will automatically copy and link the asset, no separate `link_task` needed
64
+ - **`link_task` only for retroactive linking**: use `manage_assets` with `action: "link_task"` only when you need to associate existing assets with an already-created task (e.g. user wants to add references after task creation)
65
+ 7. Call `create_task` with projectId, title, and optional description/priority/labelIds/subPath/useWorktree/baseBranch/references
66
+ 8. `autoStart` defaults to true — task will be created and immediately started. If user says "don't start", "just create", or "-nostart", set `autoStart: false`
67
+
68
+ ### "Start a task" / "Run this task" / "Execute task ..."
69
+
70
+ 1. Call `start_task_execution` with taskId and an optional prompt (instruction for the AI agent)
71
+ 2. If no prompt is given, use the task's title/description as context
72
+ 3. The task status changes to IN_PROGRESS automatically
73
+
74
+ ### "What's running?" / "Check task progress"
75
+
76
+ 1. Call `get_task_execution_status` with taskId
77
+ 2. If status is running, call `get_task_terminal_output` with taskId (default 50 lines)
78
+ 3. Summarize: status + recent output + duration
79
+
80
+ ### "Send a message to the task" / "Tell it to ..."
81
+
82
+ 1. Call `send_task_terminal_input` with taskId and the text (include `\n` for Enter)
83
+ 2. Wait briefly, then call `get_task_terminal_output` to see the response
84
+
85
+ ### "Move task to done" / "Cancel this task"
86
+
87
+ 1. Call `move_task` with taskId and the target status (DONE, CANCELLED, etc.)
88
+
89
+ ### "Search for ..." / "Find tasks about ..."
90
+
91
+ 1. Call `search` with the query string
92
+ 2. Optionally set category to `task`, `project`, or `repository`
93
+ 3. Results include `navigateTo` paths for UI navigation
94
+
95
+ ### "Label this task" / "Tag it as ..."
96
+
97
+ 1. Call `list_labels` with workspaceId to see available labels
98
+ 2. Call `set_task_labels` with taskId and the desired labelId array
99
+ 3. Note: this replaces all existing labels — include current ones if you want to keep them
100
+
101
+ ### "今天做了什么?" / "Daily summary" / "工作总结"
102
+
103
+ 1. Call `daily_summary` (no params for today, or pass `date: "YYYY-MM-DD"` for a specific day)
104
+ 2. Results are grouped by workspace → project, with:
105
+ - **completed**: tasks moved to DONE today
106
+ - **inProgress**: tasks with activity today but not yet done, including `progressSummary` (last AI chat excerpt)
107
+ 3. Present stats: totalCompleted, totalInProgress
108
+ 4. Format as a readable report
109
+
110
+ ### "今天有什么待办?" / "Daily todo" / "还有哪些任务没完成?"
111
+
112
+ 1. Call `daily_todo` (returns all TODO/IN_PROGRESS/IN_REVIEW tasks)
113
+ 2. Optional filters:
114
+ - `workspaceId` — narrow to one workspace
115
+ - `projectId` — narrow to one project
116
+ - `status` — e.g. `["IN_PROGRESS"]` for only active tasks
117
+ - `priority` — e.g. `["CRITICAL", "HIGH"]` for urgent only
118
+ 3. Results sorted by priority severity (CRITICAL first), grouped by workspace → project
119
+ 4. Each task includes `lastSessionId` for resuming execution
120
+ 5. Present stats: total count, breakdown by status and priority
121
+
122
+ ### "Create a project" / "Set up a new project"
123
+
124
+ 1. Call `list_workspaces` to pick the workspace
125
+ 2. Call `create_project` with workspaceId, name, and optionally:
126
+ - `gitUrl` — makes it a GIT project with worktree support
127
+ - `localPath` — path to the local repository
128
+
129
+ ---
130
+
131
+ ## Task Lifecycle
132
+
133
+ ```
134
+ TODO → IN_PROGRESS → IN_REVIEW → DONE
135
+ → CANCELLED
136
+ ```
137
+
138
+ - Tasks start as `TODO`
139
+ - `IN_PROGRESS` means an agent is actively working
140
+ - `IN_REVIEW` means execution completed, awaiting review/merge
141
+ - `DONE` means merged and completed
142
+ - `CANCELLED` means dropped
143
+
144
+ ---
145
+
146
+ ## Task Description Format
147
+
148
+ The `description` field supports Markdown. **Never copy the user's raw message as-is.** Always restructure it into a clear, actionable format:
149
+
150
+ ```markdown
151
+ ## 目标
152
+ <one sentence summary of what to achieve>
153
+
154
+ ## 需求
155
+ - <requirement 1>
156
+ - <requirement 2>
157
+ - ...
158
+
159
+ ## 参考
160
+ - <file paths, API endpoints, design references if any>
161
+
162
+ ## 备注
163
+ - <constraints, edge cases, things to watch out for>
164
+ ```
165
+
166
+ Rules:
167
+ - `title` should be short (under 30 chars), summarizing the task
168
+ - `description` should be structured Markdown that an AI agent can execute from
169
+ - Extract actionable requirements from the user's natural language
170
+ - Omit sections that have no content (e.g. skip 备注 if nothing to note)
171
+ - If user provides file paths, put them in 参考 section AND in `references` parameter
172
+
173
+ ---
174
+
175
+ ## Display Templates
176
+
177
+ All query results MUST follow these templates. Do NOT invent your own format. When results are empty, output "No {items} found." (e.g. "No tasks found.", "No workspaces found.").
178
+
179
+ ### Priority Markers
180
+
181
+ Use consistently across all templates: 🔴 CRITICAL · 🟠 HIGH · 🟡 MEDIUM · ⚪ LOW
182
+
183
+ ### Labels Format
184
+
185
+ Always render labels as comma-separated names (e.g. `bug, frontend`). Omit the column if no task has labels.
186
+
187
+ ---
188
+
189
+ ### Workspaces (`list_workspaces`)
190
+
191
+ ```
192
+ | Workspace | Projects | Description |
193
+ |-----------|----------|-------------|
194
+ | {name} | {projectCount} | {description ?? "—"} |
195
+ ```
196
+
197
+ ### Projects (`list_projects`)
198
+
199
+ Note: the response does not include workspace name. Use the workspace name from the prior `list_workspaces` call or the user's context.
200
+
201
+ ```
202
+ 📂 {workspaceName}
203
+
204
+ | Project | Type | Tasks | Path |
205
+ |---------|------|-------|------|
206
+ | {name} ({alias}) | {type} | {taskCount} | {localPath ?? "—"} |
207
+ ```
208
+
209
+ ### Tasks (`list_tasks`)
210
+
211
+ ```
212
+ 📋 {projectName}
213
+
214
+ | ID | Task | Status | Priority | Labels |
215
+ |----|------|--------|----------|--------|
216
+ | {id (first 8 chars)} | {title} | {status} | {priority} | {labels} |
217
+ ```
218
+
219
+ ### Task Creation Confirmation
220
+
221
+ After `create_task` succeeds, render based on the **response** (not the input
222
+ parameter — `autoStart: true` does NOT mean execution actually started; check
223
+ `response.execution` and `response.executionError`):
224
+
225
+ ```
226
+ ✅ Task created: **{title}**
227
+ - Project: {projectName}
228
+ - Priority: {priority}
229
+ - Status: {status}
230
+ - Worktree: {yes/no}
231
+ {response.execution ? "⚡ Execution started" : response.executionError ? "⚠️ Auto-start failed: " + response.executionError : ""}
232
+ ```
233
+
234
+ If `executionError` is present, surface it verbatim — common causes are server
235
+ not running, concurrency limit hit, or project missing localPath. Do not say
236
+ "Execution started" when the response only shows `executionError`.
237
+
238
+ ### Daily Summary (`daily_summary`)
239
+
240
+ Fields: `stats.totalCompleted`, `stats.totalInProgress`, grouped `workspaces[].projects[].completed[]` and `inProgress[]`.
241
+
242
+ ```
243
+ # 📊 Daily Summary — {date}
244
+
245
+ **Stats**: ✅ {stats.totalCompleted} completed · 🔄 {stats.totalInProgress} in progress
246
+
247
+ ## {workspace.name}
248
+
249
+ ### {project.name}
250
+
251
+ **Completed**:
252
+ | Task | Priority | Completed At |
253
+ |------|----------|-------------|
254
+ | ✅ {title} | {priority} | {completedAt (HH:mm)} |
255
+
256
+ **In Progress**:
257
+ | Task | Status | Priority | Progress |
258
+ |------|--------|----------|----------|
259
+ | 🔄 {title} | {status} | {priority} | {progressSummary ?? "—"} |
260
+ ```
261
+
262
+ If no activity: "No activity recorded for {date}."
263
+
264
+ ### Daily Todo (`daily_todo`)
265
+
266
+ Fields: `stats.total`, `stats.byPriority.{CRITICAL,HIGH,MEDIUM,LOW}`, `stats.byStatus.{TODO,IN_PROGRESS,IN_REVIEW}`.
267
+
268
+ ```
269
+ # 📝 Pending Tasks
270
+
271
+ **Stats**: {stats.total} tasks · 🔴 {stats.byPriority.CRITICAL} · 🟠 {stats.byPriority.HIGH} · 🟡 {stats.byPriority.MEDIUM} · ⚪ {stats.byPriority.LOW}
272
+
273
+ ## {workspace.name}
274
+
275
+ ### {project.name}
276
+
277
+ | # | Task | Status | Priority | Labels |
278
+ |---|------|--------|----------|--------|
279
+ | 1 | {title} {lastSessionId ? "🔁" : ""} | {status} | {priority} | {labels} |
280
+ ```
281
+
282
+ Sorted by priority (CRITICAL first). 🔁 = resumable session.
283
+
284
+ ### Search Results (`search`)
285
+
286
+ Categories: `task`, `project`, `repository`, `note`, `asset`, `all`. Result count = `results.length`.
287
+
288
+ ```
289
+ 🔍 Results for "{query}" ({results.length} found)
290
+
291
+ | Type | Name | Location | Snippet |
292
+ |------|------|----------|---------|
293
+ | {type} | {title} | {subtitle} | {snippet ?? "—"} |
294
+ ```
295
+
296
+ ### Execution Status (`get_task_execution_status`)
297
+
298
+ ```
299
+ ⚙️ **{taskTitle}**
300
+ - Execution: {executionStatus} · Terminal: {terminalStatus}
301
+ - Started: {startedAt} {endedAt ? "· Ended: " + endedAt : ""}
302
+ - ID: {executionId}
303
+ - Output (last lines):
304
+ \`\`\`
305
+ {outputSnippet ?? "No output"}
306
+ \`\`\`
307
+ ```
308
+
309
+ ### Start Execution Confirmation (`start_task_execution`)
310
+
311
+ ```
312
+ ⚡ Execution started
313
+ - Task: {taskId}
314
+ - Execution ID: {executionId}
315
+ - Worktree: {worktreePath ?? "direct mode"}
316
+ ```
317
+
318
+ ### Terminal Output (`get_task_terminal_output`)
319
+
320
+ ```
321
+ 📺 Terminal — {taskId} ({total} total lines, showing last {lines.length})
322
+
323
+ \`\`\`
324
+ {lines.join("\n")}
325
+ \`\`\`
326
+ ```
327
+
328
+ ### Labels (`list_labels`)
329
+
330
+ ```
331
+ 🏷️ Labels for {workspaceName}
332
+
333
+ | Label | Color | Type |
334
+ |-------|-------|------|
335
+ | {name} | {color} | {isBuiltin ? "Builtin" : "Custom"} |
336
+ ```
337
+
338
+ ### Project Identification (`identify_project`)
339
+
340
+ ```
341
+ 🔎 Project matches for "{query}"
342
+
343
+ | Project | Alias | Workspace | Confidence |
344
+ |---------|-------|-----------|------------|
345
+ | {name} | {alias ?? "—"} | {workspaceName} | {(confidence * 100).toFixed(0)}% |
346
+ ```
347
+
348
+ ### Notes (`manage_notes` — list/get)
349
+
350
+ ```
351
+ 📝 Notes for {projectName}
352
+
353
+ | Title | Updated | Preview |
354
+ |-------|---------|---------|
355
+ | {title} | {updatedAt (MM-DD HH:mm)} | {content (first 60 chars)}... |
356
+ ```
357
+
358
+ ### Assets (`manage_assets` — list)
359
+
360
+ ```
361
+ 📎 Assets for {projectName}
362
+
363
+ | Name | Type | Size | Linked Tasks |
364
+ |------|------|------|-------------|
365
+ | {originalName} | {mimeType} | {size} | {taskCount} |
366
+ ```
367
+
368
+ ---
369
+
370
+ ## Important Rules
371
+
372
+ - **Scope boundary**: You are a **task management operator only**. If the user asks you to write code, explain code, debug, search the web, read/write files, or anything outside Tower task management, reply: "抱歉,我只能帮你管理工作区、项目和任务。编码、调试等操作请在任务终端中完成。" Do NOT attempt to answer out-of-scope questions.
373
+ - **Display format is mandatory**: always use the templates above, never output raw JSON or invent custom formats
374
+ - **Empty results**: always output "No {items} found." — never silently return nothing
375
+ - **SubPath**: for monorepo or multi-folder projects, use `subPath` on task creation to specify the working directory (e.g. "packages/web"). The project description should document the directory structure. If not sure, omit subPath.
376
+ - **Cascade deletes**: deleting a workspace removes all its projects and tasks
377
+ - **Label replacement**: `set_task_labels` and `update_task` with labelIds do a full replace, not merge
378
+ - **Builtin labels**: cannot be deleted (isBuiltin: true)
379
+ - **One terminal per task**: each task can have at most one active PTY session
380
+ - **Search limit**: returns at most 20 results per query
381
+ - **Search categories**: `task`, `project`, `repository`, `note`, `asset`, `all`
@@ -1,4 +0,0 @@
1
- module.exports=[522734,(e,r,t)=>{r.exports=e.x("fs",()=>require("fs"))},933919,(e,r,t)=>{r.exports=e.x("@prisma/client-9249dd53ac5b6a44",()=>require("@prisma/client-9249dd53ac5b6a44"))},750227,(e,r,t)=>{r.exports=e.x("node:path",()=>require("node:path"))},902157,(e,r,t)=>{r.exports=e.x("node:fs",()=>require("node:fs"))},874533,(e,r,t)=>{r.exports=e.x("node:child_process",()=>require("node:child_process"))},193695,(e,r,t)=>{r.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},918622,(e,r,t)=>{r.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},556704,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},832319,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},270406,(e,r,t)=>{r.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},324725,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},843793,e=>{"use strict";var r=e.i(933919);let t=globalThis.prisma??new r.PrismaClient({log:[]});process.on("SIGTERM",()=>{t.$disconnect().catch(()=>{})}),process.on("SIGINT",()=>{t.$disconnect().catch(()=>{})}),e.s(["db",0,t])},660526,(e,r,t)=>{r.exports=e.x("node:os",()=>require("node:os"))},192520,e=>{"use strict";let r;var t=e.i(750227),s=e.i(660526),o=e.i(902157);function i(){return r||(r=process.env.TOWER_DATA_DIR||(0,t.join)((0,s.homedir)(),".tower"),(0,o.existsSync)(r)||(0,o.mkdirSync)(r,{recursive:!0})),r}e.s(["getAssistantDir",0,function(){let e=(0,t.join)(i(),"assistant");return(0,o.existsSync)(e)||(0,o.mkdirSync)(e,{recursive:!0}),e},"getBackupsDir",0,function(){let e=(0,t.join)(i(),"backups");return(0,o.existsSync)(e)||(0,o.mkdirSync)(e,{recursive:!0}),e},"getStorageDir",0,function(){let e=(0,t.join)(i(),"storage");return(0,o.existsSync)(e)||(0,o.mkdirSync)(e,{recursive:!0}),e},"getTowerDbPath",0,function(){let e;return(0,t.join)((e=(0,t.join)(i(),"database"),(0,o.existsSync)(e)||(0,o.mkdirSync)(e,{recursive:!0}),e),"tower.db")},"getTowerDir",0,i])},173215,e=>{"use strict";var r=e.i(902157),t=e.i(660526),s=e.i(750227),o=e.i(279711),i=e.i(192520);let n="tower";function a(){let e=(0,i.getTowerDir)(),r=s.join((0,t.homedir)(),".tower");if(s.resolve(e)===s.resolve(r))return"tower";let o=s.basename(e),n=o.match(/^\.?tower-(.+)$/);return n?`tower-${l(n[1])}`:`tower-${l(o)}`}function l(e){return e.replace(/[^a-z0-9_-]/gi,"-").toLowerCase().slice(0,32)}async function c(e,l){let c,d,u,p,m=o.providerRegistry.get(e),h=m?.cli?.adapter;if(!h||!await h.isAvailable())return{provider:e,available:!1,ok:!1};let k="claude"===e?function(e={}){let o=e.homeDir??t.homedir(),i=e.repoRoot??process.cwd(),n=[];return n.push(function(e){let t=s.join(e,".claude","settings.json");if(!r.existsSync(t))return{removed:!1,path:t};try{let e=r.readFileSync(t,"utf-8"),s=JSON.parse(e),o=s.mcpServers;if("object"!=typeof o||null===o||Array.isArray(o)||!("tower"in o))return{removed:!1,path:t};let i=o.tower;return delete o.tower,0===Object.keys(o).length?delete s.mcpServers:s.mcpServers=o,r.writeFileSync(t,JSON.stringify(s,null,2)+"\n","utf-8"),{removed:!0,path:t,removedEntry:i,reason:"wrong-file"}}catch(e){return{removed:!1,path:t,error:e instanceof Error?e.message:String(e)}}}(o)),n.push(function(e,t,o){if(!r.existsSync(e))return{removed:!1,path:e};try{let i=r.readFileSync(e,"utf-8"),n=JSON.parse(i),a=n.mcpServers;if("object"!=typeof a||null===a||Array.isArray(a))return{removed:!1,path:e};let l=a.tower;if(!l)return{removed:!1,path:e};let c=function(e,t){let o,i=e.args;if(!Array.isArray(i))return"foreign-repo";for(let e of i)if("string"==typeof e&&s.isAbsolute(e)){o=e;break}return o?r.existsSync(o)?s.resolve(o).startsWith(s.resolve(t)+s.sep)?"current-repo":"foreign-repo":"missing-path":"foreign-repo"}(l,o);if("current-repo"===c)return{removed:!1,path:e,reason:"alive-current-repo"};return delete a.tower,0===Object.keys(a).length?delete n.mcpServers:n.mcpServers=a,r.writeFileSync(e,JSON.stringify(n,null,2)+"\n","utf-8"),{removed:!0,path:e,removedEntry:l,reason:`${t}:${c}`}}catch(r){return{removed:!1,path:e,error:r instanceof Error?r.message:String(r)}}}(s.join(o,".mcp.json"),"home-mcp-json",i)),{steps:n,removedAny:n.some(e=>e.removed)}}():void 0,v=(c=process.cwd().replace(/\\/g,"/"),d=process.env.DATABASE_URL||`file:${(0,i.getTowerDbPath)().replace(/\\/g,"/")}`,u=`${c}/dist/mcp-server.cjs`,p=a(),(0,r.existsSync)(u)?{name:p,command:"node",args:[u],env:{DATABASE_URL:d}}:{name:p,command:`${c}/node_modules/.bin/tsx`,args:[`${c}/src/mcp/index.ts`],env:{DATABASE_URL:d}}),g=await h.installMcp(v,{scope:"user"}),f=await h.installHooks(l),y=await h.installSkill(n,s.join(process.cwd(),"skills",n));return{provider:e,available:!0,migration:k,mcp:g,hooks:f,skill:y,ok:g.ok&&f.ok&&y.ok}}e.s(["getTowerMcpName",0,a,"installAllForProvider",0,c],173215)},482819,(e,r,t)=>{"use strict";r.exports=e.r(583981).vendored["react-rsc"].ReactServerDOMTurbopackServer},921675,(e,r,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"registerServerReference",{enumerable:!0,get:function(){return s.registerServerReference}});let s=e.r(482819)},86708,(e,r,t)=>{"use strict";function s(e){for(let r=0;r<e.length;r++){let t=e[r];if("function"!=typeof t)throw Object.defineProperty(Error(`A "use server" file can only export async functions, found ${typeof t}.
2
- Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ensureServerEntryExports",{enumerable:!0,get:function(){return s}})},279711,e=>{"use strict";class r{providers=new Map;register(e){this.providers.set(e.name,e)}get(e){return this.providers.get(e)}getAll(){return Array.from(this.providers.values())}getCliAdapter(e){return this.providers.get(e)?.cli?.adapter??null}getQueryAdapter(e,r){let t=this.providers.get(e);return t?"api"===r?t.api?.adapter??null:t.cliQuery?.adapter??null:null}getAllowedCommands(){let e=[];for(let r of this.providers.values())r.cli?.command&&e.push(r.cli.command);return e}async getAvailableProviders(){let e=[];for(let r of this.providers.values()){let t=!!r.cli&&await r.cli.adapter.isAvailable(),s=t&&r.cli?await r.cli.adapter.getVersion():null,o=!!r.api&&!!process.env[r.api.keyEnvVar],i=!!r.api&&o;e.push({name:r.name,displayName:r.displayName,cli:{available:t,version:s},api:{available:i,keyConfigured:o}})}return e}}var t=e.i(472129),s=e.i(902157),o=e.i(660526),i=e.i(750227),n=e.i(769310);let a=["o4-mini","o3","gpt-4.1","gpt-4.1-mini","gpt-4.1-nano","codex-mini-latest"],l=globalThis;if(!l.__providerRegistry){let c=new r;c.register({name:"claude",displayName:"Claude Code",agentFieldValue:"CLAUDE_CODE",cli:{command:"claude",adapter:new t.ClaudeCliAdapter},models:{cli:["sonnet","opus","haiku","claude-sonnet-4-6","claude-opus-4-6","claude-haiku-4-5-20251001"],api:[]}}),c.register({name:"codex",displayName:"Codex CLI",agentFieldValue:"CODEX_CLI",cli:{command:"codex",adapter:new class r{buildSpawnArgs(e){let r=[];e.resumeSessionId?r.push("resume",e.resumeSessionId):e.continueLatest?r.push("resume","--last"):(r.push("--full-auto"),e.extraArgs?.length&&r.push(...e.extraArgs),e.prompt&&r.push(e.prompt));let t={...e.envOverrides??{}};return{command:this.resolveCommand(),args:r,env:t}}buildEnvOverrides(e){let r={TOWER_TASK_ID:e.taskId,TOWER_TASK_TITLE:e.taskTitle,TOWER_STARTED_AT:new Date().toISOString(),TOWER_API_URL:e.apiUrl};return e.callbackUrl&&(r.CALLBACK_URL=e.callbackUrl),r}async installHooks(e){try{let e=this.readHooks(),r=process.cwd().replace(/\\/g,"/"),t=!1,s=this.getHookArray(e,"SessionStart");if(!this.hasHook(s,"session-start-hook.js")){let o=i.join(r,"scripts","session-start-hook.js").replace(/\\/g,"/");s.push({hooks:[{command:`node "${o}"`,timeout:5,type:"command"}]}),e.SessionStart=s,t=!0}let o=this.getHookArray(e,"PostToolUse");if(!this.hasHook(o,"post-tool-hook.js")){let s=i.join(r,"scripts","post-tool-hook.js").replace(/\\/g,"/");o.push({hooks:[{command:`node "${s}"`,timeout:10,type:"command"}],matcher:"Write|Edit|MultiEdit"}),e.PostToolUse=o,t=!0}let n=this.getHookArray(e,"Stop");if(!this.hasHook(n,"stop-hook.js")){let s=i.join(r,"scripts","stop-hook.js").replace(/\\/g,"/");n.push({hooks:[{command:`node "${s}"`,timeout:5,type:"command"}]}),e.Stop=n,t=!0}return t&&(this.writeHooks(e),this.ensureHooksFeatureEnabled()),{ok:!0,method:"file",detail:this.getHooksPath()}}catch(e){return{ok:!1,method:"file",detail:this.getHooksPath(),error:e instanceof Error?e.message:String(e)}}}async uninstallHooks(){try{let e=this.readHooks(),r=["session-start-hook.js","post-tool-hook.js","stop-hook.js"];for(let t of["SessionStart","PostToolUse","Stop"]){let s=this.getHookArray(e,t);e[t]=s.filter(e=>!e.hooks?.some(e=>r.some(r=>e.command?.includes(r))))}return this.writeHooks(e),{ok:!0,method:"file",detail:this.getHooksPath()}}catch(e){return{ok:!1,method:"file",detail:this.getHooksPath(),error:e instanceof Error?e.message:String(e)}}}async isHooksInstalled(){let e=this.readHooks(),r=this.getHookArray(e,"PostToolUse");return this.hasHook(r,"post-tool-hook.js")}async installMcp(e,r={}){let t=this.resolveCommand(),s=["mcp","add",e.name];if(e.env)for(let[r,t]of Object.entries(e.env))s.push("--env",`${r}=${t}`);s.push("--",e.command,...e.args);try{return await this.runCli(t,["mcp","remove",e.name],r.cwd).catch(()=>{}),await this.runCli(t,s,r.cwd),{ok:!0,method:"cli",detail:`${t} ${s.join(" ")}`}}catch(e){return{ok:!1,method:"cli",detail:`${t} ${s.join(" ")}`,error:e instanceof Error?e.message:String(e)}}}async uninstallMcp(e,r={}){let t=this.resolveCommand(),s=["mcp","remove",e];try{return await this.runCli(t,s,r.cwd),{ok:!0,method:"cli",detail:`${t} ${s.join(" ")}`}}catch(e){return{ok:!1,method:"cli",detail:`${t} ${s.join(" ")}`,error:e instanceof Error?e.message:String(e)}}}async isMcpInstalled(e,r={}){let t=this.resolveCommand();try{return await this.runCli(t,["mcp","get",e],r.cwd,5e3),!0}catch{return!1}}async installSkill(e,r){let t=i.join(this.getConfigDir(),"skills",e);try{if(!s.existsSync(r))return{ok:!1,method:"symlink",detail:t,error:`Source skill dir does not exist: ${r}`};s.mkdirSync(i.dirname(t),{recursive:!0});let e=await s.promises.lstat(t).catch(()=>null);if(e)if(!e.isSymbolicLink())return{ok:!1,method:"symlink",detail:t,error:`Refusing to overwrite non-symlink at ${t}`};else{let e=await s.promises.readlink(t);if(i.resolve(e)===i.resolve(r))return{ok:!0,method:"symlink",detail:`${t} → ${r} (already)`};await s.promises.unlink(t)}return await s.promises.symlink(r,t,"dir"),{ok:!0,method:"symlink",detail:`${t} → ${r}`}}catch(e){return{ok:!1,method:"symlink",detail:t,error:e instanceof Error?e.message:String(e)}}}async uninstallSkill(e){let r=i.join(this.getConfigDir(),"skills",e);try{let e=await s.promises.lstat(r).catch(()=>null);if(!e)return{ok:!0,method:"symlink",detail:`${r} (already absent)`};if(!e.isSymbolicLink())return{ok:!1,method:"symlink",detail:r,error:`Refusing to remove non-symlink at ${r}`};return await s.promises.unlink(r),{ok:!0,method:"symlink",detail:r}}catch(e){return{ok:!1,method:"symlink",detail:r,error:e instanceof Error?e.message:String(e)}}}async isSkillInstalled(e,r){let t=i.join(this.getConfigDir(),"skills",e);try{if(!(await s.promises.lstat(t)).isSymbolicLink())return!1;if(!r)return!0;let e=await s.promises.readlink(t),o=i.isAbsolute(e)?e:i.resolve(i.dirname(t),e);return i.resolve(o)===i.resolve(r)}catch{return!1}}async runCli(r,t,s,o=1e4){let{execFile:i}=await e.A(482848),{promisify:n}=await e.A(268548),a=n(i),{stdout:l}=await a(r,t,{cwd:s,timeout:o});return l}async isAvailable(){return null!==await this.getVersion()}async getVersion(){try{let{execFile:r}=await e.A(144264),{promisify:t}=await e.A(534777),s=t(r),o=this.resolveCommand(),{stdout:i}=await s(o,["--version"],{timeout:5e3});return i.trim()||null}catch{return null}}async getModels(){return a}getConfigDir(){return i.join(o.homedir(),".codex")}getSettingsPath(){return i.join(this.getConfigDir(),"config.toml")}getSessionsDir(){return i.join(this.getConfigDir(),"sessions")}getApiKeyInfo(){return{envVar:"OPENAI_API_KEY",required:!1}}buildHelloProbeArgs(){return{command:this.resolveCommand(),args:["exec","-"]}}resolveCommand(){return process.env.CODEX_CLI_PATH?process.env.CODEX_CLI_PATH:(0,n.resolveCommandPathSync)("codex")}getHooksPath(){return i.join(this.getConfigDir(),"hooks.json")}readHooks(){try{return JSON.parse(s.readFileSync(this.getHooksPath(),"utf-8")).hooks??{}}catch{return{}}}writeHooks(e){let r=this.getConfigDir();s.existsSync(r)||s.mkdirSync(r,{recursive:!0}),s.writeFileSync(this.getHooksPath(),JSON.stringify({hooks:e},null,2),"utf-8")}ensureHooksFeatureEnabled(){let e=this.getSettingsPath(),r="";try{r=s.readFileSync(e,"utf-8")}catch{}if(/codex_hooks\s*=\s*true/.test(r))return;/\[features\]/.test(r)?r=r.replace(/\[features\]/,"[features]\ncodex_hooks = true"):r+="\n[features]\ncodex_hooks = true\n";let t=this.getConfigDir();s.existsSync(t)||s.mkdirSync(t,{recursive:!0}),s.writeFileSync(e,r,"utf-8")}getHookArray(e,r){let t=e[r];return Array.isArray(t)?t:[]}hasHook(e,r){return e.some(e=>e.hooks?.some(e=>e.command?.includes(r)))}}},models:{cli:["o4-mini","o3","gpt-4.1","gpt-4.1-mini","gpt-4.1-nano","codex-mini-latest"],api:[]}}),l.__providerRegistry=c}let c=l.__providerRegistry;e.s(["providerRegistry",0,c],279711)},932583,e=>{"use strict";var r=e.i(921675),t=e.i(843793);async function s(e,r={}){let o=r.report,i=o?JSON.stringify(o):null;await t.db.providerConnection.upsert({where:{provider:e},create:{provider:e,lastTestedAt:new Date,testOk:!0,version:r.version??null,mcpInstalled:o?.mcp?.ok??!1,hooksInstalled:o?.hooks?.ok??!1,skillsInstalled:o?.skill?.ok??!1,installLog:i},update:{lastTestedAt:new Date,testOk:!0,version:r.version??null,mcpInstalled:o?.mcp?.ok??!1,hooksInstalled:o?.hooks?.ok??!1,skillsInstalled:o?.skill?.ok??!1,installLog:i}})}async function o(e,r={}){await t.db.providerConnection.upsert({where:{provider:e},create:{provider:e,lastTestedAt:new Date,testOk:!1,installLog:r.reason??null},update:{lastTestedAt:new Date,testOk:!1,mcpInstalled:!1,hooksInstalled:!1,skillsInstalled:!1,installLog:r.reason??null}})}async function i(e){let r=await t.db.providerConnection.findUnique({where:{provider:e}});return!!r&&r.testOk&&r.mcpInstalled&&r.hooksInstalled&&r.skillsInstalled}async function n(){return(await t.db.providerConnection.findMany({where:{testOk:!0,mcpInstalled:!0,hooksInstalled:!0,skillsInstalled:!0},select:{provider:!0},orderBy:{provider:"asc"}})).map(e=>e.provider)}async function a(){return t.db.providerConnection.findMany({select:{provider:!0,lastTestedAt:!0,testOk:!0,version:!0,mcpInstalled:!0,hooksInstalled:!0,skillsInstalled:!0,installLog:!0},orderBy:{provider:"asc"}})}(0,e.i(86708).ensureServerEntryExports)([s,o,i,n,a]),(0,r.registerServerReference)(s,"60098f63ce71474c8345bdb111a43c534bb36176b2",null),(0,r.registerServerReference)(o,"60ff3ebf55c8c71ecd2f06eb436d0d7baecd216668",null),(0,r.registerServerReference)(i,"40e83943243ba91343068f5fa95327ffbd942fe95e",null),(0,r.registerServerReference)(n,"00ca5565016e7878379c04e3e9218a7a35cbc54184",null),(0,r.registerServerReference)(a,"006a2e3cf4a8b18384cab5d5308520beb5ddc045f7",null),e.s(["getConnectedProviders",0,n,"isProviderConnected",0,i,"markProviderConnected",0,s,"markProviderDisconnected",0,o])},482848,e=>{e.v(e=>Promise.resolve().then(()=>e(874533)))},268548,e=>{e.v(r=>Promise.all(["server/chunks/[externals]_node_util_0xr.y7p._.js"].map(r=>e.l(r))).then(()=>r(812057)))},144264,e=>{e.v(r=>Promise.all(["server/chunks/[externals]_child_process_0pwkpv9._.js"].map(r=>e.l(r))).then(()=>r(233405)))},534777,e=>{e.v(r=>Promise.all(["server/chunks/[externals]_util_0wtvqkc._.js"].map(r=>e.l(r))).then(()=>r(224361)))}];
3
-
4
- //# sourceMappingURL=%5Broot-of-the-server%5D__0-eibah._.js.map
@@ -1,20 +0,0 @@
1
- module.exports=[324725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},814747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},918622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},556704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},832319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},270406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},522734,(e,t,r)=>{t.exports=e.x("fs",()=>require("fs"))},750227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},902157,(e,t,r)=>{t.exports=e.x("node:fs",()=>require("node:fs"))},874533,(e,t,r)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},660526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},192520,e=>{"use strict";let t;var r=e.i(750227),n=e.i(660526),s=e.i(902157);function a(){return t||(t=process.env.TOWER_DATA_DIR||(0,r.join)((0,n.homedir)(),".tower"),(0,s.existsSync)(t)||(0,s.mkdirSync)(t,{recursive:!0})),t}e.s(["getAssistantDir",0,function(){let e=(0,r.join)(a(),"assistant");return(0,s.existsSync)(e)||(0,s.mkdirSync)(e,{recursive:!0}),e},"getBackupsDir",0,function(){let e=(0,r.join)(a(),"backups");return(0,s.existsSync)(e)||(0,s.mkdirSync)(e,{recursive:!0}),e},"getStorageDir",0,function(){let e=(0,r.join)(a(),"storage");return(0,s.existsSync)(e)||(0,s.mkdirSync)(e,{recursive:!0}),e},"getTowerDbPath",0,function(){let e;return(0,r.join)((e=(0,r.join)(a(),"database"),(0,s.existsSync)(e)||(0,s.mkdirSync)(e,{recursive:!0}),e),"tower.db")},"getTowerDir",0,a])},193695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},198840,e=>{"use strict";var t=e.i(855104);let r=["localhost","127.0.0.1","[::1]"],n=new Set(["127.0.0.1","::1","::ffff:127.0.0.1"]),s=/^c[a-z0-9]{20,30}$/;e.s(["requireLocalhost",0,function(e){let s=e.headers.get("x-forwarded-for");if(s&&!s.split(",").map(e=>e.trim()).every(e=>n.has(e)))return t.NextResponse.json({error:"Forbidden"},{status:403});let a=e.headers.get("host")??"";return r.some(e=>a.startsWith(e))?null:t.NextResponse.json({error:"Forbidden"},{status:403})},"validateProjectId",0,function(e){return s.test(e)?null:t.NextResponse.json({error:"Invalid projectId format"},{status:400})},"validateTaskId",0,function(e){return s.test(e)?null:t.NextResponse.json({error:"Invalid taskId format"},{status:400})}])},769310,e=>{"use strict";var t=e.i(902157),r=e.i(874533),n=e.i(750227);function s(e=process.platform){return"win32"===e}function a(e){let t=e.replace(/\r\n|\r|\n/g," ");if(!t.length)return'""';let r=t.replace(/"/g,'""');return/[\s"&<>|^()]/.test(r)?`"${r}"`:r}let o=["CLAUDECODE","CLAUDE_CODE_ENTRYPOINT","CLAUDE_CODE_SESSION","CLAUDE_CODE_PARENT_SESSION"];async function i(e,t={}){let r=t.cwd??process.cwd(),a=t.env??process.env,o=t.platform??process.platform;if(e.includes("/")||e.includes("\\")){let t=n.default.isAbsolute(e)?e:n.default.resolve(r,e);return await d(t,o)?t:null}let l=a.PATH??a.Path??"",c=s(o)?";":":",u=l.split(c).filter(Boolean),p=s(o)?(a.PATHEXT??".EXE;.CMD;.BAT;.COM").split(";").filter(Boolean):[""],m=s(o)&&n.default.extname(e).length>0;for(let t of u)for(let r of s(o)?m?[n.default.join(t,e)]:p.map(r=>n.default.join(t,`${e}${r}`)):[n.default.join(t,e)])if(await d(r,o))return r;return null}let l=e=>(0,r.execSync)(e,{encoding:"utf-8",timeout:5e3});function c(e,t=process.platform,a=l){if(n.default.extname(e)||e.includes("/")||e.includes("\\"))return e;if(!s(t)){try{let t=(0,r.execFileSync)("which",[e],{encoding:"utf-8",timeout:5e3}).trim();if(t)return t}catch{}return e}try{let t=a(`where ${e}`).trim().split("\n").map(e=>e.trim()).filter(Boolean),r=t.find(e=>/\.(cmd|bat|exe)$/i.test(e));if(r)return r;if(t.length>0)return t[0]}catch{}return e}async function u(e,t,r={}){let n=r.env??process.env,s=r.platform??process.platform;return p(await i(e,r)??e,t,n,s)}function p(e,t,r,o){if(!s(o))return{command:e,args:t};let i=n.default.extname(e).toLowerCase();return".cmd"===i||".bat"===i||".com"===i?{command:r.ComSpec||"cmd.exe",args:["/d","/s","/c",[a(e),...t.map(a)].join(" ")]}:{command:e,args:t}}async function d(e,r=process.platform){try{return await t.promises.access(e,s(r)?t.constants.F_OK:t.constants.X_OK),!0}catch{return!1}}async function m(e=process.platform){return s(e)?h():f()}async function f(){try{let e=await t.promises.readFile("/etc/shells","utf-8"),r=[],s=new Map;for(let t of e.split("\n")){let e=t.replace(/#.*/,"").trim();if(!e||!e.startsWith("/")||!await d(e))continue;let a=n.default.basename(e),o=s.get(a)??0;s.set(a,o+1),o>0&&(a=`${a} (${o+1})`),r.push({name:a,path:e})}return r}catch{let e=[];for(let t of["/bin/zsh","/bin/bash","/bin/sh"])await d(t)&&e.push({name:n.default.basename(t),path:t});return e}}async function h(){let e=[],t=[],r=await i("git",{platform:"win32"});if(r){let e=n.default.resolve(n.default.dirname(r),"..","..");t.push(n.default.join(e,"bin","bash.exe"),n.default.join(e,"usr","bin","bash.exe"))}for(let e of[process.env.ProgramW6432,process.env.ProgramFiles,process.env["ProgramFiles(x86)"],process.env.LocalAppData?n.default.join(process.env.LocalAppData,"Programs"):null].filter(Boolean))t.push(n.default.join(e,"Git","bin","bash.exe"),n.default.join(e,"Git","usr","bin","bash.exe"));let s=process.env.USERPROFILE??"";for(let r of(s&&t.push(n.default.join(s,"scoop","apps","git","current","bin","bash.exe")),process.env.CLAUDE_CODE_GIT_BASH_PATH&&t.unshift(process.env.CLAUDE_CODE_GIT_BASH_PATH),t))if(await d(r,"win32")){e.push({name:"Git Bash",path:r});break}let a=await i("pwsh",{platform:"win32"});a&&e.push({name:"PowerShell",path:a});let o=process.env.windir??"C:\\WINDOWS",l=n.default.join(o,"System32","WindowsPowerShell","v1.0","powershell.exe");await d(l,"win32")&&e.push({name:"Windows PowerShell",path:l});let c=process.env.ComSpec??n.default.join(o,"System32","cmd.exe");return await d(c,"win32")&&e.push({name:"Command Prompt",path:c}),e}let v=[{name:"Terminal",bundleName:"Terminal"},{name:"iTerm2",bundleName:"iTerm"},{name:"Warp",bundleName:"Warp"},{name:"Alacritty",bundleName:"Alacritty"},{name:"WezTerm",bundleName:"WezTerm"},{name:"kitty",bundleName:"kitty"},{name:"Hyper",bundleName:"Hyper"}];async function w(e=process.platform){if("darwin"===e){let t=[];for(let r of v)await d(`/Applications/${r.bundleName}.app`,e)&&t.push({name:r.name,value:r.bundleName});return t}if(s(e)){let t=[],r=await i("wt",{platform:e});return r&&t.push({name:"Windows Terminal",value:r}),t}return[]}e.s(["detectShells",0,m,"detectTerminalApps",0,w,"ensurePathInEnv",0,function(e,t=process.platform){let r=s(t)?"Path":"PATH";return(e.PATH??e.Path??"").length>0?e:{...e,[r]:function(e=process.platform){return s(e)?"C:\\Windows\\System32;C:\\Windows;C:\\Windows\\System32\\Wbem":"/usr/local/bin:/opt/homebrew/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin"}(t)}},"resolveCommandPath",0,i,"resolveCommandPathSync",0,c,"resolveSpawnTarget",0,u,"resolveSpawnTargetSync",0,function(e,t,r=process.platform,n){return p(c(e,r,n),t,process.env,r)},"stripClaudeNestingEnv",0,function(e){let t={...e};for(let e of o)delete t[e];return t}])},173215,e=>{"use strict";var t=e.i(902157),r=e.i(660526),n=e.i(750227),s=e.i(279711),a=e.i(192520);let o="tower";function i(){let e=(0,a.getTowerDir)(),t=n.join((0,r.homedir)(),".tower");if(n.resolve(e)===n.resolve(t))return"tower";let s=n.basename(e),o=s.match(/^\.?tower-(.+)$/);return o?`tower-${l(o[1])}`:`tower-${l(s)}`}function l(e){return e.replace(/[^a-z0-9_-]/gi,"-").toLowerCase().slice(0,32)}async function c(e,l){let c,u,p,d,m=s.providerRegistry.get(e),f=m?.cli?.adapter;if(!f||!await f.isAvailable())return{provider:e,available:!1,ok:!1};let h="claude"===e?function(e={}){let s=e.homeDir??r.homedir(),a=e.repoRoot??process.cwd(),o=[];return o.push(function(e){let r=n.join(e,".claude","settings.json");if(!t.existsSync(r))return{removed:!1,path:r};try{let e=t.readFileSync(r,"utf-8"),n=JSON.parse(e),s=n.mcpServers;if("object"!=typeof s||null===s||Array.isArray(s)||!("tower"in s))return{removed:!1,path:r};let a=s.tower;return delete s.tower,0===Object.keys(s).length?delete n.mcpServers:n.mcpServers=s,t.writeFileSync(r,JSON.stringify(n,null,2)+"\n","utf-8"),{removed:!0,path:r,removedEntry:a,reason:"wrong-file"}}catch(e){return{removed:!1,path:r,error:e instanceof Error?e.message:String(e)}}}(s)),o.push(function(e,r,s){if(!t.existsSync(e))return{removed:!1,path:e};try{let a=t.readFileSync(e,"utf-8"),o=JSON.parse(a),i=o.mcpServers;if("object"!=typeof i||null===i||Array.isArray(i))return{removed:!1,path:e};let l=i.tower;if(!l)return{removed:!1,path:e};let c=function(e,r){let s,a=e.args;if(!Array.isArray(a))return"foreign-repo";for(let e of a)if("string"==typeof e&&n.isAbsolute(e)){s=e;break}return s?t.existsSync(s)?n.resolve(s).startsWith(n.resolve(r)+n.sep)?"current-repo":"foreign-repo":"missing-path":"foreign-repo"}(l,s);if("current-repo"===c)return{removed:!1,path:e,reason:"alive-current-repo"};return delete i.tower,0===Object.keys(i).length?delete o.mcpServers:o.mcpServers=i,t.writeFileSync(e,JSON.stringify(o,null,2)+"\n","utf-8"),{removed:!0,path:e,removedEntry:l,reason:`${r}:${c}`}}catch(t){return{removed:!1,path:e,error:t instanceof Error?t.message:String(t)}}}(n.join(s,".mcp.json"),"home-mcp-json",a)),{steps:o,removedAny:o.some(e=>e.removed)}}():void 0,v=(c=process.cwd().replace(/\\/g,"/"),u=process.env.DATABASE_URL||`file:${(0,a.getTowerDbPath)().replace(/\\/g,"/")}`,p=`${c}/dist/mcp-server.cjs`,d=i(),(0,t.existsSync)(p)?{name:d,command:"node",args:[p],env:{DATABASE_URL:u}}:{name:d,command:`${c}/node_modules/.bin/tsx`,args:[`${c}/src/mcp/index.ts`],env:{DATABASE_URL:u}}),w=await f.installMcp(v,{scope:"user"}),y=await f.installHooks(l),g=await f.installSkill(o,n.join(process.cwd(),"skills",o));return{provider:e,available:!0,migration:h,mcp:w,hooks:y,skill:g,ok:w.ok&&y.ok&&g.ok}}e.s(["getTowerMcpName",0,i,"installAllForProvider",0,c],173215)},471552,e=>{"use strict";var t=e.i(522734),r=e.i(814747),n=e.i(192520),s=e.i(173215);let a=`# Tower Assistant
2
-
3
- 你是 Tower Assistant — Tower 任务管理平台的内置 AI 操作员。
4
-
5
- ## 身份
6
-
7
- - 你是一个**任务管理操作员**,不是编程助手
8
- - 你通过 Tower MCP 工具帮助用户管理工作区、项目、任务
9
- - 你**不能**读写文件、运行命令、编辑代码、搜索网页
10
- - 如果用户请求你无法完成的操作,告诉他们需要通过开发 MCP 扩展来支持
11
-
12
- ## 回复风格
13
-
14
- - 使用用户的语言回复(中文问中文答,英文问英文答)
15
- - 简洁明了,不要冗长的解释
16
- - 主动使用工具查询信息,而不是猜测
17
- - 当用户问"你能做什么"时,只列出 Tower MCP 工具提供的能力
18
- `;e.s(["ensureTowerDir",0,function(){let e=(0,n.getAssistantDir)(),o=(0,r.join)(e,"CLAUDE.md"),i=process.cwd(),l=(0,r.join)(i,"skills","tower","SKILL.md"),c=(0,r.join)(e,".claude","skills","tower"),u=(0,r.join)(c,"SKILL.md");return(0,t.existsSync)(o)||((0,t.writeFileSync)(o,a,"utf-8"),console.error(`[init-tower] Created ${o}`)),(0,t.existsSync)(l)&&!(0,t.existsSync)(u)&&((0,t.mkdirSync)(c,{recursive:!0}),(0,t.copyFileSync)(l,u),console.error(`[init-tower] Copied SKILL.md → ${c}`)),function(e){let a=(0,r.join)(e,".claude","settings.json");if((0,t.existsSync)(a))try{let e=JSON.parse((0,t.readFileSync)(a,"utf-8"));e&&"mcpServers"in e&&(delete e.mcpServers,(0,t.writeFileSync)(a,JSON.stringify(e,null,2)+"\n","utf-8"),console.error(`[init-tower] Removed legacy mcpServers from ${a}`))}catch{}let o=(0,r.join)(e,".mcp.json");if((0,t.existsSync)(o))try{let e,r,a,i,l=(e=process.cwd().replace(/\\/g,"/"),r=process.env.DATABASE_URL||`file:${(0,n.getTowerDbPath)().replace(/\\/g,"/")}`,a=`${e}/dist/mcp-server.cjs`,i=(0,s.getTowerMcpName)(),(0,t.existsSync)(a)?{name:i,command:"node",args:[a],env:{DATABASE_URL:r}}:{name:i,command:`${e}/node_modules/.bin/tsx`,args:[`${e}/src/mcp/index.ts`],env:{DATABASE_URL:r}}).name,c=JSON.parse((0,t.readFileSync)(o,"utf-8")),u=c.mcpServers??{};l in u&&(delete u[l],0===Object.keys(u).length?delete c.mcpServers:c.mcpServers=u,(0,t.writeFileSync)(o,JSON.stringify(c,null,2)+"\n","utf-8"),console.error(`[init-tower] Removed legacy tower entry from ${o}`))}catch{}}(e),e}])},137382,e=>{"use strict";var t=e.i(765876),r=e.i(675896),n=e.i(959160),s=e.i(97944),a=e.i(86757),o=e.i(204144),i=e.i(273436),l=e.i(743641),c=e.i(813766),u=e.i(840884),p=e.i(498814),d=e.i(780006),m=e.i(544432),f=e.i(772005),h=e.i(450223),v=e.i(193695);e.i(628400);var w=e.i(800071),y=e.i(855104),g=e.i(198840),x=e.i(471552);function S(){return"u">typeof crypto&&crypto.randomUUID?crypto.randomUUID():`msg-${Date.now()}-${Math.random().toString(36).slice(2,9)}`}async function A(t){let r=(0,g.requireLocalhost)(t);if(r)return r;let n=t.nextUrl.searchParams.get("sessionId");if(!n)return y.NextResponse.json({error:"sessionId required"},{status:400});let s=(0,x.ensureTowerDir)();try{let{getSessionMessages:t}=await e.A(145135),r=await t(n,{dir:s}),a=function(e){let t=[];for(let n of e)switch(n.type){case"user":{var r;let e=n.message,s="string"==typeof e?.content?e.content:"";s.startsWith("/tower ")&&(s=s.slice(7));let a=s.match(/<command-args>([\s\S]*?)<\/command-args>/);a&&(s=a[1].trim()),s=s.replace(/\n---\nThe user has attached the following file\(s\)[\s\S]*$/,"").replace(/\n---\nThe user has attached the following image\(s\)[\s\S]*$/,"").trim();let o=void(Array.isArray(r=e?.content)&&r.filter(e=>"image"===e.type&&e.source?.data).length);s&&t.push({id:S(),role:"user",content:s,attachmentFilenames:o});break}case"assistant":{let e=n.message,r=Array.isArray(e?.content)?e.content:[],s=r.filter(e=>"text"===e.type&&e.text).map(e=>e.text);for(let e of(s.length>0&&t.push({id:S(),role:"assistant",content:s.join("")}),r))"tool_use"===e.type&&e.name&&t.push({id:S(),role:"tool",content:JSON.stringify(e.input??{},null,2),toolName:e.name});break}case"system":{let e=n.message;e?.subtype==="tool_result"&&e.content&&t.push({id:S(),role:"tool",content:e.content,toolName:`${e.tool_name??"tool"} (result)`})}}return t}(r);return y.NextResponse.json({messages:a})}catch(t){let e=t instanceof Error?t.message:String(t);return console.error("[assistant-sessions] Error:",e),y.NextResponse.json({error:e},{status:500})}}e.s(["GET",0,A,"dynamic",0,"force-dynamic","runtime",0,"nodejs"],866197);var b=e.i(866197);let R=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/internal/assistant/sessions/route",pathname:"/api/internal/assistant/sessions",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/internal/assistant/sessions/route.ts",nextConfigOutput:"standalone",userland:b}),{workAsyncStorage:E,workUnitAsyncStorage:_,serverHooks:j}=R;async function T(e,t,n){n.requestMeta&&(0,s.setRequestMeta)(e,n.requestMeta),R.isDev&&(0,s.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let y="/api/internal/assistant/sessions/route";y=y.replace(/\/index$/,"")||"/";let g=await R.prepare(e,t,{srcPage:y,multiZoneDraftMode:!1});if(!g)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:x,params:S,nextConfig:A,parsedUrl:b,isDraftMode:E,prerenderManifest:_,routerServerContext:j,isOnDemandRevalidate:T,revalidateOnlyGenerated:C,resolvedPathname:N,clientReferenceManifest:P,serverActionsManifest:k}=g,D=(0,i.normalizeAppPath)(y),O=!!(_.dynamicRoutes[D]||_.routes[N]),$=async()=>((null==j?void 0:j.render404)?await j.render404(e,t,b,!1):t.end("This page could not be found"),null);if(O&&!E){let e=!!_.routes[N],t=_.dynamicRoutes[D];if(t&&!1===t.fallback&&!e){if(A.adapterPath)return await $();throw new v.NoFallbackError}}let I=null;!O||R.isDev||E||(I="/index"===(I=N)?"/":I);let U=!0===R.isDev||!O,q=O&&!U;k&&P&&(0,o.setManifestsSingleton)({page:y,clientReferenceManifest:P,serverActionsManifest:k});let L=e.method||"GET",H=(0,a.getTracer)(),F=H.getActiveScopeSpan(),M=!!(null==j?void 0:j.isWrappedByNextServer),W=!!(0,s.getRequestMeta)(e,"minimalMode"),B=(0,s.getRequestMeta)(e,"incrementalCache")||await R.getIncrementalCache(e,A,_,W);null==B||B.resetRequestCache(),globalThis.__incrementalCache=B;let K={params:S,previewProps:_.preview,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts},cacheComponents:!!A.cacheComponents,supportsDynamicResponse:U,incrementalCache:B,cacheLifeProfiles:A.cacheLife,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,s)=>R.onRequestError(e,t,n,s,j)},sharedContext:{buildId:x}},G=new l.NodeNextRequest(e),J=new l.NodeNextResponse(t),z=c.NextRequestAdapter.fromNodeNextRequest(G,(0,c.signalFromNodeResponse)(t));try{let s,o=async e=>R.handle(z,K).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=H.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${L} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t),s&&s!==e&&(s.setAttribute("http.route",n),s.updateName(t))}else e.updateName(`${L} ${y}`)}),i=async s=>{var a,i;let l=async({previousCacheEntry:r})=>{try{if(!W&&T&&C&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await o(s);e.fetchMetrics=K.renderOpts.fetchMetrics;let i=K.renderOpts.pendingWaitUntil;i&&n.waitUntil&&(n.waitUntil(i),i=void 0);let l=K.renderOpts.collectedTags;if(!O)return await (0,d.sendResponse)(G,J,a,K.renderOpts.pendingWaitUntil),null;{let e=await a.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(a.headers);l&&(t[h.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==K.renderOpts.collectedRevalidate&&!(K.renderOpts.collectedRevalidate>=h.INFINITE_CACHE)&&K.renderOpts.collectedRevalidate,n=void 0===K.renderOpts.collectedExpire||K.renderOpts.collectedExpire>=h.INFINITE_CACHE?void 0:K.renderOpts.collectedExpire;return{value:{kind:w.CachedRouteKind.APP_ROUTE,status:a.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await R.onRequestError(e,t,{routerKind:"App Router",routePath:y,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:T})},!1,j),t}},c=await R.handleResponse({req:e,nextConfig:A,cacheKey:I,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:_,isRoutePPREnabled:!1,isOnDemandRevalidate:T,revalidateOnlyGenerated:C,responseGenerator:l,waitUntil:n.waitUntil,isMinimalMode:W});if(!O)return null;if((null==c||null==(a=c.value)?void 0:a.kind)!==w.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(i=c.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});W||t.setHeader("x-nextjs-cache",T?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),E&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,m.fromNodeOutgoingHttpHeaders)(c.value.headers);return W&&O||u.delete(h.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,f.getCacheControlHeader)(c.cacheControl)),await (0,d.sendResponse)(G,J,new Response(c.value.body,{headers:u,status:c.value.status||200})),null};M&&F?await i(F):(s=H.getActiveScopeSpan(),await H.withPropagatedContext(e.headers,()=>H.trace(u.BaseServerSpan.handleRequest,{spanName:`${L} ${y}`,kind:a.SpanKind.SERVER,attributes:{"http.method":L,"http.target":e.url}},i),void 0,!M))}catch(t){if(t instanceof v.NoFallbackError||await R.onRequestError(e,t,{routerKind:"App Router",routePath:D,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:T})},!1,j),O)throw t;return await (0,d.sendResponse)(G,J,new Response(null,{status:500})),null}}e.s(["handler",0,T,"patchFetch",0,function(){return(0,n.patchFetch)({workAsyncStorage:E,workUnitAsyncStorage:_})},"routeModule",0,R,"serverHooks",0,j,"workAsyncStorage",0,E,"workUnitAsyncStorage",0,_],137382)},482848,e=>{e.v(e=>Promise.resolve().then(()=>e(874533)))},268548,e=>{e.v(t=>Promise.all(["server/chunks/[externals]_node_util_0xr.y7p._.js"].map(t=>e.l(t))).then(()=>t(812057)))},144264,e=>{e.v(t=>Promise.all(["server/chunks/[externals]_child_process_0pwkpv9._.js"].map(t=>e.l(t))).then(()=>t(233405)))},534777,e=>{e.v(t=>Promise.all(["server/chunks/[externals]_util_0wtvqkc._.js"].map(t=>e.l(t))).then(()=>t(224361)))},145135,e=>{e.v(t=>Promise.all(["server/chunks/[externals]__00yf3l2._.js","server/chunks/07-d_@anthropic-ai_claude-agent-sdk_sdk_mjs_0.721uk._.js"].map(t=>e.l(t))).then(()=>t(217040)))}];
19
-
20
- //# sourceMappingURL=%5Broot-of-the-server%5D__0_q8qjf._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[750227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},902157,(e,t,r)=>{t.exports=e.x("node:fs",()=>require("node:fs"))},874533,(e,t,r)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},660526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},193695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},918622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},556704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},832319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},270406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},324725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},198840,e=>{"use strict";var t=e.i(855104);let r=["localhost","127.0.0.1","[::1]"],s=new Set(["127.0.0.1","::1","::ffff:127.0.0.1"]),n=/^c[a-z0-9]{20,30}$/;e.s(["requireLocalhost",0,function(e){let n=e.headers.get("x-forwarded-for");if(n&&!n.split(",").map(e=>e.trim()).every(e=>s.has(e)))return t.NextResponse.json({error:"Forbidden"},{status:403});let a=e.headers.get("host")??"";return r.some(e=>a.startsWith(e))?null:t.NextResponse.json({error:"Forbidden"},{status:403})},"validateProjectId",0,function(e){return n.test(e)?null:t.NextResponse.json({error:"Invalid projectId format"},{status:400})},"validateTaskId",0,function(e){return n.test(e)?null:t.NextResponse.json({error:"Invalid taskId format"},{status:400})}])},769310,e=>{"use strict";var t=e.i(902157),r=e.i(874533),s=e.i(750227);function n(e=process.platform){return"win32"===e}function a(e){let t=e.replace(/\r\n|\r|\n/g," ");if(!t.length)return'""';let r=t.replace(/"/g,'""');return/[\s"&<>|^()]/.test(r)?`"${r}"`:r}let o=["CLAUDECODE","CLAUDE_CODE_ENTRYPOINT","CLAUDE_CODE_SESSION","CLAUDE_CODE_PARENT_SESSION"];async function i(e,t={}){let r=t.cwd??process.cwd(),a=t.env??process.env,o=t.platform??process.platform;if(e.includes("/")||e.includes("\\")){let t=s.default.isAbsolute(e)?e:s.default.resolve(r,e);return await p(t,o)?t:null}let l=a.PATH??a.Path??"",u=n(o)?";":":",c=l.split(u).filter(Boolean),d=n(o)?(a.PATHEXT??".EXE;.CMD;.BAT;.COM").split(";").filter(Boolean):[""],m=n(o)&&s.default.extname(e).length>0;for(let t of c)for(let r of n(o)?m?[s.default.join(t,e)]:d.map(r=>s.default.join(t,`${e}${r}`)):[s.default.join(t,e)])if(await p(r,o))return r;return null}let l=e=>(0,r.execSync)(e,{encoding:"utf-8",timeout:5e3});function u(e,t=process.platform,a=l){if(s.default.extname(e)||e.includes("/")||e.includes("\\"))return e;if(!n(t)){try{let t=(0,r.execFileSync)("which",[e],{encoding:"utf-8",timeout:5e3}).trim();if(t)return t}catch{}return e}try{let t=a(`where ${e}`).trim().split("\n").map(e=>e.trim()).filter(Boolean),r=t.find(e=>/\.(cmd|bat|exe)$/i.test(e));if(r)return r;if(t.length>0)return t[0]}catch{}return e}async function c(e,t,r={}){let s=r.env??process.env,n=r.platform??process.platform;return d(await i(e,r)??e,t,s,n)}function d(e,t,r,o){if(!n(o))return{command:e,args:t};let i=s.default.extname(e).toLowerCase();return".cmd"===i||".bat"===i||".com"===i?{command:r.ComSpec||"cmd.exe",args:["/d","/s","/c",[a(e),...t.map(a)].join(" ")]}:{command:e,args:t}}async function p(e,r=process.platform){try{return await t.promises.access(e,n(r)?t.constants.F_OK:t.constants.X_OK),!0}catch{return!1}}async function m(e=process.platform){return n(e)?f():h()}async function h(){try{let e=await t.promises.readFile("/etc/shells","utf-8"),r=[],n=new Map;for(let t of e.split("\n")){let e=t.replace(/#.*/,"").trim();if(!e||!e.startsWith("/")||!await p(e))continue;let a=s.default.basename(e),o=n.get(a)??0;n.set(a,o+1),o>0&&(a=`${a} (${o+1})`),r.push({name:a,path:e})}return r}catch{let e=[];for(let t of["/bin/zsh","/bin/bash","/bin/sh"])await p(t)&&e.push({name:s.default.basename(t),path:t});return e}}async function f(){let e=[],t=[],r=await i("git",{platform:"win32"});if(r){let e=s.default.resolve(s.default.dirname(r),"..","..");t.push(s.default.join(e,"bin","bash.exe"),s.default.join(e,"usr","bin","bash.exe"))}for(let e of[process.env.ProgramW6432,process.env.ProgramFiles,process.env["ProgramFiles(x86)"],process.env.LocalAppData?s.default.join(process.env.LocalAppData,"Programs"):null].filter(Boolean))t.push(s.default.join(e,"Git","bin","bash.exe"),s.default.join(e,"Git","usr","bin","bash.exe"));let n=process.env.USERPROFILE??"";for(let r of(n&&t.push(s.default.join(n,"scoop","apps","git","current","bin","bash.exe")),process.env.CLAUDE_CODE_GIT_BASH_PATH&&t.unshift(process.env.CLAUDE_CODE_GIT_BASH_PATH),t))if(await p(r,"win32")){e.push({name:"Git Bash",path:r});break}let a=await i("pwsh",{platform:"win32"});a&&e.push({name:"PowerShell",path:a});let o=process.env.windir??"C:\\WINDOWS",l=s.default.join(o,"System32","WindowsPowerShell","v1.0","powershell.exe");await p(l,"win32")&&e.push({name:"Windows PowerShell",path:l});let u=process.env.ComSpec??s.default.join(o,"System32","cmd.exe");return await p(u,"win32")&&e.push({name:"Command Prompt",path:u}),e}let g=[{name:"Terminal",bundleName:"Terminal"},{name:"iTerm2",bundleName:"iTerm"},{name:"Warp",bundleName:"Warp"},{name:"Alacritty",bundleName:"Alacritty"},{name:"WezTerm",bundleName:"WezTerm"},{name:"kitty",bundleName:"kitty"},{name:"Hyper",bundleName:"Hyper"}];async function v(e=process.platform){if("darwin"===e){let t=[];for(let r of g)await p(`/Applications/${r.bundleName}.app`,e)&&t.push({name:r.name,value:r.bundleName});return t}if(n(e)){let t=[],r=await i("wt",{platform:e});return r&&t.push({name:"Windows Terminal",value:r}),t}return[]}e.s(["detectShells",0,m,"detectTerminalApps",0,v,"ensurePathInEnv",0,function(e,t=process.platform){let r=n(t)?"Path":"PATH";return(e.PATH??e.Path??"").length>0?e:{...e,[r]:function(e=process.platform){return n(e)?"C:\\Windows\\System32;C:\\Windows;C:\\Windows\\System32\\Wbem":"/usr/local/bin:/opt/homebrew/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin"}(t)}},"resolveCommandPath",0,i,"resolveCommandPathSync",0,u,"resolveSpawnTarget",0,c,"resolveSpawnTargetSync",0,function(e,t,r=process.platform,s){return d(u(e,r,s),t,process.env,r)},"stripClaudeNestingEnv",0,function(e){let t={...e};for(let e of o)delete t[e];return t}])},472129,e=>{"use strict";var t=e.i(902157),r=e.i(660526),s=e.i(750227),n=e.i(769310);let a=["sonnet","opus","haiku","claude-sonnet-4-6","claude-opus-4-6","claude-haiku-4-5-20251001"];e.s(["ClaudeCliAdapter",0,class{buildSpawnArgs(e){let t=["--dangerously-skip-permissions"];e.extraArgs?.length&&t.push(...e.extraArgs),e.resumeSessionId?t.push("--resume",e.resumeSessionId):e.continueLatest?t.push("--continue"):e.prompt&&t.push(e.prompt);let r={...e.envOverrides??{}};return{command:this.resolveCommand(),args:t,env:r}}buildEnvOverrides(e){let t={TOWER_TASK_ID:e.taskId,TOWER_TASK_TITLE:e.taskTitle,TOWER_STARTED_AT:new Date().toISOString(),TOWER_API_URL:e.apiUrl};return e.callbackUrl&&(t.CALLBACK_URL=e.callbackUrl),t}async installHooks(e){try{let e=this.readSettings(),t=e.hooks??{},r=process.cwd().replace(/\\/g,"/"),n=!1,a=this.getHookArray(t,"SessionStart");if(!this.hasHook(a,"session-start-hook.js")){let e=s.join(r,"scripts","session-start-hook.js").replace(/\\/g,"/");a.push({hooks:[{command:`node "${e}"`,timeout:5,type:"command"}]}),t.SessionStart=a,n=!0}let o=this.getHookArray(t,"PostToolUse");if(!this.hasHook(o,"post-tool-hook.js")){let e=s.join(r,"scripts","post-tool-hook.js").replace(/\\/g,"/");o.push({hooks:[{command:`node "${e}"`,timeout:10,type:"command"}],matcher:"Write|Edit|MultiEdit"}),t.PostToolUse=o,n=!0}let i=this.getHookArray(t,"Stop");if(!this.hasHook(i,"stop-hook.js")){let e=s.join(r,"scripts","stop-hook.js").replace(/\\/g,"/");i.push({hooks:[{command:`node "${e}"`,timeout:5,type:"command"}]}),t.Stop=i,n=!0}return n&&(e.hooks=t,this.writeSettings(e)),{ok:!0,method:"file",detail:this.getSettingsPath()}}catch(e){return{ok:!1,method:"file",detail:this.getSettingsPath(),error:e instanceof Error?e.message:String(e)}}}async uninstallHooks(){try{let e=this.readSettings(),t=e.hooks??{},r=["session-start-hook.js","post-tool-hook.js","stop-hook.js"];for(let e of["SessionStart","PostToolUse","Stop"]){let s=this.getHookArray(t,e);t[e]=s.filter(e=>!e.hooks?.some(e=>r.some(t=>e.command?.includes(t))))}return e.hooks=t,this.writeSettings(e),{ok:!0,method:"file",detail:this.getSettingsPath()}}catch(e){return{ok:!1,method:"file",detail:this.getSettingsPath(),error:e instanceof Error?e.message:String(e)}}}async isHooksInstalled(){let e=this.readSettings().hooks??{},t=this.getHookArray(e,"PostToolUse");return this.hasHook(t,"post-tool-hook.js")}async installMcp(e,t={}){let r=t.scope??"user",s={command:e.command,args:e.args};e.env&&Object.keys(e.env).length>0&&(s.env=e.env);let n=this.resolveCommand(),a=["mcp","add-json","-s",r,e.name,JSON.stringify(s)];try{return await this.runCli(n,["mcp","remove","-s",r,e.name],t.cwd).catch(()=>{}),await this.runCli(n,a,t.cwd),{ok:!0,method:"cli",detail:`${n} ${a.join(" ")}`}}catch(e){return{ok:!1,method:"cli",detail:`${n} ${a.join(" ")}`,error:e instanceof Error?e.message:String(e)}}}async uninstallMcp(e,t={}){let r=t.scope??"user",s=this.resolveCommand(),n=["mcp","remove","-s",r,e];try{return await this.runCli(s,n,t.cwd),{ok:!0,method:"cli",detail:`${s} ${n.join(" ")}`}}catch(e){return{ok:!1,method:"cli",detail:`${s} ${n.join(" ")}`,error:e instanceof Error?e.message:String(e)}}}async isMcpInstalled(e,t={}){let r=this.resolveCommand();try{return await this.runCli(r,["mcp","get",e],t.cwd,5e3),!0}catch{return!1}}async installSkill(e,r){let n=s.join(this.getConfigDir(),"skills",e);try{if(!t.existsSync(r))return{ok:!1,method:"symlink",detail:n,error:`Source skill dir does not exist: ${r}`};t.mkdirSync(s.dirname(n),{recursive:!0});let e=await t.promises.lstat(n).catch(()=>null);if(e)if(!e.isSymbolicLink())return{ok:!1,method:"symlink",detail:n,error:`Refusing to overwrite non-symlink at ${n}`};else{let e=await t.promises.readlink(n);if(s.resolve(e)===s.resolve(r))return{ok:!0,method:"symlink",detail:`${n} → ${r} (already)`};await t.promises.unlink(n)}return await t.promises.symlink(r,n,"dir"),{ok:!0,method:"symlink",detail:`${n} → ${r}`}}catch(e){return{ok:!1,method:"symlink",detail:n,error:e instanceof Error?e.message:String(e)}}}async uninstallSkill(e){let r=s.join(this.getConfigDir(),"skills",e);try{let e=await t.promises.lstat(r).catch(()=>null);if(!e)return{ok:!0,method:"symlink",detail:`${r} (already absent)`};if(!e.isSymbolicLink())return{ok:!1,method:"symlink",detail:r,error:`Refusing to remove non-symlink at ${r}`};return await t.promises.unlink(r),{ok:!0,method:"symlink",detail:r}}catch(e){return{ok:!1,method:"symlink",detail:r,error:e instanceof Error?e.message:String(e)}}}async isSkillInstalled(e,r){let n=s.join(this.getConfigDir(),"skills",e);try{if(!(await t.promises.lstat(n)).isSymbolicLink())return!1;if(!r)return!0;let e=await t.promises.readlink(n),a=s.isAbsolute(e)?e:s.resolve(s.dirname(n),e);return s.resolve(a)===s.resolve(r)}catch{return!1}}async runCli(t,r,s,n=1e4){let{execFile:a}=await e.A(482848),{promisify:o}=await e.A(268548),i=o(a),{stdout:l}=await i(t,r,{cwd:s,timeout:n});return l}async isAvailable(){return null!==await this.getVersion()}async getVersion(){try{let{execFile:t}=await e.A(144264),{promisify:r}=await e.A(534777),s=r(t),n=this.resolveCommand(),{stdout:a}=await s(n,["--version"],{timeout:5e3});return a.trim()||null}catch{return null}}async getModels(){return a}getConfigDir(){return s.join(r.homedir(),".claude")}getSettingsPath(){return s.join(this.getConfigDir(),"settings.json")}getSessionsDir(){return s.join(this.getConfigDir(),"projects")}getApiKeyInfo(){return{envVar:"ANTHROPIC_API_KEY",required:!1}}buildHelloProbeArgs(){return{command:this.resolveCommand(),args:["--print","-","--output-format","stream-json","--verbose"]}}resolveCommand(){return process.env.CLAUDE_CODE_PATH?process.env.CLAUDE_CODE_PATH:(0,n.resolveCommandPathSync)("claude")}readSettings(){try{return JSON.parse(t.readFileSync(this.getSettingsPath(),"utf-8"))}catch{return{}}}writeSettings(e){let r=this.getConfigDir();t.existsSync(r)||t.mkdirSync(r,{recursive:!0}),t.writeFileSync(this.getSettingsPath(),JSON.stringify(e,null,2),"utf-8")}getHookArray(e,t){let r=e[t];return Array.isArray(r)?r:[]}hasHook(e,t){return e.some(e=>e.hooks?.some(e=>e.command?.includes(t)))}}])},212019,e=>{"use strict";var t=e.i(765876),r=e.i(675896),s=e.i(959160),n=e.i(97944),a=e.i(86757),o=e.i(204144),i=e.i(273436),l=e.i(743641),u=e.i(813766),c=e.i(840884),d=e.i(498814),p=e.i(780006),m=e.i(544432),h=e.i(772005),f=e.i(450223),g=e.i(193695);e.i(628400);var v=e.i(800071),y=e.i(855104),k=e.i(198840),w=e.i(750227);let x=new(e.i(472129)).ClaudeCliAdapter;async function S(e){let t=(0,k.requireLocalhost)(e);if(t)return t;let r=await x.isHooksInstalled(),s=w.join(process.cwd(),"scripts","post-tool-hook.js");return y.NextResponse.json({installed:r,hookPath:s})}async function C(e){let t=(0,k.requireLocalhost)(e);if(t)return t;let r=process.env.NEXTAUTH_URL??`http://localhost:${process.env.PORT??3e3}`;return await x.installHooks(r),y.NextResponse.json({success:!0})}async function A(e){let t=(0,k.requireLocalhost)(e);return t||(await x.uninstallHooks(),y.NextResponse.json({success:!0}))}e.s(["DELETE",0,A,"GET",0,S,"POST",0,C,"dynamic",0,"force-dynamic","runtime",0,"nodejs"],730599);var E=e.i(730599);let b=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/internal/hooks/install/route",pathname:"/api/internal/hooks/install",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/internal/hooks/install/route.ts",nextConfigOutput:"standalone",userland:E}),{workAsyncStorage:R,workUnitAsyncStorage:T,serverHooks:j}=b;async function P(e,t,s){s.requestMeta&&(0,n.setRequestMeta)(e,s.requestMeta),b.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let y="/api/internal/hooks/install/route";y=y.replace(/\/index$/,"")||"/";let k=await b.prepare(e,t,{srcPage:y,multiZoneDraftMode:!1});if(!k)return t.statusCode=400,t.end("Bad Request"),null==s.waitUntil||s.waitUntil.call(s,Promise.resolve()),null;let{buildId:w,params:x,nextConfig:S,parsedUrl:C,isDraftMode:A,prerenderManifest:E,routerServerContext:R,isOnDemandRevalidate:T,revalidateOnlyGenerated:j,resolvedPathname:P,clientReferenceManifest:_,serverActionsManifest:N}=k,O=(0,i.normalizeAppPath)(y),H=!!(E.dynamicRoutes[O]||E.routes[P]),D=async()=>((null==R?void 0:R.render404)?await R.render404(e,t,C,!1):t.end("This page could not be found"),null);if(H&&!A){let e=!!E.routes[P],t=E.dynamicRoutes[O];if(t&&!1===t.fallback&&!e){if(S.adapterPath)return await D();throw new g.NoFallbackError}}let I=null;!H||b.isDev||A||(I="/index"===(I=P)?"/":I);let $=!0===b.isDev||!H,U=H&&!$;N&&_&&(0,o.setManifestsSingleton)({page:y,clientReferenceManifest:_,serverActionsManifest:N});let q=e.method||"GET",L=(0,a.getTracer)(),W=L.getActiveScopeSpan(),M=!!(null==R?void 0:R.isWrappedByNextServer),F=!!(0,n.getRequestMeta)(e,"minimalMode"),B=(0,n.getRequestMeta)(e,"incrementalCache")||await b.getIncrementalCache(e,S,E,F);null==B||B.resetRequestCache(),globalThis.__incrementalCache=B;let K={params:x,previewProps:E.preview,renderOpts:{experimental:{authInterrupts:!!S.experimental.authInterrupts},cacheComponents:!!S.cacheComponents,supportsDynamicResponse:$,incrementalCache:B,cacheLifeProfiles:S.cacheLife,waitUntil:s.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,s,n)=>b.onRequestError(e,t,s,n,R)},sharedContext:{buildId:w}},G=new l.NodeNextRequest(e),X=new l.NodeNextResponse(t),V=u.NextRequestAdapter.fromNodeNextRequest(G,(0,u.signalFromNodeResponse)(t));try{let n,o=async e=>b.handle(V,K).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=L.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==c.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let s=r.get("next.route");if(s){let t=`${q} ${s}`;e.setAttributes({"next.route":s,"http.route":s,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",s),n.updateName(t))}else e.updateName(`${q} ${y}`)}),i=async n=>{var a,i;let l=async({previousCacheEntry:r})=>{try{if(!F&&T&&j&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await o(n);e.fetchMetrics=K.renderOpts.fetchMetrics;let i=K.renderOpts.pendingWaitUntil;i&&s.waitUntil&&(s.waitUntil(i),i=void 0);let l=K.renderOpts.collectedTags;if(!H)return await (0,p.sendResponse)(G,X,a,K.renderOpts.pendingWaitUntil),null;{let e=await a.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(a.headers);l&&(t[f.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==K.renderOpts.collectedRevalidate&&!(K.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&K.renderOpts.collectedRevalidate,s=void 0===K.renderOpts.collectedExpire||K.renderOpts.collectedExpire>=f.INFINITE_CACHE?void 0:K.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:a.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:s}}}}catch(t){throw(null==r?void 0:r.isStale)&&await b.onRequestError(e,t,{routerKind:"App Router",routePath:y,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:T})},!1,R),t}},u=await b.handleResponse({req:e,nextConfig:S,cacheKey:I,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:E,isRoutePPREnabled:!1,isOnDemandRevalidate:T,revalidateOnlyGenerated:j,responseGenerator:l,waitUntil:s.waitUntil,isMinimalMode:F});if(!H)return null;if((null==u||null==(a=u.value)?void 0:a.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(i=u.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});F||t.setHeader("x-nextjs-cache",T?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),A&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let c=(0,m.fromNodeOutgoingHttpHeaders)(u.value.headers);return F&&H||c.delete(f.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||c.get("Cache-Control")||c.set("Cache-Control",(0,h.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(G,X,new Response(u.value.body,{headers:c,status:u.value.status||200})),null};M&&W?await i(W):(n=L.getActiveScopeSpan(),await L.withPropagatedContext(e.headers,()=>L.trace(c.BaseServerSpan.handleRequest,{spanName:`${q} ${y}`,kind:a.SpanKind.SERVER,attributes:{"http.method":q,"http.target":e.url}},i),void 0,!M))}catch(t){if(t instanceof g.NoFallbackError||await b.onRequestError(e,t,{routerKind:"App Router",routePath:O,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:T})},!1,R),H)throw t;return await (0,p.sendResponse)(G,X,new Response(null,{status:500})),null}}e.s(["handler",0,P,"patchFetch",0,function(){return(0,s.patchFetch)({workAsyncStorage:R,workUnitAsyncStorage:T})},"routeModule",0,b,"serverHooks",0,j,"workAsyncStorage",0,R,"workUnitAsyncStorage",0,T],212019)},482848,e=>{e.v(e=>Promise.resolve().then(()=>e(874533)))},268548,e=>{e.v(t=>Promise.all(["server/chunks/[externals]_node_util_0xr.y7p._.js"].map(t=>e.l(t))).then(()=>t(812057)))},144264,e=>{e.v(t=>Promise.all(["server/chunks/[externals]_child_process_0pwkpv9._.js"].map(t=>e.l(t))).then(()=>t(233405)))},534777,e=>{e.v(t=>Promise.all(["server/chunks/[externals]_util_0wtvqkc._.js"].map(t=>e.l(t))).then(()=>t(224361)))}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__0vasg9u._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[814747,(a,b,c)=>{b.exports=a.x("path",()=>require("path"))},446786,(a,b,c)=>{b.exports=a.x("os",()=>require("os"))},918622,(a,b,c)=>{b.exports=a.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},556704,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},832319,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},324725,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},120635,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},43285,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/dynamic-access-async-storage.external.js",()=>require("next/dist/server/app-render/dynamic-access-async-storage.external.js"))},207198,a=>{"use strict";var b=a.i(780410);let c=(0,b.createServerReference)("4067fd4fb0d2c621f4cf76052ed7f61daeeb0ee506",b.callServer,void 0,b.findSourceMapURL,"getLabelsForWorkspace");a.s(["getLabelsForWorkspace",0,c])},607219,a=>{"use strict";let b=(0,a.i(711796).default)("archive",[["rect",{width:"20",height:"5",x:"2",y:"3",rx:"1",key:"1wp1u1"}],["path",{d:"M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8",key:"1s80jp"}],["path",{d:"M10 12h4",key:"a56b0p"}]]);a.s(["Archive",0,b],607219)},350739,a=>{"use strict";let b=(0,a.i(711796).default)("file-text",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);a.s(["FileText",0,b],350739)},429246,a=>{"use strict";var b=a.i(728778),c=a.i(368114);a.s(["Textarea",0,function({className:a,...d}){return(0,b.jsx)("textarea",{"data-slot":"textarea",className:(0,c.cn)("flex field-sizing-content min-h-16 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-2 text-base transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",a),...d})}])},975231,a=>{"use strict";let b=(0,a.i(711796).default)("trash-2",[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]]);a.s(["Trash2",0,b],975231)},774881,a=>{"use strict";let b=(0,a.i(711796).default)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);a.s(["Plus",0,b],774881)},690251,a=>{"use strict";let b=(0,a.i(711796).default)("pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]);a.s(["Pencil",0,b],690251)},463652,(a,b,c)=>{"use strict";c._=function(a){return a&&a.__esModule?a:{default:a}}},923266,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"BailoutToCSR",{enumerable:!0,get:function(){return e}});let d=a.r(306150);function e({reason:a,children:b}){throw Object.defineProperty(new d.BailoutToCSRError(a),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0})}},846982,(a,b,c)=>{"use strict";function d(a){return a.split("/").map(a=>encodeURIComponent(a)).join("/")}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"encodeURIPath",{enumerable:!0,get:function(){return d}})},943814,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"PreloadChunks",{enumerable:!0,get:function(){return i}});let d=a.r(728778),e=a.r(986099),f=a.r(556704),g=a.r(846982),h=a.r(427756);function i({moduleIds:a}){let b=f.workAsyncStorage.getStore();if(void 0===b)return null;let c=[];if(b.reactLoadableManifest&&a){let d=b.reactLoadableManifest;for(let b of a){if(!d[b])continue;let a=d[b].files;c.push(...a)}}if(0===c.length)return null;let j=(0,h.getAssetTokenQuery)();return(0,d.jsx)(d.Fragment,{children:c.map(a=>{let c=`${b.assetPrefix}/_next/${(0,g.encodeURIPath)(a)}${j}`;return a.endsWith(".css")?(0,d.jsx)("link",{precedence:"dynamic",href:c,rel:"stylesheet",as:"style",nonce:b.nonce},a):((0,e.preload)(c,{as:"script",fetchPriority:"low",nonce:b.nonce}),null)})})}},451358,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"default",{enumerable:!0,get:function(){return j}});let d=a.r(728778),e=a.r(374637),f=a.r(923266),g=a.r(943814);function h(a){return{default:a&&"default"in a?a.default:a}}let i={loader:()=>Promise.resolve(h(()=>null)),loading:null,ssr:!0},j=function(a){let b={...i,...a},c=(0,e.lazy)(()=>b.loader().then(h)),j=b.loading;function k(a){let h=j?(0,d.jsx)(j,{isLoading:!0,pastDelay:!0,error:null}):null,i=!b.ssr||!!b.loading,k=i?e.Suspense:e.Fragment,l=b.ssr?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(g.PreloadChunks,{moduleIds:b.modules}),(0,d.jsx)(c,{...a})]}):(0,d.jsx)(f.BailoutToCSR,{reason:"next/dynamic",children:(0,d.jsx)(c,{...a})});return(0,d.jsx)(k,{...i?{fallback:h}:{},children:l})}return k.displayName="LoadableComponent",k}},969032,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"default",{enumerable:!0,get:function(){return e}});let d=a.r(463652)._(a.r(451358));function e(a,b){let c={};"function"==typeof a&&(c.loader=a);let e={...c,...b};return(0,d.default)({...e,modules:e.loadableGenerated?.modules})}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},91756,a=>{"use strict";let b=(0,a.i(711796).default)("chevrons-left",[["path",{d:"m11 17-5-5 5-5",key:"13zhaf"}],["path",{d:"m18 17-5-5 5-5",key:"h8a8et"}]]);a.s(["ChevronsLeft",0,b],91756)},394259,a=>{"use strict";let b=(0,a.i(711796).default)("sparkles",[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]]);a.s(["Sparkles",0,b],394259)},968244,a=>{"use strict";var b=a.i(780410);let c=(0,b.createServerReference)("6010be27d73fb2711d5121f370499004d215316e90",b.callServer,void 0,b.findSourceMapURL,"analyzeProjectDirectory");a.s(["analyzeProjectDirectory",0,c])},829905,a=>{"use strict";var b=a.i(780410);let c=(0,b.createServerReference)("40b29676c80b38d0d135fed4bcbd857eb6583c7787",b.callServer,void 0,b.findSourceMapURL,"createProject");a.s(["createProject",0,c])},595999,380096,a=>{"use strict";var b=a.i(728778),c=a.i(374637),d=a.i(616335),e=a.i(192369),f=a.i(699570);class g extends c.Component{constructor(a){super(a),this.state={hasError:!1,error:null}}static getDerivedStateFromError(a){return{hasError:!0,error:a}}componentDidCatch(a,b){console.error("[ErrorBoundary]",a,b)}render(){return this.state.hasError?this.props.fallback?this.props.fallback:(0,b.jsxs)("div",{className:"flex flex-col items-center justify-center gap-3 p-8 text-center",children:[(0,b.jsx)(d.AlertCircle,{className:"h-8 w-8 text-destructive"}),(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"text-sm font-medium text-foreground",children:"Something went wrong"}),(0,b.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:this.state.error?.message??"An unexpected error occurred"})]}),(0,b.jsxs)(f.Button,{variant:"outline",onClick:()=>this.setState({hasError:!1,error:null}),children:[(0,b.jsx)(e.RefreshCw,{className:"mr-2 h-3.5 w-3.5"}),"Retry"]})]}):this.props.children}}a.s(["ErrorBoundary",0,g],595999);var h=a.i(780410);let i=(0,h.createServerReference)("00c92aaae55d20ab311505ed9d61f2ccd03631bd11",h.callServer,void 0,h.findSourceMapURL,"getActualWsPort");a.s(["getActualWsPort",0,i],380096)},940271,a=>{"use strict";var b=a.i(374637),c=(a,b,c,d,e,f,g,h)=>{let i=document.documentElement,j=["light","dark"];function k(b){var c;(Array.isArray(a)?a:[a]).forEach(a=>{let c="class"===a,d=c&&f?e.map(a=>f[a]||a):e;c?(i.classList.remove(...d),i.classList.add(f&&f[b]?f[b]:b)):i.setAttribute(a,b)}),c=b,h&&j.includes(c)&&(i.style.colorScheme=c)}if(d)k(d);else try{let a=localStorage.getItem(b)||c,d=g&&"system"===a?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":a;k(d)}catch(a){}},d=["light","dark"],e="(prefers-color-scheme: dark)",f=b.createContext(void 0),g={setTheme:a=>{},themes:[]},h=["light","dark"],i=({forcedTheme:a,disableTransitionOnChange:c=!1,enableSystem:g=!0,enableColorScheme:i=!0,storageKey:n="theme",themes:o=h,defaultTheme:p=g?"system":"light",attribute:q="data-theme",value:r,children:s,nonce:t,scriptProps:u})=>{let[v,w]=b.useState(()=>k(n,p)),[x,y]=b.useState(()=>"system"===v?m():v),z=r?Object.values(r):o,A=b.useCallback(a=>{let b=a;if(!b)return;"system"===a&&g&&(b=m());let e=r?r[b]:b,f=c?l(t):null,h=document.documentElement,j=a=>{"class"===a?(h.classList.remove(...z),e&&h.classList.add(e)):a.startsWith("data-")&&(e?h.setAttribute(a,e):h.removeAttribute(a))};if(Array.isArray(q)?q.forEach(j):j(q),i){let a=d.includes(p)?p:null,c=d.includes(b)?b:a;h.style.colorScheme=c}null==f||f()},[t]),B=b.useCallback(a=>{let b="function"==typeof a?a(v):a;w(b);try{localStorage.setItem(n,b)}catch(a){}},[v]),C=b.useCallback(b=>{y(m(b)),"system"===v&&g&&!a&&A("system")},[v,a]);b.useEffect(()=>{let a=window.matchMedia(e);return a.addListener(C),C(a),()=>a.removeListener(C)},[C]),b.useEffect(()=>{let a=a=>{a.key===n&&(a.newValue?w(a.newValue):B(p))};return window.addEventListener("storage",a),()=>window.removeEventListener("storage",a)},[B]),b.useEffect(()=>{A(null!=a?a:v)},[a,v]);let D=b.useMemo(()=>({theme:v,setTheme:B,forcedTheme:a,resolvedTheme:"system"===v?x:v,themes:g?[...o,"system"]:o,systemTheme:g?x:void 0}),[v,B,a,x,g,o]);return b.createElement(f.Provider,{value:D},b.createElement(j,{forcedTheme:a,storageKey:n,attribute:q,enableSystem:g,enableColorScheme:i,defaultTheme:p,value:r,themes:o,nonce:t,scriptProps:u}),s)},j=b.memo(({forcedTheme:a,storageKey:d,attribute:e,enableSystem:f,enableColorScheme:g,defaultTheme:h,value:i,themes:j,nonce:k,scriptProps:l})=>{let m=JSON.stringify([e,d,h,a,j,i,f,g]).slice(1,-1);return b.createElement("script",{...l,suppressHydrationWarning:!0,nonce:k,dangerouslySetInnerHTML:{__html:`(${c.toString()})(${m})`}})}),k=(a,b)=>{},l=a=>{let b=document.createElement("style");return a&&b.setAttribute("nonce",a),b.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),document.head.appendChild(b),()=>{window.getComputedStyle(document.body),setTimeout(()=>{document.head.removeChild(b)},1)}},m=a=>(a||(a=window.matchMedia(e)),a.matches?"dark":"light");a.s(["ThemeProvider",0,a=>b.useContext(f)?b.createElement(b.Fragment,null,a.children):b.createElement(i,{...a}),"useTheme",0,()=>{var a;return null!=(a=b.useContext(f))?a:g}])},51726,a=>{"use strict";var b=a.i(780410);let c=(0,b.createServerReference)("40cfcf5cf3e6dba3ee24e20f9f43c4f786966433a6",b.callServer,void 0,b.findSourceMapURL,"installExtension");a.s(["installExtension",0,c])},191117,a=>{"use strict";let b=(0,a.i(711796).default)("file-code",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 12.5 8 15l2 2.5",key:"1tg20x"}],["path",{d:"m14 12.5 2 2.5-2 2.5",key:"yinavb"}]]);a.s(["FileCode",0,b],191117)},953093,a=>{"use strict";var b=a.i(573242),c=a.i(191117);let d={rg:{id:"rg",name:"代码搜索 (ripgrep)",description:"基于 rg 的全文代码搜索",icon:b.Search,sizeMB:5,homepageUrl:"https://github.com/BurntSushi/ripgrep#installation"},monaco:{id:"monaco",name:"代码编辑器 (Monaco)",description:"VS Code 同款 Web 编辑器",icon:c.FileCode,sizeMB:15,homepageUrl:"https://microsoft.github.io/monaco-editor/"}},e=[d.rg,d.monaco];a.s(["listExtensionMetadata",0,function(){return e}])},62948,a=>{"use strict";var b=a.i(780410);let c=(0,b.createServerReference)("60e2acb3d36c142a3e4d24fea825c4c133651c0c53",b.callServer,void 0,b.findSourceMapURL,"setConfigValue");a.s(["setConfigValue",0,c])},761052,86354,a=>{"use strict";var b=a.i(711796);let c=(0,b.default)("sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]);a.s(["Sun",0,c],761052);let d=(0,b.default)("moon",[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]]);a.s(["Moon",0,d],86354)},884664,a=>{"use strict";let b=(0,a.i(711796).default)("circle-check",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);a.s(["default",0,b])},54384,a=>{"use strict";var b=a.i(758349);a.s(["X",()=>b.default])},573242,a=>{"use strict";var b=a.i(648717);a.s(["Search",()=>b.default])},146758,745539,a=>{"use strict";let b=(0,a.i(711796).default)("folder",[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]]);a.s(["Folder",0,b],146758);var c=a.i(219551);a.s(["ChevronUp",()=>c.default],745539)},192369,a=>{"use strict";let b=(0,a.i(711796).default)("refresh-cw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);a.s(["RefreshCw",0,b],192369)},622945,a=>{"use strict";let b=(0,a.i(711796).default)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);a.s(["default",0,b])},87309,a=>{"use strict";var b=a.i(728778),c=a.i(374637),d=a.i(780410);let e=(0,d.createServerReference)("400240ee16769f00f7ca5c4ecea3ef0ce7456de6f8",d.callServer,void 0,d.findSourceMapURL,"checkExtension");var f=a.i(51726);let g=(0,d.createServerReference)("40abaad3bddaedba77f17bf2518e483b46a19273c2",d.callServer,void 0,d.findSourceMapURL,"uninstallExtension");var h=a.i(953093);let i={installed:!1},j=(0,c.createContext)(null);a.s(["ExtensionContext",0,j,"ExtensionProvider",0,function({children:a,initialStatus:d}){let[k,l]=(0,c.useState)(()=>d??Object.fromEntries((0,h.listExtensionMetadata)().map(a=>[a.id,i]))),[m,n]=(0,c.useState)(new Set),o=(0,c.useRef)(new Set),p=(0,c.useCallback)(async a=>{let b=await e(a);l(c=>({...c,[a]:b}))},[]),q=(0,c.useCallback)(async a=>{if(o.current.has(a))return{success:!1,error:"install already in progress"};o.current.add(a),n(b=>{let c=new Set(b);return c.add(a),c});try{let b=await (0,f.installExtension)(a);return b.success&&await p(a),b}finally{o.current.delete(a),n(b=>{let c=new Set(b);return c.delete(a),c})}},[p]),r=(0,c.useCallback)(async a=>{if(o.current.has(a))return{success:!1,error:"operation already in progress"};o.current.add(a),n(b=>{let c=new Set(b);return c.add(a),c});try{let b=await g(a);return b.success&&await p(a),b}finally{o.current.delete(a),n(b=>{let c=new Set(b);return c.delete(a),c})}},[p]),s=(0,c.useMemo)(()=>({statusMap:k,loading:!1,installing:m,refresh:p,install:q,uninstall:r}),[k,m,p,q,r]);return(0,b.jsx)(j.Provider,{value:s,children:a})}],87309)},369289,a=>{"use strict";let b=(0,a.i(711796).default)("settings",[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);a.s(["Settings",0,b],369289)},714982,a=>{"use strict";var b=a.i(780410);let c=(0,b.createServerReference)("605f0858448ef1a385c411f65e042acd14987cf0be",b.callServer,void 0,b.findSourceMapURL,"getConfigValue");a.s(["getConfigValue",0,c])},190076,a=>{"use strict";let b=(0,a.i(711796).default)("bell",[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0",key:"vwvbt9"}],["path",{d:"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326",key:"11g9vi"}]]);a.s(["Bell",0,b],190076)},563658,a=>{"use strict";var b,c=a.i(728778);a.s([],725980),a.i(725980);var d=a.i(374637),e=a.i(327104),f=a.i(74686),g=a.i(140988),h=a.i(830067),i=a.i(420074),j=a.i(535011),k=a.i(213200),l=a.i(475295),m=a.i(366752),n=a.i(19926),o=a.i(862306);let p=d.createContext(void 0);var q=a.i(258802);let r=((b={}).checked="data-checked",b.unchecked="data-unchecked",b.disabled="data-disabled",b.readonly="data-readonly",b.required="data-required",b.valid="data-valid",b.invalid="data-invalid",b.touched="data-touched",b.dirty="data-dirty",b.filled="data-filled",b.focused="data-focused",b),s={...q.fieldValidityMapping,checked:a=>a?{[r.checked]:""}:{[r.unchecked]:""}};var t=a.i(233619),u=a.i(166388),v=a.i(77469),w=a.i(584395),x=a.i(303722),y=a.i(622047),z=a.i(100737),A=a.i(706092);let B=d.forwardRef(function(a,b){let{checked:o,className:q,defaultChecked:r,"aria-labelledby":B,id:C,inputRef:D,name:E,nativeButton:F=!1,onCheckedChange:G,readOnly:H=!1,required:I=!1,disabled:J=!1,render:K,uncheckedValue:L,value:M,...N}=a,{clearErrors:O}=(0,v.useFormContext)(),{state:P,setTouched:Q,setDirty:R,validityData:S,setFilled:T,setFocused:U,shouldValidateOnChange:V,validationMode:W,disabled:X,name:Y,validation:Z}=(0,u.useFieldRootContext)(),{labelId:$}=(0,w.useLabelableContext)(),_=X||J,aa=Y??E,ab=(0,f.useStableCallback)(G),ac=d.useRef(null),ad=(0,g.useMergedRefs)(ac,D,Z.inputRef),ae=d.useRef(null),af=(0,m.useBaseUiId)(),ag=(0,x.useLabelableId)({id:C,implicit:!1,controlRef:ae}),ah=F?void 0:ag,[ai,aj]=(0,e.useControlled)({controlled:o,default:!!r,name:"Switch",state:"checked"});(0,t.useField)({id:af,commit:Z.commit,value:ai,controlRef:ae,name:aa,getValue:()=>ai}),(0,h.useIsoLayoutEffect)(()=>{ac.current&&T(ac.current.checked)},[ac,T]),(0,A.useValueChanged)(ai,()=>{O(aa),R(ai!==S.initialValue),T(ai),V()?Z.commit(ai):Z.commit(ai,!0)});let{getButtonProps:ak,buttonRef:al}=(0,n.useButton)({disabled:_,native:F}),am=function(a,b,c,e=!0,f){let[g,i]=d.useState(),j=(0,m.useBaseUiId)(f?`${f}-label`:void 0),k=a??b??g;return(0,h.useIsoLayoutEffect)(()=>{let d=a||b||!e?void 0:function(a,b){let c=function(a){if(!a)return;let b=a.parentElement;if(b&&"LABEL"===b.tagName)return b;let c=a.id;if(c){let b=a.nextElementSibling;if(b&&b.htmlFor===c)return b}let d=a.labels;return d&&d[0]}(a);if(c)return!c.id&&b&&(c.id=b),c.id||void 0}(c.current,j);g!==d&&i(d)}),k}(B,$,ac,!F,ah),an=d.useMemo(()=>(0,l.mergeProps)({checked:ai,disabled:_,id:ah,name:aa,required:I,style:aa?i.visuallyHiddenInput:i.visuallyHidden,tabIndex:-1,type:"checkbox","aria-hidden":!0,ref:ad,onChange(a){if(a.nativeEvent.defaultPrevented)return;let b=a.target.checked,c=(0,y.createChangeEventDetails)(z.REASONS.none,a.nativeEvent);ab?.(b,c),c.isCanceled||aj(b)},onFocus(){ae.current?.focus()}},Z.getInputValidationProps,void 0!==M?{value:M}:j.EMPTY_OBJECT),[ai,_,ad,ah,aa,ab,I,aj,Z,M]),ao=d.useMemo(()=>({...P,checked:ai,disabled:_,readOnly:H,required:I}),[P,ai,_,H,I]),ap=(0,k.useRenderElement)("span",a,{state:ao,ref:[b,ae,al],props:[{id:F?ag:af,role:"switch","aria-checked":ai,"aria-readonly":H||void 0,"aria-required":I||void 0,"aria-labelledby":am,onFocus(){_||U(!0)},onBlur(){let a=ac.current;a&&!_&&(Q(!0),U(!1),"onBlur"===W&&Z.commit(a.checked))},onClick(a){H||_||(a.preventDefault(),ac.current?.dispatchEvent(new PointerEvent("click",{bubbles:!0,shiftKey:a.shiftKey,ctrlKey:a.ctrlKey,altKey:a.altKey,metaKey:a.metaKey})))}},Z.getValidationProps,N,ak],stateAttributesMapping:s});return(0,c.jsxs)(p.Provider,{value:ao,children:[ap,!ai&&aa&&void 0!==L&&(0,c.jsx)("input",{type:"hidden",name:aa,value:L}),(0,c.jsx)("input",{...an})]})}),C=d.forwardRef(function(a,b){let{render:c,className:e,...f}=a,{state:g}=(0,u.useFieldRootContext)(),h=function(){let a=d.useContext(p);if(void 0===a)throw Error((0,o.default)(63));return a}(),i={...g,...h};return(0,k.useRenderElement)("span",a,{state:i,ref:b,stateAttributesMapping:s,props:f})});a.s(["Root",0,B,"Thumb",0,C],88348);var D=a.i(88348),D=D,E=a.i(368114);a.s(["Switch",0,function({className:a,size:b="default",...d}){return(0,c.jsx)(D.Root,{"data-slot":"switch","data-size":b,className:(0,E.cn)("peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50",a),...d,children:(0,c.jsx)(D.Thumb,{"data-slot":"switch-thumb",className:"pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground"})})}],563658)},881107,a=>{"use strict";let b=(0,a.i(711796).default)("tag",[["path",{d:"M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z",key:"vktsd0"}],["circle",{cx:"7.5",cy:"7.5",r:".5",fill:"currentColor",key:"kqv944"}]]);a.s(["Tag",0,b],881107)}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__0sw9hqr._.js.map