tower-studio 0.2.6 → 0.2.7

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 (282) 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 +47 -47
  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/git/route.js.nft.json +1 -1
  27. package/.next/standalone/.next/server/app/api/internal/assistant/attachments/route.js +1 -2
  28. package/.next/standalone/.next/server/app/api/internal/assistant/attachments/route.js.nft.json +1 -1
  29. package/.next/standalone/.next/server/app/api/internal/assistant/chat/route.js +3 -2
  30. package/.next/standalone/.next/server/app/api/internal/assistant/chat/route.js.nft.json +1 -1
  31. package/.next/standalone/.next/server/app/api/internal/assistant/route.js +1 -2
  32. package/.next/standalone/.next/server/app/api/internal/assistant/route.js.nft.json +1 -1
  33. package/.next/standalone/.next/server/app/api/internal/assistant/sessions/route.js +3 -2
  34. package/.next/standalone/.next/server/app/api/internal/assistant/sessions/route.js.nft.json +1 -1
  35. package/.next/standalone/.next/server/app/api/internal/backup/import/route.js +2 -3
  36. package/.next/standalone/.next/server/app/api/internal/backup/import/route.js.nft.json +1 -1
  37. package/.next/standalone/.next/server/app/api/internal/hooks/install/route.js +3 -2
  38. package/.next/standalone/.next/server/app/api/internal/hooks/install/route.js.nft.json +1 -1
  39. package/.next/standalone/.next/server/app/api/internal/hooks/stop/route.js +2 -3
  40. package/.next/standalone/.next/server/app/api/internal/hooks/stop/route.js.nft.json +1 -1
  41. package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/buffer/route.js +2 -3
  42. package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/buffer/route.js.nft.json +1 -1
  43. package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/input/route.js +2 -3
  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 +3 -4
  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/index.html +1 -1
  48. package/.next/standalone/.next/server/app/index.rsc +14 -14
  49. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  50. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +14 -14
  51. package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +4 -4
  52. package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +9 -9
  53. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  54. package/.next/standalone/.next/server/app/missions/page/react-loadable-manifest.json +1 -1
  55. package/.next/standalone/.next/server/app/missions/page/server-reference-manifest.json +81 -81
  56. package/.next/standalone/.next/server/app/missions/page.js +1 -1
  57. package/.next/standalone/.next/server/app/missions/page.js.nft.json +1 -1
  58. package/.next/standalone/.next/server/app/missions/page_client-reference-manifest.js +1 -1
  59. package/.next/standalone/.next/server/app/onboarding/page/react-loadable-manifest.json +1 -1
  60. package/.next/standalone/.next/server/app/onboarding/page/server-reference-manifest.json +47 -47
  61. package/.next/standalone/.next/server/app/onboarding/page.js.nft.json +1 -1
  62. package/.next/standalone/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  63. package/.next/standalone/.next/server/app/onboarding.html +1 -1
  64. package/.next/standalone/.next/server/app/onboarding.rsc +16 -16
  65. package/.next/standalone/.next/server/app/onboarding.segments/_full.segment.rsc +16 -16
  66. package/.next/standalone/.next/server/app/onboarding.segments/_head.segment.rsc +4 -4
  67. package/.next/standalone/.next/server/app/onboarding.segments/_index.segment.rsc +9 -9
  68. package/.next/standalone/.next/server/app/onboarding.segments/_tree.segment.rsc +1 -1
  69. package/.next/standalone/.next/server/app/onboarding.segments/onboarding/__PAGE__.segment.rsc +4 -4
  70. package/.next/standalone/.next/server/app/onboarding.segments/onboarding.segment.rsc +3 -3
  71. package/.next/standalone/.next/server/app/page/react-loadable-manifest.json +1 -1
  72. package/.next/standalone/.next/server/app/page/server-reference-manifest.json +47 -47
  73. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  74. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  75. package/.next/standalone/.next/server/app/settings/page/react-loadable-manifest.json +1 -1
  76. package/.next/standalone/.next/server/app/settings/page/server-reference-manifest.json +60 -60
  77. package/.next/standalone/.next/server/app/settings/page.js +1 -1
  78. package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
  79. package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  80. package/.next/standalone/.next/server/app/settings.html +1 -1
  81. package/.next/standalone/.next/server/app/settings.rsc +16 -16
  82. package/.next/standalone/.next/server/app/settings.segments/_full.segment.rsc +16 -16
  83. package/.next/standalone/.next/server/app/settings.segments/_head.segment.rsc +4 -4
  84. package/.next/standalone/.next/server/app/settings.segments/_index.segment.rsc +9 -9
  85. package/.next/standalone/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
  86. package/.next/standalone/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +4 -4
  87. package/.next/standalone/.next/server/app/settings.segments/settings.segment.rsc +3 -3
  88. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/archive/page/react-loadable-manifest.json +1 -1
  89. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/archive/page/server-reference-manifest.json +102 -102
  90. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/archive/page.js.nft.json +1 -1
  91. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/archive/page_client-reference-manifest.js +1 -1
  92. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/assets/page/react-loadable-manifest.json +1 -1
  93. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/assets/page/server-reference-manifest.json +84 -84
  94. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/assets/page.js.nft.json +1 -1
  95. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/assets/page_client-reference-manifest.js +1 -1
  96. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/notes/page/react-loadable-manifest.json +1 -1
  97. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/notes/page/server-reference-manifest.json +77 -77
  98. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/notes/page.js.nft.json +1 -1
  99. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/notes/page_client-reference-manifest.js +1 -1
  100. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/page/react-loadable-manifest.json +1 -1
  101. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/page/server-reference-manifest.json +76 -76
  102. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/page.js +1 -1
  103. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/page.js.nft.json +1 -1
  104. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/page_client-reference-manifest.js +1 -1
  105. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page/react-loadable-manifest.json +1 -1
  106. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page/server-reference-manifest.json +47 -47
  107. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page.js.nft.json +1 -1
  108. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page_client-reference-manifest.js +1 -1
  109. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/versions/page/react-loadable-manifest.json +1 -1
  110. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/versions/page/server-reference-manifest.json +83 -83
  111. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/versions/page.js.nft.json +1 -1
  112. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/versions/page_client-reference-manifest.js +1 -1
  113. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page/react-loadable-manifest.json +2 -2
  114. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page/server-reference-manifest.json +90 -90
  115. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page.js +1 -1
  116. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page.js.nft.json +1 -1
  117. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page_client-reference-manifest.js +1 -1
  118. package/.next/standalone/.next/server/app/workspaces/page/react-loadable-manifest.json +1 -1
  119. package/.next/standalone/.next/server/app/workspaces/page/server-reference-manifest.json +61 -61
  120. package/.next/standalone/.next/server/app/workspaces/page.js.nft.json +1 -1
  121. package/.next/standalone/.next/server/app/workspaces/page_client-reference-manifest.js +1 -1
  122. package/.next/standalone/.next/server/chunks/0se9_next_dist_esm_build_templates_app-route_0h5yr8p.js +1 -1
  123. package/.next/standalone/.next/server/chunks/0se9_next_dist_esm_build_templates_app-route_0hrprmi.js +1 -1
  124. package/.next/standalone/.next/server/chunks/[root-of-the-server]__00mjz~7._.js +3 -0
  125. package/.next/standalone/.next/server/chunks/[root-of-the-server]__028ucbo._.js +4 -0
  126. package/.next/standalone/.next/server/chunks/[root-of-the-server]__03gi3ue._.js +4 -0
  127. package/.next/standalone/.next/server/chunks/[root-of-the-server]__07f7~6u._.js +4 -0
  128. package/.next/standalone/.next/server/chunks/[root-of-the-server]__09p152b._.js +3 -0
  129. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0b-ib~7._.js +3 -0
  130. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0c513um._.js +1 -1
  131. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0d~z6xs._.js +4 -0
  132. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0e44k3f._.js +20 -0
  133. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0h.z9fm._.js +11 -0
  134. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0lioghc._.js +3 -0
  135. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0mw.9lg._.js +3 -0
  136. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ogh_qu._.js +20 -0
  137. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0tys9pv._.js +3 -0
  138. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0dsv3wl._.js → [root-of-the-server]__0wbndoc._.js} +2 -2
  139. package/.next/standalone/.next/server/chunks/[root-of-the-server]__12c9noi._.js +3 -0
  140. package/.next/standalone/.next/server/chunks/{_0trog_r._.js → _0_eodxe._.js} +1 -1
  141. package/.next/standalone/.next/server/chunks/{src_01ztl3b._.js → src_0bkvm8c._.js} +2 -2
  142. package/.next/standalone/.next/server/chunks/src_0weytpz._.js +1 -1
  143. package/.next/standalone/.next/server/chunks/src_lib_0ba0ntr._.js +1 -1
  144. package/.next/standalone/.next/server/chunks/src_lib_ai_0q-~me1._.js +1 -1
  145. package/.next/standalone/.next/server/chunks/src_lib_ai_0xx6y51._.js +1 -1
  146. package/.next/standalone/.next/server/chunks/src_lib_ai_providers_index_ts_0.y.3vp._.js +1 -1
  147. package/.next/standalone/.next/server/chunks/ssr/0iu._[workspaceId]_projects_[projectId]_versions_version-timeline-client_tsx_07o_kyi._.js +1 -1
  148. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0gcf4k3._.js → [root-of-the-server]__0.ukame._.js} +3 -3
  149. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__006_qh0._.js +1 -1
  150. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0tf4zp_._.js → [root-of-the-server]__01j8ix6._.js} +3 -3
  151. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__02px.0y._.js +1 -1
  152. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__03ebsif._.js +3 -3
  153. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0vh-egg._.js → [root-of-the-server]__04pq37d._.js} +2 -2
  154. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__13k4vkg._.js → [root-of-the-server]__07_b6c.._.js} +2 -2
  155. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__08n5qbf._.js +1 -1
  156. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0k3isnk._.js → [root-of-the-server]__09kc.q_._.js} +2 -2
  157. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__11bequ2._.js → [root-of-the-server]__0ca_ueb._.js} +3 -3
  158. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0y.nw7l._.js → [root-of-the-server]__0dsdplu._.js} +3 -3
  159. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__079.nog._.js → [root-of-the-server]__0jo1r7k._.js} +2 -2
  160. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0l43.5g._.js +1 -1
  161. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0q7ho54._.js → [root-of-the-server]__0n.cuy2._.js} +3 -3
  162. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0nbj.ml._.js +30 -0
  163. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0-yld.d._.js → [root-of-the-server]__0o8k4pc._.js} +2 -2
  164. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0pm2~fu._.js +30 -0
  165. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0ps55l6._.js +1 -1
  166. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0ribsk4._.js +1 -1
  167. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0rjue04._.js +30 -0
  168. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0.5rcav._.js → [root-of-the-server]__0tc6uh2._.js} +3 -3
  169. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0c4.z1s._.js → [root-of-the-server]__0u4gc4b._.js} +2 -2
  170. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0gaa~xc._.js → [root-of-the-server]__0v2eslh._.js} +3 -3
  171. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0wjg_.n._.js +1 -1
  172. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0wlmzzq._.js +30 -0
  173. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0wvyks.._.js +1 -1
  174. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0zbmoit._.js +1 -1
  175. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0nwue~m._.js → [root-of-the-server]__0zujp5l._.js} +2 -2
  176. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0ghfuuv._.js → [root-of-the-server]__0~a-emb._.js} +3 -3
  177. package/.next/standalone/.next/server/chunks/ssr/_02v3fjp._.js +7 -0
  178. package/.next/standalone/.next/server/chunks/ssr/_04b71ua._.js +1 -1
  179. package/.next/standalone/.next/server/chunks/ssr/_05h.8a~._.js +1 -1
  180. package/.next/standalone/.next/server/chunks/ssr/_07~0_w6._.js +7 -0
  181. package/.next/standalone/.next/server/chunks/ssr/_08w-r6e._.js +7 -0
  182. package/.next/standalone/.next/server/chunks/ssr/_0_l8.dg._.js +1 -1
  183. package/.next/standalone/.next/server/chunks/ssr/{_0f8jvpw._.js → _0_q~7z7._.js} +1 -1
  184. package/.next/standalone/.next/server/chunks/ssr/{_0vqyzrr._.js → _0b0.-sj._.js} +2 -2
  185. package/.next/standalone/.next/server/chunks/ssr/{_00d1y-k._.js → _0bw-tx8._.js} +2 -2
  186. package/.next/standalone/.next/server/chunks/ssr/{_0i2usny._.js → _0c-49y3._.js} +1 -1
  187. package/.next/standalone/.next/server/chunks/ssr/{_0fri5n~._.js → _0c-jnbs._.js} +2 -2
  188. package/.next/standalone/.next/server/chunks/ssr/_0cj9a7y._.js +1 -1
  189. package/.next/standalone/.next/server/chunks/ssr/_0ds6nk2._.js +1 -1
  190. package/.next/standalone/.next/server/chunks/ssr/{_08t2xag._.js → _0f6u19w._.js} +2 -2
  191. package/.next/standalone/.next/server/chunks/ssr/{_0_~ftjv._.js → _0fob8fc._.js} +2 -2
  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/{_0ah80pn._.js → _0niubv5._.js} +1 -1
  195. package/.next/standalone/.next/server/chunks/ssr/{_0rfo51k._.js → _0pd0.8f._.js} +2 -2
  196. package/.next/standalone/.next/server/chunks/ssr/_0r9w-k8._.js +1 -1
  197. package/.next/standalone/.next/server/chunks/ssr/{_0_gqtgq._.js → _0rbai5c._.js} +1 -1
  198. package/.next/standalone/.next/server/chunks/ssr/_0rbctq7._.js +1 -1
  199. package/.next/standalone/.next/server/chunks/ssr/_0rt8hus._.js +1 -1
  200. package/.next/standalone/.next/server/chunks/ssr/{_0ep3sg_._.js → _0y-7tle._.js} +1 -1
  201. package/.next/standalone/.next/server/chunks/ssr/{_054w82_._.js → _0ysygps._.js} +2 -2
  202. package/.next/standalone/.next/server/chunks/ssr/{_03xwww2._.js → _0ysyq9g._.js} +2 -2
  203. package/.next/standalone/.next/server/chunks/ssr/{_049.box._.js → _0zgu282._.js} +1 -1
  204. package/.next/standalone/.next/server/chunks/ssr/{_086yn8o._.js → _0zszi6-._.js} +1 -1
  205. package/.next/standalone/.next/server/chunks/ssr/_0~80adm._.js +3 -3
  206. package/.next/standalone/.next/server/chunks/ssr/src_095o8x6._.js +1 -1
  207. package/.next/standalone/.next/server/chunks/ssr/src_13jha60._.js +1 -1
  208. package/.next/standalone/.next/server/chunks/ssr/src_actions_agent-actions_ts_0~wc.sy._.js +1 -1
  209. package/.next/standalone/.next/server/chunks/ssr/src_actions_file-actions_ts_0gcvqwm._.js +1 -1
  210. package/.next/standalone/.next/server/chunks/ssr/src_app_missions_missions-client_tsx_11429lj._.js +1 -1
  211. package/.next/standalone/.next/server/chunks/ssr/src_app_onboarding_page_tsx_0xf7hpz._.js +1 -1
  212. package/.next/standalone/.next/server/chunks/ssr/src_app_settings_page_tsx_0h9v7dr._.js +1 -1
  213. package/.next/standalone/.next/server/chunks/ssr/src_app_workspaces_[workspaceId]_assets_assets-page-client_tsx_0wyzpam._.js +1 -1
  214. package/.next/standalone/.next/server/chunks/ssr/src_app_workspaces_[workspaceId]_board-page-client_tsx_0gips66._.js +1 -1
  215. package/.next/standalone/.next/server/chunks/ssr/src_app_workspaces_[workspaceId]_tasks_[taskId]_task-page-client_tsx_02t7blt._.js +1 -1
  216. package/.next/standalone/.next/server/chunks/ssr/{src_lib_08n755q._.js → src_lib_07rspg0._.js} +1 -1
  217. package/.next/standalone/.next/server/chunks/ssr/{src_lib_0tb2yya._.js → src_lib_0_8frs_._.js} +1 -1
  218. package/.next/standalone/.next/server/chunks/ssr/{src_lib_123jf_a._.js → src_lib_0fjk3hr._.js} +1 -1
  219. package/.next/standalone/.next/server/chunks/ssr/{src_lib_12ulcxj._.js → src_lib_0g-92s-._.js} +1 -1
  220. package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
  221. package/.next/standalone/.next/server/pages/404.html +1 -1
  222. package/.next/standalone/.next/server/pages/500.html +1 -1
  223. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  224. package/.next/standalone/.next/server/server-reference-manifest.json +356 -356
  225. package/.next/standalone/.next/static/chunks/{0hxgzql5.szyz.js → 00.52653v5c~c.js} +1 -1
  226. package/.next/standalone/.next/static/chunks/{0r7jm27~cp-vs.js → 00j0mdc41wa44.js} +1 -1
  227. package/.next/standalone/.next/static/chunks/{0nrbltth-7m~e.js → 02edbrlq~2uyx.js} +1 -1
  228. package/.next/standalone/.next/static/chunks/05-ui_o~3irq_.js +5 -0
  229. package/.next/standalone/.next/static/chunks/05hls.3r4bz.0.js +1 -0
  230. package/.next/standalone/.next/static/chunks/{07i~~ygu~oi26.js → 08~e63d2q~cam.js} +1 -1
  231. package/.next/standalone/.next/static/chunks/{0m2lubto0vt0x.js → 0bw4ahlj4~l~g.js} +1 -1
  232. package/.next/standalone/.next/static/chunks/{0fovq74l0wh7c.js → 0ft77ybyq903..js} +1 -1
  233. package/.next/standalone/.next/static/chunks/0fxm-wv..y_a_.js +5 -0
  234. package/.next/standalone/.next/static/chunks/{0v9ahxdsn0mse.js → 0i55dediewjp5.js} +1 -1
  235. package/.next/standalone/.next/static/chunks/0l3mmc866npw4.js +2 -0
  236. package/.next/standalone/.next/static/chunks/0nno5if2x1mvs.js +1 -0
  237. package/.next/standalone/.next/static/chunks/0q-u-hhre1uyw.js +1 -0
  238. package/.next/standalone/.next/static/chunks/0qazzw-pr_sv7.js +1 -0
  239. package/.next/standalone/.next/static/chunks/{06shpikm5rcmu.js → 0r1mkt5qs~s6m.js} +1 -1
  240. package/.next/standalone/.next/static/chunks/{0ee.~~ae-vl_q.js → 0v~pz9e87t99b.js} +1 -1
  241. package/.next/standalone/.next/static/chunks/{0jscst0zjd2az.js → 0w3jww1m3k77x.js} +1 -1
  242. package/.next/standalone/.next/static/chunks/0z01g02xstbqe.js +1 -0
  243. package/.next/standalone/.next/static/chunks/0~27mkhc9s5k2.js +5 -0
  244. package/.next/standalone/.next/static/chunks/{04-7c5m91nvj1.js → 117qu902jput3.js} +1 -1
  245. package/.next/standalone/.next/static/chunks/{0mfgulw-d49o9.js → 142w-q8.7m3kl.js} +1 -1
  246. package/.next/standalone/package.json +1 -1
  247. package/dist/mcp-server.cjs +223 -33
  248. package/package.json +1 -1
  249. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0.9mj3v._.js +0 -4
  250. package/.next/standalone/.next/server/chunks/[root-of-the-server]__05353yb._.js +0 -4
  251. package/.next/standalone/.next/server/chunks/[root-of-the-server]__09h3i6m._.js +0 -4
  252. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0_a8-jq._.js +0 -3
  253. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0_mbhor._.js +0 -3
  254. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0jmqy_3._.js +0 -3
  255. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0j~qauc._.js +0 -4
  256. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0nwxhai._.js +0 -3
  257. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0o4z8qp._.js +0 -3
  258. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0p_ii~p._.js +0 -3
  259. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0puw1af._.js +0 -20
  260. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0py_jdb._.js +0 -3
  261. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0qie1gs._.js +0 -11
  262. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0qz9-me._.js +0 -3
  263. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0w2w3x.._.js +0 -20
  264. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__05kq890._.js +0 -30
  265. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0qe~p-n._.js +0 -30
  266. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__11ko84j._.js +0 -30
  267. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__12pnl8n._.js +0 -30
  268. package/.next/standalone/.next/server/chunks/ssr/_0-pqb_c._.js +0 -7
  269. package/.next/standalone/.next/server/chunks/ssr/_05-r00y._.js +0 -7
  270. package/.next/standalone/.next/server/chunks/ssr/_0h_~oum._.js +0 -7
  271. package/.next/standalone/.next/static/chunks/0.zipr1bga3lu.js +0 -1
  272. package/.next/standalone/.next/static/chunks/037-verumdykv.js +0 -5
  273. package/.next/standalone/.next/static/chunks/082cedbq4pp.-.js +0 -1
  274. package/.next/standalone/.next/static/chunks/089ktlh~nim1x.js +0 -1
  275. package/.next/standalone/.next/static/chunks/0m~ltp.wfnbf7.js +0 -5
  276. package/.next/standalone/.next/static/chunks/0tk-ju9xhoh68.js +0 -5
  277. package/.next/standalone/.next/static/chunks/0w9x-ap4dcwy..js +0 -1
  278. package/.next/standalone/.next/static/chunks/17cayeebhpt~w.js +0 -2
  279. package/.next/standalone/.next/static/chunks/186ahmq856rfj.js +0 -1
  280. /package/.next/standalone/.next/static/{VGoiH5uRfCRm6SKXNPZoz → om3SyUw4eAwMA0KLhpSGh}/_buildManifest.js +0 -0
  281. /package/.next/standalone/.next/static/{VGoiH5uRfCRm6SKXNPZoz → om3SyUw4eAwMA0KLhpSGh}/_clientMiddlewareManifest.js +0 -0
  282. /package/.next/standalone/.next/static/{VGoiH5uRfCRm6SKXNPZoz → om3SyUw4eAwMA0KLhpSGh}/_ssgManifest.js +0 -0
@@ -26318,9 +26318,35 @@ var init_worktree = __esm({
26318
26318
  });
26319
26319
 
26320
26320
  // src/lib/platform.ts
26321
+ var platform_exports = {};
26322
+ __export2(platform_exports, {
26323
+ detectShells: () => detectShells,
26324
+ detectTerminalApps: () => detectTerminalApps,
26325
+ ensurePathInEnv: () => ensurePathInEnv,
26326
+ isWindows: () => isWindows,
26327
+ normalizePath: () => normalizePath,
26328
+ quoteForCmd: () => quoteForCmd,
26329
+ redactEnvForLogs: () => redactEnvForLogs,
26330
+ resolveCommandPath: () => resolveCommandPath,
26331
+ resolveCommandPathSync: () => resolveCommandPathSync,
26332
+ resolveSpawnTarget: () => resolveSpawnTarget,
26333
+ resolveSpawnTargetSync: () => resolveSpawnTargetSync,
26334
+ stripClaudeNestingEnv: () => stripClaudeNestingEnv,
26335
+ toForwardSlash: () => toForwardSlash
26336
+ });
26321
26337
  function isWindows(platform = process.platform) {
26322
26338
  return platform === "win32";
26323
26339
  }
26340
+ function normalizePath(p2, platform = process.platform) {
26341
+ const normalized = import_node_path2.default.normalize(p2);
26342
+ if (isWindows(platform)) {
26343
+ return normalized.replace(/\//g, "\\");
26344
+ }
26345
+ return normalized.replace(/\\/g, "/");
26346
+ }
26347
+ function toForwardSlash(p2) {
26348
+ return p2.replace(/\\/g, "/");
26349
+ }
26324
26350
  function quoteForCmd(arg) {
26325
26351
  const flat = arg.replace(/\r\n|\r|\n/g, " ");
26326
26352
  if (!flat.length) return '""';
@@ -26346,6 +26372,39 @@ function stripClaudeNestingEnv(env) {
26346
26372
  }
26347
26373
  return cleaned;
26348
26374
  }
26375
+ function redactEnvForLogs(env) {
26376
+ const result = {};
26377
+ for (const [k2, v2] of Object.entries(env)) {
26378
+ if (v2 === void 0) continue;
26379
+ result[k2] = SENSITIVE_KEY_RE.test(k2) ? "***REDACTED***" : v2;
26380
+ }
26381
+ return result;
26382
+ }
26383
+ function windowsPathExts(env) {
26384
+ return (env.PATHEXT ?? ".EXE;.CMD;.BAT;.COM").split(";").filter(Boolean);
26385
+ }
26386
+ async function resolveCommandPath(command, opts = {}) {
26387
+ const cwd = opts.cwd ?? process.cwd();
26388
+ const env = opts.env ?? process.env;
26389
+ const platform = opts.platform ?? process.platform;
26390
+ const hasPathSeparator = command.includes("/") || command.includes("\\");
26391
+ if (hasPathSeparator) {
26392
+ const absolute = import_node_path2.default.isAbsolute(command) ? command : import_node_path2.default.resolve(cwd, command);
26393
+ return await pathExists(absolute, platform) ? absolute : null;
26394
+ }
26395
+ const pathValue = env.PATH ?? env.Path ?? "";
26396
+ const delimiter = isWindows(platform) ? ";" : ":";
26397
+ const dirs = pathValue.split(delimiter).filter(Boolean);
26398
+ const exts = isWindows(platform) ? windowsPathExts(env) : [""];
26399
+ const hasExtension = isWindows(platform) && import_node_path2.default.extname(command).length > 0;
26400
+ for (const dir of dirs) {
26401
+ const candidates = isWindows(platform) ? hasExtension ? [import_node_path2.default.join(dir, command)] : exts.map((ext) => import_node_path2.default.join(dir, `${command}${ext}`)) : [import_node_path2.default.join(dir, command)];
26402
+ for (const candidate of candidates) {
26403
+ if (await pathExists(candidate, platform)) return candidate;
26404
+ }
26405
+ }
26406
+ return null;
26407
+ }
26349
26408
  function resolveCommandPathSync(command, platform = process.platform, exec = defaultExecSync) {
26350
26409
  if (import_node_path2.default.extname(command) || command.includes("/") || command.includes("\\")) {
26351
26410
  return command;
@@ -26371,6 +26430,13 @@ function resolveCommandPathSync(command, platform = process.platform, exec = def
26371
26430
  }
26372
26431
  return command;
26373
26432
  }
26433
+ async function resolveSpawnTarget(command, args, opts = {}) {
26434
+ const env = opts.env ?? process.env;
26435
+ const platform = opts.platform ?? process.platform;
26436
+ const resolved = await resolveCommandPath(command, opts);
26437
+ const executable = resolved ?? command;
26438
+ return wrapForPlatform(executable, args, env, platform);
26439
+ }
26374
26440
  function resolveSpawnTargetSync(command, args, platform = process.platform, exec) {
26375
26441
  const resolved = resolveCommandPathSync(command, platform, exec);
26376
26442
  return wrapForPlatform(resolved, args, process.env, platform);
@@ -26390,10 +26456,123 @@ function wrapForPlatform(executable, args, env, platform) {
26390
26456
  }
26391
26457
  return { command: executable, args };
26392
26458
  }
26393
- var import_node_child_process, import_node_path2, CLAUDE_NESTING_VARS, defaultExecSync;
26459
+ async function pathExists(candidate, platform = process.platform) {
26460
+ try {
26461
+ await import_node_fs2.promises.access(candidate, isWindows(platform) ? import_node_fs2.constants.F_OK : import_node_fs2.constants.X_OK);
26462
+ return true;
26463
+ } catch {
26464
+ return false;
26465
+ }
26466
+ }
26467
+ async function detectShells(platform = process.platform) {
26468
+ if (!isWindows(platform)) {
26469
+ return detectUnixShells();
26470
+ }
26471
+ return detectWindowsShells();
26472
+ }
26473
+ async function detectUnixShells() {
26474
+ try {
26475
+ const content = await import_node_fs2.promises.readFile("/etc/shells", "utf-8");
26476
+ const shells = [];
26477
+ const seen = /* @__PURE__ */ new Map();
26478
+ for (const raw of content.split("\n")) {
26479
+ const line = raw.replace(/#.*/, "").trim();
26480
+ if (!line || !line.startsWith("/")) continue;
26481
+ if (!await pathExists(line)) continue;
26482
+ let name = import_node_path2.default.basename(line);
26483
+ const count = seen.get(name) ?? 0;
26484
+ seen.set(name, count + 1);
26485
+ if (count > 0) name = `${name} (${count + 1})`;
26486
+ shells.push({ name, path: line });
26487
+ }
26488
+ return shells;
26489
+ } catch {
26490
+ const defaults = ["/bin/zsh", "/bin/bash", "/bin/sh"];
26491
+ const shells = [];
26492
+ for (const p2 of defaults) {
26493
+ if (await pathExists(p2)) shells.push({ name: import_node_path2.default.basename(p2), path: p2 });
26494
+ }
26495
+ return shells;
26496
+ }
26497
+ }
26498
+ async function detectWindowsShells() {
26499
+ const shells = [];
26500
+ const gitBashCandidates = [];
26501
+ const gitPath = await resolveCommandPath("git", { platform: "win32" });
26502
+ if (gitPath) {
26503
+ const gitRoot = import_node_path2.default.resolve(import_node_path2.default.dirname(gitPath), "..", "..");
26504
+ gitBashCandidates.push(
26505
+ import_node_path2.default.join(gitRoot, "bin", "bash.exe"),
26506
+ import_node_path2.default.join(gitRoot, "usr", "bin", "bash.exe")
26507
+ );
26508
+ }
26509
+ const programDirs = [
26510
+ process.env.ProgramW6432,
26511
+ process.env.ProgramFiles,
26512
+ process.env["ProgramFiles(x86)"],
26513
+ process.env.LocalAppData ? import_node_path2.default.join(process.env.LocalAppData, "Programs") : null
26514
+ ].filter(Boolean);
26515
+ for (const dir of programDirs) {
26516
+ gitBashCandidates.push(
26517
+ import_node_path2.default.join(dir, "Git", "bin", "bash.exe"),
26518
+ import_node_path2.default.join(dir, "Git", "usr", "bin", "bash.exe")
26519
+ );
26520
+ }
26521
+ const home = process.env.USERPROFILE ?? "";
26522
+ if (home) {
26523
+ gitBashCandidates.push(
26524
+ import_node_path2.default.join(home, "scoop", "apps", "git", "current", "bin", "bash.exe")
26525
+ );
26526
+ }
26527
+ if (process.env.CLAUDE_CODE_GIT_BASH_PATH) {
26528
+ gitBashCandidates.unshift(process.env.CLAUDE_CODE_GIT_BASH_PATH);
26529
+ }
26530
+ for (const candidate of gitBashCandidates) {
26531
+ if (await pathExists(candidate, "win32")) {
26532
+ shells.push({ name: "Git Bash", path: candidate });
26533
+ break;
26534
+ }
26535
+ }
26536
+ const pwshPath = await resolveCommandPath("pwsh", { platform: "win32" });
26537
+ if (pwshPath) {
26538
+ shells.push({ name: "PowerShell", path: pwshPath });
26539
+ }
26540
+ const winDir = process.env.windir ?? "C:\\WINDOWS";
26541
+ const legacyPs = import_node_path2.default.join(winDir, "System32", "WindowsPowerShell", "v1.0", "powershell.exe");
26542
+ if (await pathExists(legacyPs, "win32")) {
26543
+ shells.push({ name: "Windows PowerShell", path: legacyPs });
26544
+ }
26545
+ const cmd = process.env.ComSpec ?? import_node_path2.default.join(winDir, "System32", "cmd.exe");
26546
+ if (await pathExists(cmd, "win32")) {
26547
+ shells.push({ name: "Command Prompt", path: cmd });
26548
+ }
26549
+ return shells;
26550
+ }
26551
+ async function detectTerminalApps(platform = process.platform) {
26552
+ if (platform === "darwin") {
26553
+ const results = [];
26554
+ for (const t of MAC_TERMINAL_APPS) {
26555
+ if (await pathExists(`/Applications/${t.bundleName}.app`, platform)) {
26556
+ results.push({ name: t.name, value: t.bundleName });
26557
+ }
26558
+ }
26559
+ return results;
26560
+ }
26561
+ if (isWindows(platform)) {
26562
+ const results = [];
26563
+ const wtPath = await resolveCommandPath("wt", { platform });
26564
+ if (wtPath) {
26565
+ results.push({ name: "Windows Terminal", value: wtPath });
26566
+ }
26567
+ return results;
26568
+ }
26569
+ return [];
26570
+ }
26571
+ var import_node_fs2, import_node_child_process, import_node_path2, CLAUDE_NESTING_VARS, SENSITIVE_KEY_RE, defaultExecSync, MAC_TERMINAL_APPS;
26394
26572
  var init_platform = __esm({
26395
26573
  "src/lib/platform.ts"() {
26396
26574
  "use strict";
26575
+ import_node_fs2 = require("node:fs");
26397
26576
  import_node_child_process = require("node:child_process");
26398
26577
  import_node_path2 = __toESM(require("node:path"));
26399
26578
  CLAUDE_NESTING_VARS = [
@@ -26402,7 +26581,17 @@ var init_platform = __esm({
26402
26581
  "CLAUDE_CODE_SESSION",
26403
26582
  "CLAUDE_CODE_PARENT_SESSION"
26404
26583
  ];
26584
+ SENSITIVE_KEY_RE = /key|token|secret|password|passwd|authorization|cookie/i;
26405
26585
  defaultExecSync = (cmd) => (0, import_node_child_process.execSync)(cmd, { encoding: "utf-8", timeout: 5e3 });
26586
+ MAC_TERMINAL_APPS = [
26587
+ { name: "Terminal", bundleName: "Terminal" },
26588
+ { name: "iTerm2", bundleName: "iTerm" },
26589
+ { name: "Warp", bundleName: "Warp" },
26590
+ { name: "Alacritty", bundleName: "Alacritty" },
26591
+ { name: "WezTerm", bundleName: "WezTerm" },
26592
+ { name: "kitty", bundleName: "kitty" },
26593
+ { name: "Hyper", bundleName: "Hyper" }
26594
+ ];
26406
26595
  }
26407
26596
  });
26408
26597
 
@@ -26417,11 +26606,11 @@ var init_tower_paths = __esm({
26417
26606
  });
26418
26607
 
26419
26608
  // src/lib/ai/adapters/cli/claude-cli-adapter.ts
26420
- var fs2, os2, path4, CLAUDE_MODELS, ClaudeCliAdapter;
26609
+ var fs3, os2, path4, CLAUDE_MODELS, ClaudeCliAdapter;
26421
26610
  var init_claude_cli_adapter = __esm({
26422
26611
  "src/lib/ai/adapters/cli/claude-cli-adapter.ts"() {
26423
26612
  "use strict";
26424
- fs2 = __toESM(require("node:fs"));
26613
+ fs3 = __toESM(require("node:fs"));
26425
26614
  os2 = __toESM(require("node:os"));
26426
26615
  path4 = __toESM(require("node:path"));
26427
26616
  init_platform();
@@ -26619,7 +26808,7 @@ var init_claude_cli_adapter = __esm({
26619
26808
  async installSkill(skillName, sourceDir) {
26620
26809
  const target = path4.join(this.getConfigDir(), "skills", skillName);
26621
26810
  try {
26622
- if (!fs2.existsSync(sourceDir)) {
26811
+ if (!fs3.existsSync(sourceDir)) {
26623
26812
  return {
26624
26813
  ok: false,
26625
26814
  method: "symlink",
@@ -26627,15 +26816,15 @@ var init_claude_cli_adapter = __esm({
26627
26816
  error: `Source skill dir does not exist: ${sourceDir}`
26628
26817
  };
26629
26818
  }
26630
- fs2.mkdirSync(path4.dirname(target), { recursive: true });
26631
- const existing = await fs2.promises.lstat(target).catch(() => null);
26819
+ fs3.mkdirSync(path4.dirname(target), { recursive: true });
26820
+ const existing = await fs3.promises.lstat(target).catch(() => null);
26632
26821
  if (existing) {
26633
26822
  if (existing.isSymbolicLink()) {
26634
- const current = await fs2.promises.readlink(target);
26823
+ const current = await fs3.promises.readlink(target);
26635
26824
  if (path4.resolve(current) === path4.resolve(sourceDir)) {
26636
26825
  return { ok: true, method: "symlink", detail: `${target} \u2192 ${sourceDir} (already)` };
26637
26826
  }
26638
- await fs2.promises.unlink(target);
26827
+ await fs3.promises.unlink(target);
26639
26828
  } else {
26640
26829
  return {
26641
26830
  ok: false,
@@ -26645,7 +26834,7 @@ var init_claude_cli_adapter = __esm({
26645
26834
  };
26646
26835
  }
26647
26836
  }
26648
- await fs2.promises.symlink(sourceDir, target, "dir");
26837
+ await fs3.promises.symlink(sourceDir, target, "dir");
26649
26838
  return { ok: true, method: "symlink", detail: `${target} \u2192 ${sourceDir}` };
26650
26839
  } catch (err) {
26651
26840
  return {
@@ -26659,7 +26848,7 @@ var init_claude_cli_adapter = __esm({
26659
26848
  async uninstallSkill(skillName) {
26660
26849
  const target = path4.join(this.getConfigDir(), "skills", skillName);
26661
26850
  try {
26662
- const stat = await fs2.promises.lstat(target).catch(() => null);
26851
+ const stat = await fs3.promises.lstat(target).catch(() => null);
26663
26852
  if (!stat) return { ok: true, method: "symlink", detail: `${target} (already absent)` };
26664
26853
  if (!stat.isSymbolicLink()) {
26665
26854
  return {
@@ -26669,7 +26858,7 @@ var init_claude_cli_adapter = __esm({
26669
26858
  error: `Refusing to remove non-symlink at ${target}`
26670
26859
  };
26671
26860
  }
26672
- await fs2.promises.unlink(target);
26861
+ await fs3.promises.unlink(target);
26673
26862
  return { ok: true, method: "symlink", detail: target };
26674
26863
  } catch (err) {
26675
26864
  return {
@@ -26683,10 +26872,10 @@ var init_claude_cli_adapter = __esm({
26683
26872
  async isSkillInstalled(skillName, expectedSourceDir) {
26684
26873
  const target = path4.join(this.getConfigDir(), "skills", skillName);
26685
26874
  try {
26686
- const stat = await fs2.promises.lstat(target);
26875
+ const stat = await fs3.promises.lstat(target);
26687
26876
  if (!stat.isSymbolicLink()) return false;
26688
26877
  if (!expectedSourceDir) return true;
26689
- const current = await fs2.promises.readlink(target);
26878
+ const current = await fs3.promises.readlink(target);
26690
26879
  const resolved = path4.isAbsolute(current) ? current : path4.resolve(path4.dirname(target), current);
26691
26880
  return path4.resolve(resolved) === path4.resolve(expectedSourceDir);
26692
26881
  } catch {
@@ -26712,9 +26901,10 @@ var init_claude_cli_adapter = __esm({
26712
26901
  try {
26713
26902
  const { execFile } = await import("child_process");
26714
26903
  const { promisify } = await import("util");
26904
+ const { resolveSpawnTarget: resolveSpawnTarget2 } = await Promise.resolve().then(() => (init_platform(), platform_exports));
26715
26905
  const execFileAsync = promisify(execFile);
26716
- const cmd = this.resolveCommand();
26717
- const { stdout } = await execFileAsync(cmd, ["--version"], { timeout: 5e3 });
26906
+ const target = await resolveSpawnTarget2(this.resolveCommand(), ["--version"]);
26907
+ const { stdout } = await execFileAsync(target.command, target.args, { timeout: 5e3 });
26718
26908
  return stdout.trim() || null;
26719
26909
  } catch {
26720
26910
  return null;
@@ -26735,10 +26925,10 @@ var init_claude_cli_adapter = __esm({
26735
26925
  getApiKeyInfo() {
26736
26926
  return { envVar: "ANTHROPIC_API_KEY", required: false };
26737
26927
  }
26738
- buildHelloProbeArgs() {
26928
+ buildHelloProbeArgs(prompt) {
26739
26929
  return {
26740
26930
  command: this.resolveCommand(),
26741
- args: ["--print", "-", "--output-format", "stream-json", "--verbose"]
26931
+ args: ["--print", prompt, "--output-format", "stream-json", "--verbose"]
26742
26932
  };
26743
26933
  }
26744
26934
  /** Resolve claude binary — env var > platform-aware resolution.
@@ -26753,15 +26943,15 @@ var init_claude_cli_adapter = __esm({
26753
26943
  }
26754
26944
  readSettings() {
26755
26945
  try {
26756
- return JSON.parse(fs2.readFileSync(this.getSettingsPath(), "utf-8"));
26946
+ return JSON.parse(fs3.readFileSync(this.getSettingsPath(), "utf-8"));
26757
26947
  } catch {
26758
26948
  return {};
26759
26949
  }
26760
26950
  }
26761
26951
  writeSettings(data) {
26762
26952
  const dir = this.getConfigDir();
26763
- if (!fs2.existsSync(dir)) fs2.mkdirSync(dir, { recursive: true });
26764
- fs2.writeFileSync(this.getSettingsPath(), JSON.stringify(data, null, 2), "utf-8");
26953
+ if (!fs3.existsSync(dir)) fs3.mkdirSync(dir, { recursive: true });
26954
+ fs3.writeFileSync(this.getSettingsPath(), JSON.stringify(data, null, 2), "utf-8");
26765
26955
  }
26766
26956
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
26767
26957
  getHookArray(hooks, event) {
@@ -47693,7 +47883,7 @@ var require_windowsPtyAgent = __commonJS({
47693
47883
  "use strict";
47694
47884
  Object.defineProperty(exports2, "__esModule", { value: true });
47695
47885
  exports2.argsToCommandLine = exports2.WindowsPtyAgent = void 0;
47696
- var fs4 = require("fs");
47886
+ var fs5 = require("fs");
47697
47887
  var os4 = require("os");
47698
47888
  var path6 = require("path");
47699
47889
  var child_process_1 = require("child_process");
@@ -47752,7 +47942,7 @@ var require_windowsPtyAgent = __commonJS({
47752
47942
  this._outSocket.on("connect", function() {
47753
47943
  _this._outSocket.emit("ready_datapipe");
47754
47944
  });
47755
- var inSocketFD = fs4.openSync(term.conin, "w");
47945
+ var inSocketFD = fs5.openSync(term.conin, "w");
47756
47946
  this._inSocket = new net_1.Socket({
47757
47947
  fd: inSocketFD,
47758
47948
  readable: false,
@@ -48186,7 +48376,7 @@ var require_unixTerminal = __commonJS({
48186
48376
  })();
48187
48377
  Object.defineProperty(exports2, "__esModule", { value: true });
48188
48378
  exports2.UnixTerminal = void 0;
48189
- var fs4 = require("fs");
48379
+ var fs5 = require("fs");
48190
48380
  var path6 = require("path");
48191
48381
  var tty = require("tty");
48192
48382
  var terminal_1 = require_terminal();
@@ -48449,7 +48639,7 @@ var require_unixTerminal = __commonJS({
48449
48639
  return;
48450
48640
  }
48451
48641
  var task = this._writeQueue[0];
48452
- fs4.write(this._fd, task.buffer, task.offset, function(err, written) {
48642
+ fs5.write(this._fd, task.buffer, task.offset, function(err, written) {
48453
48643
  if (err) {
48454
48644
  if ("code" in err && err.code === "EAGAIN") {
48455
48645
  _this._writeImmediate = setImmediate(function() {
@@ -49803,7 +49993,7 @@ var knowledgeTools = {
49803
49993
 
49804
49994
  // src/mcp/tools/note-asset-tools.ts
49805
49995
  init_zod();
49806
- var fs3 = __toESM(require("node:fs"));
49996
+ var fs4 = __toESM(require("node:fs"));
49807
49997
  var path5 = __toESM(require("node:path"));
49808
49998
 
49809
49999
  // src/lib/fts.ts
@@ -49960,17 +50150,17 @@ async function handleManageAssets(args) {
49960
50150
  const filename = args.filename ?? path5.basename(args.sourcePath);
49961
50151
  const destPath = path5.join(assetsDir, filename);
49962
50152
  try {
49963
- fs3.renameSync(args.sourcePath, destPath);
50153
+ fs4.renameSync(args.sourcePath, destPath);
49964
50154
  } catch (err) {
49965
50155
  const nodeErr = err;
49966
50156
  if (nodeErr.code === "EXDEV") {
49967
- fs3.copyFileSync(args.sourcePath, destPath);
49968
- fs3.unlinkSync(args.sourcePath);
50157
+ fs4.copyFileSync(args.sourcePath, destPath);
50158
+ fs4.unlinkSync(args.sourcePath);
49969
50159
  } else {
49970
50160
  throw err;
49971
50161
  }
49972
50162
  }
49973
- const stats = fs3.statSync(destPath);
50163
+ const stats = fs4.statSync(destPath);
49974
50164
  const asset = await db.projectAsset.create({
49975
50165
  data: {
49976
50166
  filename,
@@ -49996,13 +50186,13 @@ async function handleManageAssets(args) {
49996
50186
  filename = `upload-${Date.now()}${ext}`;
49997
50187
  }
49998
50188
  let destPath = path5.join(assetsDir, filename);
49999
- if (fs3.existsSync(destPath)) {
50189
+ if (fs4.existsSync(destPath)) {
50000
50190
  const ext = path5.extname(filename);
50001
50191
  const base = path5.basename(filename, ext);
50002
50192
  filename = `${base}-${Date.now()}${ext}`;
50003
50193
  destPath = path5.join(assetsDir, filename);
50004
50194
  }
50005
- fs3.writeFileSync(destPath, buffer);
50195
+ fs4.writeFileSync(destPath, buffer);
50006
50196
  const asset = await db.projectAsset.create({
50007
50197
  data: {
50008
50198
  filename,
@@ -50034,8 +50224,8 @@ async function handleManageAssets(args) {
50034
50224
  throw new Error("assetId required");
50035
50225
  }
50036
50226
  const asset = await db.projectAsset.findUnique({ where: { id: args.assetId } });
50037
- if (asset?.path && fs3.existsSync(asset.path)) {
50038
- fs3.unlinkSync(asset.path);
50227
+ if (asset?.path && fs4.existsSync(asset.path)) {
50228
+ fs4.unlinkSync(asset.path);
50039
50229
  }
50040
50230
  await db.projectAsset.delete({ where: { id: args.assetId } });
50041
50231
  return { deleted: true, assetId: args.assetId };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tower-studio",
3
- "version": "0.2.6",
3
+ "version": "0.2.7",
4
4
  "description": "AI Task Orchestration Platform — Kanban + Terminal + Code Editor + MCP",
5
5
  "bin": {
6
6
  "tower": "bin/tower.mjs"
@@ -1,4 +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"))},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"))},980738,(e,t,r)=>{t.exports=e.x("node-pty-c710df912a232c01",()=>require("node-pty-c710df912a232c01"))},433541,e=>e.a(async(t,r)=>{try{let t=await e.y("ws-4df7fc762dfa9a52");e.n(t),r()}catch(e){r(e)}},!0),504446,(e,t,r)=>{t.exports=e.x("net",()=>require("net"))},933919,(e,t,r)=>{t.exports=e.x("@prisma/client-9249dd53ac5b6a44",()=>require("@prisma/client-9249dd53ac5b6a44"))},522734,(e,t,r)=>{t.exports=e.x("fs",()=>require("fs"))},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"))},446786,(e,t,r)=>{t.exports=e.x("os",()=>require("os"))},912714,(e,t,r)=>{t.exports=e.x("node:fs/promises",()=>require("node:fs/promises"))},660526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},192520,e=>{"use strict";let t;var r=e.i(750227),a=e.i(660526),n=e.i(902157);function s(){return t||(t=process.env.TOWER_DATA_DIR||(0,r.join)((0,a.homedir)(),".tower"),(0,n.existsSync)(t)||(0,n.mkdirSync)(t,{recursive:!0})),t}e.s(["getAssistantDir",0,function(){let e=(0,r.join)(s(),"assistant");return(0,n.existsSync)(e)||(0,n.mkdirSync)(e,{recursive:!0}),e},"getBackupsDir",0,function(){let e=(0,r.join)(s(),"backups");return(0,n.existsSync)(e)||(0,n.mkdirSync)(e,{recursive:!0}),e},"getStorageDir",0,function(){let e=(0,r.join)(s(),"storage");return(0,n.existsSync)(e)||(0,n.mkdirSync)(e,{recursive:!0}),e},"getTowerDbPath",0,function(){let e;return(0,r.join)((e=(0,r.join)(s(),"database"),(0,n.existsSync)(e)||(0,n.mkdirSync)(e,{recursive:!0}),e),"tower.db")},"getTowerDir",0,s])},666680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},482819,(e,t,r)=>{"use strict";t.exports=e.r(583981).vendored["react-rsc"].ReactServerDOMTurbopackServer},921675,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"registerServerReference",{enumerable:!0,get:function(){return a.registerServerReference}});let a=e.r(482819)},86708,(e,t,r)=>{"use strict";function a(e){for(let t=0;t<e.length;t++){let r=e[t];if("function"!=typeof r)throw Object.defineProperty(Error(`A "use server" file can only export async functions, found ${typeof r}.
2
- Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ensureServerEntryExports",{enumerable:!0,get:function(){return a}})},843793,e=>{"use strict";var t=e.i(933919);let r=globalThis.prisma??new t.PrismaClient({log:[]});process.on("SIGTERM",()=>{r.$disconnect().catch(()=>{})}),process.on("SIGINT",()=>{r.$disconnect().catch(()=>{})}),e.s(["db",0,r])},572173,e=>{"use strict";var t=e.i(843793);async function r(e,r){let a=await t.db.systemConfig.findUnique({where:{key:e}});if(!a)return r;try{return JSON.parse(a.value)}catch{return r}}e.s(["readConfigValue",0,r])},658053,e=>{"use strict";e.s(["ASSISTANT_SESSION_KEY",0,"__assistant__"])},427699,(e,t,r)=>{t.exports=e.x("events",()=>require("events"))},687769,(e,t,r)=>{t.exports=e.x("node:events",()=>require("node:events"))},81111,(e,t,r)=>{t.exports=e.x("node:stream",()=>require("node:stream"))},899871,(e,t,r)=>{t.exports=e.x("node:string_decoder",()=>require("node:string_decoder"))},449719,(e,t,r)=>{t.exports=e.x("assert",()=>require("assert"))},500874,(e,t,r)=>{t.exports=e.x("buffer",()=>require("buffer"))},406461,(e,t,r)=>{t.exports=e.x("zlib",()=>require("zlib"))},57328,(e,t,r)=>{t.exports=e.x("node:assert",()=>require("node:assert"))},276534,e=>{"use strict";e.s(["CONFIG_DEFAULTS",0,{"git.pathMappingRules":{defaultValue:[],type:"object",label:"Git Path Mapping Rules"},"system.maxUploadBytes":{defaultValue:0x3200000,type:"number",label:"Max Upload Size (bytes)"},"system.maxConcurrentExecutions":{defaultValue:20,type:"number",label:"Max Concurrent Executions"},"system.maxReadableFileBytes":{defaultValue:5242880,type:"number",label:"Max Readable File Size (bytes)"},"system.backupDir":{defaultValue:"",type:"string",label:"Backup Directory"},"git.timeoutSec":{defaultValue:30,type:"number",label:"Git Operation Timeout (seconds)"},"search.resultLimit":{defaultValue:20,type:"number",label:"Search Result Limit"},"search.allModeCap":{defaultValue:5,type:"number",label:"All-Mode Per-Type Cap"},"search.debounceMs":{defaultValue:250,type:"number",label:"Search Debounce (ms)"},"search.snippetLength":{defaultValue:80,type:"number",label:"Snippet Length (characters)"},"search.codeTimeoutSec":{defaultValue:30,type:"number",label:"Code Search Timeout (seconds)"},"missions.grid.minCols":{defaultValue:1,type:"number",label:"Grid Min Columns"},"missions.grid.maxCols":{defaultValue:5,type:"number",label:"Grid Max Columns"},"missions.grid.minRows":{defaultValue:1,type:"number",label:"Grid Min Rows"},"missions.grid.maxRows":{defaultValue:5,type:"number",label:"Grid Max Rows"},"terminal.app":{defaultValue:"Terminal",type:"string",label:"Default Terminal App"},"terminal.wsPort":{defaultValue:3001,type:"number",label:"WebSocket Port"},"terminal.idleTimeoutSec":{defaultValue:180,type:"number",label:"Idle Timeout (seconds)"},"assistant.systemPrompt":{defaultValue:'You are Tower Assistant — the built-in AI operator for the Tower task management platform.\n\n## Identity\n- You are a task management operator, NOT a coding assistant.\n- You can ONLY use Tower MCP tools. You CANNOT read files, edit code, run shell commands, or search the web.\n- Always respond in the same language the user uses.\n\n## Capabilities\nWhen users ask what you can do, respond with EXACTLY these 6 groups. Translate to the user\'s language.\n\n1. **Workspace & Project** — View, create, update, delete workspaces and projects. Search projects and repositories.\n2. **Task Management** — Create tasks (priority, labels, worktree branch isolation, sub-path, auto-start). Move task status (TODO → IN_PROGRESS → IN_REVIEW → DONE / CANCELLED). Update task info and labels.\n3. **Execution Monitor** — Start task execution, check execution status, get terminal output, send commands to running terminals.\n4. **Daily Report & Todo** — Generate daily work summary (completed + in-progress). View pending task list sorted by priority.\n5. **Labels & Notes & Assets** — Manage workspace labels, project notes, and file attachments.\n6. **Global Search** — Search tasks, projects, repositories, notes, and assets by keyword.\n\nDo NOT list any capabilities beyond the above. Do NOT mention code editing, debugging, testing, git operations, or any development capabilities.\n\n## Scope Boundary\nIf the user asks you to write code, explain code, debug, search the web, read/write files, or anything outside Tower task management, reply:\n"抱歉,我只能帮你管理工作区、项目和任务。编码、调试等操作请在任务终端中完成。"',type:"string",label:"Assistant System Prompt"},"assistant.displayMode":{defaultValue:"sidebar",type:"string",label:"Assistant Display Mode"},"assistant.communicationMode":{defaultValue:"chat",type:"string",label:"Assistant Communication Mode"}}])},61920,e=>{"use strict";var t=e.i(446786),r=e.i(814747);function a(e){return e.startsWith("~/")?r.default.join(t.default.homedir(),e.slice(2)):e}function n(e){let t,r=e.match(/^git@([^:]+):(.+)$/);if(r)return{host:r[1],pathSegments:s(r[2]).split("/").filter(Boolean)};try{t=new URL(e)}catch{return null}return{host:t.hostname,pathSegments:s(decodeURIComponent(t.pathname)).split("/").filter(Boolean)}}function s(e){return e.replace(/\.git\/?$/,"")}e.s(["gitUrlToLocalPath",0,function(e){let t=e.trim();if(!t)return"";try{let e=n(t);if(!e)return"";let{host:s,pathSegments:i}=e;if("code.iflytek.com"===s){let e,t;return a((e=[...i],"osc"===e[0]&&"_source"===e[1]&&(e=e.slice(2)),((t=e.indexOf("-"))>0&&(e=e.slice(0,t)),0===e.length)?"":`~/company/${e.join("/")}`))}if("github.com"===s){var r;let e,t;return a((e=(r=i)[0],t=r[1],e&&t?`${"jp-liu"===e?"~/project/i":"~/project/f"}/${t}`:""))}let o=i[i.length-1];return o?a(`~/project/f/${o}`):""}catch{return""}},"matchGitPathRule",0,function(e,t){if(!t.length)return"";let r=e.trim();if(!r)return"";let s=n(r);if(!s)return"";let{host:i,pathSegments:o}=s,l=o[0]??"",u=o[o.length-1]??"",c=[...t].sort((e,t)=>{let r=+("*"===e.ownerMatch),a=+("*"===t.ownerMatch);return r!==a?r-a:e.priority-t.priority}),p=o.join("/");for(let e of c){if(e.host!==i||"*"!==e.ownerMatch&&e.ownerMatch!==l)continue;let t=e.localPathTemplate;if(t.includes("{path}"))return a(t.replace("{path}",p).replace("{owner}",l).replace("{repo}",u).replace(/\/+$/,""));let r=t.replace("{owner}",l).replace("{repo}","").replace(/\/+$/,"");return a(`${r}/${u}`)}return""}])},22569,e=>e.a(async(t,r)=>{try{var a=e.i(921675),n=e.i(843793),s=e.i(276534),i=e.i(61920),o=e.i(769310),l=e.i(721390),u=e.i(86708),c=t([l]);async function p(e,t){let r=await n.db.systemConfig.findUnique({where:{key:e}});if(!r)return t;try{return JSON.parse(r.value)}catch{return t}}async function d(e,t){await n.db.systemConfig.upsert({where:{key:e},create:{key:e,value:JSON.stringify(t)},update:{value:JSON.stringify(t)}})}async function f(e){let t=e.trim();if(!t)return"";try{let e=await p("git.pathMappingRules",[]),r=(0,i.matchGitPathRule)(t,e);if(r)return r;return(0,i.gitUrlToLocalPath)(t)}catch{return(0,i.gitUrlToLocalPath)(t)}}async function m(e){let t=await n.db.systemConfig.findMany({where:{key:{in:e}}}),r=Object.fromEntries(t.map(e=>{try{return[e.key,JSON.parse(e.value)]}catch{return[e.key,null]}})),a={};for(let t of e)a[t]=t in r?r[t]:s.CONFIG_DEFAULTS[t]?.defaultValue??null;return a}async function y(){return(0,o.detectShells)()}async function b(){return(0,o.detectTerminalApps)()}async function g(){return{platform:process.platform}}async function x(){let e=(0,l.getActiveWsPort)();if(null!==e)return e;let t=parseInt(process.env.PORT||"3000",10);return p("terminal.wsPort",t+1)}[l]=c.then?(await c)():c,(0,u.ensureServerEntryExports)([p,d,f,m,y,b,g,x]),(0,a.registerServerReference)(p,"601406ecac79b3ad03802ebdad7fee412b1cd242a3",null),(0,a.registerServerReference)(d,"602a9baca17d1dfb46d6920ffa0a228eef5457ab33",null),(0,a.registerServerReference)(f,"40b05fa1832e38faf3093f26ffc25130691bc7b075",null),(0,a.registerServerReference)(m,"408a94f097a9a92d17f4ef2a81b170cb16586e0cba",null),(0,a.registerServerReference)(y,"006ca763a21e0c7b1c866f46617803dde0a13da9ea",null),(0,a.registerServerReference)(b,"0017c96cfbba10eb5558b07c346d467fafc74ba32f",null),(0,a.registerServerReference)(g,"00dbf32469ff11201d8f24aef9098bcb9fa141bcd4",null),(0,a.registerServerReference)(x,"001e1fa1609fa6f321934af3c930363baeed8b3d15",null),e.s(["getConfigValue",0,p]),r()}catch(e){r(e)}},!1)];
3
-
4
- //# sourceMappingURL=%5Broot-of-the-server%5D__0.9mj3v._.js.map
@@ -1,4 +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"))},446786,(e,t,r)=>{t.exports=e.x("os",()=>require("os"))},933919,(e,t,r)=>{t.exports=e.x("@prisma/client-9249dd53ac5b6a44",()=>require("@prisma/client-9249dd53ac5b6a44"))},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"))},980738,(e,t,r)=>{t.exports=e.x("node-pty-c710df912a232c01",()=>require("node-pty-c710df912a232c01"))},433541,e=>e.a(async(t,r)=>{try{let t=await e.y("ws-4df7fc762dfa9a52");e.n(t),r()}catch(e){r(e)}},!0),504446,(e,t,r)=>{t.exports=e.x("net",()=>require("net"))},660526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},192520,e=>{"use strict";let t;var r=e.i(750227),a=e.i(660526),n=e.i(902157);function s(){return t||(t=process.env.TOWER_DATA_DIR||(0,r.join)((0,a.homedir)(),".tower"),(0,n.existsSync)(t)||(0,n.mkdirSync)(t,{recursive:!0})),t}e.s(["getAssistantDir",0,function(){let e=(0,r.join)(s(),"assistant");return(0,n.existsSync)(e)||(0,n.mkdirSync)(e,{recursive:!0}),e},"getBackupsDir",0,function(){let e=(0,r.join)(s(),"backups");return(0,n.existsSync)(e)||(0,n.mkdirSync)(e,{recursive:!0}),e},"getStorageDir",0,function(){let e=(0,r.join)(s(),"storage");return(0,n.existsSync)(e)||(0,n.mkdirSync)(e,{recursive:!0}),e},"getTowerDbPath",0,function(){let e;return(0,r.join)((e=(0,r.join)(s(),"database"),(0,n.existsSync)(e)||(0,n.mkdirSync)(e,{recursive:!0}),e),"tower.db")},"getTowerDir",0,s])},482819,(e,t,r)=>{"use strict";t.exports=e.r(583981).vendored["react-rsc"].ReactServerDOMTurbopackServer},921675,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"registerServerReference",{enumerable:!0,get:function(){return a.registerServerReference}});let a=e.r(482819)},86708,(e,t,r)=>{"use strict";function a(e){for(let t=0;t<e.length;t++){let r=e[t];if("function"!=typeof r)throw Object.defineProperty(Error(`A "use server" file can only export async functions, found ${typeof r}.
2
- Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ensureServerEntryExports",{enumerable:!0,get:function(){return a}})},843793,e=>{"use strict";var t=e.i(933919);let r=globalThis.prisma??new t.PrismaClient({log:[]});process.on("SIGTERM",()=>{r.$disconnect().catch(()=>{})}),process.on("SIGINT",()=>{r.$disconnect().catch(()=>{})}),e.s(["db",0,r])},572173,e=>{"use strict";var t=e.i(843793);async function r(e,r){let a=await t.db.systemConfig.findUnique({where:{key:e}});if(!a)return r;try{return JSON.parse(a.value)}catch{return r}}e.s(["readConfigValue",0,r])},658053,e=>{"use strict";e.s(["ASSISTANT_SESSION_KEY",0,"__assistant__"])},666680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},341291,e=>{"use strict";var t=e.i(666680),r=e.i(902157),a=e.i(750227);let n=(0,e.i(192520).getStorageDir)();function s(e){if(!e.startsWith(n+a.sep))throw Error("Path traversal detected")}let i=new Set(["image","screenshot","img","photo","picture","clipboard","paste","untitled"]);e.s(["buildCacheFilename",0,function(e,r){let n=a.basename(e,a.extname(e)),s=t.randomUUID().replace(/-/g,"").slice(0,8),o=n.toLowerCase();if(!n||i.has(o)||/^screenshot[\s_\-]/i.test(n))return`tower_image-${s}${r}`;let l=n.replace(/[^\p{L}\p{N}]/gu,"_").replace(/_+/g,"_").replace(/^_+|_+$/g,"");return`${l||"file"}-${s}${r}`},"ensureAssetsDir",0,function(e){let t,i=(s(t=a.join(n,"assets",e)),t);return r.mkdirSync(i,{recursive:!0}),i},"getAssistantCacheDir",0,function(e="images"){let t=new Date,i=`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}`,o=a.join(n,"cache","assistant",i,e);return s(o),r.mkdirSync(o,{recursive:!0}),o},"getAssistantCacheRoot",0,function(){let e=a.join(n,"cache","assistant");return s(e),e}])},634712,e=>{"use strict";let t=["jpg","jpeg","png","gif","webp"],r=["md","txt","json","csv"],a=[...t,...r].join("|"),n=RegExp(`^\\d{4}-\\d{2}/(images|files)/[^/]+\\.(${a})$`,"i");function s(e){let a=e.replace(/^\./,"").toLowerCase();return t.includes(a)?"image":r.includes(a)?"text":null}[...t.map(e=>`.${e}`),...r.map(e=>`.${e}`),"image/*"].join(","),e.s(["ALLOWED_TEXT_EXTS",0,r,"ATTACHMENT_SUBPATH_RE",0,n,"MAX_ATTACHMENTS",0,10,"classifyAttachmentExt",0,s,"classifyAttachmentSubPath",0,function(e){if(!n.test(e))return null;let t=e.lastIndexOf(".");return t<0?null:s(e.slice(t+1))}])},276534,e=>{"use strict";e.s(["CONFIG_DEFAULTS",0,{"git.pathMappingRules":{defaultValue:[],type:"object",label:"Git Path Mapping Rules"},"system.maxUploadBytes":{defaultValue:0x3200000,type:"number",label:"Max Upload Size (bytes)"},"system.maxConcurrentExecutions":{defaultValue:20,type:"number",label:"Max Concurrent Executions"},"system.maxReadableFileBytes":{defaultValue:5242880,type:"number",label:"Max Readable File Size (bytes)"},"system.backupDir":{defaultValue:"",type:"string",label:"Backup Directory"},"git.timeoutSec":{defaultValue:30,type:"number",label:"Git Operation Timeout (seconds)"},"search.resultLimit":{defaultValue:20,type:"number",label:"Search Result Limit"},"search.allModeCap":{defaultValue:5,type:"number",label:"All-Mode Per-Type Cap"},"search.debounceMs":{defaultValue:250,type:"number",label:"Search Debounce (ms)"},"search.snippetLength":{defaultValue:80,type:"number",label:"Snippet Length (characters)"},"search.codeTimeoutSec":{defaultValue:30,type:"number",label:"Code Search Timeout (seconds)"},"missions.grid.minCols":{defaultValue:1,type:"number",label:"Grid Min Columns"},"missions.grid.maxCols":{defaultValue:5,type:"number",label:"Grid Max Columns"},"missions.grid.minRows":{defaultValue:1,type:"number",label:"Grid Min Rows"},"missions.grid.maxRows":{defaultValue:5,type:"number",label:"Grid Max Rows"},"terminal.app":{defaultValue:"Terminal",type:"string",label:"Default Terminal App"},"terminal.wsPort":{defaultValue:3001,type:"number",label:"WebSocket Port"},"terminal.idleTimeoutSec":{defaultValue:180,type:"number",label:"Idle Timeout (seconds)"},"assistant.systemPrompt":{defaultValue:'You are Tower Assistant — the built-in AI operator for the Tower task management platform.\n\n## Identity\n- You are a task management operator, NOT a coding assistant.\n- You can ONLY use Tower MCP tools. You CANNOT read files, edit code, run shell commands, or search the web.\n- Always respond in the same language the user uses.\n\n## Capabilities\nWhen users ask what you can do, respond with EXACTLY these 6 groups. Translate to the user\'s language.\n\n1. **Workspace & Project** — View, create, update, delete workspaces and projects. Search projects and repositories.\n2. **Task Management** — Create tasks (priority, labels, worktree branch isolation, sub-path, auto-start). Move task status (TODO → IN_PROGRESS → IN_REVIEW → DONE / CANCELLED). Update task info and labels.\n3. **Execution Monitor** — Start task execution, check execution status, get terminal output, send commands to running terminals.\n4. **Daily Report & Todo** — Generate daily work summary (completed + in-progress). View pending task list sorted by priority.\n5. **Labels & Notes & Assets** — Manage workspace labels, project notes, and file attachments.\n6. **Global Search** — Search tasks, projects, repositories, notes, and assets by keyword.\n\nDo NOT list any capabilities beyond the above. Do NOT mention code editing, debugging, testing, git operations, or any development capabilities.\n\n## Scope Boundary\nIf the user asks you to write code, explain code, debug, search the web, read/write files, or anything outside Tower task management, reply:\n"抱歉,我只能帮你管理工作区、项目和任务。编码、调试等操作请在任务终端中完成。"',type:"string",label:"Assistant System Prompt"},"assistant.displayMode":{defaultValue:"sidebar",type:"string",label:"Assistant Display Mode"},"assistant.communicationMode":{defaultValue:"chat",type:"string",label:"Assistant Communication Mode"}}])},61920,e=>{"use strict";var t=e.i(446786),r=e.i(814747);function a(e){return e.startsWith("~/")?r.default.join(t.default.homedir(),e.slice(2)):e}function n(e){let t,r=e.match(/^git@([^:]+):(.+)$/);if(r)return{host:r[1],pathSegments:s(r[2]).split("/").filter(Boolean)};try{t=new URL(e)}catch{return null}return{host:t.hostname,pathSegments:s(decodeURIComponent(t.pathname)).split("/").filter(Boolean)}}function s(e){return e.replace(/\.git\/?$/,"")}e.s(["gitUrlToLocalPath",0,function(e){let t=e.trim();if(!t)return"";try{let e=n(t);if(!e)return"";let{host:s,pathSegments:i}=e;if("code.iflytek.com"===s){let e,t;return a((e=[...i],"osc"===e[0]&&"_source"===e[1]&&(e=e.slice(2)),((t=e.indexOf("-"))>0&&(e=e.slice(0,t)),0===e.length)?"":`~/company/${e.join("/")}`))}if("github.com"===s){var r;let e,t;return a((e=(r=i)[0],t=r[1],e&&t?`${"jp-liu"===e?"~/project/i":"~/project/f"}/${t}`:""))}let o=i[i.length-1];return o?a(`~/project/f/${o}`):""}catch{return""}},"matchGitPathRule",0,function(e,t){if(!t.length)return"";let r=e.trim();if(!r)return"";let s=n(r);if(!s)return"";let{host:i,pathSegments:o}=s,l=o[0]??"",u=o[o.length-1]??"",c=[...t].sort((e,t)=>{let r=+("*"===e.ownerMatch),a=+("*"===t.ownerMatch);return r!==a?r-a:e.priority-t.priority}),p=o.join("/");for(let e of c){if(e.host!==i||"*"!==e.ownerMatch&&e.ownerMatch!==l)continue;let t=e.localPathTemplate;if(t.includes("{path}"))return a(t.replace("{path}",p).replace("{owner}",l).replace("{repo}",u).replace(/\/+$/,""));let r=t.replace("{owner}",l).replace("{repo}","").replace(/\/+$/,"");return a(`${r}/${u}`)}return""}])},22569,e=>e.a(async(t,r)=>{try{var a=e.i(921675),n=e.i(843793),s=e.i(276534),i=e.i(61920),o=e.i(769310),l=e.i(721390),u=e.i(86708),c=t([l]);async function p(e,t){let r=await n.db.systemConfig.findUnique({where:{key:e}});if(!r)return t;try{return JSON.parse(r.value)}catch{return t}}async function d(e,t){await n.db.systemConfig.upsert({where:{key:e},create:{key:e,value:JSON.stringify(t)},update:{value:JSON.stringify(t)}})}async function f(e){let t=e.trim();if(!t)return"";try{let e=await p("git.pathMappingRules",[]),r=(0,i.matchGitPathRule)(t,e);if(r)return r;return(0,i.gitUrlToLocalPath)(t)}catch{return(0,i.gitUrlToLocalPath)(t)}}async function m(e){let t=await n.db.systemConfig.findMany({where:{key:{in:e}}}),r=Object.fromEntries(t.map(e=>{try{return[e.key,JSON.parse(e.value)]}catch{return[e.key,null]}})),a={};for(let t of e)a[t]=t in r?r[t]:s.CONFIG_DEFAULTS[t]?.defaultValue??null;return a}async function h(){return(0,o.detectShells)()}async function g(){return(0,o.detectTerminalApps)()}async function y(){return{platform:process.platform}}async function b(){let e=(0,l.getActiveWsPort)();if(null!==e)return e;let t=parseInt(process.env.PORT||"3000",10);return p("terminal.wsPort",t+1)}[l]=c.then?(await c)():c,(0,u.ensureServerEntryExports)([p,d,f,m,h,g,y,b]),(0,a.registerServerReference)(p,"601406ecac79b3ad03802ebdad7fee412b1cd242a3",null),(0,a.registerServerReference)(d,"602a9baca17d1dfb46d6920ffa0a228eef5457ab33",null),(0,a.registerServerReference)(f,"40b05fa1832e38faf3093f26ffc25130691bc7b075",null),(0,a.registerServerReference)(m,"408a94f097a9a92d17f4ef2a81b170cb16586e0cba",null),(0,a.registerServerReference)(h,"006ca763a21e0c7b1c866f46617803dde0a13da9ea",null),(0,a.registerServerReference)(g,"0017c96cfbba10eb5558b07c346d467fafc74ba32f",null),(0,a.registerServerReference)(y,"00dbf32469ff11201d8f24aef9098bcb9fa141bcd4",null),(0,a.registerServerReference)(b,"001e1fa1609fa6f321934af3c930363baeed8b3d15",null),e.s(["getConfigValue",0,p]),r()}catch(e){r(e)}},!1),437513,e=>{"use strict";let t=[{mime:"image/jpeg",check:e=>255===e[0]&&216===e[1]&&255===e[2]},{mime:"image/png",check:e=>137===e[0]&&80===e[1]&&78===e[2]&&71===e[3]},{mime:"image/gif",check:e=>71===e[0]&&73===e[1]&&70===e[2]},{mime:"image/webp",check:e=>82===e[0]&&73===e[1]&&70===e[2]&&70===e[3]&&87===e[8]&&69===e[9]&&66===e[10]&&80===e[11]}];e.s(["MIME_TO_EXT",0,{"image/jpeg":".jpg","image/png":".png","image/gif":".gif","image/webp":".webp"},"TEXT_EXT_TO_MIME",0,{".md":"text/markdown",".txt":"text/plain",".json":"application/json",".csv":"text/csv"},"detectImageMime",0,function(e){if(e.length<12)return null;for(let r of t)if(r.check(e))return r.mime;return null},"isLikelyTextFile",0,function(e){if(0===e.length)return!0;let t=Math.min(e.length,8192);for(let r=0;r<t;r++)if(0===e[r])return!1;return!0}])},648834,e=>e.a(async(t,r)=>{try{var a=e.i(750227),n=e.i(902157),s=e.i(855104),i=e.i(198840),o=e.i(437513),l=e.i(341291),u=e.i(22569),c=e.i(634712),p=t([u]);async function d(e){let t,r,p,d=(0,i.requireLocalhost)(e);if(d)return d;let f=(await e.formData()).get("file");if(!f)return s.NextResponse.json({error:"Missing file field"},{status:400});let m=await (0,u.getConfigValue)("system.maxUploadBytes",0x3200000);if(f.size>m)return s.NextResponse.json({error:"File too large"},{status:400});let h=Buffer.from(await f.arrayBuffer()),g=a.extname(f.name),y=(0,c.classifyAttachmentExt)(g);if(!y)return s.NextResponse.json({error:"Unsupported file type"},{status:400});if("image"===y){let e=(0,o.detectImageMime)(h);if(!e)return s.NextResponse.json({error:"Invalid image content"},{status:400});r=e,t=o.MIME_TO_EXT[e],p=(0,l.getAssistantCacheDir)("images")}else{if(!(0,o.isLikelyTextFile)(h))return s.NextResponse.json({error:"File appears to be binary, not text"},{status:400});let e=g.toLowerCase();if(!c.ALLOWED_TEXT_EXTS.includes(e.replace(/^\./,"")))return s.NextResponse.json({error:"Unsupported text type"},{status:400});t=e,r=o.TEXT_EXT_TO_MIME[e]??"text/plain",p=(0,l.getAssistantCacheDir)("files")}let b=(0,l.buildCacheFilename)(f.name,t),x=a.join(p,b);if(!x.startsWith(p+a.sep)&&x!==p)return s.NextResponse.json({error:"Invalid path"},{status:400});await n.promises.writeFile(x,h);let v=a.relative((0,l.getAssistantCacheRoot)(),x);return s.NextResponse.json({filename:v,mimeType:r,kind:y})}[u]=p.then?(await p)():p,e.s(["POST",0,d,"dynamic",0,"force-dynamic","runtime",0,"nodejs"]),r()}catch(e){r(e)}},!1),122166,e=>e.a(async(t,r)=>{try{var a=e.i(765876),n=e.i(675896),s=e.i(959160),i=e.i(97944),o=e.i(86757),l=e.i(204144),u=e.i(273436),c=e.i(743641),p=e.i(813766),d=e.i(840884),f=e.i(498814),m=e.i(780006),h=e.i(544432),g=e.i(772005),y=e.i(450223),b=e.i(193695);e.i(628400);var x=e.i(800071),v=e.i(648834),w=t([v]);[v]=w.then?(await w)():w;let S=new a.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/internal/assistant/attachments/route",pathname:"/api/internal/assistant/attachments",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/internal/assistant/attachments/route.ts",nextConfigOutput:"standalone",userland:v}),{workAsyncStorage:T,workUnitAsyncStorage:E,serverHooks:C}=S;async function R(e,t,r){r.requestMeta&&(0,i.setRequestMeta)(e,r.requestMeta),S.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let a="/api/internal/assistant/attachments/route";a=a.replace(/\/index$/,"")||"/";let s=await S.prepare(e,t,{srcPage:a,multiZoneDraftMode:!1});if(!s)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:v,params:w,nextConfig:R,parsedUrl:T,isDraftMode:E,prerenderManifest:C,routerServerContext:A,isOnDemandRevalidate:_,revalidateOnlyGenerated:j,resolvedPathname:k,clientReferenceManifest:M,serverActionsManifest:O}=s,N=(0,u.normalizeAppPath)(a),P=!!(C.dynamicRoutes[N]||C.routes[k]),D=async()=>((null==A?void 0:A.render404)?await A.render404(e,t,T,!1):t.end("This page could not be found"),null);if(P&&!E){let e=!!C.routes[k],t=C.dynamicRoutes[N];if(t&&!1===t.fallback&&!e){if(R.adapterPath)return await D();throw new b.NoFallbackError}}let I=null;!P||S.isDev||E||(I=k,I="/index"===I?"/":I);let q=!0===S.isDev||!P,U=P&&!q;O&&M&&(0,l.setManifestsSingleton)({page:a,clientReferenceManifest:M,serverActionsManifest:O});let $=e.method||"GET",L=(0,o.getTracer)(),V=L.getActiveScopeSpan(),F=!!(null==A?void 0:A.isWrappedByNextServer),H=!!(0,i.getRequestMeta)(e,"minimalMode"),G=(0,i.getRequestMeta)(e,"incrementalCache")||await S.getIncrementalCache(e,R,C,H);null==G||G.resetRequestCache(),globalThis.__incrementalCache=G;let B={params:w,previewProps:C.preview,renderOpts:{experimental:{authInterrupts:!!R.experimental.authInterrupts},cacheComponents:!!R.cacheComponents,supportsDynamicResponse:q,incrementalCache:G,cacheLifeProfiles:R.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>S.onRequestError(e,t,a,n,A)},sharedContext:{buildId:v}},X=new c.NodeNextRequest(e),W=new c.NodeNextResponse(t),K=p.NextRequestAdapter.fromNodeNextRequest(X,(0,p.signalFromNodeResponse)(t));try{let s,i=async e=>S.handle(K,B).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")!==d.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=`${$} ${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(`${$} ${a}`)}),l=async s=>{var o,l;let u=async({previousCacheEntry:n})=>{try{if(!H&&_&&j&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await i(s);e.fetchMetrics=B.renderOpts.fetchMetrics;let o=B.renderOpts.pendingWaitUntil;o&&r.waitUntil&&(r.waitUntil(o),o=void 0);let l=B.renderOpts.collectedTags;if(!P)return await (0,m.sendResponse)(X,W,a,B.renderOpts.pendingWaitUntil),null;{let e=await a.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(a.headers);l&&(t[y.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==B.renderOpts.collectedRevalidate&&!(B.renderOpts.collectedRevalidate>=y.INFINITE_CACHE)&&B.renderOpts.collectedRevalidate,n=void 0===B.renderOpts.collectedExpire||B.renderOpts.collectedExpire>=y.INFINITE_CACHE?void 0:B.renderOpts.collectedExpire;return{value:{kind:x.CachedRouteKind.APP_ROUTE,status:a.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==n?void 0:n.isStale)&&await S.onRequestError(e,t,{routerKind:"App Router",routePath:a,routeType:"route",revalidateReason:(0,f.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:_})},!1,A),t}},c=await S.handleResponse({req:e,nextConfig:R,cacheKey:I,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:_,revalidateOnlyGenerated:j,responseGenerator:u,waitUntil:r.waitUntil,isMinimalMode:H});if(!P)return null;if((null==c||null==(o=c.value)?void 0:o.kind)!==x.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(l=c.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});H||t.setHeader("x-nextjs-cache",_?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),E&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let p=(0,h.fromNodeOutgoingHttpHeaders)(c.value.headers);return H&&P||p.delete(y.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||p.get("Cache-Control")||p.set("Cache-Control",(0,g.getCacheControlHeader)(c.cacheControl)),await (0,m.sendResponse)(X,W,new Response(c.value.body,{headers:p,status:c.value.status||200})),null};F&&V?await l(V):(s=L.getActiveScopeSpan(),await L.withPropagatedContext(e.headers,()=>L.trace(d.BaseServerSpan.handleRequest,{spanName:`${$} ${a}`,kind:o.SpanKind.SERVER,attributes:{"http.method":$,"http.target":e.url}},l),void 0,!F))}catch(t){if(t instanceof b.NoFallbackError||await S.onRequestError(e,t,{routerKind:"App Router",routePath:N,routeType:"route",revalidateReason:(0,f.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:_})},!1,A),P)throw t;return await (0,m.sendResponse)(X,W,new Response(null,{status:500})),null}}e.s(["handler",0,R,"patchFetch",0,function(){return(0,s.patchFetch)({workAsyncStorage:T,workUnitAsyncStorage:E})},"routeModule",0,S,"serverHooks",0,C,"workAsyncStorage",0,T,"workUnitAsyncStorage",0,E]),r()}catch(e){r(e)}},!1)];
3
-
4
- //# sourceMappingURL=%5Broot-of-the-server%5D__05353yb._.js.map
@@ -1,4 +0,0 @@
1
- module.exports=[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"))},660526,(e,r,t)=>{r.exports=e.x("node:os",()=>require("node:os"))},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"))},980738,(e,r,t)=>{r.exports=e.x("node-pty-c710df912a232c01",()=>require("node-pty-c710df912a232c01"))},522734,(e,r,t)=>{r.exports=e.x("fs",()=>require("fs"))},233405,(e,r,t)=>{r.exports=e.x("child_process",()=>require("child_process"))},924868,(e,r,t)=>{r.exports=e.x("fs/promises",()=>require("fs/promises"))},814747,(e,r,t)=>{r.exports=e.x("path",()=>require("path"))},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"))},446786,(e,r,t)=>{r.exports=e.x("os",()=>require("os"))},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])},572173,e=>{"use strict";var r=e.i(843793);async function t(e,t){let n=await r.db.systemConfig.findUnique({where:{key:e}});if(!n)return t;try{return JSON.parse(n.value)}catch{return t}}e.s(["readConfigValue",0,t])},248434,e=>{"use strict";var r=e.i(233405),t=e.i(522734),n=e.i(924868),i=e.i(814747),s=e.i(446786),o=e.i(50377);function a(e){return e.startsWith("~/")||"~"===e?i.default.join(s.default.homedir(),e.slice(1)):e}async function c(e,s,c,l){let d=a(e),u=i.default.join(d,".worktrees","task-"+s),p="task/"+s;await (0,n.mkdir)(i.default.join(d,".worktrees"),{recursive:!0});let f=(0,r.execFileSync)("git",["worktree","list","--porcelain"],{cwd:d,encoding:"utf-8",timeout:1e4}),v=i.default.normalize(u).replace(/\\/g,"/");if(f.split("\n").some(e=>e.startsWith("worktree ")&&e.slice(9).replace(/\\/g,"/")===v))return{worktreePath:u,worktreeBranch:p};if((0,t.existsSync)(u)&&(o.logger.warn(`[worktree] Directory exists but not tracked by git, removing: ${u}`),(0,r.execFileSync)("git",["worktree","remove",u,"--force"],{cwd:d,encoding:"utf-8",timeout:3e4})),(0,r.execFileSync)("git",["branch","--list",p],{cwd:d,encoding:"utf-8",timeout:5e3}).trim())(0,r.execFileSync)("git",["worktree","add",u,p],{cwd:d,encoding:"utf-8",timeout:3e4});else{let e=c;try{(0,r.execFileSync)("git",["rev-parse","--verify",c],{cwd:d,encoding:"utf-8",timeout:5e3,stdio:["pipe","pipe","pipe"]})}catch{try{(0,r.execFileSync)("git",["rev-parse","--verify",`origin/${c}`],{cwd:d,encoding:"utf-8",timeout:5e3,stdio:["pipe","pipe","pipe"]}),e=`origin/${c}`}catch{throw Error(`Base branch '${c}' does not exist locally or on remote. Available branches: `+(0,r.execFileSync)("git",["branch","-a","--format=%(refname:short)"],{cwd:d,encoding:"utf-8",timeout:5e3}).trim().split("\n").join(", "))}}(0,r.execFileSync)("git",["worktree","add","-b",p,u,e],{cwd:d,encoding:"utf-8",timeout:3e4})}return function(e,r,n){let s=o.logger.create("worktree"),a=["node_modules",".next"];for(let o of n?["",n]:[""])if((0,t.existsSync)(i.default.join(e,o,"package.json")))for(let n of a){let a=o?i.default.join(o,n):n,c=i.default.join(e,a),l=i.default.join(r,a);if((0,t.existsSync)(c)){try{(0,t.lstatSync)(l);continue}catch{}try{(0,t.symlinkSync)(c,l,"junction"),s.info(`Symlinked ${a}`,{from:c,to:l})}catch(e){s.warn(`Failed to symlink ${a}`,{error:String(e)})}}}}(d,u,l),{worktreePath:u,worktreeBranch:p}}async function l(e,n){let s=a(e),o=i.default.join(s,".worktrees","task-"+n),c="task/"+n;(0,t.existsSync)(o)&&(0,r.execFileSync)("git",["worktree","remove",o,"--force"],{cwd:s,encoding:"utf-8",timeout:3e4}),(0,r.execFileSync)("git",["branch","--list",c],{cwd:s,encoding:"utf-8",timeout:5e3}).trim()&&(0,r.execFileSync)("git",["branch","-D",c],{cwd:s,encoding:"utf-8",timeout:5e3})}e.s(["createWorktree",0,c,"removeWorktree",0,l])},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 n.registerServerReference}});let n=e.r(482819)},86708,(e,r,t)=>{"use strict";function n(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 n}})},932583,e=>{"use strict";var r=e.i(921675),t=e.i(843793);async function n(e,r={}){let i=r.report,s=i?JSON.stringify(i):null;await t.db.providerConnection.upsert({where:{provider:e},create:{provider:e,lastTestedAt:new Date,testOk:!0,version:r.version??null,mcpInstalled:i?.mcp?.ok??!1,hooksInstalled:i?.hooks?.ok??!1,skillsInstalled:i?.skill?.ok??!1,installLog:s},update:{lastTestedAt:new Date,testOk:!0,version:r.version??null,mcpInstalled:i?.mcp?.ok??!1,hooksInstalled:i?.hooks?.ok??!1,skillsInstalled:i?.skill?.ok??!1,installLog:s}})}async function i(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 s(e){let r=await t.db.providerConnection.findUnique({where:{provider:e}});return!!r&&r.testOk&&r.mcpInstalled&&r.hooksInstalled&&r.skillsInstalled}async function o(){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)([n,i,s,o,a]),(0,r.registerServerReference)(n,"60f2f92fe7bdce7564b1bfb9fe782dce52a5f40532",null),(0,r.registerServerReference)(i,"600c4af6fb652798381c884427b885d15bc63c108c",null),(0,r.registerServerReference)(s,"40f56dbcfd9524058ae7baa773e26ec18d0a13149a",null),(0,r.registerServerReference)(o,"00d55096af76a40d03560bde74fa567e878ce6f41d",null),(0,r.registerServerReference)(a,"007c14f1aa77e25eb12260995f977911757f9fcd54",null),e.s(["getConnectedProviders",0,o,"isProviderConnected",0,s,"markProviderConnected",0,n,"markProviderDisconnected",0,i])},89428,e=>{"use strict";var r=e.i(843793),t=e.i(279711);class n extends Error{code;provider;constructor(e,r,t){super(t),this.code=e,this.provider=r,this.name="AiProviderError"}}var i=e.i(932583);let s="claude",o="请到 Settings → Test Connection 测试该 Provider 后再使用(未注入的 CLI 不能被插槽选中)";async function a(e){return r.db.aiCapabilityConfig.findUnique({where:{slot:e}})}async function c(e){if(e){if(await (0,i.isProviderConnected)(e))return e;throw new n("CLI_NOT_FOUND",e,`Provider "${e}" 未连接:${o}`)}let r=await (0,i.getConnectedProviders)();if(0===r.length)throw new n("CLI_NOT_FOUND",s,`没有任何 AI Provider 已连接:${o}`);return r.includes(s)?s:r[0]}async function l(e){let r=await a(e),i=r?.model??void 0,s=await c(r?.provider??null),o=t.providerRegistry.get(s);if(!o)throw new n("CLI_NOT_FOUND",s,`Provider "${s}" 未注册`);let l=o.cli?.adapter;if(!l)throw new n("UNSUPPORTED_MODE",s,`Provider "${s}" 不支持 CLI 模式`);return{adapter:l,provider:o,model:i}}e.s(["resolveCliAdapter",0,l],89428)},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(e=>Promise.resolve().then(()=>e(233405)))},534777,e=>{e.v(r=>Promise.all(["server/chunks/[externals]_util_0wtvqkc._.js"].map(r=>e.l(r))).then(()=>r(224361)))},217260,e=>{e.v(e=>Promise.resolve().then(()=>e(83721)))},507603,e=>{e.v(r=>Promise.all(["server/chunks/_0trog_r._.js"].map(r=>e.l(r))).then(()=>r(283373)))},136565,e=>{e.v(r=>Promise.all(["server/chunks/src_01ztl3b._.js"].map(r=>e.l(r))).then(()=>r(215624)))},260815,e=>{e.v(e=>Promise.resolve().then(()=>e(924868)))}];
3
-
4
- //# sourceMappingURL=%5Broot-of-the-server%5D__09h3i6m._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[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"))},660526,(e,r,t)=>{r.exports=e.x("node:os",()=>require("node:os"))},603484,e=>{"use strict";e.i(902157);var r=e.i(874533),t=e.i(750227);function n(e=process.platform){return"win32"===e}let o=["CLAUDECODE","CLAUDE_CODE_ENTRYPOINT","CLAUDE_CODE_SESSION","CLAUDE_CODE_PARENT_SESSION"],s=e=>(0,r.execSync)(e,{encoding:"utf-8",timeout:5e3});e.s(["ensurePathInEnv",0,function(e,r=process.platform){let t=n(r)?"Path":"PATH";return(e.PATH??e.Path??"").length>0?e:{...e,[t]: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"}(r)}},"resolveCommandPathSync",0,function(e,o=process.platform,i=s){if(t.default.extname(e)||e.includes("/")||e.includes("\\"))return e;if(!n(o)){try{let t=(0,r.execFileSync)("which",[e],{encoding:"utf-8",timeout:5e3}).trim();if(t)return t}catch{}return e}try{let r=i(`where ${e}`).trim().split("\n").map(e=>e.trim()).filter(Boolean),t=r.find(e=>/\.(cmd|bat|exe)$/i.test(e));if(t)return t;if(r.length>0)return r[0]}catch{}return e},"stripClaudeNestingEnv",0,function(e){let r={...e};for(let e of o)delete r[e];return r}])},760138,216258,e=>{"use strict";let r;var t=e.i(902157),n=e.i(660526),o=e.i(750227),s=e.i(136902);function i(){return r||(r=process.env.TOWER_DATA_DIR||(0,o.join)((0,n.homedir)(),".tower"),(0,t.existsSync)(r)||(0,t.mkdirSync)(r,{recursive:!0})),r}function l(){let e;return(0,o.join)((e=(0,o.join)(i(),"database"),(0,t.existsSync)(e)||(0,t.mkdirSync)(e,{recursive:!0}),e),"tower.db")}e.s(["getAssistantDir",0,function(){let e=(0,o.join)(i(),"assistant");return(0,t.existsSync)(e)||(0,t.mkdirSync)(e,{recursive:!0}),e},"getTowerDbPath",0,l,"getTowerDir",0,i],216258);var a=e.i(599603);let c="tower";function u(){let e=i(),r=o.join((0,n.homedir)(),".tower");if(o.resolve(e)===o.resolve(r))return"tower";let t=o.basename(e),s=t.match(/^\.?tower-(.+)$/);return s?`tower-${p(s[1])}`:`tower-${p(t)}`}function p(e){return e.replace(/[^a-z0-9_-]/gi,"-").toLowerCase().slice(0,32)}async function d(e,r){let i,p,d,m,f=s.providerRegistry.get(e),v=f?.cli?.adapter;if(!v||!await v.isAvailable())return{provider:e,available:!1,ok:!1};let h="claude"===e?function(e={}){let r=e.homeDir??n.homedir(),s=e.repoRoot??process.cwd(),i=[];return i.push(function(e){let r=o.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),o=n.mcpServers;if("object"!=typeof o||null===o||Array.isArray(o)||!("tower"in o))return{removed:!1,path:r};let s=o.tower;return delete o.tower,0===Object.keys(o).length?delete n.mcpServers:n.mcpServers=o,t.writeFileSync(r,JSON.stringify(n,null,2)+"\n","utf-8"),{removed:!0,path:r,removedEntry:s,reason:"wrong-file"}}catch(e){return{removed:!1,path:r,error:e instanceof Error?e.message:String(e)}}}(r)),i.push(function(e,r,n){if(!t.existsSync(e))return{removed:!1,path:e};try{let s=t.readFileSync(e,"utf-8"),i=JSON.parse(s),l=i.mcpServers;if("object"!=typeof l||null===l||Array.isArray(l))return{removed:!1,path:e};let a=l.tower;if(!a)return{removed:!1,path:e};let c=function(e,r){let n,s=e.args;if(!Array.isArray(s))return"foreign-repo";for(let e of s)if("string"==typeof e&&o.isAbsolute(e)){n=e;break}return n?t.existsSync(n)?o.resolve(n).startsWith(o.resolve(r)+o.sep)?"current-repo":"foreign-repo":"missing-path":"foreign-repo"}(a,n);if("current-repo"===c)return{removed:!1,path:e,reason:"alive-current-repo"};return delete l.tower,0===Object.keys(l).length?delete i.mcpServers:i.mcpServers=l,t.writeFileSync(e,JSON.stringify(i,null,2)+"\n","utf-8"),{removed:!0,path:e,removedEntry:a,reason:`${r}:${c}`}}catch(r){return{removed:!1,path:e,error:r instanceof Error?r.message:String(r)}}}(o.join(r,".mcp.json"),"home-mcp-json",s)),{steps:i,removedAny:i.some(e=>e.removed)}}():void 0,y=(i=(0,a.getPackageRoot)().replace(/\\/g,"/"),p=process.env.DATABASE_URL||`file:${l().replace(/\\/g,"/")}`,d=`${i}/dist/mcp-server.cjs`,m=u(),(0,t.existsSync)(d)?{name:m,command:"node",args:[d],env:{DATABASE_URL:p}}:{name:m,command:`${i}/node_modules/.bin/tsx`,args:[`${i}/src/mcp/index.ts`],env:{DATABASE_URL:p}}),S=await v.installMcp(y,{scope:"user"}),g=await v.installHooks(r),w=await v.installSkill(c,o.join((0,a.getPackageRoot)(),"skills",c));return{provider:e,available:!0,migration:h,mcp:S,hooks:g,skill:w,ok:S.ok&&g.ok&&w.ok}}e.s(["getTowerMcpName",0,u,"installAllForProvider",0,d],760138)},482848,e=>{e.v(r=>Promise.all(["server/chunks/[externals]_node_child_process_06l~6ej._.js"].map(r=>e.l(r))).then(()=>r(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)))}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__0_a8-jq._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[933919,(e,t,a)=>{t.exports=e.x("@prisma/client-9249dd53ac5b6a44",()=>require("@prisma/client-9249dd53ac5b6a44"))},750227,(e,t,a)=>{t.exports=e.x("node:path",()=>require("node:path"))},902157,(e,t,a)=>{t.exports=e.x("node:fs",()=>require("node:fs"))},874533,(e,t,a)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},980738,(e,t,a)=>{t.exports=e.x("node-pty-c710df912a232c01",()=>require("node-pty-c710df912a232c01"))},433541,e=>e.a(async(t,a)=>{try{let t=await e.y("ws-4df7fc762dfa9a52");e.n(t),a()}catch(e){a(e)}},!0),504446,(e,t,a)=>{t.exports=e.x("net",()=>require("net"))},843793,e=>{"use strict";var t=e.i(933919);let a=globalThis.prisma??new t.PrismaClient({log:[]});process.on("SIGTERM",()=>{a.$disconnect().catch(()=>{})}),process.on("SIGINT",()=>{a.$disconnect().catch(()=>{})}),e.s(["db",0,a])},572173,e=>{"use strict";var t=e.i(843793);async function a(e,a){let r=await t.db.systemConfig.findUnique({where:{key:e}});if(!r)return a;try{return JSON.parse(r.value)}catch{return a}}e.s(["readConfigValue",0,a])},658053,e=>{"use strict";e.s(["ASSISTANT_SESSION_KEY",0,"__assistant__"])},395436,e=>e.a(async(t,a)=>{try{var r=e.i(855104),n=e.i(198840),s=e.i(843793),o=e.i(721390),i=t([o]);async function l(e){let t,a=(0,n.requireLocalhost)(e);if(a)return a;try{t=await e.json()}catch{return r.NextResponse.json({error:"Invalid JSON"},{status:400})}let{taskId:i,sessionId:l}=t;if(!i||"string"!=typeof i)return r.NextResponse.json({error:"taskId required"},{status:400});let d=await s.db.task.findUnique({where:{id:i},select:{id:!0,title:!0,project:{select:{workspaceId:!0}}}});if(!d)return r.NextResponse.json({error:"Task not found"},{status:404});let u={taskId:d.id,taskTitle:d.title,sessionId:l??"",workspaceId:d.project.workspaceId,type:"stop",timestamp:new Date().toISOString()};return(0,o.broadcastNotification)(u),r.NextResponse.json({ok:!0})}[o]=i.then?(await i)():i,e.s(["POST",0,l,"dynamic",0,"force-dynamic","runtime",0,"nodejs"]),a()}catch(e){a(e)}},!1),835333,e=>e.a(async(t,a)=>{try{var r=e.i(765876),n=e.i(675896),s=e.i(959160),o=e.i(97944),i=e.i(86757),l=e.i(204144),d=e.i(273436),u=e.i(743641),c=e.i(813766),p=e.i(840884),h=e.i(498814),R=e.i(780006),f=e.i(544432),v=e.i(772005),w=e.i(450223),x=e.i(193695);e.i(628400);var g=e.i(800071),m=e.i(395436),y=t([m]);[m]=y.then?(await y)():y;let C=new r.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/internal/hooks/stop/route",pathname:"/api/internal/hooks/stop",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/internal/hooks/stop/route.ts",nextConfigOutput:"standalone",userland:m}),{workAsyncStorage:N,workUnitAsyncStorage:S,serverHooks:A}=C;async function E(e,t,a){a.requestMeta&&(0,o.setRequestMeta)(e,a.requestMeta),C.isDev&&(0,o.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let r="/api/internal/hooks/stop/route";r=r.replace(/\/index$/,"")||"/";let s=await C.prepare(e,t,{srcPage:r,multiZoneDraftMode:!1});if(!s)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:m,params:y,nextConfig:E,parsedUrl:N,isDraftMode:S,prerenderManifest:A,routerServerContext:T,isOnDemandRevalidate:b,revalidateOnlyGenerated:_,resolvedPathname:I,clientReferenceManifest:q,serverActionsManifest:k}=s,O=(0,d.normalizeAppPath)(r),P=!!(A.dynamicRoutes[O]||A.routes[I]),U=async()=>((null==T?void 0:T.render404)?await T.render404(e,t,N,!1):t.end("This page could not be found"),null);if(P&&!S){let e=!!A.routes[I],t=A.dynamicRoutes[O];if(t&&!1===t.fallback&&!e){if(E.adapterPath)return await U();throw new x.NoFallbackError}}let H=null;!P||C.isDev||S||(H=I,H="/index"===H?"/":H);let M=!0===C.isDev||!P,j=P&&!M;k&&q&&(0,l.setManifestsSingleton)({page:r,clientReferenceManifest:q,serverActionsManifest:k});let D=e.method||"GET",$=(0,i.getTracer)(),K=$.getActiveScopeSpan(),F=!!(null==T?void 0:T.isWrappedByNextServer),B=!!(0,o.getRequestMeta)(e,"minimalMode"),L=(0,o.getRequestMeta)(e,"incrementalCache")||await C.getIncrementalCache(e,E,A,B);null==L||L.resetRequestCache(),globalThis.__incrementalCache=L;let G={params:y,previewProps:A.preview,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:M,incrementalCache:L,cacheLifeProfiles:E.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,n)=>C.onRequestError(e,t,r,n,T)},sharedContext:{buildId:m}},V=new u.NodeNextRequest(e),W=new u.NodeNextResponse(t),X=c.NextRequestAdapter.fromNodeNextRequest(V,(0,c.signalFromNodeResponse)(t));try{let s,o=async e=>C.handle(X,G).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=$.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=a.get("next.route");if(n){let t=`${D} ${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(`${D} ${r}`)}),l=async s=>{var i,l;let d=async({previousCacheEntry:n})=>{try{if(!B&&b&&_&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let r=await o(s);e.fetchMetrics=G.renderOpts.fetchMetrics;let i=G.renderOpts.pendingWaitUntil;i&&a.waitUntil&&(a.waitUntil(i),i=void 0);let l=G.renderOpts.collectedTags;if(!P)return await (0,R.sendResponse)(V,W,r,G.renderOpts.pendingWaitUntil),null;{let e=await r.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(r.headers);l&&(t[w.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==G.renderOpts.collectedRevalidate&&!(G.renderOpts.collectedRevalidate>=w.INFINITE_CACHE)&&G.renderOpts.collectedRevalidate,n=void 0===G.renderOpts.collectedExpire||G.renderOpts.collectedExpire>=w.INFINITE_CACHE?void 0:G.renderOpts.collectedExpire;return{value:{kind:g.CachedRouteKind.APP_ROUTE,status:r.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:n}}}}catch(t){throw(null==n?void 0:n.isStale)&&await C.onRequestError(e,t,{routerKind:"App Router",routePath:r,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:b})},!1,T),t}},u=await C.handleResponse({req:e,nextConfig:E,cacheKey:H,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:b,revalidateOnlyGenerated:_,responseGenerator:d,waitUntil:a.waitUntil,isMinimalMode:B});if(!P)return null;if((null==u||null==(i=u.value)?void 0:i.kind)!==g.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(l=u.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});B||t.setHeader("x-nextjs-cache",b?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),S&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let c=(0,f.fromNodeOutgoingHttpHeaders)(u.value.headers);return B&&P||c.delete(w.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||c.get("Cache-Control")||c.set("Cache-Control",(0,v.getCacheControlHeader)(u.cacheControl)),await (0,R.sendResponse)(V,W,new Response(u.value.body,{headers:c,status:u.value.status||200})),null};F&&K?await l(K):(s=$.getActiveScopeSpan(),await $.withPropagatedContext(e.headers,()=>$.trace(p.BaseServerSpan.handleRequest,{spanName:`${D} ${r}`,kind:i.SpanKind.SERVER,attributes:{"http.method":D,"http.target":e.url}},l),void 0,!F))}catch(t){if(t instanceof x.NoFallbackError||await C.onRequestError(e,t,{routerKind:"App Router",routePath:O,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:b})},!1,T),P)throw t;return await (0,R.sendResponse)(V,W,new Response(null,{status:500})),null}}e.s(["handler",0,E,"patchFetch",0,function(){return(0,s.patchFetch)({workAsyncStorage:N,workUnitAsyncStorage:S})},"routeModule",0,C,"serverHooks",0,A,"workAsyncStorage",0,N,"workUnitAsyncStorage",0,S]),a()}catch(e){a(e)}},!1)];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__0_mbhor._.js.map