tower-studio 0.2.21 → 0.2.23
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/build-manifest.json +3 -3
- package/.next/standalone/.next/prerender-manifest.json +3 -3
- 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 +1 -1
- package/.next/standalone/.next/server/app/_not-found/page/server-reference-manifest.json +25 -25
- 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.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.nft.json +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.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.nft.json +1 -1
- 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/sessions/route.js.nft.json +1 -1
- 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.nft.json +1 -1
- 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.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/start/route.js.nft.json +1 -1
- 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]/merge/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/missions/page/react-loadable-manifest.json +1 -1
- package/.next/standalone/.next/server/app/missions/page/server-reference-manifest.json +55 -55
- 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 +1 -1
- package/.next/standalone/.next/server/app/onboarding/page/server-reference-manifest.json +25 -25
- 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 +1 -1
- package/.next/standalone/.next/server/app/page/server-reference-manifest.json +25 -25
- 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 +1 -1
- package/.next/standalone/.next/server/app/settings/page/server-reference-manifest.json +106 -82
- package/.next/standalone/.next/server/app/settings/page.js +2 -2
- 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 +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/archive/page/server-reference-manifest.json +86 -86
- 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 +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/assets/page/server-reference-manifest.json +80 -80
- 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]/notes/page/react-loadable-manifest.json +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/notes/page/server-reference-manifest.json +63 -63
- 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 +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/page/server-reference-manifest.json +59 -59
- 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 +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page/server-reference-manifest.json +25 -25
- 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 +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/versions/page/server-reference-manifest.json +62 -62
- 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 +2 -2
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page/server-reference-manifest.json +68 -68
- 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 +1 -1
- package/.next/standalone/.next/server/app/workspaces/page/server-reference-manifest.json +45 -45
- 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/chunks/0se9_next_dist_esm_build_templates_app-route_0eh8dj_.js +5 -5
- package/.next/standalone/.next/server/chunks/0se9_next_dist_esm_build_templates_app-route_0hrprmi.js +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__03j20vp._.js +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__05se6yk._.js +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__05~g1fm._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__06m1r8x._.js +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0_6swdz._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0hc9vir._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0o3iihg._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0otyifi._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0q.piu~._.js +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0qdvear._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0sy6lau._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0umocfj._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0wuzc5o._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0xot7fu._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0z-k6vg._.js +1 -1
- package/.next/standalone/.next/server/chunks/src_0bkvm8c._.js +1 -1
- package/.next/standalone/.next/server/chunks/src_lib_ai_0xx6y51._.js +1 -1
- 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/{[root-of-the-server]__0hy3~f.._.js → [root-of-the-server]__0-o.l41._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__02-6df-._.js +3 -3
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0th0_fo._.js → [root-of-the-server]__03e009u._.js} +4 -4
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0e_-mj-._.js +3 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0fzkdjl._.js +3 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0jti4~k._.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]__0pu-v0l._.js +3 -3
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0q-abig._.js → [root-of-the-server]__0s-a4ku._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0ty1ao1._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0um1ugs._.js +3 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0z7je5_._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__10ol5vl._.js → [root-of-the-server]__12p2zz2._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__134_xv.._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__13vgkq5._.js +3 -3
- package/.next/standalone/.next/server/chunks/ssr/_0-9.ea2._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_012.igw._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_0385-.g._.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/_04y89b3._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_04yogxq._.js +7 -0
- package/.next/standalone/.next/server/chunks/ssr/{_0rqf5w7._.js → _05xdaz3._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_0unw1fq._.js → _070t_mh._.js} +3 -3
- package/.next/standalone/.next/server/chunks/ssr/_08z-g~5._.js +3 -3
- package/.next/standalone/.next/server/chunks/ssr/_0_vjay8._.js +3 -3
- package/.next/standalone/.next/server/chunks/ssr/_0bk06da._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_0cc0gt8._.js +7 -0
- package/.next/standalone/.next/server/chunks/ssr/_0cj9a7y._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_0aw2qq6._.js → _0hzckhd._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_0jg.s-g._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0m.4akk._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_0oq26rv._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_0r6gweb._.js +3 -3
- package/.next/standalone/.next/server/chunks/ssr/_0rdyrfd._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0rt8jf_._.js +3 -3
- package/.next/standalone/.next/server/chunks/ssr/_0ueyys5._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0uuzh5m._.js +3 -3
- package/.next/standalone/.next/server/chunks/ssr/_0z-b00b._.js +7 -0
- package/.next/standalone/.next/server/chunks/ssr/_0~aon4t._.js +3 -3
- package/.next/standalone/.next/server/chunks/ssr/{_09j4imi._.js → _0~v4z8z._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_10-.n35._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/src_075s.rk._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_0djxlqx._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_0eufeyj._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_actions_agent-actions_ts_0~wc.sy._.js +1 -1
- 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]_tasks_[taskId]_task-page-client_tsx_02t7blt._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{src_lib_0153vha._.js → src_lib_0.aklj3._.js} +1 -1
- package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
- 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 +269 -245
- package/.next/standalone/.next/static/chunks/{0ol16355~utic.js → 0-.9k92iyul5o.js} +2 -2
- package/.next/standalone/.next/static/chunks/0.qj9vorfgtnt.js +1 -0
- package/.next/standalone/.next/static/chunks/00-6_m40h14vl.js +1 -0
- package/.next/standalone/.next/static/chunks/02.ihz-~spbi-.js +1 -0
- package/.next/standalone/.next/static/chunks/{0f1gk0.5slqqh.js → 04axhlp_leiii.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0o8jf4a30e_ri.js → 05a6uzgclxdsk.js} +2 -2
- package/.next/standalone/.next/static/chunks/{01tnwkggn5.s-.js → 099eecj285cbx.js} +1 -1
- package/.next/standalone/.next/static/chunks/0c~0amyhws3l0.js +1 -0
- package/.next/standalone/.next/static/chunks/{05.wfh773dxo9.js → 0e8r37m0q.z0p.js} +1 -1
- package/.next/standalone/.next/static/chunks/0ik7-_3wrtspq.js +1 -0
- package/.next/standalone/.next/static/chunks/0ima0i0p489ty.js +1 -0
- package/.next/standalone/.next/static/chunks/{0rwca.wrfl3b9.js → 0p9zhbwmnn0j4.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0pg_rf2cch5pv.js → 0rec91xfsdv8r.js} +1 -1
- package/.next/standalone/.next/static/chunks/0so-w5.m3jaxi.js +1 -0
- package/.next/standalone/.next/static/chunks/0x3tiuoe.l18z.js +1 -0
- package/.next/standalone/.next/static/chunks/{0j16~sj50uq_m.js → 0zfszxiw4cx9b.js} +1 -1
- package/.next/standalone/.next/static/chunks/0ztty8z0obk5f.js +1 -0
- package/.next/standalone/.next/static/chunks/1007_ur3fj.~m.js +1 -0
- package/.next/standalone/.next/static/chunks/{0aq7ksckxr-8-.js → 10r4y1zzk24jy.js} +2 -2
- package/.next/standalone/.next/static/chunks/10vl5vq1_rh1..js +1 -0
- package/.next/standalone/.next/static/chunks/120x-nmim1wfz.js +1 -0
- package/.next/standalone/.next/static/chunks/{0ip_37zz4f080.js → 12iivlft6u_tt.js} +1 -1
- package/.next/standalone/.next/static/chunks/134onqxk2foh5.js +5 -0
- package/.next/standalone/.next/static/chunks/{00p3.tda-56.l.js → 16r-tz37aqyoa.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0srx~7bncp64q.js → 16ukg_cswejw4.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0vyvdsh1mkl5d.js → 17n~0msyl8bur.js} +1 -1
- package/.next/standalone/package.json +1 -1
- package/dist/mcp-server.cjs +19 -5
- package/package.json +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0q~lxnz._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_00jadm8._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_03.a~r1._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_053zyvm._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_08x3jaa._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_09r0_z9._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0a554d8._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0bmywa6._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0ghovf3._.js +0 -4
- package/.next/standalone/.next/server/chunks/ssr/_0jyj~t3._.js +0 -7
- package/.next/standalone/.next/server/chunks/ssr/_0yakvlq._.js +0 -7
- package/.next/standalone/.next/server/chunks/ssr/_13r9dxk._.js +0 -7
- package/.next/standalone/.next/static/chunks/00fv~h4rni5hv.js +0 -1
- package/.next/standalone/.next/static/chunks/02bobmiee9ss8.js +0 -1
- package/.next/standalone/.next/static/chunks/039ntokp82-em.js +0 -1
- package/.next/standalone/.next/static/chunks/04yrp-8ps3q_-.js +0 -1
- package/.next/standalone/.next/static/chunks/06~1n6of8ll__.js +0 -5
- package/.next/standalone/.next/static/chunks/08rokhw7bg_zn.js +0 -1
- package/.next/standalone/.next/static/chunks/0_n2l3jehwcsq.js +0 -1
- package/.next/standalone/.next/static/chunks/0d4~4k4hv01ah.js +0 -1
- package/.next/standalone/.next/static/chunks/0pwe0m3i1rro1.js +0 -1
- package/.next/standalone/.next/static/chunks/10h~50kdsu5fx.js +0 -1
- package/.next/standalone/.next/static/chunks/15esfko8asvh7.js +0 -1
- package/.next/standalone/.next/static/chunks/16sn2ij01qrfz.js +0 -1
- package/.next/standalone/.next/static/chunks/17oxpxjm7_smn.js +0 -1
- /package/.next/standalone/.next/static/{zosKR5i2aA392qu0Ka1j9 → l8InE32VLIGdUBVP3BJKt}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{zosKR5i2aA392qu0Ka1j9 → l8InE32VLIGdUBVP3BJKt}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/.next/static/{zosKR5i2aA392qu0Ka1j9 → l8InE32VLIGdUBVP3BJKt}/_ssgManifest.js +0 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[279711,e=>{"use strict";class t{providers=new Map;register(e){this.providers.set(e.name,e)}get(e){return this.providers.get(e)}getAll(){return Array.from(this.providers.values())}getCliAdapter(e){return this.providers.get(e)?.cli?.adapter??null}getQueryAdapter(e,t){let r=this.providers.get(e);return r?"api"===t?r.api?.adapter??null:r.cliQuery?.adapter??null:null}getAllowedCommands(){let e=[];for(let t of this.providers.values())t.cli?.command&&e.push(t.cli.command);return e}async getAvailableProviders(){let e=[];for(let t of this.providers.values()){let r=!!t.cli&&await t.cli.adapter.isAvailable(),o=r&&t.cli?await t.cli.adapter.getVersion():null,s=!!t.api&&!!process.env[t.api.keyEnvVar],i=!!t.api&&s;e.push({name:t.name,displayName:t.displayName,cli:{available:r,version:o},api:{available:i,keyConfigured:s}})}return e}}var r=e.i(472129),o=e.i(902157),s=e.i(660526),i=e.i(750227),n=e.i(769310),a=e.i(53674);let l=["o4-mini","o3","gpt-4.1","gpt-4.1-mini","gpt-4.1-nano","codex-mini-latest"],c=globalThis;if(!c.__providerRegistry){let d=new t;d.register({name:"claude",displayName:"Claude Code",agentFieldValue:"CLAUDE_CODE",cli:{command:"claude",adapter:new r.ClaudeCliAdapter},models:{cli:["sonnet","opus","haiku","claude-sonnet-4-6","claude-opus-4-6","claude-haiku-4-5-20251001"],api:[]}}),d.register({name:"codex",displayName:"Codex CLI",agentFieldValue:"CODEX_CLI",cli:{command:"codex",adapter:new class t{buildSpawnArgs(e){let t=[];e.resumeSessionId?t.push("resume",e.resumeSessionId):e.continueLatest?t.push("resume","--last"):(t.push("--full-auto"),e.extraArgs?.length&&t.push(...e.extraArgs),e.prompt&&t.push(e.prompt));let r={...e.envOverrides??{}};return{command:this.resolveCommand(),args:t,env:r}}buildEnvOverrides(e){let t={TOWER_TASK_ID:e.taskId,TOWER_TASK_TITLE:e.taskTitle,TOWER_STARTED_AT:new Date().toISOString(),TOWER_API_URL:e.apiUrl};return e.callbackUrl&&(t.CALLBACK_URL=e.callbackUrl),t}async installHooks(e){try{let e=this.readHooks(),t=(0,a.getPackageRoot)().replace(/\\/g,"/"),r=i.join(t,"scripts","session-start-hook.js").replace(/\\/g,"/"),o=i.join(t,"scripts","post-tool-hook.js").replace(/\\/g,"/"),s=i.join(t,"scripts","stop-hook.js").replace(/\\/g,"/"),n=!1;return n=this.upsertHook(e,"SessionStart","session-start-hook.js",{hooks:[{command:`node "${r}"`,timeout:5,type:"command"}]})||n,n=this.upsertHook(e,"PostToolUse","post-tool-hook.js",{hooks:[{command:`node "${o}"`,timeout:10,type:"command"}],matcher:"Write|Edit|MultiEdit"})||n,(n=this.upsertHook(e,"Stop","stop-hook.js",{hooks:[{command:`node "${s}"`,timeout:5,type:"command"}]})||n)&&(this.writeHooks(e),this.ensureHooksFeatureEnabled()),{ok:!0,method:"file",detail:this.getHooksPath()}}catch(e){return{ok:!1,method:"file",detail:this.getHooksPath(),error:e instanceof Error?e.message:String(e)}}}async repairHookPaths(){try{let e=this.readHooks(),t=(0,a.getPackageRoot)().replace(/\\/g,"/"),r=!1;for(let[o,s]of[["SessionStart","session-start-hook.js"],["PostToolUse","post-tool-hook.js"],["Stop","stop-hook.js"]]){let n=this.getHookArray(e,o),a=n.findIndex(e=>e?.hooks?.some?.(e=>e.command?.includes(s)));if(a<0)continue;let l=i.join(t,"scripts",s).replace(/\\/g,"/"),c=`node "${l}"`,d=n[a]?.hooks?.[0];d&&d.command!==c&&(d.command=c,e[o]=n,r=!0)}r&&(this.writeHooks(e),this.ensureHooksFeatureEnabled())}catch{}}upsertHook(e,t,r,o){let s=this.getHookArray(e,t),i=o?.hooks?.[0]?.command,n=s.findIndex(e=>e?.hooks?.some?.(e=>e.command?.includes(r)));if(n>=0){if(s[n]?.hooks?.[0]?.command===i)return!1;s.splice(n,1)}return s.push(o),e[t]=s,!0}async uninstallHooks(){try{let e=this.readHooks(),t=["session-start-hook.js","post-tool-hook.js","stop-hook.js"];for(let r of["SessionStart","PostToolUse","Stop"]){let o=this.getHookArray(e,r);e[r]=o.filter(e=>!e.hooks?.some(e=>t.some(t=>e.command?.includes(t))))}return this.writeHooks(e),{ok:!0,method:"file",detail:this.getHooksPath()}}catch(e){return{ok:!1,method:"file",detail:this.getHooksPath(),error:e instanceof Error?e.message:String(e)}}}async isHooksInstalled(){let e=this.readHooks(),t=this.getHookArray(e,"PostToolUse");return this.hasHook(t,"post-tool-hook.js")}async installMcp(e,t={}){let r=this.resolveCommand(),o=["mcp","add",e.name];if(e.env)for(let[t,r]of Object.entries(e.env))o.push("--env",`${t}=${r}`);o.push("--",e.command,...e.args);try{return await this.runCli(r,["mcp","remove",e.name],t.cwd).catch(()=>{}),await this.runCli(r,o,t.cwd),{ok:!0,method:"cli",detail:`${r} ${o.join(" ")}`}}catch(e){return{ok:!1,method:"cli",detail:`${r} ${o.join(" ")}`,error:e instanceof Error?e.message:String(e)}}}async uninstallMcp(e,t={}){let r=this.resolveCommand(),o=["mcp","remove",e];try{return await this.runCli(r,o,t.cwd),{ok:!0,method:"cli",detail:`${r} ${o.join(" ")}`}}catch(e){return{ok:!1,method:"cli",detail:`${r} ${o.join(" ")}`,error:e instanceof Error?e.message:String(e)}}}async isMcpInstalled(e,t={}){let r=this.resolveCommand();try{return await this.runCli(r,["mcp","get",e],t.cwd,5e3),!0}catch{return!1}}async installSkill(e,t){let r=i.join(this.getConfigDir(),"skills",e);try{if(!o.existsSync(t))return{ok:!1,method:"symlink",detail:r,error:`Source skill dir does not exist: ${t}`};o.mkdirSync(i.dirname(r),{recursive:!0});let e=await o.promises.lstat(r).catch(()=>null);if(e)if(!(e.isSymbolicLink()||"win32"===process.platform&&e.isDirectory()))return{ok:!1,method:"symlink",detail:r,error:`Refusing to overwrite non-symlink at ${r}`};else try{let e=await o.promises.readlink(r);if(i.resolve(e)===i.resolve(t))return{ok:!0,method:"symlink",detail:`${r} → ${t} (already)`};await o.promises.unlink(r)}catch{if(!e.isSymbolicLink())return{ok:!1,method:"symlink",detail:r,error:`Refusing to overwrite non-symlink at ${r}`}}return await o.promises.symlink(t,r,"dir"),{ok:!0,method:"symlink",detail:`${r} → ${t}`}}catch(e){return{ok:!1,method:"symlink",detail:r,error:e instanceof Error?e.message:String(e)}}}async uninstallSkill(e){let t=i.join(this.getConfigDir(),"skills",e);try{let e=await o.promises.lstat(t).catch(()=>null);if(!e)return{ok:!0,method:"symlink",detail:`${t} (already absent)`};if(!e.isSymbolicLink())return{ok:!1,method:"symlink",detail:t,error:`Refusing to remove non-symlink at ${t}`};return await o.promises.unlink(t),{ok:!0,method:"symlink",detail:t}}catch(e){return{ok:!1,method:"symlink",detail:t,error:e instanceof Error?e.message:String(e)}}}async isSkillInstalled(e,t){let r=i.join(this.getConfigDir(),"skills",e);try{if(!(await o.promises.lstat(r)).isSymbolicLink())return!1;if(!t)return!0;let e=await o.promises.readlink(r),s=i.isAbsolute(e)?e:i.resolve(i.dirname(r),e);return i.resolve(s)===i.resolve(t)}catch{return!1}}async runCli(t,r,o,s=1e4){let{execFile:i}=await e.A(482848),{promisify:n}=await e.A(268548),a=n(i),{stdout:l}=await a(t,r,{cwd:o,timeout:s});return l}async isAvailable(){return null!==await this.getVersion()}async getVersion(){try{let{execFile:t}=await e.A(144264),{promisify:r}=await e.A(534777),{resolveSpawnTarget:o}=await e.A(200628),s=r(t),i=await o(this.resolveCommand(),["--version"]),{stdout:n}=await s(i.command,i.args,{timeout:5e3});return n.trim()||null}catch{return null}}async getModels(){return l}getConfigDir(){return i.join(s.homedir(),".codex")}getSettingsPath(){return i.join(this.getConfigDir(),"config.toml")}getSessionsDir(){return i.join(this.getConfigDir(),"sessions")}getApiKeyInfo(){return{envVar:"OPENAI_API_KEY",required:!1}}buildHelloProbeArgs(e){return{command:this.resolveCommand(),args:["exec",e]}}resolveCommand(){return process.env.CODEX_CLI_PATH?process.env.CODEX_CLI_PATH:(0,n.resolveCommandPathSync)("codex")}getHooksPath(){return i.join(this.getConfigDir(),"hooks.json")}readHooks(){try{return JSON.parse(o.readFileSync(this.getHooksPath(),"utf-8")).hooks??{}}catch{return{}}}writeHooks(e){let t=this.getConfigDir();o.existsSync(t)||o.mkdirSync(t,{recursive:!0}),o.writeFileSync(this.getHooksPath(),JSON.stringify({hooks:e},null,2),"utf-8")}ensureHooksFeatureEnabled(){let e=this.getSettingsPath(),t="";try{t=o.readFileSync(e,"utf-8")}catch{}if(/codex_hooks\s*=\s*true/.test(t))return;/\[features\]/.test(t)?t=t.replace(/\[features\]/,"[features]\ncodex_hooks = true"):t+="\n[features]\ncodex_hooks = true\n";let r=this.getConfigDir();o.existsSync(r)||o.mkdirSync(r,{recursive:!0}),o.writeFileSync(e,t,"utf-8")}getHookArray(e,t){let r=e[t];return Array.isArray(r)?r:[]}hasHook(e,t){return e.some(e=>e.hooks?.some(e=>e.command?.includes(t)))}}},models:{cli:["o4-mini","o3","gpt-4.1","gpt-4.1-mini","gpt-4.1-nano","codex-mini-latest"],api:[]}}),c.__providerRegistry=d}let d=c.__providerRegistry;e.s(["providerRegistry",0,d],279711)},173215,e=>{"use strict";var t=e.i(902157),r=e.i(660526),o=e.i(750227),s=e.i(279711),i=e.i(192520),n=e.i(53674);let a="tower";function l(){let e=(0,i.getTowerDir)(),t=o.join((0,r.homedir)(),".tower");if(o.resolve(e)===o.resolve(t))return"tower";let s=o.basename(e),n=s.match(/^\.?tower-(.+)$/);return n?`tower-${c(n[1])}`:`tower-${c(s)}`}function c(e){return e.replace(/[^a-z0-9_-]/gi,"-").toLowerCase().slice(0,32)}async function d(e,c){let d,m,u,h,p=s.providerRegistry.get(e),k=p?.cli?.adapter;if(!k||!await k.isAvailable())return{provider:e,available:!1,ok:!1};let g="claude"===e?function(e={}){let s=e.homeDir??r.homedir(),i=e.repoRoot??process.cwd(),n=[];return n.push(function(e){let r=o.join(e,".claude","settings.json");if(!t.existsSync(r))return{removed:!1,path:r};try{let e=t.readFileSync(r,"utf-8"),o=JSON.parse(e),s=o.mcpServers;if("object"!=typeof s||null===s||Array.isArray(s)||!("tower"in s))return{removed:!1,path:r};let i=s.tower;return delete s.tower,0===Object.keys(s).length?delete o.mcpServers:o.mcpServers=s,t.writeFileSync(r,JSON.stringify(o,null,2)+"\n","utf-8"),{removed:!0,path:r,removedEntry:i,reason:"wrong-file"}}catch(e){return{removed:!1,path:r,error:e instanceof Error?e.message:String(e)}}}(s)),n.push(function(e,r,s){if(!t.existsSync(e))return{removed:!1,path:e};try{let i=t.readFileSync(e,"utf-8"),n=JSON.parse(i),a=n.mcpServers;if("object"!=typeof a||null===a||Array.isArray(a))return{removed:!1,path:e};let l=a.tower;if(!l)return{removed:!1,path:e};let c=function(e,r){let s,i=e.args;if(!Array.isArray(i))return"foreign-repo";for(let e of i)if("string"==typeof e&&o.isAbsolute(e)){s=e;break}return s?t.existsSync(s)?o.resolve(s).startsWith(o.resolve(r)+o.sep)?"current-repo":"foreign-repo":"missing-path":"foreign-repo"}(l,s);if("current-repo"===c)return{removed:!1,path:e,reason:"alive-current-repo"};return delete a.tower,0===Object.keys(a).length?delete n.mcpServers:n.mcpServers=a,t.writeFileSync(e,JSON.stringify(n,null,2)+"\n","utf-8"),{removed:!0,path:e,removedEntry:l,reason:`${r}:${c}`}}catch(t){return{removed:!1,path:e,error:t instanceof Error?t.message:String(t)}}}(o.join(s,".mcp.json"),"home-mcp-json",i)),{steps:n,removedAny:n.some(e=>e.removed)}}():void 0,y=(d=(0,n.getPackageRoot)().replace(/\\/g,"/"),m=process.env.DATABASE_URL||`file:${(0,i.getTowerDbPath)().replace(/\\/g,"/")}`,u=`${d}/dist/mcp-server.cjs`,h=l(),(0,t.existsSync)(u)?{name:h,command:"node",args:[u],env:{DATABASE_URL:m}}:{name:h,command:`${d}/node_modules/.bin/tsx`,args:[`${d}/src/mcp/index.ts`],env:{DATABASE_URL:m}}),f=await k.installMcp(y,{scope:"user"}),v=await k.installHooks(c),S=await k.installSkill(a,o.join((0,n.getPackageRoot)(),"skills",a));return{provider:e,available:!0,migration:g,mcp:f,hooks:v,skill:S,ok:f.ok&&v.ok&&S.ok}}e.s(["getTowerMcpName",0,l,"installAllForProvider",0,d],173215)}];
|
|
1
|
+
module.exports=[279711,e=>{"use strict";class t{providers=new Map;register(e){this.providers.set(e.name,e)}get(e){return this.providers.get(e)}getAll(){return Array.from(this.providers.values())}getCliAdapter(e){return this.providers.get(e)?.cli?.adapter??null}getQueryAdapter(e,t){let r=this.providers.get(e);return r?"api"===t?r.api?.adapter??null:r.cliQuery?.adapter??null:null}getAllowedCommands(){let e=[];for(let t of this.providers.values())t.cli?.command&&e.push(t.cli.command);return e}async getAvailableProviders(){let e=[];for(let t of this.providers.values()){let r=!!t.cli&&await t.cli.adapter.isAvailable(),o=r&&t.cli?await t.cli.adapter.getVersion():null,i=!!t.api&&!!process.env[t.api.keyEnvVar],s=!!t.api&&i;e.push({name:t.name,displayName:t.displayName,cli:{available:r,version:o},api:{available:s,keyConfigured:i}})}return e}}var r=e.i(472129),o=e.i(902157),i=e.i(660526),s=e.i(750227),n=e.i(769310),a=e.i(53674);let l=["o4-mini","o3","gpt-4.1","gpt-4.1-mini","gpt-4.1-nano","codex-mini-latest"],c=globalThis;if(!c.__providerRegistry){let d=new t;d.register({name:"claude",displayName:"Claude Code",agentFieldValue:"CLAUDE_CODE",cli:{command:"claude",adapter:new r.ClaudeCliAdapter},models:{cli:["sonnet","opus","haiku","claude-sonnet-4-6","claude-opus-4-6","claude-haiku-4-5-20251001"],api:[]}}),d.register({name:"codex",displayName:"Codex CLI",agentFieldValue:"CODEX_CLI",cli:{command:"codex",adapter:new class t{buildSpawnArgs(e){let t=[];e.resumeSessionId?t.push("resume",e.resumeSessionId):e.continueLatest?t.push("resume","--last"):(t.push("--full-auto"),e.extraArgs?.length&&t.push(...e.extraArgs),e.prompt&&t.push(e.prompt));let r={...e.envOverrides??{}};return{command:this.resolveCommand(),args:t,env:r}}buildEnvOverrides(e){let t={TOWER_TASK_ID:e.taskId,TOWER_TASK_TITLE:e.taskTitle,TOWER_STARTED_AT:new Date().toISOString(),TOWER_API_URL:e.apiUrl};return e.callbackUrl&&(t.CALLBACK_URL=e.callbackUrl),t}async installHooks(e){try{let e=this.readHooks(),t=(0,a.getPackageRoot)().replace(/\\/g,"/"),r=s.join(t,"scripts","session-start-hook.js").replace(/\\/g,"/"),o=s.join(t,"scripts","post-tool-hook.js").replace(/\\/g,"/"),i=s.join(t,"scripts","stop-hook.js").replace(/\\/g,"/"),n=!1;return n=this.upsertHook(e,"SessionStart","session-start-hook.js",{hooks:[{command:`node "${r}"`,timeout:5,type:"command"}]})||n,n=this.upsertHook(e,"PostToolUse","post-tool-hook.js",{hooks:[{command:`node "${o}"`,timeout:10,type:"command"}],matcher:"Write|Edit|MultiEdit"})||n,(n=this.upsertHook(e,"Stop","stop-hook.js",{hooks:[{command:`node "${i}"`,timeout:5,type:"command"}]})||n)&&(this.writeHooks(e),this.ensureHooksFeatureEnabled()),{ok:!0,method:"file",detail:this.getHooksPath()}}catch(e){return{ok:!1,method:"file",detail:this.getHooksPath(),error:e instanceof Error?e.message:String(e)}}}async repairHookPaths(){try{let e=this.readHooks(),t=(0,a.getPackageRoot)().replace(/\\/g,"/"),r=!1;for(let[o,i]of[["SessionStart","session-start-hook.js"],["PostToolUse","post-tool-hook.js"],["Stop","stop-hook.js"]]){let n=this.getHookArray(e,o),a=n.findIndex(e=>e?.hooks?.some?.(e=>e.command?.includes(i)));if(a<0)continue;let l=s.join(t,"scripts",i).replace(/\\/g,"/"),c=`node "${l}"`,d=n[a]?.hooks?.[0];d&&d.command!==c&&(d.command=c,e[o]=n,r=!0)}r&&(this.writeHooks(e),this.ensureHooksFeatureEnabled())}catch{}}upsertHook(e,t,r,o){let i=this.getHookArray(e,t),s=o?.hooks?.[0]?.command,n=i.findIndex(e=>e?.hooks?.some?.(e=>e.command?.includes(r)));if(n>=0){if(i[n]?.hooks?.[0]?.command===s)return!1;i.splice(n,1)}return i.push(o),e[t]=i,!0}async uninstallHooks(){try{let e=this.readHooks(),t=["session-start-hook.js","post-tool-hook.js","stop-hook.js"];for(let r of["SessionStart","PostToolUse","Stop"]){let o=this.getHookArray(e,r);e[r]=o.filter(e=>!e.hooks?.some(e=>t.some(t=>e.command?.includes(t))))}return this.writeHooks(e),{ok:!0,method:"file",detail:this.getHooksPath()}}catch(e){return{ok:!1,method:"file",detail:this.getHooksPath(),error:e instanceof Error?e.message:String(e)}}}async isHooksInstalled(){let e=this.readHooks(),t=this.getHookArray(e,"PostToolUse");return this.hasHook(t,"post-tool-hook.js")}async installMcp(e,t={}){let r=this.resolveCommand(),o=["mcp","add",e.name];if(e.env)for(let[t,r]of Object.entries(e.env))o.push("--env",`${t}=${r}`);o.push("--",e.command,...e.args);try{return await this.runCli(r,["mcp","remove",e.name],t.cwd).catch(()=>{}),await this.runCli(r,o,t.cwd),{ok:!0,method:"cli",detail:`${r} ${o.join(" ")}`}}catch(e){return{ok:!1,method:"cli",detail:`${r} ${o.join(" ")}`,error:e instanceof Error?e.message:String(e)}}}async uninstallMcp(e,t={}){let r=this.resolveCommand(),o=["mcp","remove",e];try{return await this.runCli(r,o,t.cwd),{ok:!0,method:"cli",detail:`${r} ${o.join(" ")}`}}catch(e){return{ok:!1,method:"cli",detail:`${r} ${o.join(" ")}`,error:e instanceof Error?e.message:String(e)}}}async isMcpInstalled(e,t={}){let r=this.resolveCommand();try{return await this.runCli(r,["mcp","get",e],t.cwd,5e3),!0}catch{return!1}}async installSkill(e,t){let r=s.join(this.getConfigDir(),"skills",e);try{if(!o.existsSync(t))return{ok:!1,method:"symlink",detail:r,error:`Source skill dir does not exist: ${t}`};o.mkdirSync(s.dirname(r),{recursive:!0});let e=await o.promises.lstat(r).catch(()=>null);if(e)if(!(e.isSymbolicLink()||"win32"===process.platform&&e.isDirectory()))return{ok:!1,method:"symlink",detail:r,error:`Refusing to overwrite non-symlink at ${r}`};else try{let e=await o.promises.readlink(r);if(s.resolve(e)===s.resolve(t))return{ok:!0,method:"symlink",detail:`${r} → ${t} (already)`};await o.promises.unlink(r)}catch{if(!e.isSymbolicLink())return{ok:!1,method:"symlink",detail:r,error:`Refusing to overwrite non-symlink at ${r}`}}return await o.promises.symlink(t,r,"dir"),{ok:!0,method:"symlink",detail:`${r} → ${t}`}}catch(e){return{ok:!1,method:"symlink",detail:r,error:e instanceof Error?e.message:String(e)}}}async uninstallSkill(e){let t=s.join(this.getConfigDir(),"skills",e);try{let e=await o.promises.lstat(t).catch(()=>null);if(!e)return{ok:!0,method:"symlink",detail:`${t} (already absent)`};if(!e.isSymbolicLink())return{ok:!1,method:"symlink",detail:t,error:`Refusing to remove non-symlink at ${t}`};return await o.promises.unlink(t),{ok:!0,method:"symlink",detail:t}}catch(e){return{ok:!1,method:"symlink",detail:t,error:e instanceof Error?e.message:String(e)}}}async isSkillInstalled(e,t){let r=s.join(this.getConfigDir(),"skills",e);try{if(!(await o.promises.lstat(r)).isSymbolicLink())return!1;if(!t)return!0;let e=await o.promises.readlink(r),i=s.isAbsolute(e)?e:s.resolve(s.dirname(r),e);return s.resolve(i)===s.resolve(t)}catch{return!1}}async runCli(t,r,o,i=1e4){let{execFile:s}=await e.A(482848),{promisify:n}=await e.A(268548),a=n(s),{stdout:l}=await a(t,r,{cwd:o,timeout:i});return l}async isAvailable(){return null!==await this.getVersion()}async getVersion(){try{let{execFile:t}=await e.A(144264),{promisify:r}=await e.A(534777),{resolveSpawnTarget:o}=await e.A(200628),i=r(t),s=await o(this.resolveCommand(),["--version"]),{stdout:n}=await i(s.command,s.args,{timeout:5e3});return n.trim()||null}catch{return null}}async getModels(){return l}getConfigDir(){return s.join(i.homedir(),".codex")}getSettingsPath(){return s.join(this.getConfigDir(),"config.toml")}getSessionsDir(){return s.join(this.getConfigDir(),"sessions")}getApiKeyInfo(){return{envVar:"OPENAI_API_KEY",required:!1}}buildHelloProbeArgs(e){return{command:this.resolveCommand(),args:["exec",e]}}resolveCommand(){return process.env.CODEX_CLI_PATH?process.env.CODEX_CLI_PATH:(0,n.resolveCommandPathSync)("codex")}getHooksPath(){return s.join(this.getConfigDir(),"hooks.json")}readHooks(){try{return JSON.parse(o.readFileSync(this.getHooksPath(),"utf-8")).hooks??{}}catch{return{}}}writeHooks(e){let t=this.getConfigDir();o.existsSync(t)||o.mkdirSync(t,{recursive:!0}),o.writeFileSync(this.getHooksPath(),JSON.stringify({hooks:e},null,2),"utf-8")}ensureHooksFeatureEnabled(){let e=this.getSettingsPath(),t="";try{t=o.readFileSync(e,"utf-8")}catch{}if(/codex_hooks\s*=\s*true/.test(t))return;/\[features\]/.test(t)?t=t.replace(/\[features\]/,"[features]\ncodex_hooks = true"):t+="\n[features]\ncodex_hooks = true\n";let r=this.getConfigDir();o.existsSync(r)||o.mkdirSync(r,{recursive:!0}),o.writeFileSync(e,t,"utf-8")}getHookArray(e,t){let r=e[t];return Array.isArray(r)?r:[]}hasHook(e,t){return e.some(e=>e.hooks?.some(e=>e.command?.includes(t)))}}},models:{cli:["o4-mini","o3","gpt-4.1","gpt-4.1-mini","gpt-4.1-nano","codex-mini-latest"],api:[]}}),c.__providerRegistry=d}let d=c.__providerRegistry;e.s(["providerRegistry",0,d],279711)},173215,e=>{"use strict";var t=e.i(902157),r=e.i(660526),o=e.i(750227),i=e.i(279711),s=e.i(192520),n=e.i(53674);let a="tower";function l(){let e=(0,s.getTowerDir)(),t=o.join((0,r.homedir)(),".tower");if(o.resolve(e)===o.resolve(t))return"tower";let i=o.basename(e),n=i.match(/^\.?tower-(.+)$/);return n?`tower-${c(n[1])}`:`tower-${c(i)}`}function c(e){return e.replace(/[^a-z0-9_-]/gi,"-").toLowerCase().slice(0,32)}function d(){let e=(0,n.getPackageRoot)().replace(/\\/g,"/"),r=process.env.DATABASE_URL||`file:${(0,s.getTowerDbPath)().replace(/\\/g,"/")}`,o=`${e}/dist/mcp-server.cjs`,i=l();return(0,t.existsSync)(o)?{name:i,command:"node",args:[o],env:{DATABASE_URL:r}}:{name:i,command:`${e}/node_modules/.bin/tsx`,args:[`${e}/src/mcp/index.ts`],env:{DATABASE_URL:r}}}async function m(e,s){let l=i.providerRegistry.get(e),c=l?.cli?.adapter;if(!c||!await c.isAvailable())return{provider:e,available:!1,ok:!1};let m="claude"===e?function(e={}){let i=e.homeDir??r.homedir(),s=e.repoRoot??process.cwd(),n=[];return n.push(function(e){let r=o.join(e,".claude","settings.json");if(!t.existsSync(r))return{removed:!1,path:r};try{let e=t.readFileSync(r,"utf-8"),o=JSON.parse(e),i=o.mcpServers;if("object"!=typeof i||null===i||Array.isArray(i)||!("tower"in i))return{removed:!1,path:r};let s=i.tower;return delete i.tower,0===Object.keys(i).length?delete o.mcpServers:o.mcpServers=i,t.writeFileSync(r,JSON.stringify(o,null,2)+"\n","utf-8"),{removed:!0,path:r,removedEntry:s,reason:"wrong-file"}}catch(e){return{removed:!1,path:r,error:e instanceof Error?e.message:String(e)}}}(i)),n.push(function(e,r,i){if(!t.existsSync(e))return{removed:!1,path:e};try{let s=t.readFileSync(e,"utf-8"),n=JSON.parse(s),a=n.mcpServers;if("object"!=typeof a||null===a||Array.isArray(a))return{removed:!1,path:e};let l=a.tower;if(!l)return{removed:!1,path:e};let c=function(e,r){let i,s=e.args;if(!Array.isArray(s))return"foreign-repo";for(let e of s)if("string"==typeof e&&o.isAbsolute(e)){i=e;break}return i?t.existsSync(i)?o.resolve(i).startsWith(o.resolve(r)+o.sep)?"current-repo":"foreign-repo":"missing-path":"foreign-repo"}(l,i);if("current-repo"===c)return{removed:!1,path:e,reason:"alive-current-repo"};return delete a.tower,0===Object.keys(a).length?delete n.mcpServers:n.mcpServers=a,t.writeFileSync(e,JSON.stringify(n,null,2)+"\n","utf-8"),{removed:!0,path:e,removedEntry:l,reason:`${r}:${c}`}}catch(t){return{removed:!1,path:e,error:t instanceof Error?t.message:String(t)}}}(o.join(i,".mcp.json"),"home-mcp-json",s)),{steps:n,removedAny:n.some(e=>e.removed)}}():void 0,u=d(),h=await c.installMcp(u,{scope:"user"}),p=await c.installHooks(s),k=await c.installSkill(a,o.join((0,n.getPackageRoot)(),"skills",a));return{provider:e,available:!0,migration:m,mcp:h,hooks:p,skill:k,ok:h.ok&&p.ok&&k.ok}}e.s(["buildTowerMcpConfig",0,d,"getTowerMcpName",0,l,"installAllForProvider",0,m],173215)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=src_lib_ai_0xx6y51._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[144016,a=>{"use strict";var b=a.i(728778),c=a.i(374637),d=a.i(553798),e=a.i(634910),f=a.i(774881),g=a.i(607219),h=a.i(10390),i=a.i(269280),j=a.i(711796);let k=(0,j.default)("settings-2",[["path",{d:"M14 17H5",key:"gfn3mx"}],["path",{d:"M19 7h-9",key:"6i9tg"}],["circle",{cx:"17",cy:"17",r:"3",key:"18b49y"}],["circle",{cx:"7",cy:"7",r:"3",key:"dfmy0x"}]]);var l=a.i(699570),m=a.i(269876),n=a.i(157551),o=a.i(577565),p=a.i(207339),q=a.i(881107),r=a.i(394869),s=a.i(347165),t=a.i(350739);let u=(0,j.default)("image",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]]);var v=a.i(690251);let w=(0,j.default)("package-check",[["path",{d:"M12 22V12",key:"d0xqtd"}],["path",{d:"m16 17 2 2 4-4",key:"uh5qu3"}],["path",{d:"M21 11.127V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.729l7 4a2 2 0 0 0 2 .001l1.32-.753",key:"kpkbpo"}],["path",{d:"M3.29 7 12 12l8.71-5",key:"19ckod"}],["path",{d:"m7.5 4.27 8.997 5.148",key:"9yrvtv"}]]),x=(0,j.default)("panel-right",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M15 3v18",key:"14nvp0"}]]);var y=a.i(785259),z=a.i(521007),A=a.i(551578),B=a.i(951192);function C(a){if(!a)return"";let b="string"==typeof a?new Date(a):a;if(isNaN(b.getTime()))return"";let c=String(b.getMonth()+1).padStart(2,"0"),d=String(b.getDate()).padStart(2,"0");return`${c}-${d}`}let D=Object.fromEntries(z.BOARD_COLUMNS.map(a=>[a.id,a.color]));function E({children:a,className:c}){return(0,b.jsx)("span",{className:`inline-flex items-center gap-1.5 rounded-md border border-border bg-muted/40 px-2 py-0.5 text-xs text-muted-foreground ${c??""}`,children:a})}function F({task:a,onOpenDetail:d}){let{t:e}=(0,B.useI18n)(),[f,g]=(0,c.useState)(!1),i="CANCELLED"===a.status?"text-muted-foreground line-through decoration-muted-foreground/40":"DONE"===a.status?"text-muted-foreground":"text-foreground";return(0,b.jsxs)("div",{className:"rounded-[10px]",children:[(0,b.jsxs)("button",{type:"button",onClick:()=>g(a=>!a),className:"flex w-full items-center gap-2.5 rounded-[10px] px-2.5 py-2.5 text-left transition-colors hover:bg-muted/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:[(0,b.jsx)(h.ChevronRight,{className:`h-3.5 w-3.5 flex-none text-muted-foreground/60 transition-transform duration-150 ${f?"rotate-90":""}`}),(0,b.jsx)("span",{className:`h-2 w-2 flex-none rounded-full ${D[a.status]??"bg-slate-400"}`}),(0,b.jsx)("span",{className:`text-[13.5px] font-medium ${i}`,children:a.title}),a.labels.map(({label:a})=>(0,b.jsx)("span",{className:"rounded-full border border-border px-1.5 py-px text-[10.5px] text-muted-foreground",style:a.color?{borderColor:a.color+"55",color:a.color}:void 0,children:a.name},a.id)),(0,b.jsx)("span",{className:"flex-1"}),(0,b.jsx)("span",{className:"flex w-16 flex-none justify-center",children:(0,b.jsx)("span",{className:`rounded-[5px] px-1.5 py-px text-[10.5px] font-bold ${z.PRIORITY_CONFIG[a.priority]?.color??z.PRIORITY_CONFIG.LOW.color}`,children:a.priority})}),(0,b.jsx)("span",{className:"h-3 w-px bg-border flex-none"}),(0,b.jsxs)("span",{className:"flex w-[72px] flex-none items-center gap-1.5",children:[(0,b.jsx)("span",{className:`h-1.5 w-1.5 flex-none rounded-full ${D[a.status]??"bg-slate-400"}`}),(0,b.jsx)("span",{className:"truncate text-[10.5px] text-muted-foreground",children:e(`version.taskStatus.${a.status}`)})]}),(0,b.jsx)("span",{className:"h-3 w-px bg-border flex-none"}),(0,b.jsx)("span",{className:"flex w-6 flex-none justify-center",children:d&&(0,b.jsxs)(y.Tooltip,{children:[(0,b.jsx)(y.TooltipTrigger,{render:(0,b.jsx)(l.Button,{variant:"ghost",size:"icon",className:"h-6 w-6 text-muted-foreground",onClick:b=>{b.stopPropagation(),d(a.id)}}),children:(0,b.jsx)(x,{className:"h-3.5 w-3.5"})}),(0,b.jsx)(y.TooltipContent,{children:e("version.detail")})]})})]}),f&&(0,b.jsxs)("div",{className:"flex flex-col gap-2.5 pb-3 pl-[30px] pr-3 pt-1",children:[(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"mb-1.5 flex items-center gap-1.5",children:[(0,b.jsx)(s.FolderOpen,{className:"h-3 w-3 text-muted-foreground/60"}),(0,b.jsx)("span",{className:"text-[11px] font-bold uppercase tracking-wide text-muted-foreground/60",children:e("version.resources")})]}),0===a.assets.length?(0,b.jsx)("p",{className:"text-[12px] italic text-muted-foreground/60",children:e("version.empty.resources")}):(0,b.jsx)("div",{className:"flex flex-wrap gap-2",children:a.assets.map(a=>{var c;let d=a.mimeType?.startsWith("image/");return(0,b.jsxs)("span",{className:"inline-flex cursor-pointer items-center gap-1.5 rounded-lg border border-border bg-background px-2.5 py-1.5 text-[12px] text-foreground shadow-sm transition-colors hover:border-primary/50",children:[d?(0,b.jsx)(u,{className:"h-3.5 w-3.5 text-muted-foreground"}):(0,b.jsx)(t.FileText,{className:"h-3.5 w-3.5 text-muted-foreground"}),(0,b.jsx)("span",{children:a.filename}),null!=a.size&&(0,b.jsx)("span",{className:"text-[11px] text-muted-foreground/60",children:(c=a.size)<1024?`${c} B`:c<1048576?`${Math.round(c/1024)} KB`:`${(c/1048576).toFixed(1)} MB`})]},a.id)})})]}),(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"mb-1.5 flex items-center gap-1.5",children:[(0,b.jsx)(t.FileText,{className:"h-3 w-3 text-muted-foreground/60"}),(0,b.jsx)("span",{className:"text-[11px] font-bold uppercase tracking-wide text-muted-foreground/60",children:e("version.notes")})]}),0===a.notes.length?(0,b.jsx)("p",{className:"text-[12px] italic text-muted-foreground/60",children:e("version.empty.notes")}):(0,b.jsx)("div",{className:"flex flex-col gap-1.5",children:a.notes.map(a=>(0,b.jsx)("div",{className:"rounded-lg border border-border border-l-violet-500/50 bg-background px-2.5 py-2 shadow-sm [border-left-width:3px]",children:(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:"text-[12.5px] font-semibold text-foreground",children:a.title}),a.category&&(0,b.jsx)("span",{className:"rounded-[5px] border border-violet-500/30 bg-violet-500/15 px-1.5 py-px text-[10px] font-bold text-violet-300",children:a.category})]})},a.id))})]})]})]})}function G({version:a,diffStat:d,onEdit:e,onRelease:f,onViewDiff:g,onOpenTaskDetail:i}){var j;let k,{t:m}=(0,B.useI18n)(),[s,t]=(0,c.useState)(a.isCurrent),u="RELEASED"===a.status,x="ACTIVE"===a.status,z=a.tasks.length,D=a.tasks.filter(a=>"DONE"===a.status).length,H=!!(a.releaseCommit||d),I=(k=`${z} ${m("version.tasksCount")}`,D>0&&D<z?`${k} \xb7 ${D} ${m("version.doneCount")}`:D>0&&D===z?`${k} \xb7 ${m("version.allDone")}`:k);return(0,b.jsxs)("div",{className:["overflow-hidden rounded-[14px] border bg-card shadow-sm transition-shadow duration-150 hover:shadow-md",a.isCurrent?"border-border border-l-2 border-l-primary ring-1 ring-primary/20":"border-border",u?"opacity-[.96]":""].filter(Boolean).join(" "),children:[(0,b.jsx)("button",{type:"button",onClick:()=>t(a=>!a),className:"w-full text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:(0,b.jsxs)("div",{className:"px-4 py-3.5",children:[(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,b.jsx)(h.ChevronRight,{className:`h-4 w-4 flex-none text-muted-foreground/60 transition-transform duration-150 ${s?"rotate-90":""}`}),(0,b.jsx)("span",{className:"font-mono text-[14.5px] font-bold text-foreground",children:a.number}),(0,b.jsx)("span",{className:"text-[14.5px] font-semibold text-foreground",children:a.name}),(0,b.jsx)(A.VersionTypeBadge,{name:a.type?.name??null}),(0,b.jsx)(A.VersionStatusBadge,{status:a.status}),a.isCurrent&&(0,b.jsxs)("span",{className:"inline-flex items-center gap-1.5 rounded-full border border-primary/30 bg-primary/15 px-2.5 py-0.5 text-[11px] font-bold text-primary shadow-sm",children:[(0,b.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-primary opacity-90"}),m("version.current")]}),(0,b.jsx)("span",{className:"flex-1"}),z>0&&(0,b.jsx)("span",{className:"text-[11.5px] text-muted-foreground",children:I}),(0,b.jsxs)("span",{className:"flex items-center gap-1",onClick:a=>a.stopPropagation(),onKeyDown:a=>a.stopPropagation(),children:[e&&(0,b.jsxs)(y.Tooltip,{children:[(0,b.jsx)(y.TooltipTrigger,{render:(0,b.jsx)(l.Button,{variant:"ghost",size:"icon",className:"h-7 w-7 text-muted-foreground",onClick:()=>e(a.id)}),children:(0,b.jsx)(v.Pencil,{className:"h-3.5 w-3.5"})}),(0,b.jsx)(y.TooltipContent,{children:m("version.edit")})]}),x&&f&&(0,b.jsxs)(l.Button,{variant:"outline",className:"h-7 px-2 text-xs font-semibold",onClick:()=>f(a.id),children:[(0,b.jsx)(w,{className:"h-3.5 w-3.5"}),m("version.release")]})]})]}),(0,b.jsxs)("div",{className:"mt-2.5 flex flex-wrap items-center gap-2",children:[u&&a.releasedAt?(0,b.jsxs)(E,{children:[(0,b.jsx)(n.Calendar,{className:"h-3 w-3"}),m("version.releasedAt"),(0,b.jsx)("strong",{className:"text-foreground",children:C(a.releasedAt)})]}):a.startDate||a.targetDate?(0,b.jsxs)(E,{children:[(0,b.jsx)(n.Calendar,{className:"h-3 w-3"}),a.startDate?C(a.startDate):"—"," → ",a.targetDate?(0,b.jsx)("strong",{className:"text-foreground",children:C(a.targetDate)}):"—"]}):null,a.baseBranch&&(0,b.jsxs)(E,{children:[(0,b.jsx)(o.GitBranch,{className:"h-3 w-3"}),(0,b.jsx)("span",{className:"font-mono text-[11px] text-foreground",children:a.baseBranch})]}),a.baseCommit&&(0,b.jsxs)(E,{children:[(0,b.jsx)(p.GitCommitHorizontal,{className:"h-3 w-3"}),m("version.field.baseCommit"),(0,b.jsx)("span",{className:"font-mono text-[11px] text-foreground",children:(j=a.baseCommit)?j.slice(0,7):""})]}),u&&(0,b.jsxs)(E,{children:[(0,b.jsx)(q.Tag,{className:"h-3 w-3"}),(0,b.jsx)("span",{className:"font-mono text-[11px] text-foreground",children:a.number})]}),d&&(0,b.jsxs)(E,{children:[(0,b.jsx)(r.GitCompare,{className:"h-3 w-3"}),!u&&(0,b.jsx)("span",{className:"text-muted-foreground",children:m("version.diff.live")}),(0,b.jsxs)("span",{className:"font-bold text-emerald-400",children:["+",d.additions.toLocaleString()]}),(0,b.jsxs)("span",{className:"font-bold text-rose-400",children:["−",d.deletions.toLocaleString()]}),(0,b.jsxs)("span",{className:"text-muted-foreground",children:["· ",d.files," ",m("version.diff.files")]})]}),H&&g&&(0,b.jsxs)(l.Button,{variant:"ghost",size:"sm",className:"h-6 gap-1 px-2 text-xs text-muted-foreground",onClick:b=>{b.stopPropagation(),g(a.id)},children:[(0,b.jsx)(r.GitCompare,{className:"h-3 w-3"}),m("version.diff.view")," →"]})]}),a.description&&(0,b.jsx)("p",{className:"mt-2 text-[13px] text-muted-foreground",children:a.description})]})}),s&&z>0&&(0,b.jsx)("div",{className:"border-t border-dashed border-border bg-muted/40 px-2 pb-2 pt-1.5",children:a.tasks.map(a=>(0,b.jsx)(F,{task:a,onOpenDetail:i},a.id))})]})}var H=a.i(952313),I=a.i(668116),J=a.i(113047),K=a.i(814574),L=a.i(866718),M=a.i(412783),N=a.i(580701),O=a.i(599209),P=a.i(419622),Q=a.i(563658),R=a.i(429246),S=a.i(780410);let T=(0,S.createServerReference)("40b0838c0cde2e065970e9adb1b65020532fa8315f",S.callServer,void 0,S.findSourceMapURL,"createVersion"),U=(0,S.createServerReference)("600251d9b8e3bd797b61f4dffc930bbd2e11eb0fc6",S.callServer,void 0,S.findSourceMapURL,"updateVersion"),V=(0,S.createServerReference)("408f759eb03fd9cf6b19c18d607381dfc3c738179f",S.callServer,void 0,S.findSourceMapURL,"getVersionTypes");var W=a.i(197515),X=a.i(498850),Y=a.i(975231);let Z=(0,S.createServerReference)("40fe445a6e53335f71652f193158b2fa6b88ea994b",S.callServer,void 0,S.findSourceMapURL,"createVersionType"),$=(0,S.createServerReference)("609f87e56c4a27bd55de5ba104d4446decc18e8c97",S.callServer,void 0,S.findSourceMapURL,"updateVersionType"),_=(0,S.createServerReference)("4062c316deb1611c10f918fc76a4b72863c72b19e4",S.callServer,void 0,S.findSourceMapURL,"deleteVersionType");function aa({open:a,onOpenChange:d,workspaceId:e,onChanged:f}){let{t:g}=(0,B.useI18n)(),[h,i]=(0,c.useState)([]),[j,k]=(0,c.useState)(""),[m,n]=(0,c.useState)({}),[o,p]=(0,c.useTransition)(),q=async()=>{let a=await V(e);i(a),n(b=>{let c={};return a.forEach(a=>{c[a.id]=a.id in b?b[a.id]:a.name}),c})};(0,c.useEffect)(()=>{a&&(q(),k(""))},[a,e]);let r=()=>{let a=j.trim();a&&p(async()=>{try{await Z({workspaceId:e,name:a}),k(""),await q(),f?.(),H.toast.success(g("version.type.add"))}catch(a){H.toast.error(a instanceof Error?a.message:String(a))}})};return(0,b.jsx)(K.Dialog,{open:a,onOpenChange:d,children:(0,b.jsxs)(K.DialogContent,{className:"sm:max-w-md",children:[(0,b.jsx)(K.DialogHeader,{children:(0,b.jsx)(K.DialogTitle,{children:g("version.manageTypes")})}),(0,b.jsxs)("div",{className:"flex flex-col gap-4 py-2",children:[(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsx)(L.Input,{value:j,onChange:a=>k(a.target.value),placeholder:g("version.type.namePlaceholder"),disabled:o,onKeyDown:a=>{"Enter"===a.key&&r()},className:"flex-1"}),(0,b.jsx)(l.Button,{onClick:r,disabled:o||!j.trim(),children:g("version.type.add")})]}),0===h.length?(0,b.jsx)("p",{className:"text-center text-sm text-muted-foreground py-4",children:g("version.type.empty")}):(0,b.jsx)("div",{className:"flex flex-col gap-1.5",children:h.map(a=>(0,b.jsxs)("div",{className:"flex items-center gap-2 rounded-lg border border-border bg-muted/30 px-3 py-2",children:[(0,b.jsx)("span",{className:`inline-flex h-2.5 w-2.5 flex-none rounded-full ${(0,A.typeBadgeColor)(m[a.id]??a.name).split(" ").filter(a=>a.startsWith("bg-"))[0]??"bg-muted"}`}),(0,b.jsx)(L.Input,{value:m[a.id]??a.name,onChange:b=>n(c=>({...c,[a.id]:b.target.value})),onBlur:()=>(a=>{let b=(m[a]??"").trim();if(!b)return;let c=h.find(b=>b.id===a);c?.name!==b&&p(async()=>{try{await $(a,{name:b}),await q(),f?.()}catch(b){H.toast.error(b instanceof Error?b.message:String(b)),n(b=>({...b,[a]:c?.name??""}))}})})(a.id),onKeyDown:a=>{"Enter"===a.key&&a.target.blur()},disabled:o,className:"h-7 flex-1 border-transparent bg-transparent shadow-none focus-visible:border-input focus-visible:bg-background focus-visible:shadow-sm"}),(0,b.jsx)(l.Button,{variant:"ghost",size:"icon",className:"h-7 w-7 flex-none text-muted-foreground hover:text-destructive",onClick:()=>{var b;return b=a.id,void(window.confirm(g("version.type.deleteConfirm"))&&p(async()=>{try{await _(b),await q(),f?.()}catch(a){H.toast.error(a instanceof Error?a.message:String(a))}}))},disabled:o,children:(0,b.jsx)(Y.Trash2,{className:"h-3.5 w-3.5"})})]},a.id))})]})]})})}function ab(a){if(!a)return"";let b="string"==typeof a?new Date(a):a;if(isNaN(b.getTime()))return"";let c=b.getFullYear(),d=String(b.getMonth()+1).padStart(2,"0"),e=String(b.getDate()).padStart(2,"0");return`${c}-${d}-${e}`}function ac(a){if(!a)return;let b=new Date(a);return isNaN(b.getTime())?void 0:b}function ad({open:a,onOpenChange:d,projectId:e,workspaceId:f,editVersion:g,defaultBaseBranch:h,projectLocalPath:i,onSuccess:j}){let{t:k}=(0,B.useI18n)(),m=!!g,[n,p]=(0,c.useState)(""),[q,r]=(0,c.useState)(""),[s,t]=(0,c.useState)(""),[u,v]=(0,c.useState)([]),[w,x]=(0,c.useState)(!1),[y,z]=(0,c.useState)(""),[A,C]=(0,c.useState)(""),[D,E]=(0,c.useState)(""),[F,G]=(0,c.useState)(""),[S,Y]=(0,c.useState)(!1),[Z,$]=(0,c.useState)([]),[_,ae]=(0,c.useState)(!1),[af,ag]=(0,c.useState)(!1),ah=!!i,[ai,aj]=(0,c.useTransition)();return(0,c.useEffect)(()=>{a&&(g?(p(g.number),r(g.name),t(g.typeId??""),z(g.baseBranch??""),C(ab(g.startDate)),E(ab(g.targetDate)),G(g.description??"")):(p(""),r(""),t(""),z(h??""),C(""),E(""),G("")),Y(!1))},[a,g,h]),(0,c.useEffect)(()=>{a&&V(f).then(v).catch(()=>v([]))},[a,f]),(0,c.useEffect)(()=>{a&&ah?(ae(!0),(0,W.getProjectBranches)(i).then($).catch(()=>$([])).finally(()=>ae(!1)),(0,X.fetchRemoteBranches)(i).then(()=>(0,W.getProjectBranches)(i).then($)).catch(()=>{})):$([])},[a,ah,i]),(0,b.jsxs)(K.Dialog,{open:a,onOpenChange:d,children:[(0,b.jsxs)(K.DialogContent,{className:"sm:max-w-md",children:[(0,b.jsx)(K.DialogHeader,{children:(0,b.jsx)(K.DialogTitle,{children:m?k("version.edit"):k("version.new")})}),(0,b.jsxs)("div",{className:"grid gap-4 py-2",children:[(0,b.jsxs)("div",{className:"grid gap-1.5",children:[(0,b.jsxs)(M.Label,{htmlFor:"version-number",children:[k("version.field.number"),(0,b.jsx)("span",{className:"text-destructive ml-0.5",children:"*"})]}),(0,b.jsx)(L.Input,{id:"version-number",value:n,onChange:a=>p(a.target.value),placeholder:k("version.placeholder.number"),disabled:ai})]}),(0,b.jsxs)("div",{className:"grid gap-1.5",children:[(0,b.jsxs)(M.Label,{htmlFor:"version-name",children:[k("version.field.name"),(0,b.jsx)("span",{className:"text-destructive ml-0.5",children:"*"})]}),(0,b.jsx)(L.Input,{id:"version-name",value:q,onChange:a=>r(a.target.value),placeholder:k("version.placeholder.name"),disabled:ai})]}),(0,b.jsxs)("div",{className:"grid gap-1.5",children:[(0,b.jsx)(M.Label,{children:k("version.field.type")}),(0,b.jsxs)(N.Select,{value:s||"__none__",onValueChange:a=>{t(a&&"__none__"!==a?a:"")},children:[(0,b.jsx)(N.SelectTrigger,{className:"w-full",disabled:ai,children:(0,b.jsx)("span",{className:"truncate",children:s?u.find(a=>a.id===s)?.name??k("version.type.uncategorized"):k("version.type.uncategorized")})}),(0,b.jsxs)(N.SelectContent,{children:[(0,b.jsx)(N.SelectItem,{value:"__none__",children:k("version.type.uncategorized")}),u.map(a=>(0,b.jsx)(N.SelectItem,{value:a.id,children:a.name},a.id))]})]}),(0,b.jsxs)(l.Button,{type:"button",variant:"ghost",size:"sm",className:"h-auto justify-start px-0 py-0.5 text-xs text-muted-foreground hover:text-foreground",onClick:()=>x(!0),disabled:ai,children:["+ ",k("version.manageTypes")]})]}),(0,b.jsxs)("div",{className:"grid gap-1.5",children:[(0,b.jsx)(M.Label,{children:k("version.field.baseBranch")}),_?(0,b.jsx)("div",{className:"text-sm text-muted-foreground",children:k("task.branchLoading")}):ah&&Z.length>0?(0,b.jsxs)(O.Popover,{open:af,onOpenChange:ag,children:[(0,b.jsxs)(O.PopoverTrigger,{className:"flex h-8 w-full items-center gap-2 rounded-lg border border-input bg-transparent px-3 text-sm transition-colors hover:bg-accent focus:outline-none focus-visible:ring-3 focus-visible:ring-ring/50 disabled:opacity-50",disabled:ai,"data-testid":"version-branch-selector",children:[(0,b.jsx)(o.GitBranch,{className:"h-3.5 w-3.5 shrink-0 text-muted-foreground"}),(0,b.jsx)("span",{className:`flex-1 truncate text-left text-xs ${y?"font-mono":"text-muted-foreground"}`,title:y||void 0,children:y||k("version.field.noBranch")}),(0,b.jsx)(J.ChevronsUpDown,{className:"h-3.5 w-3.5 shrink-0 opacity-50"})]}),(0,b.jsx)(O.PopoverContent,{className:"w-[min(32rem,90vw)] p-0",align:"start",children:(0,b.jsxs)(P.Command,{children:[(0,b.jsx)(P.CommandInput,{placeholder:k("task.branchSearch")}),(0,b.jsxs)(P.CommandList,{children:[(0,b.jsx)(P.CommandEmpty,{children:k("task.branchNone")}),(0,b.jsxs)(P.CommandGroup,{children:[(0,b.jsxs)(P.CommandItem,{value:"__none__",onSelect:()=>{z(""),ag(!1)},children:[(0,b.jsx)("span",{className:"flex-1 truncate text-muted-foreground",children:k("version.field.noBranch")}),!y&&(0,b.jsx)(I.Check,{className:"ml-auto h-3 w-3 shrink-0 text-primary"})]}),Z.map(a=>(0,b.jsxs)(P.CommandItem,{value:a,onSelect:()=>{z(a),ag(!1)},children:[(0,b.jsx)(o.GitBranch,{className:"mr-2 h-3 w-3 shrink-0 text-muted-foreground"}),(0,b.jsx)("span",{className:"flex-1 truncate font-mono",title:a,children:a}),a===y&&(0,b.jsx)(I.Check,{className:"ml-auto h-3 w-3 shrink-0 text-primary"})]},a))]})]})]})})]}):(0,b.jsx)(L.Input,{id:"version-base-branch",value:y,onChange:a=>z(a.target.value),placeholder:"main",disabled:ai})]}),(0,b.jsxs)("div",{className:"grid grid-cols-2 gap-3",children:[(0,b.jsxs)("div",{className:"grid gap-1.5",children:[(0,b.jsx)(M.Label,{htmlFor:"version-start-date",children:k("version.field.startDate")}),(0,b.jsx)("input",{id:"version-start-date",type:"date",value:A,onChange:a=>C(a.target.value),disabled:ai,className:"h-8 w-full rounded-lg border border-input bg-transparent px-2.5 py-1 text-sm outline-none transition-colors focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50"})]}),(0,b.jsxs)("div",{className:"grid gap-1.5",children:[(0,b.jsx)(M.Label,{htmlFor:"version-target-date",children:k("version.field.targetDate")}),(0,b.jsx)("input",{id:"version-target-date",type:"date",value:D,onChange:a=>E(a.target.value),disabled:ai,className:"h-8 w-full rounded-lg border border-input bg-transparent px-2.5 py-1 text-sm outline-none transition-colors focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50"})]})]}),(0,b.jsxs)("div",{className:"grid gap-1.5",children:[(0,b.jsx)(M.Label,{htmlFor:"version-description",children:k("version.field.description")}),(0,b.jsx)(R.Textarea,{id:"version-description",value:F,onChange:a=>G(a.target.value),rows:3,disabled:ai})]}),!m&&(0,b.jsxs)("div",{className:"flex items-center gap-3",children:[(0,b.jsx)(Q.Switch,{id:"version-set-current",checked:S,onCheckedChange:Y,disabled:ai}),(0,b.jsx)(M.Label,{htmlFor:"version-set-current",className:"cursor-pointer",children:k("version.field.setCurrent")})]})]}),(0,b.jsxs)(K.DialogFooter,{children:[(0,b.jsx)(l.Button,{variant:"outline",onClick:()=>d(!1),disabled:ai,children:k("common.cancel")}),(0,b.jsx)(l.Button,{onClick:()=>{n.trim()&&q.trim()&&aj(async()=>{try{m&&g?await U(g.id,{number:n.trim(),name:q.trim(),typeId:s||null,baseBranch:y.trim()||null,startDate:ac(A)??null,targetDate:ac(D)??null,description:F.trim()||null}):await T({projectId:e,number:n.trim(),name:q.trim(),typeId:s||void 0,baseBranch:y.trim()||void 0,startDate:ac(A),targetDate:ac(D),description:F.trim()||void 0,setCurrent:S}),H.toast.success(m?k("version.edit"):k("version.new")),d(!1),j?.()}catch(a){H.toast.error(a instanceof Error?a.message:String(a))}})},disabled:ai||!n.trim()||!q.trim(),children:m?k("common.save"):k("common.create")})]})]}),(0,b.jsx)(aa,{open:w,onOpenChange:x,workspaceId:f,onChanged:()=>V(f).then(v)})]})}let ae=(0,S.createServerReference)("60687ad5866d1d8158d01e75f6706d3632b3777f15",S.callServer,void 0,S.findSourceMapURL,"releaseVersion");function af({open:a,onOpenChange:d,version:e,candidates:f,onSuccess:g}){let{t:h}=(0,B.useI18n)(),[i,j]=(0,c.useState)(""),[k,m]=(0,c.useTransition)();(0,c.useEffect)(()=>{a&&j("")},[a,e]);let n=f.find(a=>a.id===i),o=f.length>0,p=o&&!!i&&!k;return(0,b.jsx)(K.Dialog,{open:a,onOpenChange:d,children:(0,b.jsxs)(K.DialogContent,{className:"sm:max-w-md",children:[(0,b.jsx)(K.DialogHeader,{children:(0,b.jsx)(K.DialogTitle,{children:h("version.releaseAction")})}),(0,b.jsxs)("div",{className:"grid gap-4 py-2",children:[e&&(0,b.jsxs)("p",{className:"text-sm text-muted-foreground",children:[e.number," · ",e.name]}),(0,b.jsxs)("div",{className:"text-sm",children:[(0,b.jsx)("span",{children:h("version.release.rolloverHint")}),e?.unfinishedCount!==void 0&&e.unfinishedCount>0&&(0,b.jsxs)("span",{className:"ml-1 font-medium text-foreground",children:["(",e.unfinishedCount,")"]})]}),(0,b.jsxs)("div",{className:"grid gap-1.5",children:[(0,b.jsx)("label",{className:"text-sm font-medium",children:h("version.release.nextVersion")}),o?(0,b.jsxs)(N.Select,{value:i,onValueChange:a=>{a&&j(a)},disabled:k,children:[(0,b.jsx)(N.SelectTrigger,{className:"w-full",children:(0,b.jsx)("span",{className:"truncate",children:n?`${n.number} \xb7 ${n.name}`:""})}),(0,b.jsx)(N.SelectContent,{children:f.map(a=>(0,b.jsxs)(N.SelectItem,{value:a.id,children:[a.number," · ",a.name]},a.id))})]}):(0,b.jsx)("p",{className:"text-xs text-destructive",children:h("version.release.noCandidates")})]})]}),(0,b.jsxs)(K.DialogFooter,{children:[(0,b.jsx)(l.Button,{variant:"outline",onClick:()=>d(!1),disabled:k,children:h("common.cancel")}),(0,b.jsx)(l.Button,{onClick:()=>{e&&i&&m(async()=>{try{await ae(e.id,i),H.toast.success(h("version.release")),d(!1),g?.()}catch(a){H.toast.error(a instanceof Error?a.message:String(a))}})},disabled:!p,children:h("version.release")})]})]})})}var ag=a.i(704494);let ah=(0,S.createServerReference)("402232c2d7e88102519d32c2bffd5316a0b03b039f",S.callServer,void 0,S.findSourceMapURL,"getVersionDiff");var ai=a.i(514872);function aj({file:a}){let{t:d}=(0,B.useI18n)(),[e,f]=(0,c.useState)(!0),g=a.to&&"/dev/null"!==a.to?a.to:a.from??"",i=a.additions??0,j=a.deletions??0,k=[];for(let b of a.chunks)for(let a of(k.push({type:"normal",content:b.content,chunkHeader:b.content}),b.changes))k.push({type:a.type,content:a.content});let l=k.length>500,m=l?k.slice(0,500):k;return(0,b.jsxs)("div",{className:"overflow-hidden rounded-[10px] border border-border",children:[(0,b.jsxs)("button",{type:"button",onClick:()=>f(a=>!a),className:"flex w-full items-center gap-2 bg-muted/40 px-3 py-2 text-left transition-colors hover:bg-accent/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:[(0,b.jsx)(h.ChevronRight,{className:`h-3.5 w-3.5 flex-none text-muted-foreground/60 transition-transform duration-150 ${e?"rotate-90":""}`}),(0,b.jsx)("span",{className:"flex-1 truncate font-mono text-[12px] font-medium text-foreground",children:g}),(0,b.jsxs)("span",{className:"shrink-0 font-mono text-[11px] font-bold text-emerald-400",children:["+",i]}),(0,b.jsxs)("span",{className:"shrink-0 font-mono text-[11px] font-bold text-rose-400",children:["−",j]})]}),e&&(0,b.jsxs)("div",{className:"overflow-x-auto",children:[(0,b.jsx)("pre",{className:"m-0 p-0",children:m.map((a,c)=>void 0!==a.chunkHeader?(0,b.jsx)("div",{className:"whitespace-pre px-3 py-px font-mono text-xs text-muted-foreground bg-muted/40",children:a.content},c):"add"===a.type?(0,b.jsx)("div",{className:"whitespace-pre px-3 py-px font-mono text-xs text-emerald-300 bg-emerald-500/10",children:a.content},c):"del"===a.type?(0,b.jsx)("div",{className:"whitespace-pre px-3 py-px font-mono text-xs text-rose-300 bg-rose-500/10",children:a.content},c):(0,b.jsx)("div",{className:"whitespace-pre px-3 py-px font-mono text-xs text-muted-foreground",children:a.content},c))}),l&&(0,b.jsx)("p",{className:"border-t border-border px-3 py-2 text-[11px] text-muted-foreground/70 italic",children:d("version.diff.truncated")})]})]})}function ak({open:a,onOpenChange:d,versionId:e,versionLabel:f}){let{t:g}=(0,B.useI18n)(),[h,i]=(0,c.useTransition)(),[j,k]=(0,c.useState)(null),[l,m]=(0,c.useState)(!1);return(0,c.useEffect)(()=>{a&&e&&(k(null),m(!1),i(async()=>{let a=await ah(e);if(!a)return void m(!0);let b=(0,ai.parseUnifiedDiff)(a.patch);0===b.length||""===a.patch?m(!0):k(b)}))},[a,e]),(0,b.jsx)(K.Dialog,{open:a,onOpenChange:d,children:(0,b.jsxs)(K.DialogContent,{className:"sm:max-w-3xl max-h-[80vh] overflow-auto",children:[(0,b.jsx)(K.DialogHeader,{children:(0,b.jsxs)(K.DialogTitle,{children:[g("version.diff.title"),f?` — ${f}`:""]})}),h&&(0,b.jsxs)("div",{className:"flex items-center justify-center gap-2 py-12 text-muted-foreground",children:[(0,b.jsx)(ag.Loader2,{className:"h-5 w-5 animate-spin"}),(0,b.jsx)("span",{className:"text-sm",children:g("version.diff.loading")})]}),!h&&l&&(0,b.jsx)("p",{className:"py-10 text-center text-sm text-muted-foreground",children:g("version.diff.empty")}),!h&&j&&j.length>0&&(0,b.jsx)("div",{className:"flex flex-col gap-2",children:j.map((a,c)=>(0,b.jsx)(aj,{file:a},c))})]})})}var al=a.i(972420);function am({version:a,isFirst:c,isLast:d,dashed:e=!1,diffStat:f,onEdit:g,onRelease:h,onViewDiff:i,onOpenTaskDetail:j}){return(0,b.jsxs)("div",{className:"flex gap-4",children:[(0,b.jsxs)("div",{className:"relative flex w-5 flex-none flex-col items-center",children:[(0,b.jsx)("div",{className:["w-px flex-none",c?"h-0":"h-6",e?"bg-[repeating-linear-gradient(to_bottom,var(--border)_0_4px,transparent_4px_8px)]":"bg-border"].filter(Boolean).join(" ")}),(0,b.jsx)("div",{className:["z-10 h-3.5 w-3.5 flex-none rounded-full border-2",a.isCurrent?"border-primary bg-primary ring-2 ring-primary/30":"ACTIVE"===a.status?"border-emerald-400 bg-emerald-400":"RELEASED"===a.status?"border-zinc-500 bg-zinc-500":"border-muted-foreground/40 bg-transparent border-dashed"].join(" ")}),!d&&(0,b.jsx)("div",{className:["w-px flex-1",e?"bg-[repeating-linear-gradient(to_bottom,var(--border)_0_4px,transparent_4px_8px)]":"bg-border"].join(" ")})]}),(0,b.jsx)("div",{className:"min-w-0 flex-1 pb-5",children:(0,b.jsx)(G,{version:a,diffStat:f??null,onEdit:g,onRelease:h,onViewDiff:i,onOpenTaskDetail:j})})]})}a.s(["VersionTimelineClient",0,function({project:a,workspaceId:j,versions:n,diffStats:o,backlog:p}){let q,{t:r}=(0,B.useI18n)(),s=(0,d.useRouter)(),[t,u]=(0,c.useState)(!1),[v,w]=(0,c.useState)(null),[x,y]=(0,c.useState)(!1),[z,A]=(0,c.useState)(!1),[C,D]=(0,c.useState)(null),[E,G]=(0,c.useState)(null),[H,I]=(0,c.useState)(null),[J,K]=(0,c.useState)(!1),L=[...[...n.filter(a=>"RELEASED"!==a.status)].sort((a,b)=>{if(!a.targetDate&&!b.targetDate)return 0;if(!a.targetDate)return 1;if(!b.targetDate)return -1;let c=new Date(b.targetDate).getTime()-new Date(a.targetDate).getTime();return 0!==c?c:new Date(b.createdAt).getTime()-new Date(a.createdAt).getTime()}),...[...n.filter(a=>"RELEASED"===a.status)].sort((a,b)=>a.releasedAt||b.releasedAt?a.releasedAt?b.releasedAt?new Date(b.releasedAt).getTime()-new Date(a.releasedAt).getTime():-1:1:0)],M=a=>{let b=n.find(b=>b.id===a);b&&(w({id:b.id,number:b.number,name:b.name,typeId:b.typeId??null,baseBranch:b.baseBranch,startDate:b.startDate,targetDate:b.targetDate,description:b.description}),u(!0))},N=a=>{let b=n.find(b=>b.id===a);b&&(D(b),A(!0))},O=a=>{G(a)},P=()=>{w(null),u(!0)},Q=()=>{s.refresh()},R=C?n.filter(a=>a.id!==C.id&&("PLANNED"===a.status||"ACTIVE"===a.status)).map(a=>({id:a.id,number:a.number,name:a.name})):[],S=C?C.tasks.filter(a=>"DONE"!==a.status&&"CANCELLED"!==a.status).length:void 0;return(0,b.jsxs)("div",{className:"flex h-full flex-col overflow-hidden",children:[(0,b.jsxs)("div",{className:"header-xl flex shrink-0 items-center gap-4 border-b px-6",children:[(0,b.jsxs)(e.default,{href:`/workspaces/${j}`,className:"flex items-center gap-1.5 text-sm text-muted-foreground transition-colors hover:text-foreground",children:[(0,b.jsx)(i.ArrowLeft,{className:"h-3.5 w-3.5"}),(0,b.jsx)("span",{children:r("archive.backToBoard")})]}),(0,b.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[(0,b.jsx)("span",{className:"truncate font-medium",children:a.name}),(0,b.jsx)("span",{children:"/"}),(0,b.jsx)("span",{children:r("version.timeline")})]}),(0,b.jsx)("p",{className:"mt-0.5 text-xs text-muted-foreground/70",children:r("version.historyHint")})]}),(0,b.jsxs)(l.Button,{variant:"outline",onClick:()=>y(!0),children:[(0,b.jsx)(k,{className:"h-4 w-4"}),r("version.manageTypes")]}),(0,b.jsxs)(l.Button,{onClick:P,children:[(0,b.jsx)(f.Plus,{className:"h-4 w-4"}),r("version.new")]})]}),(0,b.jsx)(m.ScrollArea,{className:"min-h-0 flex-1",children:(0,b.jsx)("div",{className:"px-6 py-6",children:(0,b.jsxs)("div",{className:"mx-auto max-w-3xl",children:[0===n.length&&0===p.length&&(0,b.jsxs)("div",{className:"flex flex-col items-center gap-4 py-20 text-center text-muted-foreground",children:[(0,b.jsx)("p",{className:"text-sm",children:r("version.empty.list")}),(0,b.jsxs)(l.Button,{variant:"outline",onClick:P,children:[(0,b.jsx)(f.Plus,{className:"h-4 w-4"}),r("version.new")]})]}),L.length>0&&(0,b.jsx)("div",{className:"relative",children:L.map((a,c)=>(0,b.jsx)(am,{version:a,isFirst:0===c,isLast:c===L.length-1&&0===p.length,diffStat:o[a.id],onEdit:M,onRelease:N,onViewDiff:O,onOpenTaskDetail:I},a.id))}),p.length>0&&(0,b.jsxs)("div",{className:"flex gap-4",children:[(0,b.jsxs)("div",{className:"relative flex w-5 flex-none flex-col items-center",children:[(0,b.jsx)("div",{className:"h-6 w-px bg-[repeating-linear-gradient(to_bottom,var(--border)_0_4px,transparent_4px_8px)]"}),(0,b.jsx)("div",{className:"z-10 h-3.5 w-3.5 flex-none rounded-full border-2 border-dashed border-muted-foreground/40 bg-transparent"})]}),(0,b.jsx)("div",{className:"min-w-0 flex-1 pb-5",children:(0,b.jsxs)("div",{className:"overflow-hidden rounded-[14px] border border-dashed bg-muted/40 shadow-sm",children:[(0,b.jsxs)("button",{type:"button",onClick:()=>K(a=>!a),className:"w-full px-4 py-3 text-left transition-colors hover:bg-accent/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,b.jsx)(h.ChevronRight,{className:`h-3.5 w-3.5 flex-none text-muted-foreground/60 transition-transform duration-150 ${J?"rotate-90":""}`}),(0,b.jsx)(g.Archive,{className:"h-4 w-4 flex-none text-muted-foreground/70"}),(0,b.jsx)("span",{className:"text-sm font-semibold text-foreground",children:r("version.history")}),(0,b.jsx)("span",{className:"text-xs text-muted-foreground",children:r("version.historySub")}),(0,b.jsx)("span",{className:"flex-1"}),(0,b.jsxs)("span",{className:"text-[11.5px] text-muted-foreground",children:[p.length," ",r("version.tasksCount")]})]}),(0,b.jsx)("p",{className:"mt-2 text-xs text-muted-foreground/70",children:r("version.historyHint")})]}),J&&(0,b.jsx)("div",{className:"border-t border-dashed border-border px-2 pb-2 pt-1.5",children:p.map(a=>(0,b.jsx)(F,{task:a,onOpenDetail:I},a.id))})]})})]})]})})}),(0,b.jsx)(ad,{open:t,onOpenChange:a=>{u(a),a||w(null)},projectId:a.id,workspaceId:j,editVersion:v,defaultBaseBranch:null,projectLocalPath:a.localPath,onSuccess:Q}),(0,b.jsx)(aa,{open:x,onOpenChange:y,workspaceId:j,onChanged:()=>s.refresh()}),(0,b.jsx)(af,{open:z,onOpenChange:a=>{A(a),a||D(null)},version:C?{id:C.id,number:C.number,name:C.name,unfinishedCount:S}:null,candidates:R,onSuccess:Q}),(0,b.jsx)(ak,{open:!!E,onOpenChange:a=>{a||G(null)},versionId:E,versionLabel:E&&(q=n.find(a=>a.id===E))?`${q.number} ${q.name}`:void 0}),(0,b.jsx)(al.TaskOverviewDrawer,{open:!!H,onOpenChange:a=>{a||I(null)},taskId:H})]})}],144016)}];
|
|
1
|
+
module.exports=[144016,a=>{"use strict";var b=a.i(728778),c=a.i(374637),d=a.i(553798),e=a.i(634910),f=a.i(774881),g=a.i(607219),h=a.i(10390),i=a.i(269280),j=a.i(711796);let k=(0,j.default)("settings-2",[["path",{d:"M14 17H5",key:"gfn3mx"}],["path",{d:"M19 7h-9",key:"6i9tg"}],["circle",{cx:"17",cy:"17",r:"3",key:"18b49y"}],["circle",{cx:"7",cy:"7",r:"3",key:"dfmy0x"}]]);var l=a.i(699570),m=a.i(269876),n=a.i(157551),o=a.i(577565),p=a.i(207339),q=a.i(881107),r=a.i(394869),s=a.i(347165),t=a.i(350739);let u=(0,j.default)("image",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]]);var v=a.i(690251);let w=(0,j.default)("package-check",[["path",{d:"M12 22V12",key:"d0xqtd"}],["path",{d:"m16 17 2 2 4-4",key:"uh5qu3"}],["path",{d:"M21 11.127V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.729l7 4a2 2 0 0 0 2 .001l1.32-.753",key:"kpkbpo"}],["path",{d:"M3.29 7 12 12l8.71-5",key:"19ckod"}],["path",{d:"m7.5 4.27 8.997 5.148",key:"9yrvtv"}]]),x=(0,j.default)("panel-right",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M15 3v18",key:"14nvp0"}]]);var y=a.i(785259),z=a.i(521007),A=a.i(551578),B=a.i(951192);function C(a){if(!a)return"";let b="string"==typeof a?new Date(a):a;if(isNaN(b.getTime()))return"";let c=String(b.getMonth()+1).padStart(2,"0"),d=String(b.getDate()).padStart(2,"0");return`${c}-${d}`}let D=Object.fromEntries(z.BOARD_COLUMNS.map(a=>[a.id,a.color]));function E({children:a,className:c}){return(0,b.jsx)("span",{className:`inline-flex items-center gap-1.5 rounded-md border border-border bg-muted/40 px-2 py-0.5 text-xs text-muted-foreground ${c??""}`,children:a})}function F({task:a,onOpenDetail:d}){let{t:e}=(0,B.useI18n)(),[f,g]=(0,c.useState)(!1),i="CANCELLED"===a.status?"text-muted-foreground line-through decoration-muted-foreground/40":"DONE"===a.status?"text-muted-foreground":"text-foreground";return(0,b.jsxs)("div",{className:"rounded-[10px]",children:[(0,b.jsxs)("button",{type:"button",onClick:()=>g(a=>!a),className:"flex w-full items-center gap-2.5 rounded-[10px] px-2.5 py-2.5 text-left transition-colors hover:bg-muted/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:[(0,b.jsx)(h.ChevronRight,{className:`h-3.5 w-3.5 flex-none text-muted-foreground/60 transition-transform duration-150 ${f?"rotate-90":""}`}),(0,b.jsx)("span",{className:`h-2 w-2 flex-none rounded-full ${D[a.status]??"bg-slate-400"}`}),(0,b.jsx)("span",{className:`text-[13.5px] font-medium ${i}`,children:a.title}),a.labels.map(({label:a})=>(0,b.jsx)("span",{className:"rounded-full border border-border px-1.5 py-px text-[10.5px] text-muted-foreground",style:a.color?{borderColor:a.color+"55",color:a.color}:void 0,children:a.name},a.id)),(0,b.jsx)("span",{className:"flex-1"}),(0,b.jsx)("span",{className:"flex w-16 flex-none justify-center",children:(0,b.jsx)("span",{className:`rounded-[5px] px-1.5 py-px text-[10.5px] font-bold ${z.PRIORITY_CONFIG[a.priority]?.color??z.PRIORITY_CONFIG.LOW.color}`,children:a.priority})}),(0,b.jsx)("span",{className:"h-3 w-px bg-border flex-none"}),(0,b.jsxs)("span",{className:"flex w-[72px] flex-none items-center gap-1.5",children:[(0,b.jsx)("span",{className:`h-1.5 w-1.5 flex-none rounded-full ${D[a.status]??"bg-slate-400"}`}),(0,b.jsx)("span",{className:"truncate text-[10.5px] text-muted-foreground",children:e(`version.taskStatus.${a.status}`)})]}),(0,b.jsx)("span",{className:"h-3 w-px bg-border flex-none"}),(0,b.jsx)("span",{className:"flex w-6 flex-none justify-center",children:d&&(0,b.jsxs)(y.Tooltip,{children:[(0,b.jsx)(y.TooltipTrigger,{render:(0,b.jsx)(l.Button,{variant:"ghost",size:"icon",className:"h-6 w-6 text-muted-foreground",onClick:b=>{b.stopPropagation(),d(a.id)}}),children:(0,b.jsx)(x,{className:"h-3.5 w-3.5"})}),(0,b.jsx)(y.TooltipContent,{children:e("version.detail")})]})})]}),f&&(0,b.jsxs)("div",{className:"flex flex-col gap-2.5 pb-3 pl-[30px] pr-3 pt-1",children:[(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"mb-1.5 flex items-center gap-1.5",children:[(0,b.jsx)(s.FolderOpen,{className:"h-3 w-3 text-muted-foreground/60"}),(0,b.jsx)("span",{className:"text-[11px] font-bold uppercase tracking-wide text-muted-foreground/60",children:e("version.resources")})]}),0===a.assets.length?(0,b.jsx)("p",{className:"text-[12px] italic text-muted-foreground/60",children:e("version.empty.resources")}):(0,b.jsx)("div",{className:"flex flex-wrap gap-2",children:a.assets.map(a=>{var c;let d=a.mimeType?.startsWith("image/");return(0,b.jsxs)("span",{className:"inline-flex cursor-pointer items-center gap-1.5 rounded-lg border border-border bg-background px-2.5 py-1.5 text-[12px] text-foreground shadow-sm transition-colors hover:border-primary/50",children:[d?(0,b.jsx)(u,{className:"h-3.5 w-3.5 text-muted-foreground"}):(0,b.jsx)(t.FileText,{className:"h-3.5 w-3.5 text-muted-foreground"}),(0,b.jsx)("span",{children:a.filename}),null!=a.size&&(0,b.jsx)("span",{className:"text-[11px] text-muted-foreground/60",children:(c=a.size)<1024?`${c} B`:c<1048576?`${Math.round(c/1024)} KB`:`${(c/1048576).toFixed(1)} MB`})]},a.id)})})]}),(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"mb-1.5 flex items-center gap-1.5",children:[(0,b.jsx)(t.FileText,{className:"h-3 w-3 text-muted-foreground/60"}),(0,b.jsx)("span",{className:"text-[11px] font-bold uppercase tracking-wide text-muted-foreground/60",children:e("version.notes")})]}),0===a.notes.length?(0,b.jsx)("p",{className:"text-[12px] italic text-muted-foreground/60",children:e("version.empty.notes")}):(0,b.jsx)("div",{className:"flex flex-col gap-1.5",children:a.notes.map(a=>(0,b.jsx)("div",{className:"rounded-lg border border-border border-l-violet-500/50 bg-background px-2.5 py-2 shadow-sm [border-left-width:3px]",children:(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:"text-[12.5px] font-semibold text-foreground",children:a.title}),a.category&&(0,b.jsx)("span",{className:"rounded-[5px] border border-violet-500/30 bg-violet-500/15 px-1.5 py-px text-[10px] font-bold text-violet-300",children:a.category})]})},a.id))})]})]})]})}function G({version:a,diffStat:d,onEdit:e,onRelease:f,onViewDiff:g,onOpenTaskDetail:i}){var j;let k,{t:m}=(0,B.useI18n)(),[s,t]=(0,c.useState)(a.isCurrent),u="RELEASED"===a.status,x="ACTIVE"===a.status,z=a.tasks.length,D=a.tasks.filter(a=>"DONE"===a.status).length,H=!!(a.releaseCommit||d),I=(k=`${z} ${m("version.tasksCount")}`,D>0&&D<z?`${k} \xb7 ${D} ${m("version.doneCount")}`:D>0&&D===z?`${k} \xb7 ${m("version.allDone")}`:k);return(0,b.jsxs)("div",{className:["overflow-hidden rounded-[14px] border bg-card shadow-sm transition-shadow duration-150 hover:shadow-md",a.isCurrent?"border-border border-l-2 border-l-primary ring-1 ring-primary/20":"border-border",u?"opacity-[.96]":""].filter(Boolean).join(" "),children:[(0,b.jsx)("button",{type:"button",onClick:()=>t(a=>!a),className:"w-full text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:(0,b.jsxs)("div",{className:"px-4 py-3.5",children:[(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,b.jsx)(h.ChevronRight,{className:`h-4 w-4 flex-none text-muted-foreground/60 transition-transform duration-150 ${s?"rotate-90":""}`}),(0,b.jsx)("span",{className:"font-mono text-[14.5px] font-bold text-foreground",children:a.number}),(0,b.jsx)("span",{className:"text-[14.5px] font-semibold text-foreground",children:a.name}),(0,b.jsx)(A.VersionTypeBadge,{name:a.type?.name??null}),(0,b.jsx)(A.VersionStatusBadge,{status:a.status}),a.isCurrent&&(0,b.jsxs)("span",{className:"inline-flex items-center gap-1.5 rounded-full border border-primary/30 bg-primary/15 px-2.5 py-0.5 text-[11px] font-bold text-primary shadow-sm",children:[(0,b.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-primary opacity-90"}),m("version.current")]}),(0,b.jsx)("span",{className:"flex-1"}),z>0&&(0,b.jsx)("span",{className:"text-[11.5px] text-muted-foreground",children:I}),(0,b.jsxs)("span",{className:"flex items-center gap-1",onClick:a=>a.stopPropagation(),onKeyDown:a=>a.stopPropagation(),children:[e&&(0,b.jsxs)(y.Tooltip,{children:[(0,b.jsx)(y.TooltipTrigger,{render:(0,b.jsx)(l.Button,{variant:"ghost",size:"icon",className:"h-7 w-7 text-muted-foreground",onClick:()=>e(a.id)}),children:(0,b.jsx)(v.Pencil,{className:"h-3.5 w-3.5"})}),(0,b.jsx)(y.TooltipContent,{children:m("version.edit")})]}),x&&f&&(0,b.jsxs)(l.Button,{variant:"outline",className:"h-7 px-2 text-xs font-semibold",onClick:()=>f(a.id),children:[(0,b.jsx)(w,{className:"h-3.5 w-3.5"}),m("version.release")]})]})]}),(0,b.jsxs)("div",{className:"mt-2.5 flex flex-wrap items-center gap-2",children:[u&&a.releasedAt?(0,b.jsxs)(E,{children:[(0,b.jsx)(n.Calendar,{className:"h-3 w-3"}),m("version.releasedAt"),(0,b.jsx)("strong",{className:"text-foreground",children:C(a.releasedAt)})]}):a.startDate||a.targetDate?(0,b.jsxs)(E,{children:[(0,b.jsx)(n.Calendar,{className:"h-3 w-3"}),a.startDate?C(a.startDate):"—"," → ",a.targetDate?(0,b.jsx)("strong",{className:"text-foreground",children:C(a.targetDate)}):"—"]}):null,a.baseBranch&&(0,b.jsxs)(E,{children:[(0,b.jsx)(o.GitBranch,{className:"h-3 w-3"}),(0,b.jsx)("span",{className:"font-mono text-[11px] text-foreground",children:a.baseBranch})]}),a.baseCommit&&(0,b.jsxs)(E,{children:[(0,b.jsx)(p.GitCommitHorizontal,{className:"h-3 w-3"}),m("version.field.baseCommit"),(0,b.jsx)("span",{className:"font-mono text-[11px] text-foreground",children:(j=a.baseCommit)?j.slice(0,7):""})]}),u&&(0,b.jsxs)(E,{children:[(0,b.jsx)(q.Tag,{className:"h-3 w-3"}),(0,b.jsx)("span",{className:"font-mono text-[11px] text-foreground",children:a.number})]}),d&&(0,b.jsxs)(E,{children:[(0,b.jsx)(r.GitCompare,{className:"h-3 w-3"}),!u&&(0,b.jsx)("span",{className:"text-muted-foreground",children:m("version.diff.live")}),(0,b.jsxs)("span",{className:"font-bold text-emerald-400",children:["+",d.additions.toLocaleString()]}),(0,b.jsxs)("span",{className:"font-bold text-rose-400",children:["−",d.deletions.toLocaleString()]}),(0,b.jsxs)("span",{className:"text-muted-foreground",children:["· ",d.files," ",m("version.diff.files")]})]}),H&&g&&(0,b.jsxs)(l.Button,{variant:"ghost",size:"sm",className:"h-6 gap-1 px-2 text-xs text-muted-foreground",onClick:b=>{b.stopPropagation(),g(a.id)},children:[(0,b.jsx)(r.GitCompare,{className:"h-3 w-3"}),m("version.diff.view")," →"]})]}),a.description&&(0,b.jsx)("p",{className:"mt-2 text-[13px] text-muted-foreground",children:a.description})]})}),s&&z>0&&(0,b.jsx)("div",{className:"border-t border-dashed border-border bg-muted/40 px-2 pb-2 pt-1.5",children:a.tasks.map(a=>(0,b.jsx)(F,{task:a,onOpenDetail:i},a.id))})]})}var H=a.i(952313),I=a.i(668116),J=a.i(113047),K=a.i(814574),L=a.i(866718),M=a.i(412783),N=a.i(580701),O=a.i(599209),P=a.i(419622),Q=a.i(563658),R=a.i(429246),S=a.i(780410);let T=(0,S.createServerReference)("401d229feefc4e2d103c4dc434232660d8f7f16ffc",S.callServer,void 0,S.findSourceMapURL,"createVersion"),U=(0,S.createServerReference)("608800938e4a0f56bc384158467b8bffbefecb15c0",S.callServer,void 0,S.findSourceMapURL,"updateVersion"),V=(0,S.createServerReference)("4032d571cfac26fccc236b64f8c65328886d7f6cc0",S.callServer,void 0,S.findSourceMapURL,"getVersionTypes");var W=a.i(21099),X=a.i(830596),Y=a.i(975231);let Z=(0,S.createServerReference)("4021c0128f02653d7b83e2f3fc0d55e29e6fbd6654",S.callServer,void 0,S.findSourceMapURL,"createVersionType"),$=(0,S.createServerReference)("60f1dd8fe5645bf33eb54950e8118ad0b3277ae1a9",S.callServer,void 0,S.findSourceMapURL,"updateVersionType"),_=(0,S.createServerReference)("40ad3d288cf0041cc6b722313eee99caed9aa51258",S.callServer,void 0,S.findSourceMapURL,"deleteVersionType");function aa({open:a,onOpenChange:d,workspaceId:e,onChanged:f}){let{t:g}=(0,B.useI18n)(),[h,i]=(0,c.useState)([]),[j,k]=(0,c.useState)(""),[m,n]=(0,c.useState)({}),[o,p]=(0,c.useTransition)(),q=async()=>{let a=await V(e);i(a),n(b=>{let c={};return a.forEach(a=>{c[a.id]=a.id in b?b[a.id]:a.name}),c})};(0,c.useEffect)(()=>{a&&(q(),k(""))},[a,e]);let r=()=>{let a=j.trim();a&&p(async()=>{try{await Z({workspaceId:e,name:a}),k(""),await q(),f?.(),H.toast.success(g("version.type.add"))}catch(a){H.toast.error(a instanceof Error?a.message:String(a))}})};return(0,b.jsx)(K.Dialog,{open:a,onOpenChange:d,children:(0,b.jsxs)(K.DialogContent,{className:"sm:max-w-md",children:[(0,b.jsx)(K.DialogHeader,{children:(0,b.jsx)(K.DialogTitle,{children:g("version.manageTypes")})}),(0,b.jsxs)("div",{className:"flex flex-col gap-4 py-2",children:[(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsx)(L.Input,{value:j,onChange:a=>k(a.target.value),placeholder:g("version.type.namePlaceholder"),disabled:o,onKeyDown:a=>{"Enter"===a.key&&r()},className:"flex-1"}),(0,b.jsx)(l.Button,{onClick:r,disabled:o||!j.trim(),children:g("version.type.add")})]}),0===h.length?(0,b.jsx)("p",{className:"text-center text-sm text-muted-foreground py-4",children:g("version.type.empty")}):(0,b.jsx)("div",{className:"flex flex-col gap-1.5",children:h.map(a=>(0,b.jsxs)("div",{className:"flex items-center gap-2 rounded-lg border border-border bg-muted/30 px-3 py-2",children:[(0,b.jsx)("span",{className:`inline-flex h-2.5 w-2.5 flex-none rounded-full ${(0,A.typeBadgeColor)(m[a.id]??a.name).split(" ").filter(a=>a.startsWith("bg-"))[0]??"bg-muted"}`}),(0,b.jsx)(L.Input,{value:m[a.id]??a.name,onChange:b=>n(c=>({...c,[a.id]:b.target.value})),onBlur:()=>(a=>{let b=(m[a]??"").trim();if(!b)return;let c=h.find(b=>b.id===a);c?.name!==b&&p(async()=>{try{await $(a,{name:b}),await q(),f?.()}catch(b){H.toast.error(b instanceof Error?b.message:String(b)),n(b=>({...b,[a]:c?.name??""}))}})})(a.id),onKeyDown:a=>{"Enter"===a.key&&a.target.blur()},disabled:o,className:"h-7 flex-1 border-transparent bg-transparent shadow-none focus-visible:border-input focus-visible:bg-background focus-visible:shadow-sm"}),(0,b.jsx)(l.Button,{variant:"ghost",size:"icon",className:"h-7 w-7 flex-none text-muted-foreground hover:text-destructive",onClick:()=>{var b;return b=a.id,void(window.confirm(g("version.type.deleteConfirm"))&&p(async()=>{try{await _(b),await q(),f?.()}catch(a){H.toast.error(a instanceof Error?a.message:String(a))}}))},disabled:o,children:(0,b.jsx)(Y.Trash2,{className:"h-3.5 w-3.5"})})]},a.id))})]})]})})}function ab(a){if(!a)return"";let b="string"==typeof a?new Date(a):a;if(isNaN(b.getTime()))return"";let c=b.getFullYear(),d=String(b.getMonth()+1).padStart(2,"0"),e=String(b.getDate()).padStart(2,"0");return`${c}-${d}-${e}`}function ac(a){if(!a)return;let b=new Date(a);return isNaN(b.getTime())?void 0:b}function ad({open:a,onOpenChange:d,projectId:e,workspaceId:f,editVersion:g,defaultBaseBranch:h,projectLocalPath:i,onSuccess:j}){let{t:k}=(0,B.useI18n)(),m=!!g,[n,p]=(0,c.useState)(""),[q,r]=(0,c.useState)(""),[s,t]=(0,c.useState)(""),[u,v]=(0,c.useState)([]),[w,x]=(0,c.useState)(!1),[y,z]=(0,c.useState)(""),[A,C]=(0,c.useState)(""),[D,E]=(0,c.useState)(""),[F,G]=(0,c.useState)(""),[S,Y]=(0,c.useState)(!1),[Z,$]=(0,c.useState)([]),[_,ae]=(0,c.useState)(!1),[af,ag]=(0,c.useState)(!1),ah=!!i,[ai,aj]=(0,c.useTransition)();return(0,c.useEffect)(()=>{a&&(g?(p(g.number),r(g.name),t(g.typeId??""),z(g.baseBranch??""),C(ab(g.startDate)),E(ab(g.targetDate)),G(g.description??"")):(p(""),r(""),t(""),z(h??""),C(""),E(""),G("")),Y(!1))},[a,g,h]),(0,c.useEffect)(()=>{a&&V(f).then(v).catch(()=>v([]))},[a,f]),(0,c.useEffect)(()=>{a&&ah?(ae(!0),(0,W.getProjectBranches)(i).then($).catch(()=>$([])).finally(()=>ae(!1)),(0,X.fetchRemoteBranches)(i).then(()=>(0,W.getProjectBranches)(i).then($)).catch(()=>{})):$([])},[a,ah,i]),(0,b.jsxs)(K.Dialog,{open:a,onOpenChange:d,children:[(0,b.jsxs)(K.DialogContent,{className:"sm:max-w-md",children:[(0,b.jsx)(K.DialogHeader,{children:(0,b.jsx)(K.DialogTitle,{children:m?k("version.edit"):k("version.new")})}),(0,b.jsxs)("div",{className:"grid gap-4 py-2",children:[(0,b.jsxs)("div",{className:"grid gap-1.5",children:[(0,b.jsxs)(M.Label,{htmlFor:"version-number",children:[k("version.field.number"),(0,b.jsx)("span",{className:"text-destructive ml-0.5",children:"*"})]}),(0,b.jsx)(L.Input,{id:"version-number",value:n,onChange:a=>p(a.target.value),placeholder:k("version.placeholder.number"),disabled:ai})]}),(0,b.jsxs)("div",{className:"grid gap-1.5",children:[(0,b.jsxs)(M.Label,{htmlFor:"version-name",children:[k("version.field.name"),(0,b.jsx)("span",{className:"text-destructive ml-0.5",children:"*"})]}),(0,b.jsx)(L.Input,{id:"version-name",value:q,onChange:a=>r(a.target.value),placeholder:k("version.placeholder.name"),disabled:ai})]}),(0,b.jsxs)("div",{className:"grid gap-1.5",children:[(0,b.jsx)(M.Label,{children:k("version.field.type")}),(0,b.jsxs)(N.Select,{value:s||"__none__",onValueChange:a=>{t(a&&"__none__"!==a?a:"")},children:[(0,b.jsx)(N.SelectTrigger,{className:"w-full",disabled:ai,children:(0,b.jsx)("span",{className:"truncate",children:s?u.find(a=>a.id===s)?.name??k("version.type.uncategorized"):k("version.type.uncategorized")})}),(0,b.jsxs)(N.SelectContent,{children:[(0,b.jsx)(N.SelectItem,{value:"__none__",children:k("version.type.uncategorized")}),u.map(a=>(0,b.jsx)(N.SelectItem,{value:a.id,children:a.name},a.id))]})]}),(0,b.jsxs)(l.Button,{type:"button",variant:"ghost",size:"sm",className:"h-auto justify-start px-0 py-0.5 text-xs text-muted-foreground hover:text-foreground",onClick:()=>x(!0),disabled:ai,children:["+ ",k("version.manageTypes")]})]}),(0,b.jsxs)("div",{className:"grid gap-1.5",children:[(0,b.jsx)(M.Label,{children:k("version.field.baseBranch")}),_?(0,b.jsx)("div",{className:"text-sm text-muted-foreground",children:k("task.branchLoading")}):ah&&Z.length>0?(0,b.jsxs)(O.Popover,{open:af,onOpenChange:ag,children:[(0,b.jsxs)(O.PopoverTrigger,{className:"flex h-8 w-full items-center gap-2 rounded-lg border border-input bg-transparent px-3 text-sm transition-colors hover:bg-accent focus:outline-none focus-visible:ring-3 focus-visible:ring-ring/50 disabled:opacity-50",disabled:ai,"data-testid":"version-branch-selector",children:[(0,b.jsx)(o.GitBranch,{className:"h-3.5 w-3.5 shrink-0 text-muted-foreground"}),(0,b.jsx)("span",{className:`flex-1 truncate text-left text-xs ${y?"font-mono":"text-muted-foreground"}`,title:y||void 0,children:y||k("version.field.noBranch")}),(0,b.jsx)(J.ChevronsUpDown,{className:"h-3.5 w-3.5 shrink-0 opacity-50"})]}),(0,b.jsx)(O.PopoverContent,{className:"w-[min(32rem,90vw)] p-0",align:"start",children:(0,b.jsxs)(P.Command,{children:[(0,b.jsx)(P.CommandInput,{placeholder:k("task.branchSearch")}),(0,b.jsxs)(P.CommandList,{children:[(0,b.jsx)(P.CommandEmpty,{children:k("task.branchNone")}),(0,b.jsxs)(P.CommandGroup,{children:[(0,b.jsxs)(P.CommandItem,{value:"__none__",onSelect:()=>{z(""),ag(!1)},children:[(0,b.jsx)("span",{className:"flex-1 truncate text-muted-foreground",children:k("version.field.noBranch")}),!y&&(0,b.jsx)(I.Check,{className:"ml-auto h-3 w-3 shrink-0 text-primary"})]}),Z.map(a=>(0,b.jsxs)(P.CommandItem,{value:a,onSelect:()=>{z(a),ag(!1)},children:[(0,b.jsx)(o.GitBranch,{className:"mr-2 h-3 w-3 shrink-0 text-muted-foreground"}),(0,b.jsx)("span",{className:"flex-1 truncate font-mono",title:a,children:a}),a===y&&(0,b.jsx)(I.Check,{className:"ml-auto h-3 w-3 shrink-0 text-primary"})]},a))]})]})]})})]}):(0,b.jsx)(L.Input,{id:"version-base-branch",value:y,onChange:a=>z(a.target.value),placeholder:"main",disabled:ai})]}),(0,b.jsxs)("div",{className:"grid grid-cols-2 gap-3",children:[(0,b.jsxs)("div",{className:"grid gap-1.5",children:[(0,b.jsx)(M.Label,{htmlFor:"version-start-date",children:k("version.field.startDate")}),(0,b.jsx)("input",{id:"version-start-date",type:"date",value:A,onChange:a=>C(a.target.value),disabled:ai,className:"h-8 w-full rounded-lg border border-input bg-transparent px-2.5 py-1 text-sm outline-none transition-colors focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50"})]}),(0,b.jsxs)("div",{className:"grid gap-1.5",children:[(0,b.jsx)(M.Label,{htmlFor:"version-target-date",children:k("version.field.targetDate")}),(0,b.jsx)("input",{id:"version-target-date",type:"date",value:D,onChange:a=>E(a.target.value),disabled:ai,className:"h-8 w-full rounded-lg border border-input bg-transparent px-2.5 py-1 text-sm outline-none transition-colors focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50"})]})]}),(0,b.jsxs)("div",{className:"grid gap-1.5",children:[(0,b.jsx)(M.Label,{htmlFor:"version-description",children:k("version.field.description")}),(0,b.jsx)(R.Textarea,{id:"version-description",value:F,onChange:a=>G(a.target.value),rows:3,disabled:ai})]}),!m&&(0,b.jsxs)("div",{className:"flex items-center gap-3",children:[(0,b.jsx)(Q.Switch,{id:"version-set-current",checked:S,onCheckedChange:Y,disabled:ai}),(0,b.jsx)(M.Label,{htmlFor:"version-set-current",className:"cursor-pointer",children:k("version.field.setCurrent")})]})]}),(0,b.jsxs)(K.DialogFooter,{children:[(0,b.jsx)(l.Button,{variant:"outline",onClick:()=>d(!1),disabled:ai,children:k("common.cancel")}),(0,b.jsx)(l.Button,{onClick:()=>{n.trim()&&q.trim()&&aj(async()=>{try{m&&g?await U(g.id,{number:n.trim(),name:q.trim(),typeId:s||null,baseBranch:y.trim()||null,startDate:ac(A)??null,targetDate:ac(D)??null,description:F.trim()||null}):await T({projectId:e,number:n.trim(),name:q.trim(),typeId:s||void 0,baseBranch:y.trim()||void 0,startDate:ac(A),targetDate:ac(D),description:F.trim()||void 0,setCurrent:S}),H.toast.success(m?k("version.edit"):k("version.new")),d(!1),j?.()}catch(a){H.toast.error(a instanceof Error?a.message:String(a))}})},disabled:ai||!n.trim()||!q.trim(),children:m?k("common.save"):k("common.create")})]})]}),(0,b.jsx)(aa,{open:w,onOpenChange:x,workspaceId:f,onChanged:()=>V(f).then(v)})]})}let ae=(0,S.createServerReference)("609d3d7177804ef8e588c8cd4249e7ee72343aae94",S.callServer,void 0,S.findSourceMapURL,"releaseVersion");function af({open:a,onOpenChange:d,version:e,candidates:f,onSuccess:g}){let{t:h}=(0,B.useI18n)(),[i,j]=(0,c.useState)(""),[k,m]=(0,c.useTransition)();(0,c.useEffect)(()=>{a&&j("")},[a,e]);let n=f.find(a=>a.id===i),o=f.length>0,p=o&&!!i&&!k;return(0,b.jsx)(K.Dialog,{open:a,onOpenChange:d,children:(0,b.jsxs)(K.DialogContent,{className:"sm:max-w-md",children:[(0,b.jsx)(K.DialogHeader,{children:(0,b.jsx)(K.DialogTitle,{children:h("version.releaseAction")})}),(0,b.jsxs)("div",{className:"grid gap-4 py-2",children:[e&&(0,b.jsxs)("p",{className:"text-sm text-muted-foreground",children:[e.number," · ",e.name]}),(0,b.jsxs)("div",{className:"text-sm",children:[(0,b.jsx)("span",{children:h("version.release.rolloverHint")}),e?.unfinishedCount!==void 0&&e.unfinishedCount>0&&(0,b.jsxs)("span",{className:"ml-1 font-medium text-foreground",children:["(",e.unfinishedCount,")"]})]}),(0,b.jsxs)("div",{className:"grid gap-1.5",children:[(0,b.jsx)("label",{className:"text-sm font-medium",children:h("version.release.nextVersion")}),o?(0,b.jsxs)(N.Select,{value:i,onValueChange:a=>{a&&j(a)},disabled:k,children:[(0,b.jsx)(N.SelectTrigger,{className:"w-full",children:(0,b.jsx)("span",{className:"truncate",children:n?`${n.number} \xb7 ${n.name}`:""})}),(0,b.jsx)(N.SelectContent,{children:f.map(a=>(0,b.jsxs)(N.SelectItem,{value:a.id,children:[a.number," · ",a.name]},a.id))})]}):(0,b.jsx)("p",{className:"text-xs text-destructive",children:h("version.release.noCandidates")})]})]}),(0,b.jsxs)(K.DialogFooter,{children:[(0,b.jsx)(l.Button,{variant:"outline",onClick:()=>d(!1),disabled:k,children:h("common.cancel")}),(0,b.jsx)(l.Button,{onClick:()=>{e&&i&&m(async()=>{try{await ae(e.id,i),H.toast.success(h("version.release")),d(!1),g?.()}catch(a){H.toast.error(a instanceof Error?a.message:String(a))}})},disabled:!p,children:h("version.release")})]})]})})}var ag=a.i(704494);let ah=(0,S.createServerReference)("400acfd4453438b3dc8e26e66b3d3e970ba5b16a93",S.callServer,void 0,S.findSourceMapURL,"getVersionDiff");var ai=a.i(514872);function aj({file:a}){let{t:d}=(0,B.useI18n)(),[e,f]=(0,c.useState)(!0),g=a.to&&"/dev/null"!==a.to?a.to:a.from??"",i=a.additions??0,j=a.deletions??0,k=[];for(let b of a.chunks)for(let a of(k.push({type:"normal",content:b.content,chunkHeader:b.content}),b.changes))k.push({type:a.type,content:a.content});let l=k.length>500,m=l?k.slice(0,500):k;return(0,b.jsxs)("div",{className:"overflow-hidden rounded-[10px] border border-border",children:[(0,b.jsxs)("button",{type:"button",onClick:()=>f(a=>!a),className:"flex w-full items-center gap-2 bg-muted/40 px-3 py-2 text-left transition-colors hover:bg-accent/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:[(0,b.jsx)(h.ChevronRight,{className:`h-3.5 w-3.5 flex-none text-muted-foreground/60 transition-transform duration-150 ${e?"rotate-90":""}`}),(0,b.jsx)("span",{className:"flex-1 truncate font-mono text-[12px] font-medium text-foreground",children:g}),(0,b.jsxs)("span",{className:"shrink-0 font-mono text-[11px] font-bold text-emerald-400",children:["+",i]}),(0,b.jsxs)("span",{className:"shrink-0 font-mono text-[11px] font-bold text-rose-400",children:["−",j]})]}),e&&(0,b.jsxs)("div",{className:"overflow-x-auto",children:[(0,b.jsx)("pre",{className:"m-0 p-0",children:m.map((a,c)=>void 0!==a.chunkHeader?(0,b.jsx)("div",{className:"whitespace-pre px-3 py-px font-mono text-xs text-muted-foreground bg-muted/40",children:a.content},c):"add"===a.type?(0,b.jsx)("div",{className:"whitespace-pre px-3 py-px font-mono text-xs text-emerald-300 bg-emerald-500/10",children:a.content},c):"del"===a.type?(0,b.jsx)("div",{className:"whitespace-pre px-3 py-px font-mono text-xs text-rose-300 bg-rose-500/10",children:a.content},c):(0,b.jsx)("div",{className:"whitespace-pre px-3 py-px font-mono text-xs text-muted-foreground",children:a.content},c))}),l&&(0,b.jsx)("p",{className:"border-t border-border px-3 py-2 text-[11px] text-muted-foreground/70 italic",children:d("version.diff.truncated")})]})]})}function ak({open:a,onOpenChange:d,versionId:e,versionLabel:f}){let{t:g}=(0,B.useI18n)(),[h,i]=(0,c.useTransition)(),[j,k]=(0,c.useState)(null),[l,m]=(0,c.useState)(!1);return(0,c.useEffect)(()=>{a&&e&&(k(null),m(!1),i(async()=>{let a=await ah(e);if(!a)return void m(!0);let b=(0,ai.parseUnifiedDiff)(a.patch);0===b.length||""===a.patch?m(!0):k(b)}))},[a,e]),(0,b.jsx)(K.Dialog,{open:a,onOpenChange:d,children:(0,b.jsxs)(K.DialogContent,{className:"sm:max-w-3xl max-h-[80vh] overflow-auto",children:[(0,b.jsx)(K.DialogHeader,{children:(0,b.jsxs)(K.DialogTitle,{children:[g("version.diff.title"),f?` — ${f}`:""]})}),h&&(0,b.jsxs)("div",{className:"flex items-center justify-center gap-2 py-12 text-muted-foreground",children:[(0,b.jsx)(ag.Loader2,{className:"h-5 w-5 animate-spin"}),(0,b.jsx)("span",{className:"text-sm",children:g("version.diff.loading")})]}),!h&&l&&(0,b.jsx)("p",{className:"py-10 text-center text-sm text-muted-foreground",children:g("version.diff.empty")}),!h&&j&&j.length>0&&(0,b.jsx)("div",{className:"flex flex-col gap-2",children:j.map((a,c)=>(0,b.jsx)(aj,{file:a},c))})]})})}var al=a.i(972420);function am({version:a,isFirst:c,isLast:d,dashed:e=!1,diffStat:f,onEdit:g,onRelease:h,onViewDiff:i,onOpenTaskDetail:j}){return(0,b.jsxs)("div",{className:"flex gap-4",children:[(0,b.jsxs)("div",{className:"relative flex w-5 flex-none flex-col items-center",children:[(0,b.jsx)("div",{className:["w-px flex-none",c?"h-0":"h-6",e?"bg-[repeating-linear-gradient(to_bottom,var(--border)_0_4px,transparent_4px_8px)]":"bg-border"].filter(Boolean).join(" ")}),(0,b.jsx)("div",{className:["z-10 h-3.5 w-3.5 flex-none rounded-full border-2",a.isCurrent?"border-primary bg-primary ring-2 ring-primary/30":"ACTIVE"===a.status?"border-emerald-400 bg-emerald-400":"RELEASED"===a.status?"border-zinc-500 bg-zinc-500":"border-muted-foreground/40 bg-transparent border-dashed"].join(" ")}),!d&&(0,b.jsx)("div",{className:["w-px flex-1",e?"bg-[repeating-linear-gradient(to_bottom,var(--border)_0_4px,transparent_4px_8px)]":"bg-border"].join(" ")})]}),(0,b.jsx)("div",{className:"min-w-0 flex-1 pb-5",children:(0,b.jsx)(G,{version:a,diffStat:f??null,onEdit:g,onRelease:h,onViewDiff:i,onOpenTaskDetail:j})})]})}a.s(["VersionTimelineClient",0,function({project:a,workspaceId:j,versions:n,diffStats:o,backlog:p}){let q,{t:r}=(0,B.useI18n)(),s=(0,d.useRouter)(),[t,u]=(0,c.useState)(!1),[v,w]=(0,c.useState)(null),[x,y]=(0,c.useState)(!1),[z,A]=(0,c.useState)(!1),[C,D]=(0,c.useState)(null),[E,G]=(0,c.useState)(null),[H,I]=(0,c.useState)(null),[J,K]=(0,c.useState)(!1),L=[...[...n.filter(a=>"RELEASED"!==a.status)].sort((a,b)=>{if(!a.targetDate&&!b.targetDate)return 0;if(!a.targetDate)return 1;if(!b.targetDate)return -1;let c=new Date(b.targetDate).getTime()-new Date(a.targetDate).getTime();return 0!==c?c:new Date(b.createdAt).getTime()-new Date(a.createdAt).getTime()}),...[...n.filter(a=>"RELEASED"===a.status)].sort((a,b)=>a.releasedAt||b.releasedAt?a.releasedAt?b.releasedAt?new Date(b.releasedAt).getTime()-new Date(a.releasedAt).getTime():-1:1:0)],M=a=>{let b=n.find(b=>b.id===a);b&&(w({id:b.id,number:b.number,name:b.name,typeId:b.typeId??null,baseBranch:b.baseBranch,startDate:b.startDate,targetDate:b.targetDate,description:b.description}),u(!0))},N=a=>{let b=n.find(b=>b.id===a);b&&(D(b),A(!0))},O=a=>{G(a)},P=()=>{w(null),u(!0)},Q=()=>{s.refresh()},R=C?n.filter(a=>a.id!==C.id&&("PLANNED"===a.status||"ACTIVE"===a.status)).map(a=>({id:a.id,number:a.number,name:a.name})):[],S=C?C.tasks.filter(a=>"DONE"!==a.status&&"CANCELLED"!==a.status).length:void 0;return(0,b.jsxs)("div",{className:"flex h-full flex-col overflow-hidden",children:[(0,b.jsxs)("div",{className:"header-xl flex shrink-0 items-center gap-4 border-b px-6",children:[(0,b.jsxs)(e.default,{href:`/workspaces/${j}`,className:"flex items-center gap-1.5 text-sm text-muted-foreground transition-colors hover:text-foreground",children:[(0,b.jsx)(i.ArrowLeft,{className:"h-3.5 w-3.5"}),(0,b.jsx)("span",{children:r("archive.backToBoard")})]}),(0,b.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[(0,b.jsx)("span",{className:"truncate font-medium",children:a.name}),(0,b.jsx)("span",{children:"/"}),(0,b.jsx)("span",{children:r("version.timeline")})]}),(0,b.jsx)("p",{className:"mt-0.5 text-xs text-muted-foreground/70",children:r("version.historyHint")})]}),(0,b.jsxs)(l.Button,{variant:"outline",onClick:()=>y(!0),children:[(0,b.jsx)(k,{className:"h-4 w-4"}),r("version.manageTypes")]}),(0,b.jsxs)(l.Button,{onClick:P,children:[(0,b.jsx)(f.Plus,{className:"h-4 w-4"}),r("version.new")]})]}),(0,b.jsx)(m.ScrollArea,{className:"min-h-0 flex-1",children:(0,b.jsx)("div",{className:"px-6 py-6",children:(0,b.jsxs)("div",{className:"mx-auto max-w-3xl",children:[0===n.length&&0===p.length&&(0,b.jsxs)("div",{className:"flex flex-col items-center gap-4 py-20 text-center text-muted-foreground",children:[(0,b.jsx)("p",{className:"text-sm",children:r("version.empty.list")}),(0,b.jsxs)(l.Button,{variant:"outline",onClick:P,children:[(0,b.jsx)(f.Plus,{className:"h-4 w-4"}),r("version.new")]})]}),L.length>0&&(0,b.jsx)("div",{className:"relative",children:L.map((a,c)=>(0,b.jsx)(am,{version:a,isFirst:0===c,isLast:c===L.length-1&&0===p.length,diffStat:o[a.id],onEdit:M,onRelease:N,onViewDiff:O,onOpenTaskDetail:I},a.id))}),p.length>0&&(0,b.jsxs)("div",{className:"flex gap-4",children:[(0,b.jsxs)("div",{className:"relative flex w-5 flex-none flex-col items-center",children:[(0,b.jsx)("div",{className:"h-6 w-px bg-[repeating-linear-gradient(to_bottom,var(--border)_0_4px,transparent_4px_8px)]"}),(0,b.jsx)("div",{className:"z-10 h-3.5 w-3.5 flex-none rounded-full border-2 border-dashed border-muted-foreground/40 bg-transparent"})]}),(0,b.jsx)("div",{className:"min-w-0 flex-1 pb-5",children:(0,b.jsxs)("div",{className:"overflow-hidden rounded-[14px] border border-dashed bg-muted/40 shadow-sm",children:[(0,b.jsxs)("button",{type:"button",onClick:()=>K(a=>!a),className:"w-full px-4 py-3 text-left transition-colors hover:bg-accent/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,b.jsx)(h.ChevronRight,{className:`h-3.5 w-3.5 flex-none text-muted-foreground/60 transition-transform duration-150 ${J?"rotate-90":""}`}),(0,b.jsx)(g.Archive,{className:"h-4 w-4 flex-none text-muted-foreground/70"}),(0,b.jsx)("span",{className:"text-sm font-semibold text-foreground",children:r("version.history")}),(0,b.jsx)("span",{className:"text-xs text-muted-foreground",children:r("version.historySub")}),(0,b.jsx)("span",{className:"flex-1"}),(0,b.jsxs)("span",{className:"text-[11.5px] text-muted-foreground",children:[p.length," ",r("version.tasksCount")]})]}),(0,b.jsx)("p",{className:"mt-2 text-xs text-muted-foreground/70",children:r("version.historyHint")})]}),J&&(0,b.jsx)("div",{className:"border-t border-dashed border-border px-2 pb-2 pt-1.5",children:p.map(a=>(0,b.jsx)(F,{task:a,onOpenDetail:I},a.id))})]})})]})]})})}),(0,b.jsx)(ad,{open:t,onOpenChange:a=>{u(a),a||w(null)},projectId:a.id,workspaceId:j,editVersion:v,defaultBaseBranch:null,projectLocalPath:a.localPath,onSuccess:Q}),(0,b.jsx)(aa,{open:x,onOpenChange:y,workspaceId:j,onChanged:()=>s.refresh()}),(0,b.jsx)(af,{open:z,onOpenChange:a=>{A(a),a||D(null)},version:C?{id:C.id,number:C.number,name:C.name,unfinishedCount:S}:null,candidates:R,onSuccess:Q}),(0,b.jsx)(ak,{open:!!E,onOpenChange:a=>{a||G(null)},versionId:E,versionLabel:E&&(q=n.find(a=>a.id===E))?`${q.number} ${q.name}`:void 0}),(0,b.jsx)(al.TaskOverviewDrawer,{open:!!H,onOpenChange:a=>{a||I(null)},taskId:H})]})}],144016)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=0iu._%5BworkspaceId%5D_projects_%5BprojectId%5D_versions_version-timeline-client_tsx_07o_kyi._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[750227,(a,b,c)=>{b.exports=a.x("node:path",()=>require("node:path"))},865011,a=>{"use strict";var b=a.i(728778),c=a.i(634910),d=a.i(553798),e=a.i(269280),f=a.i(350739),g=a.i(347165),h=a.i(607219),i=a.i(951192);let j=[{key:"notes",icon:f.FileText},{key:"assets",icon:g.FolderOpen},{key:"archive",icon:h.Archive}];a.s(["SubPageNav",0,function({workspaceId:a}){let{t:f}=(0,i.useI18n)(),g=(0,d.usePathname)(),h=j.find(a=>g.includes(`/${a.key}`))?.key;return(0,b.jsxs)("div",{className:"header-sm flex items-center gap-1 px-4",children:[(0,b.jsxs)(c.default,{href:`/workspaces/${a}`,className:"mr-2 inline-flex h-8 items-center gap-1.5 rounded-md px-2 text-xs text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",children:[(0,b.jsx)(e.ArrowLeft,{className:"h-3.5 w-3.5"}),(0,b.jsx)("span",{children:f("archive.backToBoard")})]}),(0,b.jsx)("span",{className:"mr-2 h-4 w-px bg-border"}),j.map(d=>{let e=d.icon,g=h===d.key;return(0,b.jsxs)(c.default,{href:`/workspaces/${a}/${d.key}`,className:`inline-flex h-8 items-center gap-1.5 rounded-md px-3 text-xs font-medium transition-colors ${g?"bg-accent text-foreground":"text-muted-foreground hover:bg-accent/50 hover:text-foreground"}`,children:[(0,b.jsx)(e,{className:"h-3.5 w-3.5"}),(0,b.jsx)("span",{children:f(`sidebar.${d.key}`)})]},d.key)})]})}])},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)},521007,a=>{"use strict";a.s(["BOARD_COLUMNS",0,[{id:"TODO",label:"To Do",color:"bg-slate-400"},{id:"IN_PROGRESS",label:"In Progress",color:"bg-amber-400"},{id:"IN_REVIEW",label:"In Review",color:"bg-sky-400"},{id:"DONE",label:"Done",color:"bg-emerald-400"},{id:"CANCELLED",label:"Cancelled",color:"bg-rose-400"}],"NOTE_CATEGORIES_PRESET",0,["账号","环境","需求","备忘"],"PRIORITY_CONFIG",0,{LOW:{label:"低",color:"bg-slate-500/20 text-slate-300 border border-slate-500/30"},MEDIUM:{label:"中",color:"bg-amber-500/20 text-amber-300 border border-amber-500/30"},HIGH:{label:"高",color:"bg-orange-500/20 text-orange-300 border border-orange-500/30"},CRITICAL:{label:"紧急",color:"bg-rose-500/20 text-rose-300 border border-rose-500/30"}},"TOWER_LABEL_NAME",0,"Tower"])},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})]})}])},757942,950314,a=>{"use strict";var b=a.i(90393);a.s([],757942),a.s(["Streamdown",()=>b.C],950314)},176160,204276,a=>{"use strict";var b=a.i(780410);let c=(0,b.createServerReference)("40252ce6324c0a56a08d03d678ff95af7c0e773e32",b.callServer,void 0,b.findSourceMapURL,"createNote");a.s(["createNote",0,c],176160);let d=(0,b.createServerReference)("405307474d0da8ca50db2ee023d1f65f98b80aa7c9",b.callServer,void 0,b.findSourceMapURL,"deleteNote");a.s(["deleteNote",0,d],204276)},778772,a=>{"use strict";var b=a.i(728778),c=a.i(374637),d=a.i(774881),e=a.i(704494),f=a.i(865011),g=a.i(951192),h=a.i(521007),i=a.i(176160),j=a.i(780410);let k=(0,j.createServerReference)("60b616a21a733789a592b588751e4dd919f241fa0a",j.callServer,void 0,j.findSourceMapURL,"updateNote");var l=a.i(204276);let m=(0,j.createServerReference)("60904ef2c7ec783a84db92ed8496db8527a60d81ed",j.callServer,void 0,j.findSourceMapURL,"getProjectNotes");var n=a.i(368114);function o({active:a,onSelect:c}){let{t:d}=(0,g.useI18n)();return(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5",children:[(0,b.jsx)("button",{onClick:()=>c("all"),className:(0,n.cn)("rounded-lg px-3 py-1 text-xs font-medium transition-colors","all"===a?"bg-primary/15 text-primary ring-1 ring-primary/20":"text-muted-foreground hover:bg-accent"),children:d("notes.allCategories")}),h.NOTE_CATEGORIES_PRESET.map(d=>(0,b.jsx)("button",{onClick:()=>c(d),className:(0,n.cn)("rounded-lg px-3 py-1 text-xs font-medium transition-colors",a===d?"bg-primary/15 text-primary ring-1 ring-primary/20":"text-muted-foreground hover:bg-accent"),children:d},d))]})}var p=a.i(699570),q=a.i(580701),r=a.i(350739),s=a.i(579834),t=a.i(690251),u=a.i(975231);a.i(757942);var v=a.i(950314);function w({note:a,onEdit:c,onDelete:d}){let{t:e}=(0,g.useI18n)(),f=a.content.slice(0,300);return(0,b.jsxs)("div",{className:"group relative rounded-lg border border-border bg-card p-4 transition-colors hover:border-border/80 hover:bg-accent/20",children:[(0,b.jsxs)("div",{className:"absolute right-3 top-3 flex items-center gap-1 opacity-0 transition-opacity group-hover:opacity-100",children:[(0,b.jsx)(p.Button,{variant:"ghost",size:"icon-sm",onClick:()=>c(a),className:"text-muted-foreground","aria-label":e("notes.edit"),children:(0,b.jsx)(t.Pencil,{className:"h-3.5 w-3.5"})}),(0,b.jsx)(p.Button,{variant:"ghost",size:"icon-sm",onClick:()=>d(a.id),className:"text-muted-foreground hover:text-rose-400","aria-label":e("notes.delete"),children:(0,b.jsx)(u.Trash2,{className:"h-3.5 w-3.5"})})]}),(0,b.jsx)("div",{className:"mb-2 pr-16",children:(0,b.jsx)("h3",{className:"truncate text-sm font-semibold text-foreground",children:a.title})}),(0,b.jsx)("span",{className:"mb-3 inline-block rounded-full bg-muted px-2 py-0.5 text-[10px] font-medium text-muted-foreground",children:a.category}),(0,b.jsx)("div",{className:"max-h-24 overflow-hidden text-sm leading-relaxed text-muted-foreground",children:(0,b.jsx)(v.Streamdown,{children:f})})]})}function x({notes:a,onEdit:c,onDelete:d}){let{t:e}=(0,g.useI18n)();return 0===a.length?(0,b.jsx)(s.EmptyState,{icon:r.FileText,title:e("notes.empty"),description:e("notes.emptyHint")}):(0,b.jsx)("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-3",children:a.map(a=>(0,b.jsx)(w,{note:a,onEdit:c,onDelete:d},a.id))})}var y=a.i(429246);function z({value:a,onChange:c}){return(0,b.jsxs)("div",{className:"relative grid grid-cols-2 gap-4 flex-1 min-h-64",children:[(0,b.jsx)(y.Textarea,{value:a,onChange:a=>c(a.target.value),className:"absolute inset-0 w-1/2 pr-2 resize-none font-mono text-sm border rounded-md p-3 bg-background text-foreground border-border focus:outline-none focus:ring-1 focus:ring-ring",placeholder:"Write Markdown here..."}),(0,b.jsx)("div",{className:"absolute inset-0 left-1/2 pl-2",children:(0,b.jsx)("div",{className:"h-full overflow-y-auto border rounded-md p-3 border-border text-sm leading-relaxed",children:(0,b.jsx)(v.Streamdown,{children:a})})})]})}a.s(["NotesPageClient",0,function({allWorkspaces:a,initialWorkspaceId:j,initialProjectId:n,initialNotes:r}){let s,t,{t:u}=(0,g.useI18n)(),[v,w]=(0,c.useTransition)(),[y,A]=(0,c.useState)(j),[B,C]=(0,c.useState)(n),[D,E]=(0,c.useState)(r),[F,G]=(0,c.useState)("all"),[H,I]=(0,c.useState)(null),[J,K]=(0,c.useState)(!1),[L,M]=(0,c.useState)(""),[N,O]=(0,c.useState)(""),[P,Q]=(0,c.useState)(h.NOTE_CATEGORIES_PRESET[3]),[R,S]=(0,c.useState)(j),[T,U]=(0,c.useState)(n),V=a.find(a=>a.id===y),W=V?.projects??[],X=a.find(a=>a.id===R),Y=X?.projects??[],Z=(0,c.useCallback)(a=>{a?w(async()=>{E(await m(a))}):E([])},[w]),$=async()=>{T&&L.trim()&&(await (0,i.createNote)({title:L.trim(),content:N,category:P,projectId:T}),K(!1),T===B&&Z(B))},_=async()=>{H&&L.trim()&&(await k(H.id,{title:L.trim(),content:N,category:P}),I(null),Z(B))},aa=async a=>{let b=D.find(b=>b.id===a);!b||confirm(u("notes.deleteConfirm",{title:b.title}))&&(await (0,l.deleteNote)(a),Z(B))},ab="all"===F?D.map(a=>({...a,updatedAt:new Date(a.updatedAt)})):D.filter(a=>a.category===F).map(a=>({...a,updatedAt:new Date(a.updatedAt)})),ac=J||null!==H;return(0,b.jsxs)("div",{className:"flex h-full flex-col overflow-hidden",children:[(0,b.jsx)(f.SubPageNav,{workspaceId:y}),(0,b.jsxs)("div",{className:"header-sm flex items-center gap-3 px-6 py-2",children:[(0,b.jsxs)(q.Select,{value:y,onValueChange:b=>b&&(b=>{if(b===y)return;A(b);let c=a.find(a=>a.id===b),d=c?.projects[0]??null;C(d?.id??null),G("all"),Z(d?.id??null)})(b),children:[(0,b.jsx)(q.SelectTrigger,{className:"h-8 w-auto min-w-[120px]",children:(0,b.jsx)("span",{className:"truncate",children:a.find(a=>a.id===y)?.name??y})}),(0,b.jsx)(q.SelectContent,{children:a.map(a=>(0,b.jsx)(q.SelectItem,{value:a.id,children:a.name},a.id))})]}),W.length>0&&(0,b.jsxs)(q.Select,{value:B??"",onValueChange:a=>a&&void(a!==B&&(C(a),G("all"),Z(a))),children:[(0,b.jsx)(q.SelectTrigger,{className:"h-8 w-auto min-w-[140px]",children:(0,b.jsx)("span",{className:"truncate",children:(s=W.find(a=>a.id===B))?s.alias?`${s.name} (${s.alias})`:s.name:""})}),(0,b.jsx)(q.SelectContent,{children:W.map(a=>(0,b.jsxs)(q.SelectItem,{value:a.id,children:[a.name,a.alias?` (${a.alias})`:""]},a.id))})]}),!ac&&(0,b.jsxs)(p.Button,{onClick:()=>{M(""),O(""),Q(h.NOTE_CATEGORIES_PRESET[3]),S(y),U(B),I(null),K(!0)},className:"ml-auto bg-primary/10 text-primary ring-1 ring-primary/20 hover:bg-primary/15",children:[(0,b.jsx)(d.Plus,{className:"h-3.5 w-3.5"}),(0,b.jsx)("span",{children:u("notes.newNote")})]})]}),(0,b.jsx)("div",{className:"flex-1 overflow-hidden px-6 py-4 flex flex-col",children:ac?(0,b.jsxs)("div",{className:"flex flex-col gap-4 flex-1 min-h-0",children:[(0,b.jsxs)("div",{className:"flex items-center gap-3 flex-wrap",children:[!H&&(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("label",{className:"text-xs text-muted-foreground whitespace-nowrap",children:u("notes.workspace")}),(0,b.jsxs)(q.Select,{value:R,onValueChange:b=>b&&(b=>{if(b===R)return;S(b);let c=a.find(a=>a.id===b),d=c?.projects[0]??null;U(d?.id??null)})(b),children:[(0,b.jsx)(q.SelectTrigger,{className:"min-w-[140px] text-xs",children:(0,b.jsx)("span",{className:"truncate",children:a.find(a=>a.id===R)?.name??R})}),(0,b.jsx)(q.SelectContent,{children:a.map(a=>(0,b.jsx)(q.SelectItem,{value:a.id,children:a.name},a.id))})]})]}),!H&&Y.length>0&&(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("label",{className:"text-xs text-muted-foreground whitespace-nowrap",children:u("notes.project")}),(0,b.jsxs)(q.Select,{value:T??"",onValueChange:a=>a&&U(a),children:[(0,b.jsx)(q.SelectTrigger,{className:"min-w-[160px] text-xs",children:(0,b.jsx)("span",{className:"truncate",children:(t=Y.find(a=>a.id===T))?t.alias?`${t.name} (${t.alias})`:t.name:""})}),(0,b.jsx)(q.SelectContent,{children:Y.map(a=>(0,b.jsxs)(q.SelectItem,{value:a.id,children:[a.name,a.alias?` (${a.alias})`:""]},a.id))})]})]}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("label",{className:"text-xs text-muted-foreground whitespace-nowrap",children:u("notes.categoryLabel")}),(0,b.jsxs)(q.Select,{value:P,onValueChange:a=>a&&Q(a),children:[(0,b.jsx)(q.SelectTrigger,{className:"min-w-[120px] text-xs",children:(0,b.jsx)("span",{className:"truncate",children:P})}),(0,b.jsx)(q.SelectContent,{children:h.NOTE_CATEGORIES_PRESET.map(a=>(0,b.jsx)(q.SelectItem,{value:a,children:a},a))})]})]})]}),(0,b.jsx)("input",{type:"text",value:L,onChange:a=>M(a.target.value),placeholder:u("notes.titlePlaceholder"),className:"w-full rounded-md border border-border bg-background px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring"}),(0,b.jsx)(z,{value:N,onChange:O}),(0,b.jsxs)("div",{className:"flex items-center gap-2 justify-end",children:[(0,b.jsx)(p.Button,{variant:"outline",onClick:()=>{K(!1),I(null)},children:u("notes.cancel")}),(0,b.jsx)(p.Button,{onClick:H?_:$,disabled:!L.trim()||!H&&!T,className:"bg-primary/10 text-primary ring-1 ring-primary/20 hover:bg-primary/15",children:u("notes.save")})]})]}):(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsx)(o,{active:F,onSelect:G}),(0,b.jsxs)("div",{className:`relative ${v?"opacity-40 pointer-events-none":""} transition-opacity`,children:[v&&(0,b.jsx)("div",{className:"absolute inset-0 z-10 flex items-center justify-center",children:(0,b.jsx)(e.Loader2,{className:"size-5 animate-spin text-muted-foreground"})}),0===W.length?(0,b.jsxs)("div",{className:"flex flex-col items-center justify-center gap-2 py-16 text-center",children:[(0,b.jsx)("p",{className:"text-sm font-medium text-muted-foreground",children:u("notes.noProject")}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground/60",children:u("notes.noProjectHint")})]}):(0,b.jsx)(x,{notes:ab,onEdit:a=>{M(a.title),O(a.content),Q(a.category),I(a),K(!1)},onDelete:aa})]})]})})]})}],778772)},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)))}];
|
|
1
|
+
module.exports=[750227,(a,b,c)=>{b.exports=a.x("node:path",()=>require("node:path"))},865011,a=>{"use strict";var b=a.i(728778),c=a.i(634910),d=a.i(553798),e=a.i(269280),f=a.i(350739),g=a.i(347165),h=a.i(607219),i=a.i(951192);let j=[{key:"notes",icon:f.FileText},{key:"assets",icon:g.FolderOpen},{key:"archive",icon:h.Archive}];a.s(["SubPageNav",0,function({workspaceId:a}){let{t:f}=(0,i.useI18n)(),g=(0,d.usePathname)(),h=j.find(a=>g.includes(`/${a.key}`))?.key;return(0,b.jsxs)("div",{className:"header-sm flex items-center gap-1 px-4",children:[(0,b.jsxs)(c.default,{href:`/workspaces/${a}`,className:"mr-2 inline-flex h-8 items-center gap-1.5 rounded-md px-2 text-xs text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",children:[(0,b.jsx)(e.ArrowLeft,{className:"h-3.5 w-3.5"}),(0,b.jsx)("span",{children:f("archive.backToBoard")})]}),(0,b.jsx)("span",{className:"mr-2 h-4 w-px bg-border"}),j.map(d=>{let e=d.icon,g=h===d.key;return(0,b.jsxs)(c.default,{href:`/workspaces/${a}/${d.key}`,className:`inline-flex h-8 items-center gap-1.5 rounded-md px-3 text-xs font-medium transition-colors ${g?"bg-accent text-foreground":"text-muted-foreground hover:bg-accent/50 hover:text-foreground"}`,children:[(0,b.jsx)(e,{className:"h-3.5 w-3.5"}),(0,b.jsx)("span",{children:f(`sidebar.${d.key}`)})]},d.key)})]})}])},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)},521007,a=>{"use strict";a.s(["BOARD_COLUMNS",0,[{id:"TODO",label:"To Do",color:"bg-slate-400"},{id:"IN_PROGRESS",label:"In Progress",color:"bg-amber-400"},{id:"IN_REVIEW",label:"In Review",color:"bg-sky-400"},{id:"DONE",label:"Done",color:"bg-emerald-400"},{id:"CANCELLED",label:"Cancelled",color:"bg-rose-400"}],"NOTE_CATEGORIES_PRESET",0,["账号","环境","需求","备忘"],"PRIORITY_CONFIG",0,{LOW:{label:"低",color:"bg-slate-500/20 text-slate-300 border border-slate-500/30"},MEDIUM:{label:"中",color:"bg-amber-500/20 text-amber-300 border border-amber-500/30"},HIGH:{label:"高",color:"bg-orange-500/20 text-orange-300 border border-orange-500/30"},CRITICAL:{label:"紧急",color:"bg-rose-500/20 text-rose-300 border border-rose-500/30"}},"TOWER_LABEL_NAME",0,"Tower"])},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})]})}])},757942,950314,a=>{"use strict";var b=a.i(90393);a.s([],757942),a.s(["Streamdown",()=>b.C],950314)},916469,700789,a=>{"use strict";var b=a.i(780410);let c=(0,b.createServerReference)("40616596fa4f2dfc94d91eca51a36d057b47216eb3",b.callServer,void 0,b.findSourceMapURL,"createNote");a.s(["createNote",0,c],916469);let d=(0,b.createServerReference)("4068cccd8956a230bd6ff1e574451adfa98168dfe5",b.callServer,void 0,b.findSourceMapURL,"deleteNote");a.s(["deleteNote",0,d],700789)},778772,a=>{"use strict";var b=a.i(728778),c=a.i(374637),d=a.i(774881),e=a.i(704494),f=a.i(865011),g=a.i(951192),h=a.i(521007),i=a.i(916469),j=a.i(780410);let k=(0,j.createServerReference)("60a19391fdd2ed4984125e6d29590c4fa741dd84d6",j.callServer,void 0,j.findSourceMapURL,"updateNote");var l=a.i(700789);let m=(0,j.createServerReference)("60d3b3d4dc689caca4392adfe1014e45cc6cd65d97",j.callServer,void 0,j.findSourceMapURL,"getProjectNotes");var n=a.i(368114);function o({active:a,onSelect:c}){let{t:d}=(0,g.useI18n)();return(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5",children:[(0,b.jsx)("button",{onClick:()=>c("all"),className:(0,n.cn)("rounded-lg px-3 py-1 text-xs font-medium transition-colors","all"===a?"bg-primary/15 text-primary ring-1 ring-primary/20":"text-muted-foreground hover:bg-accent"),children:d("notes.allCategories")}),h.NOTE_CATEGORIES_PRESET.map(d=>(0,b.jsx)("button",{onClick:()=>c(d),className:(0,n.cn)("rounded-lg px-3 py-1 text-xs font-medium transition-colors",a===d?"bg-primary/15 text-primary ring-1 ring-primary/20":"text-muted-foreground hover:bg-accent"),children:d},d))]})}var p=a.i(699570),q=a.i(580701),r=a.i(350739),s=a.i(579834),t=a.i(690251),u=a.i(975231);a.i(757942);var v=a.i(950314);function w({note:a,onEdit:c,onDelete:d}){let{t:e}=(0,g.useI18n)(),f=a.content.slice(0,300);return(0,b.jsxs)("div",{className:"group relative rounded-lg border border-border bg-card p-4 transition-colors hover:border-border/80 hover:bg-accent/20",children:[(0,b.jsxs)("div",{className:"absolute right-3 top-3 flex items-center gap-1 opacity-0 transition-opacity group-hover:opacity-100",children:[(0,b.jsx)(p.Button,{variant:"ghost",size:"icon-sm",onClick:()=>c(a),className:"text-muted-foreground","aria-label":e("notes.edit"),children:(0,b.jsx)(t.Pencil,{className:"h-3.5 w-3.5"})}),(0,b.jsx)(p.Button,{variant:"ghost",size:"icon-sm",onClick:()=>d(a.id),className:"text-muted-foreground hover:text-rose-400","aria-label":e("notes.delete"),children:(0,b.jsx)(u.Trash2,{className:"h-3.5 w-3.5"})})]}),(0,b.jsx)("div",{className:"mb-2 pr-16",children:(0,b.jsx)("h3",{className:"truncate text-sm font-semibold text-foreground",children:a.title})}),(0,b.jsx)("span",{className:"mb-3 inline-block rounded-full bg-muted px-2 py-0.5 text-[10px] font-medium text-muted-foreground",children:a.category}),(0,b.jsx)("div",{className:"max-h-24 overflow-hidden text-sm leading-relaxed text-muted-foreground",children:(0,b.jsx)(v.Streamdown,{children:f})})]})}function x({notes:a,onEdit:c,onDelete:d}){let{t:e}=(0,g.useI18n)();return 0===a.length?(0,b.jsx)(s.EmptyState,{icon:r.FileText,title:e("notes.empty"),description:e("notes.emptyHint")}):(0,b.jsx)("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-3",children:a.map(a=>(0,b.jsx)(w,{note:a,onEdit:c,onDelete:d},a.id))})}var y=a.i(429246);function z({value:a,onChange:c}){return(0,b.jsxs)("div",{className:"relative grid grid-cols-2 gap-4 flex-1 min-h-64",children:[(0,b.jsx)(y.Textarea,{value:a,onChange:a=>c(a.target.value),className:"absolute inset-0 w-1/2 pr-2 resize-none font-mono text-sm border rounded-md p-3 bg-background text-foreground border-border focus:outline-none focus:ring-1 focus:ring-ring",placeholder:"Write Markdown here..."}),(0,b.jsx)("div",{className:"absolute inset-0 left-1/2 pl-2",children:(0,b.jsx)("div",{className:"h-full overflow-y-auto border rounded-md p-3 border-border text-sm leading-relaxed",children:(0,b.jsx)(v.Streamdown,{children:a})})})]})}a.s(["NotesPageClient",0,function({allWorkspaces:a,initialWorkspaceId:j,initialProjectId:n,initialNotes:r}){let s,t,{t:u}=(0,g.useI18n)(),[v,w]=(0,c.useTransition)(),[y,A]=(0,c.useState)(j),[B,C]=(0,c.useState)(n),[D,E]=(0,c.useState)(r),[F,G]=(0,c.useState)("all"),[H,I]=(0,c.useState)(null),[J,K]=(0,c.useState)(!1),[L,M]=(0,c.useState)(""),[N,O]=(0,c.useState)(""),[P,Q]=(0,c.useState)(h.NOTE_CATEGORIES_PRESET[3]),[R,S]=(0,c.useState)(j),[T,U]=(0,c.useState)(n),V=a.find(a=>a.id===y),W=V?.projects??[],X=a.find(a=>a.id===R),Y=X?.projects??[],Z=(0,c.useCallback)(a=>{a?w(async()=>{E(await m(a))}):E([])},[w]),$=async()=>{T&&L.trim()&&(await (0,i.createNote)({title:L.trim(),content:N,category:P,projectId:T}),K(!1),T===B&&Z(B))},_=async()=>{H&&L.trim()&&(await k(H.id,{title:L.trim(),content:N,category:P}),I(null),Z(B))},aa=async a=>{let b=D.find(b=>b.id===a);!b||confirm(u("notes.deleteConfirm",{title:b.title}))&&(await (0,l.deleteNote)(a),Z(B))},ab="all"===F?D.map(a=>({...a,updatedAt:new Date(a.updatedAt)})):D.filter(a=>a.category===F).map(a=>({...a,updatedAt:new Date(a.updatedAt)})),ac=J||null!==H;return(0,b.jsxs)("div",{className:"flex h-full flex-col overflow-hidden",children:[(0,b.jsx)(f.SubPageNav,{workspaceId:y}),(0,b.jsxs)("div",{className:"header-sm flex items-center gap-3 px-6 py-2",children:[(0,b.jsxs)(q.Select,{value:y,onValueChange:b=>b&&(b=>{if(b===y)return;A(b);let c=a.find(a=>a.id===b),d=c?.projects[0]??null;C(d?.id??null),G("all"),Z(d?.id??null)})(b),children:[(0,b.jsx)(q.SelectTrigger,{className:"h-8 w-auto min-w-[120px]",children:(0,b.jsx)("span",{className:"truncate",children:a.find(a=>a.id===y)?.name??y})}),(0,b.jsx)(q.SelectContent,{children:a.map(a=>(0,b.jsx)(q.SelectItem,{value:a.id,children:a.name},a.id))})]}),W.length>0&&(0,b.jsxs)(q.Select,{value:B??"",onValueChange:a=>a&&void(a!==B&&(C(a),G("all"),Z(a))),children:[(0,b.jsx)(q.SelectTrigger,{className:"h-8 w-auto min-w-[140px]",children:(0,b.jsx)("span",{className:"truncate",children:(s=W.find(a=>a.id===B))?s.alias?`${s.name} (${s.alias})`:s.name:""})}),(0,b.jsx)(q.SelectContent,{children:W.map(a=>(0,b.jsxs)(q.SelectItem,{value:a.id,children:[a.name,a.alias?` (${a.alias})`:""]},a.id))})]}),!ac&&(0,b.jsxs)(p.Button,{onClick:()=>{M(""),O(""),Q(h.NOTE_CATEGORIES_PRESET[3]),S(y),U(B),I(null),K(!0)},className:"ml-auto bg-primary/10 text-primary ring-1 ring-primary/20 hover:bg-primary/15",children:[(0,b.jsx)(d.Plus,{className:"h-3.5 w-3.5"}),(0,b.jsx)("span",{children:u("notes.newNote")})]})]}),(0,b.jsx)("div",{className:"flex-1 overflow-hidden px-6 py-4 flex flex-col",children:ac?(0,b.jsxs)("div",{className:"flex flex-col gap-4 flex-1 min-h-0",children:[(0,b.jsxs)("div",{className:"flex items-center gap-3 flex-wrap",children:[!H&&(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("label",{className:"text-xs text-muted-foreground whitespace-nowrap",children:u("notes.workspace")}),(0,b.jsxs)(q.Select,{value:R,onValueChange:b=>b&&(b=>{if(b===R)return;S(b);let c=a.find(a=>a.id===b),d=c?.projects[0]??null;U(d?.id??null)})(b),children:[(0,b.jsx)(q.SelectTrigger,{className:"min-w-[140px] text-xs",children:(0,b.jsx)("span",{className:"truncate",children:a.find(a=>a.id===R)?.name??R})}),(0,b.jsx)(q.SelectContent,{children:a.map(a=>(0,b.jsx)(q.SelectItem,{value:a.id,children:a.name},a.id))})]})]}),!H&&Y.length>0&&(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("label",{className:"text-xs text-muted-foreground whitespace-nowrap",children:u("notes.project")}),(0,b.jsxs)(q.Select,{value:T??"",onValueChange:a=>a&&U(a),children:[(0,b.jsx)(q.SelectTrigger,{className:"min-w-[160px] text-xs",children:(0,b.jsx)("span",{className:"truncate",children:(t=Y.find(a=>a.id===T))?t.alias?`${t.name} (${t.alias})`:t.name:""})}),(0,b.jsx)(q.SelectContent,{children:Y.map(a=>(0,b.jsxs)(q.SelectItem,{value:a.id,children:[a.name,a.alias?` (${a.alias})`:""]},a.id))})]})]}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("label",{className:"text-xs text-muted-foreground whitespace-nowrap",children:u("notes.categoryLabel")}),(0,b.jsxs)(q.Select,{value:P,onValueChange:a=>a&&Q(a),children:[(0,b.jsx)(q.SelectTrigger,{className:"min-w-[120px] text-xs",children:(0,b.jsx)("span",{className:"truncate",children:P})}),(0,b.jsx)(q.SelectContent,{children:h.NOTE_CATEGORIES_PRESET.map(a=>(0,b.jsx)(q.SelectItem,{value:a,children:a},a))})]})]})]}),(0,b.jsx)("input",{type:"text",value:L,onChange:a=>M(a.target.value),placeholder:u("notes.titlePlaceholder"),className:"w-full rounded-md border border-border bg-background px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring"}),(0,b.jsx)(z,{value:N,onChange:O}),(0,b.jsxs)("div",{className:"flex items-center gap-2 justify-end",children:[(0,b.jsx)(p.Button,{variant:"outline",onClick:()=>{K(!1),I(null)},children:u("notes.cancel")}),(0,b.jsx)(p.Button,{onClick:H?_:$,disabled:!L.trim()||!H&&!T,className:"bg-primary/10 text-primary ring-1 ring-primary/20 hover:bg-primary/15",children:u("notes.save")})]})]}):(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsx)(o,{active:F,onSelect:G}),(0,b.jsxs)("div",{className:`relative ${v?"opacity-40 pointer-events-none":""} transition-opacity`,children:[v&&(0,b.jsx)("div",{className:"absolute inset-0 z-10 flex items-center justify-center",children:(0,b.jsx)(e.Loader2,{className:"size-5 animate-spin text-muted-foreground"})}),0===W.length?(0,b.jsxs)("div",{className:"flex flex-col items-center justify-center gap-2 py-16 text-center",children:[(0,b.jsx)("p",{className:"text-sm font-medium text-muted-foreground",children:u("notes.noProject")}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground/60",children:u("notes.noProjectHint")})]}):(0,b.jsx)(x,{notes:ab,onEdit:a=>{M(a.title),O(a.content),Q(a.category),I(a),K(!1)},onDelete:aa})]})]})})]})}],778772)},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
2
|
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%
|
|
3
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__0-o.l41._.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
module.exports=[495370,a=>{"use strict";var b=a.i(815429),c=a.i(761469),d=a.i(188139),e=a.i(496877);async function f(a){return c.db.label.findMany({where:{OR:[{isBuiltin:!0},{workspaceId:a}]},orderBy:[{isBuiltin:"desc"},{name:"asc"}]})}async function g(a){let b=e.createLabelSchema.parse(a),f=await c.db.label.create({data:{name:b.name,color:b.color,workspaceId:b.workspaceId}});return(0,d.revalidatePath)("/workspaces"),f}async function h(a){let b=await c.db.label.findUnique({where:{id:a}});if(!b)throw Error("Label not found");if(b.isBuiltin)throw Error("Cannot delete builtin labels");await c.db.label.delete({where:{id:a}}),(0,d.revalidatePath)("/workspaces")}async function i(a,b){await c.db.$transaction(async c=>{await c.taskLabel.deleteMany({where:{taskId:a}}),b.length>0&&await c.taskLabel.createMany({data:b.map(b=>({taskId:a,labelId:b}))})}),(0,d.revalidatePath)("/workspaces")}async function j(a){return(await c.db.taskLabel.findMany({where:{taskId:a},include:{label:!0}})).map(a=>a.label)}(0,a.i(630048).ensureServerEntryExports)([f,g,h,i,j]),(0,b.registerServerReference)(f,"
|
|
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,"40c1ed9a257aa67c03663d2c5615e5a2c60cde232a",null),(0,b.registerServerReference)(g,"40c8e22cbbec38a0b343cc303ab78f15dee059b736",null),(0,b.registerServerReference)(h,"4005b705697e7e71d6a43b505aebdc5ba493f42166",null),(0,b.registerServerReference)(i,"6096fc522bc1bedbd9e869f29be5161b68d8944c3d",null),(0,b.registerServerReference)(j,"400eea048188caab32f4ca1bf26d6fb06d99f5f007",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
2
|
n."projectId", p."workspaceId", p.name as project_name, w.name as workspace_name
|
|
3
3
|
FROM "ProjectNote" n
|
|
4
4
|
JOIN "Project" p ON p.id = n."projectId"
|
|
@@ -18,7 +18,7 @@ module.exports=[495370,a=>{"use strict";var b=a.i(815429),c=a.i(761469),d=a.i(18
|
|
|
18
18
|
JOIN "Project" p ON p.id = n."projectId"
|
|
19
19
|
JOIN "Workspace" w ON w.id = p."workspaceId"
|
|
20
20
|
WHERE n.title LIKE ? OR n.content LIKE ?
|
|
21
|
-
LIMIT ?`,`%${g}%`,`%${g}%`,h)).map(a=>c(a,j))}}return"asset"===e?(await b.db.projectAsset.findMany({where:{OR:[{filename:{contains:g}},{description:{contains:g}}]},include:{project:{include:{workspace:!0}}},take:h,orderBy:{createdAt:"desc"}})).map(a=>({id:a.id,type:"asset",title:a.filename,subtitle:`${a.project.workspace.name} / ${a.project.name}`,navigateTo:`/workspaces/${a.project.workspaceId}/assets?projectId=${a.projectId}`,snippet:a.description||void 0})):[]}a.s(["search",0,d])},396904,a=>a.a(async(b,c)=>{try{var d=a.i(815429),e=a.i(287068),f=a.i(980999),g=a.i(630048),h=b([f]);async function i(a,b="task"){let c=await (0,f.getConfigValues)(["search.resultLimit","search.allModeCap","search.snippetLength"]);return(0,e.search)(a,b,{resultLimit:c["search.resultLimit"]??20,allModeCap:c["search.allModeCap"]??5,snippetLength:c["search.snippetLength"]??80})}[f]=h.then?(await h)():h,(0,g.ensureServerEntryExports)([i]),(0,d.registerServerReference)(i,"
|
|
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,"60c95388940c8d3b45d2a8be13a34a5dd553b61d67",null),a.s(["globalSearch",0,i]),c()}catch(a){c(a)}},!1),101844,a=>{"use strict";var b=a.i(815429),c=a.i(924868),d=a.i(522734),e=a.i(814747),f=a.i(761469),g=a.i(188139),h=a.i(630048);async function i(b){if(!b||"string"!=typeof b)return{safe:!1,reason:"无效的项目 ID"};let g=await f.db.project.findUnique({where:{id:b}});if(!g||!g.localPath)return{safe:!1,reason:"项目不存在或未设置本地路径"};if((await f.db.taskExecution.findMany({where:{task:{projectId:b},status:"RUNNING"},select:{id:!0}})).length>0)return{safe:!1,reason:"该项目有正在运行的任务执行,请先停止所有执行"};let h=await f.db.task.findMany({where:{projectId:b},select:{id:!0}}),{getSession:i}=await a.A(98813);for(let a of h)if(void 0!==i(a.id))return{safe:!1,reason:"该项目有活跃的终端会话,请先关闭"};let j=e.default.join(g.localPath,".worktrees");if((0,d.existsSync)(j))try{if((await (0,c.readdir)(j)).length>0)return{safe:!1,reason:"该项目有活跃的 Git Worktree,请先清理"}}catch{}return{safe:!0}}async function j(b,h){if(!b||"string"!=typeof b)return{success:!1,error:"无效的项目 ID"};if(!h||"string"!=typeof h||!e.default.isAbsolute(h))return{success:!1,error:"目标路径必须是非空的绝对路径"};let i=await f.db.project.findUnique({where:{id:b}});if(!i||!i.localPath)return{success:!1,error:"项目不存在或未设置本地路径"};let j=i.localPath;if(h===j)return{success:!1,error:"源路径和目标路径相同"};if((await f.db.taskExecution.findMany({where:{task:{projectId:b},status:"RUNNING"},select:{id:!0}})).length>0)return{success:!1,error:"该项目有正在运行的任务执行,请先停止所有执行"};let k=await f.db.task.findMany({where:{projectId:b},select:{id:!0}}),{getSession:l}=await a.A(98813);for(let a of k)if(void 0!==l(a.id))return{success:!1,error:"该项目有活跃的终端会话,请先关闭"};let m=e.default.join(j,".worktrees");if((0,d.existsSync)(m))try{if((await (0,c.readdir)(m)).length>0)return{success:!1,error:"该项目有活跃的 Git Worktree,请先清理"}}catch{}if((0,d.existsSync)(h))try{if((await (0,c.readdir)(h)).length>0)return{success:!1,error:"目标路径已存在且不为空"}}catch{return{success:!1,error:"目标路径已存在且不为空"}}let n=e.default.dirname(h);try{await (0,c.mkdir)(n,{recursive:!0})}catch(a){if("EACCES"===a.code||"EPERM"===a.code)return{success:!1,error:`无权限创建父目录 ${n} — 请检查 Git 路径映射规则的模板是否漏了 "~/" 前缀`};if("EROFS"===a.code)return{success:!1,error:`父目录所在文件系统只读:${n}`};return{success:!1,error:`创建父目录失败:${a.message||a.code||"未知错误"}`}}try{await (0,c.rename)(j,h)}catch(a){if("EXDEV"===a.code)return{success:!1,error:"源路径和目标路径不在同一文件系统,不支持跨设备迁移"};if("EACCES"===a.code||"EPERM"===a.code)return{success:!1,error:`无权限移动到 ${h}`};return{success:!1,error:a.message||"文件系统操作失败"}}return await f.db.project.update({where:{id:b},data:{localPath:h}}),(0,g.revalidatePath)("/workspaces"),{success:!0}}let k=`分析这个项目目录,生成一段简短的 Markdown 项目描述。
|
|
22
22
|
|
|
23
23
|
读取 package.json、README.md 等关键文件,然后概括:
|
|
24
24
|
|
|
@@ -42,6 +42,6 @@ Requirements:
|
|
|
42
42
|
- Keep it under 1000 words
|
|
43
43
|
- Use concise Markdown (bold labels + short sentences), no ## headings or tables
|
|
44
44
|
- Don't list every file/directory, only key information
|
|
45
|
-
- Output in English`;async function m(b,c="zh"){if(!b||"string"!=typeof b)throw Error("无效的本地路径");if(b.startsWith("~"))throw Error("不支持 ~ 别名,请提供绝对路径");if(!e.default.isAbsolute(b))throw Error("本地路径必须为绝对路径");let{aiQuery:d}=await a.A(752453),f=await d("en"===c?l:k,b,{maxTurns:10,tools:["Read","Glob"],allowedTools:["Read","Glob"]});if(!f)throw Error("AI 分析未返回结果");return f.length>2e3?f.slice(0,2e3).trimEnd()+"\n\n...":f}(0,h.ensureServerEntryExports)([i,j,m]),(0,b.registerServerReference)(i,"40bfb929e78b8995885651b72d3b4db9a6b698574f",null),(0,b.registerServerReference)(j,"60f23288a3871909d904ecbaab16d7246813ebcef5",null),(0,b.registerServerReference)(m,"60c04f31783506683945f873bb2f23b60b545118bb",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 e=d.join(this.getConfigDir(),"skills",a);try{if(!b.existsSync(c))return{ok:!1,method:"symlink",detail:e,error:`Source skill dir does not exist: ${c}`};b.mkdirSync(d.dirname(e),{recursive:!0});let a=await b.promises.lstat(e).catch(()=>null);if(a)if(!(a.isSymbolicLink()||"win32"===process.platform&&a.isDirectory()))return{ok:!1,method:"symlink",detail:e,error:`Refusing to overwrite non-symlink at ${e}`};else try{let a=await b.promises.readlink(e);if(d.resolve(a)===d.resolve(c))return{ok:!0,method:"symlink",detail:`${e} → ${c} (already)`};await b.promises.unlink(e)}catch{if(!a.isSymbolicLink())return{ok:!1,method:"symlink",detail:e,error:`Refusing to overwrite non-symlink at ${e}`}}return await b.promises.symlink(c,e,"dir"),{ok:!0,method:"symlink",detail:`${e} → ${c}`}}catch(a){return{ok:!1,method:"symlink",detail:e,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(){return process.env.CLAUDE_CODE_PATH?process.env.CLAUDE_CODE_PATH:(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,"406e2e4cc47185291de78e1588274f4b8e46cedb04",null),(0,b.registerServerReference)(f,"4024f8ea73b93494b383770fb2e208c86fe04994de",null),(0,b.registerServerReference)(g,"40abff11f62507e94641e5bfbb49c01adcd12a45d3",null),(0,b.registerServerReference)(h,"6060045bbf8c915448fb3f6cc34bdc320dfa044635",null),(0,b.registerServerReference)(i,"400df3667df21c9a48c89a463f1f80bf3122351c50",null),(0,b.registerServerReference)(j,"6015d584d79c9a518547354b76efe7027fd0222457",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_0wd-1.k._.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/_0kef0v6._.js"].map(b=>a.l(b))).then(()=>b(897667)))},144264,a=>{a.v(a=>Promise.resolve().then(()=>a(233405)))},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)))},662330,a=>{a.v(b=>Promise.all(["server/chunks/ssr/_0-ez10.._.js"].map(b=>a.l(b))).then(()=>b(818992)))},323970,a=>{a.v(a=>Promise.resolve().then(()=>a(522734)))},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)))},534777,a=>{a.v(a=>Promise.resolve().then(()=>a(224361)))},610073,a=>{a.v(a=>Promise.resolve().then(()=>a(4634)))},260815,a=>{a.v(a=>Promise.resolve().then(()=>a(924868)))}];
|
|
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,"40e8dd01fe9d2dc40496bc845f1f6a95be3454af33",null),(0,b.registerServerReference)(j,"6010d2ca5b605450312f869eafcd0b1b4643681ec6",null),(0,b.registerServerReference)(m,"605e973505a7785564f529b0df2839ad4047c95460",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 e=d.join(this.getConfigDir(),"skills",a);try{if(!b.existsSync(c))return{ok:!1,method:"symlink",detail:e,error:`Source skill dir does not exist: ${c}`};b.mkdirSync(d.dirname(e),{recursive:!0});let a=await b.promises.lstat(e).catch(()=>null);if(a)if(!(a.isSymbolicLink()||"win32"===process.platform&&a.isDirectory()))return{ok:!1,method:"symlink",detail:e,error:`Refusing to overwrite non-symlink at ${e}`};else try{let a=await b.promises.readlink(e);if(d.resolve(a)===d.resolve(c))return{ok:!0,method:"symlink",detail:`${e} → ${c} (already)`};await b.promises.unlink(e)}catch{if(!a.isSymbolicLink())return{ok:!1,method:"symlink",detail:e,error:`Refusing to overwrite non-symlink at ${e}`}}return await b.promises.symlink(c,e,"dir"),{ok:!0,method:"symlink",detail:`${e} → ${c}`}}catch(a){return{ok:!1,method:"symlink",detail:e,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(){return process.env.CLAUDE_CODE_PATH?process.env.CLAUDE_CODE_PATH:(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,"40b7501e08e21609968acead49b3d4b4c1b9bd1b09",null),(0,b.registerServerReference)(f,"40d73e8cb0640e94393e735f4fb90b2feb56a0b80d",null),(0,b.registerServerReference)(g,"409b3ffe750152a76a67ada9291a03ba4a69c9d1d3",null),(0,b.registerServerReference)(h,"6060a95370405c2d3433a75d5fbd42035d76e6e277",null),(0,b.registerServerReference)(i,"4023fdffccdaae05333a85f7e8e439cead864b1b96",null),(0,b.registerServerReference)(j,"60e4d6d82ba2ccd6c54f5ac357adfb3429f8c57d5b",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_0wd-1.k._.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/_0kef0v6._.js"].map(b=>a.l(b))).then(()=>b(897667)))},144264,a=>{a.v(a=>Promise.resolve().then(()=>a(233405)))},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)))},662330,a=>{a.v(b=>Promise.all(["server/chunks/ssr/_0-ez10.._.js"].map(b=>a.l(b))).then(()=>b(818992)))},323970,a=>{a.v(a=>Promise.resolve().then(()=>a(522734)))},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)))},534777,a=>{a.v(a=>Promise.resolve().then(()=>a(224361)))},610073,a=>{a.v(a=>Promise.resolve().then(()=>a(4634)))},260815,a=>{a.v(a=>Promise.resolve().then(()=>a(924868)))}];
|
|
46
46
|
|
|
47
47
|
//# sourceMappingURL=%5Broot-of-the-server%5D__02-6df-._.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
module.exports=[495370,a=>{"use strict";var b=a.i(815429),c=a.i(761469),d=a.i(188139),e=a.i(496877);async function f(a){return c.db.label.findMany({where:{OR:[{isBuiltin:!0},{workspaceId:a}]},orderBy:[{isBuiltin:"desc"},{name:"asc"}]})}async function g(a){let b=e.createLabelSchema.parse(a),f=await c.db.label.create({data:{name:b.name,color:b.color,workspaceId:b.workspaceId}});return(0,d.revalidatePath)("/workspaces"),f}async function h(a){let b=await c.db.label.findUnique({where:{id:a}});if(!b)throw Error("Label not found");if(b.isBuiltin)throw Error("Cannot delete builtin labels");await c.db.label.delete({where:{id:a}}),(0,d.revalidatePath)("/workspaces")}async function i(a,b){await c.db.$transaction(async c=>{await c.taskLabel.deleteMany({where:{taskId:a}}),b.length>0&&await c.taskLabel.createMany({data:b.map(b=>({taskId:a,labelId:b}))})}),(0,d.revalidatePath)("/workspaces")}async function j(a){return(await c.db.taskLabel.findMany({where:{taskId:a},include:{label:!0}})).map(a=>a.label)}(0,a.i(630048).ensureServerEntryExports)([f,g,h,i,j]),(0,b.registerServerReference)(f,"
|
|
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,"40c1ed9a257aa67c03663d2c5615e5a2c60cde232a",null),(0,b.registerServerReference)(g,"40c8e22cbbec38a0b343cc303ab78f15dee059b736",null),(0,b.registerServerReference)(h,"4005b705697e7e71d6a43b505aebdc5ba493f42166",null),(0,b.registerServerReference)(i,"6096fc522bc1bedbd9e869f29be5161b68d8944c3d",null),(0,b.registerServerReference)(j,"400eea048188caab32f4ca1bf26d6fb06d99f5f007",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
2
|
n."projectId", p."workspaceId", p.name as project_name, w.name as workspace_name
|
|
3
3
|
FROM "ProjectNote" n
|
|
4
4
|
JOIN "Project" p ON p.id = n."projectId"
|
|
@@ -18,7 +18,7 @@ module.exports=[495370,a=>{"use strict";var b=a.i(815429),c=a.i(761469),d=a.i(18
|
|
|
18
18
|
JOIN "Project" p ON p.id = n."projectId"
|
|
19
19
|
JOIN "Workspace" w ON w.id = p."workspaceId"
|
|
20
20
|
WHERE n.title LIKE ? OR n.content LIKE ?
|
|
21
|
-
LIMIT ?`,`%${g}%`,`%${g}%`,h)).map(a=>c(a,j))}}return"asset"===e?(await b.db.projectAsset.findMany({where:{OR:[{filename:{contains:g}},{description:{contains:g}}]},include:{project:{include:{workspace:!0}}},take:h,orderBy:{createdAt:"desc"}})).map(a=>({id:a.id,type:"asset",title:a.filename,subtitle:`${a.project.workspace.name} / ${a.project.name}`,navigateTo:`/workspaces/${a.project.workspaceId}/assets?projectId=${a.projectId}`,snippet:a.description||void 0})):[]}a.s(["search",0,d])},396904,a=>a.a(async(b,c)=>{try{var d=a.i(815429),e=a.i(287068),f=a.i(980999),g=a.i(630048),h=b([f]);async function i(a,b="task"){let c=await (0,f.getConfigValues)(["search.resultLimit","search.allModeCap","search.snippetLength"]);return(0,e.search)(a,b,{resultLimit:c["search.resultLimit"]??20,allModeCap:c["search.allModeCap"]??5,snippetLength:c["search.snippetLength"]??80})}[f]=h.then?(await h)():h,(0,g.ensureServerEntryExports)([i]),(0,d.registerServerReference)(i,"
|
|
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,"60c95388940c8d3b45d2a8be13a34a5dd553b61d67",null),a.s(["globalSearch",0,i]),c()}catch(a){c(a)}},!1),101844,a=>{"use strict";var b=a.i(815429),c=a.i(924868),d=a.i(522734),e=a.i(814747),f=a.i(761469),g=a.i(188139),h=a.i(630048);async function i(b){if(!b||"string"!=typeof b)return{safe:!1,reason:"无效的项目 ID"};let g=await f.db.project.findUnique({where:{id:b}});if(!g||!g.localPath)return{safe:!1,reason:"项目不存在或未设置本地路径"};if((await f.db.taskExecution.findMany({where:{task:{projectId:b},status:"RUNNING"},select:{id:!0}})).length>0)return{safe:!1,reason:"该项目有正在运行的任务执行,请先停止所有执行"};let h=await f.db.task.findMany({where:{projectId:b},select:{id:!0}}),{getSession:i}=await a.A(98813);for(let a of h)if(void 0!==i(a.id))return{safe:!1,reason:"该项目有活跃的终端会话,请先关闭"};let j=e.default.join(g.localPath,".worktrees");if((0,d.existsSync)(j))try{if((await (0,c.readdir)(j)).length>0)return{safe:!1,reason:"该项目有活跃的 Git Worktree,请先清理"}}catch{}return{safe:!0}}async function j(b,h){if(!b||"string"!=typeof b)return{success:!1,error:"无效的项目 ID"};if(!h||"string"!=typeof h||!e.default.isAbsolute(h))return{success:!1,error:"目标路径必须是非空的绝对路径"};let i=await f.db.project.findUnique({where:{id:b}});if(!i||!i.localPath)return{success:!1,error:"项目不存在或未设置本地路径"};let j=i.localPath;if(h===j)return{success:!1,error:"源路径和目标路径相同"};if((await f.db.taskExecution.findMany({where:{task:{projectId:b},status:"RUNNING"},select:{id:!0}})).length>0)return{success:!1,error:"该项目有正在运行的任务执行,请先停止所有执行"};let k=await f.db.task.findMany({where:{projectId:b},select:{id:!0}}),{getSession:l}=await a.A(98813);for(let a of k)if(void 0!==l(a.id))return{success:!1,error:"该项目有活跃的终端会话,请先关闭"};let m=e.default.join(j,".worktrees");if((0,d.existsSync)(m))try{if((await (0,c.readdir)(m)).length>0)return{success:!1,error:"该项目有活跃的 Git Worktree,请先清理"}}catch{}if((0,d.existsSync)(h))try{if((await (0,c.readdir)(h)).length>0)return{success:!1,error:"目标路径已存在且不为空"}}catch{return{success:!1,error:"目标路径已存在且不为空"}}let n=e.default.dirname(h);try{await (0,c.mkdir)(n,{recursive:!0})}catch(a){if("EACCES"===a.code||"EPERM"===a.code)return{success:!1,error:`无权限创建父目录 ${n} — 请检查 Git 路径映射规则的模板是否漏了 "~/" 前缀`};if("EROFS"===a.code)return{success:!1,error:`父目录所在文件系统只读:${n}`};return{success:!1,error:`创建父目录失败:${a.message||a.code||"未知错误"}`}}try{await (0,c.rename)(j,h)}catch(a){if("EXDEV"===a.code)return{success:!1,error:"源路径和目标路径不在同一文件系统,不支持跨设备迁移"};if("EACCES"===a.code||"EPERM"===a.code)return{success:!1,error:`无权限移动到 ${h}`};return{success:!1,error:a.message||"文件系统操作失败"}}return await f.db.project.update({where:{id:b},data:{localPath:h}}),(0,g.revalidatePath)("/workspaces"),{success:!0}}let k=`分析这个项目目录,生成一段简短的 Markdown 项目描述。
|
|
22
22
|
|
|
23
23
|
读取 package.json、README.md 等关键文件,然后概括:
|
|
24
24
|
|
|
@@ -42,6 +42,6 @@ Requirements:
|
|
|
42
42
|
- Keep it under 1000 words
|
|
43
43
|
- Use concise Markdown (bold labels + short sentences), no ## headings or tables
|
|
44
44
|
- Don't list every file/directory, only key information
|
|
45
|
-
- Output in English`;async function m(b,c="zh"){if(!b||"string"!=typeof b)throw Error("无效的本地路径");if(b.startsWith("~"))throw Error("不支持 ~ 别名,请提供绝对路径");if(!e.default.isAbsolute(b))throw Error("本地路径必须为绝对路径");let{aiQuery:d}=await a.A(752453),f=await d("en"===c?l:k,b,{maxTurns:10,tools:["Read","Glob"],allowedTools:["Read","Glob"]});if(!f)throw Error("AI 分析未返回结果");return f.length>2e3?f.slice(0,2e3).trimEnd()+"\n\n...":f}(0,h.ensureServerEntryExports)([i,j,m]),(0,b.registerServerReference)(i,"40bfb929e78b8995885651b72d3b4db9a6b698574f",null),(0,b.registerServerReference)(j,"60f23288a3871909d904ecbaab16d7246813ebcef5",null),(0,b.registerServerReference)(m,"60c04f31783506683945f873bb2f23b60b545118bb",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 e=d.join(this.getConfigDir(),"skills",a);try{if(!b.existsSync(c))return{ok:!1,method:"symlink",detail:e,error:`Source skill dir does not exist: ${c}`};b.mkdirSync(d.dirname(e),{recursive:!0});let a=await b.promises.lstat(e).catch(()=>null);if(a)if(!(a.isSymbolicLink()||"win32"===process.platform&&a.isDirectory()))return{ok:!1,method:"symlink",detail:e,error:`Refusing to overwrite non-symlink at ${e}`};else try{let a=await b.promises.readlink(e);if(d.resolve(a)===d.resolve(c))return{ok:!0,method:"symlink",detail:`${e} → ${c} (already)`};await b.promises.unlink(e)}catch{if(!a.isSymbolicLink())return{ok:!1,method:"symlink",detail:e,error:`Refusing to overwrite non-symlink at ${e}`}}return await b.promises.symlink(c,e,"dir"),{ok:!0,method:"symlink",detail:`${e} → ${c}`}}catch(a){return{ok:!1,method:"symlink",detail:e,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(){return process.env.CLAUDE_CODE_PATH?process.env.CLAUDE_CODE_PATH:(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,"406e2e4cc47185291de78e1588274f4b8e46cedb04",null),(0,b.registerServerReference)(f,"4024f8ea73b93494b383770fb2e208c86fe04994de",null),(0,b.registerServerReference)(g,"40abff11f62507e94641e5bfbb49c01adcd12a45d3",null),(0,b.registerServerReference)(h,"6060045bbf8c915448fb3f6cc34bdc320dfa044635",null),(0,b.registerServerReference)(i,"400df3667df21c9a48c89a463f1f80bf3122351c50",null),(0,b.registerServerReference)(j,"6015d584d79c9a518547354b76efe7027fd0222457",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_0153vha._.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/_0rqf5w7._.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)))}];
|
|
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,"40e8dd01fe9d2dc40496bc845f1f6a95be3454af33",null),(0,b.registerServerReference)(j,"6010d2ca5b605450312f869eafcd0b1b4643681ec6",null),(0,b.registerServerReference)(m,"605e973505a7785564f529b0df2839ad4047c95460",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 e=d.join(this.getConfigDir(),"skills",a);try{if(!b.existsSync(c))return{ok:!1,method:"symlink",detail:e,error:`Source skill dir does not exist: ${c}`};b.mkdirSync(d.dirname(e),{recursive:!0});let a=await b.promises.lstat(e).catch(()=>null);if(a)if(!(a.isSymbolicLink()||"win32"===process.platform&&a.isDirectory()))return{ok:!1,method:"symlink",detail:e,error:`Refusing to overwrite non-symlink at ${e}`};else try{let a=await b.promises.readlink(e);if(d.resolve(a)===d.resolve(c))return{ok:!0,method:"symlink",detail:`${e} → ${c} (already)`};await b.promises.unlink(e)}catch{if(!a.isSymbolicLink())return{ok:!1,method:"symlink",detail:e,error:`Refusing to overwrite non-symlink at ${e}`}}return await b.promises.symlink(c,e,"dir"),{ok:!0,method:"symlink",detail:`${e} → ${c}`}}catch(a){return{ok:!1,method:"symlink",detail:e,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(){return process.env.CLAUDE_CODE_PATH?process.env.CLAUDE_CODE_PATH:(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,"40b7501e08e21609968acead49b3d4b4c1b9bd1b09",null),(0,b.registerServerReference)(f,"40d73e8cb0640e94393e735f4fb90b2feb56a0b80d",null),(0,b.registerServerReference)(g,"409b3ffe750152a76a67ada9291a03ba4a69c9d1d3",null),(0,b.registerServerReference)(h,"6060a95370405c2d3433a75d5fbd42035d76e6e277",null),(0,b.registerServerReference)(i,"4023fdffccdaae05333a85f7e8e439cead864b1b96",null),(0,b.registerServerReference)(j,"60e4d6d82ba2ccd6c54f5ac357adfb3429f8c57d5b",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_0.aklj3._.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/_05xdaz3._.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
46
|
|
|
47
|
-
//# sourceMappingURL=%5Broot-of-the-server%
|
|
47
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__03e009u._.js.map
|