tower-studio 0.2.33 → 0.2.35

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 (353) 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 +2 -2
  12. package/.next/standalone/.next/server/app/_not-found/page/server-reference-manifest.json +34 -34
  13. package/.next/standalone/.next/server/app/_not-found/page.js +8 -7
  14. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  15. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  16. package/.next/standalone/.next/server/app/api/adapters/test/route.js.nft.json +1 -1
  17. package/.next/standalone/.next/server/app/api/browse-fs/route.js +1 -1
  18. package/.next/standalone/.next/server/app/api/browse-fs/route.js.nft.json +1 -1
  19. package/.next/standalone/.next/server/app/api/files/assets/[projectId]/[filename]/route.js.nft.json +1 -1
  20. package/.next/standalone/.next/server/app/api/git/route.js.nft.json +1 -1
  21. package/.next/standalone/.next/server/app/api/internal/assets/[projectId]/[filename]/route.js.nft.json +1 -1
  22. package/.next/standalone/.next/server/app/api/internal/assets/reveal/route.js.nft.json +1 -1
  23. package/.next/standalone/.next/server/app/api/internal/assistant/attachments/route.js +1 -1
  24. package/.next/standalone/.next/server/app/api/internal/assistant/attachments/route.js.nft.json +1 -1
  25. package/.next/standalone/.next/server/app/api/internal/assistant/chat/route.js.nft.json +1 -1
  26. package/.next/standalone/.next/server/app/api/internal/assistant/route.js.nft.json +1 -1
  27. package/.next/standalone/.next/server/app/api/internal/assistant/sessions/route.js.nft.json +1 -1
  28. package/.next/standalone/.next/server/app/api/internal/backup/import/route.js +1 -1
  29. package/.next/standalone/.next/server/app/api/internal/backup/import/route.js.nft.json +1 -1
  30. package/.next/standalone/.next/server/app/api/internal/cache/[...segments]/route.js.nft.json +1 -1
  31. package/.next/standalone/.next/server/app/api/internal/hooks/install/route.js.nft.json +1 -1
  32. package/.next/standalone/.next/server/app/api/internal/hooks/stop/route.js.nft.json +1 -1
  33. package/.next/standalone/.next/server/app/api/internal/hooks/upload/route.js +2 -1
  34. package/.next/standalone/.next/server/app/api/internal/hooks/upload/route.js.nft.json +1 -1
  35. package/.next/standalone/.next/server/app/api/internal/monaco/[...path]/route.js.nft.json +1 -1
  36. package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/buffer/route.js.nft.json +1 -1
  37. package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/input/route.js.nft.json +1 -1
  38. package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/start/route.js +1 -1
  39. package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/start/route.js.nft.json +1 -1
  40. package/.next/standalone/.next/server/app/api/tasks/[taskId]/diff/route.js.nft.json +1 -1
  41. package/.next/standalone/.next/server/app/api/tasks/[taskId]/merge/route.js +1 -1
  42. package/.next/standalone/.next/server/app/api/tasks/[taskId]/merge/route.js.nft.json +1 -1
  43. package/.next/standalone/.next/server/app/missions/page/react-loadable-manifest.json +1 -1
  44. package/.next/standalone/.next/server/app/missions/page/server-reference-manifest.json +67 -67
  45. package/.next/standalone/.next/server/app/missions/page.js +8 -7
  46. package/.next/standalone/.next/server/app/missions/page.js.nft.json +1 -1
  47. package/.next/standalone/.next/server/app/missions/page_client-reference-manifest.js +1 -1
  48. package/.next/standalone/.next/server/app/onboarding/page/react-loadable-manifest.json +2 -2
  49. package/.next/standalone/.next/server/app/onboarding/page/server-reference-manifest.json +34 -34
  50. package/.next/standalone/.next/server/app/onboarding/page.js +8 -7
  51. package/.next/standalone/.next/server/app/onboarding/page.js.nft.json +1 -1
  52. package/.next/standalone/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  53. package/.next/standalone/.next/server/app/page/react-loadable-manifest.json +2 -2
  54. package/.next/standalone/.next/server/app/page/server-reference-manifest.json +34 -34
  55. package/.next/standalone/.next/server/app/page.js +8 -7
  56. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  57. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  58. package/.next/standalone/.next/server/app/settings/page/react-loadable-manifest.json +2 -2
  59. package/.next/standalone/.next/server/app/settings/page/server-reference-manifest.json +51 -51
  60. package/.next/standalone/.next/server/app/settings/page.js +9 -8
  61. package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
  62. package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  63. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/archive/page/react-loadable-manifest.json +2 -2
  64. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/archive/page/server-reference-manifest.json +228 -144
  65. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/archive/page.js +9 -8
  66. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/archive/page.js.nft.json +1 -1
  67. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/archive/page_client-reference-manifest.js +1 -1
  68. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/assets/page/react-loadable-manifest.json +2 -2
  69. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/assets/page/server-reference-manifest.json +158 -134
  70. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/assets/page.js +9 -8
  71. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/assets/page.js.nft.json +1 -1
  72. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/assets/page_client-reference-manifest.js +1 -1
  73. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/notes/page/react-loadable-manifest.json +2 -2
  74. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/notes/page/server-reference-manifest.json +210 -102
  75. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/notes/page.js +10 -7
  76. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/notes/page.js.nft.json +1 -1
  77. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/notes/page_client-reference-manifest.js +1 -1
  78. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/page/react-loadable-manifest.json +2 -2
  79. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/page/server-reference-manifest.json +127 -67
  80. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/page.js +9 -8
  81. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/page.js.nft.json +1 -1
  82. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/page_client-reference-manifest.js +1 -1
  83. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page/react-loadable-manifest.json +2 -2
  84. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page/server-reference-manifest.json +34 -34
  85. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page.js +9 -8
  86. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page.js.nft.json +1 -1
  87. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page_client-reference-manifest.js +1 -1
  88. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/versions/page/react-loadable-manifest.json +2 -2
  89. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/versions/page/server-reference-manifest.json +148 -124
  90. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/versions/page.js +9 -8
  91. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/versions/page.js.nft.json +1 -1
  92. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/versions/page_client-reference-manifest.js +1 -1
  93. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page/react-loadable-manifest.json +3 -3
  94. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page/server-reference-manifest.json +81 -81
  95. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page.js +10 -9
  96. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page.js.nft.json +1 -1
  97. package/.next/standalone/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page_client-reference-manifest.js +1 -1
  98. package/.next/standalone/.next/server/app/workspaces/page/react-loadable-manifest.json +2 -2
  99. package/.next/standalone/.next/server/app/workspaces/page/server-reference-manifest.json +50 -50
  100. package/.next/standalone/.next/server/app/workspaces/page.js +8 -7
  101. package/.next/standalone/.next/server/app/workspaces/page.js.nft.json +1 -1
  102. package/.next/standalone/.next/server/app/workspaces/page_client-reference-manifest.js +1 -1
  103. package/.next/standalone/.next/server/chunks/0se9_next_dist_esm_build_templates_app-route_0hrprmi.js +1 -1
  104. package/.next/standalone/.next/server/chunks/0se9_next_dist_esm_build_templates_app-route_0yp430z.js +3 -0
  105. package/.next/standalone/.next/server/chunks/{[externals]__12mj_bs._.js → [externals]__0o6dym7._.js} +2 -2
  106. package/.next/standalone/.next/server/chunks/[root-of-the-server]__00llstz._.js +4 -0
  107. package/.next/standalone/.next/server/chunks/[root-of-the-server]__01n7exm._.js +1 -1
  108. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0kay2~d._.js → [root-of-the-server]__01yu.gw._.js} +3 -3
  109. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__01_h-re._.js → [root-of-the-server]__05nz.tg._.js} +2 -2
  110. package/.next/standalone/.next/server/chunks/[root-of-the-server]__08u6wg.._.js +1 -1
  111. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0d2japj._.js +1 -1
  112. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0122.hq._.js → [root-of-the-server]__0j7565a._.js} +2 -2
  113. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0omyrab._.js +3 -0
  114. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0qif839._.js +1 -1
  115. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0~foo~5._.js +4 -0
  116. package/.next/standalone/.next/server/chunks/src_0bkvm8c._.js +1 -1
  117. package/.next/standalone/.next/server/chunks/ssr/0iu._[workspaceId]_projects_[projectId]_versions_version-timeline-client_tsx_07o_kyi._.js +1 -1
  118. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0-tolks._.js +47 -0
  119. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0.5ug08._.js +3 -0
  120. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__037nnpo._.js → [root-of-the-server]__00~jawi._.js} +1 -1
  121. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0ohx~.q._.js → [root-of-the-server]__02ur64h._.js} +1 -1
  122. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0tjczqw._.js → [root-of-the-server]__04rp1ck._.js} +4 -4
  123. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0bs_c.t._.js → [root-of-the-server]__05sv58d._.js} +2 -2
  124. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__05xg05r._.js +3 -0
  125. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__062b.yt._.js +47 -0
  126. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0azyv7l._.js → [root-of-the-server]__07_o.al._.js} +1 -1
  127. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__093tt4a._.js +47 -0
  128. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__09l2kmt._.js +3 -0
  129. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0hg-fwv._.js → [root-of-the-server]__09s~cme._.js} +3 -3
  130. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0wm~yai._.js → [root-of-the-server]__0_1zewr._.js} +3 -3
  131. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0mv64fw._.js → [root-of-the-server]__0_i7zpd._.js} +1 -1
  132. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0b.ej5q._.js +1 -1
  133. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0bgr0ql._.js +3 -0
  134. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0-b8f6d._.js → [root-of-the-server]__0f88ua~._.js} +3 -3
  135. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0guqcva._.js +47 -0
  136. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0gzafdq._.js +3 -0
  137. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0ikeoh.._.js +3 -0
  138. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0jymb~t._.js +1 -1
  139. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0u7n6kw._.js → [root-of-the-server]__0k-mx8r._.js} +4 -4
  140. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0ymqgu_._.js → [root-of-the-server]__0lozqxc._.js} +4 -4
  141. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0p8otw1._.js → [root-of-the-server]__0lz4wdp._.js} +1 -1
  142. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0m4nvu~._.js +4 -0
  143. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0d76zys._.js → [root-of-the-server]__0m7ydqb._.js} +1 -1
  144. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__127.0d7._.js → [root-of-the-server]__0m80~su._.js} +1 -1
  145. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__06ubi1g._.js → [root-of-the-server]__0na8eiv._.js} +1 -1
  146. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0p0te97._.js +47 -0
  147. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0qnzkj3._.js +30 -0
  148. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0qqbb31._.js +43 -0
  149. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0s7yk4_._.js +3 -0
  150. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0scj6ed._.js +30 -0
  151. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0siyg1p._.js +47 -0
  152. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0s~4y3y._.js +1 -1
  153. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0t6f4lq._.js +47 -0
  154. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0th-t1a._.js +47 -0
  155. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0wofia_._.js +30 -0
  156. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0wt83kv._.js +1 -1
  157. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0y~ooou._.js +3 -0
  158. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0z7je5_._.js +1 -1
  159. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__12m4ujm._.js +3 -0
  160. package/.next/standalone/.next/server/chunks/ssr/_0-~9em3._.js +3 -0
  161. package/.next/standalone/.next/server/chunks/ssr/_00t6138._.js +47 -0
  162. package/.next/standalone/.next/server/chunks/ssr/_02encue._.js +30 -0
  163. package/.next/standalone/.next/server/chunks/ssr/_02ugk48._.js +4 -0
  164. package/.next/standalone/.next/server/chunks/ssr/_070t_mh._.js +2 -2
  165. package/.next/standalone/.next/server/chunks/ssr/{_0np9y-t._.js → _07fnvnm._.js} +1 -1
  166. package/.next/standalone/.next/server/chunks/ssr/{_079_ku8._.js → _0_hnt09._.js} +1 -1
  167. package/.next/standalone/.next/server/chunks/ssr/_0_ipj7e._.js +3 -0
  168. package/.next/standalone/.next/server/chunks/ssr/_0cj9a7y._.js +2 -2
  169. package/.next/standalone/.next/server/chunks/ssr/_0clhm~f._.js +30 -0
  170. package/.next/standalone/.next/server/chunks/ssr/_0cxhub8._.js +47 -0
  171. package/.next/standalone/.next/server/chunks/ssr/{_0vcbjph._.js → _0e-zyn2._.js} +4 -4
  172. package/.next/standalone/.next/server/chunks/ssr/{_0qfin2p._.js → _0e_ak8~._.js} +2 -2
  173. package/.next/standalone/.next/server/chunks/ssr/_0eca65n._.js +7 -0
  174. package/.next/standalone/.next/server/chunks/ssr/{_0_~od6x._.js → _0gvyd.f._.js} +2 -2
  175. package/.next/standalone/.next/server/chunks/ssr/_0hh17jg._.js +17 -0
  176. package/.next/standalone/.next/server/chunks/ssr/_0hlar46._.js +3 -0
  177. package/.next/standalone/.next/server/chunks/ssr/_0hu0tyg._.js +30 -0
  178. package/.next/standalone/.next/server/chunks/ssr/{_0tf~vm8._.js → _0k9b94s._.js} +1 -1
  179. package/.next/standalone/.next/server/chunks/ssr/{_0u1ybm2._.js → _0keo81q._.js} +2 -2
  180. package/.next/standalone/.next/server/chunks/ssr/_0l3l_d6._.js +43 -0
  181. package/.next/standalone/.next/server/chunks/ssr/{_0n1j319._.js → _0mjxq4v._.js} +2 -2
  182. package/.next/standalone/.next/server/chunks/ssr/_0mpce0d._.js +47 -0
  183. package/.next/standalone/.next/server/chunks/ssr/_0muaopo._.js +47 -0
  184. package/.next/standalone/.next/server/chunks/ssr/{_0w2xtk9._.js → _0mzwe90._.js} +4 -4
  185. package/.next/standalone/.next/server/chunks/ssr/_0n1l7yo._.js +47 -0
  186. package/.next/standalone/.next/server/chunks/ssr/{_0xl~whi._.js → _0n54odq._.js} +1 -1
  187. package/.next/standalone/.next/server/chunks/ssr/_0nk7qd4._.js +3 -0
  188. package/.next/standalone/.next/server/chunks/ssr/_0ocdt49._.js +3 -0
  189. package/.next/standalone/.next/server/chunks/ssr/_0q44.3o._.js +3 -0
  190. package/.next/standalone/.next/server/chunks/ssr/_0rdyrfd._.js +1 -1
  191. package/.next/standalone/.next/server/chunks/ssr/_0s36tuu._.js +3 -0
  192. package/.next/standalone/.next/server/chunks/ssr/_0s7ke7u._.js +3 -0
  193. package/.next/standalone/.next/server/chunks/ssr/_0wbcp88._.js +3 -0
  194. package/.next/standalone/.next/server/chunks/ssr/_134pkit._.js +3 -0
  195. package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_03r.9go._.js +3 -0
  196. package/.next/standalone/.next/server/chunks/ssr/src_0djxlqx._.js +1 -1
  197. package/.next/standalone/.next/server/chunks/ssr/src_0eufeyj._.js +1 -1
  198. package/.next/standalone/.next/server/chunks/ssr/src_actions_agent-actions_ts_0~wc.sy._.js +1 -1
  199. package/.next/standalone/.next/server/chunks/ssr/src_actions_file-actions_ts_0gcvqwm._.js +1 -1
  200. package/.next/standalone/.next/server/chunks/ssr/src_app_missions_missions-client_tsx_11429lj._.js +1 -1
  201. package/.next/standalone/.next/server/chunks/ssr/src_app_onboarding_page_tsx_0xf7hpz._.js +1 -1
  202. package/.next/standalone/.next/server/chunks/ssr/src_app_settings_page_tsx_0h9v7dr._.js +1 -1
  203. package/.next/standalone/.next/server/chunks/ssr/src_app_workspaces_[workspaceId]_assets_assets-page-client_tsx_0wyzpam._.js +1 -1
  204. package/.next/standalone/.next/server/chunks/ssr/src_app_workspaces_[workspaceId]_board-page-client_tsx_0gips66._.js +1 -1
  205. package/.next/standalone/.next/server/chunks/ssr/src_app_workspaces_[workspaceId]_notes_notes-page-client_tsx_10gyo3v._.js +3 -0
  206. package/.next/standalone/.next/server/chunks/ssr/src_app_workspaces_[workspaceId]_tasks_[taskId]_task-page-client_tsx_02t7blt._.js +1 -1
  207. package/.next/standalone/.next/server/chunks/ssr/src_components_ui_select_tsx_0d2ra01._.js +1 -1
  208. package/.next/standalone/.next/server/chunks/ssr/{src_lib_09vospx._.js → src_lib_01xtio2._.js} +1 -1
  209. package/.next/standalone/.next/server/chunks/ssr/{src_lib_0-t3s4k._.js → src_lib_03p6skw._.js} +1 -1
  210. package/.next/standalone/.next/server/chunks/ssr/{src_lib_007-dd1._.js → src_lib_05mu4f0._.js} +1 -1
  211. package/.next/standalone/.next/server/chunks/ssr/{src_lib_09bjxpu._.js → src_lib_06nbc41._.js} +1 -1
  212. package/.next/standalone/.next/server/chunks/ssr/src_lib_06okbb2._.js +3 -0
  213. package/.next/standalone/.next/server/chunks/ssr/src_lib_0741dos._.js +3 -0
  214. package/.next/standalone/.next/server/chunks/ssr/src_lib_0cbuy0_._.js +3 -0
  215. package/.next/standalone/.next/server/chunks/ssr/src_lib_0e27xy7._.js +3 -0
  216. package/.next/standalone/.next/server/chunks/ssr/src_lib_0n5-vk5._.js +3 -0
  217. package/.next/standalone/.next/server/chunks/ssr/src_lib_0rk2hla._.js +3 -0
  218. package/.next/standalone/.next/server/chunks/ssr/src_lib_0t5xz2y._.js +3 -0
  219. package/.next/standalone/.next/server/chunks/ssr/src_lib_0u5_gf2._.js +3 -0
  220. package/.next/standalone/.next/server/chunks/ssr/src_lib_0v6s6se._.js +3 -0
  221. package/.next/standalone/.next/server/chunks/ssr/src_lib_constants_ts_0_7xt06._.js +1 -1
  222. package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
  223. package/.next/standalone/.next/server/pages/500.html +1 -1
  224. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  225. package/.next/standalone/.next/server/server-reference-manifest.json +655 -499
  226. package/.next/standalone/.next/static/chunks/0.65.u3zhwau~.js +12 -0
  227. package/.next/standalone/.next/static/chunks/0.nsmn6shzidu.js +2 -0
  228. package/.next/standalone/.next/static/chunks/0.z88xlskrvd-.js +1 -0
  229. package/.next/standalone/.next/static/chunks/00.7wudyszp3y.css +1 -0
  230. package/.next/standalone/.next/static/chunks/00bgq.z2led_g.js +1 -0
  231. package/.next/standalone/.next/static/chunks/01agfbg-55.3l.js +1 -0
  232. package/.next/standalone/.next/static/chunks/01r_kvw6fe~.z.js +1 -0
  233. package/.next/standalone/.next/static/chunks/01yoibobkdz3x.js +1 -0
  234. package/.next/standalone/.next/static/chunks/026c8pffxl6wa.js +2 -0
  235. package/.next/standalone/.next/static/chunks/060cca-172m5j.js +1 -0
  236. package/.next/standalone/.next/static/chunks/07a3_u.yr179w.js +1 -0
  237. package/.next/standalone/.next/static/chunks/0b31xip8xb_cv.js +1 -0
  238. package/.next/standalone/.next/static/chunks/0gf~0e3xpa0fj.js +5 -0
  239. package/.next/standalone/.next/static/chunks/0kia6x73z7qhq.js +1 -0
  240. package/.next/standalone/.next/static/chunks/0msy9p40r_u_j.js +1 -0
  241. package/.next/standalone/.next/static/chunks/0p4w5b_p_yju8.js +1 -0
  242. package/.next/standalone/.next/static/chunks/0qonpqhvpg-tt.js +1 -0
  243. package/.next/standalone/.next/static/chunks/0vync155t_v71.js +1 -0
  244. package/.next/standalone/.next/static/chunks/0ws5ujnb5coco.js +1 -0
  245. package/.next/standalone/.next/static/chunks/0x5r51ae1bmdl.js +1 -0
  246. package/.next/standalone/.next/static/chunks/0xdbwwjkc3enx.js +1 -0
  247. package/.next/standalone/.next/static/chunks/0xg8ukff1-y32.js +1 -0
  248. package/.next/standalone/.next/static/chunks/0z-fh29~rncne.js +1 -0
  249. package/.next/standalone/.next/static/chunks/0zq8pqszpa37-.js +1 -0
  250. package/.next/standalone/.next/static/chunks/0~uo_7-sxehxf.js +1 -0
  251. package/.next/standalone/.next/static/chunks/10mwqzqdpi9d5.js +1 -0
  252. package/.next/standalone/.next/static/chunks/{0v1z8vez.wkfb.js → 12qumm~rdb~ls.js} +1 -1
  253. package/.next/standalone/.next/static/chunks/13n8ln7v6z4vc.js +5 -0
  254. package/.next/standalone/.next/static/chunks/{0up~e.7wnmlbs.js → 14-eiet1ypb3e.js} +1 -1
  255. package/.next/standalone/.next/static/chunks/{056a8z0wds522.js → 144hr38h72193.js} +1 -1
  256. package/.next/standalone/.next/static/chunks/14~li4os2yoi2.js +1 -0
  257. package/.next/standalone/.next/static/chunks/15gytx~096xul.js +1 -0
  258. package/.next/standalone/.next/static/chunks/16fbv7zz-.kse.js +1 -0
  259. package/.next/standalone/.next/static/chunks/{0558t1hlvaoxh.js → 16och4~epx6jk.js} +3 -3
  260. package/.next/standalone/.next/static/chunks/{11qzw.-vwkk5g.js → 1768nvsy3akwy.js} +1 -1
  261. package/.next/standalone/package.json +5 -1
  262. package/bin/tower.mjs +58 -18
  263. package/dist/mcp-server.cjs +25088 -21099
  264. package/package.json +5 -1
  265. package/prisma/schema.prisma +16 -0
  266. package/scripts/migrations/0001-insight-category.ts +22 -0
  267. package/scripts/run-migrations.ts +73 -0
  268. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0541-er._.js +0 -3
  269. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0clvf~t._.js +0 -4
  270. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0gk6ftq._.js +0 -4
  271. package/.next/standalone/.next/server/chunks/ssr/12k._sonner_dist_index_mjs_0-vmpk5._.js +0 -3
  272. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__01pn3ol._.js +0 -3
  273. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__02p4lry._.js +0 -3
  274. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__05-t-8s._.js +0 -3
  275. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__07ptf-z._.js +0 -3
  276. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0_r3qx7._.js +0 -3
  277. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0b77ayk._.js +0 -47
  278. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0cle18b._.js +0 -3
  279. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0e25s-_._.js +0 -3
  280. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0ew4gqf._.js +0 -3
  281. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0lx7sf8._.js +0 -3
  282. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0rara9.._.js +0 -3
  283. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0rumact._.js +0 -3
  284. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0rv7-_r._.js +0 -3
  285. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0uq_0mc._.js +0 -30
  286. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__12w_sm_._.js +0 -30
  287. package/.next/standalone/.next/server/chunks/ssr/_0-mid6~._.js +0 -3
  288. package/.next/standalone/.next/server/chunks/ssr/_0-sia69._.js +0 -4
  289. package/.next/standalone/.next/server/chunks/ssr/_0.sfgns._.js +0 -3
  290. package/.next/standalone/.next/server/chunks/ssr/_04ia97a._.js +0 -3
  291. package/.next/standalone/.next/server/chunks/ssr/_0533im8._.js +0 -30
  292. package/.next/standalone/.next/server/chunks/ssr/_06akrwh._.js +0 -7
  293. package/.next/standalone/.next/server/chunks/ssr/_06~9axc._.js +0 -3
  294. package/.next/standalone/.next/server/chunks/ssr/_0_dt8gs._.js +0 -3
  295. package/.next/standalone/.next/server/chunks/ssr/_0_kfemp._.js +0 -3
  296. package/.next/standalone/.next/server/chunks/ssr/_0bkb_.9._.js +0 -3
  297. package/.next/standalone/.next/server/chunks/ssr/_0eln2ih._.js +0 -3
  298. package/.next/standalone/.next/server/chunks/ssr/_0ex2yo6._.js +0 -3
  299. package/.next/standalone/.next/server/chunks/ssr/_0f.zny.._.js +0 -3
  300. package/.next/standalone/.next/server/chunks/ssr/_0fuoov5._.js +0 -3
  301. package/.next/standalone/.next/server/chunks/ssr/_0jg.s-g._.js +0 -3
  302. package/.next/standalone/.next/server/chunks/ssr/_0njo37o._.js +0 -30
  303. package/.next/standalone/.next/server/chunks/ssr/_0r5h7cr._.js +0 -30
  304. package/.next/standalone/.next/server/chunks/ssr/_0s02eu9._.js +0 -43
  305. package/.next/standalone/.next/server/chunks/ssr/_0ueyys5._.js +0 -17
  306. package/.next/standalone/.next/server/chunks/ssr/_0wown2f._.js +0 -7
  307. package/.next/standalone/.next/server/chunks/ssr/_0x9phlk._.js +0 -7
  308. package/.next/standalone/.next/server/chunks/ssr/_0xs_.j1._.js +0 -3
  309. package/.next/standalone/.next/server/chunks/ssr/_0~_.0md._.js +0 -3
  310. package/.next/standalone/.next/server/chunks/ssr/_1083dzh._.js +0 -4
  311. package/.next/standalone/.next/server/chunks/ssr/src_075s.rk._.js +0 -3
  312. package/.next/standalone/.next/server/chunks/ssr/src_lib_0dbdb7l._.js +0 -3
  313. package/.next/standalone/.next/server/chunks/ssr/src_lib_0dypzt_._.js +0 -3
  314. package/.next/standalone/.next/server/chunks/ssr/src_lib_0f948rt._.js +0 -3
  315. package/.next/standalone/.next/server/chunks/ssr/src_lib_0h1rnc.._.js +0 -3
  316. package/.next/standalone/.next/server/chunks/ssr/src_lib_0lcvt1c._.js +0 -3
  317. package/.next/standalone/.next/server/chunks/ssr/src_lib_0mao-of._.js +0 -3
  318. package/.next/standalone/.next/server/chunks/ssr/src_lib_0qlnl~c._.js +0 -3
  319. package/.next/standalone/.next/server/chunks/ssr/src_lib_0qt5bft._.js +0 -3
  320. package/.next/standalone/.next/server/chunks/ssr/src_lib_0z75cue._.js +0 -3
  321. package/.next/standalone/.next/static/chunks/021pojk-jcnw0.js +0 -1
  322. package/.next/standalone/.next/static/chunks/05qdpgnpb_7mk.js +0 -1
  323. package/.next/standalone/.next/static/chunks/06-e8wuosb00v.js +0 -1
  324. package/.next/standalone/.next/static/chunks/076x3dc258jv8.js +0 -1
  325. package/.next/standalone/.next/static/chunks/08rlai_d171x4.js +0 -1
  326. package/.next/standalone/.next/static/chunks/0_3q9.2g3z23l.js +0 -5
  327. package/.next/standalone/.next/static/chunks/0_~520q._qkjj.js +0 -2
  328. package/.next/standalone/.next/static/chunks/0c_2jxrtu.h6z.js +0 -1
  329. package/.next/standalone/.next/static/chunks/0f-n0eqe6x.4c.js +0 -1
  330. package/.next/standalone/.next/static/chunks/0fqp8_2f2v3lv.js +0 -1
  331. package/.next/standalone/.next/static/chunks/0gk2y6_okaodm.js +0 -1
  332. package/.next/standalone/.next/static/chunks/0i4.0h5fn9_pg.js +0 -1
  333. package/.next/standalone/.next/static/chunks/0imk_sv~a.wkh.js +0 -1
  334. package/.next/standalone/.next/static/chunks/0ktahv77jdq60.css +0 -1
  335. package/.next/standalone/.next/static/chunks/0m.k-orls2qu4.js +0 -1
  336. package/.next/standalone/.next/static/chunks/0n52vvco8hy2h.js +0 -1
  337. package/.next/standalone/.next/static/chunks/0nidfrkdx7qps.js +0 -5
  338. package/.next/standalone/.next/static/chunks/0qwt~eu3x658b.js +0 -1
  339. package/.next/standalone/.next/static/chunks/0wyjnhk_5g3.8.js +0 -12
  340. package/.next/standalone/.next/static/chunks/0x.tfkgl9nu-f.js +0 -1
  341. package/.next/standalone/.next/static/chunks/0x2ca5v0k2cns.js +0 -5
  342. package/.next/standalone/.next/static/chunks/0x~em7v37r~0r.js +0 -1
  343. package/.next/standalone/.next/static/chunks/0ygoq7i41ir8a.js +0 -1
  344. package/.next/standalone/.next/static/chunks/0yzl3zug_rpw-.js +0 -2
  345. package/.next/standalone/.next/static/chunks/0~5kdq-~kgsbt.js +0 -1
  346. package/.next/standalone/.next/static/chunks/116ssnh5k8ad9.js +0 -1
  347. package/.next/standalone/.next/static/chunks/13.pi0v53g-4n.js +0 -1
  348. package/.next/standalone/.next/static/chunks/148644k53ubh..js +0 -1
  349. package/.next/standalone/.next/static/chunks/14gyvwctfte0-.js +0 -5
  350. package/.next/standalone/.next/static/chunks/15hxafqqvgizt.js +0 -1
  351. /package/.next/standalone/.next/static/{m8-LaeVMTc5jjKuT9Jh1M → desYDJ6TQllFzzfGYPb6V}/_buildManifest.js +0 -0
  352. /package/.next/standalone/.next/static/{m8-LaeVMTc5jjKuT9Jh1M → desYDJ6TQllFzzfGYPb6V}/_clientMiddlewareManifest.js +0 -0
  353. /package/.next/standalone/.next/static/{m8-LaeVMTc5jjKuT9Jh1M → desYDJ6TQllFzzfGYPb6V}/_ssgManifest.js +0 -0
@@ -0,0 +1,30 @@
1
+ module.exports=[103071,a=>{"use strict";a.s(["SESSION_INSIGHT_CATEGORY",0,"经验洞见","TASK_OVERVIEW_CATEGORY",0,"任务笔记","TOWER_LABEL_COLOR",0,"#8b5cf6","TOWER_LABEL_NAME",0,"Tower"])},897667,a=>{"use strict";let b=new(a.i(52350)).ClaudeCliAdapter;async function c(d,e,f={}){let g="";try{let{query:c}=await a.A(719041),h=b.resolveCommand();for await(let a of c({prompt:d,options:{tools:f.tools??[],allowedTools:f.allowedTools??[],maxTurns:f.maxTurns??1,cwd:e,pathToClaudeCodeExecutable:h,sessionPersistence:!1}}))if("assistant"===a.type){let b=a.message.content.filter(a=>"text"===a.type);g+=b.map(a=>a.text??"").join("")}else if("result"===a.type){let b="string"==typeof a.result?a.result:"";b&&!g&&(g=b)}return g.trim()||null}catch(a){if(a.message?.includes("maximum number of turns")&&g.trim())return g.trim();return console.error("[aiQuery] Failed:",a.message,a.stack?.slice(0,300)),null}}async function d(a,b){let d=`以下是一次AI编程助手的终端会话记录。请用一句简短的中文总结这次会话做了什么(不超过50字,只回答总结内容,不要加引号或前缀):
2
+
3
+ \`\`\`
4
+ ${a.slice(-5e3)}
5
+ \`\`\``,e=await c(d,b);return e&&e.replace(/^[#*\->"'\s]+/,"").trim()||null}async function e(a,b,d){let e=a.slice(-8e3),f=d?`
6
+ Session summary: ${d}`:"",g=`You are analyzing a completed AI coding session. Extract reusable insights.
7
+ ${f}
8
+
9
+ Terminal log (last 8000 chars):
10
+ \`\`\`
11
+ ${e}
12
+ \`\`\`
13
+
14
+ Respond ONLY with valid JSON matching this schema (no markdown, no explanation):
15
+ {
16
+ "summary": "one-sentence summary of what was accomplished",
17
+ "insights": [
18
+ { "type": "pattern|pitfall|decision|tool|reference", "content": "description" }
19
+ ],
20
+ "shouldCreateNote": true/false,
21
+ "noteTitle": "short title for the note (only if shouldCreateNote is true)"
22
+ }
23
+
24
+ Rules:
25
+ - Set shouldCreateNote=true ONLY if there are genuinely reusable insights (architectural decisions, non-obvious pitfalls, useful patterns, important tool discoveries)
26
+ - Trivial sessions (simple formatting, single-line edits, routine commits) should have shouldCreateNote=false
27
+ - insights array can be empty if nothing notable
28
+ - Keep each insight concise (1-2 sentences)`,h=await c(g,b);if(!h)return null;try{let a=h,b=a.match(/\{[\s\S]*\}/);b&&(a=b[0]);let c=JSON.parse(a);if("string"!=typeof c.summary||"boolean"!=typeof c.shouldCreateNote)return console.error("[generateDreamingInsight] Invalid response structure"),null;return c}catch(a){return console.error("[generateDreamingInsight] JSON parse failed:",a.message),null}}a.s(["aiQuery",0,c,"generateDreamingInsight",0,e,"generateSummaryFromLog",0,d])},818992,a=>{"use strict";var b=a.i(233405),c=a.i(522734),d=a.i(761469),e=a.i(897667),f=a.i(103071);function g(a,c){return(0,b.execFileSync)("git",a,{cwd:c,timeout:1e4,encoding:"utf-8",stdio:["pipe","pipe","pipe"]}).trim()}function h(a,b){if(b)return b;for(let b of["main","master","develop"])try{return g(["merge-base","HEAD",b],a)}catch{}return null}function i(a){if(!a)return null;let b=a.split("\n").filter(Boolean);if(0===b.length)return null;let c=b[0].replace(/^[a-f0-9]+\s+/,"");return 1===b.length?c:`${b.length} commits: ${c}`}async function j(a,b,f,k,l,m=null){try{let b;console.error(`[captureExecutionSummary] Starting: exec=${a.slice(0,8)} exit=${f} buffer=${k.length}chars worktree=${l} fork=${m?.slice(0,8)??"none"}`);let j=null,n=null,o=null;if(l&&(0,c.existsSync)(l))try{if(g(["rev-parse","--git-dir"],l),j=function(a,b){try{let c=h(a,b);if(!c)return null;return g(["log","--oneline",`${c}..HEAD`],a)||null}catch{return null}}(l,m),(n=function(a,b){try{let c=h(a,b);if(!c)return null;let d=g(["diff","--stat",`${c}..HEAD`],a);if(!d)return null;return function(a){let b=a.split("\n"),c=b[b.length-1];if(!c)return null;let d=c.match(/(\d+)\s+files?\s+changed/),e=c.match(/(\d+)\s+insertions?\(\+\)/),f=c.match(/(\d+)\s+deletions?\(-\)/);return d||e||f?{commits:0,filesChanged:d?parseInt(d[1],10):0,insertions:e?parseInt(e[1],10):0,deletions:f?parseInt(f[1],10):0}:null}(d)}catch{return null}}(l,m))&&j){let a=j.split("\n").filter(Boolean).length;n={...n,commits:a}}o=i(j)}catch{}let p=(b=k.replace(/\x1b\][^\x07\x1b]*(?:\x07|\x1b\\)/g,"").replace(/\x1b\[[0-9;?]*[A-Za-z]/g,"").replace(/\x1b[^[\]()][^\x1b]*/g,"").replace(/[\x00-\x08\x0b\x0c\x0e-\x1f\x7f]/g,"").replace(/\n{3,}/g,"\n\n").trim()).length<=10240?b:b.slice(b.length-10240);await d.db.taskExecution.update({where:{id:a},data:{summary:o??(j?i(j):null),gitLog:j??null,gitStats:n?JSON.stringify(n):null,exitCode:f,terminalLog:p||null}}),p&&l&&(console.error("[captureExecutionSummary] Starting background AI summary..."),(0,e.generateSummaryFromLog)(p,l).then(async b=>{b&&(console.error(`[captureExecutionSummary] AI summary ready: ${b.slice(0,80)}`),await d.db.taskExecution.update({where:{id:a},data:{summary:b}}))}).catch(a=>{console.error("[captureExecutionSummary] Background AI summary failed:",a)}))}catch(a){console.error("[captureExecutionSummary] Failed to capture summary:",a)}}async function k(a){try{let b=await d.db.task.findUnique({where:{id:a},select:{projectId:!0,executions:{orderBy:{createdAt:"desc"},select:{id:!0,terminalLog:!0,worktreePath:!0,summary:!0}}}});if(!b||0===b.executions.length)return;let c="",g=null,h=[];for(let a of b.executions)a.terminalLog&&(c+=a.terminalLog+"\n---\n"),a.summary&&h.push(a.summary),!g&&a.worktreePath&&(g=a.worktreePath);if(!(c=c.slice(-8e3)).trim())return;let i=h.join("\n"),j=g||process.cwd();console.error(`[captureTaskDreaming] Starting for task=${a.slice(0,8)}, ${b.executions.length} executions`);let k=await (0,e.generateDreamingInsight)(c,j,i);if(!k||!k.shouldCreateNote)return void console.error("[captureTaskDreaming] No note needed");let l=await d.db.projectNote.create({data:{title:k.noteTitle||k.summary.slice(0,50),content:function(a){let b=[];if(b.push("## Summary"),b.push(a.summary),b.push(""),a.insights.length>0)for(let c of(b.push("## Insights"),a.insights))b.push(`- **[${c.type}]**: ${c.content}`);return b.join("\n")}(k),category:f.SESSION_INSIGHT_CATEGORY,projectId:b.projectId,taskId:a}}),m=b.executions[0].id;await d.db.taskExecution.update({where:{id:m},data:{insightNoteId:l.id}}),console.error(`[captureTaskDreaming] Note created: ${l.id}`)}catch(a){console.error("[captureTaskDreaming] Failed:",a)}}a.s(["captureExecutionSummary",0,j,"captureTaskDreaming",0,k])},719041,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[externals]__0ti8vng._.js","server/chunks/ssr/07-d_@anthropic-ai_claude-agent-sdk_sdk_mjs_0myippv._.js"].map(b=>a.l(b))).then(()=>b(845454)))}];
29
+
30
+ //# sourceMappingURL=_02encue._.js.map
@@ -0,0 +1,4 @@
1
+ module.exports=[786304,a=>{"use strict";var b=a.i(475295),c=a.i(213200),d=a.i(142261),e=a.i(368114);let f=(0,d.cva)("group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",secondary:"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",destructive:"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",outline:"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",ghost:"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",link:"text-primary underline-offset-4 hover:underline"}},defaultVariants:{variant:"default"}});a.s(["Badge",0,function({className:a,variant:d="default",render:g,...h}){var i;return i={defaultTagName:"span",props:(0,b.mergeProps)({className:(0,e.cn)(f({variant:d}),a)},h),render:g,state:{slot:"badge",variant:d}},(0,c.useRenderElement)(i.defaultTagName??"div",i,i)}],786304)},747798,a=>{"use strict";let b=(0,a.i(711796).default)("rotate-ccw",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]]);a.s(["RotateCcw",0,b],747798)},10390,a=>{"use strict";var b=a.i(421992);a.s(["ChevronRight",()=>b.default])},648512,a=>{"use strict";let b=(0,a.i(711796).default)("terminal",[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]]);a.s(["Terminal",0,b],648512)},269280,a=>{"use strict";let b=(0,a.i(711796).default)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);a.s(["ArrowLeft",0,b],269280)},509405,a=>{"use strict";let b=(0,a.i(711796).default)("eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);a.s(["Eye",0,b],509405)},625892,939859,a=>{"use strict";var b=a.i(711796);let c=(0,b.default)("folder-search",[["path",{d:"M10.7 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v4.1",key:"1bw5m7"}],["path",{d:"m21 21-1.9-1.9",key:"1g2n9r"}],["circle",{cx:"17",cy:"17",r:"3",key:"18b49y"}]]);a.s(["FolderSearch",0,c],625892);let d=(0,b.default)("code",[["path",{d:"m16 18 6-6-6-6",key:"eg8j8"}],["path",{d:"m8 6-6 6 6 6",key:"ppft3o"}]]);a.s(["Code",0,d],939859)},551578,a=>{"use strict";var b=a.i(728778);let c=(0,a.i(711796).default)("milestone",[["path",{d:"M12 13v8",key:"1l5pq0"}],["path",{d:"M12 3v3",key:"1n5kay"}],["path",{d:"M18.172 6a2 2 0 0 1 1.414.586l2.06 2.06a1.207 1.207 0 0 1 0 1.708l-2.06 2.06a2 2 0 0 1-1.414.586H4a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1z",key:"8gz4t4"}]]);var d=a.i(951192);let e=["bg-sky-500/20 text-sky-300 border border-sky-500/30","bg-amber-500/20 text-amber-300 border border-amber-500/30","bg-violet-500/20 text-violet-300 border border-violet-500/30","bg-emerald-500/20 text-emerald-300 border border-emerald-500/30","bg-rose-500/20 text-rose-300 border border-rose-500/30","bg-cyan-500/20 text-cyan-300 border border-cyan-500/30","bg-indigo-500/20 text-indigo-300 border border-indigo-500/30"];function f(a){return e[function(a){let b=0;for(let c=0;c<a.length;c++)b=31*b+a.charCodeAt(c)>>>0;return b}(a)%e.length]}let g={PLANNED:"bg-slate-500/20 text-slate-300 border border-slate-500/30",ACTIVE:"bg-emerald-500/20 text-emerald-300 border border-emerald-500/30",RELEASED:"bg-zinc-500/20 text-zinc-400 border border-zinc-500/30"};a.s(["TaskVersionTag",0,function({number:a,name:d,showName:e=!1,className:f="",title:g}){return(0,b.jsxs)("span",{className:`inline-flex items-center gap-1 rounded-md border border-border bg-muted px-1.5 py-0.5 text-[10px] font-medium text-muted-foreground ${f}`,title:g??(d?`${a} \xb7 ${d}`:a),children:[(0,b.jsx)(c,{className:"h-2.5 w-2.5 shrink-0"}),(0,b.jsx)("span",{className:"font-mono",children:a}),e&&d?(0,b.jsx)("span",{className:"max-w-[140px] truncate",children:d}):null]})},"VersionStatusBadge",0,function({status:a}){let{t:c}=(0,d.useI18n)();return(0,b.jsx)("span",{className:`inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium ${g[a]}`,children:c(`version.status.${a}`)})},"VersionTypeBadge",0,function({name:a}){let{t:c}=(0,d.useI18n)();return a?(0,b.jsx)("span",{className:`inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium ${f(a)}`,children:a}):(0,b.jsx)("span",{className:"inline-flex items-center rounded-full border border-border bg-muted/40 px-2 py-0.5 text-xs font-medium text-muted-foreground",children:c("version.type.uncategorized")})},"typeBadgeColor",0,f],551578)},861442,414041,a=>{"use strict";var b=a.i(780410);let c=(0,b.createServerReference)("40318126eb15b1c0a35582e98e54a8817fd94ba67b",b.callServer,void 0,b.findSourceMapURL,"openInFileManager");a.s(["openInFileManager",0,c],861442);let d=(0,b.createServerReference)("40b7b00fea8b4019ed57f04ea4a0b523b68d132991",b.callServer,void 0,b.findSourceMapURL,"openInEditor");a.s(["openInEditor",0,d],414041)},165614,a=>{"use strict";let b=(0,a.i(711796).default)("circle-play",[["path",{d:"M9 9.003a1 1 0 0 1 1.517-.859l4.997 2.997a1 1 0 0 1 0 1.718l-4.997 2.997A1 1 0 0 1 9 14.996z",key:"kmsa83"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);a.s(["PlayCircle",0,b],165614)},579834,a=>{"use strict";var b=a.i(728778),c=a.i(368114);a.s(["EmptyState",0,function({icon:a,title:d,description:e,action:f,className:g}){return(0,b.jsxs)("div",{className:(0,c.cn)("flex h-48 flex-col items-center justify-center gap-2 text-center",g),children:[a&&(0,b.jsx)(a,{className:"h-10 w-10 text-muted-foreground/40"}),(0,b.jsx)("p",{className:"text-sm font-medium text-muted-foreground",children:d}),e&&(0,b.jsx)("p",{className:"text-xs text-muted-foreground/60",children:e}),f&&(0,b.jsx)("div",{className:"mt-2",children:f})]})}])},408422,202417,a=>{"use strict";var b=a.i(780410);let c=(0,b.createServerReference)("40fb4a3cfd1f13f1a74bd081fca20f90a3b9ef35a5",b.callServer,void 0,b.findSourceMapURL,"stopPtyExecution");a.s(["stopPtyExecution",0,c],408422);let d=(0,b.createServerReference)("6008e5df423433e1ca42a6c239eae6ef0e6b339263",b.callServer,void 0,b.findSourceMapURL,"resumePtyExecution");a.s(["resumePtyExecution",0,d],202417)},913284,468862,a=>{"use strict";var b=a.i(884664);a.s(["CheckCircle2",()=>b.default],913284);let c=(0,a.i(711796).default)("circle-x",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);a.s(["XCircle",0,c],468862)},811344,a=>{"use strict";var b=a.i(622945);a.s(["AlertTriangle",()=>b.default])},945639,a=>{"use strict";var b=a.i(780410);let c=(0,b.createServerReference)("409dcb6fd323379a6aef69a8125d18cc00c485361b",b.callServer,void 0,b.findSourceMapURL,"getPrompts");a.s(["getPrompts",0,c])},627141,a=>{"use strict";var b=a.i(374637),c=a.i(87309);a.s(["useExtension",0,function(a){let d=(0,b.useContext)(c.ExtensionContext);if(!d)throw Error("useExtension must be used inside <ExtensionProvider>");return{status:d.statusMap[a],loading:d.loading,isInstalling:d.installing.has(a),install:()=>d.install(a),uninstall:()=>d.uninstall(a),refresh:()=>d.refresh(a)}}])},394869,a=>{"use strict";let b=(0,a.i(711796).default)("git-compare",[["circle",{cx:"18",cy:"18",r:"3",key:"1xkwt0"}],["circle",{cx:"6",cy:"6",r:"3",key:"1lh9wr"}],["path",{d:"M13 6h3a2 2 0 0 1 2 2v7",key:"1yeb86"}],["path",{d:"M11 18H8a2 2 0 0 1-2-2V9",key:"19pyzm"}]]);a.s(["GitCompare",0,b],394869)},207339,a=>{"use strict";let b=(0,a.i(711796).default)("git-commit-horizontal",[["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}],["line",{x1:"3",x2:"9",y1:"12",y2:"12",key:"1dyftd"}],["line",{x1:"15",x2:"21",y1:"12",y2:"12",key:"oup4p8"}]]);a.s(["GitCommitHorizontal",0,b],207339)},945513,(a,b,c)=>{b.exports=a=>{if(!a||"string"!=typeof a||a.match(/^\s+$/))return[];let b=a.split(`
2
+ `);if(0===b.length)return[];let c=[],d=null,e=null,g=0,i=0,j=null,k=a=>{let[b,e]=f(a)??[];d={chunks:[],deletions:0,additions:0,from:b,to:e},c.push(d)},l=()=>{(!d||d.chunks.length)&&k()},m=a=>{if(!e)return;let[b]=e.changes.slice(-1);e.changes.push({type:b.type,[b.type]:!0,ln1:b.ln1,ln2:b.ln2,ln:b.ln,content:a})},n=[[/^diff\s/,k],[/^new file mode (\d+)$/,(a,b)=>{l(),d.new=!0,d.newMode=b[1],d.from="/dev/null"}],[/^deleted file mode (\d+)$/,(a,b)=>{l(),d.deleted=!0,d.oldMode=b[1],d.to="/dev/null"}],[/^old mode (\d+)$/,(a,b)=>{l(),d.oldMode=b[1]}],[/^new mode (\d+)$/,(a,b)=>{l(),d.newMode=b[1]}],[/^index\s[\da-zA-Z]+\.\.[\da-zA-Z]+(\s(\d+))?$/,(a,b)=>{l(),d.index=a.split(" ").slice(1),b[1]&&(d.oldMode=d.newMode=b[1].trim())}],[/^---\s/,a=>{l(),d.from=h(a)}],[/^\+\+\+\s/,a=>{l(),d.to=h(a)}],[/^@@\s+-(\d+),?(\d+)?\s+\+(\d+),?(\d+)?\s@@/,(a,b)=>{d||k(a);let[c,f,h,l]=b.slice(1);g=+c,i=+h,e={content:a,changes:[],oldStart:+c,oldLines:+(f||1),newStart:+h,newLines:+(l||1)},j={oldLines:+(f||1),newLines:+(l||1)},d.chunks.push(e)}],[/^\$/,m]],o=[[/^\$/,m],[/^-/,a=>{e&&(e.changes.push({type:"del",del:!0,ln:g++,content:a}),d.deletions++,j.oldLines--)}],[/^\+/,a=>{e&&(e.changes.push({type:"add",add:!0,ln:i++,content:a}),d.additions++,j.newLines--)}],[/^\s*/,a=>{e?.changes.push({type:"normal",normal:!0,ln1:g++,ln2:i++,content:a}),j.oldLines--,j.newLines--}]],p=a=>{j?(a=>{for(let[b,c]of o){let d=a.match(b);if(d){c(a,d);break}}0===j.oldLines&&0===j.newLines&&(j=null)})(a):(a=>{for(let[b,c]of n){let d=a.match(b);if(d){c(a,d);break}}})(a)};for(let a of b)p(a);return c};let d=/(a|i|w|c|o|1|2)\/.*(?=["']? ["']?(b|i|w|c|o|1|2)\/)|(b|i|w|c|o|1|2)\/.*$/g,e=/^(a|b|i|w|c|o|1|2)\//,f=a=>a?.match(d)?.map(a=>a.replace(e,"").replace(/("|')$/,"")),g=/^\\?['"]|\\?['"]$/g,h=a=>{let b=i(a,"-+").trim();return(b=k(b)).replace(g,"").replace(e,"")},i=(a,b)=>{if(a=m(a),!b&&String.prototype.trimLeft)return a.trimLeft();let c=l(b);return a.replace(RegExp(`^${c}+`),"")},j=/\t.*|\d{4}-\d\d-\d\d\s\d\d:\d\d:\d\d(.\d+)?\s(\+|-)\d\d\d\d/,k=a=>{let b=j.exec(a);return b&&(a=a.substring(0,b.index).trim()),a},l=a=>null==a?"\\s":a instanceof RegExp?a.source:`[${m(a).replace(/([.*+?^=!:${}()|[\]/\\])/g,"\\$1")}]`,m=a=>`${a??""}`},514872,a=>{"use strict";var b=a.i(945513);function c(a){return a.replace(/\r\n/g,"\n")}a.s(["normalizeLF",0,c,"parseUnifiedDiff",0,function(a){return(0,b.default)(c(a))}])},805172,85130,838859,639004,356873,37330,376491,497215,a=>{"use strict";var b=a.i(780410);let c=(0,b.createServerReference)("60140d1f5dde45d94f37ae6bc821bd88d223a4e527",b.callServer,void 0,b.findSourceMapURL,"listDirectory");a.s(["listDirectory",0,c],805172);let d=(0,b.createServerReference)("70934c9f1a30bb25337e0e136e72f9687392de9e13",b.callServer,void 0,b.findSourceMapURL,"getGitStatus");a.s(["getGitStatus",0,d],85130);let e=(0,b.createServerReference)("6038a82c951db43ab108a80d8fdaf7ac7b8d31fec1",b.callServer,void 0,b.findSourceMapURL,"createFile");a.s(["createFile",0,e],838859);let f=(0,b.createServerReference)("6094d665d71f48624a23fa4d13ebe9db0c3ce2efa0",b.callServer,void 0,b.findSourceMapURL,"createDirectory");a.s(["createDirectory",0,f],639004);let g=(0,b.createServerReference)("708255a2605eed2b76802faa88739cd32c29f4cd8f",b.callServer,void 0,b.findSourceMapURL,"renameEntry");a.s(["renameEntry",0,g],356873);let h=(0,b.createServerReference)("60eea3fa8d416fc3dbfb8150709bf3e3e0d9563434",b.callServer,void 0,b.findSourceMapURL,"deleteEntry");a.s(["deleteEntry",0,h],37330);let i=(0,b.createServerReference)("408cab43a16b53d5fc5e74e8e078eeaf5d192391ef",b.callServer,void 0,b.findSourceMapURL,"listAllFiles");a.s(["listAllFiles",0,i],376491);let j=(0,b.createServerReference)("609bd27503b566a464583674c7a2c6d7001f6fd279",b.callServer,void 0,b.findSourceMapURL,"readFileContent");a.s(["readFileContent",0,j],497215)},945557,a=>{"use strict";var b=a.i(780410);let c=(0,b.createServerReference)("705eb1831f2bb66a708843d2ec15cf6caab49eb6d4",b.callServer,void 0,b.findSourceMapURL,"writeFileContent");a.s(["writeFileContent",0,c])},363117,a=>{"use strict";var b=a.i(780410);let c=(0,b.createServerReference)("6047c71ea7e88c7e743a51b67f8d3f9730038b1df5",b.callServer,void 0,b.findSourceMapURL,"readFileContentForce");a.s(["readFileContentForce",0,c])},742231,a=>{a.v(b=>Promise.all(["server/chunks/ssr/src_actions_file-actions_ts_0gcvqwm._.js"].map(b=>a.l(b))).then(()=>b(610024)))},672257,a=>{a.v(b=>Promise.all(["server/chunks/ssr/0pb0_@monaco-editor_react_dist_index_mjs_0dkxa~o._.js"].map(b=>a.l(b))).then(()=>b(566310)))}];
3
+
4
+ //# sourceMappingURL=_02ugk48._.js.map
@@ -1,6 +1,6 @@
1
- module.exports=[487373,a=>{"use strict";var b=a.i(815429),c=a.i(761469),d=a.i(188139),e=a.i(378322),f=a.i(855806),g=a.i(630048);let h=["terminal","summary","dreaming","analysis","assistant"];async function i(){return c.db.aiCapabilityConfig.findMany({orderBy:{slot:"asc"}})}async function j(a,b){if(!h.includes(a))throw Error(`无效的插槽: ${a}`);if(!e.providerRegistry.get(b.provider))throw Error(`未知的 Provider: ${b.provider}`);if("terminal"===a&&"cli"!==b.mode)throw Error("终端执行只支持 CLI 模式");if(!await (0,f.isProviderConnected)(b.provider))throw Error(`Provider "${b.provider}" 未连接或集成未注入完整 — 请到 Settings → Test Connection 测试通过后再选`);await c.db.aiCapabilityConfig.upsert({where:{slot:a},create:{slot:a,provider:b.provider,mode:b.mode,model:b.model??null},update:{provider:b.provider,mode:b.mode,model:b.model??null}}),(0,d.revalidatePath)("/settings")}async function k(){return e.providerRegistry.getAvailableProviders()}(0,g.ensureServerEntryExports)([i,j,k]),(0,b.registerServerReference)(i,"00af849d2994fb4b0f59e908da9ae68e5a2f024d91",null),(0,b.registerServerReference)(j,"60c5b10bd381dc44a9420582f22c868a0242b1032f",null),(0,b.registerServerReference)(k,"007da1e87e2f50764ae00ad63896785e52514d0891",null),a.s(["getAvailableProviders",0,k])},950071,a=>{"use strict";var b=a.i(750227),c=a.i(902157),d=a.i(660526),e=a.i(744992);let f=".lock",g=/^tower-(backup|auto)-\d{8}-\d{6}\.tar\.gz$/;async function h(a,d,f,g){let h,i,j,k,l=`${g?"tower-auto":"tower-backup"}-${(h=new Date,i=a=>String(a).padStart(2,"0"),j=`${h.getFullYear()}${i(h.getMonth()+1)}${i(h.getDate())}`,k=`${i(h.getHours())}${i(h.getMinutes())}${i(h.getSeconds())}`,`${j}-${k}`)}.tar.gz`,m=(0,b.join)(d,l),n=(0,b.join)(a,"metadata.json");(0,c.writeFileSync)(n,JSON.stringify(f,null,2));try{let d=["metadata.json"];(0,c.existsSync)((0,b.join)(a,"database","tower.db"))&&d.push((0,b.join)("database","tower.db")),(0,c.existsSync)((0,b.join)(a,"storage","assets"))&&d.push((0,b.join)("storage","assets")),(0,c.existsSync)((0,b.join)(a,"assistant"))&&d.push("assistant"),(0,c.existsSync)((0,b.join)(a,"logs"))&&d.push("logs"),await e.create({gzip:!0,file:m,cwd:a},d);let h=(0,c.statSync)(m);return{filename:l,size:h.size,createdAt:f.createdAt,autoBackup:g,label:f.label??"",stats:f.stats,preview:f.preview}}catch(a){try{(0,c.unlinkSync)(m)}catch{}throw a}finally{try{(0,c.unlinkSync)(n)}catch{}}}async function i(a){let d=(0,b.join)((0,b.dirname)(a),`_meta_tmp_${Date.now()}`);try{(0,c.mkdirSync)(d,{recursive:!0}),await e.extract({file:a,cwd:d,filter:a=>"metadata.json"===a});let f=(0,b.join)(d,"metadata.json");if(!(0,c.existsSync)(f))return null;return JSON.parse((0,c.readFileSync)(f,"utf-8"))}catch{return null}finally{(0,c.rmSync)(d,{recursive:!0,force:!0})}}async function j(a){if(!(0,c.existsSync)(a))return[];let d=(0,c.readdirSync)(a).filter(a=>g.test(a)).sort().reverse(),e=[];for(let f of d){let d=(0,b.join)(a,f),g=(0,c.statSync)(d),h=await i(d);e.push({filename:f,size:g.size,createdAt:h?.createdAt??g.mtime.toISOString(),autoBackup:h?.autoBackup??f.startsWith("tower-auto"),label:h?.label??"",stats:h?.stats??{workspaces:0,projects:0,tasks:0},preview:h?.preview??[]})}return e}async function k(a,d){if((0,c.mkdirSync)(d,{recursive:!0}),await e.extract({file:a,cwd:d,filter:a=>!((0,b.isAbsolute)(a)||a.includes(".."))}),!(0,c.existsSync)((0,b.join)(d,"database","tower.db")))throw Error("Invalid archive: missing database/tower.db")}let l=["database",(0,b.join)("storage","assets"),"assistant","logs"];a.s(["acquireLock",0,function(a){let d=(0,b.join)(a,f);if((0,c.existsSync)(d)){let a=parseInt((0,c.readFileSync)(d,"utf-8").trim(),10);try{throw process.kill(a,0),Error("Another backup operation is in progress")}catch(a){if(a instanceof Error&&a.message.includes("Another backup"))throw a}}(0,c.writeFileSync)(d,String(process.pid))},"cleanupTempDirs",0,function(a){for(let d of["_restore_tmp","_old_tmp"]){let e=(0,b.join)(a,d);(0,c.existsSync)(e)&&(0,c.rmSync)(e,{recursive:!0,force:!0})}},"createArchive",0,h,"deleteWalFiles",0,function(a){let d=(0,b.join)(a,"database");for(let a of["-wal","-shm"]){let e=(0,b.join)(d,`tower.db${a}`);try{(0,c.unlinkSync)(e)}catch{}}},"extractArchive",0,k,"listArchives",0,j,"releaseLock",0,function(a){let d=(0,b.join)(a,f);try{(0,c.unlinkSync)(d)}catch{}},"swapDirs",0,function(a,d){let e=(0,b.join)(a,"_old_tmp");(0,c.mkdirSync)(e,{recursive:!0});try{for(let d of l){let f=(0,b.join)(a,d),g=(0,b.join)(e,d);(0,c.existsSync)(f)&&((0,c.mkdirSync)((0,b.dirname)((0,b.join)(e,d)),{recursive:!0}),(0,c.renameSync)(f,g))}for(let e of l){let f=(0,b.join)(d,e),g=(0,b.join)(a,e);(0,c.existsSync)(f)&&((0,c.mkdirSync)((0,b.dirname)((0,b.join)(a,e)),{recursive:!0}),(0,c.renameSync)(f,g))}(0,c.rmSync)(e,{recursive:!0,force:!0})}catch(d){for(let d of l){let f=(0,b.join)(e,d),g=(0,b.join)(a,d);if((0,c.existsSync)(f)&&!(0,c.existsSync)(g))try{(0,c.renameSync)(f,g)}catch{}}throw(0,c.rmSync)(e,{recursive:!0,force:!0}),d}},"validateBackupDir",0,function(a){if(!(0,b.isAbsolute)(a))throw Error("Backup directory must be an absolute path");let c=(0,d.homedir)(),e=(0,b.relative)(c,a);if(e.startsWith("..")||(0,b.isAbsolute)(e))throw Error("Backup directory must be within your home directory")},"validateFilename",0,function(a){if(!g.test(a))throw Error(`Invalid backup filename: ${a}`)},"wipeTowerData",0,function(a){for(let d of["database",(0,b.join)("storage","assets"),"assistant","logs"]){let e=(0,b.join)(a,d);(0,c.existsSync)(e)&&(0,c.rmSync)(e,{recursive:!0,force:!0})}}])},712072,(a,b,c)=>{b.exports={name:"tower-studio",version:"0.2.33",description:"AI Task Orchestration Platform — Kanban + Terminal + Code Editor + MCP",bin:{tower:"bin/tower.mjs"},files:["bin/",".next/standalone/","prisma/schema.prisma","prisma/init-fts.ts","prisma/pre-migration.sql","scripts/init-db.ts","scripts/generate-prisma-client.js","scripts/link-prisma.js","scripts/fix-native-permissions.js","scripts/post-install-banner.js","scripts/prune-standalone-natives.js","scripts/migrate-data.ts","scripts/post-tool-hook.js","scripts/session-start-hook.js","scripts/stop-hook.js","dist/mcp-server.cjs","skills/","next.config.ts","tsconfig.json"],scripts:{predev:"node scripts/ensure-dev-db.js && pnpm mcp:build",dev:"next dev --webpack -p 9022",build:"pnpm mcp:build && rm -rf .next && next build && find .next -name '*.map' -delete && cp -R .next/static .next/standalone/.next/ && cp -R public .next/standalone/ && node scripts/prune-standalone-natives.js",release:"pnpm build && npm pack","release:smoke":"node scripts/release-smoke.js","release:publish":"pnpm build && npm publish",start:"next start",lint:"eslint","db:generate":"prisma generate","db:push":"prisma db push","db:seed":"tsx prisma/seed.ts","db:studio":"prisma studio","db:init":"tsx scripts/init-db.ts","db:init-fts":"tsx prisma/init-fts.ts",test:"vitest","test:run":"vitest run","test:e2e":"NO_PROXY=localhost,127.0.0.1 no_proxy=localhost,127.0.0.1 playwright test",changelog:"conventional-changelog -p angular -i CHANGELOG.md -s",mcp:"node dist/mcp-server.cjs","mcp:build":"esbuild src/mcp/index.ts --bundle --platform=node --target=node18 --format=cjs --outfile=dist/mcp-server.cjs --external:@prisma/client --external:@modelcontextprotocol/sdk --external:@opentelemetry/api --alias:@=./src","mcp:dev":"tsx src/mcp/index.ts",postinstall:"node scripts/generate-prisma-client.js && node scripts/link-prisma.js && node scripts/fix-native-permissions.js && node scripts/post-install-banner.js"},pnpm:{onlyBuiltDependencies:["@prisma/engines","esbuild","node-pty","prisma"]},dependencies:{"@modelcontextprotocol/sdk":"^1.28.0","@prisma/client":"^6.19.2","@vscode/ripgrep":"1.18.0","node-pty":"^1.1.0",prisma:"^6.19.2",tsx:"^4.21.0",ws:"^8.20.0"},devDependencies:{"@anthropic-ai/claude-agent-sdk":"^0.2.114","@base-ui/react":"^1.3.0","@dnd-kit/core":"^6.3.1","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@iconify/react":"^6.0.2","@monaco-editor/react":"4.8.0-rc.3","@playwright/test":"^1.58.2","@tailwindcss/postcss":"^4","@tailwindcss/typography":"^0.5.19","@testing-library/jest-dom":"^6.9.1","@testing-library/react":"^16.3.2","@testing-library/user-event":"^14.6.1","@types/node":"^20","@types/react":"^19","@types/react-dom":"^19","@types/shell-quote":"^1.7.5","@types/tar":"^7.0.87","@types/ws":"^8.18.1","@uiw/react-md-editor":"^4.0.11","@vitejs/plugin-react":"^6.0.1","@xterm/addon-attach":"^0.12.0","@xterm/addon-fit":"^0.11.0","@xterm/addon-web-links":"^0.12.0","@xterm/addon-webgl":"^0.19.0","@xterm/xterm":"^6.0.0","class-variance-authority":"^0.7.1",clsx:"^2.1.1",cmdk:"^1.1.1","conventional-changelog-cli":"^5.0.0",eslint:"^9","eslint-config-next":"16.2.1","fuse.js":"^7.3.0",ignore:"^7.0.5",jsdom:"^29.0.1","lucide-react":"^1.6.0","monaco-editor":"^0.55.1",next:"16.2.1","next-themes":"^0.4.6","parse-diff":"^0.12.0",react:"19.2.4","react-dom":"19.2.4","react-resizable-panels":"^2.1.9","react-reverse-portal":"^2.3.0",shadcn:"^4.1.0","shell-quote":"^1.8.3","simple-git":"^3.36.0",sonner:"^2.0.7",streamdown:"^2.5.0","tailwind-merge":"^3.5.0",tailwindcss:"^4",tar:"^7.5.13","tw-animate-css":"^1.4.0",typescript:"^5",vitest:"^4.1.1",zod:"^4.3.6",zustand:"^5.0.12"}}},537944,a=>a.a(async(b,c)=>{try{var d=a.i(815429),e=a.i(761469),f=a.i(319997),g=a.i(980999),h=a.i(950071),i=a.i(750227),j=a.i(902157),k=a.i(188139),l=a.i(630048),m=b([g]);async function n(){return await (0,g.getConfigValue)("system.backupDir","")||(0,f.getBackupsDir)()}async function o(b,c){let[d,f,g]=await Promise.all([e.db.workspace.count(),e.db.project.count(),e.db.task.count()]),h=(await e.db.workspace.findMany({take:3,orderBy:{updatedAt:"desc"},select:{name:!0,description:!0,projects:{take:3,select:{name:!0},orderBy:{updatedAt:"desc"}}}})).map(a=>{let b=a.description??"";return{workspace:b?`${b} ${a.name}`:a.name,projects:a.projects.map(a=>a.name)}});return{version:1,createdAt:new Date().toISOString(),towerVersion:function(){try{return a.r(712072).version??"unknown"}catch{return"unknown"}}(),autoBackup:b,label:c||void 0,stats:{workspaces:d,projects:f,tasks:g},preview:h}}async function p(a){let b=await n();(0,h.acquireLock)(b);try{let c=await o(!1,a);return await e.db.$queryRaw`PRAGMA wal_checkpoint(TRUNCATE)`,await (0,h.createArchive)((0,f.getTowerDir)(),b,c,!1)}finally{(0,h.releaseLock)(b)}}async function q(){let a=await n();return(0,h.listArchives)(a)}async function r(a){(0,h.validateFilename)(a);let b=await n(),c=(0,i.join)(b,a);if(!(0,j.existsSync)(c))throw Error("Backup file not found");(0,j.unlinkSync)(c)}async function s(b){(0,h.validateFilename)(b);let c=(0,f.getTowerDir)(),d=await n(),g=(0,i.join)(d,b);if(!(0,j.existsSync)(g))throw Error("Backup file not found");(0,h.acquireLock)(d);let l=(0,i.join)(c,"_restore_tmp");try{let b=await o(!0);await e.db.$queryRaw`PRAGMA wal_checkpoint(TRUNCATE)`,await (0,h.createArchive)(c,d,b,!0);let{destroyAllSessions:f}=await a.A(98813);f(),await (0,h.extractArchive)(g,l),await e.db.$disconnect(),(0,h.deleteWalFiles)(c),(0,h.swapDirs)(c,l),await (0,e.resetDbConnection)(),await e.db.$executeRawUnsafe(`
1
+ module.exports=[487373,a=>{"use strict";var b=a.i(815429),c=a.i(761469),d=a.i(188139),e=a.i(378322),f=a.i(855806),g=a.i(630048);let h=["terminal","summary","dreaming","analysis","assistant"];async function i(){return c.db.aiCapabilityConfig.findMany({orderBy:{slot:"asc"}})}async function j(a,b){if(!h.includes(a))throw Error(`无效的插槽: ${a}`);if(!e.providerRegistry.get(b.provider))throw Error(`未知的 Provider: ${b.provider}`);if("terminal"===a&&"cli"!==b.mode)throw Error("终端执行只支持 CLI 模式");if(!await (0,f.isProviderConnected)(b.provider))throw Error(`Provider "${b.provider}" 未连接或集成未注入完整 — 请到 Settings → Test Connection 测试通过后再选`);await c.db.aiCapabilityConfig.upsert({where:{slot:a},create:{slot:a,provider:b.provider,mode:b.mode,model:b.model??null},update:{provider:b.provider,mode:b.mode,model:b.model??null}}),(0,d.revalidatePath)("/settings")}async function k(){return e.providerRegistry.getAvailableProviders()}(0,g.ensureServerEntryExports)([i,j,k]),(0,b.registerServerReference)(i,"00f5e3b9a171c72096ade21fbf5ac8f9ca62f545c3",null),(0,b.registerServerReference)(j,"6055d853250f1192122238e915cbccdb4f3f4e3ff1",null),(0,b.registerServerReference)(k,"00ff1c0cb525622524123b103e1329f639e56fed17",null),a.s(["getAvailableProviders",0,k])},950071,a=>{"use strict";var b=a.i(750227),c=a.i(902157),d=a.i(660526),e=a.i(744992);let f=".lock",g=/^tower-(backup|auto)-\d{8}-\d{6}\.tar\.gz$/;async function h(a,d,f,g){let h,i,j,k,l=`${g?"tower-auto":"tower-backup"}-${(h=new Date,i=a=>String(a).padStart(2,"0"),j=`${h.getFullYear()}${i(h.getMonth()+1)}${i(h.getDate())}`,k=`${i(h.getHours())}${i(h.getMinutes())}${i(h.getSeconds())}`,`${j}-${k}`)}.tar.gz`,m=(0,b.join)(d,l),n=(0,b.join)(a,"metadata.json");(0,c.writeFileSync)(n,JSON.stringify(f,null,2));try{let d=["metadata.json"];(0,c.existsSync)((0,b.join)(a,"database","tower.db"))&&d.push((0,b.join)("database","tower.db")),(0,c.existsSync)((0,b.join)(a,"storage","assets"))&&d.push((0,b.join)("storage","assets")),(0,c.existsSync)((0,b.join)(a,"assistant"))&&d.push("assistant"),(0,c.existsSync)((0,b.join)(a,"logs"))&&d.push("logs"),await e.create({gzip:!0,file:m,cwd:a},d);let h=(0,c.statSync)(m);return{filename:l,size:h.size,createdAt:f.createdAt,autoBackup:g,label:f.label??"",stats:f.stats,preview:f.preview}}catch(a){try{(0,c.unlinkSync)(m)}catch{}throw a}finally{try{(0,c.unlinkSync)(n)}catch{}}}async function i(a){let d=(0,b.join)((0,b.dirname)(a),`_meta_tmp_${Date.now()}`);try{(0,c.mkdirSync)(d,{recursive:!0}),await e.extract({file:a,cwd:d,filter:a=>"metadata.json"===a});let f=(0,b.join)(d,"metadata.json");if(!(0,c.existsSync)(f))return null;return JSON.parse((0,c.readFileSync)(f,"utf-8"))}catch{return null}finally{(0,c.rmSync)(d,{recursive:!0,force:!0})}}async function j(a){if(!(0,c.existsSync)(a))return[];let d=(0,c.readdirSync)(a).filter(a=>g.test(a)).sort().reverse(),e=[];for(let f of d){let d=(0,b.join)(a,f),g=(0,c.statSync)(d),h=await i(d);e.push({filename:f,size:g.size,createdAt:h?.createdAt??g.mtime.toISOString(),autoBackup:h?.autoBackup??f.startsWith("tower-auto"),label:h?.label??"",stats:h?.stats??{workspaces:0,projects:0,tasks:0},preview:h?.preview??[]})}return e}async function k(a,d){if((0,c.mkdirSync)(d,{recursive:!0}),await e.extract({file:a,cwd:d,filter:a=>!((0,b.isAbsolute)(a)||a.includes(".."))}),!(0,c.existsSync)((0,b.join)(d,"database","tower.db")))throw Error("Invalid archive: missing database/tower.db")}let l=["database",(0,b.join)("storage","assets"),"assistant","logs"];a.s(["acquireLock",0,function(a){let d=(0,b.join)(a,f);if((0,c.existsSync)(d)){let a=parseInt((0,c.readFileSync)(d,"utf-8").trim(),10);try{throw process.kill(a,0),Error("Another backup operation is in progress")}catch(a){if(a instanceof Error&&a.message.includes("Another backup"))throw a}}(0,c.writeFileSync)(d,String(process.pid))},"cleanupTempDirs",0,function(a){for(let d of["_restore_tmp","_old_tmp"]){let e=(0,b.join)(a,d);(0,c.existsSync)(e)&&(0,c.rmSync)(e,{recursive:!0,force:!0})}},"createArchive",0,h,"deleteWalFiles",0,function(a){let d=(0,b.join)(a,"database");for(let a of["-wal","-shm"]){let e=(0,b.join)(d,`tower.db${a}`);try{(0,c.unlinkSync)(e)}catch{}}},"extractArchive",0,k,"listArchives",0,j,"releaseLock",0,function(a){let d=(0,b.join)(a,f);try{(0,c.unlinkSync)(d)}catch{}},"swapDirs",0,function(a,d){let e=(0,b.join)(a,"_old_tmp");(0,c.mkdirSync)(e,{recursive:!0});try{for(let d of l){let f=(0,b.join)(a,d),g=(0,b.join)(e,d);(0,c.existsSync)(f)&&((0,c.mkdirSync)((0,b.dirname)((0,b.join)(e,d)),{recursive:!0}),(0,c.renameSync)(f,g))}for(let e of l){let f=(0,b.join)(d,e),g=(0,b.join)(a,e);(0,c.existsSync)(f)&&((0,c.mkdirSync)((0,b.dirname)((0,b.join)(a,e)),{recursive:!0}),(0,c.renameSync)(f,g))}(0,c.rmSync)(e,{recursive:!0,force:!0})}catch(d){for(let d of l){let f=(0,b.join)(e,d),g=(0,b.join)(a,d);if((0,c.existsSync)(f)&&!(0,c.existsSync)(g))try{(0,c.renameSync)(f,g)}catch{}}throw(0,c.rmSync)(e,{recursive:!0,force:!0}),d}},"validateBackupDir",0,function(a){if(!(0,b.isAbsolute)(a))throw Error("Backup directory must be an absolute path");let c=(0,d.homedir)(),e=(0,b.relative)(c,a);if(e.startsWith("..")||(0,b.isAbsolute)(e))throw Error("Backup directory must be within your home directory")},"validateFilename",0,function(a){if(!g.test(a))throw Error(`Invalid backup filename: ${a}`)},"wipeTowerData",0,function(a){for(let d of["database",(0,b.join)("storage","assets"),"assistant","logs"]){let e=(0,b.join)(a,d);(0,c.existsSync)(e)&&(0,c.rmSync)(e,{recursive:!0,force:!0})}}])},712072,(a,b,c)=>{b.exports={name:"tower-studio",version:"0.2.35",description:"AI Task Orchestration Platform — Kanban + Terminal + Code Editor + MCP",bin:{tower:"bin/tower.mjs"},files:["bin/",".next/standalone/","prisma/schema.prisma","prisma/init-fts.ts","prisma/pre-migration.sql","scripts/init-db.ts","scripts/generate-prisma-client.js","scripts/link-prisma.js","scripts/fix-native-permissions.js","scripts/post-install-banner.js","scripts/prune-standalone-natives.js","scripts/migrate-data.ts","scripts/run-migrations.ts","scripts/migrations/","scripts/post-tool-hook.js","scripts/session-start-hook.js","scripts/stop-hook.js","dist/mcp-server.cjs","skills/","next.config.ts","tsconfig.json"],scripts:{predev:"node scripts/ensure-dev-db.js && pnpm mcp:build",dev:"next dev --webpack -p 9022",build:"pnpm mcp:build && rm -rf .next && next build && find .next -name '*.map' -delete && cp -R .next/static .next/standalone/.next/ && cp -R public .next/standalone/ && node scripts/prune-standalone-natives.js",release:"pnpm build && npm pack","release:smoke":"node scripts/release-smoke.js","release:publish":"pnpm build && npm publish",start:"next start",lint:"eslint","db:generate":"prisma generate","db:push":"prisma db push","db:seed":"tsx prisma/seed.ts","db:studio":"prisma studio","db:init":"tsx scripts/init-db.ts","db:init-fts":"tsx prisma/init-fts.ts","db:migrate":"tsx scripts/run-migrations.ts",test:"vitest","test:run":"vitest run","test:e2e":"NO_PROXY=localhost,127.0.0.1 no_proxy=localhost,127.0.0.1 playwright test",changelog:"conventional-changelog -p angular -i CHANGELOG.md -s",mcp:"node dist/mcp-server.cjs","mcp:build":"esbuild src/mcp/index.ts --bundle --platform=node --target=node18 --format=cjs --outfile=dist/mcp-server.cjs --external:@prisma/client --external:@modelcontextprotocol/sdk --external:@opentelemetry/api --alias:@=./src","mcp:dev":"tsx src/mcp/index.ts",postinstall:"node scripts/generate-prisma-client.js && node scripts/link-prisma.js && node scripts/fix-native-permissions.js && node scripts/post-install-banner.js"},pnpm:{onlyBuiltDependencies:["@prisma/engines","esbuild","node-pty","prisma"]},dependencies:{"@modelcontextprotocol/sdk":"^1.28.0","@prisma/client":"^6.19.2","@vscode/ripgrep":"1.18.0","node-pty":"^1.1.0",prisma:"^6.19.2",tinykeys:"^4.0.0",tsx:"^4.21.0",ws:"^8.20.0"},devDependencies:{"@anthropic-ai/claude-agent-sdk":"^0.2.114","@base-ui/react":"^1.3.0","@dnd-kit/core":"^6.3.1","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@iconify/react":"^6.0.2","@monaco-editor/react":"4.8.0-rc.3","@playwright/test":"^1.58.2","@tailwindcss/postcss":"^4","@tailwindcss/typography":"^0.5.19","@testing-library/jest-dom":"^6.9.1","@testing-library/react":"^16.3.2","@testing-library/user-event":"^14.6.1","@types/node":"^20","@types/react":"^19","@types/react-dom":"^19","@types/shell-quote":"^1.7.5","@types/tar":"^7.0.87","@types/ws":"^8.18.1","@uiw/react-md-editor":"^4.0.11","@vitejs/plugin-react":"^6.0.1","@xterm/addon-attach":"^0.12.0","@xterm/addon-fit":"^0.11.0","@xterm/addon-web-links":"^0.12.0","@xterm/addon-webgl":"^0.19.0","@xterm/xterm":"^6.0.0","class-variance-authority":"^0.7.1",clsx:"^2.1.1",cmdk:"^1.1.1","conventional-changelog-cli":"^5.0.0",eslint:"^9","eslint-config-next":"16.2.1","fuse.js":"^7.3.0",ignore:"^7.0.5",jsdom:"^29.0.1","lucide-react":"^1.6.0","monaco-editor":"^0.55.1",next:"16.2.1","next-themes":"^0.4.6","parse-diff":"^0.12.0",react:"19.2.4","react-dom":"19.2.4","react-resizable-panels":"^2.1.9","react-reverse-portal":"^2.3.0",shadcn:"^4.1.0","shell-quote":"^1.8.3","simple-git":"^3.36.0",sonner:"^2.0.7",streamdown:"^2.5.0","tailwind-merge":"^3.5.0",tailwindcss:"^4",tar:"^7.5.13","tw-animate-css":"^1.4.0",typescript:"^5",vitest:"^4.1.1",zod:"^4.3.6",zustand:"^5.0.12"}}},537944,a=>a.a(async(b,c)=>{try{var d=a.i(815429),e=a.i(761469),f=a.i(319997),g=a.i(980999),h=a.i(950071),i=a.i(750227),j=a.i(902157),k=a.i(188139),l=a.i(630048),m=b([g]);async function n(){return await (0,g.getConfigValue)("system.backupDir","")||(0,f.getBackupsDir)()}async function o(b,c){let[d,f,g]=await Promise.all([e.db.workspace.count(),e.db.project.count(),e.db.task.count()]),h=(await e.db.workspace.findMany({take:3,orderBy:{updatedAt:"desc"},select:{name:!0,description:!0,projects:{take:3,select:{name:!0},orderBy:{updatedAt:"desc"}}}})).map(a=>{let b=a.description??"";return{workspace:b?`${b} ${a.name}`:a.name,projects:a.projects.map(a=>a.name)}});return{version:1,createdAt:new Date().toISOString(),towerVersion:function(){try{return a.r(712072).version??"unknown"}catch{return"unknown"}}(),autoBackup:b,label:c||void 0,stats:{workspaces:d,projects:f,tasks:g},preview:h}}async function p(a){let b=await n();(0,h.acquireLock)(b);try{let c=await o(!1,a);return await e.db.$queryRaw`PRAGMA wal_checkpoint(TRUNCATE)`,await (0,h.createArchive)((0,f.getTowerDir)(),b,c,!1)}finally{(0,h.releaseLock)(b)}}async function q(){let a=await n();return(0,h.listArchives)(a)}async function r(a){(0,h.validateFilename)(a);let b=await n(),c=(0,i.join)(b,a);if(!(0,j.existsSync)(c))throw Error("Backup file not found");(0,j.unlinkSync)(c)}async function s(b){(0,h.validateFilename)(b);let c=(0,f.getTowerDir)(),d=await n(),g=(0,i.join)(d,b);if(!(0,j.existsSync)(g))throw Error("Backup file not found");(0,h.acquireLock)(d);let l=(0,i.join)(c,"_restore_tmp");try{let b=await o(!0);await e.db.$queryRaw`PRAGMA wal_checkpoint(TRUNCATE)`,await (0,h.createArchive)(c,d,b,!0);let{destroyAllSessions:f}=await a.A(98813);f(),await (0,h.extractArchive)(g,l),await e.db.$disconnect(),(0,h.deleteWalFiles)(c),(0,h.swapDirs)(c,l),await (0,e.resetDbConnection)(),await e.db.$executeRawUnsafe(`
2
2
  CREATE VIRTUAL TABLE IF NOT EXISTS notes_fts
3
3
  USING fts5(note_id UNINDEXED, title, content, tokenize='trigram case_sensitive 0')
4
- `);let{syncNoteToFts:i}=await a.A(195404);for(let a of(await e.db.projectNote.findMany({select:{id:!0,title:!0,content:!0}})))await i(e.db,a);(0,k.revalidatePath)("/")}finally{(0,h.cleanupTempDirs)(c),(0,h.releaseLock)(d)}}async function t(b){if("RESET"!==b)throw Error("Invalid confirmation");let c=(0,f.getTowerDir)(),d=await n();(0,h.acquireLock)(d);try{let b=await o(!0);await e.db.$queryRaw`PRAGMA wal_checkpoint(TRUNCATE)`,await (0,h.createArchive)(c,d,b,!0);let{destroyAllSessions:f}=await a.A(98813);f(),await e.db.$disconnect(),(0,h.wipeTowerData)(c),await (0,e.resetDbConnection)(),(0,k.revalidatePath)("/")}finally{(0,h.releaseLock)(d)}}async function u(){return await (0,g.getConfigValue)("system.backupDir","")||(0,f.getBackupsDir)()}async function v(a){(0,h.validateBackupDir)(a),await (0,g.setConfigValue)("system.backupDir",a)}[g]=m.then?(await m)():m,(0,l.ensureServerEntryExports)([p,q,r,s,t,u,v]),(0,d.registerServerReference)(p,"407c0fbdb19583d7e978bbf4c312ef6cc4ed617d6f",null),(0,d.registerServerReference)(q,"00a2baaad3550f62834c2415ad33ad908bd5cd9e96",null),(0,d.registerServerReference)(r,"40223df0b309de8711d5336726b2d0aaca66e1588e",null),(0,d.registerServerReference)(s,"40065ae71d17ac1f653cbc75bcf4d41b736889b106",null),(0,d.registerServerReference)(t,"4008ad36440207222ba61d7fcef6f3ed2d7ac3c13d",null),(0,d.registerServerReference)(u,"00ba458e15db7b78dbe207eb961582acfcb06c1e24",null),(0,d.registerServerReference)(v,"40a26af6c5ec326d3b54b74ea2bc7e0f2211c6f866",null),a.s(["createBackup",0,p,"deleteBackupFile",0,r,"getBackupDir",0,u,"listBackupFiles",0,q,"resetSystem",0,t,"restoreBackup",0,s,"setBackupDir",0,v]),c()}catch(a){c(a)}},!1),415673,a=>{"use strict";var b=a.i(815429),c=a.i(902157),d=a.i(750227),e=a.i(75681),f=a.i(761469),g=a.i(319997),h=a.i(630048);async function i(){return{current:(0,g.getStorageDir)(),default:(0,g.getDefaultStorageDir)(),isDefault:null===(0,g.readStoragePointer)()}}let j=e.z.object({newPath:e.z.string().min(1)});async function k(a){let{newPath:b}=j.parse(a),e=d.resolve(b),h=d.resolve((0,g.getStorageDir)()),i=d.resolve((0,g.getDefaultStorageDir)());if(!d.isAbsolute(e))return{ok:!1,error:"请输入绝对路径"};if(e===h)return{ok:!0,moved:0};if(e.startsWith(h+d.sep)||h.startsWith(e+d.sep))return{ok:!1,error:"新路径不能是当前存储目录的父级或子级"};if(c.existsSync(e)){if(!c.statSync(e).isDirectory())return{ok:!1,error:"目标路径已存在且不是目录"};if(c.readdirSync(e).length>0)return{ok:!1,error:"目标目录非空,请选择一个空目录或新目录"}}let k=d.dirname(e);try{c.mkdirSync(e,{recursive:!0}),c.accessSync(e,c.constants.W_OK)}catch{return{ok:!1,error:`无法写入目标目录(检查权限):${k}`}}try{c.existsSync(h)&&(c.cpSync(h,e,{recursive:!0}),c.rmSync(h,{recursive:!0,force:!0}))}catch(a){return{ok:!1,error:`迁移文件失败:${a instanceof Error?a.message:String(a)}`}}let l=0,m=h+d.sep;for(let a of(await f.db.projectAsset.findMany({select:{id:!0,path:!0}})))if(a.path.startsWith(m)){let b=d.join(e,a.path.slice(h.length+1));await f.db.projectAsset.update({where:{id:a.id},data:{path:b}}),l+=1}return(0,g.writeStoragePointer)(e===i?null:e),{ok:!0,moved:l}}(0,h.ensureServerEntryExports)([i,k]),(0,b.registerServerReference)(i,"00815eb1d579f0bb42723480cc724cb04750bafa5d",null),(0,b.registerServerReference)(k,"40f840b2000d03d5239ceedf3bf8313cec2df43b54",null),a.s(["getStorageLocation",0,i,"setStorageLocation",0,k])},520288,a=>a.a(async(b,c)=>{try{a.i(244256),a.i(495370);var d=a.i(396904),e=a.i(980999);a.i(101844),a.i(563736),a.i(4634),a.i(925886),a.i(487373);var f=a.i(537944);a.i(415673);var g=b([d,e,f]);[d,e,f]=g.then?(await g)():g,a.s([]),c()}catch(a){c(a)}},!1),857434,a=>a.a(async(b,c)=>{try{var d=a.i(520288),e=a.i(244256),f=a.i(495370),g=a.i(396904),h=a.i(980999),i=a.i(101844),j=a.i(563736),k=a.i(4634),l=a.i(925886),m=a.i(487373),n=a.i(537944),o=a.i(415673),p=b([d,g,h,n]);[d,g,h,n]=p.then?(await p)():p,a.s(["0011090f3e98a24efb5f2b684453a8e7ea3fb1314d",()=>h.getAvailableEditors,"00425d1a52114a57a51613a4c2a94b57a741ed36e1",()=>h.getAvailableTerminalApps,"006ae66b377bb0319d734a83f399030fc143c83095",()=>h.getActualWsPort,"007da1e87e2f50764ae00ad63896785e52514d0891",()=>m.getAvailableProviders,"00815eb1d579f0bb42723480cc724cb04750bafa5d",()=>o.getStorageLocation,"00a2baaad3550f62834c2415ad33ad908bd5cd9e96",()=>n.listBackupFiles,"00ba458e15db7b78dbe207eb961582acfcb06c1e24",()=>n.getBackupDir,"00c987e8f3a662afdb8cd182e85654a1554f82bca8",()=>j.listAllExtensionStatus,"00de1431467844471a516cd16bf1cf28dda9082298",()=>k.getOnboardingStatus,"40065ae71d17ac1f653cbc75bcf4d41b736889b106",()=>n.restoreBackup,"4008ad36440207222ba61d7fcef6f3ed2d7ac3c13d",()=>n.resetSystem,"400fee4efcf6815a017fa3872aa22adf6a12d5a98b",()=>k.dispatchTaskCompletionEvent,"401307db1f432f0254a8c03d5e00014b744bd9b2a8",()=>l.createPrompt,"40157c2bc3333e29aeda4cce4151bb75252f92db09",()=>j.uninstallExtension,"401f1d082f1790b2099d7e1f259468085f5fcb534d",()=>e.createProject,"40223df0b309de8711d5336726b2d0aaca66e1588e",()=>n.deleteBackupFile,"402470a32f09e25bab1e3ec4b8f8072f660945d5db",()=>h.getConfigValues,"404ab13bf2df8d06712dad8e327f4576093f6841e3",()=>e.deleteWorkspace,"4050a5958e92066a0a32b53dc239443b3ca169e335",()=>j.checkExtension,"4077d72104c74d1fd70c6512ac61ee669f3ff5bef2",()=>i.checkMigrationSafety,"407b6a27bfced9cfa03a6f2733073498c3161f8dc1",()=>k.setOnboardingProgress,"407c0fbdb19583d7e978bbf4c312ef6cc4ed617d6f",()=>n.createBackup,"4087ba72939b423b87d82a0815199f71bd297a38a9",()=>h.resolveGitLocalPath,"40a26af6c5ec326d3b54b74ea2bc7e0f2211c6f866",()=>n.setBackupDir,"40b340ed960a49ff54c0d35edf44daed6c8ffc547b",()=>l.getPrompts,"40b8cf7cde21c44d6bcb9e2bd9d203d795fb3b9371",()=>f.deleteLabel,"40ba24482f2ede54c21bc7ca41124931be57aae332",()=>l.deletePrompt,"40c105aab157b77e483f011a6fa24dacbb5e86ba85",()=>e.createWorkspace,"40cadf02cd6a1c50b36d2dda52478f7c0d7c73c2c5",()=>f.getLabelsForWorkspace,"40d4a37940a8c9c2be7e54e237790473424fa40e90",()=>j.installExtension,"40ed68031a8fd7bcf660a7432e9e107739009e0e91",()=>e.reorderWorkspaces,"40f32549adee18088cae4f2aaa5350f674002ff3c0",()=>f.createLabel,"40f840b2000d03d5239ceedf3bf8313cec2df43b54",()=>o.setStorageLocation,"6003900090ff205a18ecd2edb839b12d70b94d0793",()=>i.migrateProjectPath,"60138bd82c4d02177bfef6a9aa0ddd4893f8bc5e74",()=>k.completeOnboarding,"60165353ceb30dd93e1c2053a7475e20434f7714e2",()=>h.setConfigValue,"602fa5d1343a11c086ca48573109476e5e2a73289c",()=>i.analyzeProjectDirectory,"60533757680ab570c631de3de460be45e300ae7953",()=>k.setOnboardingExtensions,"606973464e259e515463b92192a4f64dee17d8053e",()=>g.globalSearch,"607e1896ecb6a1cd6a4f46e08131b6cac797e196cc",()=>e.updateWorkspace,"6095e6fd60755198315cc7d3ebd54075c83f1544b6",()=>l.setDefaultPrompt,"60fb594cacec16918d19285f33f1a4777c85658f1c",()=>h.getConfigValue,"60fb8fdb4363d5fdf4cc59aaeb10ab99e1cd526fd0",()=>l.updatePrompt]),c()}catch(a){c(a)}},!1)];
4
+ `);let{syncNoteToFts:i}=await a.A(195404);for(let a of(await e.db.projectNote.findMany({select:{id:!0,title:!0,content:!0}})))await i(e.db,a);(0,k.revalidatePath)("/")}finally{(0,h.cleanupTempDirs)(c),(0,h.releaseLock)(d)}}async function t(b){if("RESET"!==b)throw Error("Invalid confirmation");let c=(0,f.getTowerDir)(),d=await n();(0,h.acquireLock)(d);try{let b=await o(!0);await e.db.$queryRaw`PRAGMA wal_checkpoint(TRUNCATE)`,await (0,h.createArchive)(c,d,b,!0);let{destroyAllSessions:f}=await a.A(98813);f(),await e.db.$disconnect(),(0,h.wipeTowerData)(c),await (0,e.resetDbConnection)(),(0,k.revalidatePath)("/")}finally{(0,h.releaseLock)(d)}}async function u(){return await (0,g.getConfigValue)("system.backupDir","")||(0,f.getBackupsDir)()}async function v(a){(0,h.validateBackupDir)(a),await (0,g.setConfigValue)("system.backupDir",a)}[g]=m.then?(await m)():m,(0,l.ensureServerEntryExports)([p,q,r,s,t,u,v]),(0,d.registerServerReference)(p,"400275f4f98c38c564f67b5bba18408febd9327b22",null),(0,d.registerServerReference)(q,"00ee90b328a8525e5f42184683c9e3ee61e3884162",null),(0,d.registerServerReference)(r,"40178c147702269c2bb3b51f65ddea7da97b7bdc6a",null),(0,d.registerServerReference)(s,"4036db68633d8ed56514fea5a37a545b0f3c1d21bd",null),(0,d.registerServerReference)(t,"405cea10827e9a03b18d19900ad72c8f8609e479e0",null),(0,d.registerServerReference)(u,"006bedcdb2254f1faddc3227ebdd2fb6ce0686c0cf",null),(0,d.registerServerReference)(v,"40616f0b0aa9488cb37196ff598a1d7fb8db64668d",null),a.s(["createBackup",0,p,"deleteBackupFile",0,r,"getBackupDir",0,u,"listBackupFiles",0,q,"resetSystem",0,t,"restoreBackup",0,s,"setBackupDir",0,v]),c()}catch(a){c(a)}},!1),415673,a=>{"use strict";var b=a.i(815429),c=a.i(902157),d=a.i(750227),e=a.i(75681),f=a.i(761469),g=a.i(319997),h=a.i(630048);async function i(){return{current:(0,g.getStorageDir)(),default:(0,g.getDefaultStorageDir)(),isDefault:null===(0,g.readStoragePointer)()}}let j=e.z.object({newPath:e.z.string().min(1)});async function k(a){let{newPath:b}=j.parse(a),e=d.resolve(b),h=d.resolve((0,g.getStorageDir)()),i=d.resolve((0,g.getDefaultStorageDir)());if(!d.isAbsolute(e))return{ok:!1,error:"请输入绝对路径"};if(e===h)return{ok:!0,moved:0};if(e.startsWith(h+d.sep)||h.startsWith(e+d.sep))return{ok:!1,error:"新路径不能是当前存储目录的父级或子级"};if(c.existsSync(e)){if(!c.statSync(e).isDirectory())return{ok:!1,error:"目标路径已存在且不是目录"};if(c.readdirSync(e).length>0)return{ok:!1,error:"目标目录非空,请选择一个空目录或新目录"}}let k=d.dirname(e);try{c.mkdirSync(e,{recursive:!0}),c.accessSync(e,c.constants.W_OK)}catch{return{ok:!1,error:`无法写入目标目录(检查权限):${k}`}}try{c.existsSync(h)&&(c.cpSync(h,e,{recursive:!0}),c.rmSync(h,{recursive:!0,force:!0}))}catch(a){return{ok:!1,error:`迁移文件失败:${a instanceof Error?a.message:String(a)}`}}let l=0,m=h+d.sep;for(let a of(await f.db.projectAsset.findMany({select:{id:!0,path:!0}})))if(a.path.startsWith(m)){let b=d.join(e,a.path.slice(h.length+1));await f.db.projectAsset.update({where:{id:a.id},data:{path:b}}),l+=1}return(0,g.writeStoragePointer)(e===i?null:e),{ok:!0,moved:l}}(0,h.ensureServerEntryExports)([i,k]),(0,b.registerServerReference)(i,"00491781b8bee8e6cf3be2b49b007ce07f27d2e309",null),(0,b.registerServerReference)(k,"400a14b9be76cb7b2ab6b2bb8aeee92c9c0da2a54f",null),a.s(["getStorageLocation",0,i,"setStorageLocation",0,k])},520288,a=>a.a(async(b,c)=>{try{a.i(244256),a.i(495370);var d=a.i(396904),e=a.i(980999);a.i(101844),a.i(563736),a.i(4634),a.i(925886),a.i(487373);var f=a.i(537944);a.i(415673);var g=b([d,e,f]);[d,e,f]=g.then?(await g)():g,a.s([]),c()}catch(a){c(a)}},!1),857434,a=>a.a(async(b,c)=>{try{var d=a.i(520288),e=a.i(244256),f=a.i(495370),g=a.i(396904),h=a.i(980999),i=a.i(101844),j=a.i(563736),k=a.i(4634),l=a.i(925886),m=a.i(487373),n=a.i(537944),o=a.i(415673),p=b([d,g,h,n]);[d,g,h,n]=p.then?(await p)():p,a.s(["00491781b8bee8e6cf3be2b49b007ce07f27d2e309",()=>o.getStorageLocation,"004d62b07e2a8ffe195ab4f4b6d28dd75bbf43154b",()=>h.getAvailableEditors,"0068f8f24a9320505242409aca421961234e48ab04",()=>h.getAvailableTerminalApps,"006bedcdb2254f1faddc3227ebdd2fb6ce0686c0cf",()=>n.getBackupDir,"00a0d8545531fb1834f67fce04d00d172b3b00a83d",()=>j.listAllExtensionStatus,"00c55357ea25681b7d1d68937eac32a461fc2dbdda",()=>h.getActualWsPort,"00df609b1b9f5f0e2a7a42b831d0605fdee71470c2",()=>k.getOnboardingStatus,"00ee90b328a8525e5f42184683c9e3ee61e3884162",()=>n.listBackupFiles,"00ff1c0cb525622524123b103e1329f639e56fed17",()=>m.getAvailableProviders,"400275f4f98c38c564f67b5bba18408febd9327b22",()=>n.createBackup,"4003f9094660f6f2b67f7e7dece8178ab1b28bc1ef",()=>l.deletePrompt,"400a14b9be76cb7b2ab6b2bb8aeee92c9c0da2a54f",()=>o.setStorageLocation,"400b60230f7ed22faaf8609a9f2dba49fb0cd7a934",()=>k.setOnboardingProgress,"400c0360ac4dcd616a4ca45a8ed3b668ae952a0793",()=>k.dispatchTaskCompletionEvent,"40136f1e8fa14bf6edac75656488398ed64cf5604f",()=>e.createWorkspace,"40178c147702269c2bb3b51f65ddea7da97b7bdc6a",()=>n.deleteBackupFile,"40186bc54c3c2f0b7f435c8d983b676ef707e5c182",()=>f.deleteLabel,"402957fbff68f34d56a1127a9181fe0a30fc95f166",()=>e.deleteWorkspace,"403530f3f0fed104809778d76faa2395596ca5f138",()=>e.createProject,"403576c8eed304d0836c0a4cf7f5f879ee7b64d49b",()=>j.checkExtension,"4036db68633d8ed56514fea5a37a545b0f3c1d21bd",()=>n.restoreBackup,"4044be27c4159a06b13446af86f11a2367d641b5a2",()=>f.createLabel,"404578889916e7a69a020b8c8fad34672f1c588a22",()=>j.installExtension,"4055e7ec7adb9fa4b6603fe319d2e2afdef23104f3",()=>f.getLabelsForWorkspace,"405cea10827e9a03b18d19900ad72c8f8609e479e0",()=>n.resetSystem,"40616f0b0aa9488cb37196ff598a1d7fb8db64668d",()=>n.setBackupDir,"40746ebf07c26004e9941e20e47780489fed6554d8",()=>h.getConfigValues,"4096892445713cb56c414fd87eb1d83db30289bfa4",()=>l.createPrompt,"409dcb6fd323379a6aef69a8125d18cc00c485361b",()=>l.getPrompts,"40cdc5dd2f16555d6cbb53efeb971c084dc639b1b1",()=>e.reorderWorkspaces,"40d24a5b8c97d2d2668ef85a51272b504a46b13646",()=>i.checkMigrationSafety,"40eb4fe2d95eb4667801badccca722ec3ef45827fa",()=>j.uninstallExtension,"40f6521d889675e9693847017318a44946a3f87bba",()=>h.resolveGitLocalPath,"600a24999c057a402fca87e334d2de18c2b8562d58",()=>l.setDefaultPrompt,"60224f8432b06401549ef08992eda9e363761caaf5",()=>e.updateWorkspace,"6025c14180b0c2ff030c9e57bd610ee6277dbd988f",()=>k.setOnboardingExtensions,"6073e5af395bd75c94c5fe37e0460ead8838150b2e",()=>l.updatePrompt,"6085299ee1a51377b8cd81230de142241f4b38cb8f",()=>h.setConfigValue,"608585f62f6192f3735a8afe6fd5ab7708e21b2fc3",()=>k.completeOnboarding,"609220cf3268e0d77e9e04af6f4cb6cda2fb28f487",()=>h.getConfigValue,"609636ee79e606c046d544575ab09c172e30e0242a",()=>g.globalSearch,"60cd3b954e359d094297926b75de8b838bcb406748",()=>i.migrateProjectPath,"60e8fd6fabf948c59c658e39d870783a41c7e1f642",()=>i.analyzeProjectDirectory]),c()}catch(a){c(a)}},!1)];
5
5
 
6
6
  //# sourceMappingURL=_070t_mh._.js.map
@@ -27,4 +27,4 @@ Rules:
27
27
  - insights array can be empty if nothing notable
28
28
  - Keep each insight concise (1-2 sentences)`,h=await c(g,b);if(!h)return null;try{let a=h,b=a.match(/\{[\s\S]*\}/);b&&(a=b[0]);let c=JSON.parse(a);if("string"!=typeof c.summary||"boolean"!=typeof c.shouldCreateNote)return console.error("[generateDreamingInsight] Invalid response structure"),null;return c}catch(a){return console.error("[generateDreamingInsight] JSON parse failed:",a.message),null}}a.s(["aiQuery",0,c,"generateDreamingInsight",0,e,"generateSummaryFromLog",0,d])},719041,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[externals]__0ti8vng._.js","server/chunks/ssr/07-d_@anthropic-ai_claude-agent-sdk_sdk_mjs_0myippv._.js"].map(b=>a.l(b))).then(()=>b(845454)))}];
29
29
 
30
- //# sourceMappingURL=_0np9y-t._.js.map
30
+ //# sourceMappingURL=_07fnvnm._.js.map
@@ -27,4 +27,4 @@ Rules:
27
27
  - insights array can be empty if nothing notable
28
28
  - Keep each insight concise (1-2 sentences)`,h=await c(g,b);if(!h)return null;try{let a=h,b=a.match(/\{[\s\S]*\}/);b&&(a=b[0]);let c=JSON.parse(a);if("string"!=typeof c.summary||"boolean"!=typeof c.shouldCreateNote)return console.error("[generateDreamingInsight] Invalid response structure"),null;return c}catch(a){return console.error("[generateDreamingInsight] JSON parse failed:",a.message),null}}a.s(["aiQuery",0,c,"generateDreamingInsight",0,e,"generateSummaryFromLog",0,d])},719041,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[externals]__0ti8vng._.js","server/chunks/ssr/07-d_@anthropic-ai_claude-agent-sdk_sdk_mjs_0myippv._.js"].map(b=>a.l(b))).then(()=>b(845454)))}];
29
29
 
30
- //# sourceMappingURL=_079_ku8._.js.map
30
+ //# sourceMappingURL=_0_hnt09._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[10390,a=>{"use strict";var b=a.i(421992);a.s(["ChevronRight",()=>b.default])},786304,a=>{"use strict";var b=a.i(475295),c=a.i(213200),d=a.i(142261),e=a.i(368114);let f=(0,d.cva)("group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",secondary:"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",destructive:"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",outline:"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",ghost:"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",link:"text-primary underline-offset-4 hover:underline"}},defaultVariants:{variant:"default"}});a.s(["Badge",0,function({className:a,variant:d="default",render:g,...h}){var i;return i={defaultTagName:"span",props:(0,b.mergeProps)({className:(0,e.cn)(f({variant:d}),a)},h),render:g,state:{slot:"badge",variant:d}},(0,c.useRenderElement)(i.defaultTagName??"div",i,i)}],786304)},747798,a=>{"use strict";let b=(0,a.i(711796).default)("rotate-ccw",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]]);a.s(["RotateCcw",0,b],747798)},862440,a=>{"use strict";var b=a.i(780410);let c=(0,b.createServerReference)("40746ebf07c26004e9941e20e47780489fed6554d8",b.callServer,void 0,b.findSourceMapURL,"getConfigValues");a.s(["getConfigValues",0,c])},579834,a=>{"use strict";var b=a.i(728778),c=a.i(368114);a.s(["EmptyState",0,function({icon:a,title:d,description:e,action:f,className:g}){return(0,b.jsxs)("div",{className:(0,c.cn)("flex h-48 flex-col items-center justify-center gap-2 text-center",g),children:[a&&(0,b.jsx)(a,{className:"h-10 w-10 text-muted-foreground/40"}),(0,b.jsx)("p",{className:"text-sm font-medium text-muted-foreground",children:d}),e&&(0,b.jsx)("p",{className:"text-xs text-muted-foreground/60",children:e}),f&&(0,b.jsx)("div",{className:"mt-2",children:f})]})}])},408422,202417,a=>{"use strict";var b=a.i(780410);let c=(0,b.createServerReference)("40fb4a3cfd1f13f1a74bd081fca20f90a3b9ef35a5",b.callServer,void 0,b.findSourceMapURL,"stopPtyExecution");a.s(["stopPtyExecution",0,c],408422);let d=(0,b.createServerReference)("6008e5df423433e1ca42a6c239eae6ef0e6b339263",b.callServer,void 0,b.findSourceMapURL,"resumePtyExecution");a.s(["resumePtyExecution",0,d],202417)},279497,a=>{"use strict";var b=a.i(780410);let c=(0,b.createServerReference)("7c33bca4811aad649341efbea3de3db58de511cff4",b.callServer,void 0,b.findSourceMapURL,"startPtyExecution");a.s(["startPtyExecution",0,c])}];
2
+
3
+ //# sourceMappingURL=_0_ipj7e._.js.map