tower-studio 0.2.44 → 0.2.46
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.
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/app-path-routes-manifest.json +6 -0
- package/.next/standalone/.next/build-manifest.json +3 -3
- package/.next/standalone/.next/prerender-manifest.json +3 -3
- package/.next/standalone/.next/routes-manifest.json +38 -0
- package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_global-error.html +1 -1
- package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found/page/react-loadable-manifest.json +3 -3
- package/.next/standalone/.next/server/app/_not-found/page/server-reference-manifest.json +133 -85
- package/.next/standalone/.next/server/app/_not-found/page.js +8 -9
- package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/adapters/test/route.js +2 -2
- package/.next/standalone/.next/server/app/api/adapters/test/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/browse-fs/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/files/assets/[projectId]/[filename]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/files/assets/[projectId]/[filename]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/git/route.js +1 -1
- package/.next/standalone/.next/server/app/api/git/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/internal/assets/[projectId]/[filename]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/internal/assets/[projectId]/[filename]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/internal/assets/reveal/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/internal/assistant/attachments/route.js +2 -3
- package/.next/standalone/.next/server/app/api/internal/assistant/attachments/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/internal/assistant/chat/route.js +2 -2
- package/.next/standalone/.next/server/app/api/internal/assistant/chat/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/internal/assistant/route.js +5 -4
- package/.next/standalone/.next/server/app/api/internal/assistant/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/internal/assistant/sessions/route.js +1 -1
- package/.next/standalone/.next/server/app/api/internal/assistant/sessions/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/internal/backup/import/route.js +3 -4
- package/.next/standalone/.next/server/app/api/internal/backup/import/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/internal/cache/[...segments]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/internal/cache/[...segments]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/internal/harness/ask/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/internal/harness/ask/route/build-manifest.json +9 -0
- package/.next/standalone/.next/server/app/api/internal/harness/ask/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/internal/harness/ask/route.js +7 -0
- package/.next/standalone/.next/server/app/api/internal/harness/ask/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/internal/harness/ask/route_client-reference-manifest.js +3 -0
- package/.next/standalone/.next/server/app/api/internal/harness/notify/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/internal/harness/notify/route/build-manifest.json +9 -0
- package/.next/standalone/.next/server/app/api/internal/harness/notify/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/internal/harness/notify/route.js +7 -0
- package/.next/standalone/.next/server/app/api/internal/harness/notify/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/internal/harness/notify/route_client-reference-manifest.js +3 -0
- package/.next/standalone/.next/server/app/api/internal/harness/pending/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/internal/harness/pending/route/build-manifest.json +9 -0
- package/.next/standalone/.next/server/app/api/internal/harness/pending/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/internal/harness/pending/route.js +7 -0
- package/.next/standalone/.next/server/app/api/internal/harness/pending/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/internal/harness/pending/route_client-reference-manifest.js +3 -0
- package/.next/standalone/.next/server/app/api/internal/harness/reply/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/internal/harness/reply/route/build-manifest.json +9 -0
- package/.next/standalone/.next/server/app/api/internal/harness/reply/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/internal/harness/reply/route.js +12 -0
- package/.next/standalone/.next/server/app/api/internal/harness/reply/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/internal/harness/reply/route_client-reference-manifest.js +3 -0
- package/.next/standalone/.next/server/app/api/internal/hooks/install/route.js +1 -1
- package/.next/standalone/.next/server/app/api/internal/hooks/install/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/internal/hooks/session/route.js +1 -1
- package/.next/standalone/.next/server/app/api/internal/hooks/session/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/internal/hooks/stop/route.js +3 -3
- package/.next/standalone/.next/server/app/api/internal/hooks/stop/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/internal/hooks/upload/route.js +2 -2
- package/.next/standalone/.next/server/app/api/internal/hooks/upload/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/internal/monaco/[...path]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/internal/monaco/[...path]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/buffer/route.js +1 -1
- package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/buffer/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/input/route.js +1 -1
- package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/input/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/paste-image/route.js +1 -1
- package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/paste-image/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/resume/route.js +5 -4
- package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/resume/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/start/route.js +6 -5
- package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/start/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/stop/route.js +5 -4
- package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/stop/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[taskId]/diff/route.js +2 -2
- package/.next/standalone/.next/server/app/api/tasks/[taskId]/diff/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[taskId]/diff-patch/route.js +2 -2
- package/.next/standalone/.next/server/app/api/tasks/[taskId]/diff-patch/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[taskId]/merge/route.js +5 -3
- package/.next/standalone/.next/server/app/api/tasks/[taskId]/merge/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/harness/page/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/harness/page/build-manifest.json +18 -0
- package/.next/standalone/.next/server/app/harness/page/next-font-manifest.json +11 -0
- package/.next/standalone/.next/server/app/harness/page/react-loadable-manifest.json +18 -0
- package/.next/standalone/.next/server/app/harness/page/server-reference-manifest.json +437 -0
- package/.next/standalone/.next/server/app/harness/page.js +24 -0
- package/.next/standalone/.next/server/app/harness/page.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/harness/page_client-reference-manifest.js +3 -0
- package/.next/standalone/.next/server/app/missions/page/react-loadable-manifest.json +3 -2
- package/.next/standalone/.next/server/app/missions/page/server-reference-manifest.json +244 -160
- package/.next/standalone/.next/server/app/missions/page.js +11 -11
- package/.next/standalone/.next/server/app/missions/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/missions/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/onboarding/page/react-loadable-manifest.json +3 -3
- package/.next/standalone/.next/server/app/onboarding/page/server-reference-manifest.json +133 -85
- package/.next/standalone/.next/server/app/onboarding/page.js +8 -9
- package/.next/standalone/.next/server/app/onboarding/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/page/react-loadable-manifest.json +3 -3
- package/.next/standalone/.next/server/app/page/server-reference-manifest.json +133 -85
- package/.next/standalone/.next/server/app/page.js +8 -9
- package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/page/react-loadable-manifest.json +3 -3
- package/.next/standalone/.next/server/app/settings/page/server-reference-manifest.json +260 -140
- package/.next/standalone/.next/server/app/settings/page.js +10 -11
- package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/archive/page/react-loadable-manifest.json +3 -3
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/archive/page/server-reference-manifest.json +284 -248
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/archive/page.js +9 -10
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/archive/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/archive/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/assets/page/react-loadable-manifest.json +3 -3
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/assets/page/server-reference-manifest.json +247 -211
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/assets/page.js +9 -10
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/assets/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/assets/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/groups/page/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/groups/page/build-manifest.json +18 -0
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/groups/page/next-font-manifest.json +11 -0
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/groups/page/react-loadable-manifest.json +18 -0
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/groups/page/server-reference-manifest.json +401 -0
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/groups/page.js +24 -0
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/groups/page.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/groups/page_client-reference-manifest.js +3 -0
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/notes/page/react-loadable-manifest.json +3 -3
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/notes/page/server-reference-manifest.json +222 -186
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/notes/page.js +9 -10
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/notes/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/notes/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/page/react-loadable-manifest.json +3 -3
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/page/server-reference-manifest.json +257 -209
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/page.js +10 -11
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page/react-loadable-manifest.json +3 -3
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page/server-reference-manifest.json +133 -85
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page.js +9 -10
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/versions/page/react-loadable-manifest.json +3 -3
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/versions/page/server-reference-manifest.json +219 -171
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/versions/page.js +9 -10
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/versions/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/versions/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page/react-loadable-manifest.json +4 -4
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page/server-reference-manifest.json +269 -221
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page.js +11 -12
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/workspaces/page/react-loadable-manifest.json +3 -3
- package/.next/standalone/.next/server/app/workspaces/page/server-reference-manifest.json +169 -133
- package/.next/standalone/.next/server/app/workspaces/page.js +8 -9
- package/.next/standalone/.next/server/app/workspaces/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/workspaces/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app-paths-manifest.json +6 -0
- package/.next/standalone/.next/server/chunks/0se9_next_dist_esm_build_templates_app-route_09ikw5j.js +5 -0
- package/.next/standalone/.next/server/chunks/0se9_next_dist_esm_build_templates_app-route_0eh8dj_.js +9 -5
- package/.next/standalone/.next/server/chunks/0se9_next_dist_esm_build_templates_app-route_0gr2wxq.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0-1~xqo._.js +3 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0lvlooo._.js → [root-of-the-server]__0-kboke._.js} +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0.3n3t.._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0.wsvr6._.js +4 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0.yf1mx._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__00xe-t8._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__02r7j6y._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__02yvm55._.js +3 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__09arklv._.js → [root-of-the-server]__04-ty51._.js} +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__065hi6e._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__06iuq17._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__06x1zwj._.js +28 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__06~wmlx._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__08-bq72._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__08clp-r._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__092475e._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__095t6ga._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0_7_w.g._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0atap--._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0c3je91._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0dz.knv._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ehwsa1._.js +4 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0esywxf._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0fd9z.r._.js +30 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0gbyryz._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0gcg7i.._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0iyp~.k._.js +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0khq-k0._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0kkrbn-._.js +4 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0l1-djp._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0m8t3vi._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0nt7c0f._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0nv83.p._.js +4 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0pr~t0y._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0qcpe0l._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0qfcg6k._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0sq5irw._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0squ613._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0u8tl88._.js +28 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0wjr-72._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0wugb-9._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0yeg1kp._.js +4 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0zchqv1._.js +43 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0zcy11y._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0~1-i5h._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0~ju4-d._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__10aw_67._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__10ci~o9._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__10qclz-._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__12fmxq0._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__136ty69._.js +3 -0
- package/.next/standalone/.next/server/chunks/_02hac5p._.js +30 -0
- package/.next/standalone/.next/server/chunks/_0_w835g._.js +4 -0
- package/.next/standalone/.next/server/chunks/_0je3dz2._.js +30 -0
- package/.next/standalone/.next/server/chunks/_0tidm8l._.js +30 -0
- package/.next/standalone/.next/server/chunks/_0zok2an._.js +30 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_internal_harness_ask_route_actions_0_c62hg.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_internal_harness_notify_route_actions_08hof6m.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_internal_harness_pending_route_actions_0w9t_9m.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_internal_harness_reply_route_actions_0qatz~a.js +3 -0
- package/.next/standalone/.next/server/chunks/src_05balzk._.js +3 -0
- package/.next/standalone/.next/server/chunks/src_0aygchu._.js +3 -0
- package/.next/standalone/.next/server/chunks/src_0gif-f5._.js +3 -0
- package/.next/standalone/.next/server/chunks/src_0pg9w-x._.js +3 -0
- package/.next/standalone/.next/server/chunks/src_0vp6.co._.js +3 -0
- package/.next/standalone/.next/server/chunks/src_11k6i~l._.js +3 -0
- package/.next/standalone/.next/server/chunks/src_actions_agent-actions_ts_10q9r5b._.js +8 -2
- package/.next/standalone/.next/server/chunks/src_lib_02llcit._.js +1 -1
- package/.next/standalone/.next/server/chunks/src_lib_0aowbzy._.js +1 -1
- package/.next/standalone/.next/server/chunks/src_lib_0d~1~wz._.js +3 -0
- package/.next/standalone/.next/server/chunks/src_lib_0ylel_1._.js +3 -0
- package/.next/standalone/.next/server/chunks/src_lib_ai_0xx6y51._.js +1 -1
- package/.next/standalone/.next/server/chunks/src_lib_ai_providers_index_ts_0.y.3vp._.js +1 -1
- package/.next/standalone/.next/server/chunks/src_lib_config-defaults_ts_10ayktg._.js +3 -0
- package/.next/standalone/.next/server/chunks/src_lib_config-reader_ts_0e5f7vk._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/0iu._[workspaceId]_projects_[projectId]_versions_version-timeline-client_tsx_07o_kyi._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/0se9_next_dist_0i5qmqd._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/0se9_next_dist_esm_build_templates_app-page_04~dhws.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/0se9_next_dist_esm_build_templates_app-page_0fro4ex.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/0ws9_lucide-react_dist_esm_icons_0gv_cwy._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/12k._sonner_dist_index_mjs_0-vmpk5._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0-geq20._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0.0m12b._.js +30 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__00qzvly._.js +43 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__01bz3_g._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__02~hdzx._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__06sew6r._.js +43 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__07rk6ic._.js +30 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__090y_.y._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0b.ej5q._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0b6fbjv._.js +30 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0b6hugs._.js +43 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0br5e7w._.js +43 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0bx_h2u._.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0dhq_gl._.js +30 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0e79g0v._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0esg88l._.js +30 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0h_pt4a._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0hzwoy5._.js +30 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0idkp76._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0j4m.1s._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0jymb~t._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0kmonje._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0kqp70x._.js +30 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0l0~scn._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0lh3mlq._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0m8m7vc._.js +30 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0muf4wq._.js +49 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0n02kfa._.js +30 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0n3uc.v._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0o5ohqy._.js +47 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0s_q09t._.js +30 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0s~4y3y._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0s~ak20._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0ta_mpj._.js +30 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0trmndk._.js +30 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0u3~-.g._.js +30 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0vyl8to._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0ws0_c1._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0x7br99._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0xnuz05._.js +5 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0ynq8ty._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0zsnp~d._.js +5 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0~edc3d._.js +30 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0~mhv4m._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1013v_g._.js +47 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__11fp64w._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__123rmn-._.js +30 -0
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0_z5hke._.js → [root-of-the-server]__12viys4._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_0-5.hgb._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{_0dye20y._.js → _0-wp_zu._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_0-~9em3._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0..h3hk._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{_08bq4g8._.js → _00_h2nx._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_02p-udo._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_05~lqg-._.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/_0771b4a._.js +47 -0
- package/.next/standalone/.next/server/chunks/ssr/{_113957g._.js → _0ak77.u._.js} +3 -3
- package/.next/standalone/.next/server/chunks/ssr/{_11osha9._.js → _0ami9yt._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_0r4_qn~._.js → _0awn2mm._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_07lq-bp._.js → _0b660g4._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_0j5.ig_._.js → _0czsddm._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0fmko25._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{_0_nhdgs._.js → _0gomvsp._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_0g~p9_x._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_0hg~.4w._.js +6 -0
- package/.next/standalone/.next/server/chunks/ssr/_0hsuip_._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{_0zr81mw._.js → _0hx2o_8._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_0s.ik0k._.js → _0j7m~u6._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_08-x_rp._.js → _0l6byg1._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_0i4xdso._.js → _0mmy~98._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_0nrxhfb._.js +47 -0
- package/.next/standalone/.next/server/chunks/ssr/{_02vz78l._.js → _0o_c3b2._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_0os43sb._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{_0nze-e6._.js → _0p5ft59._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0q2pep_._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{_060e1u.._.js → _0snv7nt._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0ty4xe6._.js +43 -0
- package/.next/standalone/.next/server/chunks/ssr/_0vkl7.h._.js +47 -0
- package/.next/standalone/.next/server/chunks/ssr/_0wbcp88._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0x09t_o._.js +47 -0
- package/.next/standalone/.next/server/chunks/ssr/_0z5~opf._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_0zn.4bi._.js +47 -0
- package/.next/standalone/.next/server/chunks/ssr/_1086w4p._.js +47 -0
- package/.next/standalone/.next/server/chunks/ssr/_10q2mbe._.js +17 -0
- package/.next/standalone/.next/server/chunks/ssr/_11.knhq._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_1118hto._.js +43 -0
- package/.next/standalone/.next/server/chunks/ssr/{_0rtydyv._.js → _12s8n8g._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_11j0qlp._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/src_actions_agent-actions_ts_0~wc.sy._.js +8 -2
- package/.next/standalone/.next/server/chunks/ssr/src_actions_file-actions_ts_0gcvqwm._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_app_missions_missions-client_tsx_11429lj._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_app_onboarding_page_tsx_0xf7hpz._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_app_settings_page_tsx_0h9v7dr._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_app_workspaces_[workspaceId]_assets_assets-page-client_tsx_0wyzpam._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_app_workspaces_[workspaceId]_board-page-client_tsx_0gips66._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_app_workspaces_[workspaceId]_notes_notes-page-client_tsx_10gyo3v._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_app_workspaces_[workspaceId]_tasks_[taskId]_task-page-client_tsx_02t7blt._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_components_0rowjw~._.js +7 -0
- package/.next/standalone/.next/server/chunks/ssr/{src_lib_00wjv6n._.js → src_lib_04nzvfd._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{src_lib_0.~.oo-._.js → src_lib_0_px2pz._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/src_lib_0a.zy31._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/src_lib_0b73q0a._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/src_lib_0cld9rt._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{src_lib_005uqbe._.js → src_lib_0dbf2qa._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_lib_0er7rzd._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/src_lib_0f0v8_~._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/src_lib_0fr6fzy._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{src_lib_01sr8_t._.js → src_lib_0h2u7a0._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_lib_0k04rl3._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/src_lib_0lpxsj~._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/src_lib_0sq6aqm._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/src_lib_0ui-~7g._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/src_lib_0y5zzg-._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/src_lib_0z-gn78._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/src_lib_13c4a4g._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/src_lib_harness_harness-message_ts_0_3ygf9._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/src_lib_pty_11~ojr2._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/src_lib_pty_orphan-reaper_ts_0a0qmlo._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{_0ng0eku._.js → src_lib_schemas_ts_0ph~1ak._.js} +3 -3
- package/.next/standalone/.next/server/chunks/ssr/src_lib_worktree_ts_06cucy3._.js +1 -1
- package/.next/standalone/.next/server/functions-config-manifest.json +6 -0
- package/.next/standalone/.next/server/instrumentation.js +1 -1
- package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
- package/.next/standalone/.next/server/next-font-manifest.js +1 -1
- package/.next/standalone/.next/server/next-font-manifest.json +8 -0
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +2368 -1528
- package/.next/standalone/.next/static/chunks/0-kkc.ibted8y.js +1 -0
- package/.next/standalone/.next/static/chunks/{0xejm4ge9~cn..js → 0.2y9uc38xso-.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0346xrw6i2bwo.js → 0.gedys.tq.~k.js} +1 -1
- package/.next/standalone/.next/static/chunks/00g58.es_hxli.js +1 -0
- package/.next/standalone/.next/static/chunks/00o_eiv12t~.1.js +1 -0
- package/.next/standalone/.next/static/chunks/01qtgj0xv1fsm.js +2 -0
- package/.next/standalone/.next/static/chunks/024euw7po0d0w.js +1 -0
- package/.next/standalone/.next/static/chunks/02v-9v~885t9c.js +1 -0
- package/.next/standalone/.next/static/chunks/03ct4d8znb7tp.js +1 -0
- package/.next/standalone/.next/static/chunks/03uix~1ru.ovv.js +1 -0
- package/.next/standalone/.next/static/chunks/04.2m8l~ws19v.js +1 -0
- package/.next/standalone/.next/static/chunks/06x7oq8_iu~9d.js +1 -0
- package/.next/standalone/.next/static/chunks/07c4b1kp_85qg.js +1 -0
- package/.next/standalone/.next/static/chunks/07qijq9o5jccu.js +1 -0
- package/.next/standalone/.next/static/chunks/{0uj-3ckujwaiy.js → 09om2gfwimh7k.js} +1 -1
- package/.next/standalone/.next/static/chunks/0alhq.h4~iogi.js +1 -0
- package/.next/standalone/.next/static/chunks/{0rcuiuax31_uh.js → 0cf7e1scao3zk.js} +1 -1
- package/.next/standalone/.next/static/chunks/0ck~sr0nkabl~.js +1 -0
- package/.next/standalone/.next/static/chunks/0d1ok-v-u-xe~.js +1 -0
- package/.next/standalone/.next/static/chunks/0d9u2xspag~4h.js +5 -0
- package/.next/standalone/.next/static/chunks/0ftptcpntzaux.js +1 -0
- package/.next/standalone/.next/static/chunks/0gk~m5bwgoafi.js +1 -0
- package/.next/standalone/.next/static/chunks/0in_7s8n4lmfr.js +1 -0
- package/.next/standalone/.next/static/chunks/0ix28r65.7o_r.js +12 -0
- package/.next/standalone/.next/static/chunks/0j5olwb~d3~3j.js +1 -0
- package/.next/standalone/.next/static/chunks/0mtrtl-jl46in.js +2 -0
- package/.next/standalone/.next/static/chunks/0ov_akpudbv96.js +5 -0
- package/.next/standalone/.next/static/chunks/0oyskd~8~j.j7.js +1 -0
- package/.next/standalone/.next/static/chunks/0q1872yhybt55.js +1 -0
- package/.next/standalone/.next/static/chunks/0seo-lerjdkbn.js +1 -0
- package/.next/standalone/.next/static/chunks/0t1awv68pnn-e.js +1 -0
- package/.next/standalone/.next/static/chunks/0wl8cpmvyhv0l.js +1 -0
- package/.next/standalone/.next/static/chunks/0~2l3wz-gxs2j.js +1 -0
- package/.next/standalone/.next/static/chunks/0~7h_a_dofg-4.js +1 -0
- package/.next/standalone/.next/static/chunks/11yhe31en~dvt.js +1 -0
- package/.next/standalone/.next/static/chunks/12-mlz2vukuga.js +1 -0
- package/.next/standalone/.next/static/chunks/14fch6~swodjf.css +1 -0
- package/.next/standalone/.next/static/chunks/15gztq9f12uhe.js +1 -0
- package/.next/standalone/.next/static/chunks/15ue90qe1sh-9.js +1 -0
- package/.next/standalone/.next/static/chunks/17z9uivez~kp3.js +1 -0
- package/.next/standalone/package.json +5 -6
- package/dist/mcp-server.cjs +1597 -4545
- package/package.json +5 -6
- package/prisma/schema.prisma +83 -5
- package/scripts/migrations/0005-add-parent-task-id.ts +29 -0
- package/scripts/migrations/0006-project-knowledge.ts +58 -0
- package/scripts/migrations/0007-product-group.ts +67 -0
- package/scripts/{stop-hook.js → tower-stop-hook.js} +42 -3
- package/skills/tower/SKILL.md +36 -75
- package/skills/tower/references/task-source.md +80 -0
- package/skills/tower/references/unattended-messaging.md +95 -0
- package/tsconfig.json +14 -4
- package/.next/standalone/.next/server/chunks/[externals]__0x_wqa7._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0.p6em~._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0.zmhk-._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0042hx5._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__03ufxqq._.js +0 -28
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__04--bs7._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__04m2l8a._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__04r193~._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0657y50._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__06ndn7a._.js +0 -4
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__08yqoti._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__098.3z2._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0_d.s7s._.js +0 -28
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0_zfnj0._.js +0 -20
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0clptds._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0g.k9o~._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0i34gbs._.js +0 -4
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0iggiij._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0i~3dwq._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0j05vlm._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0j1px8f._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0k-5ag7._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0otyifi._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0pl.c5.._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0r~9.7c._.js +0 -4
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0t31ba_._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0t_weyi._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0uptkzd._.js +0 -4
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0x3kws1._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0y8w5di._.js +0 -4
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0zi3~a8._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0~g6-c~._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__10fv6tt._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1189rd1._.js +0 -4
- package/.next/standalone/.next/server/chunks/_0jmdgq~._.js +0 -7
- package/.next/standalone/.next/server/chunks/_0q10iet._.js +0 -7
- package/.next/standalone/.next/server/chunks/_0qk_esg._.js +0 -4
- package/.next/standalone/.next/server/chunks/_0t31z6q._.js +0 -5
- package/.next/standalone/.next/server/chunks/_12537g8._.js +0 -7
- package/.next/standalone/.next/server/chunks/src_0fq3zjg._.js +0 -3
- package/.next/standalone/.next/server/chunks/src_0weytpz._.js +0 -3
- package/.next/standalone/.next/server/chunks/src_0wlyw0g._.js +0 -3
- package/.next/standalone/.next/server/chunks/src_0~ey84y._.js +0 -3
- package/.next/standalone/.next/server/chunks/src_lib_0i2.v2d._.js +0 -3
- package/.next/standalone/.next/server/chunks/src_lib_0nw5n~t._.js +0 -3
- package/.next/standalone/.next/server/chunks/src_lib_12xey8u._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/0ws9_lucide-react_dist_esm_icons_0pkla8j._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__00ebsjb._.js +0 -30
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__01fmnse._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__01vm_46._.js +0 -47
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__025ol9g._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__049n47u._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__04ednzb._.js +0 -43
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__04wbr9x._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__05xg05r._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__06dfcgo._.js +0 -30
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__07xkj1s._.js +0 -47
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__081e5n~._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__08tzbfh._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0ecd_1d._.js +0 -47
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0iln7n_._.js +0 -47
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0j_-qk5._.js +0 -30
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0k6oo0n._.js +0 -43
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0lws68d._.js +0 -47
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0mpjat-._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0oamph.._.js +0 -47
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0pnv7nd._.js +0 -30
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0tja~wz._.js +0 -30
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0ug022w._.js +0 -30
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0ugledi._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0vxlsec._.js +0 -4
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0w0.sdz._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0x6k.ee._.js +0 -30
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0xwzk2.._.js +0 -47
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0yby8pl._.js +0 -47
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0z7je5_._.js +0 -5
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0zxc81t._.js +0 -30
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0zzqn5z._.js +0 -43
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__10c.a3u._.js +0 -30
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__10n3vn6._.js +0 -30
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__123rmyb._.js +0 -30
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__124zb~p._.js +0 -30
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__127w3bm._.js +0 -43
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__13ce7v2._.js +0 -30
- package/.next/standalone/.next/server/chunks/ssr/_04~mjmb._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_05a2u03._.js +0 -47
- package/.next/standalone/.next/server/chunks/ssr/_070t_mh._.js +0 -6
- package/.next/standalone/.next/server/chunks/ssr/_07q06~v._.js +0 -47
- package/.next/standalone/.next/server/chunks/ssr/_0_q41~z._.js +0 -47
- package/.next/standalone/.next/server/chunks/ssr/_0cj9a7y._.js +0 -7
- package/.next/standalone/.next/server/chunks/ssr/_0dxbp89._.js +0 -47
- package/.next/standalone/.next/server/chunks/ssr/_0foto06._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0kojxno._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0rdyrfd._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0rxeqmo._.js +0 -17
- package/.next/standalone/.next/server/chunks/ssr/_0s.h4l2._.js +0 -43
- package/.next/standalone/.next/server/chunks/ssr/_0u3yt.5._.js +0 -4
- package/.next/standalone/.next/server/chunks/ssr/_0wqcz3w._.js +0 -47
- package/.next/standalone/.next/server/chunks/ssr/_0ye1-r-._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_03r.9go._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_06f0dao._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/src_0djxlqx._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/src_0eufeyj._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/src_components_ui_select_tsx_0d2ra01._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/src_lib_08jql1e._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/src_lib_0b~j-9d._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/src_lib_0eymyjf._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/src_lib_0fkv9z3._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/src_lib_0n-n0.a._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/src_lib_0sgt~lv._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/src_lib_0sms4xl._.js +0 -5
- package/.next/standalone/.next/server/chunks/ssr/src_lib_0x-iyl1._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/src_lib_0yjmty1._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/src_lib_13aevv6._.js +0 -3
- package/.next/standalone/.next/static/chunks/0-tuek2jqf0el.js +0 -1
- package/.next/standalone/.next/static/chunks/0.-.jc~0b~hy0.js +0 -1
- package/.next/standalone/.next/static/chunks/0.lqb7y9kz5z6.js +0 -1
- package/.next/standalone/.next/static/chunks/0.nsmn6shzidu.js +0 -2
- package/.next/standalone/.next/static/chunks/0.~03w.uxge40.js +0 -1
- package/.next/standalone/.next/static/chunks/01hdj_kw4z2zq.js +0 -2
- package/.next/standalone/.next/static/chunks/01j9m895w64zn.js +0 -1
- package/.next/standalone/.next/static/chunks/01yoibobkdz3x.js +0 -1
- package/.next/standalone/.next/static/chunks/041o.dh2lc-k3.js +0 -1
- package/.next/standalone/.next/static/chunks/07i9j5yyg4vs3.js +0 -1
- package/.next/standalone/.next/static/chunks/08ooaq~-.8fzu.js +0 -1
- package/.next/standalone/.next/static/chunks/0bylodlncwfpb.js +0 -5
- package/.next/standalone/.next/static/chunks/0clewc5ifaruu.js +0 -12
- package/.next/standalone/.next/static/chunks/0cpwtqzrjdgvs.js +0 -1
- package/.next/standalone/.next/static/chunks/0c~e1-nst-ze-.js +0 -1
- package/.next/standalone/.next/static/chunks/0ddt-snh45031.js +0 -1
- package/.next/standalone/.next/static/chunks/0dv4anj-j523o.js +0 -1
- package/.next/standalone/.next/static/chunks/0gf~0e3xpa0fj.js +0 -5
- package/.next/standalone/.next/static/chunks/0gvfb.b8m_i8t.js +0 -1
- package/.next/standalone/.next/static/chunks/0h77-u2vvr-a1.js +0 -1
- package/.next/standalone/.next/static/chunks/0jrje~1gt6w85.css +0 -1
- package/.next/standalone/.next/static/chunks/0lqp~-dlfenad.js +0 -1
- package/.next/standalone/.next/static/chunks/0p4w5b_p_yju8.js +0 -1
- package/.next/standalone/.next/static/chunks/0qkr26yz3bocs.js +0 -1
- package/.next/standalone/.next/static/chunks/0uf~7eqel0zra.js +0 -1
- package/.next/standalone/.next/static/chunks/0w71r_sj_fibx.js +0 -1
- package/.next/standalone/.next/static/chunks/0xg6rcq6g4bbh.js +0 -1
- package/.next/standalone/.next/static/chunks/0yff8rwmrl5m4.js +0 -1
- package/.next/standalone/.next/static/chunks/0ymipmkk2uqby.js +0 -1
- package/.next/standalone/.next/static/chunks/0znfclapbniaa.js +0 -1
- package/.next/standalone/.next/static/chunks/11pe3kpxuj33f.js +0 -1
- package/.next/standalone/.next/static/chunks/172s9cg35qt7i.js +0 -1
- package/.next/standalone/.next/static/chunks/17m4o~gdsvuo3.js +0 -1
- package/.next/standalone/.next/static/chunks/184-zu89wwa4u.js +0 -1
- package/next.config.ts +0 -18
- /package/.next/standalone/.next/static/{dinNvsaC6aoPK_B7ZTeBv → Pf_z-PYy0CJhvcyPEi-LM}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{dinNvsaC6aoPK_B7ZTeBv → Pf_z-PYy0CJhvcyPEi-LM}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/.next/static/{dinNvsaC6aoPK_B7ZTeBv → Pf_z-PYy0CJhvcyPEi-LM}/_ssgManifest.js +0 -0
- /package/scripts/{post-tool-hook.js → tower-post-tool-hook.js} +0 -0
- /package/scripts/{session-start-hook.js → tower-session-start-hook.js} +0 -0
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[924868,(a,b,c)=>{b.exports=a.x("fs/promises",()=>require("fs/promises"))},989927,a=>{"use strict";var b=a.i(446786),c=a.i(814747);function d(a){return a.startsWith("~/")?c.default.join(b.default.homedir(),a.slice(2)):a}function e(a){let b,c=a.match(/^git@([^:]+):(.+)$/);if(c)return{host:c[1],pathSegments:f(c[2]).split("/").filter(Boolean)};try{b=new URL(a)}catch{return null}return{host:b.hostname,pathSegments:f(decodeURIComponent(b.pathname)).split("/").filter(Boolean)}}function f(a){return a.replace(/\.git\/?$/,"")}a.s(["expandHome",0,d,"gitUrlToLocalPath",0,function(a){let b=a.trim();if(!b)return"";try{let a=e(b);if(!a)return"";let{host:f,pathSegments:g}=a;if("code.iflytek.com"===f){let a,b;return d((a=[...g],"osc"===a[0]&&"_source"===a[1]&&(a=a.slice(2)),((b=a.indexOf("-"))>0&&(a=a.slice(0,b)),0===a.length)?"":`~/company/${a.join("/")}`))}if("github.com"===f){var c;let a,b;return d((a=(c=g)[0],b=c[1],a&&b?`${"jp-liu"===a?"~/project/i":"~/project/f"}/${b}`:""))}let h=g[g.length-1];return h?d(`~/project/f/${h}`):""}catch{return""}},"matchGitPathRule",0,function(a,b){if(!b.length)return"";let c=a.trim();if(!c)return"";let f=e(c);if(!f)return"";let{host:g,pathSegments:h}=f,i=h[0]??"",j=h[h.length-1]??"",k=[...b].sort((a,b)=>{let c=+("*"===a.ownerMatch),d=+("*"===b.ownerMatch);return c!==d?c-d:a.priority-b.priority}),l=h.join("/");for(let a of k){if(a.host!==g||"*"!==a.ownerMatch&&a.ownerMatch!==i)continue;let b=a.localPathTemplate;if(b.includes("{path}"))return d(b.replace("{path}",l).replace("{owner}",i).replace("{repo}",j).replace(/\/+$/,""));let c=b.replace("{owner}",i).replace("{repo}","").replace(/\/+$/,"");return d(`${c}/${j}`)}return""}])},292380,742978,a=>{"use strict";var b=a.i(912714),c=a.i(902157),d=a.i(750227);function e(a,b){let c=function(a){if(!a)return null;try{return JSON.parse(a)}catch{return null}}(a.files["package.json"]);return!!c&&b in{...c.dependencies,...c.devDependencies}}let f=[{id:"next",name:"Next.js",icon:"simple-icons:nextdotjs",detect:a=>e(a,"next"),command:"pnpm dev",port:3e3,installCommand:"pnpm install",installMarker:["node_modules"],readyRegex:/Ready in \d+/i,urlExtractRegex:/(https?:\/\/[^\s]+)/,docUrl:"https://nextjs.org/docs"},{id:"nuxt",name:"Nuxt",icon:"simple-icons:nuxtdotjs",detect:a=>e(a,"nuxt"),command:"pnpm dev",port:3e3,installCommand:"pnpm install",installMarker:["node_modules"],readyRegex:/Nuxt .* ready in/i,urlExtractRegex:/(https?:\/\/[^\s]+)/},{id:"uniapp",name:"uni-app",icon:"simple-icons:vuedotjs",detect:a=>e(a,"@dcloudio/uni-app"),command:"pnpm dev:h5",port:9e3,installCommand:"pnpm install",installMarker:["node_modules"],readyRegex:/ready in|App running at|Network:/i,urlExtractRegex:/Local:\s+(https?:\/\/[^\s]+)/,docUrl:"https://uniapp.dcloud.net.cn/"},{id:"vue-cli",name:"Vue (CLI)",icon:"simple-icons:vuedotjs",detect:a=>e(a,"@vue/cli-service"),command:"pnpm serve",port:8080,installCommand:"pnpm install",installMarker:["node_modules"],readyRegex:/App running at|DONE\s+Compiled successfully/i,urlExtractRegex:/Local:\s+(https?:\/\/[^\s]+)/,docUrl:"https://cli.vuejs.org/"},{id:"cra",name:"Create React App",icon:"simple-icons:react",detect:a=>e(a,"react-scripts"),command:"pnpm start",port:3e3,installCommand:"pnpm install",installMarker:["node_modules"],readyRegex:/Compiled successfully|webpack compiled/i,urlExtractRegex:/Local:\s+(https?:\/\/[^\s]+)/,docUrl:"https://create-react-app.dev/"},{id:"vite",name:"Vite",icon:"simple-icons:vite",detect:a=>e(a,"vite"),command:"pnpm dev",port:5173,installCommand:"pnpm install",installMarker:["node_modules"],readyRegex:/ready in \d+\s*ms/i,urlExtractRegex:/Local:\s+(https?:\/\/[^\s]+)/},{id:"angular",name:"Angular",icon:"simple-icons:angular",detect:a=>e(a,"@angular/core"),command:"pnpm start",port:4200,installCommand:"pnpm install",installMarker:["node_modules"],readyRegex:/Compiled successfully|Application bundle generation complete/i,urlExtractRegex:/(https?:\/\/[^\s]+)/},{id:"spring-boot-maven",name:"Spring Boot (Maven)",icon:"simple-icons:springboot",detect:a=>{let b=a.files["pom.xml"];return!!(b&&/spring-boot-starter/.test(b))},command:"./mvnw spring-boot:run",port:8080,installCommand:"./mvnw dependency:resolve",installMarker:["target"],readyRegex:/Started \w+Application in [\d.]+ seconds/i,urlExtractRegex:null,startTimeoutMs:12e4},{id:"spring-boot-gradle",name:"Spring Boot (Gradle)",icon:"simple-icons:springboot",detect:a=>{let b=a.files["build.gradle"]??a.files["build.gradle.kts"];return!!(b&&/spring-boot/.test(b))},command:"./gradlew bootRun",port:8080,installCommand:"./gradlew --refresh-dependencies",installMarker:[".gradle"],readyRegex:/Started \w+Application in [\d.]+ seconds/i,urlExtractRegex:null,startTimeoutMs:12e4},{id:"django",name:"Django",icon:"simple-icons:django",detect:a=>null!==a.files["manage.py"]&&void 0!==a.files["manage.py"],command:"python manage.py runserver",port:8e3,installCommand:"pip install -r requirements.txt",installMarker:[".venv","venv"],readyRegex:/Starting development server at/i,urlExtractRegex:/at\s+(https?:\/\/[^\s]+)/},{id:"fastapi",name:"FastAPI",icon:"simple-icons:fastapi",detect:a=>{let b=a.files["requirements.txt"]??"",c=a.files["pyproject.toml"]??"";return/fastapi/i.test((b??"")+(c??""))},command:"uvicorn main:app --reload",port:8e3,installCommand:"pip install -r requirements.txt",installMarker:[".venv","venv"],readyRegex:/Application startup complete|Uvicorn running on/i,urlExtractRegex:/running on\s+(https?:\/\/[^\s]+)/},{id:"flask",name:"Flask",icon:"simple-icons:flask",detect:a=>{let b=a.files["requirements.txt"]??"";return/^flask/im.test(b??"")},command:"flask --app app run",port:5e3,installCommand:"pip install -r requirements.txt",installMarker:[".venv","venv"],readyRegex:/Running on\s+http/i,urlExtractRegex:/Running on\s+(https?:\/\/[^\s]+)/},{id:"go-generic",name:"Go",icon:"simple-icons:go",detect:a=>null!==a.files["go.mod"]&&void 0!==a.files["go.mod"],command:"go run .",port:8080,installCommand:"go mod download",installMarker:["go.sum"],readyRegex:null,urlExtractRegex:/(https?:\/\/[^\s]+)/},{id:"static",name:"Static HTML",icon:"simple-icons:html5",detect:a=>null!==a.files["index.html"]&&void 0!==a.files["index.html"]&&!a.files["package.json"]&&!a.files["pom.xml"],command:"npx serve -l {port} .",port:3e3,installCommand:null,installMarker:null,readyRegex:/Accepting connections at/i,urlExtractRegex:/(https?:\/\/[^\s]+)/}];a.s(["PRESETS",0,f],742978);let g=["package.json","pom.xml","build.gradle","build.gradle.kts","manage.py","requirements.txt","pyproject.toml","go.mod","index.html"];async function h(a){return Object.fromEntries(await Promise.all(g.map(async c=>{try{let e=await (0,b.readFile)((0,d.join)(a,c),"utf-8");return[c,e]}catch{return[c,null]}})))}async function i(a){return{files:await h(a),hasDir:()=>!1}}async function j(a){try{await (0,b.access)(a,c.constants.R_OK)}catch{return null}let d=await i(a);for(let a of f)try{if(a.detect(d))return a}catch{}return null}a.s(["detectPreset",0,j],292380)},244256,a=>{"use strict";var b=a.i(815429),c=a.i(924868),d=a.i(912714),e=a.i(814747),f=a.i(761469),g=a.i(188139),h=a.i(496877),i=a.i(989927),j=a.i(292380);async function k(){return f.db.workspace.findMany({select:{id:!0,name:!0,projects:{select:{id:!0,name:!0,alias:!0},orderBy:{createdAt:"asc"}}},orderBy:{updatedAt:"desc"}})}async function l(a){return f.db.workspace.findUnique({where:{id:a},include:{projects:{include:{tasks:{orderBy:[{order:"asc"},{createdAt:"desc"}]},repositories:!0}}}})}async function m(a){let b=h.createWorkspaceSchema.parse(a),c=await f.db.workspace.create({data:b});return(0,g.revalidatePath)("/workspaces"),c}async function n(a,b){let c=h.updateWorkspaceSchema.parse(b),d=await f.db.workspace.update({where:{id:a},data:c});return(0,g.revalidatePath)("/workspaces"),d}async function o(a){let b=h.reorderWorkspacesSchema.parse(a);if(new Set(b).size!==b.length)throw Error("Duplicate workspace ids in reorder request");let c=new Set((await f.db.workspace.findMany({select:{id:!0}})).map(a=>a.id));for(let a of b)if(!c.has(a))throw Error("Unknown workspace id in reorder request");if(b.length!==c.size)throw Error("Reorder request must include every workspace");await f.db.$transaction(b.map((a,b)=>f.db.workspace.update({where:{id:a},data:{order:b}}))),(0,g.revalidatePath)("/workspaces")}async function p(a){if(await f.db.workspace.count()<=1)throw Error("Cannot delete the last workspace");await f.db.workspace.delete({where:{id:a}}),(0,g.revalidatePath)("/workspaces")}async function q(b){let k=h.createProjectSchema.parse(b),l=k.localPath?(0,i.expandHome)(k.localPath):void 0;if(l&&!k.gitUrl&&e.default.isAbsolute(l))try{await (0,c.mkdir)(l,{recursive:!0})}catch(a){throw Error(`无法创建项目目录 ${l}: ${a.message}`)}let m=await f.db.project.create({data:{name:k.name,alias:k.alias,description:k.description,type:k.gitUrl?"GIT":"NORMAL",gitUrl:k.gitUrl||void 0,localPath:l,projectType:k.projectType,previewCommand:k.previewCommand,workspaceId:k.workspaceId}});try{let{ensureTowerTask:b}=await a.A(76052);await b(m.id,k.name)}catch(a){console.warn("Failed to auto-create Tower task",a)}if(l)try{if((await (0,d.readdir)(l).catch(()=>[])).length>0){let a=await (0,j.detectPreset)(l);a&&await f.db.project.update({where:{id:m.id},data:{previewPreset:a.id}})}}catch{}return(0,g.revalidatePath)("/workspaces"),m}async function r(a,b){let c={...h.updateProjectSchema.parse(b)};c.localPath&&(c.localPath=(0,i.expandHome)(c.localPath));let e=await f.db.project.update({where:{id:a},data:c});if(void 0!==b.localPath){let c=b.localPath?(0,i.expandHome)(b.localPath):null;if(c)try{if((await (0,d.readdir)(c).catch(()=>[])).length>0){let b=await (0,j.detectPreset)(c);await f.db.project.update({where:{id:a},data:{previewPreset:b?.id??null}})}}catch{}}return(0,g.revalidatePath)("/workspaces"),e}async function s(b){let c=await f.db.task.findMany({where:{projectId:b},include:{project:{select:{localPath:!0}}}}),{destroySession:d}=await a.A(98813),{removeWorktree:e}=await a.A(507502);for(let a of c){try{d(a.id)}catch{}if(await f.db.taskExecution.updateMany({where:{taskId:a.id,status:{in:["PENDING","RUNNING","PAUSED"]}},data:{status:"FAILED",endedAt:new Date}}),a.project?.localPath)try{await e(a.project.localPath,a.id)}catch{}["DONE","CANCELLED"].includes(a.status)||await f.db.task.update({where:{id:a.id},data:{status:"CANCELLED"}})}await f.db.project.delete({where:{id:b}}),(0,g.revalidatePath)("/workspaces")}async function t(a){return f.db.project.findFirst({where:{localPath:a},include:{workspace:!0}})}async function u(a=3){return f.db.workspace.findMany({select:{id:!0,name:!0,projects:{select:{id:!0,name:!0,alias:!0,tasks:{where:{status:{in:["TODO","IN_PROGRESS","IN_REVIEW"]},NOT:{labels:{some:{label:{name:"Tower",isBuiltin:!0}}}}},select:{id:!0,title:!0,status:!0,priority:!0,executions:{where:{sessionId:{not:null}},select:{sessionId:!0},orderBy:{createdAt:"desc"},take:1}},orderBy:{updatedAt:"desc"},take:a},_count:{select:{tasks:{where:{status:{in:["TODO","IN_PROGRESS","IN_REVIEW"]},NOT:{labels:{some:{label:{name:"Tower",isBuiltin:!0}}}}}}}}},orderBy:{createdAt:"asc"}}},orderBy:{updatedAt:"desc"}})}async function v(){return f.db.workspace.findMany({select:{id:!0,name:!0,projects:{select:{id:!0,name:!0,alias:!0,tasks:{where:{OR:[{status:{in:["TODO","IN_PROGRESS","IN_REVIEW"]}},{labels:{some:{label:{name:"Tower",isBuiltin:!0}}}}]},select:{id:!0,title:!0,status:!0,priority:!0,labels:{where:{label:{name:"Tower",isBuiltin:!0}},select:{labelId:!0}},executions:{where:{sessionId:{not:null}},select:{sessionId:!0},orderBy:{createdAt:"desc"},take:1}},orderBy:{updatedAt:"desc"}},_count:{select:{tasks:{where:{status:{in:["TODO","IN_PROGRESS","IN_REVIEW"]},NOT:{labels:{some:{label:{name:"Tower",isBuiltin:!0}}}}}}}}},orderBy:{createdAt:"asc"}}},orderBy:{updatedAt:"desc"}})}async function w(a=10){return f.db.project.findMany({where:{localPath:{not:null}},select:{id:!0,name:!0,alias:!0,localPath:!0,workspaceId:!0,type:!0,updatedAt:!0},orderBy:{updatedAt:"desc"},take:a})}async function x(b){let c=await f.db.project.findUnique({where:{id:b},select:{id:!0,name:!0}});if(!c)throw Error("Project not found");let{ensureTowerTask:d}=await a.A(76052);return d(c.id,c.name)}(0,a.i(630048).ensureServerEntryExports)([k,l,m,n,o,p,q,r,s,t,u,v,w,x]),(0,b.registerServerReference)(k,"00269e045821c7662d847842751e4bd34289e9d9f7",null),(0,b.registerServerReference)(l,"40867eda8002c5cff2fc3daff9751e6633cee98e82",null),(0,b.registerServerReference)(m,"4073b6aed6f0cf2cc15c3c9ee26879266ab292dadb",null),(0,b.registerServerReference)(n,"60b7ba6b5939f2412c541f416a9d70652d8104f30a",null),(0,b.registerServerReference)(o,"40cac7bd5f30279431c77b3ac457b584502e8a346c",null),(0,b.registerServerReference)(p,"40a959290e2953edc71f754770c46e3191f47f2a6f",null),(0,b.registerServerReference)(q,"402535ef46f2a5c3f9c9b0d4a80fea235b2a759106",null),(0,b.registerServerReference)(r,"60a7f1fea1269f6dc7e20f780bf809647e279ce915",null),(0,b.registerServerReference)(s,"4018cfb87b5cedda8d81d5a4585dd3bcd6af70d9f6",null),(0,b.registerServerReference)(t,"407c7e0f04eba8e75d5a2b52681e62b1aa03e78250",null),(0,b.registerServerReference)(u,"4071609f7c57092cdaed865c7b6ad1d0ad8efdf760",null),(0,b.registerServerReference)(v,"0084154bf3b55f07270443a00c9aa96dc9957f3347",null),(0,b.registerServerReference)(w,"40c16ca3b6eafc693b7e8d7019f60d1cda33dffdad",null),(0,b.registerServerReference)(x,"4025bb7670d06524b74b31713333451172e0113e2f",null),a.s(["createProject",0,q,"createWorkspace",0,m,"deleteProject",0,s,"deleteWorkspace",0,p,"getOrCreateTowerTaskId",0,x,"getProjectByLocalPath",0,t,"getRecentLocalProjects",0,w,"getWorkspaceById",0,l,"getWorkspacesWithActiveTasks",0,v,"getWorkspacesWithProjects",0,k,"getWorkspacesWithRecentTasks",0,u,"reorderWorkspaces",0,o,"updateProject",0,r,"updateWorkspace",0,n])}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__05xg05r._.js.map
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
module.exports=[52350,562278,a=>{"use strict";var b=a.i(902157),c=a.i(660526),d=a.i(750227),e=a.i(163812);function f(){return process.env.TOWER_PACKAGE_ROOT||process.cwd()}a.s(["getPackageRoot",0,f],562278);let g=["sonnet","opus","haiku","claude-sonnet-4-6","claude-opus-4-6","claude-haiku-4-5-20251001"];a.s(["ClaudeCliAdapter",0,class{buildSpawnArgs(a){let b=["--dangerously-skip-permissions"];a.extraArgs?.length&&b.push(...a.extraArgs),a.resumeSessionId?b.push("--resume",a.resumeSessionId):a.continueLatest?b.push("--continue"):a.prompt&&b.push(a.prompt);let c={...a.envOverrides??{}};return{command:this.resolveCommand(),args:b,env:c}}buildEnvOverrides(a){let b={TOWER_TASK_ID:a.taskId,TOWER_TASK_TITLE:a.taskTitle,TOWER_STARTED_AT:new Date().toISOString(),TOWER_API_URL:a.apiUrl};return a.callbackUrl&&(b.CALLBACK_URL=a.callbackUrl),b}async installHooks(a){try{let a=this.readSettings(),b=a.hooks??{},c=f().replace(/\\/g,"/"),e=d.join(c,"scripts","session-start-hook.js").replace(/\\/g,"/"),g=d.join(c,"scripts","post-tool-hook.js").replace(/\\/g,"/"),h=d.join(c,"scripts","stop-hook.js").replace(/\\/g,"/"),i=!1;return i=this.upsertHook(b,"SessionStart","session-start-hook.js",{hooks:[{command:`node "${e}"`,timeout:5,type:"command"}]})||i,i=this.upsertHook(b,"PostToolUse","post-tool-hook.js",{hooks:[{command:`node "${g}"`,timeout:10,type:"command"}],matcher:"Write|Edit|MultiEdit"})||i,(i=this.upsertHook(b,"Stop","stop-hook.js",{hooks:[{command:`node "${h}"`,timeout:5,type:"command"}]})||i)&&(a.hooks=b,this.writeSettings(a)),{ok:!0,method:"file",detail:this.getSettingsPath()}}catch(a){return{ok:!1,method:"file",detail:this.getSettingsPath(),error:a instanceof Error?a.message:String(a)}}}async repairHookPaths(){try{let a=this.readSettings(),b=a.hooks??{},c=f().replace(/\\/g,"/"),e=!1;for(let[a,f]of[["SessionStart","session-start-hook.js"],["PostToolUse","post-tool-hook.js"],["Stop","stop-hook.js"]]){let g=this.getHookArray(b,a),h=g.findIndex(a=>a?.hooks?.some?.(a=>a.command?.includes(f)));if(h<0)continue;let i=d.join(c,"scripts",f).replace(/\\/g,"/"),j=`node "${i}"`,k=g[h]?.hooks?.[0];k&&k.command!==j&&(k.command=j,b[a]=g,e=!0)}e&&(a.hooks=b,this.writeSettings(a))}catch{}}upsertHook(a,b,c,d){let e=this.getHookArray(a,b),f=d?.hooks?.[0]?.command,g=e.findIndex(a=>a?.hooks?.some?.(a=>a.command?.includes(c)));if(g>=0){if(e[g]?.hooks?.[0]?.command===f)return!1;e.splice(g,1)}return e.push(d),a[b]=e,!0}async uninstallHooks(){try{let a=this.readSettings(),b=a.hooks??{},c=["session-start-hook.js","post-tool-hook.js","stop-hook.js"];for(let a of["SessionStart","PostToolUse","Stop"]){let d=this.getHookArray(b,a);b[a]=d.filter(a=>!a.hooks?.some(a=>c.some(b=>a.command?.includes(b))))}return a.hooks=b,this.writeSettings(a),{ok:!0,method:"file",detail:this.getSettingsPath()}}catch(a){return{ok:!1,method:"file",detail:this.getSettingsPath(),error:a instanceof Error?a.message:String(a)}}}async isHooksInstalled(){let a=this.readSettings().hooks??{},b=this.getHookArray(a,"PostToolUse");return this.hasHook(b,"post-tool-hook.js")}async installMcp(a,b={}){let c=b.scope??"user",d={command:a.command,args:a.args};a.env&&Object.keys(a.env).length>0&&(d.env=a.env);let e=this.resolveCommand(),f=["mcp","add-json","-s",c,a.name,JSON.stringify(d)];try{return await this.runCli(e,["mcp","remove","-s",c,a.name],b.cwd).catch(()=>{}),await this.runCli(e,f,b.cwd),{ok:!0,method:"cli",detail:`${e} ${f.join(" ")}`}}catch(a){return{ok:!1,method:"cli",detail:`${e} ${f.join(" ")}`,error:a instanceof Error?a.message:String(a)}}}async uninstallMcp(a,b={}){let c=b.scope??"user",d=this.resolveCommand(),e=["mcp","remove","-s",c,a];try{return await this.runCli(d,e,b.cwd),{ok:!0,method:"cli",detail:`${d} ${e.join(" ")}`}}catch(a){return{ok:!1,method:"cli",detail:`${d} ${e.join(" ")}`,error:a instanceof Error?a.message:String(a)}}}async isMcpInstalled(a,b={}){let c=this.resolveCommand();try{return await this.runCli(c,["mcp","get",a],b.cwd,5e3),!0}catch{return!1}}async installSkill(a,c){let f=d.join(this.getConfigDir(),"skills",a);try{if(!b.existsSync(c))return{ok:!1,method:"symlink",detail:f,error:`Source skill dir does not exist: ${c}`};b.mkdirSync(d.dirname(f),{recursive:!0});let a=await b.promises.lstat(f).catch(()=>null);if(a)if(!(a.isSymbolicLink()||(0,e.isWindows)()&&a.isDirectory()))return{ok:!1,method:"symlink",detail:f,error:`Refusing to overwrite non-symlink at ${f}`};else try{let a=await b.promises.readlink(f);if(d.resolve(a)===d.resolve(c))return{ok:!0,method:"symlink",detail:`${f} → ${c} (already)`};await b.promises.unlink(f)}catch{if(!a.isSymbolicLink())return{ok:!1,method:"symlink",detail:f,error:`Refusing to overwrite non-symlink at ${f}`}}let g=(0,e.isWindows)()?"junction":"dir";return await b.promises.symlink(c,f,g),{ok:!0,method:"symlink",detail:`${f} → ${c}`}}catch(a){return{ok:!1,method:"symlink",detail:f,error:a instanceof Error?a.message:String(a)}}}async uninstallSkill(a){let c=d.join(this.getConfigDir(),"skills",a);try{let a=await b.promises.lstat(c).catch(()=>null);if(!a)return{ok:!0,method:"symlink",detail:`${c} (already absent)`};if(!a.isSymbolicLink())return{ok:!1,method:"symlink",detail:c,error:`Refusing to remove non-symlink at ${c}`};return await b.promises.unlink(c),{ok:!0,method:"symlink",detail:c}}catch(a){return{ok:!1,method:"symlink",detail:c,error:a instanceof Error?a.message:String(a)}}}async isSkillInstalled(a,c){let e=d.join(this.getConfigDir(),"skills",a);try{if(!(await b.promises.lstat(e)).isSymbolicLink())return!1;if(!c)return!0;let a=await b.promises.readlink(e),f=d.isAbsolute(a)?a:d.resolve(d.dirname(e),a);return d.resolve(f)===d.resolve(c)}catch{return!1}}async runCli(b,c,d,e=1e4){let{execFile:f}=await a.A(482848),{promisify:g}=await a.A(268548),h=g(f),{stdout:i}=await h(b,c,{cwd:d,timeout:e});return i}async isAvailable(){return null!==await this.getVersion()}async getVersion(){try{let{execFile:b}=await a.A(144264),{promisify:c}=await a.A(534777),{resolveSpawnTarget:d}=await a.A(889618),e=c(b),f=await d(this.resolveCommand(),["--version"]),{stdout:g}=await e(f.command,f.args,{timeout:5e3});return g.trim()||null}catch{return null}}async getModels(){return g}getConfigDir(){return d.join(c.homedir(),".claude")}getSettingsPath(){return d.join(this.getConfigDir(),"settings.json")}getSessionsDir(){return d.join(this.getConfigDir(),"projects")}getApiKeyInfo(){return{envVar:"ANTHROPIC_API_KEY",required:!1}}buildHelloProbeArgs(a){return{command:this.resolveCommand(),args:["--print",a,"--output-format","stream-json","--verbose"]}}resolveCommand(){if(process.env.CLAUDE_CODE_PATH)return process.env.CLAUDE_CODE_PATH;if((0,e.isWindows)()){let a=(0,e.resolveCommandPathSync)("claude-code");if("claude-code"!==a)return a}return(0,e.resolveCommandPathSync)("claude")}readSettings(){try{return JSON.parse(b.readFileSync(this.getSettingsPath(),"utf-8"))}catch{return{}}}writeSettings(a){let c=this.getConfigDir();b.existsSync(c)||b.mkdirSync(c,{recursive:!0}),b.writeFileSync(this.getSettingsPath(),JSON.stringify(a,null,2),"utf-8")}getHookArray(a,b){let c=a[b];return Array.isArray(c)?c:[]}hasHook(a,b){return a.some(a=>a.hooks?.some(a=>a.command?.includes(b)))}}],52350)},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])},268548,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[externals]_node_util_0xr.y7p._.js"].map(b=>a.l(b))).then(()=>b(812057)))},534777,a=>{a.v(a=>Promise.resolve().then(()=>a(224361)))},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=%5Broot-of-the-server%5D__06dfcgo._.js.map
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
module.exports=[495370,a=>{"use strict";var b=a.i(815429),c=a.i(761469),d=a.i(188139),e=a.i(496877);async function f(a){return c.db.label.findMany({where:{OR:[{isBuiltin:!0},{workspaceId:a}]},orderBy:[{isBuiltin:"desc"},{name:"asc"}]})}async function g(a){let b=e.createLabelSchema.parse(a),f=await c.db.label.create({data:{name:b.name,color:b.color,workspaceId:b.workspaceId}});return(0,d.revalidatePath)("/workspaces"),f}async function h(a){let b=await c.db.label.findUnique({where:{id:a}});if(!b)throw Error("Label not found");if(b.isBuiltin)throw Error("Cannot delete builtin labels");await c.db.label.delete({where:{id:a}}),(0,d.revalidatePath)("/workspaces")}async function i(a,b){await c.db.$transaction(async c=>{await c.taskLabel.deleteMany({where:{taskId:a}}),b.length>0&&await c.taskLabel.createMany({data:b.map(b=>({taskId:a,labelId:b}))})}),(0,d.revalidatePath)("/workspaces")}async function j(a){return(await c.db.taskLabel.findMany({where:{taskId:a},include:{label:!0}})).map(a=>a.label)}(0,a.i(630048).ensureServerEntryExports)([f,g,h,i,j]),(0,b.registerServerReference)(f,"406dd254cc7eb451737c80331e7288eb336e7df1a0",null),(0,b.registerServerReference)(g,"40887bdb36e2122964eea1db15e0be1868c081c4da",null),(0,b.registerServerReference)(h,"400ce9acdefe7899d80e3a397501626b8ceb77ed52",null),(0,b.registerServerReference)(i,"606dd68554dfa87ae9b2332be87990ee913d22c3ad",null),(0,b.registerServerReference)(j,"4015b8e64b3d2c9b6979fe735ab480dbb1a5608132",null),a.s(["createLabel",0,g,"deleteLabel",0,h,"getLabelsForWorkspace",0,f,"getTaskLabels",0,j,"setTaskLabels",0,i])},287068,a=>{"use strict";var b=a.i(761469);function c(a,b){return{id:a.note_id,type:"note",title:a.title,subtitle:`${a.workspace_name} / ${a.project_name}`,navigateTo:`/workspaces/${a.workspaceId}/notes?projectId=${a.projectId}`,snippet:a.content?a.content.slice(0,b):void 0}}async function d(a,e="task",f){if(!a.trim())return[];let g=a.trim(),{resultLimit:h,allModeCap:i,snippetLength:j}=f;if("all"===e){let[a,b,c,e,h]=await Promise.allSettled([d(g,"task",f),d(g,"project",f),d(g,"repository",f),d(g,"note",f),d(g,"asset",f)]),j=a=>"fulfilled"===a.status?a.value.slice(0,i):[];return[...j(a),...j(b),...j(c),...j(e),...j(h)]}if("task"===e)return(await b.db.task.findMany({where:{OR:[{title:{contains:g}},{description:{contains:g}}]},include:{project:{include:{workspace:!0}}},take:h,orderBy:{updatedAt:"desc"}})).map(a=>{let b="DONE"===a.status||"CANCELLED"===a.status,c=a.project.workspaceId;return{id:a.id,type:"task",title:a.title,subtitle:`${a.project.workspace.name} / ${a.project.name}`,navigateTo:b?`/workspaces/${c}/archive?projectId=${a.projectId}`:`/workspaces/${c}?projectId=${a.projectId}`}});if("project"===e)return(await b.db.project.findMany({where:{OR:[{name:{contains:g}},{alias:{contains:g}},{description:{contains:g}}]},include:{workspace:!0},take:h,orderBy:{updatedAt:"desc"}})).map(a=>({id:a.id,type:"project",title:a.alias?`${a.name} (${a.alias})`:a.name,subtitle:a.workspace.name,navigateTo:`/workspaces/${a.workspaceId}?projectId=${a.id}`}));if("repository"===e)return(await b.db.repository.findMany({where:{OR:[{name:{contains:g}},{path:{contains:g}}]},include:{project:{include:{workspace:!0}}},take:h})).map(a=>({id:a.id,type:"repository",title:a.name,subtitle:`${a.project.workspace.name} / ${a.project.name} \xb7 ${a.branch}`,navigateTo:`/workspaces/${a.project.workspaceId}?projectId=${a.projectId}`}));if("note"===e){if(g.length<3)return(await b.db.$queryRawUnsafe(`SELECT n.id as note_id, n.title, n.content,
|
|
2
|
-
n."projectId", p."workspaceId", p.name as project_name, w.name as workspace_name
|
|
3
|
-
FROM "ProjectNote" n
|
|
4
|
-
JOIN "Project" p ON p.id = n."projectId"
|
|
5
|
-
JOIN "Workspace" w ON w.id = p."workspaceId"
|
|
6
|
-
WHERE n.title LIKE ? OR n.content LIKE ?
|
|
7
|
-
LIMIT ?`,`%${g}%`,`%${g}%`,h)).map(a=>c(a,j));try{return(await b.db.$queryRawUnsafe(`SELECT f.note_id, f.title, f.content,
|
|
8
|
-
n."projectId", p."workspaceId", p.name as project_name, w.name as workspace_name
|
|
9
|
-
FROM notes_fts f
|
|
10
|
-
JOIN "ProjectNote" n ON n.id = f.note_id
|
|
11
|
-
JOIN "Project" p ON p.id = n."projectId"
|
|
12
|
-
JOIN "Workspace" w ON w.id = p."workspaceId"
|
|
13
|
-
WHERE f.notes_fts MATCH ?
|
|
14
|
-
ORDER BY rank
|
|
15
|
-
LIMIT ?`,g,h)).map(a=>c(a,j))}catch{return(await b.db.$queryRawUnsafe(`SELECT n.id as note_id, n.title, n.content,
|
|
16
|
-
n."projectId", p."workspaceId", p.name as project_name, w.name as workspace_name
|
|
17
|
-
FROM "ProjectNote" n
|
|
18
|
-
JOIN "Project" p ON p.id = n."projectId"
|
|
19
|
-
JOIN "Workspace" w ON w.id = p."workspaceId"
|
|
20
|
-
WHERE n.title LIKE ? OR n.content LIKE ?
|
|
21
|
-
LIMIT ?`,`%${g}%`,`%${g}%`,h)).map(a=>c(a,j))}}return"asset"===e?(await b.db.projectAsset.findMany({where:{OR:[{filename:{contains:g}},{description:{contains:g}}]},include:{project:{include:{workspace:!0}}},take:h,orderBy:{createdAt:"desc"}})).map(a=>({id:a.id,type:"asset",title:a.filename,subtitle:`${a.project.workspace.name} / ${a.project.name}`,navigateTo:`/workspaces/${a.project.workspaceId}/assets?projectId=${a.projectId}`,snippet:a.description||void 0})):[]}a.s(["search",0,d])},396904,a=>a.a(async(b,c)=>{try{var d=a.i(815429),e=a.i(287068),f=a.i(980999),g=a.i(630048),h=b([f]);async function i(a,b="task"){let c=await (0,f.getConfigValues)(["search.resultLimit","search.allModeCap","search.snippetLength"]);return(0,e.search)(a,b,{resultLimit:c["search.resultLimit"]??20,allModeCap:c["search.allModeCap"]??5,snippetLength:c["search.snippetLength"]??80})}[f]=h.then?(await h)():h,(0,g.ensureServerEntryExports)([i]),(0,d.registerServerReference)(i,"600fe4665d4e6fc8cd80863079f1206fc73a4eb6ed",null),a.s(["globalSearch",0,i]),c()}catch(a){c(a)}},!1),101844,a=>{"use strict";var b=a.i(815429),c=a.i(924868),d=a.i(522734),e=a.i(814747),f=a.i(761469),g=a.i(188139),h=a.i(630048);async function i(b){if(!b||"string"!=typeof b)return{safe:!1,reason:"无效的项目 ID"};let g=await f.db.project.findUnique({where:{id:b}});if(!g||!g.localPath)return{safe:!1,reason:"项目不存在或未设置本地路径"};if((await f.db.taskExecution.findMany({where:{task:{projectId:b},status:"RUNNING"},select:{id:!0}})).length>0)return{safe:!1,reason:"该项目有正在运行的任务执行,请先停止所有执行"};let h=await f.db.task.findMany({where:{projectId:b},select:{id:!0}}),{getSession:i}=await a.A(98813);for(let a of h)if(void 0!==i(a.id))return{safe:!1,reason:"该项目有活跃的终端会话,请先关闭"};let j=e.default.join(g.localPath,".worktrees");if((0,d.existsSync)(j))try{if((await (0,c.readdir)(j)).length>0)return{safe:!1,reason:"该项目有活跃的 Git Worktree,请先清理"}}catch{}return{safe:!0}}async function j(b,h){if(!b||"string"!=typeof b)return{success:!1,error:"无效的项目 ID"};if(!h||"string"!=typeof h||!e.default.isAbsolute(h))return{success:!1,error:"目标路径必须是非空的绝对路径"};let i=await f.db.project.findUnique({where:{id:b}});if(!i||!i.localPath)return{success:!1,error:"项目不存在或未设置本地路径"};let j=i.localPath;if(h===j)return{success:!1,error:"源路径和目标路径相同"};if((await f.db.taskExecution.findMany({where:{task:{projectId:b},status:"RUNNING"},select:{id:!0}})).length>0)return{success:!1,error:"该项目有正在运行的任务执行,请先停止所有执行"};let k=await f.db.task.findMany({where:{projectId:b},select:{id:!0}}),{getSession:l}=await a.A(98813);for(let a of k)if(void 0!==l(a.id))return{success:!1,error:"该项目有活跃的终端会话,请先关闭"};let m=e.default.join(j,".worktrees");if((0,d.existsSync)(m))try{if((await (0,c.readdir)(m)).length>0)return{success:!1,error:"该项目有活跃的 Git Worktree,请先清理"}}catch{}if((0,d.existsSync)(h))try{if((await (0,c.readdir)(h)).length>0)return{success:!1,error:"目标路径已存在且不为空"}}catch{return{success:!1,error:"目标路径已存在且不为空"}}let n=e.default.dirname(h);try{await (0,c.mkdir)(n,{recursive:!0})}catch(a){if("EACCES"===a.code||"EPERM"===a.code)return{success:!1,error:`无权限创建父目录 ${n} — 请检查 Git 路径映射规则的模板是否漏了 "~/" 前缀`};if("EROFS"===a.code)return{success:!1,error:`父目录所在文件系统只读:${n}`};return{success:!1,error:`创建父目录失败:${a.message||a.code||"未知错误"}`}}try{await (0,c.rename)(j,h)}catch(a){if("EXDEV"===a.code)return{success:!1,error:"源路径和目标路径不在同一文件系统,不支持跨设备迁移"};if("EACCES"===a.code||"EPERM"===a.code)return{success:!1,error:`无权限移动到 ${h}`};return{success:!1,error:a.message||"文件系统操作失败"}}return await f.db.project.update({where:{id:b},data:{localPath:h}}),(0,g.revalidatePath)("/workspaces"),{success:!0}}let k=`分析这个项目目录,生成一段简短的 Markdown 项目描述。
|
|
22
|
-
|
|
23
|
-
读取 package.json、README.md 等关键文件,然后概括:
|
|
24
|
-
|
|
25
|
-
**技术栈:** 一句话列出主要语言、框架、关键库
|
|
26
|
-
**定位:** 一句话说明项目是什么
|
|
27
|
-
**核心模块:** 2-3 个关键模块,每个一句话
|
|
28
|
-
|
|
29
|
-
要求:
|
|
30
|
-
- 总字数不超过 500 字
|
|
31
|
-
- 用简洁的 Markdown(加粗标签 + 短句),不要用 ## 大标题和表格
|
|
32
|
-
- 不要罗列每个文件/目录,只说关键信息
|
|
33
|
-
- 中文输出`,l=`Analyze this project directory and generate a brief Markdown project description.
|
|
34
|
-
|
|
35
|
-
Read package.json, README.md and other key files, then summarize:
|
|
36
|
-
|
|
37
|
-
**Tech Stack:** One sentence listing primary languages, frameworks, and key libraries
|
|
38
|
-
**Overview:** One sentence describing what this project is
|
|
39
|
-
**Core Modules:** 2-3 key modules, one sentence each
|
|
40
|
-
|
|
41
|
-
Requirements:
|
|
42
|
-
- Keep it under 1000 words
|
|
43
|
-
- Use concise Markdown (bold labels + short sentences), no ## headings or tables
|
|
44
|
-
- Don't list every file/directory, only key information
|
|
45
|
-
- Output in English`;async function m(b,c="zh"){if(!b||"string"!=typeof b)throw Error("无效的本地路径");if(b.startsWith("~"))throw Error("不支持 ~ 别名,请提供绝对路径");if(!e.default.isAbsolute(b))throw Error("本地路径必须为绝对路径");let{aiQuery:d}=await a.A(752453),f=await d("en"===c?l:k,b,{maxTurns:10,tools:["Read","Glob"],allowedTools:["Read","Glob"]});if(!f)throw Error("AI 分析未返回结果");return f.length>2e3?f.slice(0,2e3).trimEnd()+"\n\n...":f}(0,h.ensureServerEntryExports)([i,j,m]),(0,b.registerServerReference)(i,"4060c6d6aaff8835d0f5ade772b0632192ac0a9430",null),(0,b.registerServerReference)(j,"60798d486148e4a4b63876f699e382bde537c86c7a",null),(0,b.registerServerReference)(m,"60474ed8af66d6d5d3b38dc4ead39b20409a155dbb",null),a.s(["analyzeProjectDirectory",0,m,"checkMigrationSafety",0,i,"migrateProjectPath",0,j])},52350,562278,a=>{"use strict";var b=a.i(902157),c=a.i(660526),d=a.i(750227),e=a.i(163812);function f(){return process.env.TOWER_PACKAGE_ROOT||process.cwd()}a.s(["getPackageRoot",0,f],562278);let g=["sonnet","opus","haiku","claude-sonnet-4-6","claude-opus-4-6","claude-haiku-4-5-20251001"];a.s(["ClaudeCliAdapter",0,class{buildSpawnArgs(a){let b=["--dangerously-skip-permissions"];a.extraArgs?.length&&b.push(...a.extraArgs),a.resumeSessionId?b.push("--resume",a.resumeSessionId):a.continueLatest?b.push("--continue"):a.prompt&&b.push(a.prompt);let c={...a.envOverrides??{}};return{command:this.resolveCommand(),args:b,env:c}}buildEnvOverrides(a){let b={TOWER_TASK_ID:a.taskId,TOWER_TASK_TITLE:a.taskTitle,TOWER_STARTED_AT:new Date().toISOString(),TOWER_API_URL:a.apiUrl};return a.callbackUrl&&(b.CALLBACK_URL=a.callbackUrl),b}async installHooks(a){try{let a=this.readSettings(),b=a.hooks??{},c=f().replace(/\\/g,"/"),e=d.join(c,"scripts","session-start-hook.js").replace(/\\/g,"/"),g=d.join(c,"scripts","post-tool-hook.js").replace(/\\/g,"/"),h=d.join(c,"scripts","stop-hook.js").replace(/\\/g,"/"),i=!1;return i=this.upsertHook(b,"SessionStart","session-start-hook.js",{hooks:[{command:`node "${e}"`,timeout:5,type:"command"}]})||i,i=this.upsertHook(b,"PostToolUse","post-tool-hook.js",{hooks:[{command:`node "${g}"`,timeout:10,type:"command"}],matcher:"Write|Edit|MultiEdit"})||i,(i=this.upsertHook(b,"Stop","stop-hook.js",{hooks:[{command:`node "${h}"`,timeout:5,type:"command"}]})||i)&&(a.hooks=b,this.writeSettings(a)),{ok:!0,method:"file",detail:this.getSettingsPath()}}catch(a){return{ok:!1,method:"file",detail:this.getSettingsPath(),error:a instanceof Error?a.message:String(a)}}}async repairHookPaths(){try{let a=this.readSettings(),b=a.hooks??{},c=f().replace(/\\/g,"/"),e=!1;for(let[a,f]of[["SessionStart","session-start-hook.js"],["PostToolUse","post-tool-hook.js"],["Stop","stop-hook.js"]]){let g=this.getHookArray(b,a),h=g.findIndex(a=>a?.hooks?.some?.(a=>a.command?.includes(f)));if(h<0)continue;let i=d.join(c,"scripts",f).replace(/\\/g,"/"),j=`node "${i}"`,k=g[h]?.hooks?.[0];k&&k.command!==j&&(k.command=j,b[a]=g,e=!0)}e&&(a.hooks=b,this.writeSettings(a))}catch{}}upsertHook(a,b,c,d){let e=this.getHookArray(a,b),f=d?.hooks?.[0]?.command,g=e.findIndex(a=>a?.hooks?.some?.(a=>a.command?.includes(c)));if(g>=0){if(e[g]?.hooks?.[0]?.command===f)return!1;e.splice(g,1)}return e.push(d),a[b]=e,!0}async uninstallHooks(){try{let a=this.readSettings(),b=a.hooks??{},c=["session-start-hook.js","post-tool-hook.js","stop-hook.js"];for(let a of["SessionStart","PostToolUse","Stop"]){let d=this.getHookArray(b,a);b[a]=d.filter(a=>!a.hooks?.some(a=>c.some(b=>a.command?.includes(b))))}return a.hooks=b,this.writeSettings(a),{ok:!0,method:"file",detail:this.getSettingsPath()}}catch(a){return{ok:!1,method:"file",detail:this.getSettingsPath(),error:a instanceof Error?a.message:String(a)}}}async isHooksInstalled(){let a=this.readSettings().hooks??{},b=this.getHookArray(a,"PostToolUse");return this.hasHook(b,"post-tool-hook.js")}async installMcp(a,b={}){let c=b.scope??"user",d={command:a.command,args:a.args};a.env&&Object.keys(a.env).length>0&&(d.env=a.env);let e=this.resolveCommand(),f=["mcp","add-json","-s",c,a.name,JSON.stringify(d)];try{return await this.runCli(e,["mcp","remove","-s",c,a.name],b.cwd).catch(()=>{}),await this.runCli(e,f,b.cwd),{ok:!0,method:"cli",detail:`${e} ${f.join(" ")}`}}catch(a){return{ok:!1,method:"cli",detail:`${e} ${f.join(" ")}`,error:a instanceof Error?a.message:String(a)}}}async uninstallMcp(a,b={}){let c=b.scope??"user",d=this.resolveCommand(),e=["mcp","remove","-s",c,a];try{return await this.runCli(d,e,b.cwd),{ok:!0,method:"cli",detail:`${d} ${e.join(" ")}`}}catch(a){return{ok:!1,method:"cli",detail:`${d} ${e.join(" ")}`,error:a instanceof Error?a.message:String(a)}}}async isMcpInstalled(a,b={}){let c=this.resolveCommand();try{return await this.runCli(c,["mcp","get",a],b.cwd,5e3),!0}catch{return!1}}async installSkill(a,c){let f=d.join(this.getConfigDir(),"skills",a);try{if(!b.existsSync(c))return{ok:!1,method:"symlink",detail:f,error:`Source skill dir does not exist: ${c}`};b.mkdirSync(d.dirname(f),{recursive:!0});let a=await b.promises.lstat(f).catch(()=>null);if(a)if(!(a.isSymbolicLink()||(0,e.isWindows)()&&a.isDirectory()))return{ok:!1,method:"symlink",detail:f,error:`Refusing to overwrite non-symlink at ${f}`};else try{let a=await b.promises.readlink(f);if(d.resolve(a)===d.resolve(c))return{ok:!0,method:"symlink",detail:`${f} → ${c} (already)`};await b.promises.unlink(f)}catch{if(!a.isSymbolicLink())return{ok:!1,method:"symlink",detail:f,error:`Refusing to overwrite non-symlink at ${f}`}}let g=(0,e.isWindows)()?"junction":"dir";return await b.promises.symlink(c,f,g),{ok:!0,method:"symlink",detail:`${f} → ${c}`}}catch(a){return{ok:!1,method:"symlink",detail:f,error:a instanceof Error?a.message:String(a)}}}async uninstallSkill(a){let c=d.join(this.getConfigDir(),"skills",a);try{let a=await b.promises.lstat(c).catch(()=>null);if(!a)return{ok:!0,method:"symlink",detail:`${c} (already absent)`};if(!a.isSymbolicLink())return{ok:!1,method:"symlink",detail:c,error:`Refusing to remove non-symlink at ${c}`};return await b.promises.unlink(c),{ok:!0,method:"symlink",detail:c}}catch(a){return{ok:!1,method:"symlink",detail:c,error:a instanceof Error?a.message:String(a)}}}async isSkillInstalled(a,c){let e=d.join(this.getConfigDir(),"skills",a);try{if(!(await b.promises.lstat(e)).isSymbolicLink())return!1;if(!c)return!0;let a=await b.promises.readlink(e),f=d.isAbsolute(a)?a:d.resolve(d.dirname(e),a);return d.resolve(f)===d.resolve(c)}catch{return!1}}async runCli(b,c,d,e=1e4){let{execFile:f}=await a.A(482848),{promisify:g}=await a.A(268548),h=g(f),{stdout:i}=await h(b,c,{cwd:d,timeout:e});return i}async isAvailable(){return null!==await this.getVersion()}async getVersion(){try{let{execFile:b}=await a.A(144264),{promisify:c}=await a.A(534777),{resolveSpawnTarget:d}=await a.A(889618),e=c(b),f=await d(this.resolveCommand(),["--version"]),{stdout:g}=await e(f.command,f.args,{timeout:5e3});return g.trim()||null}catch{return null}}async getModels(){return g}getConfigDir(){return d.join(c.homedir(),".claude")}getSettingsPath(){return d.join(this.getConfigDir(),"settings.json")}getSessionsDir(){return d.join(this.getConfigDir(),"projects")}getApiKeyInfo(){return{envVar:"ANTHROPIC_API_KEY",required:!1}}buildHelloProbeArgs(a){return{command:this.resolveCommand(),args:["--print",a,"--output-format","stream-json","--verbose"]}}resolveCommand(){if(process.env.CLAUDE_CODE_PATH)return process.env.CLAUDE_CODE_PATH;if((0,e.isWindows)()){let a=(0,e.resolveCommandPathSync)("claude-code");if("claude-code"!==a)return a}return(0,e.resolveCommandPathSync)("claude")}readSettings(){try{return JSON.parse(b.readFileSync(this.getSettingsPath(),"utf-8"))}catch{return{}}}writeSettings(a){let c=this.getConfigDir();b.existsSync(c)||b.mkdirSync(c,{recursive:!0}),b.writeFileSync(this.getSettingsPath(),JSON.stringify(a,null,2),"utf-8")}getHookArray(a,b){let c=a[b];return Array.isArray(c)?c:[]}hasHook(a,b){return a.some(a=>a.hooks?.some(a=>a.command?.includes(b)))}}],52350)},925886,a=>{"use strict";var b=a.i(815429),c=a.i(761469),d=a.i(188139);async function e(a){return c.db.agentPrompt.findMany({where:a?{OR:[{workspaceId:a},{workspaceId:null}]}:{},orderBy:[{isDefault:"desc"},{name:"asc"}]})}async function f(a){return c.db.agentPrompt.findUnique({where:{id:a}})}async function g(a){if(a.content.length>1e5)throw Error("Prompt content exceeds maximum length of 100000 characters");let b=await c.db.agentPrompt.create({data:a});return(0,d.revalidatePath)("/workspaces"),(0,d.revalidatePath)("/settings"),b}async function h(a,b){if(void 0!==b.content&&b.content.length>1e5)throw Error("Prompt content exceeds maximum length of 100000 characters");let e=await c.db.agentPrompt.update({where:{id:a},data:b});return(0,d.revalidatePath)("/workspaces"),(0,d.revalidatePath)("/settings"),e}async function i(a){await c.db.agentPrompt.delete({where:{id:a}}),(0,d.revalidatePath)("/workspaces"),(0,d.revalidatePath)("/settings")}async function j(a,b){let e=await c.db.$transaction(async c=>(await c.agentPrompt.updateMany({where:b?{workspaceId:b,isDefault:!0}:{isDefault:!0},data:{isDefault:!1}}),c.agentPrompt.update({where:{id:a},data:{isDefault:!0}})));return(0,d.revalidatePath)("/workspaces"),(0,d.revalidatePath)("/settings"),e}(0,a.i(630048).ensureServerEntryExports)([e,f,g,h,i,j]),(0,b.registerServerReference)(e,"40cbc9a90bd2cab84d944236a390d052673456329c",null),(0,b.registerServerReference)(f,"4078b05ecca467235acbc0b60e68098bb0ffc54759",null),(0,b.registerServerReference)(g,"40f0d16177386b4a3ee18b4ce655f94f294cba2f69",null),(0,b.registerServerReference)(h,"60ad079915107a9cdd95190836ff2d1bfc9fc3d793",null),(0,b.registerServerReference)(i,"406b261732ccf71dbb2fb0f2ac3d1ce96293b1941a",null),(0,b.registerServerReference)(j,"60ca2e4cb81af37905315098a253d09502673709cb",null),a.s(["createPrompt",0,g,"deletePrompt",0,i,"getPrompts",0,e,"setDefaultPrompt",0,j,"updatePrompt",0,h])},76052,a=>{a.v(b=>Promise.all(["server/chunks/ssr/src_lib_01sr8_t._.js"].map(b=>a.l(b))).then(()=>b(492067)))},98813,a=>{a.v(a=>Promise.resolve().then(()=>a(962620)))},507502,a=>{a.v(b=>Promise.all(["server/chunks/ssr/src_lib_worktree_ts_06cucy3._.js"].map(b=>a.l(b))).then(()=>b(845427)))},752453,a=>{a.v(b=>Promise.all(["server/chunks/ssr/_0j5.ig_._.js"].map(b=>a.l(b))).then(()=>b(897667)))},482848,a=>{a.v(a=>Promise.resolve().then(()=>a(874533)))},268548,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[externals]_node_util_0xr.y7p._.js"].map(b=>a.l(b))).then(()=>b(812057)))},144264,a=>{a.v(a=>Promise.resolve().then(()=>a(233405)))},534777,a=>{a.v(a=>Promise.resolve().then(()=>a(224361)))},889618,a=>{a.v(a=>Promise.resolve().then(()=>a(163812)))},195404,a=>{a.v(b=>Promise.all(["server/chunks/ssr/src_lib_fts_ts_01m1thq._.js"].map(b=>a.l(b))).then(()=>b(835032)))}];
|
|
46
|
-
|
|
47
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__07xkj1s._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[750227,(a,b,c)=>{b.exports=a.x("node:path",()=>require("node:path"))},10390,a=>{"use strict";var b=a.i(421992);a.s(["ChevronRight",()=>b.default])},912868,a=>{"use strict";let b=(0,a.i(711796).default)("chevron-left",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);a.s(["ChevronLeft",0,b],912868)},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)},161664,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],161664)},157016,a=>{"use strict";var b=a.i(780410);let c=(0,b.createServerReference)("403fb9aba477474068caa46d6c3fa942de05b4edb6",b.callServer,void 0,b.findSourceMapURL,"getConfigValues");a.s(["getConfigValues",0,c])},412783,22761,a=>{"use strict";var b=a.i(728778),c=a.i(368114);a.s(["Label",0,function({className:a,...d}){return(0,b.jsx)("label",{"data-slot":"label",className:(0,c.cn)("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",a),...d})}],412783);let d=(0,a.i(711796).default)("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);a.s(["Copy",0,d],22761)},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)},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)},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)},682092,71296,a=>{"use strict";var b=a.i(780410);let c=(0,b.createServerReference)("401a0b53b020a460f0aed044a7c1bf9ac975a217b1",b.callServer,void 0,b.findSourceMapURL,"openInFileManager");a.s(["openInFileManager",0,c],682092);let d=(0,b.createServerReference)("4004a88ffb826fc2973f7a4e6d046ea21a468a9e8f",b.callServer,void 0,b.findSourceMapURL,"openInEditor");a.s(["openInEditor",0,d],71296)},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)},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)},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)},963326,a=>{"use strict";let b=(0,a.i(711796).default)("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);a.s(["ExternalLink",0,b],963326)},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)},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])},128483,a=>{"use strict";var b=a.i(780410);let c=(0,b.createServerReference)("40cbc9a90bd2cab84d944236a390d052673456329c",b.callServer,void 0,b.findSourceMapURL,"getPrompts");a.s(["getPrompts",0,c])},523824,656830,a=>{"use strict";var b=a.i(780410);let c=(0,b.createServerReference)("40808e939d61b3b4c422357a6b8a5b3252b0aba477",b.callServer,void 0,b.findSourceMapURL,"createNote");a.s(["createNote",0,c],523824);let d=(0,b.createServerReference)("40ee93a435dd29994896bf09f8c012a48e677ebb69",b.callServer,void 0,b.findSourceMapURL,"deleteNote");a.s(["deleteNote",0,d],656830)},324954,a=>{"use strict";let b=(0,a.i(711796).default)("upload",[["path",{d:"M12 3v12",key:"1x0j5s"}],["path",{d:"m17 8-5-5-5 5",key:"7q97r8"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}]]);a.s(["Upload",0,b],324954)},8159,a=>{"use strict";var b=a.i(780410);let c=(0,b.createServerReference)("40394a0413f0d5dec52a3df5c1f308c14f8e7e37bd",b.callServer,void 0,b.findSourceMapURL,"uploadAsset");a.s(["uploadAsset",0,c])},507727,a=>{"use strict";var b=a.i(780410);let c=(0,b.createServerReference)("400b9827f2168457cf77a8cafb21e39e0530ea01ff",b.callServer,void 0,b.findSourceMapURL,"deleteAsset");a.s(["deleteAsset",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})]})}])},471090,944278,a=>{"use strict";var b=a.i(780410);let c=(0,b.createServerReference)("40829b5233ef6d9c038265e2c0cf031611b19ce0c1",b.callServer,void 0,b.findSourceMapURL,"stopPtyExecution");a.s(["stopPtyExecution",0,c],471090);let d=(0,b.createServerReference)("60a458c91694bd9ea4bf4808cb9fc0b7057cf2adb1",b.callServer,void 0,b.findSourceMapURL,"resumePtyExecution");a.s(["resumePtyExecution",0,d],944278)},567583,a=>{"use strict";var b=a.i(780410);let c=(0,b.createServerReference)("7c3ecbc1dac60ca7f7626b27efdf00297a98c2b5f3",b.callServer,void 0,b.findSourceMapURL,"startPtyExecution");a.s(["startPtyExecution",0,c])},574046,a=>{a.v(b=>Promise.all(["server/chunks/ssr/04y0_streamdown_dist_highlighted-body-OFNGDK62_0dm8t_v.js"].map(b=>a.l(b))).then(()=>b(514138)))},170967,a=>{a.v(b=>Promise.all(["server/chunks/ssr/04y0_streamdown_dist_mermaid-GHXKKRXX_0oxtju0.js"].map(b=>a.l(b))).then(()=>b(729004)))}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__081e5n~._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[432201,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"InvariantError",{enumerable:!0,get:function(){return d}});class d extends Error{constructor(a,b){super(`Invariant: ${a.endsWith(".")?a:a+"."} This is a bug in Next.js.`,b),this.name="InvariantError"}}},319997,a=>{"use strict";let b;var c=a.i(750227),d=a.i(660526),e=a.i(902157);function f(){return b||(b=process.env.TOWER_DATA_DIR||(0,c.join)((0,d.homedir)(),".tower"),(0,e.existsSync)(b)||(0,e.mkdirSync)(b,{recursive:!0})),b}function g(){return(0,c.join)(f(),"storage")}function h(){return(0,c.join)(f(),"storage-location")}function i(){try{let a=(0,e.readFileSync)(h(),"utf-8").trim();return a.length>0?a:null}catch{return null}}a.s(["getBackupsDir",0,function(){let a=(0,c.join)(f(),"backups");return(0,e.existsSync)(a)||(0,e.mkdirSync)(a,{recursive:!0}),a},"getDatabaseDir",0,function(){let a=(0,c.join)(f(),"database");return(0,e.existsSync)(a)||(0,e.mkdirSync)(a,{recursive:!0}),a},"getDefaultStorageDir",0,g,"getExtensionsDir",0,function(){let a=(0,c.join)(f(),"extensions");return(0,e.existsSync)(a)||(0,e.mkdirSync)(a,{recursive:!0}),a},"getStorageDir",0,function(){let a=process.env.TOWER_STORAGE_DIR||i(),b=a&&a.length>0?a:g();return(0,e.existsSync)(b)||(0,e.mkdirSync)(b,{recursive:!0}),b},"getTowerDbFilePath",0,function(){let a=process.env.TOWER_DATA_DIR||(0,c.join)((0,d.homedir)(),".tower");return(0,c.join)(a,"database","tower.db")},"getTowerDir",0,f,"readStoragePointer",0,i,"writeStoragePointer",0,function(a){let b=h();null===a?(0,e.rmSync)(b,{force:!0}):(0,e.writeFileSync)(b,a,"utf-8")}])},761469,a=>{"use strict";var b=a.i(933919),c=a.i(319997);let d=globalThis.prisma??new b.PrismaClient({datasourceUrl:`file:${(0,c.getTowerDbFilePath)()}`,log:[]}),e=!1;async function f(){return e||((0,c.getDatabaseDir)(),await d.$connect(),await d.$queryRaw`PRAGMA journal_mode=WAL`,await d.$queryRaw`PRAGMA busy_timeout=5000`,e=!0),d}async function g(){try{await d.$disconnect()}catch{}e=!1,await f()}process.on("SIGTERM",()=>{d.$disconnect().catch(()=>{})}),process.on("SIGINT",()=>{d.$disconnect().catch(()=>{})}),a.s(["db",0,d,"resetDbConnection",0,g])},750227,(a,b,c)=>{b.exports=a.x("node:path",()=>require("node:path"))},902157,(a,b,c)=>{b.exports=a.x("node:fs",()=>require("node:fs"))},660526,(a,b,c)=>{b.exports=a.x("node:os",()=>require("node:os"))},933919,(a,b,c)=>{b.exports=a.x("@prisma/client-9249dd53ac5b6a44",()=>require("@prisma/client-9249dd53ac5b6a44"))},874533,(a,b,c)=>{b.exports=a.x("node:child_process",()=>require("node:child_process"))},912714,(a,b,c)=>{b.exports=a.x("node:fs/promises",()=>require("node:fs/promises"))},163812,a=>{"use strict";var b=a.i(902157),c=a.i(874533),d=a.i(750227);function e(a=process.platform){return"win32"===a}function f(a){let b=a.replace(/\r\n|\r|\n/g," ");if(!b.length)return'""';let c=b.replace(/"/g,'""');return/[\s"&<>|^()]/.test(c)?`"${c}"`:c}let g=["CLAUDECODE","CLAUDE_CODE_ENTRYPOINT","CLAUDE_CODE_SESSION","CLAUDE_CODE_PARENT_SESSION"];async function h(a,b={}){let c=b.cwd??process.cwd(),f=b.env??process.env,g=b.platform??process.platform;if(a.includes("/")||a.includes("\\")){let b=d.default.isAbsolute(a)?a:d.default.resolve(c,a);return await m(b,g)?b:null}let i=f.PATH??f.Path??"",j=e(g)?";":":",k=i.split(j).filter(Boolean),l=e(g)?(f.PATHEXT??".EXE;.CMD;.BAT;.COM").split(";").filter(Boolean):[""],n=e(g)&&d.default.extname(a).length>0;for(let b of k)for(let c of e(g)?n?[d.default.join(b,a)]:l.map(c=>d.default.join(b,`${a}${c}`)):[d.default.join(b,a)])if(await m(c,g))return c;return null}let i=a=>(0,c.execSync)(a,{encoding:"utf-8",timeout:5e3,stdio:["ignore","pipe","ignore"]});function j(a,b=process.platform,f=i){if(d.default.extname(a)||a.includes("/")||a.includes("\\"))return a;if(!e(b)){try{let b=(0,c.execFileSync)("which",[a],{encoding:"utf-8",timeout:5e3,stdio:["ignore","pipe","ignore"]}).trim();if(b)return b}catch{}return a}try{let b=f(`where ${a}`).trim().split("\n").map(a=>a.trim()).filter(Boolean),c=b.find(a=>/\.(cmd|bat|exe)$/i.test(a));if(c)return c;if(b.length>0)return b[0]}catch{}return a}async function k(a,b,c={}){let d=c.env??process.env,e=c.platform??process.platform;return l(await h(a,c)??a,b,d,e)}function l(a,b,c,g){if(!e(g))return{command:a,args:b};let h=d.default.extname(a).toLowerCase();return".cmd"===h||".bat"===h||".com"===h?{command:c.ComSpec||"cmd.exe",args:["/d","/s","/c",[f(a),...b.map(f)].join(" ")]}:{command:a,args:b}}async function m(a,c=process.platform){try{return await b.promises.access(a,e(c)?b.constants.F_OK:b.constants.X_OK),!0}catch{return!1}}async function n(a=process.platform){return e(a)?p():o()}async function o(){try{let a=await b.promises.readFile("/etc/shells","utf-8"),c=[],e=new Map;for(let b of a.split("\n")){let a=b.replace(/#.*/,"").trim();if(!a||!a.startsWith("/")||!await m(a))continue;let f=d.default.basename(a),g=e.get(f)??0;e.set(f,g+1),g>0&&(f=`${f} (${g+1})`),c.push({name:f,path:a})}return c}catch{let a=[];for(let b of["/bin/zsh","/bin/bash","/bin/sh"])await m(b)&&a.push({name:d.default.basename(b),path:b});return a}}async function p(){let a=[],b=[],c=await h("git",{platform:"win32"});if(c){let a=d.default.resolve(d.default.dirname(c),"..","..");b.push(d.default.join(a,"bin","bash.exe"),d.default.join(a,"usr","bin","bash.exe"))}for(let a of[process.env.ProgramW6432,process.env.ProgramFiles,process.env["ProgramFiles(x86)"],process.env.LocalAppData?d.default.join(process.env.LocalAppData,"Programs"):null].filter(Boolean))b.push(d.default.join(a,"Git","bin","bash.exe"),d.default.join(a,"Git","usr","bin","bash.exe"));let e=process.env.USERPROFILE??"";for(let c of(e&&b.push(d.default.join(e,"scoop","apps","git","current","bin","bash.exe")),process.env.CLAUDE_CODE_GIT_BASH_PATH&&b.unshift(process.env.CLAUDE_CODE_GIT_BASH_PATH),b))if(await m(c,"win32")){a.push({name:"Git Bash",path:c});break}let f=await h("pwsh",{platform:"win32"});f&&a.push({name:"PowerShell",path:f});let g=process.env.windir??"C:\\WINDOWS",i=d.default.join(g,"System32","WindowsPowerShell","v1.0","powershell.exe");await m(i,"win32")&&a.push({name:"Windows PowerShell",path:i});let j=process.env.ComSpec??d.default.join(g,"System32","cmd.exe");return await m(j,"win32")&&a.push({name:"Command Prompt",path:j}),a}let q=[{name:"Terminal",bundleName:"Terminal"},{name:"iTerm2",bundleName:"iTerm"},{name:"Warp",bundleName:"Warp"},{name:"Alacritty",bundleName:"Alacritty"},{name:"WezTerm",bundleName:"WezTerm"},{name:"kitty",bundleName:"kitty"},{name:"Hyper",bundleName:"Hyper"}];async function r(a=process.platform){if("darwin"===a){let b=[];for(let c of q){let d=await m(`/Applications/${c.bundleName}.app`,a);b.push({name:c.name,value:c.bundleName,installed:d})}return b}if(e(a)){let b=[],c=await h("wt",{platform:a});return c&&b.push({name:"Windows Terminal",value:c,installed:!0}),b}return[]}let s=[{name:"VS Code",command:"code"},{name:"VS Code Insiders",command:"code-insiders"},{name:"Cursor",command:"cursor"},{name:"Windsurf",command:"windsurf"},{name:"Zed",command:"zed"},{name:"Sublime Text",command:"subl"},{name:"IntelliJ IDEA",command:"idea"},{name:"WebStorm",command:"webstorm"},{name:"PyCharm",command:"pycharm"},{name:"GoLand",command:"goland"},{name:"RubyMine",command:"rubymine"},{name:"PhpStorm",command:"phpstorm"},{name:"CLion",command:"clion"},{name:"Rider",command:"rider"}],t={code:{darwin:["/Applications/Visual Studio Code.app/Contents/Resources/app/bin/code"],win32:["%LOCALAPPDATA%\\Programs\\Microsoft VS Code\\bin\\code.cmd","%ProgramFiles%\\Microsoft VS Code\\bin\\code.cmd"]},"code-insiders":{darwin:["/Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/bin/code-insiders"],win32:["%LOCALAPPDATA%\\Programs\\Microsoft VS Code Insiders\\bin\\code-insiders.cmd","%ProgramFiles%\\Microsoft VS Code Insiders\\bin\\code-insiders.cmd"]},cursor:{darwin:["/Applications/Cursor.app/Contents/Resources/app/bin/cursor"],win32:["%LOCALAPPDATA%\\Programs\\cursor\\resources\\app\\bin\\cursor.cmd"]},windsurf:{darwin:["/Applications/Windsurf.app/Contents/Resources/app/bin/windsurf"],win32:["%LOCALAPPDATA%\\Programs\\Windsurf\\bin\\windsurf.cmd"]},zed:{darwin:["/Applications/Zed.app/Contents/MacOS/cli"]},subl:{darwin:["/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl"],win32:["%ProgramFiles%\\Sublime Text\\subl.exe","%ProgramFiles%\\Sublime Text 3\\subl.exe"]},idea:{darwin:["/Applications/IntelliJ IDEA.app/Contents/MacOS/idea","/Applications/IntelliJ IDEA CE.app/Contents/MacOS/idea"]},webstorm:{darwin:["/Applications/WebStorm.app/Contents/MacOS/webstorm"]},pycharm:{darwin:["/Applications/PyCharm.app/Contents/MacOS/pycharm","/Applications/PyCharm CE.app/Contents/MacOS/pycharm"]},goland:{darwin:["/Applications/GoLand.app/Contents/MacOS/goland"]},rubymine:{darwin:["/Applications/RubyMine.app/Contents/MacOS/rubymine"]},phpstorm:{darwin:["/Applications/PhpStorm.app/Contents/MacOS/phpstorm"]},clion:{darwin:["/Applications/CLion.app/Contents/MacOS/clion"]},rider:{darwin:["/Applications/Rider.app/Contents/MacOS/rider"]}};async function u(a,b={}){let c=b.platform??process.platform,d=b.env??process.env,f=await h(a,b);if(f)return f;for(let b of t[a]?.[c]??[]){let a=e(c)?function(a,b){return a.replace(/%([^%]+)%/g,(a,c)=>{let d=b[c];if(void 0!==d)return d;let e=Object.keys(b).find(a=>a.toLowerCase()===c.toLowerCase());return e?b[e]??a:a})}(b,d):b;if(await m(a,c))return a}return null}async function v(a=process.platform){let b=[];for(let c of s){let d=!!await u(c.command,{platform:a});b.push({name:c.name,command:c.command,installed:d})}return b}a.s(["detectEditors",0,v,"detectShells",0,n,"detectTerminalApps",0,r,"ensurePathInEnv",0,function(a,b=process.platform){let c=e(b)?"Path":"PATH";return(a.PATH??a.Path??"").length>0?a:{...a,[c]:function(a=process.platform){return e(a)?"C:\\Windows\\System32;C:\\Windows;C:\\Windows\\System32\\Wbem":"/usr/local/bin:/opt/homebrew/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin"}(b)}},"isWindows",0,e,"resolveCommandPathSync",0,j,"resolveEditorBinary",0,u,"resolveSpawnTarget",0,k,"resolveSpawnTargetSync",0,function(a,b,c=process.platform,d){return l(j(a,c,d),b,process.env,c)},"stripClaudeNestingEnv",0,function(a){let b={...a};for(let a of g)delete b[a];return b},"wrapShellCommand",0,function(a,b=process.platform,c=process.env){return e(b)?{command:c.ComSpec||"cmd.exe",args:["/d","/s","/c",a]}:{command:"/bin/sh",args:["-c",a]}}])}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__08tzbfh._.js.map
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
module.exports=[495370,a=>{"use strict";var b=a.i(815429),c=a.i(761469),d=a.i(188139),e=a.i(496877);async function f(a){return c.db.label.findMany({where:{OR:[{isBuiltin:!0},{workspaceId:a}]},orderBy:[{isBuiltin:"desc"},{name:"asc"}]})}async function g(a){let b=e.createLabelSchema.parse(a),f=await c.db.label.create({data:{name:b.name,color:b.color,workspaceId:b.workspaceId}});return(0,d.revalidatePath)("/workspaces"),f}async function h(a){let b=await c.db.label.findUnique({where:{id:a}});if(!b)throw Error("Label not found");if(b.isBuiltin)throw Error("Cannot delete builtin labels");await c.db.label.delete({where:{id:a}}),(0,d.revalidatePath)("/workspaces")}async function i(a,b){await c.db.$transaction(async c=>{await c.taskLabel.deleteMany({where:{taskId:a}}),b.length>0&&await c.taskLabel.createMany({data:b.map(b=>({taskId:a,labelId:b}))})}),(0,d.revalidatePath)("/workspaces")}async function j(a){return(await c.db.taskLabel.findMany({where:{taskId:a},include:{label:!0}})).map(a=>a.label)}(0,a.i(630048).ensureServerEntryExports)([f,g,h,i,j]),(0,b.registerServerReference)(f,"406dd254cc7eb451737c80331e7288eb336e7df1a0",null),(0,b.registerServerReference)(g,"40887bdb36e2122964eea1db15e0be1868c081c4da",null),(0,b.registerServerReference)(h,"400ce9acdefe7899d80e3a397501626b8ceb77ed52",null),(0,b.registerServerReference)(i,"606dd68554dfa87ae9b2332be87990ee913d22c3ad",null),(0,b.registerServerReference)(j,"4015b8e64b3d2c9b6979fe735ab480dbb1a5608132",null),a.s(["createLabel",0,g,"deleteLabel",0,h,"getLabelsForWorkspace",0,f,"getTaskLabels",0,j,"setTaskLabels",0,i])},287068,a=>{"use strict";var b=a.i(761469);function c(a,b){return{id:a.note_id,type:"note",title:a.title,subtitle:`${a.workspace_name} / ${a.project_name}`,navigateTo:`/workspaces/${a.workspaceId}/notes?projectId=${a.projectId}`,snippet:a.content?a.content.slice(0,b):void 0}}async function d(a,e="task",f){if(!a.trim())return[];let g=a.trim(),{resultLimit:h,allModeCap:i,snippetLength:j}=f;if("all"===e){let[a,b,c,e,h]=await Promise.allSettled([d(g,"task",f),d(g,"project",f),d(g,"repository",f),d(g,"note",f),d(g,"asset",f)]),j=a=>"fulfilled"===a.status?a.value.slice(0,i):[];return[...j(a),...j(b),...j(c),...j(e),...j(h)]}if("task"===e)return(await b.db.task.findMany({where:{OR:[{title:{contains:g}},{description:{contains:g}}]},include:{project:{include:{workspace:!0}}},take:h,orderBy:{updatedAt:"desc"}})).map(a=>{let b="DONE"===a.status||"CANCELLED"===a.status,c=a.project.workspaceId;return{id:a.id,type:"task",title:a.title,subtitle:`${a.project.workspace.name} / ${a.project.name}`,navigateTo:b?`/workspaces/${c}/archive?projectId=${a.projectId}`:`/workspaces/${c}?projectId=${a.projectId}`}});if("project"===e)return(await b.db.project.findMany({where:{OR:[{name:{contains:g}},{alias:{contains:g}},{description:{contains:g}}]},include:{workspace:!0},take:h,orderBy:{updatedAt:"desc"}})).map(a=>({id:a.id,type:"project",title:a.alias?`${a.name} (${a.alias})`:a.name,subtitle:a.workspace.name,navigateTo:`/workspaces/${a.workspaceId}?projectId=${a.id}`}));if("repository"===e)return(await b.db.repository.findMany({where:{OR:[{name:{contains:g}},{path:{contains:g}}]},include:{project:{include:{workspace:!0}}},take:h})).map(a=>({id:a.id,type:"repository",title:a.name,subtitle:`${a.project.workspace.name} / ${a.project.name} \xb7 ${a.branch}`,navigateTo:`/workspaces/${a.project.workspaceId}?projectId=${a.projectId}`}));if("note"===e){if(g.length<3)return(await b.db.$queryRawUnsafe(`SELECT n.id as note_id, n.title, n.content,
|
|
2
|
-
n."projectId", p."workspaceId", p.name as project_name, w.name as workspace_name
|
|
3
|
-
FROM "ProjectNote" n
|
|
4
|
-
JOIN "Project" p ON p.id = n."projectId"
|
|
5
|
-
JOIN "Workspace" w ON w.id = p."workspaceId"
|
|
6
|
-
WHERE n.title LIKE ? OR n.content LIKE ?
|
|
7
|
-
LIMIT ?`,`%${g}%`,`%${g}%`,h)).map(a=>c(a,j));try{return(await b.db.$queryRawUnsafe(`SELECT f.note_id, f.title, f.content,
|
|
8
|
-
n."projectId", p."workspaceId", p.name as project_name, w.name as workspace_name
|
|
9
|
-
FROM notes_fts f
|
|
10
|
-
JOIN "ProjectNote" n ON n.id = f.note_id
|
|
11
|
-
JOIN "Project" p ON p.id = n."projectId"
|
|
12
|
-
JOIN "Workspace" w ON w.id = p."workspaceId"
|
|
13
|
-
WHERE f.notes_fts MATCH ?
|
|
14
|
-
ORDER BY rank
|
|
15
|
-
LIMIT ?`,g,h)).map(a=>c(a,j))}catch{return(await b.db.$queryRawUnsafe(`SELECT n.id as note_id, n.title, n.content,
|
|
16
|
-
n."projectId", p."workspaceId", p.name as project_name, w.name as workspace_name
|
|
17
|
-
FROM "ProjectNote" n
|
|
18
|
-
JOIN "Project" p ON p.id = n."projectId"
|
|
19
|
-
JOIN "Workspace" w ON w.id = p."workspaceId"
|
|
20
|
-
WHERE n.title LIKE ? OR n.content LIKE ?
|
|
21
|
-
LIMIT ?`,`%${g}%`,`%${g}%`,h)).map(a=>c(a,j))}}return"asset"===e?(await b.db.projectAsset.findMany({where:{OR:[{filename:{contains:g}},{description:{contains:g}}]},include:{project:{include:{workspace:!0}}},take:h,orderBy:{createdAt:"desc"}})).map(a=>({id:a.id,type:"asset",title:a.filename,subtitle:`${a.project.workspace.name} / ${a.project.name}`,navigateTo:`/workspaces/${a.project.workspaceId}/assets?projectId=${a.projectId}`,snippet:a.description||void 0})):[]}a.s(["search",0,d])},396904,a=>a.a(async(b,c)=>{try{var d=a.i(815429),e=a.i(287068),f=a.i(980999),g=a.i(630048),h=b([f]);async function i(a,b="task"){let c=await (0,f.getConfigValues)(["search.resultLimit","search.allModeCap","search.snippetLength"]);return(0,e.search)(a,b,{resultLimit:c["search.resultLimit"]??20,allModeCap:c["search.allModeCap"]??5,snippetLength:c["search.snippetLength"]??80})}[f]=h.then?(await h)():h,(0,g.ensureServerEntryExports)([i]),(0,d.registerServerReference)(i,"600fe4665d4e6fc8cd80863079f1206fc73a4eb6ed",null),a.s(["globalSearch",0,i]),c()}catch(a){c(a)}},!1),101844,a=>{"use strict";var b=a.i(815429),c=a.i(924868),d=a.i(522734),e=a.i(814747),f=a.i(761469),g=a.i(188139),h=a.i(630048);async function i(b){if(!b||"string"!=typeof b)return{safe:!1,reason:"无效的项目 ID"};let g=await f.db.project.findUnique({where:{id:b}});if(!g||!g.localPath)return{safe:!1,reason:"项目不存在或未设置本地路径"};if((await f.db.taskExecution.findMany({where:{task:{projectId:b},status:"RUNNING"},select:{id:!0}})).length>0)return{safe:!1,reason:"该项目有正在运行的任务执行,请先停止所有执行"};let h=await f.db.task.findMany({where:{projectId:b},select:{id:!0}}),{getSession:i}=await a.A(98813);for(let a of h)if(void 0!==i(a.id))return{safe:!1,reason:"该项目有活跃的终端会话,请先关闭"};let j=e.default.join(g.localPath,".worktrees");if((0,d.existsSync)(j))try{if((await (0,c.readdir)(j)).length>0)return{safe:!1,reason:"该项目有活跃的 Git Worktree,请先清理"}}catch{}return{safe:!0}}async function j(b,h){if(!b||"string"!=typeof b)return{success:!1,error:"无效的项目 ID"};if(!h||"string"!=typeof h||!e.default.isAbsolute(h))return{success:!1,error:"目标路径必须是非空的绝对路径"};let i=await f.db.project.findUnique({where:{id:b}});if(!i||!i.localPath)return{success:!1,error:"项目不存在或未设置本地路径"};let j=i.localPath;if(h===j)return{success:!1,error:"源路径和目标路径相同"};if((await f.db.taskExecution.findMany({where:{task:{projectId:b},status:"RUNNING"},select:{id:!0}})).length>0)return{success:!1,error:"该项目有正在运行的任务执行,请先停止所有执行"};let k=await f.db.task.findMany({where:{projectId:b},select:{id:!0}}),{getSession:l}=await a.A(98813);for(let a of k)if(void 0!==l(a.id))return{success:!1,error:"该项目有活跃的终端会话,请先关闭"};let m=e.default.join(j,".worktrees");if((0,d.existsSync)(m))try{if((await (0,c.readdir)(m)).length>0)return{success:!1,error:"该项目有活跃的 Git Worktree,请先清理"}}catch{}if((0,d.existsSync)(h))try{if((await (0,c.readdir)(h)).length>0)return{success:!1,error:"目标路径已存在且不为空"}}catch{return{success:!1,error:"目标路径已存在且不为空"}}let n=e.default.dirname(h);try{await (0,c.mkdir)(n,{recursive:!0})}catch(a){if("EACCES"===a.code||"EPERM"===a.code)return{success:!1,error:`无权限创建父目录 ${n} — 请检查 Git 路径映射规则的模板是否漏了 "~/" 前缀`};if("EROFS"===a.code)return{success:!1,error:`父目录所在文件系统只读:${n}`};return{success:!1,error:`创建父目录失败:${a.message||a.code||"未知错误"}`}}try{await (0,c.rename)(j,h)}catch(a){if("EXDEV"===a.code)return{success:!1,error:"源路径和目标路径不在同一文件系统,不支持跨设备迁移"};if("EACCES"===a.code||"EPERM"===a.code)return{success:!1,error:`无权限移动到 ${h}`};return{success:!1,error:a.message||"文件系统操作失败"}}return await f.db.project.update({where:{id:b},data:{localPath:h}}),(0,g.revalidatePath)("/workspaces"),{success:!0}}let k=`分析这个项目目录,生成一段简短的 Markdown 项目描述。
|
|
22
|
-
|
|
23
|
-
读取 package.json、README.md 等关键文件,然后概括:
|
|
24
|
-
|
|
25
|
-
**技术栈:** 一句话列出主要语言、框架、关键库
|
|
26
|
-
**定位:** 一句话说明项目是什么
|
|
27
|
-
**核心模块:** 2-3 个关键模块,每个一句话
|
|
28
|
-
|
|
29
|
-
要求:
|
|
30
|
-
- 总字数不超过 500 字
|
|
31
|
-
- 用简洁的 Markdown(加粗标签 + 短句),不要用 ## 大标题和表格
|
|
32
|
-
- 不要罗列每个文件/目录,只说关键信息
|
|
33
|
-
- 中文输出`,l=`Analyze this project directory and generate a brief Markdown project description.
|
|
34
|
-
|
|
35
|
-
Read package.json, README.md and other key files, then summarize:
|
|
36
|
-
|
|
37
|
-
**Tech Stack:** One sentence listing primary languages, frameworks, and key libraries
|
|
38
|
-
**Overview:** One sentence describing what this project is
|
|
39
|
-
**Core Modules:** 2-3 key modules, one sentence each
|
|
40
|
-
|
|
41
|
-
Requirements:
|
|
42
|
-
- Keep it under 1000 words
|
|
43
|
-
- Use concise Markdown (bold labels + short sentences), no ## headings or tables
|
|
44
|
-
- Don't list every file/directory, only key information
|
|
45
|
-
- Output in English`;async function m(b,c="zh"){if(!b||"string"!=typeof b)throw Error("无效的本地路径");if(b.startsWith("~"))throw Error("不支持 ~ 别名,请提供绝对路径");if(!e.default.isAbsolute(b))throw Error("本地路径必须为绝对路径");let{aiQuery:d}=await a.A(752453),f=await d("en"===c?l:k,b,{maxTurns:10,tools:["Read","Glob"],allowedTools:["Read","Glob"]});if(!f)throw Error("AI 分析未返回结果");return f.length>2e3?f.slice(0,2e3).trimEnd()+"\n\n...":f}(0,h.ensureServerEntryExports)([i,j,m]),(0,b.registerServerReference)(i,"4060c6d6aaff8835d0f5ade772b0632192ac0a9430",null),(0,b.registerServerReference)(j,"60798d486148e4a4b63876f699e382bde537c86c7a",null),(0,b.registerServerReference)(m,"60474ed8af66d6d5d3b38dc4ead39b20409a155dbb",null),a.s(["analyzeProjectDirectory",0,m,"checkMigrationSafety",0,i,"migrateProjectPath",0,j])},859071,a=>{"use strict";a.i(666680);var b=a.i(902157),c=a.i(750227),d=a.i(319997);a.s(["ensureAssetsDir",0,function(a){let e=function(a){let b=c.join((0,d.getStorageDir)(),"assets",a);if(!b.startsWith((0,d.getStorageDir)()+c.sep))throw Error("Path traversal detected");return b}(a);return b.mkdirSync(e,{recursive:!0}),e}])},97397,a=>a.a(async(b,c)=>{try{var d=a.i(815429),e=a.i(902157),f=a.i(750227),g=a.i(75681),h=a.i(761469),i=a.i(188139),j=a.i(859071),k=a.i(980999),l=a.i(630048),m=b([k]);[k]=m.then?(await m)():m;let t=g.z.object({filename:g.z.string().min(1).max(255),path:g.z.string().min(1),mimeType:g.z.string().max(100).optional(),size:g.z.number().int().nonnegative().optional(),projectId:g.z.string().min(1),description:g.z.string().max(500).optional(),taskId:g.z.string().optional()});async function n(a){let b=t.parse(a);(0,j.ensureAssetsDir)(b.projectId);let c=await h.db.projectAsset.create({data:{...b,taskId:b.taskId??null}});return(0,i.revalidatePath)("/workspaces"),c}async function o(a){let b=await h.db.projectAsset.findUnique({where:{id:a}});b?.path&&await e.promises.unlink(b.path).catch(()=>{}),await h.db.projectAsset.delete({where:{id:a}}),(0,i.revalidatePath)("/workspaces")}async function p(a){return h.db.projectAsset.findMany({where:{projectId:a},orderBy:{createdAt:"desc"},include:{task:{select:{id:!0,title:!0,status:!0,priority:!0,description:!0,createdAt:!0,labels:{include:{label:!0}},executions:{orderBy:{createdAt:"desc"},take:1,select:{summary:!0,status:!0,endedAt:!0}},_count:{select:{assets:!0}}}}}})}async function q(a){return h.db.projectAsset.findMany({where:{taskId:a},orderBy:{createdAt:"desc"}})}async function r(a){return h.db.projectAsset.findUnique({where:{id:a}})}async function s(a){let b=a.get("file"),c=a.get("projectId"),d=a.get("taskId")||void 0;if(!b||!c)throw Error("Missing file or projectId");let g=await (0,k.getConfigValue)("system.maxUploadBytes",0x3200000);if(b.size>g)throw Error(`File too large (max ${Math.round(g/1024/1024)} MB)`);let l=a.get("description")??"";if(!await h.db.project.findUnique({where:{id:c}}))throw Error("Invalid projectId");let m=Buffer.from(await b.arrayBuffer()),o=(0,j.ensureAssetsDir)(c),p=f.basename(b.name);p&&"."!==p&&".."!==p||(p=`upload-${Date.now()}`);let q=f.join(o,p);if(e.existsSync(q)){let a=f.extname(p),b=f.basename(p,a);p=`${b}-${Date.now()}${a}`}let r=f.join(o,p);if(!r.startsWith(o))throw Error("Invalid filename");await e.promises.writeFile(r,m);let s=await n({filename:p,path:r,mimeType:b.type||void 0,size:b.size,projectId:c,description:l||void 0,taskId:d});return(0,i.revalidatePath)("/workspaces"),s}(0,l.ensureServerEntryExports)([n,o,p,q,r,s]),(0,d.registerServerReference)(n,"40e32f65cdca15361e52a1032c47f7b6e4b68d60d6",null),(0,d.registerServerReference)(o,"400b9827f2168457cf77a8cafb21e39e0530ea01ff",null),(0,d.registerServerReference)(p,"40408fbffaaf7905f4ceeb91edc7ae862a8aa1c35a",null),(0,d.registerServerReference)(q,"4044de41c35107216ec541819870d98be7659bd39c",null),(0,d.registerServerReference)(r,"4093d27b0327daa1f08c2584c7d5725b1290999b0b",null),(0,d.registerServerReference)(s,"40394a0413f0d5dec52a3df5c1f308c14f8e7e37bd",null),a.s(["createAsset",0,n,"deleteAsset",0,o,"getAssetById",0,r,"getProjectAssets",0,p,"getTaskAssets",0,q,"uploadAsset",0,s]),c()}catch(a){c(a)}},!1),835032,a=>{"use strict";async function b(a,b){await a.$executeRawUnsafe("DELETE FROM notes_fts WHERE note_id = ?",b.id),await a.$executeRawUnsafe("INSERT INTO notes_fts(note_id, title, content) VALUES (?, ?, ?)",b.id,b.title,b.content)}async function c(a,b){await a.$executeRawUnsafe("DELETE FROM notes_fts WHERE note_id = ?",b)}a.s(["deleteNoteFromFts",0,c,"syncNoteToFts",0,b])},392164,a=>{"use strict";var b=a.i(815429),c=a.i(75681),d=a.i(761469),e=a.i(188139),f=a.i(835032),g=a.i(630048);let h=c.z.object({title:c.z.string().min(1).max(200),content:c.z.string(),category:c.z.string().max(50).optional(),projectId:c.z.string().min(1),taskId:c.z.string().optional()}),i=c.z.object({title:c.z.string().min(1).max(200).optional(),content:c.z.string().optional(),category:c.z.string().max(50).optional()});async function j(a){let b=h.parse(a),c=await d.db.projectNote.create({data:{title:b.title,content:b.content,category:b.category??"备忘",projectId:b.projectId,taskId:b.taskId??null}});return await (0,f.syncNoteToFts)(d.db,{id:c.id,title:c.title,content:c.content}),(0,e.revalidatePath)("/workspace"),c}async function k(a,b){let c=i.parse(b),g=await d.db.projectNote.update({where:{id:a},data:c});return await (0,f.syncNoteToFts)(d.db,{id:g.id,title:g.title,content:g.content}),(0,e.revalidatePath)("/workspace"),g}async function l(a){await (0,f.deleteNoteFromFts)(d.db,a),await d.db.projectNote.delete({where:{id:a}}),(0,e.revalidatePath)("/workspace")}async function m(a){return d.db.projectNote.findUnique({where:{id:a}})}async function n(a,b){return d.db.projectNote.findMany({where:{projectId:a,...b?.category?{category:b.category}:{}},orderBy:[{updatedAt:"desc"},{id:"desc"}],include:{task:{select:{id:!0,title:!0}}}})}async function o(a){return d.db.projectNote.findMany({where:{taskId:a},orderBy:[{updatedAt:"desc"},{id:"desc"}]})}(0,g.ensureServerEntryExports)([j,k,l,m,n,o]),(0,b.registerServerReference)(j,"40808e939d61b3b4c422357a6b8a5b3252b0aba477",null),(0,b.registerServerReference)(k,"60e201e8781176b046ce0e6a3c01656f887dd175a7",null),(0,b.registerServerReference)(l,"40ee93a435dd29994896bf09f8c012a48e677ebb69",null),(0,b.registerServerReference)(m,"40d3d919a6365f3e76dd05ec90c1c297dd7e74911b",null),(0,b.registerServerReference)(n,"6012335170d1a5efb1eddec3143acad7e39a0d886c",null),(0,b.registerServerReference)(o,"40ca267cfc9bea6b8e39ed9929c2f6155c72a52450",null),a.s(["createNote",0,j,"deleteNote",0,l,"getNoteById",0,m,"getProjectNotes",0,n,"getTaskNotes",0,o,"updateNote",0,k])},196195,a=>{"use strict";var b=a.i(815429),c=a.i(233405),d=a.i(814747),e=a.i(446786);function f(a){return a.startsWith("~/")||"~"===a?d.default.join(e.default.homedir(),a.slice(1)):a}async function g(a){if(!a?.trim())return null;let b=d.default.resolve(f(a));try{return(0,c.execSync)("git rev-parse --abbrev-ref HEAD",{cwd:b,encoding:"utf-8",timeout:5e3}).trim()}catch{return null}}async function h(a){if(!a?.trim())return[];let b=d.default.resolve(f(a));try{let a,d;return a=new Set((0,c.execSync)("git branch --format='%(refname:short)'",{cwd:b,encoding:"utf-8",timeout:5e3}).trim().split("\n").filter(Boolean).map(a=>a.replace(/'/g,""))),d=(0,c.execSync)("git branch -r --format='%(refname:short)'",{cwd:b,encoding:"utf-8",timeout:5e3}).trim().split("\n").filter(Boolean).map(a=>a.replace(/'/g,"").replace(/^origin\//,"")).filter(b=>"HEAD"!==b&&!a.has(b)),[...a,...d]}catch{return[]}}async function i(a){if(!a?.trim())return;let b=d.default.resolve(f(a));try{(0,c.spawn)("git",["fetch","--prune"],{cwd:b,stdio:"ignore",detached:!0}).unref()}catch{}}(0,a.i(630048).ensureServerEntryExports)([g,h,i]),(0,b.registerServerReference)(g,"4004455e994abc095eb423df357e843bc62b614720",null),(0,b.registerServerReference)(h,"400d6f299d957c2738b8385cf76acfa613b4e40c23",null),(0,b.registerServerReference)(i,"405ea1a33bdc8d4de8dd77a7658e251d0c5ea666da",null),a.s(["fetchRemoteBranches",0,i,"getCurrentBranch",0,g,"getProjectBranches",0,h])},188653,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);var f=a.i(97397),g=a.i(689171);a.i(392164),a.i(536960),a.i(196195);var h=b([d,e,f,g]);[d,e,f,g]=h.then?(await h)():h,a.s([]),c()}catch(a){c(a)}},!1),54850,a=>a.a(async(b,c)=>{try{var d=a.i(188653),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(97397),m=a.i(689171),n=a.i(392164),o=a.i(536960),p=a.i(196195),q=b([d,g,h,l,m]);[d,g,h,l,m]=q.then?(await q)():q,a.s(["001e2e7f81337764dd096b995419508926ee4d0569",()=>k.getOnboardingStatus,"00269e045821c7662d847842751e4bd34289e9d9f7",()=>e.getWorkspacesWithProjects,"00305fac2a0ec5e118c6215d6ff1ecd64b9030fcce",()=>h.getAvailableTerminalApps,"0034462e041760d222594debc480822d72dd44f371",()=>h.getActualWsPort,"007f5b03cd21f0213076bfdd693e82f325efb7e444",()=>h.getPlatformInfo,"0084154bf3b55f07270443a00c9aa96dc9957f3347",()=>e.getWorkspacesWithActiveTasks,"00bf89d6a861e75f676070da30fb1dfddeeb4791f2",()=>h.getAvailableEditors,"00ddcf02e8ccaf821a4d0031a71a9188a9e8abc653",()=>j.listAllExtensionStatus,"00ec78b4361bde323969d61a25f29d635c8b6168fb",()=>h.getAvailableShells,"00f66bbd58ea8fa3664e8a8eda1a9778b065fc6f77",()=>h.getArchiveDelayDays,"4004455e994abc095eb423df357e843bc62b614720",()=>p.getCurrentBranch,"4004a88ffb826fc2973f7a4e6d046ea21a468a9e8f",()=>o.openInEditor,"400b9827f2168457cf77a8cafb21e39e0530ea01ff",()=>l.deleteAsset,"400ce9acdefe7899d80e3a397501626b8ceb77ed52",()=>f.deleteLabel,"400d6f299d957c2738b8385cf76acfa613b4e40c23",()=>p.getProjectBranches,"400ecb00dbd90175e6d01907545015c27a80e88391",()=>o.openInTerminal,"4018cfb87b5cedda8d81d5a4585dd3bcd6af70d9f6",()=>e.deleteProject,"401a0b53b020a460f0aed044a7c1bf9ac975a217b1",()=>o.openInFileManager,"401a8edde46c5000efe8ad48c7362805f155b29000",()=>m.createTask,"401b2f95e3cce5930ded602c9fd3e9e135e02a054d",()=>h.resolveGitLocalPath,"402535ef46f2a5c3f9c9b0d4a80fea235b2a759106",()=>e.createProject,"4025bb7670d06524b74b31713333451172e0113e2f",()=>e.getOrCreateTowerTaskId,"40312eba13f5edb81b44080732330685cf8e6923f0",()=>j.uninstallExtension,"40394a0413f0d5dec52a3df5c1f308c14f8e7e37bd",()=>l.uploadAsset,"403c77e666b3c13997c6409d30a120d1f4a26d203c",()=>j.checkExtension,"403fb9aba477474068caa46d6c3fa942de05b4edb6",()=>h.getConfigValues,"40408fbffaaf7905f4ceeb91edc7ae862a8aa1c35a",()=>l.getProjectAssets,"4044de41c35107216ec541819870d98be7659bd39c",()=>l.getTaskAssets,"405ea1a33bdc8d4de8dd77a7658e251d0c5ea666da",()=>p.fetchRemoteBranches,"4060c6d6aaff8835d0f5ade772b0632192ac0a9430",()=>i.checkMigrationSafety,"406a761553f903b0d225d9d372bee72626c8d83b84",()=>m.getTaskOverview,"406dd254cc7eb451737c80331e7288eb336e7df1a0",()=>f.getLabelsForWorkspace,"4071609f7c57092cdaed865c7b6ad1d0ad8efdf760",()=>e.getWorkspacesWithRecentTasks,"4073b6aed6f0cf2cc15c3c9ee26879266ab292dadb",()=>e.createWorkspace,"407c7e0f04eba8e75d5a2b52681e62b1aa03e78250",()=>e.getProjectByLocalPath,"407dc936c9febb82ca6dc4e33f166048a069e6d912",()=>k.setOnboardingProgress,"40867eda8002c5cff2fc3daff9751e6633cee98e82",()=>e.getWorkspaceById,"40887bdb36e2122964eea1db15e0be1868c081c4da",()=>f.createLabel,"4093d27b0327daa1f08c2584c7d5725b1290999b0b",()=>l.getAssetById,"40a959290e2953edc71f754770c46e3191f47f2a6f",()=>e.deleteWorkspace,"40c16ca3b6eafc693b7e8d7019f60d1cda33dffdad",()=>e.getRecentLocalProjects,"40ca267cfc9bea6b8e39ed9929c2f6155c72a52450",()=>n.getTaskNotes,"40cac7bd5f30279431c77b3ac457b584502e8a346c",()=>e.reorderWorkspaces,"40cd8986fe033e986fd37131f7586d8531eb9088e4",()=>h.resolveGitLocalPathWithSource,"40cf7136754c54bc721ee4e1467c6ec2d5631aab6f",()=>k.dispatchTaskCompletionEvent,"40e32f65cdca15361e52a1032c47f7b6e4b68d60d6",()=>l.createAsset,"40f33b6f6de981d4fa57e1e82fde31a17dfe8a85a2",()=>j.installExtension,"600fe4665d4e6fc8cd80863079f1206fc73a4eb6ed",()=>g.globalSearch,"60474ed8af66d6d5d3b38dc4ead39b20409a155dbb",()=>i.analyzeProjectDirectory,"60798d486148e4a4b63876f699e382bde537c86c7a",()=>i.migrateProjectPath,"608067b486f33e2002e74544371074d7538d75912e",()=>k.setOnboardingExtensions,"60a7f1fea1269f6dc7e20f780bf809647e279ce915",()=>e.updateProject,"60ae2acf84914a1879cb08641eb58340d607175630",()=>k.completeOnboarding,"60b7ba6b5939f2412c541f416a9d70652d8104f30a",()=>e.updateWorkspace,"60e7655a5a8bc89fb0a12f0a9ed7be77e2c93394c8",()=>h.setConfigValue,"60f9fcca9cc5ca10fc49386cabdc7854ab8435ad47",()=>h.getConfigValue]),c()}catch(a){c(a)}},!1),76052,a=>{a.v(b=>Promise.all(["server/chunks/ssr/src_lib_0x-iyl1._.js"].map(b=>a.l(b))).then(()=>b(492067)))},98813,a=>{a.v(a=>Promise.resolve().then(()=>a(962620)))},507502,a=>{a.v(a=>Promise.resolve().then(()=>a(845427)))},752453,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__0pnv7nd._.js"].map(b=>a.l(b))).then(()=>b(897667)))},144264,a=>{a.v(a=>Promise.resolve().then(()=>a(233405)))},662330,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__10n3vn6._.js"].map(b=>a.l(b))).then(()=>b(818992)))},200442,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__0k6oo0n._.js"].map(b=>a.l(b))).then(()=>b(941750)))},323970,a=>{a.v(a=>Promise.resolve().then(()=>a(522734)))},173855,a=>{a.v(b=>Promise.all(["server/chunks/ssr/src_lib_open-targets_ts_12a-_~u._.js"].map(b=>a.l(b))).then(()=>b(289288)))},889618,a=>{a.v(a=>Promise.resolve().then(()=>a(163812)))},482848,a=>{a.v(a=>Promise.resolve().then(()=>a(874533)))}];
|
|
46
|
-
|
|
47
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__0ecd_1d._.js.map
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
module.exports=[495370,a=>{"use strict";var b=a.i(815429),c=a.i(761469),d=a.i(188139),e=a.i(496877);async function f(a){return c.db.label.findMany({where:{OR:[{isBuiltin:!0},{workspaceId:a}]},orderBy:[{isBuiltin:"desc"},{name:"asc"}]})}async function g(a){let b=e.createLabelSchema.parse(a),f=await c.db.label.create({data:{name:b.name,color:b.color,workspaceId:b.workspaceId}});return(0,d.revalidatePath)("/workspaces"),f}async function h(a){let b=await c.db.label.findUnique({where:{id:a}});if(!b)throw Error("Label not found");if(b.isBuiltin)throw Error("Cannot delete builtin labels");await c.db.label.delete({where:{id:a}}),(0,d.revalidatePath)("/workspaces")}async function i(a,b){await c.db.$transaction(async c=>{await c.taskLabel.deleteMany({where:{taskId:a}}),b.length>0&&await c.taskLabel.createMany({data:b.map(b=>({taskId:a,labelId:b}))})}),(0,d.revalidatePath)("/workspaces")}async function j(a){return(await c.db.taskLabel.findMany({where:{taskId:a},include:{label:!0}})).map(a=>a.label)}(0,a.i(630048).ensureServerEntryExports)([f,g,h,i,j]),(0,b.registerServerReference)(f,"406dd254cc7eb451737c80331e7288eb336e7df1a0",null),(0,b.registerServerReference)(g,"40887bdb36e2122964eea1db15e0be1868c081c4da",null),(0,b.registerServerReference)(h,"400ce9acdefe7899d80e3a397501626b8ceb77ed52",null),(0,b.registerServerReference)(i,"606dd68554dfa87ae9b2332be87990ee913d22c3ad",null),(0,b.registerServerReference)(j,"4015b8e64b3d2c9b6979fe735ab480dbb1a5608132",null),a.s(["createLabel",0,g,"deleteLabel",0,h,"getLabelsForWorkspace",0,f,"getTaskLabels",0,j,"setTaskLabels",0,i])},287068,a=>{"use strict";var b=a.i(761469);function c(a,b){return{id:a.note_id,type:"note",title:a.title,subtitle:`${a.workspace_name} / ${a.project_name}`,navigateTo:`/workspaces/${a.workspaceId}/notes?projectId=${a.projectId}`,snippet:a.content?a.content.slice(0,b):void 0}}async function d(a,e="task",f){if(!a.trim())return[];let g=a.trim(),{resultLimit:h,allModeCap:i,snippetLength:j}=f;if("all"===e){let[a,b,c,e,h]=await Promise.allSettled([d(g,"task",f),d(g,"project",f),d(g,"repository",f),d(g,"note",f),d(g,"asset",f)]),j=a=>"fulfilled"===a.status?a.value.slice(0,i):[];return[...j(a),...j(b),...j(c),...j(e),...j(h)]}if("task"===e)return(await b.db.task.findMany({where:{OR:[{title:{contains:g}},{description:{contains:g}}]},include:{project:{include:{workspace:!0}}},take:h,orderBy:{updatedAt:"desc"}})).map(a=>{let b="DONE"===a.status||"CANCELLED"===a.status,c=a.project.workspaceId;return{id:a.id,type:"task",title:a.title,subtitle:`${a.project.workspace.name} / ${a.project.name}`,navigateTo:b?`/workspaces/${c}/archive?projectId=${a.projectId}`:`/workspaces/${c}?projectId=${a.projectId}`}});if("project"===e)return(await b.db.project.findMany({where:{OR:[{name:{contains:g}},{alias:{contains:g}},{description:{contains:g}}]},include:{workspace:!0},take:h,orderBy:{updatedAt:"desc"}})).map(a=>({id:a.id,type:"project",title:a.alias?`${a.name} (${a.alias})`:a.name,subtitle:a.workspace.name,navigateTo:`/workspaces/${a.workspaceId}?projectId=${a.id}`}));if("repository"===e)return(await b.db.repository.findMany({where:{OR:[{name:{contains:g}},{path:{contains:g}}]},include:{project:{include:{workspace:!0}}},take:h})).map(a=>({id:a.id,type:"repository",title:a.name,subtitle:`${a.project.workspace.name} / ${a.project.name} \xb7 ${a.branch}`,navigateTo:`/workspaces/${a.project.workspaceId}?projectId=${a.projectId}`}));if("note"===e){if(g.length<3)return(await b.db.$queryRawUnsafe(`SELECT n.id as note_id, n.title, n.content,
|
|
2
|
-
n."projectId", p."workspaceId", p.name as project_name, w.name as workspace_name
|
|
3
|
-
FROM "ProjectNote" n
|
|
4
|
-
JOIN "Project" p ON p.id = n."projectId"
|
|
5
|
-
JOIN "Workspace" w ON w.id = p."workspaceId"
|
|
6
|
-
WHERE n.title LIKE ? OR n.content LIKE ?
|
|
7
|
-
LIMIT ?`,`%${g}%`,`%${g}%`,h)).map(a=>c(a,j));try{return(await b.db.$queryRawUnsafe(`SELECT f.note_id, f.title, f.content,
|
|
8
|
-
n."projectId", p."workspaceId", p.name as project_name, w.name as workspace_name
|
|
9
|
-
FROM notes_fts f
|
|
10
|
-
JOIN "ProjectNote" n ON n.id = f.note_id
|
|
11
|
-
JOIN "Project" p ON p.id = n."projectId"
|
|
12
|
-
JOIN "Workspace" w ON w.id = p."workspaceId"
|
|
13
|
-
WHERE f.notes_fts MATCH ?
|
|
14
|
-
ORDER BY rank
|
|
15
|
-
LIMIT ?`,g,h)).map(a=>c(a,j))}catch{return(await b.db.$queryRawUnsafe(`SELECT n.id as note_id, n.title, n.content,
|
|
16
|
-
n."projectId", p."workspaceId", p.name as project_name, w.name as workspace_name
|
|
17
|
-
FROM "ProjectNote" n
|
|
18
|
-
JOIN "Project" p ON p.id = n."projectId"
|
|
19
|
-
JOIN "Workspace" w ON w.id = p."workspaceId"
|
|
20
|
-
WHERE n.title LIKE ? OR n.content LIKE ?
|
|
21
|
-
LIMIT ?`,`%${g}%`,`%${g}%`,h)).map(a=>c(a,j))}}return"asset"===e?(await b.db.projectAsset.findMany({where:{OR:[{filename:{contains:g}},{description:{contains:g}}]},include:{project:{include:{workspace:!0}}},take:h,orderBy:{createdAt:"desc"}})).map(a=>({id:a.id,type:"asset",title:a.filename,subtitle:`${a.project.workspace.name} / ${a.project.name}`,navigateTo:`/workspaces/${a.project.workspaceId}/assets?projectId=${a.projectId}`,snippet:a.description||void 0})):[]}a.s(["search",0,d])},396904,a=>a.a(async(b,c)=>{try{var d=a.i(815429),e=a.i(287068),f=a.i(980999),g=a.i(630048),h=b([f]);async function i(a,b="task"){let c=await (0,f.getConfigValues)(["search.resultLimit","search.allModeCap","search.snippetLength"]);return(0,e.search)(a,b,{resultLimit:c["search.resultLimit"]??20,allModeCap:c["search.allModeCap"]??5,snippetLength:c["search.snippetLength"]??80})}[f]=h.then?(await h)():h,(0,g.ensureServerEntryExports)([i]),(0,d.registerServerReference)(i,"600fe4665d4e6fc8cd80863079f1206fc73a4eb6ed",null),a.s(["globalSearch",0,i]),c()}catch(a){c(a)}},!1),101844,a=>{"use strict";var b=a.i(815429),c=a.i(924868),d=a.i(522734),e=a.i(814747),f=a.i(761469),g=a.i(188139),h=a.i(630048);async function i(b){if(!b||"string"!=typeof b)return{safe:!1,reason:"无效的项目 ID"};let g=await f.db.project.findUnique({where:{id:b}});if(!g||!g.localPath)return{safe:!1,reason:"项目不存在或未设置本地路径"};if((await f.db.taskExecution.findMany({where:{task:{projectId:b},status:"RUNNING"},select:{id:!0}})).length>0)return{safe:!1,reason:"该项目有正在运行的任务执行,请先停止所有执行"};let h=await f.db.task.findMany({where:{projectId:b},select:{id:!0}}),{getSession:i}=await a.A(98813);for(let a of h)if(void 0!==i(a.id))return{safe:!1,reason:"该项目有活跃的终端会话,请先关闭"};let j=e.default.join(g.localPath,".worktrees");if((0,d.existsSync)(j))try{if((await (0,c.readdir)(j)).length>0)return{safe:!1,reason:"该项目有活跃的 Git Worktree,请先清理"}}catch{}return{safe:!0}}async function j(b,h){if(!b||"string"!=typeof b)return{success:!1,error:"无效的项目 ID"};if(!h||"string"!=typeof h||!e.default.isAbsolute(h))return{success:!1,error:"目标路径必须是非空的绝对路径"};let i=await f.db.project.findUnique({where:{id:b}});if(!i||!i.localPath)return{success:!1,error:"项目不存在或未设置本地路径"};let j=i.localPath;if(h===j)return{success:!1,error:"源路径和目标路径相同"};if((await f.db.taskExecution.findMany({where:{task:{projectId:b},status:"RUNNING"},select:{id:!0}})).length>0)return{success:!1,error:"该项目有正在运行的任务执行,请先停止所有执行"};let k=await f.db.task.findMany({where:{projectId:b},select:{id:!0}}),{getSession:l}=await a.A(98813);for(let a of k)if(void 0!==l(a.id))return{success:!1,error:"该项目有活跃的终端会话,请先关闭"};let m=e.default.join(j,".worktrees");if((0,d.existsSync)(m))try{if((await (0,c.readdir)(m)).length>0)return{success:!1,error:"该项目有活跃的 Git Worktree,请先清理"}}catch{}if((0,d.existsSync)(h))try{if((await (0,c.readdir)(h)).length>0)return{success:!1,error:"目标路径已存在且不为空"}}catch{return{success:!1,error:"目标路径已存在且不为空"}}let n=e.default.dirname(h);try{await (0,c.mkdir)(n,{recursive:!0})}catch(a){if("EACCES"===a.code||"EPERM"===a.code)return{success:!1,error:`无权限创建父目录 ${n} — 请检查 Git 路径映射规则的模板是否漏了 "~/" 前缀`};if("EROFS"===a.code)return{success:!1,error:`父目录所在文件系统只读:${n}`};return{success:!1,error:`创建父目录失败:${a.message||a.code||"未知错误"}`}}try{await (0,c.rename)(j,h)}catch(a){if("EXDEV"===a.code)return{success:!1,error:"源路径和目标路径不在同一文件系统,不支持跨设备迁移"};if("EACCES"===a.code||"EPERM"===a.code)return{success:!1,error:`无权限移动到 ${h}`};return{success:!1,error:a.message||"文件系统操作失败"}}return await f.db.project.update({where:{id:b},data:{localPath:h}}),(0,g.revalidatePath)("/workspaces"),{success:!0}}let k=`分析这个项目目录,生成一段简短的 Markdown 项目描述。
|
|
22
|
-
|
|
23
|
-
读取 package.json、README.md 等关键文件,然后概括:
|
|
24
|
-
|
|
25
|
-
**技术栈:** 一句话列出主要语言、框架、关键库
|
|
26
|
-
**定位:** 一句话说明项目是什么
|
|
27
|
-
**核心模块:** 2-3 个关键模块,每个一句话
|
|
28
|
-
|
|
29
|
-
要求:
|
|
30
|
-
- 总字数不超过 500 字
|
|
31
|
-
- 用简洁的 Markdown(加粗标签 + 短句),不要用 ## 大标题和表格
|
|
32
|
-
- 不要罗列每个文件/目录,只说关键信息
|
|
33
|
-
- 中文输出`,l=`Analyze this project directory and generate a brief Markdown project description.
|
|
34
|
-
|
|
35
|
-
Read package.json, README.md and other key files, then summarize:
|
|
36
|
-
|
|
37
|
-
**Tech Stack:** One sentence listing primary languages, frameworks, and key libraries
|
|
38
|
-
**Overview:** One sentence describing what this project is
|
|
39
|
-
**Core Modules:** 2-3 key modules, one sentence each
|
|
40
|
-
|
|
41
|
-
Requirements:
|
|
42
|
-
- Keep it under 1000 words
|
|
43
|
-
- Use concise Markdown (bold labels + short sentences), no ## headings or tables
|
|
44
|
-
- Don't list every file/directory, only key information
|
|
45
|
-
- Output in English`;async function m(b,c="zh"){if(!b||"string"!=typeof b)throw Error("无效的本地路径");if(b.startsWith("~"))throw Error("不支持 ~ 别名,请提供绝对路径");if(!e.default.isAbsolute(b))throw Error("本地路径必须为绝对路径");let{aiQuery:d}=await a.A(752453),f=await d("en"===c?l:k,b,{maxTurns:10,tools:["Read","Glob"],allowedTools:["Read","Glob"]});if(!f)throw Error("AI 分析未返回结果");return f.length>2e3?f.slice(0,2e3).trimEnd()+"\n\n...":f}(0,h.ensureServerEntryExports)([i,j,m]),(0,b.registerServerReference)(i,"4060c6d6aaff8835d0f5ade772b0632192ac0a9430",null),(0,b.registerServerReference)(j,"60798d486148e4a4b63876f699e382bde537c86c7a",null),(0,b.registerServerReference)(m,"60474ed8af66d6d5d3b38dc4ead39b20409a155dbb",null),a.s(["analyzeProjectDirectory",0,m,"checkMigrationSafety",0,i,"migrateProjectPath",0,j])},859071,a=>{"use strict";a.i(666680);var b=a.i(902157),c=a.i(750227),d=a.i(319997);a.s(["ensureAssetsDir",0,function(a){let e=function(a){let b=c.join((0,d.getStorageDir)(),"assets",a);if(!b.startsWith((0,d.getStorageDir)()+c.sep))throw Error("Path traversal detected");return b}(a);return b.mkdirSync(e,{recursive:!0}),e}])},97397,a=>a.a(async(b,c)=>{try{var d=a.i(815429),e=a.i(902157),f=a.i(750227),g=a.i(75681),h=a.i(761469),i=a.i(188139),j=a.i(859071),k=a.i(980999),l=a.i(630048),m=b([k]);[k]=m.then?(await m)():m;let t=g.z.object({filename:g.z.string().min(1).max(255),path:g.z.string().min(1),mimeType:g.z.string().max(100).optional(),size:g.z.number().int().nonnegative().optional(),projectId:g.z.string().min(1),description:g.z.string().max(500).optional(),taskId:g.z.string().optional()});async function n(a){let b=t.parse(a);(0,j.ensureAssetsDir)(b.projectId);let c=await h.db.projectAsset.create({data:{...b,taskId:b.taskId??null}});return(0,i.revalidatePath)("/workspaces"),c}async function o(a){let b=await h.db.projectAsset.findUnique({where:{id:a}});b?.path&&await e.promises.unlink(b.path).catch(()=>{}),await h.db.projectAsset.delete({where:{id:a}}),(0,i.revalidatePath)("/workspaces")}async function p(a){return h.db.projectAsset.findMany({where:{projectId:a},orderBy:{createdAt:"desc"},include:{task:{select:{id:!0,title:!0,status:!0,priority:!0,description:!0,createdAt:!0,labels:{include:{label:!0}},executions:{orderBy:{createdAt:"desc"},take:1,select:{summary:!0,status:!0,endedAt:!0}},_count:{select:{assets:!0}}}}}})}async function q(a){return h.db.projectAsset.findMany({where:{taskId:a},orderBy:{createdAt:"desc"}})}async function r(a){return h.db.projectAsset.findUnique({where:{id:a}})}async function s(a){let b=a.get("file"),c=a.get("projectId"),d=a.get("taskId")||void 0;if(!b||!c)throw Error("Missing file or projectId");let g=await (0,k.getConfigValue)("system.maxUploadBytes",0x3200000);if(b.size>g)throw Error(`File too large (max ${Math.round(g/1024/1024)} MB)`);let l=a.get("description")??"";if(!await h.db.project.findUnique({where:{id:c}}))throw Error("Invalid projectId");let m=Buffer.from(await b.arrayBuffer()),o=(0,j.ensureAssetsDir)(c),p=f.basename(b.name);p&&"."!==p&&".."!==p||(p=`upload-${Date.now()}`);let q=f.join(o,p);if(e.existsSync(q)){let a=f.extname(p),b=f.basename(p,a);p=`${b}-${Date.now()}${a}`}let r=f.join(o,p);if(!r.startsWith(o))throw Error("Invalid filename");await e.promises.writeFile(r,m);let s=await n({filename:p,path:r,mimeType:b.type||void 0,size:b.size,projectId:c,description:l||void 0,taskId:d});return(0,i.revalidatePath)("/workspaces"),s}(0,l.ensureServerEntryExports)([n,o,p,q,r,s]),(0,d.registerServerReference)(n,"40e32f65cdca15361e52a1032c47f7b6e4b68d60d6",null),(0,d.registerServerReference)(o,"400b9827f2168457cf77a8cafb21e39e0530ea01ff",null),(0,d.registerServerReference)(p,"40408fbffaaf7905f4ceeb91edc7ae862a8aa1c35a",null),(0,d.registerServerReference)(q,"4044de41c35107216ec541819870d98be7659bd39c",null),(0,d.registerServerReference)(r,"4093d27b0327daa1f08c2584c7d5725b1290999b0b",null),(0,d.registerServerReference)(s,"40394a0413f0d5dec52a3df5c1f308c14f8e7e37bd",null),a.s(["createAsset",0,n,"deleteAsset",0,o,"getAssetById",0,r,"getProjectAssets",0,p,"getTaskAssets",0,q,"uploadAsset",0,s]),c()}catch(a){c(a)}},!1),835032,a=>{"use strict";async function b(a,b){await a.$executeRawUnsafe("DELETE FROM notes_fts WHERE note_id = ?",b.id),await a.$executeRawUnsafe("INSERT INTO notes_fts(note_id, title, content) VALUES (?, ?, ?)",b.id,b.title,b.content)}async function c(a,b){await a.$executeRawUnsafe("DELETE FROM notes_fts WHERE note_id = ?",b)}a.s(["deleteNoteFromFts",0,c,"syncNoteToFts",0,b])},392164,a=>{"use strict";var b=a.i(815429),c=a.i(75681),d=a.i(761469),e=a.i(188139),f=a.i(835032),g=a.i(630048);let h=c.z.object({title:c.z.string().min(1).max(200),content:c.z.string(),category:c.z.string().max(50).optional(),projectId:c.z.string().min(1),taskId:c.z.string().optional()}),i=c.z.object({title:c.z.string().min(1).max(200).optional(),content:c.z.string().optional(),category:c.z.string().max(50).optional()});async function j(a){let b=h.parse(a),c=await d.db.projectNote.create({data:{title:b.title,content:b.content,category:b.category??"备忘",projectId:b.projectId,taskId:b.taskId??null}});return await (0,f.syncNoteToFts)(d.db,{id:c.id,title:c.title,content:c.content}),(0,e.revalidatePath)("/workspace"),c}async function k(a,b){let c=i.parse(b),g=await d.db.projectNote.update({where:{id:a},data:c});return await (0,f.syncNoteToFts)(d.db,{id:g.id,title:g.title,content:g.content}),(0,e.revalidatePath)("/workspace"),g}async function l(a){await (0,f.deleteNoteFromFts)(d.db,a),await d.db.projectNote.delete({where:{id:a}}),(0,e.revalidatePath)("/workspace")}async function m(a){return d.db.projectNote.findUnique({where:{id:a}})}async function n(a,b){return d.db.projectNote.findMany({where:{projectId:a,...b?.category?{category:b.category}:{}},orderBy:[{updatedAt:"desc"},{id:"desc"}],include:{task:{select:{id:!0,title:!0}}}})}async function o(a){return d.db.projectNote.findMany({where:{taskId:a},orderBy:[{updatedAt:"desc"},{id:"desc"}]})}(0,g.ensureServerEntryExports)([j,k,l,m,n,o]),(0,b.registerServerReference)(j,"40808e939d61b3b4c422357a6b8a5b3252b0aba477",null),(0,b.registerServerReference)(k,"60e201e8781176b046ce0e6a3c01656f887dd175a7",null),(0,b.registerServerReference)(l,"40ee93a435dd29994896bf09f8c012a48e677ebb69",null),(0,b.registerServerReference)(m,"40d3d919a6365f3e76dd05ec90c1c297dd7e74911b",null),(0,b.registerServerReference)(n,"6012335170d1a5efb1eddec3143acad7e39a0d886c",null),(0,b.registerServerReference)(o,"40ca267cfc9bea6b8e39ed9929c2f6155c72a52450",null),a.s(["createNote",0,j,"deleteNote",0,l,"getNoteById",0,m,"getProjectNotes",0,n,"getTaskNotes",0,o,"updateNote",0,k])},196195,a=>{"use strict";var b=a.i(815429),c=a.i(233405),d=a.i(814747),e=a.i(446786);function f(a){return a.startsWith("~/")||"~"===a?d.default.join(e.default.homedir(),a.slice(1)):a}async function g(a){if(!a?.trim())return null;let b=d.default.resolve(f(a));try{return(0,c.execSync)("git rev-parse --abbrev-ref HEAD",{cwd:b,encoding:"utf-8",timeout:5e3}).trim()}catch{return null}}async function h(a){if(!a?.trim())return[];let b=d.default.resolve(f(a));try{let a,d;return a=new Set((0,c.execSync)("git branch --format='%(refname:short)'",{cwd:b,encoding:"utf-8",timeout:5e3}).trim().split("\n").filter(Boolean).map(a=>a.replace(/'/g,""))),d=(0,c.execSync)("git branch -r --format='%(refname:short)'",{cwd:b,encoding:"utf-8",timeout:5e3}).trim().split("\n").filter(Boolean).map(a=>a.replace(/'/g,"").replace(/^origin\//,"")).filter(b=>"HEAD"!==b&&!a.has(b)),[...a,...d]}catch{return[]}}async function i(a){if(!a?.trim())return;let b=d.default.resolve(f(a));try{(0,c.spawn)("git",["fetch","--prune"],{cwd:b,stdio:"ignore",detached:!0}).unref()}catch{}}(0,a.i(630048).ensureServerEntryExports)([g,h,i]),(0,b.registerServerReference)(g,"4004455e994abc095eb423df357e843bc62b614720",null),(0,b.registerServerReference)(h,"400d6f299d957c2738b8385cf76acfa613b4e40c23",null),(0,b.registerServerReference)(i,"405ea1a33bdc8d4de8dd77a7658e251d0c5ea666da",null),a.s(["fetchRemoteBranches",0,i,"getCurrentBranch",0,g,"getProjectBranches",0,h])},449496,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);var f=a.i(689171);a.i(392164);var g=a.i(97397);a.i(536960),a.i(196195);var h=b([d,e,f,g]);[d,e,f,g]=h.then?(await h)():h,a.s([]),c()}catch(a){c(a)}},!1),670300,a=>a.a(async(b,c)=>{try{var d=a.i(449496),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(689171),m=a.i(392164),n=a.i(97397),o=a.i(536960),p=a.i(196195),q=b([d,g,h,l,n]);[d,g,h,l,n]=q.then?(await q)():q,a.s(["001e2e7f81337764dd096b995419508926ee4d0569",()=>k.getOnboardingStatus,"00269e045821c7662d847842751e4bd34289e9d9f7",()=>e.getWorkspacesWithProjects,"00305fac2a0ec5e118c6215d6ff1ecd64b9030fcce",()=>h.getAvailableTerminalApps,"0034462e041760d222594debc480822d72dd44f371",()=>h.getActualWsPort,"007f5b03cd21f0213076bfdd693e82f325efb7e444",()=>h.getPlatformInfo,"0084154bf3b55f07270443a00c9aa96dc9957f3347",()=>e.getWorkspacesWithActiveTasks,"00bf89d6a861e75f676070da30fb1dfddeeb4791f2",()=>h.getAvailableEditors,"00ddcf02e8ccaf821a4d0031a71a9188a9e8abc653",()=>j.listAllExtensionStatus,"00ec78b4361bde323969d61a25f29d635c8b6168fb",()=>h.getAvailableShells,"00f66bbd58ea8fa3664e8a8eda1a9778b065fc6f77",()=>h.getArchiveDelayDays,"4004455e994abc095eb423df357e843bc62b614720",()=>p.getCurrentBranch,"4004a88ffb826fc2973f7a4e6d046ea21a468a9e8f",()=>o.openInEditor,"400ce9acdefe7899d80e3a397501626b8ceb77ed52",()=>f.deleteLabel,"400d6f299d957c2738b8385cf76acfa613b4e40c23",()=>p.getProjectBranches,"400ecb00dbd90175e6d01907545015c27a80e88391",()=>o.openInTerminal,"4015b8e64b3d2c9b6979fe735ab480dbb1a5608132",()=>f.getTaskLabels,"4018cfb87b5cedda8d81d5a4585dd3bcd6af70d9f6",()=>e.deleteProject,"401a0b53b020a460f0aed044a7c1bf9ac975a217b1",()=>o.openInFileManager,"401a8edde46c5000efe8ad48c7362805f155b29000",()=>l.createTask,"401b2f95e3cce5930ded602c9fd3e9e135e02a054d",()=>h.resolveGitLocalPath,"402535ef46f2a5c3f9c9b0d4a80fea235b2a759106",()=>e.createProject,"4025bb7670d06524b74b31713333451172e0113e2f",()=>e.getOrCreateTowerTaskId,"402dcfe84e0d71699003d8cc37a07f1cbe7db1f2d4",()=>l.toggleTaskPinned,"40312eba13f5edb81b44080732330685cf8e6923f0",()=>j.uninstallExtension,"403c77e666b3c13997c6409d30a120d1f4a26d203c",()=>j.checkExtension,"403fb9aba477474068caa46d6c3fa942de05b4edb6",()=>h.getConfigValues,"4044de41c35107216ec541819870d98be7659bd39c",()=>n.getTaskAssets,"40505ff06497cc2e4c160bdf7f87ac35e4cf142d23",()=>l.deleteTask,"4052452c2ab0de8a0f985b0e123f211149037a2721",()=>l.checkWorktreeClean,"405878a9b634f1f6a4d54fdcaaed6d1cceff3ff2f2",()=>l.getArchivedTaskCount,"405ea1a33bdc8d4de8dd77a7658e251d0c5ea666da",()=>p.fetchRemoteBranches,"4060c6d6aaff8835d0f5ade772b0632192ac0a9430",()=>i.checkMigrationSafety,"406a761553f903b0d225d9d372bee72626c8d83b84",()=>l.getTaskOverview,"406dd254cc7eb451737c80331e7288eb336e7df1a0",()=>f.getLabelsForWorkspace,"4071609f7c57092cdaed865c7b6ad1d0ad8efdf760",()=>e.getWorkspacesWithRecentTasks,"4073b6aed6f0cf2cc15c3c9ee26879266ab292dadb",()=>e.createWorkspace,"407c7e0f04eba8e75d5a2b52681e62b1aa03e78250",()=>e.getProjectByLocalPath,"407dc936c9febb82ca6dc4e33f166048a069e6d912",()=>k.setOnboardingProgress,"407de0a303886573b101393398d723e9cfd7f83e70",()=>l.getProjectTasks,"4084d5b59db9737adb551105405d0160f7ab1991ab",()=>l.getArchivedTasks,"40867eda8002c5cff2fc3daff9751e6633cee98e82",()=>e.getWorkspaceById,"40887bdb36e2122964eea1db15e0be1868c081c4da",()=>f.createLabel,"4097ef8e068732352799bc4015f690164d95791272",()=>l.searchTasks,"40a959290e2953edc71f754770c46e3191f47f2a6f",()=>e.deleteWorkspace,"40c16ca3b6eafc693b7e8d7019f60d1cda33dffdad",()=>e.getRecentLocalProjects,"40ca267cfc9bea6b8e39ed9929c2f6155c72a52450",()=>m.getTaskNotes,"40cac7bd5f30279431c77b3ac457b584502e8a346c",()=>e.reorderWorkspaces,"40cd8986fe033e986fd37131f7586d8531eb9088e4",()=>h.resolveGitLocalPathWithSource,"40cf7136754c54bc721ee4e1467c6ec2d5631aab6f",()=>k.dispatchTaskCompletionEvent,"40f33b6f6de981d4fa57e1e82fde31a17dfe8a85a2",()=>j.installExtension,"600fe4665d4e6fc8cd80863079f1206fc73a4eb6ed",()=>g.globalSearch,"60474ed8af66d6d5d3b38dc4ead39b20409a155dbb",()=>i.analyzeProjectDirectory,"6064b9935e18da22e6c9876117d6e8d31ecd60aa7a",()=>l.updateTaskStatus,"606dd68554dfa87ae9b2332be87990ee913d22c3ad",()=>f.setTaskLabels,"60798d486148e4a4b63876f699e382bde537c86c7a",()=>i.migrateProjectPath,"608067b486f33e2002e74544371074d7538d75912e",()=>k.setOnboardingExtensions,"60a7f1fea1269f6dc7e20f780bf809647e279ce915",()=>e.updateProject,"60ae2acf84914a1879cb08641eb58340d607175630",()=>k.completeOnboarding,"60b7ba6b5939f2412c541f416a9d70652d8104f30a",()=>e.updateWorkspace,"60cd57f895980a7b28d0efceb11d37834f5108d45b",()=>l.commitWorktreeChanges,"60e46b13b1a67fec64cfa31dfb3908fbfc43b1c00b",()=>l.updateTask,"60e7655a5a8bc89fb0a12f0a9ed7be77e2c93394c8",()=>h.setConfigValue,"60f9fcca9cc5ca10fc49386cabdc7854ab8435ad47",()=>h.getConfigValue]),c()}catch(a){c(a)}},!1),76052,a=>{a.v(b=>Promise.all(["server/chunks/ssr/src_lib_0yjmty1._.js"].map(b=>a.l(b))).then(()=>b(492067)))},98813,a=>{a.v(a=>Promise.resolve().then(()=>a(962620)))},507502,a=>{a.v(a=>Promise.resolve().then(()=>a(845427)))},752453,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__00ebsjb._.js"].map(b=>a.l(b))).then(()=>b(897667)))},144264,a=>{a.v(a=>Promise.resolve().then(()=>a(233405)))},662330,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__0ug022w._.js"].map(b=>a.l(b))).then(()=>b(818992)))},200442,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__0zzqn5z._.js"].map(b=>a.l(b))).then(()=>b(941750)))},323970,a=>{a.v(a=>Promise.resolve().then(()=>a(522734)))},173855,a=>{a.v(b=>Promise.all(["server/chunks/ssr/src_lib_open-targets_ts_12a-_~u._.js"].map(b=>a.l(b))).then(()=>b(289288)))},889618,a=>{a.v(a=>Promise.resolve().then(()=>a(163812)))},482848,a=>{a.v(a=>Promise.resolve().then(()=>a(874533)))}];
|
|
46
|
-
|
|
47
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__0iln7n_._.js.map
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
module.exports=[52350,562278,a=>{"use strict";var b=a.i(902157),c=a.i(660526),d=a.i(750227),e=a.i(163812);function f(){return process.env.TOWER_PACKAGE_ROOT||process.cwd()}a.s(["getPackageRoot",0,f],562278);let g=["sonnet","opus","haiku","claude-sonnet-4-6","claude-opus-4-6","claude-haiku-4-5-20251001"];a.s(["ClaudeCliAdapter",0,class{buildSpawnArgs(a){let b=["--dangerously-skip-permissions"];a.extraArgs?.length&&b.push(...a.extraArgs),a.resumeSessionId?b.push("--resume",a.resumeSessionId):a.continueLatest?b.push("--continue"):a.prompt&&b.push(a.prompt);let c={...a.envOverrides??{}};return{command:this.resolveCommand(),args:b,env:c}}buildEnvOverrides(a){let b={TOWER_TASK_ID:a.taskId,TOWER_TASK_TITLE:a.taskTitle,TOWER_STARTED_AT:new Date().toISOString(),TOWER_API_URL:a.apiUrl};return a.callbackUrl&&(b.CALLBACK_URL=a.callbackUrl),b}async installHooks(a){try{let a=this.readSettings(),b=a.hooks??{},c=f().replace(/\\/g,"/"),e=d.join(c,"scripts","session-start-hook.js").replace(/\\/g,"/"),g=d.join(c,"scripts","post-tool-hook.js").replace(/\\/g,"/"),h=d.join(c,"scripts","stop-hook.js").replace(/\\/g,"/"),i=!1;return i=this.upsertHook(b,"SessionStart","session-start-hook.js",{hooks:[{command:`node "${e}"`,timeout:5,type:"command"}]})||i,i=this.upsertHook(b,"PostToolUse","post-tool-hook.js",{hooks:[{command:`node "${g}"`,timeout:10,type:"command"}],matcher:"Write|Edit|MultiEdit"})||i,(i=this.upsertHook(b,"Stop","stop-hook.js",{hooks:[{command:`node "${h}"`,timeout:5,type:"command"}]})||i)&&(a.hooks=b,this.writeSettings(a)),{ok:!0,method:"file",detail:this.getSettingsPath()}}catch(a){return{ok:!1,method:"file",detail:this.getSettingsPath(),error:a instanceof Error?a.message:String(a)}}}async repairHookPaths(){try{let a=this.readSettings(),b=a.hooks??{},c=f().replace(/\\/g,"/"),e=!1;for(let[a,f]of[["SessionStart","session-start-hook.js"],["PostToolUse","post-tool-hook.js"],["Stop","stop-hook.js"]]){let g=this.getHookArray(b,a),h=g.findIndex(a=>a?.hooks?.some?.(a=>a.command?.includes(f)));if(h<0)continue;let i=d.join(c,"scripts",f).replace(/\\/g,"/"),j=`node "${i}"`,k=g[h]?.hooks?.[0];k&&k.command!==j&&(k.command=j,b[a]=g,e=!0)}e&&(a.hooks=b,this.writeSettings(a))}catch{}}upsertHook(a,b,c,d){let e=this.getHookArray(a,b),f=d?.hooks?.[0]?.command,g=e.findIndex(a=>a?.hooks?.some?.(a=>a.command?.includes(c)));if(g>=0){if(e[g]?.hooks?.[0]?.command===f)return!1;e.splice(g,1)}return e.push(d),a[b]=e,!0}async uninstallHooks(){try{let a=this.readSettings(),b=a.hooks??{},c=["session-start-hook.js","post-tool-hook.js","stop-hook.js"];for(let a of["SessionStart","PostToolUse","Stop"]){let d=this.getHookArray(b,a);b[a]=d.filter(a=>!a.hooks?.some(a=>c.some(b=>a.command?.includes(b))))}return a.hooks=b,this.writeSettings(a),{ok:!0,method:"file",detail:this.getSettingsPath()}}catch(a){return{ok:!1,method:"file",detail:this.getSettingsPath(),error:a instanceof Error?a.message:String(a)}}}async isHooksInstalled(){let a=this.readSettings().hooks??{},b=this.getHookArray(a,"PostToolUse");return this.hasHook(b,"post-tool-hook.js")}async installMcp(a,b={}){let c=b.scope??"user",d={command:a.command,args:a.args};a.env&&Object.keys(a.env).length>0&&(d.env=a.env);let e=this.resolveCommand(),f=["mcp","add-json","-s",c,a.name,JSON.stringify(d)];try{return await this.runCli(e,["mcp","remove","-s",c,a.name],b.cwd).catch(()=>{}),await this.runCli(e,f,b.cwd),{ok:!0,method:"cli",detail:`${e} ${f.join(" ")}`}}catch(a){return{ok:!1,method:"cli",detail:`${e} ${f.join(" ")}`,error:a instanceof Error?a.message:String(a)}}}async uninstallMcp(a,b={}){let c=b.scope??"user",d=this.resolveCommand(),e=["mcp","remove","-s",c,a];try{return await this.runCli(d,e,b.cwd),{ok:!0,method:"cli",detail:`${d} ${e.join(" ")}`}}catch(a){return{ok:!1,method:"cli",detail:`${d} ${e.join(" ")}`,error:a instanceof Error?a.message:String(a)}}}async isMcpInstalled(a,b={}){let c=this.resolveCommand();try{return await this.runCli(c,["mcp","get",a],b.cwd,5e3),!0}catch{return!1}}async installSkill(a,c){let f=d.join(this.getConfigDir(),"skills",a);try{if(!b.existsSync(c))return{ok:!1,method:"symlink",detail:f,error:`Source skill dir does not exist: ${c}`};b.mkdirSync(d.dirname(f),{recursive:!0});let a=await b.promises.lstat(f).catch(()=>null);if(a)if(!(a.isSymbolicLink()||(0,e.isWindows)()&&a.isDirectory()))return{ok:!1,method:"symlink",detail:f,error:`Refusing to overwrite non-symlink at ${f}`};else try{let a=await b.promises.readlink(f);if(d.resolve(a)===d.resolve(c))return{ok:!0,method:"symlink",detail:`${f} → ${c} (already)`};await b.promises.unlink(f)}catch{if(!a.isSymbolicLink())return{ok:!1,method:"symlink",detail:f,error:`Refusing to overwrite non-symlink at ${f}`}}let g=(0,e.isWindows)()?"junction":"dir";return await b.promises.symlink(c,f,g),{ok:!0,method:"symlink",detail:`${f} → ${c}`}}catch(a){return{ok:!1,method:"symlink",detail:f,error:a instanceof Error?a.message:String(a)}}}async uninstallSkill(a){let c=d.join(this.getConfigDir(),"skills",a);try{let a=await b.promises.lstat(c).catch(()=>null);if(!a)return{ok:!0,method:"symlink",detail:`${c} (already absent)`};if(!a.isSymbolicLink())return{ok:!1,method:"symlink",detail:c,error:`Refusing to remove non-symlink at ${c}`};return await b.promises.unlink(c),{ok:!0,method:"symlink",detail:c}}catch(a){return{ok:!1,method:"symlink",detail:c,error:a instanceof Error?a.message:String(a)}}}async isSkillInstalled(a,c){let e=d.join(this.getConfigDir(),"skills",a);try{if(!(await b.promises.lstat(e)).isSymbolicLink())return!1;if(!c)return!0;let a=await b.promises.readlink(e),f=d.isAbsolute(a)?a:d.resolve(d.dirname(e),a);return d.resolve(f)===d.resolve(c)}catch{return!1}}async runCli(b,c,d,e=1e4){let{execFile:f}=await a.A(482848),{promisify:g}=await a.A(268548),h=g(f),{stdout:i}=await h(b,c,{cwd:d,timeout:e});return i}async isAvailable(){return null!==await this.getVersion()}async getVersion(){try{let{execFile:b}=await a.A(144264),{promisify:c}=await a.A(534777),{resolveSpawnTarget:d}=await a.A(889618),e=c(b),f=await d(this.resolveCommand(),["--version"]),{stdout:g}=await e(f.command,f.args,{timeout:5e3});return g.trim()||null}catch{return null}}async getModels(){return g}getConfigDir(){return d.join(c.homedir(),".claude")}getSettingsPath(){return d.join(this.getConfigDir(),"settings.json")}getSessionsDir(){return d.join(this.getConfigDir(),"projects")}getApiKeyInfo(){return{envVar:"ANTHROPIC_API_KEY",required:!1}}buildHelloProbeArgs(a){return{command:this.resolveCommand(),args:["--print",a,"--output-format","stream-json","--verbose"]}}resolveCommand(){if(process.env.CLAUDE_CODE_PATH)return process.env.CLAUDE_CODE_PATH;if((0,e.isWindows)()){let a=(0,e.resolveCommandPathSync)("claude-code");if("claude-code"!==a)return a}return(0,e.resolveCommandPathSync)("claude")}readSettings(){try{return JSON.parse(b.readFileSync(this.getSettingsPath(),"utf-8"))}catch{return{}}}writeSettings(a){let c=this.getConfigDir();b.existsSync(c)||b.mkdirSync(c,{recursive:!0}),b.writeFileSync(this.getSettingsPath(),JSON.stringify(a,null,2),"utf-8")}getHookArray(a,b){let c=a[b];return Array.isArray(c)?c:[]}hasHook(a,b){return a.some(a=>a.hooks?.some(a=>a.command?.includes(b)))}}],52350)},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])},482848,a=>{a.v(a=>Promise.resolve().then(()=>a(874533)))},268548,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[externals]_node_util_0xr.y7p._.js"].map(b=>a.l(b))).then(()=>b(812057)))},144264,a=>{a.v(a=>Promise.resolve().then(()=>a(233405)))},534777,a=>{a.v(a=>Promise.resolve().then(()=>a(224361)))},889618,a=>{a.v(a=>Promise.resolve().then(()=>a(163812)))},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=%5Broot-of-the-server%5D__0j_-qk5._.js.map
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
module.exports=[52350,562278,a=>{"use strict";var b=a.i(902157),c=a.i(660526),d=a.i(750227),e=a.i(163812);function f(){return process.env.TOWER_PACKAGE_ROOT||process.cwd()}a.s(["getPackageRoot",0,f],562278);let g=["sonnet","opus","haiku","claude-sonnet-4-6","claude-opus-4-6","claude-haiku-4-5-20251001"];a.s(["ClaudeCliAdapter",0,class{buildSpawnArgs(a){let b=["--dangerously-skip-permissions"];a.extraArgs?.length&&b.push(...a.extraArgs),a.resumeSessionId?b.push("--resume",a.resumeSessionId):a.continueLatest?b.push("--continue"):a.prompt&&b.push(a.prompt);let c={...a.envOverrides??{}};return{command:this.resolveCommand(),args:b,env:c}}buildEnvOverrides(a){let b={TOWER_TASK_ID:a.taskId,TOWER_TASK_TITLE:a.taskTitle,TOWER_STARTED_AT:new Date().toISOString(),TOWER_API_URL:a.apiUrl};return a.callbackUrl&&(b.CALLBACK_URL=a.callbackUrl),b}async installHooks(a){try{let a=this.readSettings(),b=a.hooks??{},c=f().replace(/\\/g,"/"),e=d.join(c,"scripts","session-start-hook.js").replace(/\\/g,"/"),g=d.join(c,"scripts","post-tool-hook.js").replace(/\\/g,"/"),h=d.join(c,"scripts","stop-hook.js").replace(/\\/g,"/"),i=!1;return i=this.upsertHook(b,"SessionStart","session-start-hook.js",{hooks:[{command:`node "${e}"`,timeout:5,type:"command"}]})||i,i=this.upsertHook(b,"PostToolUse","post-tool-hook.js",{hooks:[{command:`node "${g}"`,timeout:10,type:"command"}],matcher:"Write|Edit|MultiEdit"})||i,(i=this.upsertHook(b,"Stop","stop-hook.js",{hooks:[{command:`node "${h}"`,timeout:5,type:"command"}]})||i)&&(a.hooks=b,this.writeSettings(a)),{ok:!0,method:"file",detail:this.getSettingsPath()}}catch(a){return{ok:!1,method:"file",detail:this.getSettingsPath(),error:a instanceof Error?a.message:String(a)}}}async repairHookPaths(){try{let a=this.readSettings(),b=a.hooks??{},c=f().replace(/\\/g,"/"),e=!1;for(let[a,f]of[["SessionStart","session-start-hook.js"],["PostToolUse","post-tool-hook.js"],["Stop","stop-hook.js"]]){let g=this.getHookArray(b,a),h=g.findIndex(a=>a?.hooks?.some?.(a=>a.command?.includes(f)));if(h<0)continue;let i=d.join(c,"scripts",f).replace(/\\/g,"/"),j=`node "${i}"`,k=g[h]?.hooks?.[0];k&&k.command!==j&&(k.command=j,b[a]=g,e=!0)}e&&(a.hooks=b,this.writeSettings(a))}catch{}}upsertHook(a,b,c,d){let e=this.getHookArray(a,b),f=d?.hooks?.[0]?.command,g=e.findIndex(a=>a?.hooks?.some?.(a=>a.command?.includes(c)));if(g>=0){if(e[g]?.hooks?.[0]?.command===f)return!1;e.splice(g,1)}return e.push(d),a[b]=e,!0}async uninstallHooks(){try{let a=this.readSettings(),b=a.hooks??{},c=["session-start-hook.js","post-tool-hook.js","stop-hook.js"];for(let a of["SessionStart","PostToolUse","Stop"]){let d=this.getHookArray(b,a);b[a]=d.filter(a=>!a.hooks?.some(a=>c.some(b=>a.command?.includes(b))))}return a.hooks=b,this.writeSettings(a),{ok:!0,method:"file",detail:this.getSettingsPath()}}catch(a){return{ok:!1,method:"file",detail:this.getSettingsPath(),error:a instanceof Error?a.message:String(a)}}}async isHooksInstalled(){let a=this.readSettings().hooks??{},b=this.getHookArray(a,"PostToolUse");return this.hasHook(b,"post-tool-hook.js")}async installMcp(a,b={}){let c=b.scope??"user",d={command:a.command,args:a.args};a.env&&Object.keys(a.env).length>0&&(d.env=a.env);let e=this.resolveCommand(),f=["mcp","add-json","-s",c,a.name,JSON.stringify(d)];try{return await this.runCli(e,["mcp","remove","-s",c,a.name],b.cwd).catch(()=>{}),await this.runCli(e,f,b.cwd),{ok:!0,method:"cli",detail:`${e} ${f.join(" ")}`}}catch(a){return{ok:!1,method:"cli",detail:`${e} ${f.join(" ")}`,error:a instanceof Error?a.message:String(a)}}}async uninstallMcp(a,b={}){let c=b.scope??"user",d=this.resolveCommand(),e=["mcp","remove","-s",c,a];try{return await this.runCli(d,e,b.cwd),{ok:!0,method:"cli",detail:`${d} ${e.join(" ")}`}}catch(a){return{ok:!1,method:"cli",detail:`${d} ${e.join(" ")}`,error:a instanceof Error?a.message:String(a)}}}async isMcpInstalled(a,b={}){let c=this.resolveCommand();try{return await this.runCli(c,["mcp","get",a],b.cwd,5e3),!0}catch{return!1}}async installSkill(a,c){let f=d.join(this.getConfigDir(),"skills",a);try{if(!b.existsSync(c))return{ok:!1,method:"symlink",detail:f,error:`Source skill dir does not exist: ${c}`};b.mkdirSync(d.dirname(f),{recursive:!0});let a=await b.promises.lstat(f).catch(()=>null);if(a)if(!(a.isSymbolicLink()||(0,e.isWindows)()&&a.isDirectory()))return{ok:!1,method:"symlink",detail:f,error:`Refusing to overwrite non-symlink at ${f}`};else try{let a=await b.promises.readlink(f);if(d.resolve(a)===d.resolve(c))return{ok:!0,method:"symlink",detail:`${f} → ${c} (already)`};await b.promises.unlink(f)}catch{if(!a.isSymbolicLink())return{ok:!1,method:"symlink",detail:f,error:`Refusing to overwrite non-symlink at ${f}`}}let g=(0,e.isWindows)()?"junction":"dir";return await b.promises.symlink(c,f,g),{ok:!0,method:"symlink",detail:`${f} → ${c}`}}catch(a){return{ok:!1,method:"symlink",detail:f,error:a instanceof Error?a.message:String(a)}}}async uninstallSkill(a){let c=d.join(this.getConfigDir(),"skills",a);try{let a=await b.promises.lstat(c).catch(()=>null);if(!a)return{ok:!0,method:"symlink",detail:`${c} (already absent)`};if(!a.isSymbolicLink())return{ok:!1,method:"symlink",detail:c,error:`Refusing to remove non-symlink at ${c}`};return await b.promises.unlink(c),{ok:!0,method:"symlink",detail:c}}catch(a){return{ok:!1,method:"symlink",detail:c,error:a instanceof Error?a.message:String(a)}}}async isSkillInstalled(a,c){let e=d.join(this.getConfigDir(),"skills",a);try{if(!(await b.promises.lstat(e)).isSymbolicLink())return!1;if(!c)return!0;let a=await b.promises.readlink(e),f=d.isAbsolute(a)?a:d.resolve(d.dirname(e),a);return d.resolve(f)===d.resolve(c)}catch{return!1}}async runCli(b,c,d,e=1e4){let{execFile:f}=await a.A(482848),{promisify:g}=await a.A(268548),h=g(f),{stdout:i}=await h(b,c,{cwd:d,timeout:e});return i}async isAvailable(){return null!==await this.getVersion()}async getVersion(){try{let{execFile:b}=await a.A(144264),{promisify:c}=await a.A(534777),{resolveSpawnTarget:d}=await a.A(889618),e=c(b),f=await d(this.resolveCommand(),["--version"]),{stdout:g}=await e(f.command,f.args,{timeout:5e3});return g.trim()||null}catch{return null}}async getModels(){return g}getConfigDir(){return d.join(c.homedir(),".claude")}getSettingsPath(){return d.join(this.getConfigDir(),"settings.json")}getSessionsDir(){return d.join(this.getConfigDir(),"projects")}getApiKeyInfo(){return{envVar:"ANTHROPIC_API_KEY",required:!1}}buildHelloProbeArgs(a){return{command:this.resolveCommand(),args:["--print",a,"--output-format","stream-json","--verbose"]}}resolveCommand(){if(process.env.CLAUDE_CODE_PATH)return process.env.CLAUDE_CODE_PATH;if((0,e.isWindows)()){let a=(0,e.resolveCommandPathSync)("claude-code");if("claude-code"!==a)return a}return(0,e.resolveCommandPathSync)("claude")}readSettings(){try{return JSON.parse(b.readFileSync(this.getSettingsPath(),"utf-8"))}catch{return{}}}writeSettings(a){let c=this.getConfigDir();b.existsSync(c)||b.mkdirSync(c,{recursive:!0}),b.writeFileSync(this.getSettingsPath(),JSON.stringify(a,null,2),"utf-8")}getHookArray(a,b){let c=a[b];return Array.isArray(c)?c:[]}hasHook(a,b){return a.some(a=>a.hooks?.some(a=>a.command?.includes(b)))}}],52350)},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])},941750,a=>{"use strict";var b=a.i(233405),c=a.i(522734),d=a.i(761469),e=a.i(835032),f=a.i(897667);async function g(a){let e=await d.db.task.findUnique({where:{id:a},include:{project:!0}});if(!e)return{kind:"error",status:404,message:"Task not found"};if(!e.project?.localPath)return{kind:"error",status:400,message:"Project has no local path"};let f=e.baseBranch||"main",g=e.project.localPath,h=await d.db.taskExecution.findFirst({where:{taskId:a},orderBy:{createdAt:"desc"}});if(!h)return{kind:"empty"};let{forkCommit:i,mergeCommit:j,branchTipCommit:k,worktreeBranch:l,worktreePath:m}=h;if(j&&i){let a=k||j;return{kind:"ok",data:{diffCwd:g,diffTarget:`${i}..${a}`,baseRef:i,endRef:a,worktreePath:null}}}if(i&&m&&(0,c.existsSync)(m))return{kind:"ok",data:{diffCwd:m,diffTarget:i,baseRef:i,endRef:null,worktreePath:m}};if(i&&!m)return{kind:"ok",data:{diffCwd:g,diffTarget:i,baseRef:i,endRef:null,worktreePath:null}};if(l)try{let a=(0,b.execFileSync)("git",["merge-base",f,l],{cwd:g,encoding:"utf-8",timeout:5e3}).trim(),d=m&&(0,c.existsSync)(m)?m:g;return{kind:"ok",data:{diffCwd:d,diffTarget:a,baseRef:a,endRef:null,worktreePath:m&&(0,c.existsSync)(m)?m:null}}}catch{return{kind:"branch-deleted"}}return{kind:"empty"}}var h=a.i(103071);function i(a,c,d=1048576){try{return(0,b.execFileSync)("git",a,{cwd:c,encoding:"utf-8",timeout:3e4,maxBuffer:d,stdio:["pipe","pipe","pipe"]}).trim()}catch{return null}}async function j(a){let b=await d.db.task.findUnique({where:{id:a},include:{project:!0}});if(!b||!b.project)return null;let e=b.project.localPath??null,f=[],h=null,j=0,k=null,l=e||process.cwd();if(e){let b=await g(a);if("ok"===b.kind){let{diffCwd:a,diffTarget:c}=b.data;l=a;let d=c.includes("..")?c:`${c}..HEAD`,e=i(["diff","--numstat",c],a,0x4000000);e&&(f=function(a){let b=[];for(let c of a.split("\n")){let a=c.trim();if(!a)continue;let d=a.split(" ");if(d.length<3)continue;let[e,f,...g]=d,h=g.join(" ");"-"===e&&"-"===f?b.push({filename:h,added:0,removed:0,isBinary:!0}):b.push({filename:h,added:parseInt(e,10)||0,removed:parseInt(f,10)||0,isBinary:!1})}let c=/^diff --git a\/(.+) b\/(.+)$/,d=new Map;if("".trim())for(let a of"".split(/(?=^diff --git )/m)){if(!a.trim())continue;let b=a.split("\n")[0],e=c.exec(b);if(!e)continue;let f=e[2],g=a;0;d.set(f,g)}let e=b.map(a=>({filename:a.filename,added:a.added,removed:a.removed,isBinary:a.isBinary,patch:d.get(a.filename)??""})),f=e.reduce((a,b)=>a+b.added,0),g=e.reduce((a,b)=>a+b.removed,0);return{files:e,totalAdded:f,totalRemoved:g}}(e).files),h=i(["log","--oneline",d],a)||null;let g=i(["rev-list","--count",d],a);j=g&&parseInt(g,10)||0;let m=i(["diff",c],a,0x4000000);m&&(k=m.length>12288?m.slice(0,12288)+"\n...(diff truncated)":m)}}if(0===f.length&&0===j){let b=await d.db.taskExecution.findFirst({where:{taskId:a},orderBy:{createdAt:"desc"},select:{gitLog:!0,worktreePath:!0}});b?.gitLog&&(h=b.gitLog,j=b.gitLog.split("\n").filter(Boolean).length),b?.worktreePath&&(0,c.existsSync)(b.worktreePath)&&(l=b.worktreePath)}if(0===f.length&&0===j)return null;let m=(await d.db.projectAsset.findMany({where:{taskId:a},orderBy:{createdAt:"asc"},select:{filename:!0,description:!0}})).map(a=>({filename:a.filename,description:a.description}));return{taskId:a,taskTitle:b.title,projectId:b.projectId,projectName:b.project.name,files:f,commitLog:h,commitCount:j,diffText:k,assets:m,cwd:l}}async function k(a){let b=a.files.slice(0,60).map(a=>a.isBinary?`${a.filename} (binary)`:`${a.filename} (+${a.added}/-${a.removed})`).join("\n")||"(无文件清单)",d=`你是资深工程师。下面是一个刚完成的开发任务的代码改动信息,请用简洁中文写一段「改动摘要」:说明这次改动做了什么、解决了什么问题、主要涉及哪些模块或逻辑。要求 3-6 句、纯文本,不要 markdown 标题,不要逐条罗列文件(文件清单会另外展示)。
|
|
29
|
-
|
|
30
|
-
任务标题:${a.taskTitle}
|
|
31
|
-
|
|
32
|
-
提交记录:
|
|
33
|
-
${a.commitLog??"(无提交记录)"}
|
|
34
|
-
|
|
35
|
-
变更文件(共 ${a.files.length} 个):
|
|
36
|
-
${b}
|
|
37
|
-
|
|
38
|
-
diff(可能已截断):
|
|
39
|
-
\`\`\`diff
|
|
40
|
-
${a.diffText??"(无 diff)"}
|
|
41
|
-
\`\`\``,e=(0,c.existsSync)(a.cwd)?a.cwd:process.cwd(),g=await (0,f.aiQuery)(d,e,{maxTurns:1});if(g){let a=g.replace(/^[#*\->"'\s]+/,"").trim();if(a)return a}var h=a.commitLog;if(!h)return null;let i=h.split("\n").filter(Boolean);if(0===i.length)return null;let j=i[0].replace(/^[a-f0-9]+\s+/,"");return 1===i.length?j:`${i.length} 个提交:${j}`}async function l(a,b={}){let c=b.kind??"done",f=null;try{f=await j(a)}catch(a){console.error("[captureTaskOverview] Failed to gather change data:",a);return}if(!f)return void console.error(`[captureTaskOverview] No changes for task=${a.slice(0,8)} — skip`);let g=f;(async()=>{try{let b=await k(g),f=new Date().toISOString(),i=function(a,b,c,d="done"){let e=[];if(e.push("cancelled"===d?"> 本笔记由任务取消时自动生成,记录已产生的改动,作为下次重启该任务的参考经验。":"> 本笔记由任务完成时自动生成,记录本次任务的改动概览,便于后续复盘与排查。"),e.push(""),e.push("## 改动摘要"),e.push(b??"(未能生成改动摘要)"),e.push(""),e.push("## 文件清单"),a.files.length>0){let b=a.files.slice(0,100);for(let a of b)e.push(a.isBinary?`- \`${a.filename}\`(二进制)`:`- \`${a.filename}\` (+${a.added} / -${a.removed})`);a.files.length>b.length&&e.push(`- …其余 ${a.files.length-b.length} 个文件`),e.push(""),e.push(`共 ${a.files.length} 个文件、${a.commitCount} 个提交。`)}else e.push(`(未能获取精确文件清单,本次约 ${a.commitCount} 个提交。)`);if(e.push(""),e.push("## 相关附件与参考资料"),a.assets.length>0)for(let b of a.assets)e.push(b.description?`- ${b.filename} — ${b.description}`:`- ${b.filename}`);else e.push("(无)");return e.push(""),e.push("---"),e.push(`> 关联任务:${a.taskTitle} (\`${a.taskId}\`)`),e.push(`> 项目:${a.projectName}`),e.push(`> 生成时间:${c}`),e.join("\n")}(g,b,f,c),j=function(a,b="done"){return`${"cancelled"===b?"任务概览(已取消):":"任务概览:"}${a}`.slice(0,200)}(g.taskTitle,c),l=await d.db.projectNote.create({data:{title:j,content:i,category:h.TASK_OVERVIEW_CATEGORY,projectId:g.projectId,taskId:g.taskId}});await (0,e.syncNoteToFts)(d.db,{id:l.id,title:l.title,content:l.content}),console.error(`[captureTaskOverview] Note created: ${l.id} for task=${a.slice(0,8)}`)}catch(a){console.error("[captureTaskOverview] Failed to create overview note:",a)}})()}a.s(["captureTaskOverview",0,l],941750)},268548,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[externals]_node_util_0xr.y7p._.js"].map(b=>a.l(b))).then(()=>b(812057)))},534777,a=>{a.v(a=>Promise.resolve().then(()=>a(224361)))},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)))}];
|
|
42
|
-
|
|
43
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__0k6oo0n._.js.map
|